Wiktionary
siwiktionary
https://si.wiktionary.org/wiki/%E0%B7%80%E0%B7%92%E0%B6%9A%E0%B7%8A%E0%B7%82%E0%B6%B1%E0%B6%BB%E0%B7%92:%E0%B6%B8%E0%B7%94%E0%B6%BD%E0%B7%8A_%E0%B6%B4%E0%B7%92%E0%B6%A7%E0%B7%94%E0%B7%80
MediaWiki 1.47.0-wmf.3
case-sensitive
මාධ්යය
විශේෂ
සාකච්ඡාව
පරිශීලක
පරිශීලක සාකච්ඡාව
වික්ෂනරි
වික්ෂනරි සාකච්ඡාව
ගොනුව
ගොනුව සාකච්ඡාව
මාධ්යවිකි
මාධ්යවිකි සාකච්ඡාව
සැකිල්ල
සැකිලි සාකච්ඡාව
උදවු
උදවු සාකච්ඡාව
ප්රවර්ගය
ප්රවර්ග සාකච්ඡාව
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Module:sinhala
828
5451
234896
234706
2026-05-25T13:23:00Z
Lee
19
"epicene adjectives" සිට "උභයලිංගික නාම විශේෂණ පද" වෙතට
234896
Scribunto
text/plain
local en_utilities_module = "Module:en-utilities"
local p = {} -- p stands for package
local m_strutils = require("Module:en-utilities")
-- ගැටළු සහගත වචන දැනට පරීක්ෂාවට ලක් කෙරෙයි
local words_with_issues = {
"female",
"male",
}
local english2sinhala = {}
-- සම්බන්ධ කිරීම්
english2sinhala["and"] = "සහ"
english2sinhala["in"] = "තුළ"
-- තරමක් දිග යෙදුම්
english2sinhala["Former name of"] = " සඳහා පෙර දී භාවිතා වූ නාමය"
english2sinhala["former name of"] = " සඳහා පෙර දී භාවිතා වූ නාමය"
english2sinhala["Alternative spelling of"] = " යන යෙදුමේ වෛකල්පික අක්ෂර වින්යාසයක්"
english2sinhala["an alternative spelling "] = "වෛකල්පික අක්ෂර වින්යාසයක් "
english2sinhala["Chinese simplified forms"] = "චීන සරලීකෘත ස්වරූප"
english2sinhala["Initialism of"] = " යන යෙදුමේ මුලකුරු ලෙස සටහන් කළ ස්වරූපය"
english2sinhala["terms inherited"] = "උරුම වූ"
english2sinhala["Synonym of"] = " යන්නට සමාන අරුත් ඇති පදයක්"
-- ස්ථාන නාම සඳහා
english2sinhala["small village"] = "කුඩා ගම්මානය"
-- විශේෂ
english2sinhala["the simplified"] = "සරලීකෘත"
english2sinhala["related-to"] = "ආශ්රිත"
english2sinhala["Name"] = "නාම"
english2sinhala["name"] = "නාම"
english2sinhala["set"] = "කුලක"
english2sinhala["type"] = "වර්ග"
english2sinhala["grouping"] = "කාණ්ඩ"
-- සැකිලි ප්රවර්ග සඳහා අවශ්ය දත්ත
english2sinhala["Auto-table"] = "ස්වයංක්රීය-වගු"
english2sinhala["data"] = "දත්ත"
english2sinhala["Data"] = "දත්ත"
english2sinhala["Administration"] = "පරිපාලන"
english2sinhala["Archive"] = "ලේඛනාරක්ෂණ"
english2sinhala["Audio"] = "ශ්රව්ය සහාය"
english2sinhala["Number"] = "සංඛ්යා"
english2sinhala["Morphology"] = "පදිම විචාර"
english2sinhala["String manipulation"] = "පෙළ හැසිරවීම්"
--
english2sinhala["derivational"] = "ව්යුත්පන්නක"
english2sinhala["nominal"] = "නොමිනල්"
--
english2sinhala["data modules"] = "දත්ත මොඩියුල"
english2sinhala["Sortkey-generating"] = "සෝට්කී-ජනක"
english2sinhala["Page generation"] = "පිටු ජනක"
--
english2sinhala["Template"] = "සැකිල්ල"
--
english2sinhala["Pronunciation"] = "උච්චාරණ"
english2sinhala["Verification"] = "සත්යාපන"
--
english2sinhala["Etymology templates"] = "නිරුක්ති සැකිලි"
english2sinhala["Translation templates"] = "පරිවර්තන සැකිලි"
english2sinhala["Appendix templates"] = "උපග්රන්ථ සැකිලි"
english2sinhala["reference templates"] = "මූලාශ්ර සැකිලි"
--
english2sinhala["poetic terms"] = "කාව්යමය යෙදුම්"
--
english2sinhala["hanja"] = "හන්ජා"
english2sinhala["hanzi"] = "හන්සු"
--
english2sinhala["Character"] = "අනුලක්ෂණ"
english2sinhala["symbols"] = "සංකේත"
english2sinhala["clipping"] = "ක්ලිප් කිරීම"
english2sinhala["roots"] = "මූල"
english2sinhala["morphemes"] = "පදාණු"
english2sinhala["morpheme"] = "පදාණුව"
english2sinhala["punctuation marks"] = "විරාම ලක්ෂණ"
--
english2sinhala["imperative"] = "විධි ක්රියා"
english2sinhala["nominative"] = "පෙර විබත්"
english2sinhala["ablative"] = "අවදි විබත්"
english2sinhala["vocative"] = "අලප් විබත්"
--
english2sinhala["transitive"] = "සකර්මක"
english2sinhala["intransitive"] = "අකර්මක"
--
english2sinhala["uncomparable"] = "සැසඳිය නොහැකි"
english2sinhala["comparable"] = "සැසඳිය හැකි"
--
english2sinhala["uncomparable adjectives"] = "සැසඳිය නොහැකි නාම විශේෂණ පද"
english2sinhala["comparable adjectives"] = "සැසඳිය හැකි නාම විශේෂණ පද"
english2sinhala["epicene adjectives"] = "උභයලිංගික නාම විශේෂණ පද"
english2sinhala["transitive verbs"] = "සකර්මක ක්රියා පද"
--
english2sinhala["first-person"] = "උත්තම පුරුෂ"
english2sinhala["first person"] = "උත්තම පුරුෂ"
english2sinhala["third-person"] = "අන්ය පුරුෂ"
english2sinhala["third person"] = "අන්ය පුරුෂ"
--
english2sinhala["gender"] = "ලිංග භේදය"
english2sinhala["feminine"] = "ස්ත්රී ලිංග"
english2sinhala["masculine"] = "පුරුෂ ලිංග"
english2sinhala["female"] = "ස්ත්රී ලිංග"
english2sinhala["male"] = "පුරුෂ ලිංග"
english2sinhala["unknown-gender"] = "ලිංග භේදය නොදන්නා"
english2sinhala["given names"] = "පුද්ගල නාම"
english2sinhala["given name"] = "පුද්ගල නාමය"
english2sinhala["female given names"] = "ස්ත්රී ලිංග පුද්ගල නාම"
english2sinhala["male given names"] = "පුරුෂ ලිංග පුද්ගල නාම"
english2sinhala["male given name"] = "පුරුෂ ලිංග පුද්ගල නාමය"
english2sinhala["diminutives of "] = " සඳහා වන අල්පාර්ථ පද"
english2sinhala["diminutives of male given names"] = "පුරුෂ ලිංග පුද්ගල නාම සඳහා වන අල්පාර්ථ පද"
--
english2sinhala["pronoun forms"] = "සර්වනාම ස්වරූප"
english2sinhala["proper noun forms"] = "සංඥා නාම පද ස්වරූප"
english2sinhala["adjective forms"] = "නාම විශේෂණ පද ස්වරූප"
english2sinhala["noun forms"] = "නාම පද ස්වරූප"
english2sinhala["verb forms"] = "ක්රියා පද ස්වරූප"
english2sinhala["suffix form"] = "ප්රත්ය ස්වරූපය"
english2sinhala["suffix forms"] = "ප්රත්ය ස්වරූප"
english2sinhala["quotation"] = "උපුටා දැක්වීම"
english2sinhala["quotations"] = "උපුටා දැක්වීම්"
english2sinhala["usage example"] = "භාවිත නිදර්ශනය"
english2sinhala["usage examples"] = "භාවිත නිදර්ශන"
english2sinhala["Wikipedia"] = "විකිපීඩියාව"
english2sinhala["wikipedia"] = "විකිපීඩියාව"
english2sinhala["singular"] = "ඒක වචන"
english2sinhala["singula"] = "ඒක වචන"
english2sinhala["plural"] = "බහුවචන"
english2sinhala["plurals"] = "බහුවචන"
english2sinhala["noun"] = "නාම පදය"
english2sinhala["nouns"] = "නාම පද"
english2sinhala["particle"] = "නිපාත පදය"
english2sinhala["particles"] = "නිපාත පද"
english2sinhala["verb"] = "ක්රියා පදය"
english2sinhala["verbs"] = "ක්රියා පද"
english2sinhala["adjective"] = "නාම විශේෂණ පදය"
english2sinhala["adjectives"] = "නාම විශේෂණ පද"
english2sinhala["adverb"] = "ක්රියා විශේෂණ පදය"
english2sinhala["adverbs"] = "ක්රියා විශේෂණ පද"
english2sinhala["prefix"] = "උපසර්ගය"
english2sinhala["prefixes"] = "උපසර්ග"
english2sinhala["suffix"] = "ප්රත්යය"
english2sinhala["suffixes"] = "ප්රත්ය"
english2sinhala["letter"] = "අකුර"
english2sinhala["letters"] = "අකුරු"
english2sinhala["numeral"] = "සංඛ්යාංකය"
english2sinhala["numerals"] = "සංඛ්යාංක"
english2sinhala["numeral symbol"] = "සංඛ්යාංක සංකේතය"
english2sinhala["numeral symbols"] = "සංඛ්යාංක සංකේත"
english2sinhala["numbers"] = "සංඛ්යාව"
english2sinhala["numbers"] = "සංඛ්යා"
english2sinhala["lemma"] = "පාඨය"
english2sinhala["lemmas"] = "පාඨ"
english2sinhala["pronoun"] = "සර්වනාමය"
english2sinhala["pronouns"] = "සර්වනාම"
english2sinhala["phrase"] = "වාක්ය ඛණ්ඩය"
english2sinhala["phrases"] = "වාක්ය ඛණ්ඩ"
english2sinhala["phrasebook"] = "වාක්ය ඛණ්ඩ පොත"
english2sinhala["Geography"] = "භූගෝලවේදය"
english2sinhala["geography"] = "භූගෝලවේදය"
english2sinhala["Oceanography"] = "සාගරවේදය"
english2sinhala["oceanography"] = "සාගරවේදය"
english2sinhala["continent"] = "මහාද්වීපය"
english2sinhala["Continent"] = "මහාද්වීපය"
english2sinhala["continents"] = "මහාද්වීප"
english2sinhala["Continents"] = "මහාද්වීප"
english2sinhala["island"] = "දූපත"
english2sinhala["country"] = "රට"
english2sinhala["countries"] = "රටවල්"
english2sinhala["language"] = "භාෂාව"
english2sinhala["Language"] = "භාෂාව"
english2sinhala["languages"] = "භාෂා"
english2sinhala["Languages"] = "භාෂා"
english2sinhala["surname"] = "පෙළපත් නාමය"
english2sinhala["surnames"] = "පෙළපත් නාම"
english2sinhala["proper noun"] = "සංඥා නාම පදය"
english2sinhala["proper nouns"] = "සංඥා නාම පද"
english2sinhala["abbreviation"] = "කෙටි යෙදුම"
english2sinhala["abbreviations"] = "කෙටි යෙදුම්"
english2sinhala["interjections"] = "විශ්මයාර්ථ පද"
english2sinhala["misspellings"] = "අක්ෂර වින්යාස දෝෂ"
--
-- පහත කොටසේ "terms" සඳහා "පද" යනුවෙන් භාවිතය, ගැටළු සහගත බව පෙනෙයි.
-- එය "යෙදුම්" වලට මාරු කොට බලමු.
-- english2sinhala["term"] = "පදය"
-- english2sinhala["terms"] = "පද"
-- නව ආකාරය
english2sinhala["term"] = "යෙදුම"
english2sinhala["terms"] = "යෙදුම්"
--
english2sinhala["colle"] = "පද"
english2sinhala["collective noun"] = "සමූහවාචී නාම පදය"
english2sinhala["collective nouns"] = "සමූහවාචී නාම පද"
english2sinhala["countable noun"] = "ගැණිය හැකි නාම පදය"
english2sinhala["countable nouns"] = "ගැණිය හැකි නාම පද"
english2sinhala["countable proper noun"] = "ගැණිය හැකි සංඥා නාම පදය"
english2sinhala["countable proper nouns"] = "ගැණිය හැකි සංඥා නාම පද"
english2sinhala["uncountable noun"] = "නොගැණිය හැකි නාම පදය"
english2sinhala["uncountable nouns"] = "නොගැණිය හැකි නාම පද"
english2sinhala["indeclinable nouns"] = "අව්යය නාම පද"
english2sinhala["inflection"] = "වරනැගීම"
english2sinhala["Inflection"] = "වරනැගීම"
english2sinhala["inflections"] = "වරනැගීම්"
english2sinhala["Inflections"] = "වරනැගීම්"
english2sinhala["transliteration"] = "අක්ෂර පරිවර්තනය"
english2sinhala["Transliteration"] = "අක්ෂර පරිවර්තනය"
english2sinhala["transliterations"] = "අක්ෂර පරිවර්තන"
english2sinhala["Transliterations"] = "අක්ෂර පරිවර්තන"
english2sinhala["romanization"] = "රෝමානුකරණය"
english2sinhala["romanizations"] = "රෝමානුකරණ"
-- english2sinhala["entry name-generating"] = "ප්රවේශ නාම-ජනනය"
-- english2sinhala["Entry name-generating"] = "ප්රවේශ නාම-ජනනය"
-- english2sinhala["entry name-generatings"] = "ප්රවේශ නාම-ජනක"
-- english2sinhala["Entry name-generatings"] = "ප්රවේශ නාම-ජනක"
english2sinhala["Religion"] = "ආගම"
english2sinhala["Buddhism"] = "බුදු දහම සහ බුද්ධාගම"
english2sinhala["Places"] = "ස්ථාන"
english2sinhala["places"] = "ස්ථාන"
-- අක්ෂරක්රම
english2sinhala["Cyrillic"] = "සිරිලික්"
english2sinhala["Devanagari"] = "දේවනාගරි"
english2sinhala["Brahmi"] = "බ්රාහ්මී"
english2sinhala["Braille"] = "බ්රේල්"
english2sinhala["Han"] = "හන්"
english2sinhala["Hiragana"] = "හිරගනා"
english2sinhala["Katakana"] = "කතකනා"
english2sinhala["Flag semaphore"] = "ධජ සංඥා"
--
-- [ Module:ja-see ] සඳහා
english2sinhala["the hiragana spelling"] = "හිරගනා අක්ෂර වින්යාසය"
-- භාෂා පවුල්
english2sinhala["Anglic"] = "ඇන්ග්ලික්"
english2sinhala["Germanic"] = "ජර්මානු"
english2sinhala["Koreanic"] = "කොරියානු"
english2sinhala["Indo-Aryan"] = "ඉන්දු-ආර්ය"
english2sinhala["Indo-Iranian"] = "ඉන්දු-ඉරාන"
english2sinhala["Middle Indo-Aryan"] = "මධ්යකාලීන ඉන්දු-ආර්ය"
english2sinhala["Indo-European"] = "ඉන්දු-යුරෝපීය"
english2sinhala["Anglo-Frisian"] = "ඇන්ග්ලෝ-ෆ්රිසියන්"
-- භාෂා
english2sinhala["Algerian Arabic"] = "ඇල්ජීරියානු අරාබි"
english2sinhala["Amharic"] = "ඇම්හාරික්"
english2sinhala["Ancient Greek"] = "පුරාතන ග්රීක"
english2sinhala["Anglo-Norman"] = "ඇන්ග්ලෝ-නෝමන්"
english2sinhala["Arabic"] = "අරාබි"
english2sinhala["Armenian"] = "ආමේනියානු"
english2sinhala["Aymara"] = "අයිමාරා"
english2sinhala["Azerbaijani"] = "අසර්බයිජානි"
english2sinhala["Okinawan"] = "ඔකිනවා"
english2sinhala["Basque"] = "බාස්ක්"
english2sinhala["Bengali"] = "බෙංගාලි"
english2sinhala["Bihari"] = "බිහාරී"
english2sinhala["Breton"] = "බ්රෙටන්"
english2sinhala["Bulgarian"] = "බල්ගේරියානු"
english2sinhala["Burmese"] = "බුරුම"
english2sinhala["Cantonese"] = "කැන්ටනීස්"
english2sinhala["Chinese"] = "චීන"
english2sinhala["Min Nan"] = "මින් නන්"
english2sinhala["Coptic"] = "කොප්ටික්"
english2sinhala["Cornish"] = "කෝනිෂ්"
english2sinhala["Czech"] = "චෙක්"
english2sinhala["Danish"] = "ඩෙන්මාර්ක"
english2sinhala["Dhivehi"] = "දිවෙහි"
english2sinhala["Dutch"] = "ඕලන්ද"
english2sinhala["Egyptian"] = "ඊජිප්තු"
english2sinhala["English"] = "ඉංග්රීසි"
english2sinhala["Old English"] = "පුරාතන ඉංග්රීසි"
english2sinhala["Middle English"] = "මධ්යකාලීන ඉංග්රීසි"
english2sinhala["Esperanto"] = "එස්පෙරාන්තො"
english2sinhala["Estonian"] = "එස්තෝනියානු"
english2sinhala["Finnish"] = "ෆින්ලන්ත"
english2sinhala["French"] = "ප්රංශ"
english2sinhala["Old French"] = "පුරාතන ප්රංශ"
english2sinhala["Middle French"] = "මධ්යකාලීන ප්රංශ"
english2sinhala["Georgian"] = "ජෝර්ජියානු"
english2sinhala["German"] = "ජර්මානු"
english2sinhala["Greek"] = "ග්රීක"
english2sinhala["Gujarati"] = "ගුජරාටි"
english2sinhala["Hebrew"] = "හීබෲ"
english2sinhala["Hindi"] = "හින්දි"
english2sinhala["Hungarian"] = "හංගේරියානු"
english2sinhala["Icelandic"] = "අයිස්ලන්ත"
english2sinhala["Indonesian"] = "ඉන්දුනීසියානු"
english2sinhala["Irish"] = "අයිරිෂ්"
english2sinhala["Italian"] = "ඉතාලි"
english2sinhala["Japanese"] = "ජපන්"
english2sinhala["Javanese"] = "ජාවා"
english2sinhala["Kannada"] = "කන්නඩ"
english2sinhala["Kashmiri"] = "කාෂ්මීරි"
english2sinhala["Kongo"] = "කොංගෝ"
english2sinhala["Korean"] = "කොරියානු"
english2sinhala["Lao"] = "ලාඕ"
english2sinhala["Old Latin"] = "පුරාතන ලතින්"
english2sinhala["Latin"] = "ලතින්"
english2sinhala["Malay"] = "මැලේ"
english2sinhala["Malayalam"] = "මලයාලම්"
english2sinhala["Mandarin"] = "මැන්ඩරීන්"
english2sinhala["Manx"] = "මැන්ක්ස්"
english2sinhala["Marathi"] = "මරාථි"
english2sinhala["Mongolian"] = "මොංගෝලියානු"
english2sinhala["Norwegian"] = "නෝර්වීජියානු"
english2sinhala["the Netherlands"] = "නෙදර්ලන්තය"
english2sinhala["Pali"] = "පාලි"
english2sinhala["Persian"] = "පර්සියානු"
english2sinhala["Middle Persian"] = "මධ්යකාලීන පර්සියානු"
english2sinhala["Polish"] = "පෝලන්ත"
english2sinhala["Portuguese"] = "පෘතුගීසි"
english2sinhala["Prakrit"] = "ප්රාකෘත"
english2sinhala["Helu Prakrit"] = "එළු ප්රාකෘත"
english2sinhala["Ashokan Prakrit"] = "අශෝක ප්රාකෘත"
english2sinhala["Epigraphic Prakrit"] = "අභිලේඛන ප්රාකෘත"
english2sinhala["Proto-Indo-Iranian"] = "ප්රොටෝ-ඉන්දු-ඉරාන"
english2sinhala["Proto-Italic"] = "ප්රොටෝ-ඉතාලිකා"
english2sinhala["Proto-Indo-European"] = "ප්රොටෝ-ඉන්දු-යුරෝපීය"
english2sinhala["Proto-Basque"] = "ප්රොටෝ-බාස්ක්"
english2sinhala["Proto-West Germanic"] = "ප්රොටෝ-බටහිර ජර්මානු"
english2sinhala["Proto-Germanic"] = "ප්රොටෝ-ජර්මානු"
english2sinhala["Quechua"] = "ක්වෙච්වා"
english2sinhala["Romanian"] = "රුමේනියානු"
english2sinhala["Russian"] = "රුසියානු"
english2sinhala["Belarusian"] = "බෙලරුසියානු"
english2sinhala["Macedonian"] = "මැසඩෝනියානු"
english2sinhala["Serbo-Croatian"] = "සර්බෝ-ක්රොඒෂියානු"
english2sinhala["Sanskrit"] = "සංස්කෘත"
english2sinhala["Scottish Gaelic"] = "ස්කොට්ස් ගේලික්"
english2sinhala["Sindhi"] = "සින්ධි"
english2sinhala["Sinhala"] = "සිංහල"
english2sinhala["Sinhalese"] = "සිංහල"
english2sinhala["Somali"] = "සෝමාලි"
english2sinhala["Spanish"] = "ස්පාඤ්ඤ"
english2sinhala["Old Spanish"] = "පුරාතන ස්පාඤ්ඤ"
english2sinhala["Sundanese"] = "සුන්ඩා"
english2sinhala["Swedish"] = "ස්වීඩන්"
english2sinhala["Old Tamil"] = "පුරාතන දෙමළ"
english2sinhala["Tamil"] = "දෙමළ"
english2sinhala["Telugu"] = "තෙලිඟු"
english2sinhala["Thai"] = "තායි"
english2sinhala["Tibetan"] = "තිබ්බත"
english2sinhala["Translingual"] = "සර්ව භාෂාමය"
english2sinhala["Turkish"] = "තුර්කි"
english2sinhala["Ukrainian"] = "යුක්රේනියානු"
english2sinhala["Urdu"] = "උර්දු"
english2sinhala["Uzbek"] = "උස්බෙක්"
english2sinhala["Vietnamese"] = "වියට්නාම"
english2sinhala["Welsh"] = "වේල්ස"
english2sinhala["Yiddish"] = "යිඩිශ්"
english2sinhala["Zulu"] = "සූලූ"
-- රටවල්
english2sinhala["Hungary"] = "හංගේරියාව"
english2sinhala["Slovakia"] = "ස්ලෝවැකියාව"
english2sinhala["Croatia"] = "ක්රොඒෂියාව"
english2sinhala["Serbia"] = "සර්බියාව"
english2sinhala["Afghanistan"] = "ඇෆ්ගනිස්ථානය"
english2sinhala["Africa"] = "අප්රිකාව"
english2sinhala["Algeria"] = "ඇල්ජීරියාව"
english2sinhala["America"] = "ඇමෙරිකාව"
english2sinhala["Armenia"] = "ආමේනියාව"
english2sinhala["Asia"] = "ආසියාව"
english2sinhala["South Asia"] = "දකුණු ආසියාව"
english2sinhala["Australia"] = "ඕස්ට්රේලියාව"
english2sinhala["Azerbaijan"] = "අසර්බයිජානය"
english2sinhala["Bahrain"] = "බහරේනය"
english2sinhala["Bangladesh"] = "බංගලිදේශය"
english2sinhala["Belgium"] = "බෙල්ජියම"
english2sinhala["Bhutan"] = "භූතානය"
english2sinhala["Brazil"] = "බ්රසීලය"
english2sinhala["Brunei"] = "බෲනායි"
english2sinhala["Bulgaria"] = "බල්ගේරියාව"
english2sinhala["Cambodia"] = "කාම්බෝජය"
english2sinhala["Canada"] = "කැනඩාව"
english2sinhala["Central America"] = "මධ්යම ඇමෙරිකාව"
english2sinhala["Chile"] = "චිලී"
english2sinhala["China"] = "චීනය"
english2sinhala["Croatia"] = "ක්රොඒෂියාව"
english2sinhala["Cyprus"] = "සයිප්රසය"
english2sinhala["Denmark"] = "ඩෙන්මාර්කය"
english2sinhala["Earth"] = "පෘථිවිය"
english2sinhala["East Timor (Timor-Leste)"] = "නැගෙනහිර ටිමෝරය"
english2sinhala["Egypt"] = "ඊජිප්තුව"
english2sinhala["Europe"] = "යුරෝපය"
english2sinhala["Finland"] = "ෆින්ලන්තය"
english2sinhala["France"] = "ප්රංශය"
english2sinhala["Gabon"] = "ගැබොන්"
english2sinhala["Georgia"] = "ජෝජියාව"
english2sinhala["Germany"] = "ජර්මනිය"
english2sinhala["Ghana"] = "ඝානාව"
english2sinhala["Gibraltar"] = "ජිබ්රෝල්ටාව"
english2sinhala["Greece"] = "ග්රීසිය"
english2sinhala["Iceland"] = "අයිස්ලන්තය"
english2sinhala["India"] = "ඉන්දියාව"
english2sinhala["Indonesia"] = "ඉන්දුනීසියාව"
english2sinhala["Iran"] = "ඉරානය"
english2sinhala["Iraq"] = "ඉරාකය"
english2sinhala["Israel"] = "ඊශ්රායලය"
english2sinhala["Italy"] = "ඉතාලිය"
english2sinhala["Japan"] = "ජපානය"
english2sinhala["Jordan"] = "ජෝදානය"
english2sinhala["Kazakhstan"] = "කසක්ස්තානය"
english2sinhala["Kuwait"] = "කුවේටය"
english2sinhala["Kyrgyzstan"] = "කිර්ගිස්තානය"
english2sinhala["Laos"] = "ලාඕසය"
english2sinhala["Lebanon"] = "ලෙබනනය"
english2sinhala["Malaysia"] = "මලයාසියාව"
english2sinhala["Maldives"] = "මාලදිවයින"
english2sinhala["Mongolia"] = "මොන්ගෝලියාව"
english2sinhala["Myanmar"] = "මියන්මාරය"
english2sinhala["Nepal"] = "නේපාලය"
english2sinhala["North America"] = "උතුරු ඇමෙරිකාව"
english2sinhala["North Korea"] = "උතුරු කොරියාව"
english2sinhala["Oceania"] = "ඕෂනියාව"
english2sinhala["Oman"] = "ඕමානය"
english2sinhala["Pakistan"] = "පාකිස්ථානය"
english2sinhala["Philippines"] = "පිලිපීනය"
english2sinhala["Poland"] = "පෝලන්තය"
english2sinhala["Portugal"] = "පෘතුගාලය"
english2sinhala["Qatar"] = "කටාරය"
english2sinhala["Romania"] = "රුමේනියාව"
english2sinhala["Russia"] = "රුසියාව"
english2sinhala["Saudi Arabia"] = "සෞදි අරාබිය"
english2sinhala["Singapore"] = "සිංගප්පූරුව"
english2sinhala["Spain"] = "ස්පාඤ්ඤය"
english2sinhala["South America"] = "දකුණු ඇමෙරිකාව"
english2sinhala["South Korea"] = "දකුණු කොරියාව"
english2sinhala["Sri Lanka"] = "ශ්රී ලංකාව"
english2sinhala["Sweden"] = "ස්වීඩනය"
english2sinhala["Syria"] = "සිරියාව"
english2sinhala["Tajikistan"] = "ටජිකිස්ථානය"
english2sinhala["Thailand"] = "තායිලන්තය"
english2sinhala["Turkey"] = "තුර්කිය"
english2sinhala["Turkmenistan"] = "තුර්ක්මෙනිස්තානය"
english2sinhala["Ukraine"] = "යුක්රේනය"
english2sinhala["United Arab Emirates"] = "එක්සත් අරාබි එමීර් රාජ්යය"
english2sinhala["Uzbekistan"] = "උස්බෙකිස්තානය"
english2sinhala["Vietnam"] = "වියට්නාමය"
english2sinhala["Yemen"] = "යේමනය"
english2sinhala["Zambia"] = "සැම්බියාව"
english2sinhala["Zimbabwe"] = "සිම්බාබ්වේ"
english2sinhala["the Gambia"] = "ගැම්බියාව"
english2sinhala["the United States"] = "යුනයිටඩ් ස්ටේට්ස්"
english2sinhala["the world"] = "ලෝකය"
local singular2plural = {}
-- විශේෂ
singular2plural["දත්ත"] = "දත්ත"
--
singular2plural["හන්ජා"] = "හන්ජා"
singular2plural["සැකිල්ල"] = "සැකිලි"
singular2plural["මූලය"] = "මූල"
--
singular2plural["non-lemma form"] = "ලෙමා-නොවන ස්වරූප"
singular2plural["non-lemma"] = "ලෙමා-නොවන"
--
singular2plural["ක්ලිප් කිරීම"] = "ක්ලිප් කිරීම්"
singular2plural["පදාණුව"] = "පදාණු"
singular2plural["උපුටා දැක්වීම"] = "උපුටා දැක්වීම්"
singular2plural["භාවිත නිදර්ශනය"] = "භාවිත නිදර්ශන"
singular2plural["අබුගිඩා"] = "අබුගිඩා"
singular2plural["ජර්මානු පුරුෂ ලිංග, නාම පදය"] = "ජර්මානු පුරුෂ ලිංග, නාම පද"
singular2plural["ස්පාඤ්ඤ පුරුෂ ලිංග, නාම පදය"] = "ස්පාඤ්ඤ පුරුෂ ලිංග, නාම පද"
singular2plural["පුරුෂ ලිංග නාම පදය"] = "පුරුෂ ලිංග නාම පද"
singular2plural["පුරුෂ ලිංග, නාම පදය"] = "පුරුෂ ලිංග, නාම පද"
singular2plural["පුරුෂ ලිංග පුද්ගල නාමය"] = "පුරුෂ ලිංග පුද්ගල නාම"
singular2plural["ස්ත්රී ලිංග, නාම පදය"] = "ස්ත්රී ලිංග, නාම පද"
singular2plural["බහුවචනය"] = "බහුවචන"
singular2plural["නාම පදය"] = "නාම පද"
singular2plural["නිපාත පදය"] = "නිපාත පද"
singular2plural["ක්රියා පදය"] = "ක්රියා පද"
singular2plural["නාම විශේෂණ පදය"] = "නාම විශේෂණ පද"
singular2plural["ක්රියා විශේෂණ පදය"] = "ක්රියා විශේෂණ පද"
singular2plural["ප්රත්ය ස්වරූපය"] = "ප්රත්ය ස්වරූප"
singular2plural["ප්රත්යය"] = "ප්රත්ය"
singular2plural["අකුර"] = "අකුරු"
singular2plural["පාඨය"] = "පාඨ"
singular2plural["සර්වනාමය"] = "සර්වනාම"
singular2plural["මහාද්වීපය"] = "මහාද්වීප"
singular2plural["දූපත"] = "දූපත්"
singular2plural["රට"] = "රටවල්"
singular2plural["භාෂාව"] = "භාෂා"
singular2plural["පෙළපත් නාමය"] = "පෙළපත් නාම"
singular2plural["සංඥා නාම පදය"] = "සංඥා නාම පද"
singular2plural["කෙටි යෙදුම"] = "කෙටි යෙදුම්"
singular2plural["පදය"] = "පද"
singular2plural["සමූහවාචී නාම පදය"] = "සමූහවාචී නාම පද"
singular2plural["ගැණිය හැකි නාම පදය"] = "ගැණිය හැකි නාම පද"
singular2plural["ගැණිය හැකි සංඥා නාම පදය"] = "ගැණිය හැකි සංඥා නාම පද"
singular2plural["වරනැගීම"] = "වරනැගීම්"
singular2plural["සංඛ්යාංක සංකේතය"] = "සංඛ්යාංක සංකේත"
singular2plural["අක්ෂර පරිවර්තනය"] = "අක්ෂර පරිවර්තන"
-- singular2plural["ප්රවේශ නාම-ජනනය"] = "ප්රවේශ නාම-ජනක"
local english2adjective = {}
english2adjective["archaic"] = "පෞරාණික"
english2adjective["dated"] = "යල් පැන ගිය"
english2adjective["List"] = "ලැයිස්තු"
english2adjective["Entry name-generating"] = "ප්රවේශ නාම-ජනක"
english2adjective["nominal"] = "නොමිනල්"
english2adjective["Maintenance"] = "නඩත්තු කටයුතු"
english2adjective["mixed"] = "මිශ්ර"
english2adjective["Testcase"] = "පිරික්සුම් ආදර්ශක"
english2adjective["Language and script"] = "භාෂා සහ අක්ෂරක්රම"
english2adjective["Transliteration"] = "අක්ෂර පරිවර්තන"
english2adjective["Transliteration testcases"] = "අක්ෂර පරිවර්තන පිරික්සුම් ආදර්ශක"
english2adjective["Utility"] = "උපයෝගිතා"
english2adjective["Headword-line"] = "යොමු වචන පේළි"
english2adjective["Language-specific utility"] = "භාෂාවක් හා සබැඳි උපයෝගිතා"
--
function p.hello( frame )
return "Hello, world!"
end
function p.sinhala_adjective( word )
-- require('Module:debug').track("sinhala.sinhala adjective.word = " .. word)
local sinhala_word = p.sinhala( word )
-- require('Module:debug').track("sinhala.sinhala adjective.direct translation = " .. word)
-- සටහන: නාම විශේෂණය සඳහා කළ යුතු විශේෂ යමක් පවතියි ද?
local adjective = p.adjective( word )
if adjective ~= nil then
-- require('Module:debug').track("sinhala.sinhala adjective.adjective = " .. adjective)
sinhala_word = adjective
end
--
return sinhala_word
end
function p.search_adjective( word )
local sinhala_word = nil
-- require('Module:debug').track("sinhala.search adjective.word = " .. word)
local trans = english2adjective[word]
if trans ~= nil then
-- require('Module:debug').track("sinhala.adjective.trans = " .. trans)
sinhala_word = trans
end
return sinhala_word
end
function p.adjective( word )
-- -- ගැටළු සඳහා පරීක්ෂාව
-- for _,v in pairs(words_with_issues) do
-- if v == word then
-- error("පරීක්ෂාවට ලක්වෙන ස්ථානයකි.")
-- -- do something
-- break
-- end
-- end
-- require('Module:debug').track("sinhala.adjective.word = " .. word)
-- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න
local adjective = p.search_adjective( word )
if adjective ~= nil then
-- require('Module:debug').track("sinhala.adjective.adjective = " .. adjective)
return adjective
end
-- බොහෝවිට නාම විශේෂණ ස්වරූපය වන්නේ බහු වචනය නේ ද?
local sinhala_plural = p.sinhala_plural( word )
if sinhala_plural ~= nil then
-- require('Module:debug').track("sinhala.adjective.sinhala plural = " .. sinhala_plural)
return sinhala_plural
end
local plural = p.plural( word )
if plural ~= nil then
-- require('Module:debug').track("sinhala.adjective.plural = " .. plural)
return plural
end
-- නොදන්නා වචන සඳහා ඉංග්රීසි වචනයම ලබා දෙන්න
return word
end
function p.sinhala_plural( word )
local sinhala_word = p.sinhala( word )
return p.plural( sinhala_word )
end
function p.sinhala( word )
-- -- ගැටළු සඳහා පරීක්ෂාව
-- for _,v in pairs(words_with_issues) do
-- if v == word then
-- error("පරීක්ෂාවට ලක්වෙන ස්ථානයකි.")
-- -- do something
-- break
-- end
-- end
local trans = english2sinhala[word]
-- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න
if trans ~= nil then
return trans
end
-- නොදන්නා වචන සඳහා ඉංග්රීසි වචනයම ලබා දෙන්න
return word
end
function p.search_plural( word )
local result = nil
if word ~= nil then
-- require('Module:debug').track("sinhala.search plural.word = " .. word)
local plural_word = singular2plural[word]
-- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න
if plural_word ~= nil then
-- require('Module:debug').track("sinhala.search plural.plural word = " .. plural_word)
return plural_word
end
end
return result
end
function p.plural( word )
if word ~= nil then
local result = p.search_plural( word )
if result ~= nil then
return result
end
-- ලතින් අකුරු නොවේ නම් බොහෝ විට සිංහල වචනයක් විය හැකිය.
-- require('Module:debug').track("sinhala.plural.word = " .. word)
if not string.find(word, "%a$") then
return word
end
-- නොදන්නා වචන සඳහා ඉංග්රීසි ආකාරයේ වචනයම ලබා දෙන්න
return m_strutils.pluralize(word)
-- if word:find("x$") then
-- return word .. "es"
-- else
-- return word .. "s"
-- end
end
return word
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
function p.sinhala_pluralize( word )
if word ~= nil then
local result = p.search_plural( word )
if result ~= nil then
return result
end
-- නොදන්නා වචන සඳහා ඉංග්රීසි ආකාරයේ වචනයම ලබා දෙන්න
return pluralize( word )
end
return word
end
return p
4um2j5die3drexs3hx3ni37x8xx6drc
Module:category tree/grammatical classes
828
6067
234892
221250
2026-04-15T09:16:37Z
en>Surjection
0
Changed protection settings for "[[Module:category tree/grammatical classes]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
234892
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "Fundamental",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "suffixes" } do
labels[pos .. " by gender"] = {
description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.",
breadcrumb = "by gender",
parents = {{name = pos, sort = "gender"}},
}
labels[pos .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. pos, sort = "irregular gender"}},
}
labels[pos .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = pos .. " by gender", sort = "multiple genders"}},
}
labels["common-gender " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {pos .. " by gender"},
}
labels["feminine " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "feminine",
parents = {pos .. " by gender"},
}
labels["masculine " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "masculine",
parents = {pos .. " by gender"},
}
labels["masculine and feminine " .. pos .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "masculine and feminine by sense",
parents = {pos .. " by gender"},
}
labels["neuter " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "neuter",
parents = {pos .. " by gender"},
}
labels["gender-neutral " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {pos .. " by gender", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "suffixes"}) do
labels["epicene " .. pos] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {pos .. " by inflection type"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "nouns", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"nouns"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"nouns"},
}
------- ANIMACY -------
for _, pos in ipairs({"nouns", "suffixes", "verbs"}) do
labels["animate " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["inanimate " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"nouns", "suffixes"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"animate " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"animate " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[pos .. " by inflection type"] = {
description = "{{{langname}}} " .. pos .. " organized by the type of inflection they follow.",
breadcrumb = "by inflection type",
parents = {{name = pos, sort = "inflection"}},
}
labels["irregular " .. pos] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {pos .. " by inflection type"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. pos,
"suppletive terms",
},
}
if pos ~= "verbs" and pos ~= "adverbs" then
labels["indeclinable " .. pos] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "indeclinable",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
pos .. " by inflection type",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. " by inflection type", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. " by inflection type", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. " by inflection type", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. " by inflection type", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. " by inflection type"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
0e6gyly5v26j3dy24of5trwu88u37j9
234893
234892
2026-05-25T13:06:23Z
Lee
19
[[:en:Module:category_tree/grammatical_classes]] වෙතින් එක් සංශෝධනයක්
234892
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "Fundamental",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "suffixes" } do
labels[pos .. " by gender"] = {
description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.",
breadcrumb = "by gender",
parents = {{name = pos, sort = "gender"}},
}
labels[pos .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. pos, sort = "irregular gender"}},
}
labels[pos .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = pos .. " by gender", sort = "multiple genders"}},
}
labels["common-gender " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {pos .. " by gender"},
}
labels["feminine " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "feminine",
parents = {pos .. " by gender"},
}
labels["masculine " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "masculine",
parents = {pos .. " by gender"},
}
labels["masculine and feminine " .. pos .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "masculine and feminine by sense",
parents = {pos .. " by gender"},
}
labels["neuter " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "neuter",
parents = {pos .. " by gender"},
}
labels["gender-neutral " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {pos .. " by gender", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "suffixes"}) do
labels["epicene " .. pos] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {pos .. " by inflection type"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "nouns", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"nouns"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"nouns"},
}
------- ANIMACY -------
for _, pos in ipairs({"nouns", "suffixes", "verbs"}) do
labels["animate " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["inanimate " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"nouns", "suffixes"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"animate " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"animate " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[pos .. " by inflection type"] = {
description = "{{{langname}}} " .. pos .. " organized by the type of inflection they follow.",
breadcrumb = "by inflection type",
parents = {{name = pos, sort = "inflection"}},
}
labels["irregular " .. pos] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {pos .. " by inflection type"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. pos,
"suppletive terms",
},
}
if pos ~= "verbs" and pos ~= "adverbs" then
labels["indeclinable " .. pos] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "indeclinable",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
pos .. " by inflection type",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. " by inflection type", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. " by inflection type", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. " by inflection type", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. " by inflection type", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. " by inflection type"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
0e6gyly5v26j3dy24of5trwu88u37j9
234894
234893
2026-05-25T13:07:26Z
Lee
19
පැරණි සංස්කරණයකින් ගත් කොටස්...
234894
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "Fundamental",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "suffixes" } do
labels[pos .. " by gender"] = {
description = "{{{langname}}} " .. pos .. " organized by the gender they belong to.",
breadcrumb = "by gender",
parents = {{name = pos, sort = "gender"}},
}
labels[pos .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. pos, sort = "irregular gender"}},
}
labels[pos .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = pos .. " by gender", sort = "multiple genders"}},
}
labels["common-gender " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {pos .. " by gender"},
}
labels["feminine " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "feminine",
parents = {pos .. " by gender"},
}
labels["masculine " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "masculine",
parents = {pos .. " by gender"},
}
labels["masculine and feminine " .. pos .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "masculine and feminine by sense",
parents = {pos .. " by gender"},
}
labels["neuter " .. pos] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "neuter",
parents = {pos .. " by gender"},
}
labels["gender-neutral " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {pos .. " by gender", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "suffixes"}) do
labels["epicene " .. pos] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {pos .. " by inflection type"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "නාම පද", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"නාම පද"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"නාම පද"},
}
------- ANIMACY -------
for _, pos in ipairs({"නාම පද", "ප්රත්ය", "ක්රියා පද"}) do
labels["ප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["අප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"නාම පද", "ප්රත්ය"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = {
description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.",
breadcrumb = "වරනැගීම් වර්ගය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}},
}
labels["irregular " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. pos,
"suppletive terms",
},
}
if pos ~= "verbs" and pos ~= "adverbs" then
labels["indeclinable " .. pos] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "indeclinable",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
pos .. " by inflection type",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. " by inflection type", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. " by inflection type", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. " by inflection type", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. " by inflection type", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "nouns", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. ", වරනැගීම් වර්ගය අනුව"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
jmlq6fh1yxw13o87gns1o8b375mobcp
234895
234894
2026-05-25T13:21:01Z
Lee
19
පැරණි සංස්කරණයකින් ගත් කොටස්...
234895
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "මූලධර්ම",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්රත්ය" } do
labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = {
description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.",
breadcrumb = "ලිංග භේදය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}},
}
labels["common-gender " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "ස්ත්රී ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "පුරුෂ ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග සහ ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "පුරුෂ ලිංග සහ ස්ත්රී ලිංග by sense",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "නපුංසක ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["gender-neutral " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්රත්ය"}) do
labels["epicene " .. pos] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {pos .. ", වරනැගීම් වර්ගය අනුව"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "නාම පද", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"නාම පද"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"නාම පද"},
}
------- ANIMACY -------
for _, pos in ipairs({"නාම පද", "ප්රත්ය", "ක්රියා පද"}) do
labels["ප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["අප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"නාම පද", "ප්රත්ය"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = {
description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.",
breadcrumb = "වරනැගීම් වර්ගය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}},
}
labels["irregular " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. pos,
"suppletive terms",
},
}
if pos ~= "ක්රියා පද" and pos ~= "adverbs" then
labels["අව්යය " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "අව්යය",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. ", වරනැගීම් වර්ගය අනුව"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
3gfduiyt1hv8kncy62njx2gq9kbupkw
234897
234895
2026-05-25T13:24:20Z
Lee
19
[[:ප්රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සඳහා සහාය
234897
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "මූලධර්ම",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්රත්ය" } do
labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = {
description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.",
breadcrumb = "ලිංග භේදය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}},
}
labels["common-gender " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "ස්ත්රී ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "පුරුෂ ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග සහ ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "පුරුෂ ලිංග සහ ස්ත්රී ලිංග by sense",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "නපුංසක ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["gender-neutral " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්රත්ය"}) do
labels["epicene " .. pos] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "නාම පද", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"නාම පද"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"නාම පද"},
}
------- ANIMACY -------
for _, pos in ipairs({"නාම පද", "ප්රත්ය", "ක්රියා පද"}) do
labels["ප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["අප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"නාම පද", "ප්රත්ය"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = {
description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.",
breadcrumb = "වරනැගීම් වර්ගය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}},
}
labels["irregular " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. pos,
"suppletive terms",
},
}
if pos ~= "ක්රියා පද" and pos ~= "adverbs" then
labels["අව්යය " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "අව්යය",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. ", වරනැගීම් වර්ගය අනුව"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
erl18xrel5ulexk7kvt89sb3fhgq2on
234903
234897
2026-05-25T13:29:49Z
Lee
19
[[:ප්රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] සඳහා සහාය
234903
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "මූලධර්ම",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්රත්ය" } do
labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = {
description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.",
breadcrumb = "ලිංග භේදය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}},
}
labels["common-gender " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "ස්ත්රී ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "පුරුෂ ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග සහ ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "පුරුෂ ලිංග සහ ස්ත්රී ලිංග by sense",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "නපුංසක ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["gender-neutral " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්රත්ය"}) do
labels["උභයලිංගික " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "නාම පද", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"නාම පද"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"නාම පද"},
}
------- ANIMACY -------
for _, pos in ipairs({"නාම පද", "ප්රත්ය", "ක්රියා පද"}) do
labels["ප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["අප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"නාම පද", "ප්රත්ය"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = {
description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.",
breadcrumb = "වරනැගීම් වර්ගය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}},
}
labels["irregular " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. pos,
"suppletive terms",
},
}
if pos ~= "ක්රියා පද" and pos ~= "adverbs" then
labels["අව්යය " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "අව්යය",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. ", වරනැගීම් වර්ගය අනුව"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
myvuhgkja465b4wjuxsp5colh9jhg90
234927
234903
2026-05-26T06:11:09Z
Lee
19
[[:ප්රවර්ගය:ඉංග්රීසි suppletive verbs]] සඳහා සහාය
234927
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["terms by grammatical category"] = {
description = "{{{langname}}} terms categorized by their grammatical category.",
umbrella_parents = "මූලධර්ම",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["indeclinable terms"] = {
description = "Indeclinable {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
labels["suppletive terms"] = {
description = "Suppletive {{{langname}}} terms categorized by their part of speech.",
umbrella_parents = "Suppletion subcategories by language",
parents = {{name = "terms by grammatical category"}},
}
------- GENDER -------
for _, pos in ipairs { "nouns", "pronouns", "proper nouns", "ප්රත්ය" } do
labels[m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"] = {
description = "ලිංග භේදය අනුව පෙළ ගසා ඇති {{{langname}}} " .. pos .. " මෙහි දැක්වෙයි.",
breadcrumb = "ලිංග භේදය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with irregular gender"] = {
description = "{{{langname}}} " .. pos .. " whose ending is not typical for " .. pos .. " of their gender.",
breadcrumb = "with irregular gender",
parents = {{name = "irregular " .. m_sinhala.sinhala(pos), sort = "irregular gender"}},
}
labels[m_sinhala.sinhala(pos) .. " with multiple genders"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one gender.",
breadcrumb = "with multiple genders",
parents = {{name = m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", sort = "multiple genders"}},
}
labels["common-gender " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|common gender}}, i.e. belonging to a gender category that combines the function of {{glossary|masculine}} and {{glossary|feminine}} and is opposed to the {{glossary|neuter}} gender.",
breadcrumb = "common-gender",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|feminine}} gender, i.e. belonging to a gender category that contains (among other things) female beings.",
breadcrumb = "ස්ත්රී ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|masculine}} gender, i.e. belonging to a gender category that contains (among other things) male beings.",
breadcrumb = "පුරුෂ ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["පුරුෂ ලිංග සහ ස්ත්රී ලිංග " .. m_sinhala.sinhala(pos) .. " by sense"] = {
description = "{{{langname}}} " .. pos .. " that may be either {{glossary|masculine}} or {{glossary|feminine}} depending on whether they refer to male or female beings.",
breadcrumb = "පුරුෂ ලිංග සහ ස්ත්රී ලිංග by sense",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["නපුංසක ලිංග " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " of {{glossary|neuter}} gender, i.e. belonging to a gender category that does not usually contain male or female beings.",
breadcrumb = "නපුංසක ලිංග",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව"},
}
labels["gender-neutral " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that are applicable to all people, independent of gender.",
breadcrumb = "gender-neutral",
parents = {m_sinhala.sinhala(pos) .. ", ලිංග භේදය අනුව", "gender-neutral terms"},
}
end
for _, pos in ipairs({"adjectives", "determiners", "numerals", "participles", "ප්රත්ය"}) do
labels["උභයලිංගික " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " whose form is the same for both {{glossary|masculine}} and {{glossary|feminine}}, in languages whose " .. pos .. " normally distinguish gender.",
breadcrumb = "epicene",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
end
------- NOUN CLASSES -------
labels["nouns by class"] = {
description = "{{{langname}}} nouns organized by the class they belong to.",
breadcrumb = "by class",
parents = {{name = "නාම පද", sort = "class"}},
}
labels["alienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|alienably possessed]].",
breadcrumb = "alienable",
parents = {"නාම පද"},
}
labels["inalienable nouns"] = {
description = "{{{langname}}} nouns that are [[w:Inalienable possession|inalienably possessed]].",
breadcrumb = "inalienable",
parents = {"නාම පද"},
}
------- ANIMACY -------
for _, pos in ipairs({"නාම පද", "ප්රත්ය", "ක්රියා පද"}) do
labels["ප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans or animals.",
breadcrumb = "animate",
parents = {pos},
}
labels["අප්රාණවාචී " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to inanimate objects (not humans or animals).",
breadcrumb = "inanimate",
parents = {pos},
}
labels[pos .. " with multiple animacies"] = {
description = "{{{langname}}} " .. pos .. " that belong to more than one animacy.",
breadcrumb = "with multiple animacies",
parents = {{name = pos, sort = "multiple animacies"}},
}
end
for _, pos in ipairs({"නාම පද", "ප්රත්ය"}) do
-- This category should be used particularly in languages that have
-- grammatical distinctions related to animals, such as Ukrainian.
labels["animal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to animals.",
breadcrumb = "animal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["nonvirile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group without male humans.",
breadcrumb = "nonvirile",
parents = {pos, "pluralia tantum"},
}
labels["personal " .. pos] = {
description = "{{{langname}}} " .. pos .. " that refer to humans.",
breadcrumb = "personal",
parents = {"ප්රාණවාචී " .. pos},
}
-- This category should be used particularly in languages that have
-- grammatical distinctions related to men, such as Polish.
labels["virile " .. pos] = {
description = "{{{langname}}} plural " .. pos .. " that refer to a group with at least one male human.",
breadcrumb = "virile",
parents = {pos, "pluralia tantum"},
}
end
------- INFLECTED PARTS OF SPEECH -------
-- Add "POS by inflection type", "irregular POS" and "POS by tone"
-- categories for (potentially) inflected parts of speech.
local inflected_poses = {
"adjectives",
"adverbs",
"determiners",
"nouns",
"numerals",
"participles",
"pronouns",
"proper nouns",
"suffixes",
"verbs",
}
for _, pos in ipairs(inflected_poses) do
labels[m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"] = {
description = "{{{langname}}} " .. m_sinhala.sinhala(pos) .. " organized by the type of inflection they follow.",
breadcrumb = "වරනැගීම් වර්ගය අනුව",
parents = {{name = m_sinhala.sinhala(pos), sort = "inflection"}},
}
labels["irregular " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that follow non-standard patterns of inflection.",
breadcrumb = "irregular",
parents = {m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව"},
}
labels["defective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that lack one or more forms in their inflections.",
breadcrumb = "defective",
parents = {pos, "irregular " .. pos},
}
labels["suppletive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that have inflected forms from different roots.",
breadcrumb = "suppletive",
umbrella_parents = "Suppletion subcategories by language",
parents = {
"irregular " .. m_sinhala.sinhala(pos),
"suppletive terms",
},
}
if pos ~= "ක්රියා පද" and pos ~= "adverbs" then
labels["අව්යය " .. m_sinhala.sinhala(pos)] = {
description = "{{{langname}}} " .. pos .. " that do not display additional grammatical relations by means of declension.",
breadcrumb = "අව්යය",
umbrella_parents = "Indeclinable terms subcategories by language",
parents = {
m_sinhala.sinhala(pos) .. ", වරනැගීම් වර්ගය අනුව",
"indeclinable terms",
},
}
labels[pos .. " with multiple declensions"] = {
description = "{{{langname}}} " .. pos .. " that follow more than one type of inflection.",
breadcrumb = "with multiple declensions",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple declensions"}},
}
labels[pos .. " with multiple plurals"] = {
description = "{{{langname}}} " .. pos .. " that have more than one possible plural (sometimes with distinct meanings).",
breadcrumb = "with multiple plurals",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "multiple plurals"}},
}
end
labels[pos .. " by tone"] = {
description = "{{{langname}}} " .. pos .. " organized by the tone they follow.",
breadcrumb = "by tone",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "tone"}},
}
labels[pos .. " by vowel harmony"] = {
description = "{{{langname}}} " .. pos .. " organized by the vowel harmony they follow.",
breadcrumb = "by vowel harmony",
parents = {{name = pos .. ", වරනැගීම් වර්ගය අනුව", sort = "vowel harmony"}},
}
end
-- FIXME: Only used currently for Arabic; probably should be removed as a general category.
labels["irregular elative adjectives"] = {
description = "{{{langname}}} elative adjectives that follow non-standard patterns of inflection.",
parents = {"adjectives by inflection type"},
}
for _, pos in ipairs { "නාම පද", "proper nouns", "pronouns" } do
labels[pos .. " with irregular plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is formed irregularly.",
breadcrumb = "with irregular plurals",
parents = {{name = "irregular " .. pos, sort = "irregular plurals"}},
}
labels[pos .. " with unattested plurals"] = {
description = "{{{langname}}} " .. pos .. " whose plural is unattested.",
breadcrumb = "with unattested plurals",
parents = {{name = pos, sort = "unattested plurals"}},
}
labels["definite " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are inherently definite and have definite concord.",
breadcrumb = "definite",
parents = {pos .. ", වරනැගීම් වර්ගය අනුව"},
}
end
local labels2 = {}
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Terms by grammatical category subcategories by language"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Terms by grammatical category subcategories by language"] = {
description = "Umbrella categories covering topics related to grammatical categories, such as gender, animacy and noun and verb classes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
{name = "terms by grammatical category", is_label = true, sort = " "},
},
}
raw_categories["Indeclinable terms subcategories by language"] = {
description = "Umbrella categories covering indeclinable terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
raw_categories["Suppletion subcategories by language"] = {
description = "Umbrella categories covering suppletive terms in specific part-of-speech categories.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"ඡත්ර මෙටා ප්රවර්ග",
"Terms by grammatical category subcategories by language",
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local class = data.label:match("^class (.+) nouns$")
if class then
local classnum, suffix = class:match("^(%d+)(.*)$")
return {
description =
"{{{langname}}} nouns that belong to class " .. class .. ".",
breadcrumb = {name = class, nocap = true},
umbrella = false,
parents = {{
name = "nouns by class",
sort = classnum and ("#%03d"):format(classnum) .. suffix or class,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, tone = data.label:match("^(.+) with tone ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with tone " .. tone .. ".",
breadcrumb = tone,
-- FIXME, should there be an umbrella category e.g. 'Adjectives with tone H by language'?
umbrella = false,
parents = {{
name = pos .. " by tone",
sort = "" .. tone:len() .. tone,
}},
}
end
end)
table.insert(handlers, function(data)
local vh, pos = data.label:match("^(.+)-harmonic ([^ ]+)$")
if pos then
return {
description = "{{{langname}}} " .. pos .. " with vowel harmony in " .. vh .. ".",
breadcrumb = vh,
umbrella = false,
parents = {{
name = pos .. " by vowel harmony",
sort = "" .. vh:len() .. vh,
}},
}
end
end)
table.insert(handlers, function(data)
local pos, classifier = data.label:match("^(nouns) classified by (.+)$")
if pos then
local linktext
if data.lang then
-- Chinese classifiers may take the form TRAD/SIMP. This will cause problems if passed directly to [[Module:links]],
-- but the module can accept links of the form TRAD//SIMP and display them correctly.
if data.lang:getCode() == "zh" then
classifier = classifier:gsub("/", "//")
end
linktext = require("Module:links").full_link({ term = classifier, lang = data.lang }, "term")
else
linktext = classifier
end
return {
description = "{{{langname}}} " .. pos .. " using " .. linktext .. " as their classifier.",
breadcrumb = classifier,
umbrella = false,
parents = {{
name = pos .. " by classifier",
sort = (data.lang:makeSortKey(classifier)),
}},
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
n1xvay9r8epw7ej43u7z7px77d5qbfj
Module:list of languages, csv format
828
7390
234938
32743
2026-02-01T02:59:38Z
en>Benwing2
0
standardChars -> standard_chars for consistency with other fields
234938
Scribunto
text/plain
local languages = require("Module:languages/data/all")
local families = require("Module:families/data")
-- based on Module:list_of_languages
local export = {}
local filters = {}
function export.show(frame)
local args = frame.args
local filter = filters[args[1]]
local ids = args["ids"]; if not ids or ids == "" then ids = false else ids = true end
local rows = {}
-- Get a list of all language codes
local codes = {}
for code, _ in pairs(languages) do
table.insert(codes, code)
end
-- Sort the list
table.sort(codes)
local sep = ";"
local minor_sep = ","
-- Now go over each code, and create table rows for those that are selected
local column_names = {
"line", "code", "canonical name", "category", "type", "family code",
"family", "sortkey?", "autodetect?", "exceptional?", "script codes",
"other names", "standard characters"
}
for line, code in ipairs(codes) do
local data = languages[code]
local row = {}
local sc = data[4]
if type(sc) == "string" then sc = mw.text.split(sc, "%s*,%s*") end
-- data[1]: canonical name; data[3]: family code
table.insert(row, line)
table.insert(row, code)
table.insert(row, data[1])
table.insert(row, data[1] .. (data[1]:find("[Ll]anguage$") and "" or " language"))
table.insert(row, data.type or "")
table.insert(row, data[3] or "")
table.insert(row, data[3] and (families[data[3]] and families[data[3]][1] or error(data[3] .. " is not a valid family code (family of " .. code .. ")")) or "")
table.insert(row, data.sort_key and "sortkey" or "")
table.insert(row, data.entry_name and "autodetect" or "")
table.insert(row, code:find("-") and "exceptional" or "")
table.insert(row, sc and table.concat(sc, minor_sep) or "")
table.insert(row, data.other_names and table.concat(data.other_names, minor_sep) or "")
table.insert(row, data.standard_chars and "standard characters" or "")
table.insert(rows, table.concat(row, sep))
end
return "<pre>\n" .. table.concat(column_names, sep) .. "\n" .. table.concat(rows, "\n") .. "</pre>"
end
return export
3o334xc4m7u3sgrkdgaf01t2rbgyyid
234939
234938
2026-05-26T07:09:44Z
Lee
19
[[:en:Module:list_of_languages,_csv_format]] වෙතින් එක් සංශෝධනයක්
234938
Scribunto
text/plain
local languages = require("Module:languages/data/all")
local families = require("Module:families/data")
-- based on Module:list_of_languages
local export = {}
local filters = {}
function export.show(frame)
local args = frame.args
local filter = filters[args[1]]
local ids = args["ids"]; if not ids or ids == "" then ids = false else ids = true end
local rows = {}
-- Get a list of all language codes
local codes = {}
for code, _ in pairs(languages) do
table.insert(codes, code)
end
-- Sort the list
table.sort(codes)
local sep = ";"
local minor_sep = ","
-- Now go over each code, and create table rows for those that are selected
local column_names = {
"line", "code", "canonical name", "category", "type", "family code",
"family", "sortkey?", "autodetect?", "exceptional?", "script codes",
"other names", "standard characters"
}
for line, code in ipairs(codes) do
local data = languages[code]
local row = {}
local sc = data[4]
if type(sc) == "string" then sc = mw.text.split(sc, "%s*,%s*") end
-- data[1]: canonical name; data[3]: family code
table.insert(row, line)
table.insert(row, code)
table.insert(row, data[1])
table.insert(row, data[1] .. (data[1]:find("[Ll]anguage$") and "" or " language"))
table.insert(row, data.type or "")
table.insert(row, data[3] or "")
table.insert(row, data[3] and (families[data[3]] and families[data[3]][1] or error(data[3] .. " is not a valid family code (family of " .. code .. ")")) or "")
table.insert(row, data.sort_key and "sortkey" or "")
table.insert(row, data.entry_name and "autodetect" or "")
table.insert(row, code:find("-") and "exceptional" or "")
table.insert(row, sc and table.concat(sc, minor_sep) or "")
table.insert(row, data.other_names and table.concat(data.other_names, minor_sep) or "")
table.insert(row, data.standard_chars and "standard characters" or "")
table.insert(rows, table.concat(row, sep))
end
return "<pre>\n" .. table.concat(column_names, sep) .. "\n" .. table.concat(rows, "\n") .. "</pre>"
end
return export
3o334xc4m7u3sgrkdgaf01t2rbgyyid
වික්ෂනරි:List of languages, csv format
4
8055
234936
28959
2026-01-20T14:05:32Z
en>Juwan
0
234936
wikitext
text/x-wiki
{{hatnote|For a list of etymology-only languages, see [[Wiktionary:Etymology-only languages, csv format]].}}
{{shortcut|WT:LOL/CSV}}
For scripts and bot writers: the list is generated by [[Module:list of languages, csv format]].
'''Note:''' The preferred export format is [[JSON]]. Please use [[Module:JSON data]] for a more robust export of Wiktionary data on languages, scripts{{,}} and language families.
'''Beta:''' Columns subject to change. Does not currently include etymology-only languages.
==List of languages==
{{#invoke:list of languages, csv format|show}}
==See also==
* [[Wiktionary:List of languages]], a human-readable table
gf1gy15hp8kqsxgbr1civtg15qwpenp
234937
234936
2026-05-26T07:08:32Z
Lee
19
[[:en:Wiktionary:List_of_languages,_csv_format]] වෙතින් එක් සංශෝධනයක්
234936
wikitext
text/x-wiki
{{hatnote|For a list of etymology-only languages, see [[Wiktionary:Etymology-only languages, csv format]].}}
{{shortcut|WT:LOL/CSV}}
For scripts and bot writers: the list is generated by [[Module:list of languages, csv format]].
'''Note:''' The preferred export format is [[JSON]]. Please use [[Module:JSON data]] for a more robust export of Wiktionary data on languages, scripts{{,}} and language families.
'''Beta:''' Columns subject to change. Does not currently include etymology-only languages.
==List of languages==
{{#invoke:list of languages, csv format|show}}
==See also==
* [[Wiktionary:List of languages]], a human-readable table
gf1gy15hp8kqsxgbr1civtg15qwpenp
Module:es-headword
828
8631
234914
228674
2026-05-25T13:37:42Z
Lee
19
[[nóvel]], [[:ප්රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සිට [[:ප්රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] වෙතට යොමු කිරීම
234914
Scribunto
text/plain
local m_sinhala = require("Module:sinhala")
local export = {}
local pos_functions = {}
local force_cat = false -- for testing; if true, categories appear in non-mainspace pages
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local require_when_needed = require("Module:utilities/require when needed")
local m_table = require("Module:table")
local com = require("Module:es-common")
local en_utilities_module = "Module:en-utilities"
local es_verb_module = "Module:es-verb"
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local inflection_utilities_module = "Module:inflection utilities"
local romut_module = "Module:romance utilities"
local m_en_utilities = require_when_needed(en_utilities_module)
local m_headword_utilities = require_when_needed(headword_utilities_module)
local m_string_utilities = require_when_needed("Module:string utilities")
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local lang = require("Module:languages").getByCode("es")
local langname = lang:getCanonicalName()
local insert = table.insert
local remove = table.remove
local rsub = com.rsub
local sort = table.sort
local ulower = mw.ustring.lower
local usub = mw.ustring.sub
local uupper = mw.ustring.upper
local function track(page)
require("Module:debug").track("es-headword/" .. page)
return true
end
local list_param = {list = true, disallow_holes = true}
local boolean_param = {type = "boolean"}
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local poscat = frame.args[1]
or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
local parargs = frame:getParent().args
local params = {
["head"] = list_param,
["id"] = true,
["splithyph"] = boolean_param,
["nolink"] = boolean_param,
["nolinkhead"] = {alias_of = "nolink"},
["json"] = boolean_param,
["pagename"] = true, -- for testing
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local user_specified_heads = args.head
local heads = user_specified_heads
if args.nolink then
if #heads == 0 then
heads = {pagename}
end
else
local romut = require(romut_module)
local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph)
if #heads == 0 then
heads = {auto_linked_head}
else
for i, head in ipairs(heads) do
if head:find("^~") then
head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2))
heads[i] = head
end
end
end
end
local data = {
lang = lang,
pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat,
categories = {},
heads = heads,
user_specified_heads = user_specified_heads,
no_redundant_head_cat = #user_specified_heads == 0,
genders = {},
inflections = {},
pagename = pagename,
id = args.id,
force_cat_output = force_cat,
checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true,
}
if pagename:find("^%-") and poscat ~= "suffix forms" then
data.is_suffix = true
data.pos_category = "suffixes"
data.checkredlinks = true
local singular_poscat = m_en_utilities.singularize(poscat)
insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
insert(data.inflections, {label = singular_poscat .. "-forming suffix"})
end
local pagename_lower = ulower(pagename)
for _, ch in ipairs{"jh", "kh", "ph", "qü", "sh", "th", "tl", "ts", "tz", "wh", "zh", "ze", "zi"} do
if pagename_lower:find(ch) then
insert(data.categories, langname .. " terms spelled with " .. uupper(ch))
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data)
end
if args.json then
return require("Module:JSON").toJSON(data)
end
return require(headword_module).full_headword(data)
end
-----------------------------------------------------------------------------------------
-- Utility functions --
-----------------------------------------------------------------------------------------
local function replace_hash_with_lemma(term, lemma)
-- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture
-- replace expression.
lemma = m_string_utilities.replacement_escape(lemma)
return (term:gsub("#", lemma)) -- discard second retval
end
-- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come
-- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given;
-- `accel` is the accelerator form, or nil.
local function parse_and_insert_inflection(data, args, field, label, accel)
m_headword_utilities.parse_and_insert_inflection {
headdata = data,
forms = args[field],
paramname = field,
splitchar = ",",
label = label,
accel = accel and {form = accel} or nil,
}
end
-- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result.
-- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list
-- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`).
local function insert_defpls(defpls, plobj, dest)
if not defpls then
-- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing.
return
end
if #defpls == 1 then
plobj.term = defpls[1]
insert(dest, plobj)
else
for _, defpl in ipairs(defpls) do
local newplobj = m_table.shallowCopy(plobj)
newplobj.term = defpl
insert(dest, newplobj)
end
end
end
-----------------------------------------------------------------------------------------
-- Adjectives --
-----------------------------------------------------------------------------------------
local function do_adjective(args, data, is_superlative)
local feminines = {}
local masculine_plurals = {}
local feminine_plurals = {}
-- Use "participle" not "past participle" for categories such as 'invariable participles'
local category_plpos = data.checkredlinks
if category_plpos == true then
category_plpos = data.pos_category
end
local category_pos = m_en_utilities.singularize(category_plpos)
if args.sp then
local romut = require(romut_module)
if not romut.allowed_special_indicators[args.sp] then
local indicators = {}
for indic, _ in pairs(romut.allowed_special_indicators) do
insert(indicators, "'" .. indic .. "'")
end
sort(indicators)
error("Special inflection indicator beginning can only be " ..
mw.text.listToText(indicators) .. ": " .. args.sp)
end
end
local lemma = data.pagename
local function fetch_inflections(field)
local retval = m_headword_utilities.parse_term_list_with_modifiers {
paramname = field,
forms = args[field],
splitchar = ",",
}
if not retval[1] then
return {{term = "+"}}
end
return retval
end
local function insert_inflection(terms, label, accel)
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = label,
accel = accel and {form = accel} or nil,
}
end
if args.inv then
-- invariable adjective
insert(data.inflections, {label = glossary_link("invariable")})
insert(data.categories, langname .. " indeclinable " .. category_plpos)
if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then
error("Can't specify inflections with an invariable " .. category_pos)
end
elseif args.fonly then
-- feminine-only
if args.f[1] then
error("Can't specify explicit feminines with feminine-only " .. category_pos)
end
if args.pl[1] then
error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=")
end
if args.mpl[1] then
error("Can't specify explicit masculine plurals with feminine-only " .. category_pos)
end
local argsfpl = fetch_inflections("fpl")
for _, fpl in ipairs(argsfpl) do
if fpl.term == "+" then
-- Generate default feminine plural.
local defpls = com.make_plural(lemma, "f", args.sp)
if not defpls then
error("Unable to generate default plural of '" .. lemma .. "'")
end
insert_defpls(defpls, fpl, feminine_plurals)
else
fpl.term = replace_hash_with_lemma(fpl.term, lemma)
insert(feminine_plurals, fpl)
end
end
insert(data.inflections, {label = "feminine-only"})
insert_inflection(feminine_plurals, "feminine plural", "f|p")
else
-- Gather feminines.
for _, f in ipairs(fetch_inflections("f")) do
if f.term == "+" then
-- Generate default feminine.
f.term = com.make_feminine(lemma, args.sp)
else
f.term = replace_hash_with_lemma(f.term, lemma)
end
insert(feminines, f)
end
local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and
not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1])
if fem_like_lemma then
insert(data.categories, langname .. " උභයලිංගික " .. m_sinhala.sinhala(category_plpos))
end
local mpl_field = "mpl"
local fpl_field = "fpl"
if args.pl[1] then
if args.mpl[1] or args.fpl[1] then
error("Can't specify both pl= and mpl=/fpl=")
end
mpl_field = "pl"
fpl_field = "pl"
end
local argsmpl = fetch_inflections(mpl_field)
local argsfpl = fetch_inflections(fpl_field)
for _, mpl in ipairs(argsmpl) do
if mpl.term == "+" then
-- Generate default masculine plural.
local defpls = com.make_plural(lemma, "m", args.sp)
if not defpls then
error("Unable to generate default plural of '" .. lemma .. "'")
end
insert_defpls(defpls, mpl, masculine_plurals)
else
mpl.term = replace_hash_with_lemma(mpl.term, lemma)
insert(masculine_plurals, mpl)
end
end
for _, fpl in ipairs(argsfpl) do
if fpl.term == "+" then
for _, f in ipairs(feminines) do
-- Generate default feminine plural; f is a table.
local defpls = com.make_plural(f.term, "f", args.sp)
if not defpls then
error("Unable to generate default plural of '" .. f.term .. "'")
end
for _, defpl in ipairs(defpls) do
local fplobj = m_table.shallowCopy(fpl)
fplobj.term = defpl
m_headword_utilities.combine_termobj_qualifiers_labels(fplobj, f)
insert(feminine_plurals, fplobj)
end
end
else
fpl.term = replace_hash_with_lemma(fpl.term, lemma)
insert(feminine_plurals, fpl)
end
end
parse_and_insert_inflection(data, args, "mapoc", "masculine singular before a noun")
local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and
m_table.deepEquals(masculine_plurals, feminine_plurals)
local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and
not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1])
if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then
-- actually invariable
insert(data.inflections, {label = glossary_link("invariable")})
insert(data.categories, langname .. " indeclinable " .. category_plpos)
else
-- Make sure there are feminines given and not same as lemma.
if not fem_like_lemma then
insert_inflection(feminines, "feminine", "f|s")
elseif args.gneut then
data.genders = {"gneut"}
else
data.genders = {"mf"}
end
if fem_pl_like_masc_pl then
if args.gneut then
insert_inflection(masculine_plurals, "plural", "p")
else
insert_inflection(masculine_plurals, "masculine and feminine plural", "p")
end
else
insert_inflection(masculine_plurals, "masculine plural", "m|p")
insert_inflection(feminine_plurals, "feminine plural", "f|p")
end
end
end
parse_and_insert_inflection(data, args, "comp", "comparative")
parse_and_insert_inflection(data, args, "sup", "superlative")
parse_and_insert_inflection(data, args, "dim", "diminutive")
parse_and_insert_inflection(data, args, "aug", "augmentative")
if args.irreg and is_superlative then
insert(data.categories, langname .. " irregular superlative " .. category_plpos)
end
end
local function get_adjective_params(adjtype)
local params = {
["inv"] = boolean_param, --invariable
["sp"] = true, -- special indicator: "first", "first-last", etc.
}
local function ins_infl(field)
params[field] = list_param --feminine form(s)
end
ins_infl("f") -- feminine form(s)
ins_infl("pl") -- plural override(s)
ins_infl("mpl") -- masculine plural override(s)
ins_infl("fpl") -- feminine plural override(s)
if adjtype == "base" then
ins_infl("mapoc") --masculine apocopated (before a noun)
ins_infl("comp") --comparative(s)
ins_infl("sup") --superlative(s)
ins_infl("dim") --diminutive(s)
ins_infl("aug") --augmentative(s)
params["fonly"] = boolean_param -- feminine only
params["gneut"] = boolean_param -- gender-neutral adjective e.g. [[latine]]
params["hascomp"] = true -- has comparative
end
if adjtype == "sup" then
params["irreg"] = boolean_param
end
return params
end
pos_functions["adjectives"] = {
params = get_adjective_params("base"),
func = do_adjective,
}
pos_functions["past participles"] = {
params = get_adjective_params("part"),
func = do_adjective,
redlink_pos = "participles",
}
pos_functions["determiners"] = {
params = get_adjective_params("det"),
func = do_adjective,
}
pos_functions["pronouns"] = {
params = get_adjective_params("pron"),
func = do_adjective,
}
pos_functions["comparative adjectives"] = {
params = get_adjective_params("comp"),
func = do_adjective,
pos_category = "adjectives",
}
pos_functions["superlative adjectives"] = {
params = get_adjective_params("sup"),
func = function(args, data)
do_adjective(args, data, true)
end,
pos_category = "adjectives",
}
-----------------------------------------------------------------------------------------
-- Adverbs --
-----------------------------------------------------------------------------------------
pos_functions["adverbs"] = {
params = {
["sup"] = list_param, --superlative(s)
},
func = function(args, data)
parse_and_insert_inflection(data, args, "sup", "superlative")
end,
}
-----------------------------------------------------------------------------------------
-- Numerals --
-----------------------------------------------------------------------------------------
pos_functions["cardinal numbers"] = {
params = {
["f"] = list_param, --feminine(s)
["mapoc"] = list_param, --masculine apocopated form(s)
},
func = function(args, data)
insert(data.categories, 1, langname .. " cardinal numbers")
if args.f[1] then
insert(data.genders, "m")
parse_and_insert_inflection(data, args, "f", "feminine")
end
parse_and_insert_inflection(data, args, "mapoc", "masculine before a noun")
end,
pos_category = "numerals",
}
-----------------------------------------------------------------------------------------
-- Nouns --
-----------------------------------------------------------------------------------------
local allowed_genders = m_table.listToSet(
{"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"}
)
local function validate_genders(genders)
for _, g in ipairs(genders) do
if type(g) == "table" then
g = g.spec
end
if not allowed_genders[g] then
error("Unrecognized gender: " .. g)
end
end
end
-- Display additional inflection information for a noun
local function do_noun(args, data, is_proper)
local is_plurale_tantum = false
local has_singular = false
local category_plpos = data.checkredlinks
if category_plpos == true then
category_plpos = data.pos_category
end
local category_pos = m_en_utilities.singularize(category_plpos)
validate_genders(args[1])
data.genders = args[1]
local saw_m = false
local saw_f = false
local saw_gneut = false
local gender_for_irreg_ending, gender_for_make_plural
-- Check for specific genders and pluralia tantum.
for _, g in ipairs(args[1]) do
if type(g) == "table" then
g = g.spec
end
if g:find("-p$") then
is_plurale_tantum = true
else
has_singular = true
if g == "m" or g == "mf" or g == "mfbysense" then
saw_m = true
end
if g == "f" or g == "mf" or g == "mfbysense" then
saw_f = true
end
if g == "gneut" then
saw_gneut = true
end
end
end
if saw_m and saw_f then
gender_for_irreg_ending = "mf"
elseif saw_f then
gender_for_irreg_ending = "f"
else
gender_for_irreg_ending = "m"
end
gender_for_make_plural = saw_gneut and "gneut" or gender_for_irreg_ending
local lemma = data.pagename
local plurals = {}
if is_plurale_tantum and not has_singular then
if args[2][1] then
error("Can't specify plurals of plurale tantum " .. category_pos)
end
insert(data.inflections, {label = glossary_link("plural only")})
else
plurals = m_headword_utilities.parse_term_list_with_modifiers {
paramname = {2, "pl"},
forms = args[2],
splitchar = ",",
}
-- Check for special plural signals
local mode = nil
local pl1 = plurals[1]
if pl1 and #pl1.term == 1 then
mode = pl1.term
if mode == "?" or mode == "!" or mode == "-" or mode == "~" then
pl1.term = nil
if next(pl1) then
error(("Can't specify inline modifiers with plural code '%s'"):format(mode))
end
remove(plurals, 1) -- Remove the mode parameter
elseif mode ~= "+" and mode ~= "#" then
error(("Unexpected plural code '%s'"):format(mode))
end
end
if mode == "?" then
-- Plural is unknown
insert(data.categories, langname .. " " .. category_plpos .. " with unknown or uncertain plurals")
elseif mode == "!" then
-- Plural is not attested
insert(data.inflections, {label = "plural not attested"})
insert(data.categories, langname .. " " .. category_plpos .. " with unattested plurals")
if plurals[1] then
error("Can't specify any plurals along with unattested plural code '!'")
end
elseif mode == "-" then
-- Uncountable noun; may occasionally have a plural
insert(data.categories, langname .. " uncountable " .. category_plpos)
-- If plural forms were given explicitly, then show "usually"
if plurals[1] then
insert(data.inflections, {label = "usually " .. glossary_link("uncountable")})
insert(data.categories, ("%s %s"):format(langname, m_sinhala.sinhala("countable " .. category_plpos)))
else
insert(data.inflections, {label = glossary_link("uncountable")})
end
else
-- Countable or mixed countable/uncountable
if not plurals[1] and not is_proper then
plurals[1] = {term = "+"}
end
if mode == "~" then
-- Mixed countable/uncountable noun, always has a plural
insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")})
insert(data.categories, langname .. " uncountable " .. category_plpos)
insert(data.categories, ("%s %s"):format(langname, m_sinhala.sinhala("countable " .. category_plpos)))
elseif plurals[1] then
-- Countable nouns
insert(data.categories, ("%s %s"):format(langname, m_sinhala.sinhala("countable " .. category_plpos)))
else
-- Uncountable nouns
insert(data.categories, langname .. " uncountable " .. category_plpos)
end
end
-- Gather plurals, handling requests for default plurals.
local has_default_or_hash = false
for _, pl in ipairs(plurals) do
if pl.term:find("^%+") or pl.term:find("#") then
has_default_or_hash = true
break
end
end
if has_default_or_hash then
local newpls = {}
for _, pl in ipairs(plurals) do
if pl.term == "+" then
local default_pls = com.make_plural(lemma, gender_for_make_plural)
insert_defpls(default_pls, pl, newpls)
elseif pl.term:find("^%+") then
pl.term = require(romut_module).get_special_indicator(pl.term)
local default_pls = com.make_plural(lemma, gender_for_make_plural, pl.term)
insert_defpls(default_pls, pl, newpls)
else
pl.term = replace_hash_with_lemma(pl.term, lemma)
insert(newpls, pl)
end
end
plurals = newpls
end
end
if #plurals > 1 then
insert(data.categories, langname .. " " .. category_plpos .. " with multiple plurals")
end
-- Gather masculines/feminines. For each one, generate the corresponding plural(s). `field` is the name of the
-- field containing the masculine or feminine forms (normally "m" or "f"); `gender` is "m" or "f" for the gender
-- of the forms; `inflect` is a function of one or two arguments to generate the default masculine or feminine from
-- the lemma (the arguments are the lemma and optionally a "special" flag to indicate how to handle multiword
-- lemmas, and the function is normally make_feminine or make_masculine from [[Module:es-common]]); and
-- `default_plurals` is a list into which the corresponding default plurals of the gathered or generated masculine
-- or feminine forms are stored. Note that there may be more default plurals than masculines or feminines, because
-- some terms have multiple possible plurals.
local function handle_mf(field, gender, inflect, default_plurals)
local mfs = m_headword_utilities.parse_term_list_with_modifiers {
paramname = field,
forms = args[field],
splitchar = ",",
frob = function(term)
if term == "+" then
-- Generate default masculine/feminine.
term = inflect(lemma)
else
term = replace_hash_with_lemma(term, lemma)
end
local special = require(romut_module).get_special_indicator(term)
if special then
term = inflect(lemma, special)
end
return term
end
}
for _, mf in ipairs(mfs) do
local mfpls = com.make_plural(mf.term, gender, special)
if mfpls then
for _, mfpl in ipairs(mfpls) do
local plobj = m_table.shallowCopy(mf)
plobj.term = mfpl
-- Add an accelerator for each masculine/feminine plural whose lemma
-- is the corresponding singular, so that the accelerated entry
-- that is generated has a definition that looks like
-- # {{plural of|es|MFSING}}
plobj.accel = {form = "p", lemma = mf.term}
insert(default_plurals, plobj)
end
end
end
return mfs
end
local feminine_plurals = {}
local feminines = handle_mf("f", "f", com.make_feminine, feminine_plurals)
local masculine_plurals = {}
local masculines = handle_mf("m", "m", com.make_masculine, masculine_plurals)
local function handle_mf_plural(mfplfield, gender, default_plurals, singulars)
local mfpl = m_headword_utilities.parse_term_list_with_modifiers {
paramname = mfplfield,
forms = args[mfplfield],
splitchar = ",",
}
local new_mfpls = {}
local saw_plus
for i, mfpl in ipairs(mfpl) do
local accel
if #mfpl == #singulars then
-- If same number of overriding masculine/feminine plurals as singulars,
-- assume each plural goes with the corresponding singular
-- and use each corresponding singular as the lemma in the accelerator.
-- The generated entry will have # {{plural of|es|SINGULAR}} as the
-- definition.
accel = {form = "p", lemma = singulars[i].term}
else
accel = nil
end
if mfpl.term == "+" then
-- We should never see + twice. If we do, it will lead to problems since we overwrite the values of
-- default_plurals the first time around.
if saw_plus then
error(("Saw + twice when handling %s="):format(mfplfield))
end
saw_plus = true
for _, defpl in ipairs(default_plurals) do
-- defpl is already a table and has an accel field
m_headword_utilities.combine_termobj_qualifiers_labels(defpl, mfpl)
insert(new_mfpls, defpl)
end
elseif mfpl.term:find("^%+") then
mfpl.term = require(romut_module).get_special_indicator(mfpl.term)
for _, mf in ipairs(singulars) do
local default_mfpls = com.make_plural(mf.term, gender, mfpl.term)
for _, defp in ipairs(default_mfpls) do
local mfplobj = m_table.shallowCopy(mfpl)
mfplobj.term = defp
mfplobj.accel = accel
m_headword_utilities.combine_termobj_qualifiers_labels(mfplobj, mf)
insert(new_mfpls, mfplobj)
end
end
else
mfpl.accel = accel
mfpl.term = replace_hash_with_lemma(mfpl.term, lemma)
insert(new_mfpls, mfpl)
end
end
return new_mfpls
end
if args.fpl[1] then
-- Override any existing feminine plurals.
feminine_plurals = handle_mf_plural("fpl", "f", feminine_plurals, feminines)
end
if args.mpl[1] then
-- Override any existing masculine plurals.
masculine_plurals = handle_mf_plural("mpl", "m", masculine_plurals, masculines)
end
local function parse_and_insert_noun_inflection(field, label, accel)
parse_and_insert_inflection(data, args, field, label, accel)
end
local function insert_noun_inflection(terms, label, accel)
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = label,
accel = accel and {form = accel} or nil,
}
end
insert_noun_inflection(plurals, "plural", "p")
insert_noun_inflection(feminines, "feminine", "f")
insert_noun_inflection(feminine_plurals, "feminine plural")
insert_noun_inflection(masculines, "masculine")
insert_noun_inflection(masculine_plurals, "masculine plural")
parse_and_insert_noun_inflection("dim", "diminutive")
parse_and_insert_noun_inflection("aug", "augmentative")
parse_and_insert_noun_inflection("pej", "pejorative")
parse_and_insert_noun_inflection("dem", "demonym")
parse_and_insert_noun_inflection("fdem", "female demonym")
-- Maybe add category 'Spanish nouns with irregular gender' (or similar)
local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word
if (rfind(irreg_gender_lemma, "o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or
(irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then
insert(data.categories, langname .. " nouns with irregular gender")
end
end
local function get_noun_params(is_proper)
return {
[1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders",
flatten = true}, -- gender(s)
[2] = {list = "pl", disallow_holes = true}, --plural override(s)
["f"] = list_param, --feminine form(s)
["m"] = list_param, --masculine form(s)
["fpl"] = list_param, --feminine plural override(s)
["mpl"] = list_param, --masculine plural override(s)
["dim"] = list_param, --diminutive(s)
["aug"] = list_param, --diminutive(s)
["pej"] = list_param, --pejorative(s)
["dem"] = list_param, --demonym(s)
["fdem"] = list_param, --female demonym(s)
}
end
pos_functions["nouns"] = {
params = get_noun_params(),
func = do_noun,
}
pos_functions["proper nouns"] = {
params = get_noun_params("is proper"),
func = function(args, data)
do_noun(args, data, "is proper")
end,
}
-----------------------------------------------------------------------------------------
-- Verbs --
-----------------------------------------------------------------------------------------
pos_functions["verbs"] = {
params = {
[1] = {},
["pres"] = list_param, --present
["pres_qual"] = {list = "pres\1_qual", allow_holes = true},
["pret"] = list_param, --preterite
["pret_qual"] = {list = "pret\1_qual", allow_holes = true},
["part"] = list_param, --participle
["part_qual"] = {list = "part\1_qual", allow_holes = true},
["pagename"] = {}, -- for testing
["noautolinktext"] = boolean_param,
["noautolinkverb"] = boolean_param,
["attn"] = boolean_param,
},
func = function(args, data)
local preses, prets, parts
if args.attn then
insert(data.categories, "Requests for attention concerning " .. langname)
return
end
local es_verb = require(es_verb_module)
local alternant_multiword_spec = es_verb.do_generate_forms(args, "es-verb", data.heads[1])
local specforms = alternant_multiword_spec.forms
local function slot_exists(slot)
return specforms[slot] and specforms[slot][1]
end
local function do_finite(slot_tense, label_tense)
-- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs);
-- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]).
local has_1s = slot_exists(slot_tense .. "_1s")
local has_3s = slot_exists(slot_tense .. "_3s")
local has_3p = slot_exists(slot_tense .. "_3p")
if has_1s or (not has_3s and not has_3p) then
return {
slot = slot_tense .. "_1s",
label = ("first-person singular %s"):format(label_tense),
}
elseif has_3s then
return {
slot = slot_tense .. "_3s",
label = ("third-person singular %s"):format(label_tense),
}
else
return {
slot = slot_tense .. "_3p",
label = ("third-person plural %s"):format(label_tense),
}
end
end
preses = do_finite("pres", "present")
prets = do_finite("pret", "preterite")
parts = {
slot = "pp_ms",
label = "past participle",
}
if args.pres[1] or args.pret[1] or args.part[1] then
track("verb-old-multiarg")
end
local function strip_brackets(qualifiers)
if not qualifiers then
return nil
end
local stripped_qualifiers = {}
for _, qualifier in ipairs(qualifiers) do
local stripped_qualifier = qualifier:match("^%[(.*)%]$")
if not stripped_qualifier then
error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier)
end
insert(stripped_qualifiers, stripped_qualifier)
end
return stripped_qualifiers
end
local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty)
local forms
local to_insert
if #args == 0 then
forms = specforms[slot_desc.slot]
if not forms or #forms == 0 then
if skip_if_empty then
return
end
forms = {{form = "-"}}
end
elseif #args == 1 and args[1] == "-" then
forms = {{form = "-"}}
else
forms = {}
for i, arg in ipairs(args) do
local qual = qualifiers[i]
if qual then
-- FIXME: It's annoying we have to add brackets and strip them out later. The inflection
-- code adds all footnotes with brackets around them; we should change this.
qual = {"[" .. qual .. "]"}
end
local form = arg
if not args.noautolinkverb then
-- [[Module:inflection utilities]] already loaded by [[Module:es-verb]]
form = require(inflection_utilities_module).add_links(form)
end
insert(forms, {form = form, footnotes = qual})
end
end
if forms[1].form == "-" then
to_insert = {label = "no " .. slot_desc.label}
else
local into_table = {label = slot_desc.label}
for _, form in ipairs(forms) do
local qualifiers = strip_brackets(form.footnotes)
-- Strip redundant brackets surrounding entire form. These may get generated e.g.
-- if we use the angle bracket notation with a single word.
local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form
-- Don't include accelerators if brackets remain in form, as the result will be wrong.
-- FIXME: For now, don't include accelerators. We should use {{es-verb form of}} instead.
-- local this_accel = not stripped_form:find("%[%[") and accel or nil
local this_accel = nil
insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel})
end
to_insert = into_table
end
insert(data.inflections, to_insert)
end
local skip_pres_if_empty
if alternant_multiword_spec.no_pres1_and_sub then
insert(data.inflections, {label = "no first-person singular present"})
insert(data.inflections, {label = "no present subjunctive"})
end
if alternant_multiword_spec.no_pres_stressed then
insert(data.inflections, {label = "no stressed present indicative or subjunctive"})
skip_pres_if_empty = true
end
if alternant_multiword_spec.only3s then
insert(data.inflections, {label = glossary_link("impersonal")})
elseif alternant_multiword_spec.only3sp then
insert(data.inflections, {label = "third-person only"})
elseif alternant_multiword_spec.only3p then
insert(data.inflections, {label = "third-person plural only"})
end
do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty)
do_verb_form(args.pret, args.pret_qual, prets)
do_verb_form(args.part, args.part_qual, parts)
-- Add categories.
for _, cat in ipairs(alternant_multiword_spec.categories) do
insert(data.categories, cat)
end
-- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to
-- incorporate any links in that head into the 1= specification, use the infinitive generated by
-- [[Module:es-verb]] in place of the user-specified or auto-generated head. This was copied from
-- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on
-- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the
-- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian
-- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Spanish equivalent).
if #data.user_specified_heads == 0 or (
#data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma
) then
data.heads = {}
for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do
local quals, refs = require(inflection_utilities_module).
convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes)
insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs})
end
end
end
}
-----------------------------------------------------------------------------------------
-- Phrases --
-----------------------------------------------------------------------------------------
pos_functions["phrases"] = {
params = {
["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true},
["m"] = list_param,
["f"] = list_param,
},
func = function(args, data)
validate_genders(args.g)
data.genders = args.g
parse_and_insert_inflection(data, args, "m", "masculine")
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
-----------------------------------------------------------------------------------------
-- Suffix forms --
-----------------------------------------------------------------------------------------
pos_functions["suffix forms"] = {
params = {
[1] = {required = true, list = true, disallow_holes = true},
["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true},
},
func = function(args, data)
validate_genders(args.g)
data.genders = args.g
local suffix_type = {}
for _, typ in ipairs(args[1]) do
insert(suffix_type, typ .. "-forming suffix")
end
insert(data.inflections, {label = "non-lemma form of " .. require("Module:table").serialCommaJoin(suffix_type, {conj = "or"})})
end,
}
return export
g4tzkwevar450fcrmnqisvmwd5uj1i2
වික්ෂනරි:Requested entries (සිංහල)
4
11435
234928
37168
2026-05-26T06:57:52Z
Lee
19
234928
wikitext
text/x-wiki
{{shortcut|WT:RE:si}}
{{requested entries preamble|si|genders=yes|inflected=yes|scriptname=සිංහල}}
===Requests===
==අ==
* {{l|si|අඩුව}} Noun: lack, deficiency. From {{l|si|අඩු}} Adj: less, deficient, lower.
==ආ==
==ඇ==
==ඈ==
==ඉ==
==ඊ==
==උ==
==ඌ==
==ඍ==
==ඎ==
==එ==
*[[එරබදු]] - a tree
==ඒ==
==ඓ==
==ඔ==
==ඕ==
==ඖ==
==ක==
==ඛ==
==ග==
==ඝ==
==ඞ==
==ඟ==
==ච==
==ඡ==
==ජ==
==ඣ==
==ඤ==
==ඥ==
==ඦ==
==ට==
==ඨ==
==ඩ==
==ඪ==
==ණ==
==ඬ==
==ත==
==ථ==
==ද==
==ධ==
==න==
==ඳ==
==ප==
* {{l|si|පවතිනවා}} Verb (infinitive): To last
==ඵ==
==බ==
==භ==
==ම==
==ඹ==
==ය==
==ර==
==ල==
==ව==
==ශ==
==ෂ==
==ස==
==හ==
==ළ==
==ෆ==
[[de:Wiktionary:Singhalesisch/Wunschliste]]
[[en:Wiktionary:Requested entries (Sinhalese)]]
do30f21ked3lq0yi71r7rshwfy7504m
234929
234928
2026-05-26T06:58:12Z
Lee
19
Lee විසින් [[වික්ෂනරි:Requested entries (Sinhalese)]] සිට [[වික්ෂනරි:Requested entries (සිංහල)]] වෙත පිටුව ගෙන යන ලදී
234928
wikitext
text/x-wiki
{{shortcut|WT:RE:si}}
{{requested entries preamble|si|genders=yes|inflected=yes|scriptname=සිංහල}}
===Requests===
==අ==
* {{l|si|අඩුව}} Noun: lack, deficiency. From {{l|si|අඩු}} Adj: less, deficient, lower.
==ආ==
==ඇ==
==ඈ==
==ඉ==
==ඊ==
==උ==
==ඌ==
==ඍ==
==ඎ==
==එ==
*[[එරබදු]] - a tree
==ඒ==
==ඓ==
==ඔ==
==ඕ==
==ඖ==
==ක==
==ඛ==
==ග==
==ඝ==
==ඞ==
==ඟ==
==ච==
==ඡ==
==ජ==
==ඣ==
==ඤ==
==ඥ==
==ඦ==
==ට==
==ඨ==
==ඩ==
==ඪ==
==ණ==
==ඬ==
==ත==
==ථ==
==ද==
==ධ==
==න==
==ඳ==
==ප==
* {{l|si|පවතිනවා}} Verb (infinitive): To last
==ඵ==
==බ==
==භ==
==ම==
==ඹ==
==ය==
==ර==
==ල==
==ව==
==ශ==
==ෂ==
==ස==
==හ==
==ළ==
==ෆ==
[[de:Wiktionary:Singhalesisch/Wunschliste]]
[[en:Wiktionary:Requested entries (Sinhalese)]]
do30f21ked3lq0yi71r7rshwfy7504m
celsius
0
15554
234916
49136
2026-05-25T13:40:02Z
Lee
19
/* නාම විශේෂණ පදය */
234916
wikitext
text/x-wiki
{{also|Celsius|célsius}}
== ඉංග්රීසි ==
=== නාම විශේෂණ පදය ===
{{en-adj|-}}
# {{alternative case form of|en|Celsius}}
#* {{quote-journal|en|date=2009 January 13|newsagency=AAP|title=Enviro-friendly fridges|journal=Herald-Sun|url=http://www.news.com.au/heraldsun/story/0,21985,24906791-662,00.html|passage=Fridges switch themselves on and off regularly as they keep their temperature between 2 and 4 degrees '''celsius'''.|access-date=19 January 2009|archiveurl=https://web.archive.org/web/20090909062204/http://www.news.com.au/heraldsun/story/0,21985,24906791-662,00.html|archivedate=9 September 2009}}
===Anagrams===
* {{anagrams|en|a=ceilssu|sluices}}
== ෆින්ලන්ත ==
=== නිරුක්තිය ===
See {{m|fi|Celsius}}; named after {{w|Anders Celsius}} (27 November 1701 – 25 April 1744), a Swedish astronomer, physicist and mathematician.
=== උච්චාරණය ===
{{fi-p|selssius|h=cel.si.us|r=elsːius}}
=== නාම පදය ===
{{fi-noun}}
# {{lb|fi|as modifier in compound terms}} [[Celsius]]
#: {{ux|fi|Lämpötila on 10 '''celsius'''astetta.|The temperature is 10 degrees '''Celsius'''.}}
# {{lb|fi|nonstandard}} [[Celsius]] {{gloss|relating to the Celsius scale of temperature}}
#: {{ux|fi|Lämpötila on 10 astetta '''celsiusta'''.|The temperature is 10 degrees '''Celsius'''.}}
==== වරනැඟීම ====
{{fi-decl-vastaus|celsiu|a}}
====Compounds====
* {{l|fi|celsiusaste}}
* {{l|fi|celsiusasteikko}}
== ලතින් ==
=== නාම විශේෂණ පදය ===
{{head|la|adjective form}}
# {{inflection of|la|celsior||nom//acc//voc|n|s}}
== ස්පාඤ්ඤ ==
=== නාම පදය ===
{{es-noun|m|-}}
# {{alternative form of|es|Celsius}}
27ajpv2vc6367mfa5dsbqzpx6kwoa9v
Module:wuu-pron
828
31818
234940
219958
2026-02-11T13:46:56Z
en>沈澄心
0
+Fuyang
234940
Scribunto
text/plain
local export = {}
local data = mw.loadData("Module:wuu-pron/data")
--[=[
TODO:
- do IPA for glottalised nasal intials (currently the glottal stop is dropped)
- FIND DATA FOR 3+ SYLLABLE SANDHI AND RPS!!! (we can settle for trisyllabics right)
- northern wu data: FIRST PRIORITY should be
- CHUANSHA 川沙 (sandhi found in 當代, needs. understanding)
- NEW KUNSHAN 崑山新派 (trisyllabic sandhi needed)
- HUZHOU 湖州 (trisyllabic sandhi needed)
- XIAOSHAN 蕭山 (大西博子 source doesn't exactly line up with wugniu 市志)
- CIXI 慈溪 (慈溪方言研究 PDF exists but currently unretrieved, please inform @ND381 if a working PDF is in your possession ASAP!! zia-zia)
- any other northern wu points are good!! pls note the source u used in the EDIT SUMMARY if u do add one zia-zia
- MODULES for TAIZHOU & WENZHOU
→ and then we're done (probably)
]=]--
local loc_names = { -- Basic 聲韻調 Disyll LPS Trisyll LPS Quad+ LPS RPS Logic
--NORTHERN
['sh'] = 'Shanghai', -- + + + + + +
['jd'] = 'Jiading', -- + + + - - +
['sj'] = 'Songjiang', -- + + + - - +
['cs'] = 'Chuansha', -- + + + - - -
['cm'] = 'Chongming', -- + + + - + +
['sz'] = 'Suzhou', -- + + + + + +
['ks'] = 'Kunshan', -- + + - - - - Wugniu "新派"
['yx'] = 'Yixing', -- + - - - - -
['cz'] = 'Changzhou', -- + + + - - +
['jj'] = 'Jingjiang', -- + + - - - -
['jx'] = 'Jiaxing', -- + + + - - +
['tx'] = 'Tongxiang', -- + + + - - +
['hn'] = 'Haining', -- + + + - + + Xiashi locality
['hy'] = 'Haiyan', -- + + + - - +
['dq'] = 'Deqing', -- + - - - - -
['hz'] = 'Hangzhou', -- + + + + + +
['xs'] = 'Xiaoshan', -- + - - - - -
['fy'] = 'Fuyang', -- + + - - + -
['sx'] = 'Shaoxing', -- + + + - + +
['cx'] = 'Cixi', -- + + - - - -
['nb'] = 'Ningbo', -- + + + - + +
['zs'] = 'Zhoushan', -- + - - - - -
-- Jinhua + + + + + +
-- TAIZHOU
-- Huangyan + + - - -
-- Linhai + + - - -
-- Sanmen + - - - -
-- Tiantai +/- + - - -
-- Wenling + + - - -
-- Wenzhou need to reconcile differences between sources
}
-- default to "<loc_name> dialect" if empty
-- specifies the name of the Wikipedia article of the lect
local wiki_names = {
jd = 'Shanghainese#Classification',
sj = 'Shanghainese#Classification',
cs = 'Shanghainese#Classification',
yx = 'Taihu Wu',
jj = 'Taihu Wu',
jx = 'Taihu Wu',
tx = 'Taihu Wu',
hn = 'Taihu Wu',
hy = 'Taihu Wu',
dq = 'Taihu Wu',
xs = 'Taihu Wu',
fy = 'Taihu Wu',
cx = 'Taihu Wu',
zs = 'Taihu Wu',
}
local minidict = {
['sh'] = true,
['jd'] = true,
['cm'] = true,
['sz'] = true,
['cz'] = true,
['jx'] = true,
['hz'] = true,
['sx'] = true,
['nb'] = true
}
local order = {'sh', 'jd', 'sj', 'cm', 'cs', 'sz', 'ks', 'yx', 'cz', 'jj', 'jx', 'tx', 'hn', 'hy', 'dq', 'hz', 'xs', 'fy', 'sx', 'cx', 'nb', 'zs'}
local ipa_initial = {
["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l",
["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ",
["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ",
["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ",
[""] = "",
}
local ipa_initial_override = {
--this always takes priority over the table above
--additional unique initials can also be defined here
--a question mark means the initial does not exist
--there must be empty tables for all locations, even if there is nothing there
['sh'] = {
["dz"] = "?"
},
['jd'] = {
["dz"] = "?", ["zh"] = "?"
},
['sj'] = {
["p"] = "ɓ", ["t"] = "ɗ",
["f"] = "ɸ", ["v"] = "β",
["ch"] = "cʰ", ["c"] = "c", ["j"] = "ɟ", ["sh"] = "ç",
["zh"] = "?", ["dz"] = "?"
},
['cm'] = {
["v"] = "fv", ["z"] = "sz", ["zh"] = "ɕʑ", ["gh"] = "hɦ",
},
['cs'] = {
["p"] = "ɓ", ["t"] = "ɗ",
["f"] = "ɸ", ["v"] = "β",
["dz"] = "?"
},
['sz'] = {
["dz"] = "?", ["zh"] = "?"
},
['ks'] = {
["zh"] = "?", ["h"] = "x"
},
['yx'] = {
},
['cz'] = {
},
['jj'] = {
},
['jx'] = {
['dz'] = "?", ["vh"] = "ʔv"
},
['tx'] = {
},
['hn'] = {
},
['hy'] = {
['dz'] = "?"
},
['dq'] = {
['dz'] = "?"
},
['hz'] = {
["zh"] = "?"
},
['xs'] = {
},
['fy'] = {
},
['sx'] = {
},
['cx'] = {
},
['nb'] = {
},
['zs'] = {
},
}
local function get_initial(initial, loc)
return ipa_initial_override[loc][initial] or ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"')
end
local function get_final(final, loc)
return data.ipa_final[loc][final] or error('Invalid final for ' .. loc .. ' : "' .. final .. '"')
end
local ipa_syllabic = {
["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍",
}
-- diagnose tone error
local function diagnose_tones(word_length, loc, text, tone, tone2, tone3)
-- the cap on number of syllables
local syl_cap = ({sh=5,jd=3,sj=3,cm=3,cs=3,sz=4,ks=2,yx=1,cz=3,jj=2,jx=3,tx=3,hn=3,hy=3,dq=1,hz=5,xs=1,fy=2,cx=2,nb=3,zs=1})[loc]
if syl_cap and word_length > syl_cap then
error(("Maximum %d syllables supported for %s."):format(syl_cap, loc))
end
-- the cap on number of specified tones
local tone_cap = ({sj=3,ks=2,cz=3,jx=3,tx=3,hn=3,hy=2})[loc]
if tone_cap then
local expected = math.min(tone_cap, word_length)
local received = 1 + (tone2 ~= '' and 1 or 0) + (tone3 ~= '' and 1 or 0)
if received ~= expected then
error(('Expected %d tones, but received %d: "%s:%s".'):format(expected, received, loc, text))
end
elseif loc == 'sz' or loc == 'sx' then
-- sz: tone is 7 or 8, but second tone not provided
error("For " .. loc .. ", second tone must be specified.")
end
error(('Incorrect tone notation "%s" for %s. See [[WT:AZH/Wu]].'):format(tone..tone2..tone3, loc))
end
local function tone_superscript(text)
return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'})
end
local function get_tone(text, loc)
local word_length = text:gsub("[^ ]+", ""):len() + 1
local tone, tone2, tone3 = text:match("^(.%u*)%w+ ?(%d?%u?)%w* ?(%d?%u?)")
if loc == "jx" and tone == "3" then
tone = text:find("^3[ptkc]s?h") and "3B" or "3A"
elseif loc == "cm" then
local result = nil
if tone:find("[MP]") then -- Verb + Motion / Verb + Pronoun
if word_length ~= 2 then error("cm: Unsupported word length.") end
result = data.tone_contours[loc][tone] or error("cm: Wrong motion/pronoun format.")
elseif tone:find("R",1,true) then -- Reduplication
local main_tone, redup_type, word, sub_tone = text:match("^(%d)R([VCN])(%l+) (%d)%3$")
main_tone, sub_tone = tonumber(main_tone), tonumber(sub_tone)
local conv_tone = (redup_type == "N" and main_tone%2==0 and word:find("^g?[mnl]") and main_tone-1) or main_tone
if sub_tone ~= conv_tone then error("cm: Wrong reduplication format.") end
result = data.tone_contours[loc]["R"..redup_type..main_tone]
end
if result then
return tone_superscript(result)
end
elseif loc == "sx" and tone:find("^%dA$") then
return tone_superscript(data.tone_contours[loc][tone])
elseif loc == "cs" and word_length == 3 then
tone2 = ""
end
local result = data.tone_contours[loc][word_length..tone..tone2..tone3]
or data.tone_contours[loc][word_length..tone..tone2]
or data.tone_contours[loc][word_length..tone]
if result == nil and loc == "sx" then
local first_tone = {
["1"] = "33", ["2"] = "11", ["3"] = "335", ["4"] = "115", ["5"] = "33", ["6"] = "11", ["7"] = "3", ["8"] = "1"
}
local middle_tone = {
["nc"] = { ["1"] = "55", ["2"] = "55", ["3"] = "55", ["4"] = "55", ["5"] = "33", ["6"] = "11", ["7"] = "55", ["8"] = "55" },
["c"] = { ["1"] = "5", ["2"] = "5", ["3"] = "5", ["4"] = "5", ["5"] = "3", ["6"] = "1", ["7"] = "5", ["8"] = "5" }
}
local last_tone = {
["nc"] = { ["1"] = "52", ["2"] = "52", ["3"] = "52", ["4"] = "52", ["5"] = "33", ["6"] = "11", ["7"] = "52", ["8"] = "52" },
["c"] = { ["1"] = "54", ["2"] = "54", ["3"] = "54", ["4"] = "54", ["5"] = "3", ["6"] = "1", ["7"] = "54", ["8"] = "54" }
}
local first = text:match("^(%d)%w+ ")
local middle = text:gsub("^(%d)%w+ ", ""):gsub(" (%d)%w+$", "")
local last = text:match(" (%d)%w+$")
result = first_tone[first]
local checked = ""
for c in middle:gmatch("(%d)%w+") do
if c:match("[123456]") then
checked = "nc"
elseif c:match("[78]") then
checked = "c"
end
result = result .. " " .. middle_tone[checked][first]
end
if last:match("[123456]") then
checked = "nc"
elseif last:match("[78]") then
checked = "c"
end
result = result .. " " .. last_tone[checked][first]
end
return result and tone_superscript(result) or diagnose_tones(word_length, loc, text, tone, tone2, tone3)
end
local function RPS_tone_determ(word_length, tone, loc)
local result
if word_length == 1 then
result = data.tone_contours[loc][tone .. "s"] or data.tone_contours[loc]['s']
else
result = data.tone_contours[loc]["multiple"]
end
return tone_superscript(result)
end
local function rom_check(text, locs) --this checks wugniu
if text:match("%f[%l']['qx]") or text:match('ny') or text:match('hh') or text:match("h$") then
error('Invalid syllable: ' .. text ..'. Wugniu expected, but another romanisation is being provided.')
end
if text:match('ghi') and locs ~= 'cm' then
error('Invalid initial "ghi". Use "yi" instead.')
end
if text:match('ghu') and locs ~= 'cm' then
error('Invalid initial "ghu". Use "wu" instead.')
end
if text:match('%f[%l]y%f[%L]') then
error('Invalid syllable "y"')
end
if text:match('%f[%l]y[nq]') then
error('Invalid syllable "yn" or "yq"')
end
if text:match('gn[aeou]') then
error('Palatalization expected. Insert an "i" after the "gn".')
end
if text:match('uw') then
error(('Invalid syllable in "%s".'):format(text))
end
if locs:find('cm') and (text:find('ueu') or text:find('uon') or text:find('ui')) then
error('cm: Mutation-only final found.')
end
if locs:find('sh') and text:match('[234]') then
require("Module:debug").track("wuu-pron/sh-tone-234")
--error('sh: Incorrect tone number used.')
end
for syl in text:gmatch("[%d%l%u]+") do
if not syl:match("%d") then
require("Module:debug").track("wuu-pron/no-tone")
if locs ~= "sh" then
require("Module:debug").track("wuu-pron/no-tone-other")
end
end
end
return nil
end
function export.ipa_syl_conv(text, loc, initials, finals, syllabics, i, main_tone, tone)
-- get ipa from tables
local initial, final = text:match("^([td]?[pbmfvtdnlszcjghk][hng]?)(.+)$")
local if_syllabic = syllabics[text]
if loc == 'sx' and text == 'gn' then if_syllabic = "ɲ̩" end
if not initial or if_syllabic then
initial, final = '', text
end
if loc == 'cm' then -- mutation
local mutated_initial = i > 1 and initial == "z" and "z"
local preglottal = ""
if tone ~= "0" and (mutated_initial or initial:find("^g?[mnl]") or initial == "") then
preglottal = (i > 1 or main_tone:find("^[1357]$")) and "ʔ" or "ɦ"
end
return preglottal
.. (mutated_initial or initials(initial,loc))
.. (if_syllabic or finals(final,loc))
end
return initials(initial,loc) .. (if_syllabic or finals(final,loc))
end
function export.wugniu_to_ipa(original_text, loc, initials, finals, syllabics, tones)
local text, conv_text = "", ""
local tone_number = ""
original_text = original_text:gsub(" (%l+)(%d%u?)", ' %2%1')
if loc == 'cm' then
original_text = original_text:gsub("%f[%l]yi?","i"):gsub("%f[%l]wu?","u")
else
original_text = original_text:gsub("%f[%l]yi?","ghi"):gsub("%f[%l]wu?","ghu")
end
local reading = mw.text.split(original_text, ",", true)
local syllable = {}
local syl_tone = {}
for reading_index = 1, #reading, 1 do
local components = mw.text.split(reading[reading_index], "&", true)
for component_index = 1, #components do
local indep_words = mw.text.split(components[component_index], "+", true)
for indep_index = 1, #indep_words do
text = indep_words[indep_index]
tone_number = text:sub(1, 1)
local tone = tones(text, loc)
text = text:gsub("[^ %l]+", "")
local syllable = mw.text.split(text, " ", true)
local syl_tone = mw.text.split(tone, " ", true)
for i = 1, #syllable, 1 do
--RPS
if i == #syllable and indep_words[indep_index + 1] and tone ~= "³³" then
syl_tone[i] = RPS_tone_determ(#syllable, tone_number, loc)
end
syllable[i] = (syllable[i] ~= "" and export.ipa_syl_conv(syllable[i], loc, initials, finals, syllabics, i, tone_number, syl_tone[i]) or "")
.. (syl_tone[i] == "0" and "" or syl_tone[i])
end
indep_words[indep_index] = table.concat(syllable, " ")
end
components[component_index] = table.concat(indep_words, " ")
end
reading[reading_index] = table.concat(components, " ")
end
return table.concat(reading, "/, /")
end
function export.wikt_to_wugniu(text)
require("Module:debug").track("wuu-pron/legacy")
if type(text) == "table" then text = text.args[1] end
return text
--initials
:gsub("'+", {["'"]=""})
:gsub("%f[%l][jqx][jx]?", {j="c", jj="j", q="ch", x="sh", xx="zh"})
:gsub("%f[%l]ny", "gn")
:gsub("%f[%l]hh", "gh")
--vowels
:gsub("un", "uen")
:gsub("yoe", "ioe")
:gsub("y", "iu")
:gsub("aan", "aon")
:gsub("%f[er]r", "y")
--syllabics
:gsub("g?h?mm", "m")
:gsub("g?h?ngg", "ng")
--tones
:gsub("[2-5]", {['2']='5', ['3']='6', ['4']='7', ['5']='8'})
--gh rules
:gsub("ghi", "yi")
:gsub("yi%f[aeou]", "y")
:gsub("ghu", "wu")
:gsub("wu%f[aeo]", "w")
end
local function wugniu_to_wikt(text)
if type(text) == "table" then text = text.args[1] end
--initials
return export.wugniu_format(text
:gsub("%f[%l][cjszg][nh]?", {c="j", ch="q", j="jj", sh="x", zh="xx", gn="ny", gh="hh"})
:gsub("%f[%l]yi?", "hhi")
:gsub("wu?", "hhu")
--vowels
:gsub("y%f[%L]", "r")
:gsub("uen", "un")
:gsub("ioe", "yoe")
:gsub("iu", "y")
:gsub("aon", "aan")
--syllabics
:gsub("%f[%l][mn]g?%f[%L]", {m="mm",n="nn",ng="ngg"})
--initial hh and '
:gsub("([157])([mnl])", "%1'%2")
:gsub("([68])([mn][mng]g?)%f[%L]", "%1hh%2")
--tones
:gsub("[5-8]", {['5']='2', ['6']='3', ['7']='4', ['8']='5'}))
end
--[[學堂拼音 → 錢拼
local function wugniu_to_qian(text)
if type(text) == "table" then text = text.args[1] end
--initials
return export.wugniu_format(text
gn → n
sh zh → x xh
gh w y → hh wh yh
b d g m n l j → bh dh gh mh nh lh jh
ng → nhg
v z → fh sh
ts tsh c ch → z c j q
'mh 'nh 'lh 'nhg → m n l ng
--rimes
q → k
aon on en → ang ong eng
au eu → ao ou
(ae/e split, but no way to do this on enwikt)
word-initial i and u → yi wu (eg. 一 iq → yik)
iuk → yuik
rules regarding the i in iu behaves exactly like the diaresis in Pinyin ü
--syllabics: NO CHANGE: m n ng er → m n ng er
--tones: 5, 6, 7, 8 UNMARKED, 1: APOSTROPHE IN FRONT
天: 'ti, 去 qu, 定 dhin, 不 bek, 日 nik
SPACES between syllables, not dashes
]]
function export.wugniu_format(text, loc)
-- 1a a 1a 1a3 a1 -> ^1a-a-a_1-^1a_3-a_1
-- 1a3-3a5 -> ^1a_3-^3a_5
return text
:gsub("[%- &+,]", {["-"]="", [" "]="-", ["&"]=" ", ["+"]=" ", [","]="; "})
:gsub("(%-?)(%d?%u?)('?%l+)(%d?%u?)", function(dash, tone1, main, tone2)
if dash == '-' and tone2 == '' then
tone1, tone2 = tone2, tone1
end
if tone1 ~= '' then
tone1 = '<sup>' .. tone1 .. '</sup>'
end
if tone2 ~= '' then
tone2 = '<sub>' .. tone2 .. '</sub>'
end
return dash .. tone1 .. main .. tone2
end)
end
local function wikt_format(text)
return export.wugniu_format(text)
end
local function minidict_format(text)
-- 1A3 3B5 3C D3 E -> A^3 B^5 C^3 D^3 E
-- 1A B -> A^1 B
return text
:gsub("-", "")
:gsub("[&+]", " ")
:gsub(",", "; ")
:gsub("0", "")
:gsub("[1-8]?(%l+)([1-8])", '%1<sup>%2</sup>')
:gsub("([1-8])(%l+)", '%2<sup>%1</sup>')
:gsub("%f[%l]([mnlr]%l*)(<sup>[1357]</sup>)", "'%1%2")
:gsub("[1-8]",{
["1"]="平",["2"]="平",
["3"]="上",["4"]="上",
["5"]="去",["6"]="去",
["7"]="入",["8"]="入",
})
end
function export.wugniu_to_minidict(text, loc)
if type(text) == "table" then text = text.args[1] end
text = text:gsub('%f[%l][yw]', {y = 'yi', w = 'wu'})
if loc == 'sx' then
text = text:gsub("[ei]+[nq]",{een="en",en="eon",iq="ieq"})
elseif loc == 'hz' then -- are we dealing with mergers?
text = text:gsub("[aeiu]+q?%f[%L]",{eu="ei",ieu="iu",aq="eq",iaq="ieq",iq="ieq",uaq="ueq"})
elseif loc == 'sz' or loc == 'cz' then
text = text:gsub("%f[%l]yie%f[%L]", "yiie") -- ye > yie
elseif loc == 'nb' then
text = text:gsub("yu%f[nq]", "oe")
elseif loc == 'sh' then
text = text:gsub("ie%f[%L]", "iae")
elseif loc == 'cm' then
text = text:gsub("<sup>→%l+</sup>", "")
elseif loc == 'jd' then
text = text:gsub("ue%f[%L]", "uie")
end
return minidict_format(text
--finals & syllabic
:gsub("iu([nq])", "iui%1")
:gsub("gher", "r")
:gsub("er", "r")
:gsub("q", "h"))
--initials
--Glottal stops? text = text:gsub("", "'")
:gsub("gn", "ny")
:gsub("nyi%f[aeou]", "ny")
:gsub('yi([aeiou])', 'y%1')
:gsub('wu([aeiou])', 'w%1')
end
-- various boilerplates
function export.name_boilerplate(name, wiki)
return '<i>[[w:' .. (wiki or name..' dialect') .. '|' .. name.. ']]</i>'
end
function export.consolas(text)
return '<span class="zhpron-monospace">' .. text .. '</span>'
end
function export.wugniu_boilerplate(text)
return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i></small>: '
.. export.consolas(text)
end
function export.minidict_boilerplate(text)
return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|MiniDict]]</i></small>: '
.. export.consolas(text)
end
function export.wikt_boilerplate(text)
return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wiktionary Romanisation]] (Shanghai)</i></small>: '
.. export.consolas(text)
end
function export.IPA_boilerplate(text, name, wiki)
text = text:gsub("(/?[^ /,]*/[^ /,]*/?)", '<span style="white-space: nowrap;">%1</span>')
return '\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]]'
.. ' (' .. export.name_boilerplate(name, wiki) .. ')</small>: '
.. '<span class="IPA">/' .. text .. '/</span>'
end
local function preprocess_IPA(text, loc)
if loc == 'hz' then
return text:gsub("%f[%l]([td]?[sz]h?u)%f[aeonq]", "%1w")
elseif loc == 'sx' then
return text:gsub("[^,&]+%+[^,&]+", function(chain)
local tone1,mode,word1,tone2,word2 = chain:match("^(%d)([AP]?)(%l+)%+(%d)(%l+)$")
if not tone1 then error("sx: Wrong chain format.") end
if mode == '' then mode = 'O' end
if mode == 'A' then
return tone1..'A'..word1..'&'..tone2..word2
end
return tone1..word1..' '..tone2..mode..word2
end):gsub("#(%d)","%1N")
elseif loc == 'cm' then
return text:gsub("%f[%l]%l+<(%l*)>","%1")
end
return text
end
local function preprocess_wugniu(text, loc)
if loc == 'jx' then
return text:gsub("3[AB]","3")
elseif loc == 'cm' then
return text:gsub("[CMPR][VCN]?","")
:gsub("%f[%l](%l*)<(%l*)>(%l*)(%d?)","%1%3%4<sup>→%2%3</sup>")
elseif loc == 'sx' then
return text:gsub("[#CAP]","")
end
return text
end
local function preprocess_mutation(text, locs)
if locs:find('cm') then
text = text:gsub(" (%d?C?)([vzgd]h?)([%w<>]+)", function(tone, initial, final)
local mutated_initial = ({v="u",zh="",gh=""})[initial]
if mutated_initial == "u" and final:find("^u") then
mutated_initial = ""
elseif initial == "d" and final:find("^i") then
mutated_initial = "l"
end
if final:find("<") or not mutated_initial then
return " "..tone..initial..final
end
return " "..tone..initial.."<"..mutated_initial..">"..final
end)
end
if text:find("<") and locs ~= "cm" then
error("cm: Mutation is incompatible with collapsing.")
end
return text
end
function export.make(text, w_count)
if not text:match(':') then -- assume Shanghainese
text = 'sh:'..text
end
local show = ""
local hide = ""
local roms = {}
local input_seen, duplicated = {}, false
text = mw.text.split(text, ';', true)
local show_name = "<i>[[w:Taihu Wu|Northern]]</i>"
if #text == 1 and text[1]:find("^..:") then -- single locality
local loc = text[1]:sub(1,2)
show_name = export.name_boilerplate(loc_names[loc], wiki_names[loc])
end
for i = 1,#text,1 do
local s = mw.text.split(text[i], ':', true)
if not duplicated then
if input_seen[s[2]] then duplicated = true end
input_seen[s[2]] = true
end
if #s ~= 2 or #s[1] == 0 then
error("Wugniu: prefix is required or too many prefixes")
end
local locs, t = mw.text.split(s[1], ',', true), s[2]
rom_check(t, s[1])
t = preprocess_mutation(t, s[1])
local list = {}
local format_text = t
for _, loc in ipairs(locs) do
if loc_names[loc] then
list[loc] = true
else
error('Wugniu: prefix "' .. loc .. '" is not recognized')
end
format_text = preprocess_wugniu(format_text, loc)
end
local wugniu_text = export.wugniu_format(format_text, locs[1])
table.insert(roms,wugniu_text)
local names = {}
local minidicts = {}
local minidicts_seen = {}
local IPAs = {}
for _, loc in ipairs(order) do if list[loc] then
table.insert(names, export.name_boilerplate(loc_names[loc], wiki_names[loc]))
if minidict[loc] then
local minidict_result = export.wugniu_to_minidict(format_text, loc)
if not minidicts_seen[minidict_result] then
table.insert(minidicts, minidict_result)
minidicts_seen[minidict_result] = true
end
end
local ipa_text = preprocess_IPA(t, loc)
ipa_text = export.wugniu_to_ipa(ipa_text, loc, get_initial, get_final, ipa_syllabic, get_tone)
table.insert(IPAs,export.IPA_boilerplate(ipa_text, loc_names[loc], wiki_names[loc]))
end end
hide = hide .. '\n** <small>(<i>[[w:Taihu Wu|Northern]]</i>: ' .. table.concat(names,', ') .. ')</small>'
hide = hide .. export.wugniu_boilerplate(wugniu_text)
for _,minidict_text in ipairs(minidicts) do
hide = hide .. export.minidict_boilerplate(minidict_text)
end
if list.sh then
hide = hide .. export.wikt_boilerplate(wugniu_to_wikt(format_text))
end
hide = hide .. table.concat(IPAs, '')
end
if not w_count or w_count > 1 then
show = '\n** <small>('..show_name..')</small>: ' .. export.consolas(table.concat(roms, ' / '))
else
show = ' <small>('..show_name..', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>: ' .. export.consolas(table.concat(roms, ' / '))
end
if duplicated then
require("Module:debug").track("wuu-pron/duplicated")
end
return show, hide
end
return export
2eql4v6n9trt1md10pab14d083vq1ve
234941
234940
2026-05-26T07:12:54Z
Lee
19
[[:en:Module:wuu-pron]] වෙතින් එක් සංශෝධනයක්
234940
Scribunto
text/plain
local export = {}
local data = mw.loadData("Module:wuu-pron/data")
--[=[
TODO:
- do IPA for glottalised nasal intials (currently the glottal stop is dropped)
- FIND DATA FOR 3+ SYLLABLE SANDHI AND RPS!!! (we can settle for trisyllabics right)
- northern wu data: FIRST PRIORITY should be
- CHUANSHA 川沙 (sandhi found in 當代, needs. understanding)
- NEW KUNSHAN 崑山新派 (trisyllabic sandhi needed)
- HUZHOU 湖州 (trisyllabic sandhi needed)
- XIAOSHAN 蕭山 (大西博子 source doesn't exactly line up with wugniu 市志)
- CIXI 慈溪 (慈溪方言研究 PDF exists but currently unretrieved, please inform @ND381 if a working PDF is in your possession ASAP!! zia-zia)
- any other northern wu points are good!! pls note the source u used in the EDIT SUMMARY if u do add one zia-zia
- MODULES for TAIZHOU & WENZHOU
→ and then we're done (probably)
]=]--
local loc_names = { -- Basic 聲韻調 Disyll LPS Trisyll LPS Quad+ LPS RPS Logic
--NORTHERN
['sh'] = 'Shanghai', -- + + + + + +
['jd'] = 'Jiading', -- + + + - - +
['sj'] = 'Songjiang', -- + + + - - +
['cs'] = 'Chuansha', -- + + + - - -
['cm'] = 'Chongming', -- + + + - + +
['sz'] = 'Suzhou', -- + + + + + +
['ks'] = 'Kunshan', -- + + - - - - Wugniu "新派"
['yx'] = 'Yixing', -- + - - - - -
['cz'] = 'Changzhou', -- + + + - - +
['jj'] = 'Jingjiang', -- + + - - - -
['jx'] = 'Jiaxing', -- + + + - - +
['tx'] = 'Tongxiang', -- + + + - - +
['hn'] = 'Haining', -- + + + - + + Xiashi locality
['hy'] = 'Haiyan', -- + + + - - +
['dq'] = 'Deqing', -- + - - - - -
['hz'] = 'Hangzhou', -- + + + + + +
['xs'] = 'Xiaoshan', -- + - - - - -
['fy'] = 'Fuyang', -- + + - - + -
['sx'] = 'Shaoxing', -- + + + - + +
['cx'] = 'Cixi', -- + + - - - -
['nb'] = 'Ningbo', -- + + + - + +
['zs'] = 'Zhoushan', -- + - - - - -
-- Jinhua + + + + + +
-- TAIZHOU
-- Huangyan + + - - -
-- Linhai + + - - -
-- Sanmen + - - - -
-- Tiantai +/- + - - -
-- Wenling + + - - -
-- Wenzhou need to reconcile differences between sources
}
-- default to "<loc_name> dialect" if empty
-- specifies the name of the Wikipedia article of the lect
local wiki_names = {
jd = 'Shanghainese#Classification',
sj = 'Shanghainese#Classification',
cs = 'Shanghainese#Classification',
yx = 'Taihu Wu',
jj = 'Taihu Wu',
jx = 'Taihu Wu',
tx = 'Taihu Wu',
hn = 'Taihu Wu',
hy = 'Taihu Wu',
dq = 'Taihu Wu',
xs = 'Taihu Wu',
fy = 'Taihu Wu',
cx = 'Taihu Wu',
zs = 'Taihu Wu',
}
local minidict = {
['sh'] = true,
['jd'] = true,
['cm'] = true,
['sz'] = true,
['cz'] = true,
['jx'] = true,
['hz'] = true,
['sx'] = true,
['nb'] = true
}
local order = {'sh', 'jd', 'sj', 'cm', 'cs', 'sz', 'ks', 'yx', 'cz', 'jj', 'jx', 'tx', 'hn', 'hy', 'dq', 'hz', 'xs', 'fy', 'sx', 'cx', 'nb', 'zs'}
local ipa_initial = {
["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l",
["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ",
["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ",
["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ",
[""] = "",
}
local ipa_initial_override = {
--this always takes priority over the table above
--additional unique initials can also be defined here
--a question mark means the initial does not exist
--there must be empty tables for all locations, even if there is nothing there
['sh'] = {
["dz"] = "?"
},
['jd'] = {
["dz"] = "?", ["zh"] = "?"
},
['sj'] = {
["p"] = "ɓ", ["t"] = "ɗ",
["f"] = "ɸ", ["v"] = "β",
["ch"] = "cʰ", ["c"] = "c", ["j"] = "ɟ", ["sh"] = "ç",
["zh"] = "?", ["dz"] = "?"
},
['cm'] = {
["v"] = "fv", ["z"] = "sz", ["zh"] = "ɕʑ", ["gh"] = "hɦ",
},
['cs'] = {
["p"] = "ɓ", ["t"] = "ɗ",
["f"] = "ɸ", ["v"] = "β",
["dz"] = "?"
},
['sz'] = {
["dz"] = "?", ["zh"] = "?"
},
['ks'] = {
["zh"] = "?", ["h"] = "x"
},
['yx'] = {
},
['cz'] = {
},
['jj'] = {
},
['jx'] = {
['dz'] = "?", ["vh"] = "ʔv"
},
['tx'] = {
},
['hn'] = {
},
['hy'] = {
['dz'] = "?"
},
['dq'] = {
['dz'] = "?"
},
['hz'] = {
["zh"] = "?"
},
['xs'] = {
},
['fy'] = {
},
['sx'] = {
},
['cx'] = {
},
['nb'] = {
},
['zs'] = {
},
}
local function get_initial(initial, loc)
return ipa_initial_override[loc][initial] or ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"')
end
local function get_final(final, loc)
return data.ipa_final[loc][final] or error('Invalid final for ' .. loc .. ' : "' .. final .. '"')
end
local ipa_syllabic = {
["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍",
}
-- diagnose tone error
local function diagnose_tones(word_length, loc, text, tone, tone2, tone3)
-- the cap on number of syllables
local syl_cap = ({sh=5,jd=3,sj=3,cm=3,cs=3,sz=4,ks=2,yx=1,cz=3,jj=2,jx=3,tx=3,hn=3,hy=3,dq=1,hz=5,xs=1,fy=2,cx=2,nb=3,zs=1})[loc]
if syl_cap and word_length > syl_cap then
error(("Maximum %d syllables supported for %s."):format(syl_cap, loc))
end
-- the cap on number of specified tones
local tone_cap = ({sj=3,ks=2,cz=3,jx=3,tx=3,hn=3,hy=2})[loc]
if tone_cap then
local expected = math.min(tone_cap, word_length)
local received = 1 + (tone2 ~= '' and 1 or 0) + (tone3 ~= '' and 1 or 0)
if received ~= expected then
error(('Expected %d tones, but received %d: "%s:%s".'):format(expected, received, loc, text))
end
elseif loc == 'sz' or loc == 'sx' then
-- sz: tone is 7 or 8, but second tone not provided
error("For " .. loc .. ", second tone must be specified.")
end
error(('Incorrect tone notation "%s" for %s. See [[WT:AZH/Wu]].'):format(tone..tone2..tone3, loc))
end
local function tone_superscript(text)
return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'})
end
local function get_tone(text, loc)
local word_length = text:gsub("[^ ]+", ""):len() + 1
local tone, tone2, tone3 = text:match("^(.%u*)%w+ ?(%d?%u?)%w* ?(%d?%u?)")
if loc == "jx" and tone == "3" then
tone = text:find("^3[ptkc]s?h") and "3B" or "3A"
elseif loc == "cm" then
local result = nil
if tone:find("[MP]") then -- Verb + Motion / Verb + Pronoun
if word_length ~= 2 then error("cm: Unsupported word length.") end
result = data.tone_contours[loc][tone] or error("cm: Wrong motion/pronoun format.")
elseif tone:find("R",1,true) then -- Reduplication
local main_tone, redup_type, word, sub_tone = text:match("^(%d)R([VCN])(%l+) (%d)%3$")
main_tone, sub_tone = tonumber(main_tone), tonumber(sub_tone)
local conv_tone = (redup_type == "N" and main_tone%2==0 and word:find("^g?[mnl]") and main_tone-1) or main_tone
if sub_tone ~= conv_tone then error("cm: Wrong reduplication format.") end
result = data.tone_contours[loc]["R"..redup_type..main_tone]
end
if result then
return tone_superscript(result)
end
elseif loc == "sx" and tone:find("^%dA$") then
return tone_superscript(data.tone_contours[loc][tone])
elseif loc == "cs" and word_length == 3 then
tone2 = ""
end
local result = data.tone_contours[loc][word_length..tone..tone2..tone3]
or data.tone_contours[loc][word_length..tone..tone2]
or data.tone_contours[loc][word_length..tone]
if result == nil and loc == "sx" then
local first_tone = {
["1"] = "33", ["2"] = "11", ["3"] = "335", ["4"] = "115", ["5"] = "33", ["6"] = "11", ["7"] = "3", ["8"] = "1"
}
local middle_tone = {
["nc"] = { ["1"] = "55", ["2"] = "55", ["3"] = "55", ["4"] = "55", ["5"] = "33", ["6"] = "11", ["7"] = "55", ["8"] = "55" },
["c"] = { ["1"] = "5", ["2"] = "5", ["3"] = "5", ["4"] = "5", ["5"] = "3", ["6"] = "1", ["7"] = "5", ["8"] = "5" }
}
local last_tone = {
["nc"] = { ["1"] = "52", ["2"] = "52", ["3"] = "52", ["4"] = "52", ["5"] = "33", ["6"] = "11", ["7"] = "52", ["8"] = "52" },
["c"] = { ["1"] = "54", ["2"] = "54", ["3"] = "54", ["4"] = "54", ["5"] = "3", ["6"] = "1", ["7"] = "54", ["8"] = "54" }
}
local first = text:match("^(%d)%w+ ")
local middle = text:gsub("^(%d)%w+ ", ""):gsub(" (%d)%w+$", "")
local last = text:match(" (%d)%w+$")
result = first_tone[first]
local checked = ""
for c in middle:gmatch("(%d)%w+") do
if c:match("[123456]") then
checked = "nc"
elseif c:match("[78]") then
checked = "c"
end
result = result .. " " .. middle_tone[checked][first]
end
if last:match("[123456]") then
checked = "nc"
elseif last:match("[78]") then
checked = "c"
end
result = result .. " " .. last_tone[checked][first]
end
return result and tone_superscript(result) or diagnose_tones(word_length, loc, text, tone, tone2, tone3)
end
local function RPS_tone_determ(word_length, tone, loc)
local result
if word_length == 1 then
result = data.tone_contours[loc][tone .. "s"] or data.tone_contours[loc]['s']
else
result = data.tone_contours[loc]["multiple"]
end
return tone_superscript(result)
end
local function rom_check(text, locs) --this checks wugniu
if text:match("%f[%l']['qx]") or text:match('ny') or text:match('hh') or text:match("h$") then
error('Invalid syllable: ' .. text ..'. Wugniu expected, but another romanisation is being provided.')
end
if text:match('ghi') and locs ~= 'cm' then
error('Invalid initial "ghi". Use "yi" instead.')
end
if text:match('ghu') and locs ~= 'cm' then
error('Invalid initial "ghu". Use "wu" instead.')
end
if text:match('%f[%l]y%f[%L]') then
error('Invalid syllable "y"')
end
if text:match('%f[%l]y[nq]') then
error('Invalid syllable "yn" or "yq"')
end
if text:match('gn[aeou]') then
error('Palatalization expected. Insert an "i" after the "gn".')
end
if text:match('uw') then
error(('Invalid syllable in "%s".'):format(text))
end
if locs:find('cm') and (text:find('ueu') or text:find('uon') or text:find('ui')) then
error('cm: Mutation-only final found.')
end
if locs:find('sh') and text:match('[234]') then
require("Module:debug").track("wuu-pron/sh-tone-234")
--error('sh: Incorrect tone number used.')
end
for syl in text:gmatch("[%d%l%u]+") do
if not syl:match("%d") then
require("Module:debug").track("wuu-pron/no-tone")
if locs ~= "sh" then
require("Module:debug").track("wuu-pron/no-tone-other")
end
end
end
return nil
end
function export.ipa_syl_conv(text, loc, initials, finals, syllabics, i, main_tone, tone)
-- get ipa from tables
local initial, final = text:match("^([td]?[pbmfvtdnlszcjghk][hng]?)(.+)$")
local if_syllabic = syllabics[text]
if loc == 'sx' and text == 'gn' then if_syllabic = "ɲ̩" end
if not initial or if_syllabic then
initial, final = '', text
end
if loc == 'cm' then -- mutation
local mutated_initial = i > 1 and initial == "z" and "z"
local preglottal = ""
if tone ~= "0" and (mutated_initial or initial:find("^g?[mnl]") or initial == "") then
preglottal = (i > 1 or main_tone:find("^[1357]$")) and "ʔ" or "ɦ"
end
return preglottal
.. (mutated_initial or initials(initial,loc))
.. (if_syllabic or finals(final,loc))
end
return initials(initial,loc) .. (if_syllabic or finals(final,loc))
end
function export.wugniu_to_ipa(original_text, loc, initials, finals, syllabics, tones)
local text, conv_text = "", ""
local tone_number = ""
original_text = original_text:gsub(" (%l+)(%d%u?)", ' %2%1')
if loc == 'cm' then
original_text = original_text:gsub("%f[%l]yi?","i"):gsub("%f[%l]wu?","u")
else
original_text = original_text:gsub("%f[%l]yi?","ghi"):gsub("%f[%l]wu?","ghu")
end
local reading = mw.text.split(original_text, ",", true)
local syllable = {}
local syl_tone = {}
for reading_index = 1, #reading, 1 do
local components = mw.text.split(reading[reading_index], "&", true)
for component_index = 1, #components do
local indep_words = mw.text.split(components[component_index], "+", true)
for indep_index = 1, #indep_words do
text = indep_words[indep_index]
tone_number = text:sub(1, 1)
local tone = tones(text, loc)
text = text:gsub("[^ %l]+", "")
local syllable = mw.text.split(text, " ", true)
local syl_tone = mw.text.split(tone, " ", true)
for i = 1, #syllable, 1 do
--RPS
if i == #syllable and indep_words[indep_index + 1] and tone ~= "³³" then
syl_tone[i] = RPS_tone_determ(#syllable, tone_number, loc)
end
syllable[i] = (syllable[i] ~= "" and export.ipa_syl_conv(syllable[i], loc, initials, finals, syllabics, i, tone_number, syl_tone[i]) or "")
.. (syl_tone[i] == "0" and "" or syl_tone[i])
end
indep_words[indep_index] = table.concat(syllable, " ")
end
components[component_index] = table.concat(indep_words, " ")
end
reading[reading_index] = table.concat(components, " ")
end
return table.concat(reading, "/, /")
end
function export.wikt_to_wugniu(text)
require("Module:debug").track("wuu-pron/legacy")
if type(text) == "table" then text = text.args[1] end
return text
--initials
:gsub("'+", {["'"]=""})
:gsub("%f[%l][jqx][jx]?", {j="c", jj="j", q="ch", x="sh", xx="zh"})
:gsub("%f[%l]ny", "gn")
:gsub("%f[%l]hh", "gh")
--vowels
:gsub("un", "uen")
:gsub("yoe", "ioe")
:gsub("y", "iu")
:gsub("aan", "aon")
:gsub("%f[er]r", "y")
--syllabics
:gsub("g?h?mm", "m")
:gsub("g?h?ngg", "ng")
--tones
:gsub("[2-5]", {['2']='5', ['3']='6', ['4']='7', ['5']='8'})
--gh rules
:gsub("ghi", "yi")
:gsub("yi%f[aeou]", "y")
:gsub("ghu", "wu")
:gsub("wu%f[aeo]", "w")
end
local function wugniu_to_wikt(text)
if type(text) == "table" then text = text.args[1] end
--initials
return export.wugniu_format(text
:gsub("%f[%l][cjszg][nh]?", {c="j", ch="q", j="jj", sh="x", zh="xx", gn="ny", gh="hh"})
:gsub("%f[%l]yi?", "hhi")
:gsub("wu?", "hhu")
--vowels
:gsub("y%f[%L]", "r")
:gsub("uen", "un")
:gsub("ioe", "yoe")
:gsub("iu", "y")
:gsub("aon", "aan")
--syllabics
:gsub("%f[%l][mn]g?%f[%L]", {m="mm",n="nn",ng="ngg"})
--initial hh and '
:gsub("([157])([mnl])", "%1'%2")
:gsub("([68])([mn][mng]g?)%f[%L]", "%1hh%2")
--tones
:gsub("[5-8]", {['5']='2', ['6']='3', ['7']='4', ['8']='5'}))
end
--[[學堂拼音 → 錢拼
local function wugniu_to_qian(text)
if type(text) == "table" then text = text.args[1] end
--initials
return export.wugniu_format(text
gn → n
sh zh → x xh
gh w y → hh wh yh
b d g m n l j → bh dh gh mh nh lh jh
ng → nhg
v z → fh sh
ts tsh c ch → z c j q
'mh 'nh 'lh 'nhg → m n l ng
--rimes
q → k
aon on en → ang ong eng
au eu → ao ou
(ae/e split, but no way to do this on enwikt)
word-initial i and u → yi wu (eg. 一 iq → yik)
iuk → yuik
rules regarding the i in iu behaves exactly like the diaresis in Pinyin ü
--syllabics: NO CHANGE: m n ng er → m n ng er
--tones: 5, 6, 7, 8 UNMARKED, 1: APOSTROPHE IN FRONT
天: 'ti, 去 qu, 定 dhin, 不 bek, 日 nik
SPACES between syllables, not dashes
]]
function export.wugniu_format(text, loc)
-- 1a a 1a 1a3 a1 -> ^1a-a-a_1-^1a_3-a_1
-- 1a3-3a5 -> ^1a_3-^3a_5
return text
:gsub("[%- &+,]", {["-"]="", [" "]="-", ["&"]=" ", ["+"]=" ", [","]="; "})
:gsub("(%-?)(%d?%u?)('?%l+)(%d?%u?)", function(dash, tone1, main, tone2)
if dash == '-' and tone2 == '' then
tone1, tone2 = tone2, tone1
end
if tone1 ~= '' then
tone1 = '<sup>' .. tone1 .. '</sup>'
end
if tone2 ~= '' then
tone2 = '<sub>' .. tone2 .. '</sub>'
end
return dash .. tone1 .. main .. tone2
end)
end
local function wikt_format(text)
return export.wugniu_format(text)
end
local function minidict_format(text)
-- 1A3 3B5 3C D3 E -> A^3 B^5 C^3 D^3 E
-- 1A B -> A^1 B
return text
:gsub("-", "")
:gsub("[&+]", " ")
:gsub(",", "; ")
:gsub("0", "")
:gsub("[1-8]?(%l+)([1-8])", '%1<sup>%2</sup>')
:gsub("([1-8])(%l+)", '%2<sup>%1</sup>')
:gsub("%f[%l]([mnlr]%l*)(<sup>[1357]</sup>)", "'%1%2")
:gsub("[1-8]",{
["1"]="平",["2"]="平",
["3"]="上",["4"]="上",
["5"]="去",["6"]="去",
["7"]="入",["8"]="入",
})
end
function export.wugniu_to_minidict(text, loc)
if type(text) == "table" then text = text.args[1] end
text = text:gsub('%f[%l][yw]', {y = 'yi', w = 'wu'})
if loc == 'sx' then
text = text:gsub("[ei]+[nq]",{een="en",en="eon",iq="ieq"})
elseif loc == 'hz' then -- are we dealing with mergers?
text = text:gsub("[aeiu]+q?%f[%L]",{eu="ei",ieu="iu",aq="eq",iaq="ieq",iq="ieq",uaq="ueq"})
elseif loc == 'sz' or loc == 'cz' then
text = text:gsub("%f[%l]yie%f[%L]", "yiie") -- ye > yie
elseif loc == 'nb' then
text = text:gsub("yu%f[nq]", "oe")
elseif loc == 'sh' then
text = text:gsub("ie%f[%L]", "iae")
elseif loc == 'cm' then
text = text:gsub("<sup>→%l+</sup>", "")
elseif loc == 'jd' then
text = text:gsub("ue%f[%L]", "uie")
end
return minidict_format(text
--finals & syllabic
:gsub("iu([nq])", "iui%1")
:gsub("gher", "r")
:gsub("er", "r")
:gsub("q", "h"))
--initials
--Glottal stops? text = text:gsub("", "'")
:gsub("gn", "ny")
:gsub("nyi%f[aeou]", "ny")
:gsub('yi([aeiou])', 'y%1')
:gsub('wu([aeiou])', 'w%1')
end
-- various boilerplates
function export.name_boilerplate(name, wiki)
return '<i>[[w:' .. (wiki or name..' dialect') .. '|' .. name.. ']]</i>'
end
function export.consolas(text)
return '<span class="zhpron-monospace">' .. text .. '</span>'
end
function export.wugniu_boilerplate(text)
return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i></small>: '
.. export.consolas(text)
end
function export.minidict_boilerplate(text)
return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|MiniDict]]</i></small>: '
.. export.consolas(text)
end
function export.wikt_boilerplate(text)
return '\n*** <small><i>[[Wiktionary:About Chinese/Wu|Wiktionary Romanisation]] (Shanghai)</i></small>: '
.. export.consolas(text)
end
function export.IPA_boilerplate(text, name, wiki)
text = text:gsub("(/?[^ /,]*/[^ /,]*/?)", '<span style="white-space: nowrap;">%1</span>')
return '\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]]'
.. ' (' .. export.name_boilerplate(name, wiki) .. ')</small>: '
.. '<span class="IPA">/' .. text .. '/</span>'
end
local function preprocess_IPA(text, loc)
if loc == 'hz' then
return text:gsub("%f[%l]([td]?[sz]h?u)%f[aeonq]", "%1w")
elseif loc == 'sx' then
return text:gsub("[^,&]+%+[^,&]+", function(chain)
local tone1,mode,word1,tone2,word2 = chain:match("^(%d)([AP]?)(%l+)%+(%d)(%l+)$")
if not tone1 then error("sx: Wrong chain format.") end
if mode == '' then mode = 'O' end
if mode == 'A' then
return tone1..'A'..word1..'&'..tone2..word2
end
return tone1..word1..' '..tone2..mode..word2
end):gsub("#(%d)","%1N")
elseif loc == 'cm' then
return text:gsub("%f[%l]%l+<(%l*)>","%1")
end
return text
end
local function preprocess_wugniu(text, loc)
if loc == 'jx' then
return text:gsub("3[AB]","3")
elseif loc == 'cm' then
return text:gsub("[CMPR][VCN]?","")
:gsub("%f[%l](%l*)<(%l*)>(%l*)(%d?)","%1%3%4<sup>→%2%3</sup>")
elseif loc == 'sx' then
return text:gsub("[#CAP]","")
end
return text
end
local function preprocess_mutation(text, locs)
if locs:find('cm') then
text = text:gsub(" (%d?C?)([vzgd]h?)([%w<>]+)", function(tone, initial, final)
local mutated_initial = ({v="u",zh="",gh=""})[initial]
if mutated_initial == "u" and final:find("^u") then
mutated_initial = ""
elseif initial == "d" and final:find("^i") then
mutated_initial = "l"
end
if final:find("<") or not mutated_initial then
return " "..tone..initial..final
end
return " "..tone..initial.."<"..mutated_initial..">"..final
end)
end
if text:find("<") and locs ~= "cm" then
error("cm: Mutation is incompatible with collapsing.")
end
return text
end
function export.make(text, w_count)
if not text:match(':') then -- assume Shanghainese
text = 'sh:'..text
end
local show = ""
local hide = ""
local roms = {}
local input_seen, duplicated = {}, false
text = mw.text.split(text, ';', true)
local show_name = "<i>[[w:Taihu Wu|Northern]]</i>"
if #text == 1 and text[1]:find("^..:") then -- single locality
local loc = text[1]:sub(1,2)
show_name = export.name_boilerplate(loc_names[loc], wiki_names[loc])
end
for i = 1,#text,1 do
local s = mw.text.split(text[i], ':', true)
if not duplicated then
if input_seen[s[2]] then duplicated = true end
input_seen[s[2]] = true
end
if #s ~= 2 or #s[1] == 0 then
error("Wugniu: prefix is required or too many prefixes")
end
local locs, t = mw.text.split(s[1], ',', true), s[2]
rom_check(t, s[1])
t = preprocess_mutation(t, s[1])
local list = {}
local format_text = t
for _, loc in ipairs(locs) do
if loc_names[loc] then
list[loc] = true
else
error('Wugniu: prefix "' .. loc .. '" is not recognized')
end
format_text = preprocess_wugniu(format_text, loc)
end
local wugniu_text = export.wugniu_format(format_text, locs[1])
table.insert(roms,wugniu_text)
local names = {}
local minidicts = {}
local minidicts_seen = {}
local IPAs = {}
for _, loc in ipairs(order) do if list[loc] then
table.insert(names, export.name_boilerplate(loc_names[loc], wiki_names[loc]))
if minidict[loc] then
local minidict_result = export.wugniu_to_minidict(format_text, loc)
if not minidicts_seen[minidict_result] then
table.insert(minidicts, minidict_result)
minidicts_seen[minidict_result] = true
end
end
local ipa_text = preprocess_IPA(t, loc)
ipa_text = export.wugniu_to_ipa(ipa_text, loc, get_initial, get_final, ipa_syllabic, get_tone)
table.insert(IPAs,export.IPA_boilerplate(ipa_text, loc_names[loc], wiki_names[loc]))
end end
hide = hide .. '\n** <small>(<i>[[w:Taihu Wu|Northern]]</i>: ' .. table.concat(names,', ') .. ')</small>'
hide = hide .. export.wugniu_boilerplate(wugniu_text)
for _,minidict_text in ipairs(minidicts) do
hide = hide .. export.minidict_boilerplate(minidict_text)
end
if list.sh then
hide = hide .. export.wikt_boilerplate(wugniu_to_wikt(format_text))
end
hide = hide .. table.concat(IPAs, '')
end
if not w_count or w_count > 1 then
show = '\n** <small>('..show_name..')</small>: ' .. export.consolas(table.concat(roms, ' / '))
else
show = ' <small>('..show_name..', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>: ' .. export.consolas(table.concat(roms, ' / '))
end
if duplicated then
require("Module:debug").track("wuu-pron/duplicated")
end
return show, hide
end
return export
2eql4v6n9trt1md10pab14d083vq1ve
Module:wuu-pron/documentation
828
31822
234948
185489
2025-03-21T19:49:23Z
en>ND381
0
/* a */ (using [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
234948
wikitext
text/x-wiki
Generates IPA based on romanisation for Wu Chinese. See {{temp|zh-pron}}. Rimes and tones found in [[Module:wuu-pron/data]].
{{module cat|zh,wuu}}
===a===
{{zh-pron
|w=jx:5tha ian2
}}
al3qym3fb1kbgmu3phv7u81smhpqd1q
234949
234948
2026-05-26T07:14:57Z
Lee
19
[[:en:Module:wuu-pron/documentation]] වෙතින් එක් සංශෝධනයක්
234948
wikitext
text/x-wiki
Generates IPA based on romanisation for Wu Chinese. See {{temp|zh-pron}}. Rimes and tones found in [[Module:wuu-pron/data]].
{{module cat|zh,wuu}}
===a===
{{zh-pron
|w=jx:5tha ian2
}}
al3qym3fb1kbgmu3phv7u81smhpqd1q
Module:wuu-pron/Jinhua
828
112570
234942
219956
2025-08-10T16:17:12Z
en>Surjection
0
Protected "[[Module:wuu-pron/Jinhua]]": Highly visible template/module ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))
185478
Scribunto
text/plain
--jinhuanese experiemental module (ignore the "Hangzhou" bit)
local w_pron = require("Module:wuu-pron")
local export = {}
local ipa_initial = {
["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l",
["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ",
["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ",
["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ",
[""] = "",
}
--[""] = "",
local ipa_final = {
["oea"] = "ɤa", ["a"] = "ɑ", ["o"] = "o", ["oe"] = "ɤ", ["ou"] = "ɯ", ["ae"] = "ɛ", ["ei"] = "ei", ["au"] = "ɑu", ["eu"] = "eu",
["i"] = "i", ["iaa"] = "ia", ["ia"] = "iɑ", ["ie"] = "ie", ["iei"] = "iɛ", ["iae"] = "iɛ", ["iau"] = "iɑu", ["ieu"] = "iu",
["u"] = "u", ["ua"] = "uɑ", ["uo"] = "uɤ", ["uae"] = "uɛ", ["ui"] = "ui",
["iu"] = "y", ["iua"] = "yɑ", ["ioe"] = "yɤ", ["iuae"] = "yɛ",
["en"] = "əŋ", ["oen"] = "ɤã", ["an"] = "ã", ["aon"] = "ɑŋ", ["on"] = "oŋ",
["in"] = "iŋ", ["ian"] = "iã", ["iaon"] = "iɑŋ", ["ion"] = "ioŋ",
["uen"] = "uəŋ", ["uan"] = "uã", ["uaon"] = "uɑŋ",
["iun"] = "yəŋ", ["iuan"] = "yã", ["iuaon"] = "yɑŋ",
["eq"] = "əʔ", ["oq"] = "oʔ",
["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩",
--Erhua rimes (a priori for now, not seen in the dictionary body at wugniu.com)
["ynn"] = "z̩̃", ["inn"] = "ĩ", ["unn"] = "ũ", ["iunn"] = "ỹ",
["ieunn"] = "iũ", ["oenn"] = "ɤ̃",
["enn"] = "ẽ", ["ienn"] = "iẽ", ["uenn"] = "uẽ", ["iuenn"] = "yẽ",
["aunn"] = "ɔ̃", ["iaunn"] = "iɔ̃", ["onn"] = "õ", ["ionn"] = "iõ"
}
local function get_initial(initial)
return ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"')
end
local function get_final(final)
return ipa_final[final] or error('Invalid final: "' .. final .. '"')
end
local ipa_syllabic = {
["m"] = "m̩", ["ng"] = "ŋ̍",
}
local tone_contours = {
["10"] = "",
["11"] = "334", ["12"] = "313", ["13"] = "535", ["14"] = "535", ["15"] = "55", ["16"] = "14", ["17"] = "44", ["18"] = "212",
["17A"] = "44",
--17A for 一 and only 一 in number sandhi
--sandhi: 當代 pp. 657, etc.
--Word (Phrase) sandhi: 吳語婺州方言研究 pp. 102 onwards.
--disyllabic
["211"] = "33 55", ["212"] = "33 55", ["213"] = "33 535", ["214"] = "33 535", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 44", ["218"] = "33 212",
["221"] = "31 55", ["222"] = "31 14", ["223"] = "33 535", ["224"] = "33 535", ["225"] = "31 55", ["225C"] = "33 55", ["226"] = "31 14", ["227"] = "33 44", ["228"] = "33 212",
["231"] = "55 334", ["232"] = "55 313", ["233"] = "53 535", ["234"] = "53 535", ["235"] = "53 55", ["236"] = "55 14", ["237"] = "53 44", ["238"] = "55 212",
["241"] = "55 334", ["242"] = "55 313", ["243"] = "53 535", ["244"] = "33 535", ["245"] = "53 55", ["246"] = "55 14", ["247"] = "534 44", ["248"] = "55 212", ["24A1"] = "53 55",
["251"] = "33 55", ["252"] = "33 14", ["253"] = "33 535", ["254"] = "33 535", ["255"] = "53 55", ["256"] = "55 14", ["257"] = "33 44", ["258"] = "55 212",
["25A2"] = "33 55", ["25A6"] = "33 55", ["25C1"] = "55 0", ["25C3"] = "53 535", ["25C4"] = "53 535",
["261"] = "53 55", ["262"] = "53 14", ["263"] = "53 535", ["264"] = "33 535", ["265"] = "53 55", ["266"] = "55 14", ["267"] = "53 44", ["268"] = "55 212",
["26A2"] = "33 55", ["26A3"] = "33 55", ["26A5"] = "33 55", ["26A6"] = "33 55", ["26C2"] = "55 0",
["271"] = "44 55", ["272"] = "44 55", ["273"] = "44 535", ["274"] = "44 535", ["275"] = "44 55", ["276"] = "44 14", ["277"] = "44 44", ["278"] = "44 212",
["281"] = "21 55", ["282"] = "21 14", ["283"] = "21 535", ["284"] = "21 535", ["285"] = "21 55", ["286"] = "21 14", ["287"] = "21 44", ["288"] = "21 212",
--trisyllabic word sandhi. not tabulated but vaguely described in above source
["3111"] = "33 33 55", ["3112"] = "33 33 55", ["3113"] = "33 33 535", ["3114"] = "33 33 535", ["3115"] = "33 33 55", ["3116"] = "33 33 55", ["3117"] = "33 33 44", ["3118"] = "33 33 212",
["3121"] = "33 31 55", ["3122"] = "33 31 14", ["3123"] = "33 33 535", ["3124"] = "33 33 535", ["3125"] = "33 31 55", ["3125C"] = "33 33 55", ["3126"] = "33 31 14", ["3127"] = "33 33 44", ["3128"] = "33 33 212",
["3131"] = "33 55 334", ["3132"] = "33 55 313", ["3133"] = "33 53 535", ["3134"] = "33 53 535", ["3135"] = "33 53 55", ["3136"] = "33 55 14", ["3137"] = "33 53 44", ["3138"] = "33 55 212",
["3141"] = "33 55 334", ["3142"] = "33 55 313", ["3143"] = "33 53 535", ["3144"] = "33 33 535", ["3145"] = "33 53 55", ["3146"] = "33 55 14", ["3147"] = "33 53 44", ["3148"] = "33 55 212", ["314A1"] = "33 53 55",
["3151"] = "33 33 55", ["3152"] = "33 33 14", ["3153"] = "33 33 535", ["3154"] = "33 33 535", ["3155"] = "33 53 55", ["3156"] = "33 55 14", ["3157"] = "33 33 44", ["3158"] = "33 55 212",
["315A2"] = "33 33 55", ["315A6"] = "33 33 55", ["315C1"] = "33 55 0", ["315C3"] = "33 53 535", ["315C4"] = "33 53 535",
["3161"] = "33 53 55", ["3162"] = "33 53 14", ["3163"] = "33 53 535", ["3164"] = "33 33 535", ["3165"] = "33 53 55", ["3166"] = "33 55 14", ["3167"] = "33 53 44", ["3168"] = "33 55 212",
["316A2"] = "33 33 55", ["316A3"] = "33 33 55", ["316A5"] = "33 33 55", ["316A6"] = "33 33 55", ["316C2"] = "33 55 0",
["3171"] = "33 44 55", ["3172"] = "33 44 55", ["3173"] = "33 44 535", ["3174"] = "33 44 535", ["3175"] = "33 44 55", ["3176"] = "33 44 14", ["3177"] = "33 44 44", ["3178"] = "33 44 212",
["3181"] = "33 21 55", ["3182"] = "33 21 14", ["3183"] = "33 21 535", ["3184"] = "33 21 535", ["3185"] = "33 21 55", ["3186"] = "33 21 14", ["3187"] = "33 21 44", ["3188"] = "33 21 212",
["3211"] = "33 33 55", ["3212"] = "33 33 55", ["3213"] = "33 33 535", ["3214"] = "33 33 535", ["3215"] = "33 33 55", ["3216"] = "33 33 55", ["3217"] = "33 33 44", ["3218"] = "33 33 212",
["3221"] = "33 31 55", ["3222"] = "33 31 14", ["3223"] = "33 33 535", ["3224"] = "33 33 535", ["3225"] = "33 31 55", ["3225C"] = "33 33 55", ["3226"] = "33 31 14", ["3227"] = "33 33 44", ["3228"] = "33 33 212",
["3231"] = "33 55 334", ["3232"] = "33 55 313", ["3233"] = "33 53 535", ["3234"] = "33 53 535", ["3235"] = "33 53 55", ["3236"] = "33 55 14", ["3237"] = "33 53 44", ["3238"] = "33 55 212",
["3241"] = "33 55 334", ["3242"] = "33 55 313", ["3243"] = "33 53 535", ["3244"] = "33 33 535", ["3245"] = "33 53 55", ["3246"] = "33 55 14", ["3247"] = "33 53 44", ["3248"] = "33 55 212", ["324A1"] = "33 53 55",
["3251"] = "33 33 55", ["3252"] = "33 33 14", ["3253"] = "33 33 535", ["3254"] = "33 33 535", ["3255"] = "33 53 55", ["3256"] = "33 55 14", ["3257"] = "33 33 44", ["3258"] = "33 55 212",
["325A2"] = "33 33 55", ["325A6"] = "33 33 55", ["325C1"] = "33 55 0", ["325C3"] = "33 53 535", ["325C4"] = "33 53 535",
["3261"] = "33 53 55", ["3262"] = "33 53 14", ["3263"] = "33 53 535", ["3264"] = "33 33 535", ["3265"] = "33 53 55", ["3266"] = "33 55 14", ["3267"] = "33 53 44", ["3268"] = "33 55 212",
["326A2"] = "33 33 55", ["326A3"] = "33 33 55", ["326A5"] = "33 33 55", ["326A6"] = "33 33 55", ["326C2"] = "33 55 0",
["3271"] = "33 44 55", ["3272"] = "33 44 55", ["3273"] = "33 44 535", ["3274"] = "33 44 535", ["3275"] = "33 44 55", ["3276"] = "33 44 14", ["3277"] = "33 44 44", ["3278"] = "33 44 212",
["3281"] = "33 21 55", ["3282"] = "33 21 14", ["3283"] = "33 21 535", ["3284"] = "33 21 535", ["3285"] = "33 21 55", ["3286"] = "33 21 14", ["3287"] = "33 21 44", ["3288"] = "33 21 212",
["3311"] = "55 33 55", ["3312"] = "55 33 55", ["3313"] = "55 33 535", ["3314"] = "55 33 535", ["3315"] = "55 33 55", ["3316"] = "55 33 55", ["3317"] = "55 33 44", ["3218"] = "55 33 212",
["3321"] = "55 31 55", ["3322"] = "55 31 14", ["3323"] = "55 33 535", ["3324"] = "55 33 535", ["3325"] = "55 31 55", ["3325C"] = "55 33 55", ["3326"] = "55 31 14", ["3327"] = "55 33 44", ["3328"] = "55 33 212",
["3331"] = "55 55 334", ["3332"] = "55 55 313", ["3333"] = "55 53 535", ["3334"] = "55 53 535", ["3335"] = "55 53 55", ["3336"] = "55 55 14", ["3337"] = "55 53 44", ["3338"] = "55 55 212",
["3341"] = "55 55 334", ["3342"] = "55 55 313", ["3343"] = "55 53 535", ["3344"] = "55 33 535", ["3345"] = "55 53 55", ["3346"] = "55 55 14", ["3347"] = "55 53 44", ["3348"] = "55 55 212", ["334A1"] = "55 53 55",
["3351"] = "55 33 55", ["3352"] = "55 33 14", ["3353"] = "55 33 535", ["3354"] = "55 33 535", ["3355"] = "55 53 55", ["3356"] = "55 55 14", ["3357"] = "55 33 44", ["3358"] = "55 55 212",
["335A2"] = "55 33 55", ["335A6"] = "55 33 55", ["335C1"] = "55 55 0", ["335C3"] = "55 53 535", ["335C4"] = "55 53 535",
["3361"] = "55 53 55", ["3362"] = "55 53 14", ["3363"] = "55 53 535", ["3364"] = "55 33 535", ["3365"] = "55 53 55", ["3366"] = "55 55 14", ["3367"] = "55 53 44", ["3368"] = "55 55 212",
["336A2"] = "55 33 55", ["336A3"] = "55 33 55", ["336A5"] = "55 33 55", ["336A6"] = "55 33 55", ["336C2"] = "55 55 0",
["3371"] = "55 44 55", ["3372"] = "55 44 55", ["3373"] = "55 44 535", ["3374"] = "55 44 535", ["3375"] = "55 44 55", ["3376"] = "55 44 14", ["3377"] = "55 44 44", ["3378"] = "55 44 212",
["3381"] = "55 21 55", ["3382"] = "55 21 14", ["3383"] = "55 21 535", ["3384"] = "55 21 535", ["3385"] = "55 21 55", ["3386"] = "55 21 14", ["3387"] = "55 21 44", ["3388"] = "55 21 212",
["3411"] = "55 33 55", ["3412"] = "55 33 55", ["3413"] = "55 33 535", ["3414"] = "55 33 535", ["3415"] = "55 33 55", ["3416"] = "55 33 55", ["3417"] = "55 33 44", ["3218"] = "55 33 212",
["3421"] = "55 31 55", ["3422"] = "55 31 14", ["3423"] = "55 33 535", ["3424"] = "55 33 535", ["3425"] = "55 31 55", ["3425C"] = "55 33 55", ["3426"] = "55 31 14", ["3427"] = "55 33 44", ["3428"] = "55 33 212",
["3431"] = "55 55 334", ["3432"] = "55 55 313", ["3433"] = "55 53 535", ["3434"] = "55 53 535", ["3435"] = "55 53 55", ["3436"] = "55 55 14", ["3437"] = "55 53 44", ["3438"] = "55 55 212",
["3441"] = "55 55 334", ["3442"] = "55 55 313", ["3443"] = "55 53 535", ["3444"] = "55 33 535", ["3445"] = "55 53 55", ["3446"] = "55 55 14", ["3447"] = "55 53 44", ["3448"] = "55 55 212", ["334A1"] = "55 53 55",
["3451"] = "55 33 55", ["3452"] = "55 33 14", ["3453"] = "55 33 535", ["3454"] = "55 33 535", ["3455"] = "55 53 55", ["3456"] = "55 55 14", ["3457"] = "55 33 44", ["3458"] = "55 55 212",
["345A2"] = "55 33 55", ["345A6"] = "55 33 55", ["345C1"] = "55 55 0", ["345C3"] = "55 53 535", ["345C4"] = "55 53 535",
["3461"] = "55 53 55", ["3462"] = "55 53 14", ["3463"] = "55 53 535", ["3464"] = "55 33 535", ["3465"] = "55 53 55", ["3466"] = "55 55 14", ["3467"] = "55 53 44", ["3468"] = "55 55 212",
["346A2"] = "55 33 55", ["346A3"] = "55 33 55", ["346A5"] = "55 33 55", ["346A6"] = "55 33 55", ["346C2"] = "55 55 0",
["3471"] = "55 44 55", ["3472"] = "55 44 55", ["3473"] = "55 44 535", ["3474"] = "55 44 535", ["3475"] = "55 44 55", ["3476"] = "55 44 14", ["3477"] = "55 44 44", ["3478"] = "55 44 212",
["3481"] = "55 21 55", ["3482"] = "55 21 14", ["3483"] = "55 21 535", ["3484"] = "55 21 535", ["3485"] = "55 21 55", ["3486"] = "55 21 14", ["3487"] = "55 21 44", ["3488"] = "55 21 212",
["3511"] = "33 33 55", ["3512"] = "33 33 55", ["3513"] = "33 33 535", ["3514"] = "33 33 535", ["3515"] = "33 33 55", ["3516"] = "33 33 55", ["3517"] = "33 33 44", ["3218"] = "33 33 212",
["3521"] = "33 31 55", ["3522"] = "33 31 14", ["3523"] = "33 33 535", ["3524"] = "33 33 535", ["3525"] = "33 31 55", ["3525C"] = "33 33 55", ["3526"] = "33 31 14", ["3527"] = "33 33 44", ["3528"] = "33 33 212",
["3531"] = "33 55 334", ["3532"] = "33 55 313", ["3533"] = "33 53 535", ["3534"] = "33 53 535", ["3535"] = "33 53 55", ["3536"] = "33 55 14", ["3537"] = "33 53 44", ["3538"] = "33 55 212",
["3541"] = "33 55 334", ["3542"] = "33 55 313", ["3543"] = "33 53 535", ["3544"] = "33 33 535", ["3545"] = "33 53 55", ["3546"] = "33 55 14", ["3547"] = "33 53 44", ["3548"] = "33 55 212", ["354A1"] = "33 53 55",
["3551"] = "33 33 55", ["3552"] = "33 33 14", ["3553"] = "33 33 535", ["3554"] = "33 33 535", ["3555"] = "33 53 55", ["3556"] = "33 55 14", ["3557"] = "33 33 44", ["3258"] = "33 55 212",
["355A2"] = "33 33 55", ["355A6"] = "33 33 55", ["355C1"] = "33 55 0", ["355C3"] = "33 53 535", ["355C4"] = "33 53 535",
["3561"] = "33 53 55", ["3562"] = "33 53 14", ["3563"] = "33 53 535", ["3564"] = "33 33 535", ["3565"] = "33 53 55", ["3566"] = "33 55 14", ["3567"] = "33 53 44", ["3568"] = "33 55 212",
["356A2"] = "33 33 55", ["356A3"] = "33 33 55", ["356A5"] = "33 33 55", ["356A6"] = "33 33 55", ["356C2"] = "33 55 0",
["3571"] = "33 44 55", ["3572"] = "33 44 55", ["3573"] = "33 44 535", ["3574"] = "33 44 535", ["3575"] = "33 44 55", ["3576"] = "33 44 14", ["3577"] = "33 44 44", ["3578"] = "33 44 212",
["3581"] = "33 21 55", ["3582"] = "33 21 14", ["3583"] = "33 21 535", ["3584"] = "33 21 535", ["3585"] = "33 21 55", ["3586"] = "33 21 14", ["3587"] = "33 21 44", ["3588"] = "33 21 212",
["3611"] = "55 33 55", ["3612"] = "55 33 55", ["3613"] = "55 33 535", ["3614"] = "55 33 535", ["3615"] = "55 33 55", ["3616"] = "55 33 55", ["3617"] = "55 33 44", ["3218"] = "55 33 212",
["3621"] = "55 31 55", ["3622"] = "55 31 14", ["3623"] = "55 33 535", ["3624"] = "55 33 535", ["3625"] = "55 31 55", ["3625C"] = "55 33 55", ["3626"] = "55 31 14", ["3627"] = "55 33 44", ["3628"] = "55 33 212",
["3631"] = "55 55 334", ["3632"] = "55 55 313", ["3633"] = "55 53 535", ["3634"] = "55 53 535", ["3635"] = "55 53 55", ["3636"] = "55 55 14", ["3637"] = "55 53 44", ["3638"] = "55 55 212",
["3641"] = "55 55 334", ["3642"] = "55 55 313", ["3643"] = "55 53 535", ["3644"] = "55 33 535", ["3645"] = "55 53 55", ["3646"] = "55 55 14", ["3647"] = "55 53 44", ["3648"] = "55 55 212", ["364A1"] = "55 53 55",
["3651"] = "55 33 55", ["3652"] = "55 33 14", ["3653"] = "55 33 535", ["3654"] = "55 33 535", ["3655"] = "55 53 55", ["3656"] = "55 55 14", ["3657"] = "55 33 44", ["3658"] = "55 55 212",
["365A2"] = "55 33 55", ["365A6"] = "55 33 55", ["365C1"] = "55 55 0", ["365C3"] = "55 53 535", ["365C4"] = "55 53 535",
["3661"] = "55 53 55", ["3662"] = "55 53 14", ["3663"] = "55 53 535", ["3664"] = "55 33 535", ["3665"] = "55 53 55", ["3666"] = "55 55 14", ["3667"] = "55 53 44", ["3668"] = "55 55 212",
["366A2"] = "55 33 55", ["366A3"] = "55 33 55", ["366A5"] = "55 33 55", ["366A6"] = "55 33 55", ["366C2"] = "55 55 0",
["3671"] = "55 44 55", ["3672"] = "55 44 55", ["3673"] = "55 44 535", ["3674"] = "55 44 535", ["3675"] = "55 44 55", ["3676"] = "55 44 14", ["3677"] = "55 44 44", ["3678"] = "55 44 212",
["3681"] = "55 21 55", ["3682"] = "55 21 14", ["3683"] = "55 21 535", ["3684"] = "55 21 535", ["3685"] = "55 21 55", ["3686"] = "55 21 14", ["3687"] = "55 21 44", ["3688"] = "55 21 212",
--according to p.104: 「陽去在陰去(5)、陽去(6)前有時變[33]」
["36A51"] = "33 33 55", ["36A52"] = "33 33 14", ["36A53"] = "33 33 535", ["36A54"] = "33 33 535", ["36A55"] = "33 53 55", ["36A56"] = "33 55 14", ["36A57"] = "33 33 44", ["36A58"] = "33 55 212",
["36A5A2"] = "33 33 55", ["36A5A6"] = "33 33 55", ["36A5C1"] = "33 55 0", ["36A5C3"] = "33 53 535", ["36A5C4"] = "33 53 535",
["36A61"] = "33 53 55", ["36A62"] = "33 53 14", ["36A63"] = "33 53 535", ["36A64"] = "33 33 535", ["36A65"] = "33 53 55", ["36A66"] = "33 55 14", ["36A67"] = "33 53 44", ["36A68"] = "33 55 212",
["36A6A2"] = "33 33 55", ["36A6A3"] = "33 33 55", ["36A6A5"] = "33 33 55", ["36A6A6"] = "33 33 55", ["36A6C2"] = "33 55 0",
["3711"] = "44 33 55", ["3712"] = "44 33 55", ["3713"] = "44 33 535", ["3714"] = "44 33 535", ["3715"] = "44 33 55", ["3716"] = "44 33 55", ["3717"] = "44 33 44", ["3218"] = "44 33 212",
["3721"] = "44 31 55", ["3722"] = "44 31 14", ["3723"] = "44 33 535", ["3724"] = "44 33 535", ["3725"] = "44 31 55", ["3725C"] = "44 33 55", ["3726"] = "44 31 14", ["3727"] = "44 33 44", ["3728"] = "44 33 212",
["3731"] = "44 44 334", ["3732"] = "44 44 313", ["3733"] = "44 53 535", ["3734"] = "44 53 535", ["3735"] = "44 53 55", ["3736"] = "44 55 14", ["3737"] = "44 53 44", ["3738"] = "44 55 212",
["3741"] = "44 44 334", ["3742"] = "44 44 313", ["3743"] = "44 53 535", ["3744"] = "44 33 535", ["3745"] = "44 53 55", ["3746"] = "44 55 14", ["3747"] = "44 53 44", ["3748"] = "44 55 212", ["374A1"] = "44 53 55",
["3751"] = "44 33 55", ["3752"] = "44 33 14", ["3753"] = "44 33 535", ["3754"] = "44 33 535", ["3755"] = "44 53 55", ["3756"] = "44 55 14", ["3757"] = "44 33 44", ["3758"] = "44 55 212",
["375A2"] = "44 33 55", ["375A6"] = "44 33 55", ["375C1"] = "44 55 0", ["375C3"] = "44 53 535", ["375C4"] = "44 53 535",
["3761"] = "44 53 55", ["3762"] = "44 53 14", ["3763"] = "44 53 535", ["3764"] = "44 33 535", ["3765"] = "44 53 55", ["3766"] = "44 55 14", ["3767"] = "44 53 44", ["3768"] = "44 55 212",
["376A2"] = "44 33 55", ["376A3"] = "44 33 55", ["376A5"] = "44 33 55", ["376A6"] = "44 33 55", ["376C2"] = "44 55 0",
["3771"] = "44 44 55", ["3772"] = "44 44 55", ["3773"] = "44 44 535", ["3774"] = "44 44 535", ["3775"] = "44 44 55", ["3776"] = "44 44 14", ["3777"] = "44 44 44", ["3778"] = "44 44 212",
["3781"] = "44 21 55", ["3782"] = "44 21 14", ["3783"] = "44 21 535", ["3784"] = "44 21 535", ["3785"] = "44 21 55", ["3786"] = "44 21 14", ["3787"] = "44 21 44", ["3788"] = "44 21 212",
["3811"] = "21 33 55", ["3812"] = "21 33 55", ["3813"] = "21 33 535", ["3814"] = "21 33 535", ["3815"] = "21 33 55", ["3816"] = "21 33 55", ["3817"] = "21 33 44", ["3218"] = "21 33 212",
["3821"] = "21 31 55", ["3822"] = "21 31 14", ["3823"] = "21 33 535", ["3824"] = "21 33 535", ["3825"] = "21 31 55", ["3825C"] = "21 33 55", ["3826"] = "21 31 14", ["3827"] = "21 33 44", ["3828"] = "21 33 212",
["3831"] = "21 44 334", ["3832"] = "21 44 313", ["3833"] = "21 53 535", ["3834"] = "21 53 535", ["3835"] = "21 53 55", ["3836"] = "21 55 14", ["3837"] = "21 53 44", ["3838"] = "21 55 212",
["3841"] = "21 44 334", ["3842"] = "21 44 313", ["3843"] = "21 53 535", ["3844"] = "21 33 535", ["3845"] = "21 53 55", ["3846"] = "21 55 14", ["3847"] = "21 53 44", ["3848"] = "21 55 212", ["384A1"] = "21 53 55",
["3851"] = "21 33 55", ["3852"] = "21 33 14", ["3853"] = "21 33 535", ["3854"] = "21 33 535", ["3855"] = "21 53 55", ["3856"] = "21 55 14", ["3857"] = "21 33 44", ["3858"] = "21 55 212",
["385A2"] = "21 33 55", ["385A6"] = "21 33 55", ["385C1"] = "21 55 0", ["385C3"] = "21 53 535", ["385C4"] = "21 53 535",
["3861"] = "21 53 55", ["3862"] = "21 53 14", ["3863"] = "21 53 535", ["3864"] = "21 33 535", ["3865"] = "21 53 55", ["3866"] = "21 55 14", ["3867"] = "21 53 44", ["3868"] = "21 55 212",
["386A2"] = "21 33 55", ["386A3"] = "21 33 55", ["386A5"] = "21 33 55", ["386A6"] = "21 33 55", ["386C2"] = "21 55 0",
["3871"] = "21 44 55", ["3872"] = "21 44 55", ["3873"] = "21 44 535", ["3874"] = "21 44 535", ["3875"] = "21 44 55", ["3876"] = "21 44 14", ["3877"] = "21 4 44", ["3878"] = "21 44 212",
["3881"] = "21 21 55", ["3882"] = "21 21 14", ["3883"] = "21 21 535", ["3884"] = "21 21 535", ["3885"] = "21 21 55", ["3886"] = "21 21 14", ["3887"] = "21 21 44", ["3888"] = "21 21 212",
--PREDICATE-OBJECT SANDHI (述賓式) p. 105
--EACH BLOCK MARKED WITH P AFTER END SYLLABLE FOR NOW. CAN CHANGE LATER ACCORDING TO CODE SPECIFICS
--DISYLLABIC ONLY
["211P"] = "33 334", ["212P"] = "33 313", ["213P"] = "33 535", ["214P"] = "33 535", ["215P"] = "33 55", ["216P"] = "33 14", ["217P"] = "33 44", ["218P"] = "33 212",
["221P"] = "33 334", ["222P"] = "33 313", ["223P"] = "33 535", ["224P"] = "33 535", ["225P"] = "31 55", ["225CP"] = "33 55", ["226P"] = "33 14", ["227P"] = "33 44", ["228P"] = "33 212",
["231P"] = "55 334", ["232P"] = "55 313", ["233P"] = "53 535", ["234P"] = "53 535", ["235P"] = "53 55", ["236P"] = "55 14", ["237P"] = "53 44", ["238P"] = "55 212",
["241P"] = "55 334", ["242P"] = "55 313", ["243P"] = "53 535", ["244P"] = "33 535", ["245P"] = "53 55", ["246P"] = "55 14", ["247P"] = "534 44", ["248P"] = "55 212", ["24A1P"] = "53 55",
["251P"] = "33 334", ["252P"] = "33 313", ["253P"] = "33 535", ["254P"] = "33 535", ["255P"] = "33 55", ["256P"] = "33 14", ["257P"] = "33 44", ["258P"] = "55 212",
["25C1P"] = "55 334", ["25C2P"] = "55 313",
["261P"] = "55 334", ["262P"] = "55 313", ["263P"] = "53 535", ["264P"] = "33 535", ["265P"] = "53 55", ["266P"] = "55 14", ["267P"] = "53 44", ["268P"] = "55 212",
["271P"] = "44 334", ["272P"] = "44 313", ["273P"] = "44 535", ["274P"] = "44 535", ["275P"] = "44 55", ["276P"] = "44 14", ["277P"] = "44 44", ["278P"] = "44 212",
["281P"] = "21 334", ["282P"] = "21 313", ["283P"] = "21 535", ["284P"] = "21 535", ["285P"] = "21 55", ["286P"] = "21 14", ["287P"] = "21 44", ["288P"] = "21 212",
--Also like half of this is basically the same as the word tone sandhi. i've kept most patterns that are identical to the word tone sandhis here in the P table, but if needs be and they end up being redundancies i can remove the duplicate ones (might end up with the input acting up but eh)
--none of the 24x's are different from word tone so that row is directly deleteable if its not gonna be useful
--CLASSIFIER SANDHI (數量式) pp.105-106
--THE ACTUAL NUMBERS THEMSELVES TAKE ON WORD SANDHI
--CITATION TONE OF THE BOUNDARY CHARACTER + CITATION TONE OF CLASSIFIER CHARACTER -> BOTH DETERMINE THE POST-SANDHI VALUE ON THE CLASSIFIER CHARACTER TOGETHER.
--MOST LIKELY WE WILL NEED SOME KIND OF AN ALGORITHM+OPERATOR TO CHECK THE !!!CITATION!!! TONE CATEGORY OF THESE TWO CHARACTERS, BEFORE GETTING FROM THIS DATA TO CALCULATE THE CORRECT POST-SANDHI TONE FOR THE CLASSIFIER.
["11#1"] = "55", ["13#1"] = "55", ["14#1"] = "55", ["15#1"] = "55", ["16#1"] = "55", ["17#1"] = "55", ["18#1"] = "55",
["11#2"] = "55", ["13#2"] = "313", ["14#2"] = "313", ["15#2"] = "313", ["16#2"] = "313", ["17#2"] = "55", ["17A#2"] = "313", ["18#2"] = "313",
["11#3"] = "55", ["13#3"] = "55", ["14#3"] = "55", ["15#3"] = "55", ["16#3"] = "55", ["17#3"] = "55", ["18#3"] = "55",
["11#4"] = "55", ["13#4"] = "14", ["14#4"] = "14", ["15#4"] = "14", ["16#4"] = "14", ["17#4"] = "55", ["17A#4"] = "14", ["18#4"] = "14",
["11#5"] = "55", ["13#5"] = "55", ["14#5"] = "55", ["15#5"] = "55", ["16#5"] = "55", ["17#5"] = "55", ["18#5"] = "55",
["11#6"] = "55", ["13#6"] = "14", ["14#6"] = "14", ["15#6"] = "14", ["16#6"] = "14", ["17#6"] = "55", ["17A#6"] = "14", ["18#6"] = "14",
["11#7"] = "44", ["13#7"] = "44", ["14#7"] = "44", ["15#7"] = "44", ["16#7"] = "44", ["17#7"] = "44", ["18#7"] = "44",
["11#8"] = "44", ["13#8"] = "212", ["14#8"] = "212", ["15#8"] = "212", ["16#8"] = "212", ["17#8"] = "44", ["17A#8"] = "212", ["18#8"] = "212",
--no 12#x because there is no number word that is tone 2
--17A#2/4/6/8 - for 一 - this behaves differently from 百 and 七.
--一+classifier - 17#x for 1/3/5/7, 一&2 -> 7iq&2[...] (4 313), 一&4 -> 7iq&6[...]4 (4 313), 一&6 -> 7iq&6[...] (4 14), 一&8 -> 7iq&8[...] (4 212)
--NONCONCRETE TAIL~NEUTRALISED TAIL SANDHI (實虛式) pp.106-108
--mark with N? but clashes with numeral (n) in northern wu sandbox and c for numeral-classifier also clashes with 5C etc in word tone
--OK yknow what i'm using T for this
["211T"] = "33 55", ["212T"] = "33 55", ["213T"] = "33 55", ["214T"] = "33 55", ["215T"] = "33 55", ["216T"] = "33 55", ["217T"] = "33 44", ["218T"] = "33 212",
["221T"] = "33 55", ["222T"] = "31 55", ["223T"] = "31 55", ["223AT"] = "53 55", ["224T"] = "31 55", ["224AT"] = "31 14", ["225T"] = "31 55", ["225CT"] = "33 55", ["226T"] = "31 14", ["227T"] = "33 44", ["228T"] = "33 212",
["231T"] = "55 334", ["232T"] = "53 14", ["232AT"] = "55 14", ["233T"] = "53 55", ["234T"] = "53 55", ["235T"] = "53 55", ["236T"] = "55 14", ["237T"] = "53 44", ["238T"] = "55 212",
["241T"] = "55 334", ["242T"] = "55 313", ["243T"] = "53 535", ["244T"] = "55 14", ["245T"] = "53 55", ["246T"] = "55 14", ["247T"] = "534 44", ["248T"] = "55 212", ["24A1T"] = "53 55",
["251T"] = "33 55", ["252T"] = "33 14", ["253T"] = "33 55", ["254T"] = "33 14", ["255T"] = "55 0", ["256T"] = "55 0", ["257T"] = "33 44", ["258T"] = "55 0",
["25A2T"] = "33 55", ["25A6T"] = "33 55", ["25C1T"] = "55 0", ["25C3T"] = "53 535", ["25C4T"] = "53 535",
["261T"] = "53 55", ["262T"] = "53 14", ["263T"] = "53 535", ["264T"] = "14 0", ["265T"] = "53 55", ["266T"] = "14 0", ["267T"] = "53 44", ["268T"] = "55 212",
["26A2T"] = "33 55", ["26A3T"] = "33 55", ["26A5T"] = "33 55", ["26A6T"] = "33 55", ["26C2T"] = "55 0",
["271T"] = "44 0", ["272T"] = "44 55", ["273T"] = "44 535", ["274T"] = "44 535", ["275T"] = "44 55", ["276T"] = "44 55", ["277T"] = "44 44", ["278T"] = "44 212",
["281T"] = "21 55", ["282T"] = "21 14", ["283T"] = "21 55", ["284T"] = "21 55", ["284AT"] = "21 14", ["285T"] = "21 55", ["286T"] = "21 14", ["287T"] = "21 44", ["288T"] = "21 212",
--25Ax, 25Cx, 26Ax and 26Cx all same as word sandhi
--there are some 2xxAT's in here, which i'm not sure if it's going to be a problem but for what its worth
--ERHUA DIMINUTIVE TONES (小稱調) p. 110
--i'm marking this with an xR for now
--1R 2R 5R 6R = no change from original tone. can delete if need be
["1R"] = "334", ["2R"] = "313", ["3R"] = "55", ["4R"] = "14", ["5R"] = "55", ["5AR"] = "535", ["6R"] = "14", ["7R"] = "55", ["8R"] = "14",
}
--diagnose_tones (if needed)
local function tone_superscript(text)
return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'})
end
-- TODO: RPS
local function get_tone(text)
text = text:gsub("(%d)%l+%d","%1"):gsub("%l+","")
local word_length = text:gsub("[^ ]+",""):len() + 1
local _, erhua = text:gsub("R","")
local result = tone_contours[word_length .. text:gsub("[ R]+","")] or
error("Tone input incorrect: " .. word_length .. text:gsub("[ R]+",""))
if erhua > 0 then
local tone = text:match("%dA?R")
result = result:gsub("%d+$",tone_contours[tone])
end
return tone_superscript(result)
end
local function rom_check(text) --this checks wugniu
if text:match('ghi') then
error('Invalid initial "ghi". Use "yi" instead.')
end
if text:match('ghu') then
error('Invalid initial "ghu". Use "wu" instead.')
end
if text:match('%f[%l]y%f[%L]') then
error('Invalid syllable "y"')
end
if text:match('gn[aeou]') then
error('Palatalization expected. Insert an "i" after the "gn".')
end
return nil
end
function export.make(text, w_count)
rom_check(text)
-- preprocess
local ipa_text = text
:gsub(" (%l+)(%d%u*)", " %2%1")
:gsub("(%d%u?)(%l+)#", "%1%2&%1#")
local format_text = text
:gsub("([34567])[AC]?", function(tone) return tone == "4" and "3" or tone end)
:gsub("#","&")
:gsub("[PT]","")
format_text = w_pron.wugniu_format(format_text)
:gsub("R","R")
local show
if not w_count or w_count > 1 then
show = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>'
else
show = ' <small>(' .. w_pron.name_boilerplate('Jinhua') .. ', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>'
end
local hide = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>'
show = show .. ': ' .. w_pron.consolas(format_text)
hide = hide .. w_pron.wugniu_boilerplate(format_text)
.. w_pron.IPA_boilerplate(w_pron.wugniu_to_ipa(ipa_text, 'jh', get_initial, get_final, ipa_syllabic, get_tone), 'Jinhua')
return show,hide
end
return export
fxnwlz1zhgigxjk76xlzp5sot0pqvob
234943
234942
2026-05-26T07:13:38Z
Lee
19
[[:en:Module:wuu-pron/Jinhua]] වෙතින් එක් සංශෝධනයක්
185478
Scribunto
text/plain
--jinhuanese experiemental module (ignore the "Hangzhou" bit)
local w_pron = require("Module:wuu-pron")
local export = {}
local ipa_initial = {
["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l",
["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ",
["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ",
["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ",
[""] = "",
}
--[""] = "",
local ipa_final = {
["oea"] = "ɤa", ["a"] = "ɑ", ["o"] = "o", ["oe"] = "ɤ", ["ou"] = "ɯ", ["ae"] = "ɛ", ["ei"] = "ei", ["au"] = "ɑu", ["eu"] = "eu",
["i"] = "i", ["iaa"] = "ia", ["ia"] = "iɑ", ["ie"] = "ie", ["iei"] = "iɛ", ["iae"] = "iɛ", ["iau"] = "iɑu", ["ieu"] = "iu",
["u"] = "u", ["ua"] = "uɑ", ["uo"] = "uɤ", ["uae"] = "uɛ", ["ui"] = "ui",
["iu"] = "y", ["iua"] = "yɑ", ["ioe"] = "yɤ", ["iuae"] = "yɛ",
["en"] = "əŋ", ["oen"] = "ɤã", ["an"] = "ã", ["aon"] = "ɑŋ", ["on"] = "oŋ",
["in"] = "iŋ", ["ian"] = "iã", ["iaon"] = "iɑŋ", ["ion"] = "ioŋ",
["uen"] = "uəŋ", ["uan"] = "uã", ["uaon"] = "uɑŋ",
["iun"] = "yəŋ", ["iuan"] = "yã", ["iuaon"] = "yɑŋ",
["eq"] = "əʔ", ["oq"] = "oʔ",
["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩",
--Erhua rimes (a priori for now, not seen in the dictionary body at wugniu.com)
["ynn"] = "z̩̃", ["inn"] = "ĩ", ["unn"] = "ũ", ["iunn"] = "ỹ",
["ieunn"] = "iũ", ["oenn"] = "ɤ̃",
["enn"] = "ẽ", ["ienn"] = "iẽ", ["uenn"] = "uẽ", ["iuenn"] = "yẽ",
["aunn"] = "ɔ̃", ["iaunn"] = "iɔ̃", ["onn"] = "õ", ["ionn"] = "iõ"
}
local function get_initial(initial)
return ipa_initial[initial] or error('Invalid initial: "' .. initial .. '"')
end
local function get_final(final)
return ipa_final[final] or error('Invalid final: "' .. final .. '"')
end
local ipa_syllabic = {
["m"] = "m̩", ["ng"] = "ŋ̍",
}
local tone_contours = {
["10"] = "",
["11"] = "334", ["12"] = "313", ["13"] = "535", ["14"] = "535", ["15"] = "55", ["16"] = "14", ["17"] = "44", ["18"] = "212",
["17A"] = "44",
--17A for 一 and only 一 in number sandhi
--sandhi: 當代 pp. 657, etc.
--Word (Phrase) sandhi: 吳語婺州方言研究 pp. 102 onwards.
--disyllabic
["211"] = "33 55", ["212"] = "33 55", ["213"] = "33 535", ["214"] = "33 535", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 44", ["218"] = "33 212",
["221"] = "31 55", ["222"] = "31 14", ["223"] = "33 535", ["224"] = "33 535", ["225"] = "31 55", ["225C"] = "33 55", ["226"] = "31 14", ["227"] = "33 44", ["228"] = "33 212",
["231"] = "55 334", ["232"] = "55 313", ["233"] = "53 535", ["234"] = "53 535", ["235"] = "53 55", ["236"] = "55 14", ["237"] = "53 44", ["238"] = "55 212",
["241"] = "55 334", ["242"] = "55 313", ["243"] = "53 535", ["244"] = "33 535", ["245"] = "53 55", ["246"] = "55 14", ["247"] = "534 44", ["248"] = "55 212", ["24A1"] = "53 55",
["251"] = "33 55", ["252"] = "33 14", ["253"] = "33 535", ["254"] = "33 535", ["255"] = "53 55", ["256"] = "55 14", ["257"] = "33 44", ["258"] = "55 212",
["25A2"] = "33 55", ["25A6"] = "33 55", ["25C1"] = "55 0", ["25C3"] = "53 535", ["25C4"] = "53 535",
["261"] = "53 55", ["262"] = "53 14", ["263"] = "53 535", ["264"] = "33 535", ["265"] = "53 55", ["266"] = "55 14", ["267"] = "53 44", ["268"] = "55 212",
["26A2"] = "33 55", ["26A3"] = "33 55", ["26A5"] = "33 55", ["26A6"] = "33 55", ["26C2"] = "55 0",
["271"] = "44 55", ["272"] = "44 55", ["273"] = "44 535", ["274"] = "44 535", ["275"] = "44 55", ["276"] = "44 14", ["277"] = "44 44", ["278"] = "44 212",
["281"] = "21 55", ["282"] = "21 14", ["283"] = "21 535", ["284"] = "21 535", ["285"] = "21 55", ["286"] = "21 14", ["287"] = "21 44", ["288"] = "21 212",
--trisyllabic word sandhi. not tabulated but vaguely described in above source
["3111"] = "33 33 55", ["3112"] = "33 33 55", ["3113"] = "33 33 535", ["3114"] = "33 33 535", ["3115"] = "33 33 55", ["3116"] = "33 33 55", ["3117"] = "33 33 44", ["3118"] = "33 33 212",
["3121"] = "33 31 55", ["3122"] = "33 31 14", ["3123"] = "33 33 535", ["3124"] = "33 33 535", ["3125"] = "33 31 55", ["3125C"] = "33 33 55", ["3126"] = "33 31 14", ["3127"] = "33 33 44", ["3128"] = "33 33 212",
["3131"] = "33 55 334", ["3132"] = "33 55 313", ["3133"] = "33 53 535", ["3134"] = "33 53 535", ["3135"] = "33 53 55", ["3136"] = "33 55 14", ["3137"] = "33 53 44", ["3138"] = "33 55 212",
["3141"] = "33 55 334", ["3142"] = "33 55 313", ["3143"] = "33 53 535", ["3144"] = "33 33 535", ["3145"] = "33 53 55", ["3146"] = "33 55 14", ["3147"] = "33 53 44", ["3148"] = "33 55 212", ["314A1"] = "33 53 55",
["3151"] = "33 33 55", ["3152"] = "33 33 14", ["3153"] = "33 33 535", ["3154"] = "33 33 535", ["3155"] = "33 53 55", ["3156"] = "33 55 14", ["3157"] = "33 33 44", ["3158"] = "33 55 212",
["315A2"] = "33 33 55", ["315A6"] = "33 33 55", ["315C1"] = "33 55 0", ["315C3"] = "33 53 535", ["315C4"] = "33 53 535",
["3161"] = "33 53 55", ["3162"] = "33 53 14", ["3163"] = "33 53 535", ["3164"] = "33 33 535", ["3165"] = "33 53 55", ["3166"] = "33 55 14", ["3167"] = "33 53 44", ["3168"] = "33 55 212",
["316A2"] = "33 33 55", ["316A3"] = "33 33 55", ["316A5"] = "33 33 55", ["316A6"] = "33 33 55", ["316C2"] = "33 55 0",
["3171"] = "33 44 55", ["3172"] = "33 44 55", ["3173"] = "33 44 535", ["3174"] = "33 44 535", ["3175"] = "33 44 55", ["3176"] = "33 44 14", ["3177"] = "33 44 44", ["3178"] = "33 44 212",
["3181"] = "33 21 55", ["3182"] = "33 21 14", ["3183"] = "33 21 535", ["3184"] = "33 21 535", ["3185"] = "33 21 55", ["3186"] = "33 21 14", ["3187"] = "33 21 44", ["3188"] = "33 21 212",
["3211"] = "33 33 55", ["3212"] = "33 33 55", ["3213"] = "33 33 535", ["3214"] = "33 33 535", ["3215"] = "33 33 55", ["3216"] = "33 33 55", ["3217"] = "33 33 44", ["3218"] = "33 33 212",
["3221"] = "33 31 55", ["3222"] = "33 31 14", ["3223"] = "33 33 535", ["3224"] = "33 33 535", ["3225"] = "33 31 55", ["3225C"] = "33 33 55", ["3226"] = "33 31 14", ["3227"] = "33 33 44", ["3228"] = "33 33 212",
["3231"] = "33 55 334", ["3232"] = "33 55 313", ["3233"] = "33 53 535", ["3234"] = "33 53 535", ["3235"] = "33 53 55", ["3236"] = "33 55 14", ["3237"] = "33 53 44", ["3238"] = "33 55 212",
["3241"] = "33 55 334", ["3242"] = "33 55 313", ["3243"] = "33 53 535", ["3244"] = "33 33 535", ["3245"] = "33 53 55", ["3246"] = "33 55 14", ["3247"] = "33 53 44", ["3248"] = "33 55 212", ["324A1"] = "33 53 55",
["3251"] = "33 33 55", ["3252"] = "33 33 14", ["3253"] = "33 33 535", ["3254"] = "33 33 535", ["3255"] = "33 53 55", ["3256"] = "33 55 14", ["3257"] = "33 33 44", ["3258"] = "33 55 212",
["325A2"] = "33 33 55", ["325A6"] = "33 33 55", ["325C1"] = "33 55 0", ["325C3"] = "33 53 535", ["325C4"] = "33 53 535",
["3261"] = "33 53 55", ["3262"] = "33 53 14", ["3263"] = "33 53 535", ["3264"] = "33 33 535", ["3265"] = "33 53 55", ["3266"] = "33 55 14", ["3267"] = "33 53 44", ["3268"] = "33 55 212",
["326A2"] = "33 33 55", ["326A3"] = "33 33 55", ["326A5"] = "33 33 55", ["326A6"] = "33 33 55", ["326C2"] = "33 55 0",
["3271"] = "33 44 55", ["3272"] = "33 44 55", ["3273"] = "33 44 535", ["3274"] = "33 44 535", ["3275"] = "33 44 55", ["3276"] = "33 44 14", ["3277"] = "33 44 44", ["3278"] = "33 44 212",
["3281"] = "33 21 55", ["3282"] = "33 21 14", ["3283"] = "33 21 535", ["3284"] = "33 21 535", ["3285"] = "33 21 55", ["3286"] = "33 21 14", ["3287"] = "33 21 44", ["3288"] = "33 21 212",
["3311"] = "55 33 55", ["3312"] = "55 33 55", ["3313"] = "55 33 535", ["3314"] = "55 33 535", ["3315"] = "55 33 55", ["3316"] = "55 33 55", ["3317"] = "55 33 44", ["3218"] = "55 33 212",
["3321"] = "55 31 55", ["3322"] = "55 31 14", ["3323"] = "55 33 535", ["3324"] = "55 33 535", ["3325"] = "55 31 55", ["3325C"] = "55 33 55", ["3326"] = "55 31 14", ["3327"] = "55 33 44", ["3328"] = "55 33 212",
["3331"] = "55 55 334", ["3332"] = "55 55 313", ["3333"] = "55 53 535", ["3334"] = "55 53 535", ["3335"] = "55 53 55", ["3336"] = "55 55 14", ["3337"] = "55 53 44", ["3338"] = "55 55 212",
["3341"] = "55 55 334", ["3342"] = "55 55 313", ["3343"] = "55 53 535", ["3344"] = "55 33 535", ["3345"] = "55 53 55", ["3346"] = "55 55 14", ["3347"] = "55 53 44", ["3348"] = "55 55 212", ["334A1"] = "55 53 55",
["3351"] = "55 33 55", ["3352"] = "55 33 14", ["3353"] = "55 33 535", ["3354"] = "55 33 535", ["3355"] = "55 53 55", ["3356"] = "55 55 14", ["3357"] = "55 33 44", ["3358"] = "55 55 212",
["335A2"] = "55 33 55", ["335A6"] = "55 33 55", ["335C1"] = "55 55 0", ["335C3"] = "55 53 535", ["335C4"] = "55 53 535",
["3361"] = "55 53 55", ["3362"] = "55 53 14", ["3363"] = "55 53 535", ["3364"] = "55 33 535", ["3365"] = "55 53 55", ["3366"] = "55 55 14", ["3367"] = "55 53 44", ["3368"] = "55 55 212",
["336A2"] = "55 33 55", ["336A3"] = "55 33 55", ["336A5"] = "55 33 55", ["336A6"] = "55 33 55", ["336C2"] = "55 55 0",
["3371"] = "55 44 55", ["3372"] = "55 44 55", ["3373"] = "55 44 535", ["3374"] = "55 44 535", ["3375"] = "55 44 55", ["3376"] = "55 44 14", ["3377"] = "55 44 44", ["3378"] = "55 44 212",
["3381"] = "55 21 55", ["3382"] = "55 21 14", ["3383"] = "55 21 535", ["3384"] = "55 21 535", ["3385"] = "55 21 55", ["3386"] = "55 21 14", ["3387"] = "55 21 44", ["3388"] = "55 21 212",
["3411"] = "55 33 55", ["3412"] = "55 33 55", ["3413"] = "55 33 535", ["3414"] = "55 33 535", ["3415"] = "55 33 55", ["3416"] = "55 33 55", ["3417"] = "55 33 44", ["3218"] = "55 33 212",
["3421"] = "55 31 55", ["3422"] = "55 31 14", ["3423"] = "55 33 535", ["3424"] = "55 33 535", ["3425"] = "55 31 55", ["3425C"] = "55 33 55", ["3426"] = "55 31 14", ["3427"] = "55 33 44", ["3428"] = "55 33 212",
["3431"] = "55 55 334", ["3432"] = "55 55 313", ["3433"] = "55 53 535", ["3434"] = "55 53 535", ["3435"] = "55 53 55", ["3436"] = "55 55 14", ["3437"] = "55 53 44", ["3438"] = "55 55 212",
["3441"] = "55 55 334", ["3442"] = "55 55 313", ["3443"] = "55 53 535", ["3444"] = "55 33 535", ["3445"] = "55 53 55", ["3446"] = "55 55 14", ["3447"] = "55 53 44", ["3448"] = "55 55 212", ["334A1"] = "55 53 55",
["3451"] = "55 33 55", ["3452"] = "55 33 14", ["3453"] = "55 33 535", ["3454"] = "55 33 535", ["3455"] = "55 53 55", ["3456"] = "55 55 14", ["3457"] = "55 33 44", ["3458"] = "55 55 212",
["345A2"] = "55 33 55", ["345A6"] = "55 33 55", ["345C1"] = "55 55 0", ["345C3"] = "55 53 535", ["345C4"] = "55 53 535",
["3461"] = "55 53 55", ["3462"] = "55 53 14", ["3463"] = "55 53 535", ["3464"] = "55 33 535", ["3465"] = "55 53 55", ["3466"] = "55 55 14", ["3467"] = "55 53 44", ["3468"] = "55 55 212",
["346A2"] = "55 33 55", ["346A3"] = "55 33 55", ["346A5"] = "55 33 55", ["346A6"] = "55 33 55", ["346C2"] = "55 55 0",
["3471"] = "55 44 55", ["3472"] = "55 44 55", ["3473"] = "55 44 535", ["3474"] = "55 44 535", ["3475"] = "55 44 55", ["3476"] = "55 44 14", ["3477"] = "55 44 44", ["3478"] = "55 44 212",
["3481"] = "55 21 55", ["3482"] = "55 21 14", ["3483"] = "55 21 535", ["3484"] = "55 21 535", ["3485"] = "55 21 55", ["3486"] = "55 21 14", ["3487"] = "55 21 44", ["3488"] = "55 21 212",
["3511"] = "33 33 55", ["3512"] = "33 33 55", ["3513"] = "33 33 535", ["3514"] = "33 33 535", ["3515"] = "33 33 55", ["3516"] = "33 33 55", ["3517"] = "33 33 44", ["3218"] = "33 33 212",
["3521"] = "33 31 55", ["3522"] = "33 31 14", ["3523"] = "33 33 535", ["3524"] = "33 33 535", ["3525"] = "33 31 55", ["3525C"] = "33 33 55", ["3526"] = "33 31 14", ["3527"] = "33 33 44", ["3528"] = "33 33 212",
["3531"] = "33 55 334", ["3532"] = "33 55 313", ["3533"] = "33 53 535", ["3534"] = "33 53 535", ["3535"] = "33 53 55", ["3536"] = "33 55 14", ["3537"] = "33 53 44", ["3538"] = "33 55 212",
["3541"] = "33 55 334", ["3542"] = "33 55 313", ["3543"] = "33 53 535", ["3544"] = "33 33 535", ["3545"] = "33 53 55", ["3546"] = "33 55 14", ["3547"] = "33 53 44", ["3548"] = "33 55 212", ["354A1"] = "33 53 55",
["3551"] = "33 33 55", ["3552"] = "33 33 14", ["3553"] = "33 33 535", ["3554"] = "33 33 535", ["3555"] = "33 53 55", ["3556"] = "33 55 14", ["3557"] = "33 33 44", ["3258"] = "33 55 212",
["355A2"] = "33 33 55", ["355A6"] = "33 33 55", ["355C1"] = "33 55 0", ["355C3"] = "33 53 535", ["355C4"] = "33 53 535",
["3561"] = "33 53 55", ["3562"] = "33 53 14", ["3563"] = "33 53 535", ["3564"] = "33 33 535", ["3565"] = "33 53 55", ["3566"] = "33 55 14", ["3567"] = "33 53 44", ["3568"] = "33 55 212",
["356A2"] = "33 33 55", ["356A3"] = "33 33 55", ["356A5"] = "33 33 55", ["356A6"] = "33 33 55", ["356C2"] = "33 55 0",
["3571"] = "33 44 55", ["3572"] = "33 44 55", ["3573"] = "33 44 535", ["3574"] = "33 44 535", ["3575"] = "33 44 55", ["3576"] = "33 44 14", ["3577"] = "33 44 44", ["3578"] = "33 44 212",
["3581"] = "33 21 55", ["3582"] = "33 21 14", ["3583"] = "33 21 535", ["3584"] = "33 21 535", ["3585"] = "33 21 55", ["3586"] = "33 21 14", ["3587"] = "33 21 44", ["3588"] = "33 21 212",
["3611"] = "55 33 55", ["3612"] = "55 33 55", ["3613"] = "55 33 535", ["3614"] = "55 33 535", ["3615"] = "55 33 55", ["3616"] = "55 33 55", ["3617"] = "55 33 44", ["3218"] = "55 33 212",
["3621"] = "55 31 55", ["3622"] = "55 31 14", ["3623"] = "55 33 535", ["3624"] = "55 33 535", ["3625"] = "55 31 55", ["3625C"] = "55 33 55", ["3626"] = "55 31 14", ["3627"] = "55 33 44", ["3628"] = "55 33 212",
["3631"] = "55 55 334", ["3632"] = "55 55 313", ["3633"] = "55 53 535", ["3634"] = "55 53 535", ["3635"] = "55 53 55", ["3636"] = "55 55 14", ["3637"] = "55 53 44", ["3638"] = "55 55 212",
["3641"] = "55 55 334", ["3642"] = "55 55 313", ["3643"] = "55 53 535", ["3644"] = "55 33 535", ["3645"] = "55 53 55", ["3646"] = "55 55 14", ["3647"] = "55 53 44", ["3648"] = "55 55 212", ["364A1"] = "55 53 55",
["3651"] = "55 33 55", ["3652"] = "55 33 14", ["3653"] = "55 33 535", ["3654"] = "55 33 535", ["3655"] = "55 53 55", ["3656"] = "55 55 14", ["3657"] = "55 33 44", ["3658"] = "55 55 212",
["365A2"] = "55 33 55", ["365A6"] = "55 33 55", ["365C1"] = "55 55 0", ["365C3"] = "55 53 535", ["365C4"] = "55 53 535",
["3661"] = "55 53 55", ["3662"] = "55 53 14", ["3663"] = "55 53 535", ["3664"] = "55 33 535", ["3665"] = "55 53 55", ["3666"] = "55 55 14", ["3667"] = "55 53 44", ["3668"] = "55 55 212",
["366A2"] = "55 33 55", ["366A3"] = "55 33 55", ["366A5"] = "55 33 55", ["366A6"] = "55 33 55", ["366C2"] = "55 55 0",
["3671"] = "55 44 55", ["3672"] = "55 44 55", ["3673"] = "55 44 535", ["3674"] = "55 44 535", ["3675"] = "55 44 55", ["3676"] = "55 44 14", ["3677"] = "55 44 44", ["3678"] = "55 44 212",
["3681"] = "55 21 55", ["3682"] = "55 21 14", ["3683"] = "55 21 535", ["3684"] = "55 21 535", ["3685"] = "55 21 55", ["3686"] = "55 21 14", ["3687"] = "55 21 44", ["3688"] = "55 21 212",
--according to p.104: 「陽去在陰去(5)、陽去(6)前有時變[33]」
["36A51"] = "33 33 55", ["36A52"] = "33 33 14", ["36A53"] = "33 33 535", ["36A54"] = "33 33 535", ["36A55"] = "33 53 55", ["36A56"] = "33 55 14", ["36A57"] = "33 33 44", ["36A58"] = "33 55 212",
["36A5A2"] = "33 33 55", ["36A5A6"] = "33 33 55", ["36A5C1"] = "33 55 0", ["36A5C3"] = "33 53 535", ["36A5C4"] = "33 53 535",
["36A61"] = "33 53 55", ["36A62"] = "33 53 14", ["36A63"] = "33 53 535", ["36A64"] = "33 33 535", ["36A65"] = "33 53 55", ["36A66"] = "33 55 14", ["36A67"] = "33 53 44", ["36A68"] = "33 55 212",
["36A6A2"] = "33 33 55", ["36A6A3"] = "33 33 55", ["36A6A5"] = "33 33 55", ["36A6A6"] = "33 33 55", ["36A6C2"] = "33 55 0",
["3711"] = "44 33 55", ["3712"] = "44 33 55", ["3713"] = "44 33 535", ["3714"] = "44 33 535", ["3715"] = "44 33 55", ["3716"] = "44 33 55", ["3717"] = "44 33 44", ["3218"] = "44 33 212",
["3721"] = "44 31 55", ["3722"] = "44 31 14", ["3723"] = "44 33 535", ["3724"] = "44 33 535", ["3725"] = "44 31 55", ["3725C"] = "44 33 55", ["3726"] = "44 31 14", ["3727"] = "44 33 44", ["3728"] = "44 33 212",
["3731"] = "44 44 334", ["3732"] = "44 44 313", ["3733"] = "44 53 535", ["3734"] = "44 53 535", ["3735"] = "44 53 55", ["3736"] = "44 55 14", ["3737"] = "44 53 44", ["3738"] = "44 55 212",
["3741"] = "44 44 334", ["3742"] = "44 44 313", ["3743"] = "44 53 535", ["3744"] = "44 33 535", ["3745"] = "44 53 55", ["3746"] = "44 55 14", ["3747"] = "44 53 44", ["3748"] = "44 55 212", ["374A1"] = "44 53 55",
["3751"] = "44 33 55", ["3752"] = "44 33 14", ["3753"] = "44 33 535", ["3754"] = "44 33 535", ["3755"] = "44 53 55", ["3756"] = "44 55 14", ["3757"] = "44 33 44", ["3758"] = "44 55 212",
["375A2"] = "44 33 55", ["375A6"] = "44 33 55", ["375C1"] = "44 55 0", ["375C3"] = "44 53 535", ["375C4"] = "44 53 535",
["3761"] = "44 53 55", ["3762"] = "44 53 14", ["3763"] = "44 53 535", ["3764"] = "44 33 535", ["3765"] = "44 53 55", ["3766"] = "44 55 14", ["3767"] = "44 53 44", ["3768"] = "44 55 212",
["376A2"] = "44 33 55", ["376A3"] = "44 33 55", ["376A5"] = "44 33 55", ["376A6"] = "44 33 55", ["376C2"] = "44 55 0",
["3771"] = "44 44 55", ["3772"] = "44 44 55", ["3773"] = "44 44 535", ["3774"] = "44 44 535", ["3775"] = "44 44 55", ["3776"] = "44 44 14", ["3777"] = "44 44 44", ["3778"] = "44 44 212",
["3781"] = "44 21 55", ["3782"] = "44 21 14", ["3783"] = "44 21 535", ["3784"] = "44 21 535", ["3785"] = "44 21 55", ["3786"] = "44 21 14", ["3787"] = "44 21 44", ["3788"] = "44 21 212",
["3811"] = "21 33 55", ["3812"] = "21 33 55", ["3813"] = "21 33 535", ["3814"] = "21 33 535", ["3815"] = "21 33 55", ["3816"] = "21 33 55", ["3817"] = "21 33 44", ["3218"] = "21 33 212",
["3821"] = "21 31 55", ["3822"] = "21 31 14", ["3823"] = "21 33 535", ["3824"] = "21 33 535", ["3825"] = "21 31 55", ["3825C"] = "21 33 55", ["3826"] = "21 31 14", ["3827"] = "21 33 44", ["3828"] = "21 33 212",
["3831"] = "21 44 334", ["3832"] = "21 44 313", ["3833"] = "21 53 535", ["3834"] = "21 53 535", ["3835"] = "21 53 55", ["3836"] = "21 55 14", ["3837"] = "21 53 44", ["3838"] = "21 55 212",
["3841"] = "21 44 334", ["3842"] = "21 44 313", ["3843"] = "21 53 535", ["3844"] = "21 33 535", ["3845"] = "21 53 55", ["3846"] = "21 55 14", ["3847"] = "21 53 44", ["3848"] = "21 55 212", ["384A1"] = "21 53 55",
["3851"] = "21 33 55", ["3852"] = "21 33 14", ["3853"] = "21 33 535", ["3854"] = "21 33 535", ["3855"] = "21 53 55", ["3856"] = "21 55 14", ["3857"] = "21 33 44", ["3858"] = "21 55 212",
["385A2"] = "21 33 55", ["385A6"] = "21 33 55", ["385C1"] = "21 55 0", ["385C3"] = "21 53 535", ["385C4"] = "21 53 535",
["3861"] = "21 53 55", ["3862"] = "21 53 14", ["3863"] = "21 53 535", ["3864"] = "21 33 535", ["3865"] = "21 53 55", ["3866"] = "21 55 14", ["3867"] = "21 53 44", ["3868"] = "21 55 212",
["386A2"] = "21 33 55", ["386A3"] = "21 33 55", ["386A5"] = "21 33 55", ["386A6"] = "21 33 55", ["386C2"] = "21 55 0",
["3871"] = "21 44 55", ["3872"] = "21 44 55", ["3873"] = "21 44 535", ["3874"] = "21 44 535", ["3875"] = "21 44 55", ["3876"] = "21 44 14", ["3877"] = "21 4 44", ["3878"] = "21 44 212",
["3881"] = "21 21 55", ["3882"] = "21 21 14", ["3883"] = "21 21 535", ["3884"] = "21 21 535", ["3885"] = "21 21 55", ["3886"] = "21 21 14", ["3887"] = "21 21 44", ["3888"] = "21 21 212",
--PREDICATE-OBJECT SANDHI (述賓式) p. 105
--EACH BLOCK MARKED WITH P AFTER END SYLLABLE FOR NOW. CAN CHANGE LATER ACCORDING TO CODE SPECIFICS
--DISYLLABIC ONLY
["211P"] = "33 334", ["212P"] = "33 313", ["213P"] = "33 535", ["214P"] = "33 535", ["215P"] = "33 55", ["216P"] = "33 14", ["217P"] = "33 44", ["218P"] = "33 212",
["221P"] = "33 334", ["222P"] = "33 313", ["223P"] = "33 535", ["224P"] = "33 535", ["225P"] = "31 55", ["225CP"] = "33 55", ["226P"] = "33 14", ["227P"] = "33 44", ["228P"] = "33 212",
["231P"] = "55 334", ["232P"] = "55 313", ["233P"] = "53 535", ["234P"] = "53 535", ["235P"] = "53 55", ["236P"] = "55 14", ["237P"] = "53 44", ["238P"] = "55 212",
["241P"] = "55 334", ["242P"] = "55 313", ["243P"] = "53 535", ["244P"] = "33 535", ["245P"] = "53 55", ["246P"] = "55 14", ["247P"] = "534 44", ["248P"] = "55 212", ["24A1P"] = "53 55",
["251P"] = "33 334", ["252P"] = "33 313", ["253P"] = "33 535", ["254P"] = "33 535", ["255P"] = "33 55", ["256P"] = "33 14", ["257P"] = "33 44", ["258P"] = "55 212",
["25C1P"] = "55 334", ["25C2P"] = "55 313",
["261P"] = "55 334", ["262P"] = "55 313", ["263P"] = "53 535", ["264P"] = "33 535", ["265P"] = "53 55", ["266P"] = "55 14", ["267P"] = "53 44", ["268P"] = "55 212",
["271P"] = "44 334", ["272P"] = "44 313", ["273P"] = "44 535", ["274P"] = "44 535", ["275P"] = "44 55", ["276P"] = "44 14", ["277P"] = "44 44", ["278P"] = "44 212",
["281P"] = "21 334", ["282P"] = "21 313", ["283P"] = "21 535", ["284P"] = "21 535", ["285P"] = "21 55", ["286P"] = "21 14", ["287P"] = "21 44", ["288P"] = "21 212",
--Also like half of this is basically the same as the word tone sandhi. i've kept most patterns that are identical to the word tone sandhis here in the P table, but if needs be and they end up being redundancies i can remove the duplicate ones (might end up with the input acting up but eh)
--none of the 24x's are different from word tone so that row is directly deleteable if its not gonna be useful
--CLASSIFIER SANDHI (數量式) pp.105-106
--THE ACTUAL NUMBERS THEMSELVES TAKE ON WORD SANDHI
--CITATION TONE OF THE BOUNDARY CHARACTER + CITATION TONE OF CLASSIFIER CHARACTER -> BOTH DETERMINE THE POST-SANDHI VALUE ON THE CLASSIFIER CHARACTER TOGETHER.
--MOST LIKELY WE WILL NEED SOME KIND OF AN ALGORITHM+OPERATOR TO CHECK THE !!!CITATION!!! TONE CATEGORY OF THESE TWO CHARACTERS, BEFORE GETTING FROM THIS DATA TO CALCULATE THE CORRECT POST-SANDHI TONE FOR THE CLASSIFIER.
["11#1"] = "55", ["13#1"] = "55", ["14#1"] = "55", ["15#1"] = "55", ["16#1"] = "55", ["17#1"] = "55", ["18#1"] = "55",
["11#2"] = "55", ["13#2"] = "313", ["14#2"] = "313", ["15#2"] = "313", ["16#2"] = "313", ["17#2"] = "55", ["17A#2"] = "313", ["18#2"] = "313",
["11#3"] = "55", ["13#3"] = "55", ["14#3"] = "55", ["15#3"] = "55", ["16#3"] = "55", ["17#3"] = "55", ["18#3"] = "55",
["11#4"] = "55", ["13#4"] = "14", ["14#4"] = "14", ["15#4"] = "14", ["16#4"] = "14", ["17#4"] = "55", ["17A#4"] = "14", ["18#4"] = "14",
["11#5"] = "55", ["13#5"] = "55", ["14#5"] = "55", ["15#5"] = "55", ["16#5"] = "55", ["17#5"] = "55", ["18#5"] = "55",
["11#6"] = "55", ["13#6"] = "14", ["14#6"] = "14", ["15#6"] = "14", ["16#6"] = "14", ["17#6"] = "55", ["17A#6"] = "14", ["18#6"] = "14",
["11#7"] = "44", ["13#7"] = "44", ["14#7"] = "44", ["15#7"] = "44", ["16#7"] = "44", ["17#7"] = "44", ["18#7"] = "44",
["11#8"] = "44", ["13#8"] = "212", ["14#8"] = "212", ["15#8"] = "212", ["16#8"] = "212", ["17#8"] = "44", ["17A#8"] = "212", ["18#8"] = "212",
--no 12#x because there is no number word that is tone 2
--17A#2/4/6/8 - for 一 - this behaves differently from 百 and 七.
--一+classifier - 17#x for 1/3/5/7, 一&2 -> 7iq&2[...] (4 313), 一&4 -> 7iq&6[...]4 (4 313), 一&6 -> 7iq&6[...] (4 14), 一&8 -> 7iq&8[...] (4 212)
--NONCONCRETE TAIL~NEUTRALISED TAIL SANDHI (實虛式) pp.106-108
--mark with N? but clashes with numeral (n) in northern wu sandbox and c for numeral-classifier also clashes with 5C etc in word tone
--OK yknow what i'm using T for this
["211T"] = "33 55", ["212T"] = "33 55", ["213T"] = "33 55", ["214T"] = "33 55", ["215T"] = "33 55", ["216T"] = "33 55", ["217T"] = "33 44", ["218T"] = "33 212",
["221T"] = "33 55", ["222T"] = "31 55", ["223T"] = "31 55", ["223AT"] = "53 55", ["224T"] = "31 55", ["224AT"] = "31 14", ["225T"] = "31 55", ["225CT"] = "33 55", ["226T"] = "31 14", ["227T"] = "33 44", ["228T"] = "33 212",
["231T"] = "55 334", ["232T"] = "53 14", ["232AT"] = "55 14", ["233T"] = "53 55", ["234T"] = "53 55", ["235T"] = "53 55", ["236T"] = "55 14", ["237T"] = "53 44", ["238T"] = "55 212",
["241T"] = "55 334", ["242T"] = "55 313", ["243T"] = "53 535", ["244T"] = "55 14", ["245T"] = "53 55", ["246T"] = "55 14", ["247T"] = "534 44", ["248T"] = "55 212", ["24A1T"] = "53 55",
["251T"] = "33 55", ["252T"] = "33 14", ["253T"] = "33 55", ["254T"] = "33 14", ["255T"] = "55 0", ["256T"] = "55 0", ["257T"] = "33 44", ["258T"] = "55 0",
["25A2T"] = "33 55", ["25A6T"] = "33 55", ["25C1T"] = "55 0", ["25C3T"] = "53 535", ["25C4T"] = "53 535",
["261T"] = "53 55", ["262T"] = "53 14", ["263T"] = "53 535", ["264T"] = "14 0", ["265T"] = "53 55", ["266T"] = "14 0", ["267T"] = "53 44", ["268T"] = "55 212",
["26A2T"] = "33 55", ["26A3T"] = "33 55", ["26A5T"] = "33 55", ["26A6T"] = "33 55", ["26C2T"] = "55 0",
["271T"] = "44 0", ["272T"] = "44 55", ["273T"] = "44 535", ["274T"] = "44 535", ["275T"] = "44 55", ["276T"] = "44 55", ["277T"] = "44 44", ["278T"] = "44 212",
["281T"] = "21 55", ["282T"] = "21 14", ["283T"] = "21 55", ["284T"] = "21 55", ["284AT"] = "21 14", ["285T"] = "21 55", ["286T"] = "21 14", ["287T"] = "21 44", ["288T"] = "21 212",
--25Ax, 25Cx, 26Ax and 26Cx all same as word sandhi
--there are some 2xxAT's in here, which i'm not sure if it's going to be a problem but for what its worth
--ERHUA DIMINUTIVE TONES (小稱調) p. 110
--i'm marking this with an xR for now
--1R 2R 5R 6R = no change from original tone. can delete if need be
["1R"] = "334", ["2R"] = "313", ["3R"] = "55", ["4R"] = "14", ["5R"] = "55", ["5AR"] = "535", ["6R"] = "14", ["7R"] = "55", ["8R"] = "14",
}
--diagnose_tones (if needed)
local function tone_superscript(text)
return text:gsub('[1-5]',{['1']='¹',['2']='²',['3']='³',['4']='⁴',['5']='⁵'})
end
-- TODO: RPS
local function get_tone(text)
text = text:gsub("(%d)%l+%d","%1"):gsub("%l+","")
local word_length = text:gsub("[^ ]+",""):len() + 1
local _, erhua = text:gsub("R","")
local result = tone_contours[word_length .. text:gsub("[ R]+","")] or
error("Tone input incorrect: " .. word_length .. text:gsub("[ R]+",""))
if erhua > 0 then
local tone = text:match("%dA?R")
result = result:gsub("%d+$",tone_contours[tone])
end
return tone_superscript(result)
end
local function rom_check(text) --this checks wugniu
if text:match('ghi') then
error('Invalid initial "ghi". Use "yi" instead.')
end
if text:match('ghu') then
error('Invalid initial "ghu". Use "wu" instead.')
end
if text:match('%f[%l]y%f[%L]') then
error('Invalid syllable "y"')
end
if text:match('gn[aeou]') then
error('Palatalization expected. Insert an "i" after the "gn".')
end
return nil
end
function export.make(text, w_count)
rom_check(text)
-- preprocess
local ipa_text = text
:gsub(" (%l+)(%d%u*)", " %2%1")
:gsub("(%d%u?)(%l+)#", "%1%2&%1#")
local format_text = text
:gsub("([34567])[AC]?", function(tone) return tone == "4" and "3" or tone end)
:gsub("#","&")
:gsub("[PT]","")
format_text = w_pron.wugniu_format(format_text)
:gsub("R","R")
local show
if not w_count or w_count > 1 then
show = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>'
else
show = ' <small>(' .. w_pron.name_boilerplate('Jinhua') .. ', <i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>'
end
local hide = '\n** <small>(' .. w_pron.name_boilerplate('Jinhua') .. ')</small>'
show = show .. ': ' .. w_pron.consolas(format_text)
hide = hide .. w_pron.wugniu_boilerplate(format_text)
.. w_pron.IPA_boilerplate(w_pron.wugniu_to_ipa(ipa_text, 'jh', get_initial, get_final, ipa_syllabic, get_tone), 'Jinhua')
return show,hide
end
return export
fxnwlz1zhgigxjk76xlzp5sot0pqvob
Module:wuu-pron/data
828
112573
234946
185487
2026-04-24T15:08:19Z
en>沈澄心
0
[IPE-NEXT] Quick edit
234946
Scribunto
text/plain
local data = {}
--[[
sh - Shanghai 上海市區方言誌
jd - Jiading 嘉定方言研究
sj - Songjiang 松江方言研究
cm - Chongming 崇明方言研究
cs - Chuansha 上海地區方言調查研究 + 川沙方言同音字表 + 川沙縣誌
sz - Suzhou 蘇州方言語音研究
ks - Kunshan 吳氏:崑山方言研究 + 當代吳語研究
yx - Yixing 宜興方言同音字彙 + 宜興縣誌
cz - Changzhou 當代吳語研究
jj - Jingjiang 靖江縣誌
jx - Jiaxing 當代吳語研究
tx - Tongxiang 桐鄉方言誌
hn - Haining (Xiashi) 海寧方言誌
hy - Haiyan 海鹽方言誌
dq - Deqing 德清縣誌 + 德清話聲韻調之研究
hz - Hangzhou 杭州方言音檔 + 杭州方言の聲調
xs - Xiaoshan 蕭山方言同音字彙 + 蕭山方言研究 + 蕭山市志
fy - Fuyang 富陽方言研究
sx - Shaoxing 紹興方言研究
cx - Cixi 慈溪市誌 + 浙江慈溪方言聲調實驗研究 (RPS understanding needed)
nb - Ningbo 當代吳語研究
zs - Zhoushan 舟山方言兩字組的連讀變調 + 舟山方言研究 + 舟山方言 (samdhi understanding needed)
]]
data.ipa_final = {
['sh'] = {
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["oe"] = "ø",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ie"] = "ie",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø",
["iu"] = "y", ["ioe"] = "yø",
["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ",
["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ",
["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["iun"] = "yn", ["iuq"] = "yɪʔ",
["er"] = "əl", ["y"] = "z̩"
},
['jd'] = {
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["ae"] = "e", ["oe"] = "ø",
["i"] = "i", ["ia"] = "ia", ["iae"] = "ie̞", ["io"] = "iu", ["iau"] = "iɔ", ["ie"] = "ɪ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "ue̞", ["ue"] = "uɪ",
["iu"] = "y", ["ioe"] = "yø",
["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["aq"] = "aʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "iŋ", ["ion"] = "ioŋ",
["iaq"] = "iaʔ", ["iaoq"] = "iɔʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ",
["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uəŋ",
["uaq"] = "uaʔ", ["uaoq"] = "uɔʔ", ["uoq"] = "uoʔ", ["ueq"] = "uəʔ",
["iun"] = "yŋ",
["er"] = "øl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['sj'] = {
["a"] = "ɑ", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "ɯ",
["i"] = "i", ["ia"] = "iɑ", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["io"] = "io", ["iu"] = "iu", ["ieu"] = "iɯ",
["u"] = "u", ["ua"] = "uɑ", ["uae"] = "uɛ", ["ue"] = "ue", ["uiau"] = "uiɔ", --uiau: necessary?
["iu"] = "y", ["ioe"] = "yø",
["an"] = "æ̃", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "iæ̃", ["iaon"] = "iɒ̃", ["in"] = "iŋ", ["ion"] = "ioŋ",
["uan"] = "uæ̃", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ",
["iun"] = "yœ̃",
["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["aoq"] = "ɒʔ", ["eoq"] = "ʌʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "iɒʔ", ["ieq"] = "iʌʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uaoq"] = "uɒʔ", ["ueq"] = "uəʔ",
["iuq"] = "yœʔ",
["er"] = "əl", ["y"] = "z̩"
},
['cm'] = {
["a"] = "ɑ", ["e"] = "e", ["oe"] = "ø", ["ai"] = "ɛ", ["ae"] = "æ", ["eu"] = "ɵ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei",
["i"] = "i", ["ia"] = "iɑ", ["ie"] = "ie", ["iai"] = "iɛ", ["iae"] = "iæ", ["ieu"] = "iɵ", ["iau"] = "iɔ", ["io"] = "io",
["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uai"] = "uɛ", ["uae"] = "uæ", ["uo"] = "uo", ["uei"] = "uei",
["iu"] = "y", ["ioe"] = "yø",
["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ",
["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃",
["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃",
["iun"] = "yn", ["ion"] = "yoŋ",
--missing ɔ~, iɔ~
["aeq"] = "æʔ", ["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ",
["iaq"] = "iɑʔ", ["iq"] = "iəʔ",
["uaeq"] = "uæʔ", ["uaq"] = "uɑʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ",
["ioeq"] = "yøʔ", ["ioq"] = "yoʔ",
["er"] = "əl", ["y"] = "z̩",
-- only used in mutations:
["ueu"] = "uɵ", ["uon"] = "uoŋ", ["ui"] = "ui"
},
['cs'] = { -- 與學堂一致:io = iau, uo = o; uoeq, ieon, eoq 皆存
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø",
["i"] = "i", ["iuu"] = "iu", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ioe"] = "yø",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ",
["iu"] = "y",
["an"] = "ã", ["aon"] = "ɑ", ["en"] = "ən", ["on"] = "oŋ",
["ian"] = "iã", ["iaon"] = "iɑ", ["in"] = "in", ["ieon"] = "iʌŋ", ["ion"] = "ioŋ",
["uan"] = "uã", ["uaon"] = "uɑ", ["uen"] = "uən",
["iun"] = "yn",
["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["eq"] = "əʔ", ["eoq"] = "ʌʔ", ["oq"] = "oʔ", ["aoq"] = "ɔʔ",
["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["ioeq"] = "yœʔ", ["iq"] = "iɪʔ", ["ieq"] = "iʌʔ", ["ioq"] = "ioʔ", ["iaoq"] = "iɔʔ",
["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uoeq"] = "uœʔ", ["ueq"] = "uəʔ", ["uaoq"] = "uɔʔ",
["er"] = "əl", ["y"] = "z̩",
},
['sz'] = {
["a"] = "ɑ", ["o"] = "o", ["au"] = "æ", ["eu"] = "øy", ["e"] = "e", ["oe"] = "ø", ["ou"] = "əu",
["i"] = "i", ["ia"] = "iɑ", ["io"] = "io", ["iau"] = "iæ", ["ieu"] = "ʏ", ["ioe"] = "iø", ["ie"] = "ɪ",
["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uoe"] = "uø",
["iu"] = "y", ["ioe"] = "yø",
["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ",
["aq"] = "ɑʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["aeq"] = "aʔ",
["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ",
["iaq"] = "iɑʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["iaeq"] = "iaʔ",
["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən",
["ueq"] = "uəʔ", ["uaeq"] = "uaʔ",
["iun"] = "yn", ["iuq"] = "yəʔ", ["iuaeq"] = "yaʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['ks'] = {
["a"] = "a", ["au"] = "ɔ", ["ae"] = "ɛ", ["oe"] = "ø", ["o"] = "o", ["e"] = "ei", ["ou"] = "əu",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ɪ", ["ioe"] = "iø",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø", ["ue"] = "uei",
["iu"] = "y",
["en"] = "ən", ["an"] = "ã", ["on"] = "oŋ",
["in"] = "in", ["ian"] = "iã", ["ion"] = "ioŋ",
["uen"] = "uən", ["uan"] = "uã",
["iun"] = "yn",
["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ",
["iq"] = "iəʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ", ["uaq"] = "uaʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['yx'] = {
["a"] = "a", ["o"] = "o", ["ou"] = "ʊ", ["ai"] = "ɛ", ["e"] = "ə", ["e"] = "ə", ["au"] = "au", ["eu"] = "əu",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["ie"] = "iɪ", ["iau"] = "iau", ["ieu"] = "iəu",
["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "uə",
["iu"] = "y",
["an"] = "aŋ", ["en"] = "ən", ["on"] = "oŋ",
["ian"] = "iaŋ", ["in"] = "in", ["ion"] = "ioŋ",
["uan"] = "uaŋ", ["uen"] = "uən",
["iun"] = "yən",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩",
},
['cz'] = {
["a"] = "a", ["ae"] = "ɛ", ["oe"] = "ɵ", ["o"] = "o", ["ie"] = "ɪ", ["ai"] = "ai", ["ei"] = "ei", ["au"] = "aɯ", ["ou"] = "ɤɯ",
["i"] = "i", ["ia"] = "ia", ["ioe"] = "iɵ", ["io"] = "io", ["iau"] = "iaɯ", ["iou"] = "iɤɯ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uɵ", ["uai"] = "uai",
["iu"] = "y",
["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "ioŋ",
["uan"] = "uaŋ", ["uen"] = "uəŋ",
["iun"] = "yiŋ",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ",
["iuq"] = "yeʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['jj'] = {
["a"] = "a", ["au"] = "ɔ", ["ai"] = "ɛ", ["ou"] = "ə", ["o"] = "o", ["e"] = "e", ["eu"] = "ʏ",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["iai"] = "iɛ", ["ieu"] = "iʏ",
["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "ue",
["iu"] = "y", ["iua"] = "ya", ["iuai"] = "yɛ", ["iou"] = "yə", ["iue"] = "ye",
["aen"] = "ã", ["oen"] = "ũ", ["en"] = "əŋ", ["on"] = "oŋ", ["an"] = "aŋ",
["ienn"] = "iɪ̃", ["iaen"] = "iã", ["ioen"] = "iũ", ["in"] = "iŋ", ["ien"] = "iəŋ", ["ion"] = "ioŋ", ["ian"] = "iaŋ",
["uaen"] = "uã", ["uen"] = "uəŋ", ["uan"] = "uaŋ",
["iun"] = "yəŋ", ["iuan"] = "yaŋ",
["aq"] = "aʔ", ["oq"] = "ɔʔ", ["eq"] = "əʔ", ["oeq"] = "oʔ",
["iq"] = "ieʔ", ["iaq"] = "iaʔ", ["ioq"] = "iɔʔ", ["ieq"] = "iəʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["iuaq"] = "yaʔ", ["ioeq"] = "yoʔ",
["er"] = "er", ["y"] = "z̩",
},
['jx'] = {
["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["oe"] = "ɤə", ["o"] = "o",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ieu"] = "iəu",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uɤə",
["iu"] = "y", ["ioe"] = "yɤə",
["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ",
["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ioŋ",
["uen"] = "un", ["yan"] = "uã", ["uaon"] = "uɑ̃",
["iun"] = "yn",
["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ",
["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ", ["uaq"] = "uaʔ",
["iuq"] = "yəʔ",
["er"] = "l̩", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['tx'] = {
["a"] = "a", ["ae"] = "æ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "əɯ",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iæ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iəɯ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uæ", ["ui"] = "ui", ["ue"] = "uɛ",
["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "ən", ["on"] = "õ",
["ian"] = "iã", ["iaon"] = "iɔ̃", ["in"] = "in", ["ion"] = "ion",
["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "un",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["er"] = "əl", ["y"] = "z̩"
},
['hn'] = {
["a"] = "a", ["o"] = "o", ["e"] = "e", ["oe"] = "ɤ", ["ae"] = "ɛ", ["au"] = "ɔ", ["eu"] = "ɤɯ",
["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["iae"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤɯ",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uɤ", ["uae"] = "uɛ",
["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "õ",
["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ion",
["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["er"] = "əl", ["y"] = "z̩"
},
['hy'] = {
["a"] = "a", ["ae"] = "ɛ", ["o"] = "o", ["e"] = "e", ["oe"] = "ə", ["au"] = "ɔ",
["i"] = "i", ["ia"] = "ia", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uə",
["iu"] = "y", ["ioe"] = "yə",
["an"] = "ã", ["en"] = "ən", ["aon"] = "ɔ̃", ["on"] = "õ",
["ian"] = "iã", ["in"] = "iən", ["iaon"] = "iɔ̃", ["ion"] = "iõ",
["uan"] = "ã", ["uen"] = "uən", ["uaon"] = "ɔ̃",
["iun"] = "yən",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ",
["er"] = "l̩", ["y"] = "z̩"
},
['dq'] = {
["a"] = "a", ["au"] = "ɔ", ["uo"] = "uɔ", ["e"] = "ɛ", ["oe"] = "ɤ",
["i"] = "i", ["ieu"] = "iʏ", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uɔ", ["ue"] = "uɛ", ["uoe"] = "uɤ",
["an"] = "ã", ["en"] = "ən", ["on"] = "oŋ",
["ian"] = "iã", ["in"] = "in", ["ion"] = "ioŋ",
["uan"] = "uã", ["uen"] = "uən",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["uoq"] = "uoʔ",
["er"] = "əl", ["y"] = "z̩"
},
['hz'] = {
["a"] = "ɑ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei",
["i"] = "i", ["ia"] = "iɑ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iø",
["u"] = "u", ["ua"] = "ua", ["ue"] = "uɛ", ["uo"] = "uo", ["uei"] = "ui",
["iu"] = "y",
["aen"] = "ẽ̞", ["en"] = "en", ["an"] = "ɑŋ", ["on"] = "oŋ",
["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["ien"] = "iẽ̞", ["in"] = "in", ["ian"] = "iæ̃", ["ion"] = "ioŋ",
["iaq"] = "iɑʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uen"] = "un", ["uan"] = "uæ̃", ["uon"] = "uõ",
["uaq"] = "uɑʔ", ["uoq"] = "uoʔ",
["iuon"] = "yõ", ["iun"] = "yn",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ",
-- old period, no official wugniu:
["eu"] = "ey",
-- zw stuff
["uwa"] = "zʷa", ["uwe"] = "zʷɛ", ["uwei"] = "zʷei",
["uwan"] = "zʷæ̃", ["uwaq"] = "zʷɑʔ", ["uwon"] = "zʷõ", ["uwen"] = "zʷen", ["uweq"] = "zʷəʔ",
},
['xs'] = { --與學堂城厢點大體一致,欠大西之 eʔ 及 ieʔ,添 yo,但 ae 及 oe 具鼻音化
["a"] = "a", ["e"] = "e", ["o"] = "o", ["au"] = "ɒ",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɒ",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo",
["iu"] = "y", ["iuo"] = "yo",
["ae"] = "ɛ̃", ["oe"] = "ə̃",
["ie"] = "iɛ̃", ["ioe"] = "yə̃",
["uae"] = "uɛ̃", ["uoe"] = "uə̃",
["an"] = "ã", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "ã", ["in"] = "iŋ",
["uan"] = "uã", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ", ["uon"] = "uoŋ",
["iuaon"] = "yɒ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "iəʔ",
["uaq"] = "uaʔ", ["uoq"] = "uoʔ",
["er"] = "ɚ", ["y"] = "z̩"
},
['fy'] = {
["a"] = "a", ["ae"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ou"] = "ʊ", ["ei"] = "ei",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["iau"] = "iɔ", ["iou"] = "iʊ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uo"] = "uo",
["iu"] = "y", ["iuae"] = "yɛ", ["iuo"] = "yo",
["an"] = "ã", ["aen"] = "ɛ̃", ["aon"] = "ɔ̃", ["en"] = "eŋ", ["on"] = "oŋ",
["ian"] = "iã", ["iaen"] = "iɛ̃", ["in"] = "iŋ",
["uan"] = "uã", ["uaen"] = "uɛ̃", ["uaon"] = "uɔ̃", ["uen"] = "ueŋ",
["iuaen"] = "yɛ̃", ["iaon"] = "yɔ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ",
["aq"] = "ɐʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iɐʔ", ["iq"] = "iɪʔ", ["ioq"] = "yoʔ",
["uaq"] = "uɐʔ", ["uoq"] = "uoʔ",
["er"] = "l̩", ["y"] = "z̩"
},
['sx'] = {
["a"] = "a", ["e"] = "e", ["eu"] = "ɤ", ["au"] = "ɒ", ["o"] = "o",
["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ieu"] = "iɤ", ["iau"] = "iɒ", ["io"] = "io",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo",
["iu"] = "y",
["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "ø̃", ["an"] = "aŋ", ["en"] = "əŋ", ["aon"] = "ɒŋ", ["on"] = "oŋ",
["iaen"] = "iæ̃", ["ien"] = "iẽ", ["ioen"] = "iø̃", ["ian"] = "iaŋ", ["in"] = "iŋ", ["iaon"] = "iɒŋ", ["ion"] = "ioŋ",
["uaen"] = "uæ̃", ["uen"] = "uẽ", ["uoen"] = "uø̃", ["uan"] = "uaŋ", ["uaon"] = "uɒŋ", ["uon"] = "uoŋ",
["aq"] = "aʔ", ["aeq"] = "æʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "ieʔ", ["ioeq"] = "iøʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["ueq"] = "ueʔ", ["uoeq"] = "uøʔ", ["uoq"] = "uoʔ",
["er"] = "əl", ["y"] = "z̩"
},
['cx'] = { --check btwn sources
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["eu"] = "ɤ",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ue",
["iu"] = "y",
["an"] = "ã", ["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "œ̃", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "iã", ["ien"] = "iẽ", ["ioen"] = "yœ̃", ["iaon"] = "iɔ̃", ["in"] = "iŋ", ["iun"] = "yəŋ", ["ion"] = "ioŋ",
["uan"] = "uã", ["uaen"] = "uæ̃", ["uoen"] = "uœ̃", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "eʔ",
["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "ieʔ", ["iuq"] = "yeʔ",
["uaq"] = "uaʔ", ["ueq"] = "ueʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['nb'] = {
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø", ["ei"] = "ɐɪ", ["eu"] = "œʏ", ["ou"] = "əu",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie", ["ieu"] = "iʏ",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["uae"] = "uɛ", ["uei"] = "uɐɪ",
["iu"] = "y", ["io"] = "yo",
["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["aq"] = "ɐʔ", ["oq"] = "oʔ",
["ian"] = "iã", ["in"] = "iŋ",
["iaq"] = "iɐʔ", ["iq"] = "iɪʔ",
["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ",
["uaq"] = "uɐʔ",
["iun"] = "yəŋ", ["ion"] = "yoŋ",
["iuq"] = "yəʔ", ["ioq"] = "yoʔ",
["yun"] = "z̩ʷøŋ",
["yuq"] = "z̩ʷœʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['zs'] = { --與學堂一致, ai = a~i, uɛ~ = uɛ
["a"] = "a", ["au"] = "ɔ", ["o"] = "o", ["e"] = "e", ["ei"] = "ai", ["ou"] = "au", ["ae"] = "ɛ",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iu", ["iae"] = "iɛ",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ɔ", ["uei"] = "uai", ["uae"] = "uɛ",
["iu"] = "y",
["oen"] = "ø", ["an"] = "ã", ["aon"] = "ɔ", ["en"] = "ɐŋ", ["on"] = "oŋ",
["ien"] = "ĩ", ["ioen"] = "ỹ", ["ian"] = "iã", ["in"] = "iŋ", ["ion"] = "yoŋ",
["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ", ["uen"] = "uɐŋ",
["aq"] = "ɐʔ", ["oq"] = "oʔ",
["iaq"] = "iɐʔ", ["iq"] = "iəʔ",
["uaq"] = "uɐʔ",
["iuq"] = "yɐʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
}
data.tone_contours = {
--if a lect is missing tone sandhi then uhh i'll add them later
['sh'] = {
["10"] = "", ["1-"] = "33",
["11"] = "53", ["21"] = "55 21", ["31"] = "55 33 21", ["41"] = "55 33 33 21", ["51"] = "55 33 33 33 21",
["15"] = "34", ["25"] = "33 44", ["35"] = "33 55 21", ["45"] = "33 55 33 21", ["55"] = "33 55 33 33 21",
["16"] = "23", ["26"] = "22 44", ["36"] = "22 55 21", ["46"] = "22 55 33 21", ["56"] = "22 55 33 33 21",
["17"] = "55", ["27"] = "33 44", ["37"] = "33 55 21", ["47"] = "33 55 33 21", ["57"] = "33 55 33 33 21",
["18"] = "12", ["28"] = "11 23", ["38"] = "11 22 23", ["48"] = "11 22 22 23", ["58"] = "22 55 33 33 21",
--RPS
["1s"] = "44", ["5s"] = "44", ["6s"] = "33", ["7s"] = "44", ["8s"] = "22",
["multiple"] = "33"
},
['jd'] = {
["10"] = "",
["11"] = "53", ["12"] = "31", ["13"] = "34", ["14"] = "13", ["15"] = "34", ["16"] = "13", ["17"] = "55", ["18"] = "12",
["211"] = "55 21", ["212"] = "55 21", ["213"] = "45 21", ["214"] = "45 21", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "55 21", ["218"] = "55 21",
["221"] = "22 53", ["222"] = "22 53", ["223"] = "24 21", ["224"] = "24 21", ["225"] = "23 44", ["226"] = "23 44", ["227"] = "24 21", ["228"] = "24 21",
["231"] = "35 21", ["232"] = "35 21", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "33 53", ["236"] = "33 53", ["237"] = "35 21", ["238"] = "35 21",
["241"] = "22 53", ["242"] = "22 53", ["243"] = "24 21", ["244"] = "24 21", ["245"] = "22 24", ["246"] = "22 24", ["247"] = "24 21", ["248"] = "24 21",
["251"] = "35 21", ["252"] = "35 21", ["253"] = "35 21", ["254"] = "35 21", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 21", ["258"] = "35 21",
["261"] = "22 53", ["262"] = "22 53", ["263"] = "24 21", ["264"] = "24 21", ["265"] = "24 44", ["266"] = "24 44", ["267"] = "24 21", ["268"] = "24 21",
["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 21", ["274"] = "44 21", ["275"] = "44 44", ["276"] = "44 44", ["277"] = "44 21", ["278"] = "44 21",
["281"] = "11 24", ["282"] = "11 24", ["283"] = "11 24", ["284"] = "11 24", ["285"] = "11 24", ["286"] = "11 24", ["287"] = "22 44", ["288"] = "22 44",
["3111"] = "55 33 21", ["3112"] = "55 33 21", ["3113"] = "55 33 21", ["3114"] = "55 33 21", ["3115"] = "55 33 21", ["3116"] = "55 33 21", ["3117"] = "55 33 21", ["3118"] = "55 33 21",
["3121"] = "55 33 21", ["3122"] = "55 33 21", ["3123"] = "55 33 21", ["3124"] = "55 33 21", ["3125"] = "55 33 21", ["3126"] = "55 33 21", ["3127"] = "55 33 21", ["3128"] = "55 33 21",
["3131"] = "35 33 21", ["3132"] = "35 33 21", ["3133"] = "35 33 21", ["3134"] = "35 33 21", ["3135"] = "35 33 21", ["3136"] = "35 33 21", ["3137"] = "35 33 21", ["3138"] = "35 33 21",
["3141"] = "35 33 21", ["3142"] = "35 33 21", ["3143"] = "35 33 21", ["3144"] = "35 33 21", ["3145"] = "35 33 21", ["3146"] = "35 33 21", ["3147"] = "35 33 21", ["3148"] = "35 33 21",
["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21",
["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21",
["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 21", ["3178"] = "55 33 21",
["3181"] = "55 33 21", ["3182"] = "55 33 21", ["3183"] = "55 33 21", ["3184"] = "55 33 21", ["3185"] = "55 33 21", ["3186"] = "55 33 21", ["3187"] = "55 33 21", ["3188"] = "55 33 21",
["3211"] = "22 55 21", ["3212"] = "22 55 21", ["3213"] = "22 55 21", ["3214"] = "22 55 21", ["3215"] = "22 55 44", ["3216"] = "22 55 44", ["3217"] = "22 55 21", ["3218"] = "22 55 21",
["3221"] = "22 55 21", ["3222"] = "22 55 21", ["3223"] = "22 55 21", ["3224"] = "22 55 21", ["3225"] = "22 55 44", ["3226"] = "22 55 44", ["3227"] = "22 55 21", ["3228"] = "22 55 21",
["3231"] = "24 33 21", ["3232"] = "24 33 21", ["3233"] = "24 33 21", ["3234"] = "24 33 21", ["3235"] = "24 33 21", ["3236"] = "24 33 21", ["3237"] = "24 33 21", ["3238"] = "24 33 21",
["3241"] = "24 33 21", ["3242"] = "24 33 21", ["3243"] = "24 33 21", ["3244"] = "24 33 21", ["3245"] = "24 33 21", ["3246"] = "24 33 21", ["3247"] = "24 33 21", ["3248"] = "24 33 21",
["3251"] = "22 55 21", ["3252"] = "22 55 21", ["3253"] = "22 55 21", ["3254"] = "22 55 21", ["3255"] = "22 55 44", ["3256"] = "22 55 44", ["3257"] = "22 55 21", ["3258"] = "22 55 21",
["3261"] = "22 55 21", ["3262"] = "22 55 21", ["3263"] = "22 55 21", ["3264"] = "22 55 21", ["3265"] = "22 55 44", ["3266"] = "22 55 44", ["3267"] = "22 55 21", ["3268"] = "22 55 21",
["3271"] = "22 55 21", ["3272"] = "22 55 21", ["3273"] = "22 55 21", ["3274"] = "22 55 21", ["3275"] = "22 55 44", ["3276"] = "22 55 44", ["3277"] = "22 55 21", ["3278"] = "22 55 21",
["3281"] = "22 55 21", ["3282"] = "22 55 21", ["3283"] = "22 55 21", ["3284"] = "22 55 21", ["3285"] = "22 55 44", ["3286"] = "22 55 44", ["3287"] = "22 55 21", ["3288"] = "22 55 21",
["3311"] = "33 55 21", ["3312"] = "33 55 21", ["3313"] = "33 55 21", ["3314"] = "33 55 21", ["3315"] = "35 33 21", ["3316"] = "35 33 21", ["3317"] = "33 55 21", ["3318"] = "33 55 21",
["3321"] = "33 55 21", ["3322"] = "33 55 21", ["3323"] = "33 55 21", ["3324"] = "33 55 21", ["3325"] = "35 33 21", ["3326"] = "35 33 21", ["3327"] = "33 55 21", ["3328"] = "33 55 21",
["3331"] = "33 55 21", ["3332"] = "33 55 21", ["3333"] = "33 55 21", ["3334"] = "33 55 21", ["3335"] = "35 33 21", ["3336"] = "35 33 21", ["3337"] = "33 55 21", ["3338"] = "33 55 21",
["3341"] = "33 55 21", ["3342"] = "33 55 21", ["3343"] = "33 55 21", ["3344"] = "33 55 21", ["3345"] = "35 33 21", ["3346"] = "35 33 21", ["3347"] = "33 55 21", ["3348"] = "33 55 21",
["3351"] = "33 55 21", ["3352"] = "33 55 21", ["3353"] = "33 55 21", ["3354"] = "33 55 21", ["3355"] = "33 55 21", ["3356"] = "33 55 21", ["3357"] = "33 55 21", ["3358"] = "33 55 21",
["3361"] = "33 55 21", ["3362"] = "33 55 21", ["3363"] = "33 55 21", ["3364"] = "33 55 21", ["3365"] = "33 55 21", ["3366"] = "33 55 21", ["3367"] = "33 55 21", ["3368"] = "33 55 21",
["3371"] = "33 55 21", ["3372"] = "33 55 21", ["3373"] = "33 55 21", ["3374"] = "33 55 21", ["3375"] = "35 33 21", ["3376"] = "35 33 21", ["3377"] = "33 55 21", ["3378"] = "33 55 21",
["3381"] = "33 55 21", ["3382"] = "33 55 21", ["3383"] = "33 55 21", ["3384"] = "33 55 21", ["3385"] = "35 33 21", ["3386"] = "35 33 21", ["3387"] = "33 55 21", ["3388"] = "33 55 21",
["3411"] = "22 55 21", ["3412"] = "22 55 21", ["3413"] = "22 55 21", ["3414"] = "22 55 21", ["3415"] = "22 55 44", ["3416"] = "22 55 44", ["3417"] = "22 55 21", ["3418"] = "22 55 21",
["3421"] = "22 55 21", ["3422"] = "22 55 21", ["3423"] = "22 55 21", ["3424"] = "22 55 21", ["3425"] = "22 55 44", ["3426"] = "22 55 44", ["3427"] = "22 55 21", ["3428"] = "22 55 21",
["3431"] = "22 55 21", ["3432"] = "22 55 21", ["3433"] = "22 55 21", ["3434"] = "22 55 21", ["3435"] = "35 33 21", ["3436"] = "35 33 21", ["3437"] = "35 33 21", ["3438"] = "35 33 21",
["3441"] = "22 55 21", ["3442"] = "22 55 21", ["3443"] = "22 55 21", ["3444"] = "22 55 21", ["3445"] = "35 33 21", ["3446"] = "35 33 21", ["3447"] = "35 33 21", ["3448"] = "35 33 21",
["3451"] = "22 55 21", ["3452"] = "22 55 21", ["3453"] = "22 55 21", ["3454"] = "22 55 21", ["3455"] = "22 55 44", ["3456"] = "22 55 44", ["3457"] = "22 55 21", ["3458"] = "22 55 21",
["3461"] = "22 55 21", ["3462"] = "22 55 21", ["3463"] = "22 55 21", ["3464"] = "22 55 21", ["3465"] = "22 55 44", ["3466"] = "22 55 44", ["3467"] = "22 55 21", ["3468"] = "22 55 21",
["3471"] = "22 55 21", ["3472"] = "22 55 21", ["3473"] = "22 55 21", ["3474"] = "22 55 21", ["3475"] = "22 55 44", ["3476"] = "22 55 44", ["3477"] = "22 55 21", ["3478"] = "22 55 21",
["3481"] = "22 55 21", ["3482"] = "22 55 21", ["3483"] = "22 55 21", ["3484"] = "22 55 21", ["3485"] = "22 55 44", ["3486"] = "22 55 44", ["3487"] = "22 55 21", ["3488"] = "22 55 21",
["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "24 33 21", ["3516"] = "24 33 21", ["3517"] = "33 55 21", ["3518"] = "33 55 21",
["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "24 33 21", ["3526"] = "24 33 21", ["3527"] = "33 55 21", ["3528"] = "33 55 21",
["3531"] = "55 33 21", ["3532"] = "55 33 21", ["3533"] = "35 33 21", ["3534"] = "35 33 21", ["3535"] = "35 33 21", ["3536"] = "35 33 21", ["3537"] = "35 33 21", ["3538"] = "35 33 21",
["3541"] = "24 33 21", ["3542"] = "24 33 21", ["3543"] = "24 33 21", ["3544"] = "24 33 21", ["3545"] = "24 33 21", ["3546"] = "24 33 21", ["3547"] = "24 33 21", ["3548"] = "24 33 21",
["3551"] = "44 44 53", ["3552"] = "44 44 53", ["3553"] = "44 44 53", ["3554"] = "44 44 53", ["3555"] = "44 44 53", ["3556"] = "44 44 53", ["3557"] = "44 44 53", ["3558"] = "44 44 53",
["3561"] = "44 44 53", ["3562"] = "44 44 53", ["3563"] = "44 44 53", ["3564"] = "44 44 53", ["3565"] = "44 44 53", ["3566"] = "44 44 53", ["3567"] = "44 44 53", ["3568"] = "44 44 53",
["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "35 33 21", ["3576"] = "35 33 21", ["3577"] = "33 55 21", ["3578"] = "33 55 21",
["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "35 33 21", ["3586"] = "35 33 21", ["3587"] = "33 55 21", ["3588"] = "33 55 21",
["3611"] = "22 55 21", ["3612"] = "22 55 21", ["3613"] = "22 55 21", ["3614"] = "22 55 21", ["3615"] = "22 55 44", ["3616"] = "22 55 44", ["3617"] = "22 55 21", ["3618"] = "22 55 21",
["3621"] = "22 55 21", ["3622"] = "22 55 21", ["3623"] = "22 55 21", ["3624"] = "22 55 21", ["3625"] = "22 55 44", ["3626"] = "22 55 44", ["3627"] = "22 55 21", ["3628"] = "22 55 21",
["3631"] = "22 55 21", ["3632"] = "22 55 21", ["3633"] = "22 55 21", ["3634"] = "22 55 21", ["3635"] = "24 33 21", ["3636"] = "24 33 21", ["3637"] = "24 33 21", ["3638"] = "24 33 21",
["3641"] = "24 33 21", ["3642"] = "24 33 21", ["3643"] = "24 33 21", ["3644"] = "24 33 21", ["3645"] = "24 33 21", ["3646"] = "24 33 21", ["3647"] = "24 33 21", ["3648"] = "24 33 21",
["3651"] = "22 55 21", ["3652"] = "22 55 21", ["3653"] = "22 55 21", ["3654"] = "22 55 21", ["3655"] = "22 55 44", ["3656"] = "22 55 44", ["3657"] = "22 55 21", ["3658"] = "22 55 21",
["3661"] = "22 55 21", ["3662"] = "22 55 21", ["3663"] = "22 55 21", ["3664"] = "22 55 21", ["3665"] = "22 55 44", ["3666"] = "22 55 44", ["3667"] = "22 55 21", ["3668"] = "22 55 21",
["3671"] = "22 55 21", ["3672"] = "22 55 21", ["3673"] = "22 55 21", ["3674"] = "22 55 21", ["3675"] = "22 55 44", ["3676"] = "22 55 44", ["3677"] = "22 55 21", ["3678"] = "22 55 21",
["3681"] = "22 55 21", ["3682"] = "22 55 21", ["3683"] = "22 55 21", ["3684"] = "22 55 21", ["3685"] = "22 55 44", ["3686"] = "22 55 44", ["3687"] = "22 55 21", ["3688"] = "22 55 21",
["3711"] = "33 55 21", ["3712"] = "33 55 21", ["3713"] = "33 55 21", ["3714"] = "33 55 21", ["3715"] = "33 55 44", ["3716"] = "33 55 44", ["3717"] = "33 55 21", ["3718"] = "33 55 21",
["3721"] = "33 55 21", ["3722"] = "33 55 21", ["3723"] = "33 55 21", ["3724"] = "33 55 21", ["3725"] = "33 55 44", ["3726"] = "33 55 44", ["3727"] = "33 55 21", ["3728"] = "33 55 21",
["3731"] = "33 55 21", ["3732"] = "33 55 21", ["3733"] = "33 55 21", ["3734"] = "33 55 21", ["3735"] = "33 55 21", ["3736"] = "33 55 21", ["3737"] = "33 55 21", ["3738"] = "33 55 21",
["3741"] = "33 55 21", ["3742"] = "33 55 21", ["3743"] = "33 55 21", ["3744"] = "33 55 21", ["3745"] = "33 55 21", ["3746"] = "33 55 21", ["3747"] = "33 55 21", ["3748"] = "33 55 21",
["3751"] = "33 55 21", ["3752"] = "33 55 21", ["3753"] = "33 55 21", ["3754"] = "33 55 21", ["3755"] = "33 55 44", ["3756"] = "33 55 44", ["3757"] = "33 55 21", ["3758"] = "33 55 21",
["3761"] = "33 55 21", ["3762"] = "33 55 21", ["3763"] = "33 55 21", ["3764"] = "33 55 21", ["3765"] = "33 55 44", ["3766"] = "33 55 44", ["3727"] = "33 55 21", ["3768"] = "33 55 21",
["3771"] = "33 55 21", ["3772"] = "33 55 21", ["3773"] = "33 55 21", ["3774"] = "33 55 21", ["3775"] = "33 55 44", ["3776"] = "33 55 44", ["3777"] = "33 55 21", ["3778"] = "33 55 21",
["3781"] = "33 55 21", ["3782"] = "33 55 21", ["3783"] = "33 55 21", ["3784"] = "33 55 21", ["3785"] = "33 55 44", ["3786"] = "33 55 44", ["3787"] = "33 55 21", ["3788"] = "33 55 21",
["3811"] = "11 11 24", ["3812"] = "11 11 24", ["3813"] = "11 11 24", ["3814"] = "11 11 24", ["3815"] = "11 11 24", ["3816"] = "11 11 24", ["3817"] = "11 11 24", ["3818"] = "11 11 24",
["3821"] = "11 11 24", ["3822"] = "11 11 24", ["3823"] = "11 11 24", ["3824"] = "11 11 24", ["3825"] = "11 11 24", ["3826"] = "11 11 24", ["3827"] = "11 11 24", ["3828"] = "11 11 24",
["3831"] = "22 55 21", ["3832"] = "22 55 21", ["3833"] = "22 55 21", ["3834"] = "22 55 21", ["3835"] = "22 55 21", ["3836"] = "22 55 21", ["3837"] = "22 55 21", ["3838"] = "22 55 21",
["3841"] = "22 55 21", ["3842"] = "22 55 21", ["3843"] = "22 55 21", ["3844"] = "22 55 21", ["3845"] = "22 55 21", ["3846"] = "22 55 21", ["3847"] = "22 55 21", ["3848"] = "22 55 21",
["3851"] = "22 55 21", ["3852"] = "22 55 21", ["3853"] = "22 55 21", ["3854"] = "22 55 21", ["3855"] = "22 55 21", ["3856"] = "22 55 21", ["3857"] = "22 55 21", ["3858"] = "22 55 21",
["3861"] = "22 55 21", ["3862"] = "22 55 21", ["3863"] = "22 55 21", ["3864"] = "22 55 21", ["3865"] = "22 55 21", ["3866"] = "22 55 21", ["3867"] = "22 55 21", ["3868"] = "22 55 21",
["3871"] = "11 11 24", ["3872"] = "11 11 24", ["3873"] = "11 11 24", ["3874"] = "11 11 24", ["3875"] = "11 11 24", ["3876"] = "11 11 24", ["3877"] = "11 11 24", ["3878"] = "11 11 24",
["3881"] = "11 11 24", ["3882"] = "11 11 24", ["3883"] = "11 11 24", ["3884"] = "11 11 24", ["3885"] = "11 11 24", ["3886"] = "11 11 24", ["3887"] = "11 11 24", ["3888"] = "11 11 24",
},
['sj'] = {
["10"] = "",
["11"] = "53", ["12"] = "31", ["13"] = "44", ["14"] = "22", ["15"] = "35", ["16"] = "13", ["17"] = "44", ["18"] = "22",
["211"] = "35 53", ["212"] = "35 53", ["213"] = "35 53", ["214"] = "35 53", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "53 31", ["218"] = "53 31",
["221"] = "15 53", ["222"] = "15 53", ["223"] = "15 53", ["224"] = "15 53", ["225"] = "24 31", ["226"] = "24 31", ["227"] = "22 22", ["228"] = "22 22",
["231"] = "35 31", ["232"] = "35 31", ["233"] = "35 31", ["234"] = "35 31", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "35 31", ["238"] = "35 31",
["241"] = "24 31", ["242"] = "24 31", ["243"] = "24 31", ["244"] = "24 31", ["245"] = "22 35", ["246"] = "22 35", ["247"] = "24 31", ["248"] = "24 31",
["251"] = "53 31", ["252"] = "53 31", ["253"] = "53 31", ["254"] = "53 31", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 31", ["258"] = "35 31",
["261"] = "22 22", ["262"] = "22 22", ["263"] = "22 22", ["264"] = "22 22", ["265"] = "22 35", ["266"] = "22 35", ["267"] = "24 31", ["268"] = "24 31",
["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "44 35", ["276"] = "44 35", ["277"] = "44 44", ["278"] = "44 44",
["281"] = "22 53", ["282"] = "22 53", ["283"] = "22 22", ["284"] = "22 22", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 22", ["288"] = "22 22",
["3111"] = "35 55 31", ["3112"] = "35 55 31", ["3113"] = "35 55 31", ["3114"] = "35 55 31", ["3115"] = "35 55 31", ["3116"] = "35 55 31", ["3117"] = "55 33 31", ["3118"] = "55 33 31",
["3121"] = "35 55 31", ["3122"] = "35 55 31", ["3123"] = "35 55 31", ["3124"] = "35 55 31", ["3125"] = "35 55 31", ["3126"] = "35 55 31", ["3127"] = "55 33 31", ["3128"] = "55 33 31",
["3131"] = "55 33 31", ["3132"] = "55 33 31", ["3133"] = "55 33 31", ["3134"] = "55 33 31", ["3135"] = "35 55 31", ["3136"] = "35 55 31", ["3137"] = "55 33 31", ["3138"] = "55 33 31",
["3141"] = "55 33 31", ["3142"] = "55 33 31", ["3143"] = "55 33 31", ["3144"] = "55 33 31", ["3145"] = "35 55 31", ["3146"] = "35 55 31", ["3147"] = "55 33 31", ["3148"] = "55 33 31",
["3151"] = "55 33 31", ["3152"] = "55 33 31", ["3153"] = "55 33 31", ["3154"] = "55 33 31", ["3155"] = "55 33 31", ["3156"] = "55 33 31", ["3157"] = "55 33 31", ["3158"] = "55 33 31",
["3161"] = "55 33 31", ["3162"] = "55 33 31", ["3163"] = "55 33 31", ["3164"] = "55 33 31", ["3165"] = "55 33 31", ["3166"] = "55 33 31", ["3167"] = "55 33 31", ["3168"] = "55 33 31",
["3171"] = "35 55 31", ["3172"] = "35 55 31", ["3173"] = "55 33 31", ["3174"] = "55 33 31", ["3175"] = "55 33 31", ["3176"] = "55 33 31", ["3177"] = "55 33 31", ["3178"] = "55 33 31",
["3181"] = "35 55 31", ["3182"] = "35 55 31", ["3183"] = "55 33 31", ["3184"] = "55 33 31", ["3185"] = "55 33 31", ["3186"] = "55 33 31", ["3187"] = "55 33 31", ["3188"] = "55 33 31",
["3211"] = "13 55 31", ["3212"] = "13 55 31", ["3213"] = "13 55 31", ["3214"] = "13 55 31", ["3215"] = "13 55 31", ["3216"] = "13 55 31", ["3217"] = "22 22 22", ["3218"] = "22 22 22",
["3221"] = "13 55 31", ["3222"] = "13 55 31", ["3223"] = "13 55 31", ["3224"] = "13 55 31", ["3225"] = "13 55 31", ["3226"] = "13 55 31", ["3227"] = "22 22 22", ["3228"] = "22 22 22",
["3231"] = "24 33 31", ["3232"] = "24 33 31", ["3233"] = "24 33 31", ["3234"] = "24 33 31", ["3235"] = "13 55 31", ["3236"] = "13 55 31", ["3237"] = "24 33 31", ["3238"] = "24 33 31",
["3241"] = "24 33 31", ["3242"] = "24 33 31", ["3243"] = "24 33 31", ["3244"] = "24 33 31", ["3245"] = "13 55 31", ["3246"] = "13 55 31", ["3247"] = "24 33 31", ["3248"] = "24 33 31",
["3251"] = "24 33 31", ["3252"] = "24 33 31", ["3253"] = "24 33 31", ["3254"] = "24 33 31", ["3255"] = "24 33 31", ["3256"] = "24 33 31", ["3257"] = "24 33 31", ["3258"] = "24 33 31",
["3261"] = "24 33 31", ["3262"] = "24 33 31", ["3263"] = "24 33 31", ["3264"] = "24 33 31", ["3265"] = "24 33 31", ["3266"] = "24 33 31", ["3267"] = "22 22 22", ["3268"] = "22 22 22",
["3271"] = "13 55 31", ["3272"] = "13 55 31", ["3273"] = "22 22 22", ["3274"] = "22 22 22", ["3275"] = "22 22 22", ["3276"] = "22 22 22", ["3277"] = "22 22 22", ["3278"] = "22 22 22",
["3281"] = "13 55 31", ["3282"] = "13 55 31", ["3283"] = "22 22 22", ["3284"] = "22 22 22", ["3285"] = "22 22 22", ["3286"] = "22 22 22", ["3287"] = "22 22 22", ["3288"] = "22 22 22",
["3311"] = "33 55 31", ["3312"] = "33 55 31", ["3313"] = "33 55 31", ["3314"] = "33 55 31", ["3315"] = "35 33 31", ["3316"] = "35 33 31", ["3317"] = "33 55 31", ["3318"] = "33 55 31",
["3321"] = "33 55 31", ["3322"] = "33 55 31", ["3323"] = "33 55 31", ["3324"] = "33 55 31", ["3325"] = "35 33 31", ["3326"] = "35 33 31", ["3327"] = "33 55 31", ["3328"] = "33 55 31",
["3331"] = "33 55 31", ["3332"] = "33 55 31", ["3333"] = "33 55 31", ["3334"] = "33 55 31", ["3335"] = "35 33 31", ["3336"] = "35 33 31", ["3337"] = "33 55 31", ["3338"] = "33 55 31",
["3341"] = "33 55 31", ["3342"] = "33 55 31", ["3343"] = "33 55 31", ["3344"] = "33 55 31", ["3345"] = "35 33 31", ["3346"] = "35 33 31", ["3347"] = "33 55 31", ["3348"] = "33 55 31",
["3351"] = "33 55 31", ["3352"] = "33 55 31", ["3353"] = "33 55 31", ["3354"] = "33 55 31", ["3355"] = "35 33 31", ["3356"] = "35 33 31", ["3357"] = "33 55 31", ["3358"] = "33 55 31",
["3361"] = "33 55 31", ["3362"] = "33 55 31", ["3363"] = "33 55 31", ["3364"] = "33 55 31", ["3365"] = "35 33 31", ["3366"] = "35 33 31", ["3367"] = "33 55 31", ["3368"] = "33 55 31",
["3371"] = "33 55 53", ["3372"] = "33 55 53", ["3373"] = "33 55 31", ["3374"] = "33 55 31", ["3375"] = "35 33 31", ["3376"] = "35 33 31", ["3377"] = "33 55 31", ["3378"] = "33 55 31",
["3381"] = "33 55 53", ["3382"] = "33 55 53", ["3383"] = "33 55 31", ["3384"] = "33 55 31", ["3385"] = "35 33 31", ["3386"] = "35 33 31", ["3387"] = "33 55 31", ["3388"] = "33 55 31",
["3411"] = "22 55 31", ["3412"] = "22 55 31", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "24 33 31", ["3416"] = "24 33 31", ["3417"] = "22 55 31", ["3418"] = "22 55 31",
["3421"] = "22 55 31", ["3422"] = "22 55 31", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "24 33 31", ["3426"] = "24 33 31", ["3427"] = "22 55 31", ["3428"] = "22 55 31",
["3431"] = "22 55 31", ["3432"] = "22 55 31", ["3433"] = "22 55 31", ["3434"] = "22 55 31", ["3435"] = "24 33 31", ["3436"] = "24 33 31", ["3437"] = "22 55 31", ["3438"] = "22 55 31",
["3441"] = "22 55 31", ["3442"] = "22 55 31", ["3443"] = "22 55 31", ["3444"] = "22 55 31", ["3445"] = "24 33 31", ["3446"] = "24 33 31", ["3447"] = "22 55 31", ["3448"] = "22 55 31",
["3451"] = "22 55 31", ["3452"] = "22 55 31", ["3453"] = "22 55 31", ["3454"] = "22 55 31", ["3455"] = "24 33 31", ["3456"] = "24 33 31", ["3457"] = "22 55 31", ["3458"] = "22 55 31",
["3461"] = "22 55 31", ["3462"] = "22 55 31", ["3463"] = "22 55 31", ["3464"] = "22 55 31", ["3465"] = "24 33 31", ["3466"] = "24 33 31", ["3467"] = "22 55 31", ["3468"] = "22 55 31",
["3471"] = "22 55 53", ["3472"] = "22 55 53", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "24 33 31", ["3476"] = "24 33 31", ["3477"] = "22 55 31", ["3478"] = "22 55 31",
["3481"] = "22 55 53", ["3482"] = "22 55 53", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "24 33 31", ["3486"] = "24 33 31", ["3487"] = "22 55 31", ["3488"] = "22 55 31",
["3511"] = "55 33 31", ["3512"] = "55 33 31", ["3513"] = "55 33 31", ["3514"] = "55 33 31", ["3515"] = "55 33 31", ["3516"] = "55 33 31", ["3517"] = "55 33 31", ["3518"] = "55 33 31",
["3521"] = "55 33 31", ["3522"] = "55 33 31", ["3523"] = "55 33 31", ["3524"] = "55 33 31", ["3525"] = "55 33 31", ["3526"] = "55 33 31", ["3527"] = "55 33 31", ["3528"] = "55 33 31",
["3531"] = "44 44 53", ["3532"] = "44 44 53", ["3533"] = "44 44 53", ["3534"] = "44 44 53", ["3535"] = "55 33 31", ["3536"] = "55 33 31", ["3537"] = "44 44 53", ["3538"] = "44 44 53",
["3541"] = "33 55 31", ["3542"] = "33 55 31", ["3543"] = "33 55 31", ["3544"] = "33 55 31", ["3545"] = "55 33 31", ["3546"] = "55 33 31", ["3547"] = "44 44 53", ["3548"] = "44 44 53",
["3551"] = "33 55 31", ["3552"] = "33 55 31", ["3553"] = "33 55 31", ["3554"] = "33 55 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "44 44 53", ["3558"] = "44 44 53",
["3561"] = "33 55 31", ["3562"] = "33 55 31", ["3563"] = "33 55 31", ["3564"] = "33 55 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "44 44 53", ["3568"] = "44 44 53",
["3571"] = "33 55 53", ["3572"] = "33 55 53", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "35 33 31", ["3576"] = "35 33 31", ["3577"] = "33 55 31", ["3578"] = "33 55 31",
["3581"] = "33 55 53", ["3582"] = "33 55 53", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "35 33 31", ["3586"] = "35 33 31", ["3587"] = "33 55 31", ["3588"] = "33 55 31",
["3611"] = "22 22 22", ["3612"] = "22 22 22", ["3613"] = "22 22 22", ["3614"] = "22 22 22", ["3615"] = "22 22 22", ["3616"] = "22 22 22", ["3617"] = "22 22 22", ["3618"] = "22 22 22",
["3621"] = "22 22 22", ["3622"] = "22 22 22", ["3623"] = "22 22 22", ["3624"] = "22 22 22", ["3625"] = "22 22 22", ["3626"] = "22 22 22", ["3627"] = "22 22 22", ["3628"] = "22 22 22",
["3631"] = "22 55 53", ["3632"] = "22 55 53", ["3633"] = "22 55 53", ["3634"] = "22 55 53", ["3635"] = "22 22 22", ["3636"] = "22 22 22", ["3637"] = "22 55 53", ["3638"] = "22 55 53",
["3641"] = "22 55 53", ["3642"] = "22 55 53", ["3643"] = "22 55 53", ["3644"] = "22 55 53", ["3645"] = "22 22 22", ["3646"] = "22 22 22", ["3647"] = "22 55 53", ["3648"] = "22 55 53",
["3651"] = "22 55 31", ["3652"] = "22 55 31", ["3653"] = "22 55 31", ["3654"] = "22 55 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "22 55 31", ["3658"] = "22 55 31",
["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "22 55 31", ["3664"] = "22 55 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31",
["3671"] = "22 55 53", ["3672"] = "22 55 53", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "24 33 31", ["3676"] = "24 33 31", ["3677"] = "22 55 31", ["3678"] = "22 55 31",
["3681"] = "22 55 53", ["3682"] = "22 55 53", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "24 33 31", ["3686"] = "24 33 31", ["3687"] = "22 55 31", ["3688"] = "22 55 31",
["3711"] = "33 55 53", ["3712"] = "33 55 53", ["3713"] = "33 55 53", ["3714"] = "33 55 53", ["3715"] = "33 55 31", ["3716"] = "33 55 31", ["3717"] = "33 55 31", ["3718"] = "33 55 31",
["3721"] = "33 55 53", ["3722"] = "33 55 53", ["3723"] = "33 55 53", ["3724"] = "33 55 53", ["3725"] = "33 55 31", ["3726"] = "33 55 31", ["3727"] = "33 55 31", ["3728"] = "33 55 31",
["3731"] = "33 55 53", ["3732"] = "33 55 53", ["3733"] = "33 55 53", ["3734"] = "33 55 53", ["3735"] = "44 44 44", ["3736"] = "44 44 44", ["3737"] = "33 55 53", ["3738"] = "33 55 53",
["3741"] = "33 55 53", ["3742"] = "33 55 53", ["3743"] = "33 55 53", ["3744"] = "33 55 53", ["3745"] = "44 44 44", ["3746"] = "44 44 44", ["3747"] = "33 55 53", ["3748"] = "33 55 53",
["3751"] = "33 55 31", ["3752"] = "33 55 31", ["3753"] = "33 55 31", ["3754"] = "33 55 31", ["3755"] = "44 44 44", ["3756"] = "44 44 44", ["3757"] = "33 55 53", ["3758"] = "33 55 53",
["3761"] = "33 55 31", ["3762"] = "33 55 31", ["3763"] = "33 55 31", ["3764"] = "33 55 31", ["3765"] = "44 44 44", ["3766"] = "44 44 44", ["3767"] = "33 55 53", ["3768"] = "33 55 53",
["3771"] = "33 55 53", ["3772"] = "33 55 53", ["3773"] = "33 55 53", ["3774"] = "33 55 53", ["3775"] = "44 44 44", ["3776"] = "44 44 44", ["3777"] = "44 44 44", ["3778"] = "44 44 44",
["3781"] = "33 55 53", ["3782"] = "33 55 53", ["3783"] = "33 55 53", ["3784"] = "33 55 53", ["3785"] = "44 44 44", ["3786"] = "44 44 44", ["3787"] = "44 44 44", ["3788"] = "44 44 44",
["3811"] = "22 55 53", ["3812"] = "22 55 53", ["3813"] = "22 55 53", ["3814"] = "22 55 53", ["3815"] = "22 55 31", ["3816"] = "22 55 31", ["3817"] = "22 55 31", ["3818"] = "22 55 31",
["3821"] = "22 55 53", ["3822"] = "22 55 53", ["3823"] = "22 55 53", ["3824"] = "22 55 53", ["3825"] = "22 55 31", ["3826"] = "22 55 31", ["3827"] = "22 55 31", ["3828"] = "22 55 31",
["3831"] = "22 55 53", ["3832"] = "22 55 53", ["3833"] = "22 55 53", ["3834"] = "22 55 53", ["3835"] = "22 22 22", ["3836"] = "22 22 22", ["3837"] = "22 55 53", ["3838"] = "22 55 53",
["3841"] = "22 55 53", ["3842"] = "22 55 53", ["3843"] = "22 55 53", ["3844"] = "22 55 53", ["3845"] = "22 22 22", ["3846"] = "22 22 22", ["3847"] = "22 55 53", ["3848"] = "22 55 53",
["3851"] = "22 55 31", ["3852"] = "22 55 31", ["3853"] = "22 55 31", ["3854"] = "22 55 31", ["3855"] = "22 22 22", ["3856"] = "22 22 22", ["3857"] = "22 55 53", ["3858"] = "22 55 53",
["3861"] = "22 55 31", ["3862"] = "22 55 31", ["3863"] = "22 55 31", ["3864"] = "22 55 31", ["3865"] = "22 22 22", ["3866"] = "22 22 22", ["3867"] = "22 55 53", ["3868"] = "22 55 53",
["3871"] = "22 55 53", ["3872"] = "22 55 53", ["3873"] = "22 55 53", ["3874"] = "22 55 53", ["3875"] = "22 22 22", ["3876"] = "22 22 22", ["3877"] = "22 22 22", ["3878"] = "22 22 22",
["3881"] = "22 55 53", ["3882"] = "22 55 53", ["3883"] = "22 55 53", ["3884"] = "22 55 53", ["3885"] = "22 22 22", ["3886"] = "22 22 22", ["3887"] = "22 22 22", ["3888"] = "22 22 22",
--!RPS! : potentially doesn't exist? source found that claims that Old SH doesn't have RPS but whether or not this applies to Songjiang may be up for debate
},
['cm'] = {
["10"] = "",
["11"] = "55", ["12"] = "24", ["13"] = "424", ["14"] = "242", ["15"] = "33", ["16"] = "313", ["17"] = "5", ["18"] = "2",
-- disylls
-- regular LPS
["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 0", ["214"] = "55 0", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 5", ["218"] = "55 5",
["221"] = "24 55", ["222"] = "24 55", ["223"] = "24 0", ["224"] = "24 0", ["225"] = "24 33", ["226"] = "24 0", ["227"] = "24 5", ["228"] = "24 5",
["231"] = "42 55", ["232"] = "42 55", ["233"] = "33 0", ["234"] = "42 33", ["235"] = "42 33", ["236"] = "42 33", ["237"] = "42 5", ["238"] = "42 5",
["241"] = "31 55", ["242"] = "31 55", ["243"] = "31 33", ["244"] = "242 0", ["245"] = "242 0", ["246"] = "242 0", ["247"] = "31 5", ["248"] = "31 5",
["251"] = "42 55", ["252"] = "42 55", ["253"] = "33 0", ["254"] = "33 0", ["255"] = "42 33", ["256"] = "33 0", ["257"] = "42 5", ["258"] = "42 5",
["261"] = "31 55", ["262"] = "31 55", ["263"] = "31 33", ["264"] = "31 33", ["265"] = "31 33", ["266"] = "31 33", ["267"] = "31 5", ["268"] = "31 5",
["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 33", ["274"] = "55 33", ["275"] = "55 33", ["276"] = "55 33", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "22 55", ["282"] = "22 55", ["283"] = "22 33", ["284"] = "22 33", ["285"] = "22 33", ["286"] = "22 33", ["287"] = "22 55", ["288"] = "22 55",
-- numeral-classifier and verb/adjective-complement LPS
["211C"] = "55 55", ["212C"] = "55 55", ["213C"] = "55 0", ["214C"] = "55 0", ["215C"] = "55 0", ["216C"] = "55 0", ["217C"] = "55 55", ["218C"] = "55 55",
["221C"] = "24 55", ["222C"] = "24 55", ["223C"] = "24 0", ["224C"] = "24 0", ["225C"] = "24 33", ["226C"] = "24 0", ["227C"] = "24 55", ["228C"] = "24 55",
["231C"] = "42 33", ["232C"] = "42 33", ["233C"] = "42 33", ["234C"] = "42 33", ["235C"] = "42 33", ["236C"] = "42 33", ["237C"] = "42 0", ["238C"] = "42 0",
["241C"] = "242 0", ["242C"] = "242 0", ["243C"] = "242 0", ["244C"] = "242 0", ["245C"] = "242 0", ["246C"] = "242 0", ["247C"] = "242 0", ["248C"] = "242 0",
["251C"] = "33 55", ["252C"] = "33 55", ["253C"] = "33 55", ["254C"] = "33 55", ["255C"] = "33 55", ["256C"] = "33 55", ["257C"] = "33 0", ["258C"] = "33 0",
["261C"] = "31 33", ["262C"] = "31 33", ["263C"] = "31 33", ["264C"] = "31 33", ["265C"] = "31 33", ["266C"] = "31 33", ["267C"] = "31 0", ["268C"] = "31 0",
["271C"] = "55 55", ["272C"] = "55 55", ["273C"] = "55 33", ["274C"] = "55 33", ["275C"] = "55 33", ["276C"] = "55 33", ["277C"] = "55 55", ["278C"] = "55 55",
["281C"] = "22 55", ["282C"] = "22 55", ["283C"] = "22 33", ["284C"] = "22 33", ["285C"] = "22 33", ["286C"] = "22 33", ["287C"] = "22 55", ["288C"] = "22 55",
-- motion verbs → 過來、出來、上去、進去
["3M"] = "42 55", ["4M"] = "31 55", ["5M"] = "42 55", ["7M"] = "55 55",
-- verb-pronoun → 幫我、怪你、學渠
["1P"] = "55 55", ["2P"] = "24 55", ["3P"] = "53 33", ["4P"] = "242 0", ["5P"] = "33 55", ["6P"] = "31 33", ["7P"] = "55 55", ["8P"] = "22 55",
-- reduplicated (verb, counter, noun) → 天天、花花、做做、日日、坐坐
["RV1"] = "55 55", ["RV2"] = "24 55", ["RV3"] = "42 33", ["RV4"] = "242 0", ["RV5"] = "33 55", ["RV6"] = "31 33", ["RV7"] = "5 5", ["RV8"] = "2 5",
["RC1"] = "55 55", ["RC2"] = "24 55", ["RC3"] = "42 33", ["RC4"] = "24 0", ["RC5"] = "42 33", ["RC6"] = "24 0", ["RC7"] = "5 5", ["RC8"] = "2 5",
["RN1"] = "55 55", ["RN2"] = "24 55", ["RN3"] = "42 55", ["RN4"] = "242 0", ["RN5"] = "42 55", ["RN6"] = "42 55", ["RN7"] = "5 5", ["RN8"] = "2 5",
--regular trisyll LPS
["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 0", ["3114"] = "55 55 0", ["3115"] = "55 55 0", ["3116"] = "55 55 0", ["3117"] = "55 55 55", ["3118"] = "55 55 55",
["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 0", ["3124"] = "55 55 0", ["3125"] = "55 55 0", ["3126"] = "55 55 0", ["3127"] = "55 55 55", ["3128"] = "55 55 55",
["3131"] = "55 0 55", ["3132"] = "55 0 55", ["3133"] = "55 0 0", ["3134"] = "55 0 0", ["3135"] = "55 0 0", ["3136"] = "55 0 0", ["3137"] = "55 0 0", ["3138"] = "55 0 0",
["3141"] = "55 0 55", ["3142"] = "55 0 55", ["3143"] = "55 0 0", ["3144"] = "55 0 0", ["3145"] = "55 0 0", ["3146"] = "55 0 0", ["3147"] = "55 0 0", ["3148"] = "55 0 0",
["3151"] = "55 0 55", ["3152"] = "55 0 55", ["3153"] = "55 0 0", ["3154"] = "55 0 0", ["3155"] = "55 0 0", ["3156"] = "55 0 0", ["3157"] = "55 0 0", ["3158"] = "55 0 0",
["3161"] = "55 0 55", ["3162"] = "55 0 55", ["3163"] = "55 0 0", ["3164"] = "55 0 0", ["3165"] = "55 0 0", ["3166"] = "55 0 0", ["3167"] = "55 0 0", ["3168"] = "55 0 0",
["3171"] = "55 55 55", ["3172"] = "55 55 55", ["3173"] = "55 55 0", ["3174"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "55 55 0", ["3177"] = "55 55 55", ["3178"] = "55 55 55",
["3181"] = "55 55 55", ["3182"] = "55 55 55", ["3183"] = "55 55 0", ["3184"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55",
["3211"] = "24 33 55", ["3212"] = "24 33 55", ["3213"] = "24 55 0", ["3214"] = "24 55 0", ["3215"] = "24 55 0", ["3216"] = "24 55 0", ["3217"] = "24 33 55", ["3218"] = "24 33 55",
["3221"] = "24 33 55", ["3222"] = "24 33 55", ["3223"] = "24 55 0", ["3224"] = "24 55 0", ["3225"] = "24 55 0", ["3226"] = "24 55 0", ["3227"] = "24 33 55", ["3228"] = "24 33 55",
["3231"] = "24 33 55", ["3232"] = "24 33 55", ["3233"] = "24 33 0", ["3234"] = "24 33 0", ["3235"] = "24 0 0", ["3236"] = "24 0 0", ["3237"] = "24 33 55", ["3238"] = "24 33 55",
["3241"] = "24 0 55", ["3242"] = "24 0 55", ["3243"] = "24 0 0", ["3244"] = "24 0 0", ["3245"] = "24 0 0", ["3246"] = "24 0 0", ["3247"] = "24 0 0", ["3248"] = "24 0 0",
["3251"] = "24 33 55", ["3252"] = "24 33 55", ["3253"] = "24 33 0", ["3254"] = "24 33 0", ["3255"] = "24 33 0", ["3256"] = "24 33 0", ["3257"] = "24 33 55", ["3258"] = "24 33 5",
["3261"] = "24 0 55", ["3262"] = "24 0 55", ["3263"] = "24 0 0", ["3264"] = "24 0 0", ["3265"] = "24 0 0", ["3266"] = "24 0 0", ["3267"] = "24 0 0", ["3268"] = "24 0 0",
["3271"] = "24 55 55", ["3272"] = "24 55 55", ["3273"] = "24 55 0", ["3274"] = "24 55 0", ["3275"] = "24 55 0", ["3276"] = "24 55 0", ["3277"] = "24 55 55", ["3278"] = "24 55 55",
["3281"] = "24 55 55", ["3282"] = "24 55 55", ["3283"] = "24 55 0", ["3284"] = "24 55 0", ["3285"] = "24 55 0", ["3286"] = "24 55 0", ["3287"] = "24 55 55", ["3288"] = "24 55 55",
["3311"] = "42 33 55", ["3312"] = "42 33 55", ["3313"] = "42 55 0", ["3314"] = "42 55 0", ["3315"] = "42 55 0", ["3316"] = "42 55 0", ["3317"] = "42 33 55", ["3318"] = "42 33 55",
["3321"] = "42 33 55", ["3322"] = "42 33 55", ["3323"] = "42 55 0", ["3324"] = "42 55 0", ["3325"] = "42 55 0", ["3326"] = "42 55 0", ["3327"] = "42 33 55", ["3328"] = "42 33 55",
["3331"] = "42 33 55", ["3332"] = "42 33 55", ["3333"] = "42 33 0", ["3334"] = "42 33 0", ["3335"] = "42 33 0", ["3336"] = "42 33 0", ["3337"] = "42 33 55", ["3338"] = "42 33 55",
["3341"] = "42 33 55", ["3342"] = "42 33 55", ["3343"] = "42 33 0", ["3344"] = "42 33 0", ["3345"] = "42 33 0", ["3346"] = "42 33 0", ["3347"] = "42 33 55", ["3348"] = "42 33 55",
["3351"] = "42 33 55", ["3352"] = "42 33 55", ["3353"] = "42 33 0", ["3354"] = "42 33 0", ["3355"] = "42 33 0", ["3356"] = "42 33 0", ["3357"] = "42 33 55", ["3358"] = "42 33 55",
["3361"] = "42 33 55", ["3362"] = "42 33 55", ["3363"] = "42 33 0", ["3364"] = "42 33 0", ["3365"] = "42 33 0", ["3366"] = "42 33 0", ["3367"] = "42 33 55", ["3368"] = "42 33 55",
["3371"] = "42 55 55", ["3372"] = "42 55 55", ["3373"] = "42 55 0", ["3374"] = "42 55 0", ["3375"] = "42 55 0", ["3376"] = "42 55 0", ["3377"] = "42 55 55", ["3378"] = "42 55 55",
["3381"] = "42 55 55", ["3382"] = "42 55 55", ["3383"] = "42 55 0", ["3384"] = "42 55 0", ["3385"] = "42 55 0", ["3386"] = "42 55 0", ["3387"] = "42 55 55", ["3388"] = "42 55 55",
["3411"] = "31 33 55", ["3412"] = "31 33 55", ["3413"] = "31 55 0", ["3414"] = "31 55 0", ["3415"] = "31 55 0", ["3416"] = "31 55 0", ["3417"] = "31 33 55", ["3418"] = "31 33 55",
["3421"] = "31 33 55", ["3422"] = "31 33 55", ["3423"] = "31 55 0", ["3424"] = "31 55 0", ["3425"] = "31 55 0", ["3426"] = "31 55 0", ["3427"] = "31 33 55", ["3428"] = "31 33 55",
["3431"] = "31 33 55", ["3432"] = "31 33 55", ["3433"] = "31 33 0", ["3434"] = "31 33 0", ["3435"] = "31 33 0", ["3436"] = "31 33 0", ["3437"] = "31 33 55", ["3438"] = "31 33 55",
["3441"] = "31 33 55", ["3442"] = "31 33 55", ["3443"] = "31 33 0", ["3444"] = "31 33 0", ["3445"] = "31 33 0", ["3446"] = "31 33 0", ["3447"] = "31 33 55", ["3448"] = "31 33 55",
["3451"] = "31 33 55", ["3452"] = "31 33 55", ["3453"] = "31 33 0", ["3454"] = "31 33 0", ["3455"] = "31 33 0", ["3456"] = "31 33 0", ["3457"] = "31 33 55", ["3458"] = "31 33 55",
["3461"] = "31 33 55", ["3462"] = "31 33 55", ["3463"] = "31 33 0", ["3464"] = "31 33 0", ["3465"] = "31 33 0", ["3466"] = "31 33 0", ["3467"] = "31 33 55", ["3468"] = "31 33 55",
["3471"] = "31 55 55", ["3472"] = "31 55 55", ["3473"] = "31 55 0", ["3474"] = "31 55 0", ["3475"] = "31 55 0", ["3476"] = "31 55 0", ["3477"] = "31 55 55", ["3478"] = "31 55 55",
["3481"] = "31 55 55", ["3482"] = "31 55 55", ["3483"] = "31 55 0", ["3484"] = "31 55 0", ["3485"] = "31 55 0", ["3486"] = "31 55 0", ["3487"] = "31 55 55", ["3488"] = "31 55 55",
["3511"] = "42 33 55", ["3512"] = "42 33 55", ["3513"] = "42 55 0", ["3514"] = "42 55 0", ["3515"] = "42 55 0", ["3516"] = "42 55 0", ["3517"] = "42 33 55", ["3518"] = "42 33 55",
["3521"] = "42 33 55", ["3522"] = "42 33 55", ["3523"] = "42 55 0", ["3524"] = "42 55 0", ["3525"] = "42 55 0", ["3526"] = "42 55 0", ["3527"] = "42 33 55", ["3528"] = "42 33 55",
["3531"] = "42 33 55", ["3532"] = "42 33 55", ["3533"] = "42 33 0", ["3534"] = "42 33 0", ["3535"] = "42 33 0", ["3536"] = "42 33 0", ["3537"] = "42 33 55", ["3538"] = "42 33 55",
["3541"] = "42 33 55", ["3542"] = "42 33 55", ["3543"] = "42 33 0", ["3544"] = "42 33 0", ["3545"] = "42 33 0", ["3546"] = "42 33 0", ["3547"] = "42 33 55", ["3548"] = "42 33 55",
["3551"] = "42 33 55", ["3552"] = "42 33 55", ["3553"] = "42 33 0", ["3554"] = "42 33 0", ["3555"] = "42 33 0", ["3556"] = "42 33 0", ["3557"] = "42 33 55", ["3558"] = "42 33 55",
["3561"] = "42 33 55", ["3562"] = "42 33 55", ["3563"] = "42 33 0", ["3564"] = "42 33 0", ["3565"] = "42 33 0", ["3566"] = "42 33 0", ["3567"] = "42 33 55", ["3568"] = "42 33 55",
["3571"] = "42 55 55", ["3572"] = "42 55 55", ["3573"] = "42 55 0", ["3574"] = "42 55 0", ["3575"] = "42 55 0", ["3576"] = "42 55 0", ["3577"] = "42 55 55", ["3578"] = "42 55 55",
["3581"] = "42 55 55", ["3582"] = "42 55 55", ["3583"] = "42 55 0", ["3584"] = "42 55 0", ["3585"] = "42 55 0", ["3586"] = "42 55 0", ["3587"] = "42 55 55", ["3588"] = "42 55 55",
["3611"] = "31 33 55", ["3612"] = "31 33 55", ["3613"] = "31 55 0", ["3614"] = "31 55 0", ["3615"] = "31 55 0", ["3616"] = "31 55 0", ["3617"] = "31 33 55", ["3618"] = "31 33 55",
["3621"] = "31 33 55", ["3622"] = "31 33 55", ["3623"] = "31 55 0", ["3624"] = "31 55 0", ["3625"] = "31 55 0", ["3626"] = "31 55 0", ["3627"] = "31 33 55", ["3628"] = "31 33 55",
["3631"] = "31 33 55", ["3632"] = "31 33 55", ["3633"] = "31 33 0", ["3634"] = "31 33 0", ["3635"] = "31 33 0", ["3636"] = "31 33 0", ["3637"] = "31 33 55", ["3638"] = "31 33 55",
["3641"] = "31 33 55", ["3642"] = "31 33 55", ["3643"] = "31 33 0", ["3644"] = "31 33 0", ["3645"] = "31 33 0", ["3646"] = "31 33 0", ["3647"] = "31 33 55", ["3648"] = "31 33 55",
["3651"] = "31 33 55", ["3652"] = "31 33 55", ["3653"] = "31 33 0", ["3654"] = "31 33 0", ["3655"] = "31 33 0", ["3656"] = "31 33 0", ["3657"] = "31 33 55", ["3658"] = "31 33 55",
["3661"] = "31 33 55", ["3662"] = "31 33 55", ["3663"] = "31 33 0", ["3664"] = "31 33 0", ["3665"] = "31 33 0", ["3666"] = "31 33 0", ["3667"] = "31 33 55", ["3668"] = "31 33 55",
["3671"] = "31 55 55", ["3672"] = "31 55 55", ["3673"] = "31 55 0", ["3674"] = "31 55 0", ["3675"] = "31 55 0", ["3676"] = "31 55 0", ["3677"] = "31 55 55", ["3678"] = "31 55 55",
["3681"] = "31 55 55", ["3682"] = "31 55 55", ["3683"] = "31 55 0", ["3684"] = "31 55 0", ["3685"] = "31 55 0", ["3686"] = "31 55 0", ["3687"] = "31 55 55", ["3688"] = "31 55 55",
["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 0", ["3714"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "55 55 55", ["3718"] = "55 55 55",
["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 0", ["3724"] = "55 55 0", ["3725"] = "55 55 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55",
["3731"] = "55 33 55", ["3732"] = "55 33 55", ["3733"] = "55 33 0", ["3734"] = "55 33 0", ["3735"] = "55 33 0", ["3736"] = "55 33 0", ["3737"] = "55 33 55", ["3738"] = "55 33 55",
["3741"] = "55 33 55", ["3742"] = "55 33 55", ["3743"] = "55 33 0", ["3744"] = "55 33 0", ["3745"] = "55 33 0", ["3746"] = "55 33 0", ["3747"] = "55 33 55", ["3748"] = "55 33 55",
["3751"] = "55 33 55", ["3752"] = "55 33 55", ["3753"] = "55 33 0", ["3754"] = "55 33 0", ["3755"] = "55 33 0", ["3756"] = "55 33 0", ["3757"] = "55 33 55", ["3758"] = "55 33 55",
["3761"] = "55 33 55", ["3762"] = "55 33 55", ["3763"] = "55 33 0", ["3764"] = "55 33 0", ["3765"] = "55 33 0", ["3766"] = "55 33 0", ["3767"] = "55 33 55", ["3768"] = "55 33 55",
["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 0", ["3774"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55",
["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 0", ["3784"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55",
["3811"] = "22 33 55", ["3812"] = "22 33 55", ["3813"] = "22 55 0", ["3814"] = "22 55 0", ["3815"] = "22 55 0", ["3816"] = "22 55 0", ["3817"] = "22 33 55", ["3818"] = "22 33 55",
["3821"] = "22 33 55", ["3822"] = "22 33 55", ["3823"] = "22 55 0", ["3824"] = "22 55 0", ["3825"] = "22 55 0", ["3826"] = "22 55 0", ["3827"] = "22 33 55", ["3828"] = "22 33 55",
["3831"] = "22 33 55", ["3832"] = "22 33 55", ["3833"] = "22 33 0", ["3834"] = "22 33 0", ["3835"] = "22 33 0", ["3836"] = "22 33 0", ["3837"] = "22 33 55", ["3838"] = "22 33 55",
["3841"] = "22 33 55", ["3842"] = "22 33 55", ["3843"] = "22 33 0", ["3844"] = "22 33 0", ["3845"] = "22 33 0", ["3846"] = "22 33 0", ["3847"] = "22 33 55", ["3848"] = "22 33 55",
["3851"] = "22 33 55", ["3852"] = "22 33 55", ["3853"] = "22 33 0", ["3854"] = "22 33 0", ["3855"] = "22 33 0", ["3856"] = "22 33 0", ["3857"] = "22 33 55", ["3858"] = "22 33 55",
["3861"] = "22 33 55", ["3862"] = "22 33 55", ["3863"] = "22 33 0", ["3864"] = "22 33 0", ["3865"] = "22 33 0", ["3866"] = "22 33 0", ["3867"] = "22 33 55", ["3868"] = "22 33 55",
["3871"] = "22 55 55", ["3872"] = "22 55 55", ["3873"] = "22 55 0", ["3874"] = "22 55 0", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55",
["3881"] = "22 55 55", ["3882"] = "22 55 55", ["3883"] = "22 55 0", ["3884"] = "22 55 0", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55",
},
['cs'] = {
["10"] = "",
["11"] = "53", ["13"] = "44", ["14"] = "213", ["15"] = "35", ["16"] = "13", ["17"] = "55", ["18"] = "23",
["211"] = "55 53", ["212"] = "55 53", ["213"] = "55 21", ["214"] = "55 21", ["215"] = "55 21", ["216"] = "55 21", ["217"] = "55 53", ["218"] = "55 53",
["221"] = "22 22", ["222"] = "22 22", ["223"] = "22 22", ["224"] = "22 22", ["225"] = "22 24", ["226"] = "22 24", ["227"] = "22 44", ["228"] = "22 44",
["231"] = "33 53", ["232"] = "33 53", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "33 53", ["238"] = "33 53",
["241"] = "22 53", ["242"] = "22 53", ["243"] = "13 21", ["244"] = "13 21", ["245"] = "22 34", ["246"] = "22 34", ["247"] = "22 53", ["248"] = "22 53",
["251"] = "33 53", ["252"] = "33 53", ["253"] = "44 44", ["254"] = "44 44", ["255"] = "55 21", ["256"] = "55 21", ["257"] = "33 53", ["258"] = "33 53",
["261"] = "22 53", ["262"] = "22 53", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "22 34", ["266"] = "22 34", ["267"] = "22 53", ["268"] = "22 53",
["271"] = "33 53", ["272"] = "33 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "33 34", ["276"] = "33 34", ["277"] = "33 53", ["278"] = "33 53",
["281"] = "22 34", ["282"] = "22 34", ["283"] = "22 34", ["284"] = "22 34", ["285"] = "22 34", ["286"] = "22 34", ["287"] = "22 34", ["288"] = "22 34",
["311"] = "55 55 53", ["312"] = "55 55 53", ["313"] = "55 55 21", ["314"] = "55 55 21", ["315"] = "55 33 21", ["316"] = "55 33 21", ["317"] = "55 55 53", ["318"] = "55 55 53",
["321"] = "22 22 22", ["322"] = "22 22 22", ["323"] = "22 22 22", ["324"] = "22 22 22", ["325"] = "22 22 22", ["326"] = "22 22 22", ["327"] = "22 22 22", ["328"] = "22 22 22",
["331"] = "33 55 53", ["332"] = "33 55 53", ["333"] = "35 33 21", ["334"] = "44 44 44", ["335"] = "33 55 21", ["336"] = "33 55 21", ["337"] = "33 55 53", ["338"] = "33 55 53",
["341"] = "22 55 53", ["342"] = "22 55 53", ["343"] = "13 22 21", ["344"] = "13 22 21", ["345"] = "22 55 21", ["346"] = "22 55 21", ["347"] = "22 55 53", ["348"] = "22 55 53",
["351"] = "33 55 53", ["352"] = "33 55 53", ["353"] = "35 33 21", ["354"] = "44 44 44", ["355"] = "33 55 21", ["356"] = "33 55 21", ["357"] = "33 55 53", ["358"] = "33 55 53",
["361"] = "22 55 53", ["362"] = "22 55 53", ["363"] = "13 22 21", ["364"] = "13 22 21", ["365"] = "22 55 21", ["366"] = "22 55 21", ["367"] = "22 55 53", ["368"] = "22 55 53",
["371"] = "33 55 53", ["372"] = "33 55 53", ["373"] = "35 33 21", ["374"] = "44 44 44", ["375"] = "33 55 21", ["376"] = "33 55 21", ["377"] = "33 55 53", ["378"] = "33 55 53",
["381"] = "22 22 53", ["382"] = "22 22 53", ["383"] = "22 22 53", ["384"] = "22 22 53", ["385"] = "22 22 34", ["386"] = "22 22 34", ["387"] = "22 22 34", ["388"] = "22 22 34",
},
['sz'] = {
["1-"] = "33", ["2-"] = "33 33", ["3-"] = "33 33 33", ["4-"] = "33 33 33 33",
["10"] = "",
["11"] = "44", ["21"] = "44 0", ["31"] = "44 44 0", ["41"] = "44 44 44 0",
["12"] = "223", ["22"] = "22 33", ["32"] = "22 33 0", ["42"] = "22 33 44 0",
["13"] = "51", ["23"] = "52 11", ["33"] = "52 11 0", ["43"] = "52 11 11 0",
["15"] = "523", ["25"] = "52 33", ["35"] = "52 33 0", ["45"] = "52 33 44 0",
["16"] = "231", ["26"] = "23 11", ["36"] = "23 11 0", ["46"] = "23 11 11 0",
["17"] = "43", ["18"] = "23",
["271"] = "44 23", ["371"] = "44 23 0", ["471"] = "44 23 44 0",
["272"] = "44 23", ["372"] = "44 23 0", ["472"] = "44 23 44 0",
["273"] = "55 51", ["373"] = "55 51 0", ["473"] = "55 51 11 0",
["275"] = "55 523", ["375"] = "55 52 33", ["475"] = "55 52 22 33",
["276"] = "55 523", ["376"] = "55 52 33", ["476"] = "55 52 22 33",
["277"] = "44 44", ["377"] = "44 44 0", ["477"] = "44 44 44 22",
["278"] = "44 44", ["378"] = "44 44 0", ["478"] = "44 44 44 22",
["270"] = "44 0",
["281"] = "22 33", ["381"] = "22 33 0", ["481"] = "22 33 44 0",
["282"] = "22 33", ["382"] = "22 33 0", ["482"] = "22 33 44 0",
["283"] = "22 51", ["383"] = "22 51 0", ["483"] = "22 51 11 0",
["285"] = "22 523", ["385"] = "22 52 33", ["485"] = "22 52 22 33",
["286"] = "22 523", ["386"] = "22 52 33", ["486"] = "22 52 22 33",
["287"] = "33 44", ["387"] = "33 44 0", ["487"] = "33 44 22 0",
["288"] = "33 44", ["388"] = "33 44 0", ["488"] = "33 44 22 0",
["280"] = "33 0",
--RPS
["1s"] = "44", ["2s"] = "223", ["3s"] = "51",
["5s"] = "51", ["6s"] = "231", ["7s"] = "43", ["8s"] = "23",
["multiple"] = "33"
},
['ks'] = {
["10"] = "",
["11"] = "55", ["12"] = "13", ["13"] = "52", ["15"] = "412", ["16"] = "213", ["17"] = "55", ["18"] = "23",
["211"] = "44 41", ["212"] = "44 41", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "44 44", ["218"] = "44 44", --55 31
["221"] = "23 41", ["222"] = "23 41", ["223"] = "23 41", ["224"] = "23 41", ["225"] = "23 41", ["226"] = "23 41", ["227"] = "23 44", ["228"] = "23 44",
["231"] = "52 33", ["232"] = "52 33", ["233"] = "52 33", ["234"] = "52 33", ["235"] = "53 41", ["236"] = "53 41", ["237"] = "52 33", ["238"] = "52 33",
["241"] = "22 44", ["242"] = "31 33", ["243"] = "31 33", ["244"] = "31 31", ["245"] = "31 31", ["246"] = "31 31", ["247"] = "31 31", ["248"] = "31 31",
["251"] = "52 33", ["252"] = "52 33", ["253"] = "22 44", ["254"] = "22 44", ["255"] = "22 44", ["256"] = "22 44", ["257"] = "23 44", ["258"] = "23 44", --22 44
["261"] = "22 44", ["262"] = "22 44", ["263"] = "22 44", ["264"] = "22 44", ["265"] = "22 44", ["266"] = "22 44", ["267"] = "22 44", ["268"] = "22 44",
["271"] = "44 44", ["272"] = "44 44", ["273"] = "55 52", ["274"] = "55 52", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 55", ["278"] = "55 55", --55 33
["281"] = "22 31", ["282"] = "22 31", ["283"] = "22 23", ["284"] = "22 23", ["285"] = "22 31", ["286"] = "22 31", ["287"] = "22 33", ["288"] = "22 33",
},
['yx'] = {
["10"] = "",
["11"] = "55", ["12"] = "224", ["13"] = "52", ["14"] = "33", ["15"] = "412", ["16"] = "21", ["17"] = "55", ["18"] = "33",
},
['cz'] = { --for the underlying sequences that are listed with multiple chains, one is chosen for simplicity. The other sandhi chain can be accessed by having the chain tone be different from the underlying tone
["10"] = "",
["11"] = "55", ["12"] = "13", ["13"] = "45", ["15"] = "523", ["16"] = "24", ["17"] = "55", ["18"] = "23",
["3066"] = "45 55 0",
["211"] = "33 33", ["212"] = "33 33", ["213"] = "33 33", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 55", ["218"] = "55 55",
["221"] = "11 33", ["222"] = "11 33", ["223"] = "11 33", ["225"] = "11 33", ["226"] = "11 33", ["227"] = "11 33", ["228"] = "11 33",
["231"] = "45 55", ["232"] = "45 55", ["233"] = "45 55", ["235"] = "45 55", ["236"] = "45 55", ["237"] = "45 55", ["238"] = "45 5",
["251"] = "55 23", ["252"] = "55 23", ["253"] = "55 23", ["255"] = "55 23", ["256"] = "55 23", ["257"] = "55 23", ["258"] = "55 23",
["261"] = "11 24", ["262"] = "11 24", ["263"] = "11 24", ["265"] = "23 11", ["266"] = "23 11", ["267"] = "11 24", ["268"] = "11 24",
["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 55", ["275"] = "55 42", ["276"] = "55 42", ["277"] = "55 55", ["278"] = "55 55", --aspirated tone 7 is considered underlying tone 8 for simplicity
["281"] = "11 13", ["282"] = "11 13", ["283"] = "11 13", ["285"] = "22 42", ["286"] = "22 42", ["287"] = "22 55", ["288"] = "22 55",
["3111"] = "33 33 0", ["3112"] = "33 33 0", ["3113"] = "33 33 0", ["3115"] = "33 33 0", ["3116"] = "33 33 0", ["3117"] = "33 33 0", ["3118"] = "33 33 0",
["3121"] = "33 33 0", ["3122"] = "33 33 0", ["3123"] = "33 33 0", ["3125"] = "33 33 0", ["3126"] = "33 33 0", ["3127"] = "33 33 0", ["3128"] = "33 33 0",
["3131"] = "55 42 0", ["3132"] = "55 42 0", ["3133"] = "55 42 0", ["3135"] = "55 42 0", ["3136"] = "55 42 0", ["3137"] = "55 42 0", ["3138"] = "55 42 0",
["3151"] = "55 42 0", ["3152"] = "55 42 0", ["3153"] = "55 42 0", ["3155"] = "55 42 0", ["3156"] = "55 42 0", ["3157"] = "55 42 0", ["3158"] = "55 42 0",
["3161"] = "55 42 0", ["3162"] = "55 42 0", ["3163"] = "55 42 0", ["3165"] = "55 42 0", ["3166"] = "55 42 0", ["3167"] = "55 42 0", ["3168"] = "55 42 0",
["3171"] = "55 55 0", ["3172"] = "55 55 0", ["3173"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "", ["3177"] = "55 55 55", ["3178"] = "55 55 55",
["3181"] = "55 55 0", ["3182"] = "55 55 0", ["3183"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55",
["3102"] = "33 33 0",
["3211"] = "11 33 0", ["3212"] = "11 33 0", ["3213"] = "11 33 0", ["3215"] = "11 33 0", ["3216"] = "11 33 0", ["3217"] = "11 33 55", ["3218"] = "11 33 55",
["3221"] = "11 33 0", ["3222"] = "11 33 0", ["3223"] = "11 33 0", ["3225"] = "11 33 0", ["3226"] = "11 33 0", ["3227"] = "11 33 55", ["3228"] = "11 33 55",
["3231"] = "11 33 0", ["3232"] = "11 33 0", ["3233"] = "11 33 0", ["3235"] = "11 33 0", ["3236"] = "11 33 0", ["3237"] = "11 33 55", ["3238"] = "11 33 55",
["3251"] = "11 33 0", ["3252"] = "11 33 0", ["3253"] = "11 33 0", ["3255"] = "11 33 0", ["3256"] = "11 33 0", ["3257"] = "11 33 55", ["3258"] = "11 33 55",
["3261"] = "11 33 0", ["3262"] = "11 33 0", ["3263"] = "11 33 0", ["3265"] = "11 33 0", ["3266"] = "11 33 0", ["3267"] = "11 33 55", ["3268"] = "11 33 55",
["3271"] = "11 33 0", ["3272"] = "11 33 0", ["3273"] = "11 33 0", ["3275"] = "11 33 0", ["3276"] = "11 33 0", ["3277"] = "11 33 55", ["3278"] = "11 33 55",
["3281"] = "11 33 0", ["3282"] = "11 33 0", ["3283"] = "11 33 0", ["3285"] = "11 33 0", ["3286"] = "11 33 0", ["3287"] = "11 33 55", ["3288"] = "11 33 55",
["3202"] = "11 33 0",
["3311"] = "45 55 0", ["3312"] = "45 55 0", ["3313"] = "45 55 0", ["3315"] = "45 55 0", ["3316"] = "45 55 0", ["3317"] = "45 55 55", ["3318"] = "45 55 55",
["3321"] = "45 55 0", ["3322"] = "45 55 0", ["3323"] = "45 55 0", ["3325"] = "45 55 0", ["3326"] = "45 55 0", ["3327"] = "45 55 55", ["3328"] = "45 55 55",
["3331"] = "45 55 0", ["3332"] = "45 55 0", ["3333"] = "45 55 0", ["3335"] = "45 55 0", ["3336"] = "45 55 0", ["3337"] = "", ["3338"] = "45 55 55",
["3351"] = "45 55 0", ["3352"] = "45 55 0", ["3353"] = "45 55 0", ["3355"] = "45 55 0", ["3356"] = "45 55 0", ["3357"] = "45 55 55", ["3358"] = "45 55 55",
["3361"] = "45 55 0", ["3362"] = "45 55 0", ["3363"] = "45 55 0", ["3365"] = "45 55 0", ["3366"] = "45 55 0", ["3367"] = "45 55 55", ["3368"] = "",
["3371"] = "45 55 0", ["3372"] = "45 55 0", ["3373"] = "45 55 0", ["3375"] = "45 55 0", ["3376"] = "45 55 0", ["3377"] = "45 55 55", ["3378"] = "45 55 55",
["3381"] = "45 55 0", ["3382"] = "45 55 0", ["3383"] = "45 55 0", ["3385"] = "45 55 0", ["3386"] = "45 55 0", ["3387"] = "45 55 0", ["3388"] = "45 55 55",
["3330"] = "45 55 0", ["3303"] = "45 55 0", ["3305"] = "45 55 0",
["3511"] = "52 22 33", ["3512"] = "52 22 33", ["3513"] = "52 22 33", ["3515"] = "52 22 33", ["3516"] = "52 22 33", ["3517"] = "52 22 33", ["3518"] = "52 22 33",
["3521"] = "52 22 33", ["3522"] = "52 22 33", ["3523"] = "52 22 33", ["3525"] = "52 22 33", ["3526"] = "52 22 33", ["3527"] = "52 22 33", ["3528"] = "52 22 33",
["3531"] = "52 22 33", ["3532"] = "52 22 33", ["3533"] = "52 22 33", ["3535"] = "52 22 33", ["3536"] = "52 22 33", ["3537"] = "52 22 33", ["3538"] = "52 22 33",
["3551"] = "52 22 33", ["3552"] = "52 22 33", ["3553"] = "52 22 33", ["3555"] = "52 22 33", ["3556"] = "52 22 33", ["3557"] = "52 22 33", ["3558"] = "45 55 55",
["3561"] = "", ["3562"] = "52 22 33", ["3563"] = "", ["3565"] = "45 55 0", ["3566"] = "52 22 33", ["3567"] = "", ["3568"] = "45 55 55",
["3571"] = "52 22 33", ["3572"] = "52 22 33", ["3573"] = "52 22 33", ["3575"] = "52 22 33", ["3576"] = "", ["3577"] = "52 22 33", ["3578"] = "52 22 33",
["3581"] = "52 22 33", ["3582"] = "52 22 33", ["3583"] = "52 22 33", ["3585"] = "", ["3586"] = "52 22 33", ["3587"] = "52 22 33", ["3588"] = "52 22 33",
["3500"] = "52 22 33", ["3507"] = "52 22 33",
["3611"] = "11 11 24", ["3612"] = "11 11 24", ["3613"] = "11 11 24", ["3615"] = "11 11 24", ["3616"] = "11 11 24", ["3617"] = "11 11 24", ["3618"] = "11 11 24",
["3621"] = "11 11 24", ["3622"] = "11 11 24", ["3623"] = "11 11 24", ["3625"] = "11 11 24", ["3626"] = "11 11 24", ["3627"] = "11 11 24", ["3628"] = "11 11 24",
["3631"] = "11 11 24", ["3632"] = "11 11 24", ["3633"] = "11 11 24", ["3635"] = "11 11 24", ["3636"] = "11 11 24", ["3637"] = "11 11 24", ["3638"] = "11 11 24",
["3651"] = "11 11 24", ["3652"] = "11 11 24", ["3653"] = "11 11 24", ["3655"] = "23 11 0", ["3656"] = "23 11 0", ["3657"] = "23 11 0", ["3658"] = "23 11 0",
["3661"] = "23 11 0", ["3662"] = "11 11 24", ["3663"] = "23 11 0", ["3665"] = "23 11 0", ["3666"] = "23 11 0", ["3667"] = "23 11 0", ["3668"] = "23 11 0",
["3671"] = "11 11 24", ["3672"] = "11 11 24", ["3673"] = "11 11 24", ["3675"] = "11 11 24", ["3676"] = "11 11 24", ["3677"] = "11 11 24", ["3678"] = "11 11 24",
["3681"] = "11 11 24", ["3682"] = "11 11 24", ["3683"] = "11 11 24", ["3685"] = "11 11 24", ["3686"] = "11 11 24", ["3687"] = "11 11 24", ["3688"] = "11 11 24",
["3600"] = "11 11 24",
["3711"] = "55 55 0", ["3712"] = "55 55 0", ["3713"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "11 11 13", ["3718"] = "11 11 13",
["3721"] = "11 11 13", ["3722"] = "11 11 13", ["3723"] = "11 11 13", ["3725"] = "55 42 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55",
["3731"] = "55 55 0", ["3732"] = "55 55 0", ["3733"] = "11 11 13", ["3735"] = "55 55 0", ["3736"] = "55 55 0", ["3737"] = "55 55 55", ["3738"] = "55 55 55",
["3751"] = "55 42 0", ["3752"] = "55 42 0", ["3753"] = "55 42 0", ["3755"] = "55 42 0", ["3756"] = "", ["3757"] = "55 42 0", ["3758"] = "",
["3761"] = "55 42 0", ["3762"] = "55 42 0", ["3763"] = "55 42 0", ["3765"] = "55 42 0", ["3766"] = "55 42 0", ["3767"] = "55 42 0", ["3768"] = "55 42 0",
["3771"] = "55 55 0", ["3772"] = "55 55 0", ["3773"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55",
["3781"] = "", ["3782"] = "55 55 0", ["3783"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55",
["3770"] = "55 55 0", ["3780"] = "55 55 0", ["3707"] = "55 55 55",
["3811"] = "11 11 13", ["3812"] = "11 11 13", ["3813"] = "11 11 13", ["3815"] = "11 11 13", ["3816"] = "11 11 13", ["3817"] = "11 11 13", ["3818"] = "",
["3821"] = "11 11 13", ["3822"] = "11 11 13", ["3823"] = "11 11 13", ["3825"] = "11 11 13", ["3826"] = "11 11 13", ["3827"] = "11 11 13", ["3828"] = "11 11 13",
["3831"] = "11 11 13", ["3832"] = "11 11 13", ["3833"] = "11 11 13", ["3835"] = "11 11 13", ["3836"] = "11 11 13", ["3837"] = "11 11 13", ["3838"] = "11 11 13",
["3851"] = "22 42 0", ["3852"] = "22 42 0", ["3853"] = "22 42 0", ["3855"] = "22 42 0", ["3856"] = "22 42 0", ["3857"] = "22 42 0", ["3858"] = "",
["3861"] = "22 42 0", ["3862"] = "22 42 0", ["3863"] = "", ["3865"] = "22 42 0", ["3866"] = "22 42 0", ["3867"] = "22 42 0", ["3868"] = "22 42 0",
["3871"] = "11 11 13", ["3872"] = "11 11 13", ["3873"] = "11 11 13", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55",
["3881"] = "11 11 13", ["3882"] = "11 11 13", ["3883"] = "11 11 13", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55",
["3850"] = "22 42 0", ["3802"] = "22 42 0",
--RPS
["1s"] = "", ["2s"] = "", ["3s"] = "",
["5s"] = "", ["6s"] = "", ["7s"] = "", ["8s"] = "",
["multiple"] = "33"
},
['jj'] = {
["10"] = "",
["11"] = "44", ["12"] = "213", ["13"] = "35", ["15"] = "52", ["16"] = "31", ["17"] = "55", ["18"] = "23",
["211"] = "44 31", ["212"] = "44 31", ["213"] = "44 31", ["215"] = "44 31", ["216"] = "44 31", ["217"] = "44 31", ["218"] = "44 31",
["221"] = "23 21", ["222"] = "23 21", ["223"] = "23 21", ["225"] = "23 21", ["226"] = "23 21", ["227"] = "23 22", ["228"] = "23 22",
["231"] = "35 33", ["232"] = "35 33", ["233"] = "35 33", ["235"] = "35 33", ["236"] = "35 33", ["237"] = "35 33", ["238"] = "35 33",
["251"] = "52 21", ["252"] = "52 21", ["253"] = "52 21", ["255"] = "52 21", ["256"] = "52 21", ["257"] = "31 22", ["258"] = "31 22",
["261"] = "31 21", ["262"] = "31 21", ["263"] = "31 21", ["265"] = "31 21", ["266"] = "31 21", ["267"] = "31 22", ["268"] = "31 22",
["271"] = "55 31", ["272"] = "55 31", ["273"] = "55 31", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 33", ["278"] = "55 33",
["281"] = "23 31", ["282"] = "23 31", ["283"] = "23 31", ["285"] = "23 31", ["286"] = "23 31", ["287"] = "23 33", ["288"] = "23 22",
},
['jx'] = {
["10"] = "",
["11"] = "53", ["12"] = "31", ["13A"] = "433", ["13B"] = "435", ["14"] = "213", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22",
["211"] = "44 53", ["212"] = "44 31", ["213"] = "44 21", ["214"] = "44 21", ["215"] = "44 21", ["216"] = "44 21", ["217"] = "44 55", ["218"] = "44 55",
["221"] = "22 44", ["222"] = "22 22", ["223"] = "13 53", ["224"] = "13 31", ["225"] = "13 53", ["226"] = "13 31", ["227"] = "31 55", ["228"] = "31 55",
["23A1"] = "44 53", ["23A2"] = "44 31", ["23A3"] = "44 21", ["23A4"] = "44 21", ["23A5"] = "44 21", ["23A6"] = "44 21", ["23A7"] = "44 55", ["23A8"] = "44 55",
["23B1"] = "13 53", ["23B2"] = "13 31", ["23B3"] = "22 13", ["23B4"] = "22 13", ["23B5"] = "22 13", ["23B6"] = "22 13", ["23B7"] = "13 55", ["23B8"] = "13 55",
["241"] = "22 13", ["242"] = "22 31", ["243"] = "22 13", ["244"] = "22 13", ["245"] = "22 13", ["246"] = "22 13", ["247"] = "22 55", ["248"] = "22 55",
["251"] = "44 53", ["252"] = "44 31", ["253"] = "44 21", ["254"] = "44 21", ["255"] = "44 21", ["256"] = "44 21", ["257"] = "44 55", ["258"] = "44 55",
["261"] = "22 53", ["262"] = "22 13", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "13 21", ["266"] = "13 21", ["267"] = "22 55", ["268"] = "22 55",
["271"] = "55 44", ["272"] = "55 44", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "22 44", ["282"] = "22 13", ["283"] = "22 13", ["284"] = "22 13", ["285"] = "22 13", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 55",
["3111"] = "44 44 31", ["3112"] = "44 44 31", ["3113"] = "44 44 31", ["3114"] = "44 44 31", ["3115"] = "44 44 31", ["3116"] = "44 44 31", ["3117"] = "44 44 31", ["3118"] = "44 44 31",
["3121"] = "44 44 31", ["3122"] = "44 44 31", ["3123"] = "44 44 31", ["3124"] = "44 44 31", ["3125"] = "44 44 31", ["3126"] = "44 44 31", ["3127"] = "44 44 31", ["3128"] = "44 44 31",
["3131"] = "55 33 21", ["3132"] = "55 33 21", ["3133"] = "55 33 21", ["3134"] = "55 33 21", ["3135"] = "55 33 21", ["3136"] = "55 33 21", ["3137"] = "55 33 21", ["3138"] = "55 33 21",
["3141"] = "55 33 21", ["3142"] = "55 33 21", ["3143"] = "55 33 21", ["3144"] = "55 33 21", ["3145"] = "55 33 21", ["3146"] = "55 33 21", ["3147"] = "55 33 21", ["3148"] = "55 33 21",
["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21",
["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21",
["3171"] = "44 44 31", ["3172"] = "44 44 31", ["3173"] = "44 44 31", ["3174"] = "44 44 31", ["3175"] = "44 44 31", ["3176"] = "44 44 31", ["3177"] = "44 44 31", ["3178"] = "44 44 31",
["3181"] = "44 44 31", ["3182"] = "44 44 31", ["3183"] = "44 44 31", ["3184"] = "44 44 31", ["3185"] = "44 44 31", ["3186"] = "44 44 31", ["3187"] = "44 44 31", ["3188"] = "44 44 31",
["3211"] = "22 44 51", ["3212"] = "22 44 51", ["3213"] = "22 44 51", ["3214"] = "22 44 51", ["3215"] = "22 44 51", ["3216"] = "22 44 51", ["3217"] = "22 44 55", ["3218"] = "22 44 55",
["3221"] = "22 44 51", ["3222"] = "22 44 51", ["3223"] = "22 44 51", ["3224"] = "22 44 51", ["3225"] = "22 44 51", ["3226"] = "22 44 51", ["3227"] = "22 44 55", ["3228"] = "22 44 55",
["3231"] = "24 44 31", ["3232"] = "24 44 31", ["3233"] = "24 44 31", ["3234"] = "24 44 31", ["3235"] = "24 44 31", ["3236"] = "24 44 31", ["3237"] = "24 44 31", ["3238"] = "24 44 31",
["3241"] = "24 44 31", ["3242"] = "24 44 31", ["3243"] = "24 44 31", ["3244"] = "24 44 31", ["3245"] = "24 44 31", ["3246"] = "24 44 31", ["3247"] = "24 44 31", ["3248"] = "24 44 31",
["3251"] = "24 44 31", ["3252"] = "24 44 31", ["3253"] = "24 44 31", ["3254"] = "24 44 31", ["3255"] = "24 44 31", ["3256"] = "24 44 31", ["3257"] = "24 44 31", ["3258"] = "24 44 31",
["3261"] = "24 44 31", ["3262"] = "24 44 31", ["3263"] = "24 44 31", ["3264"] = "24 44 31", ["3265"] = "24 44 31", ["3266"] = "24 44 31", ["3267"] = "24 44 31", ["3268"] = "24 44 31",
["3271"] = "22 44 51", ["3272"] = "22 44 51", ["3273"] = "22 55 31", ["3274"] = "22 55 31", ["3275"] = "22 55 31", ["3276"] = "22 55 31", ["3277"] = "22 44 55", ["3278"] = "22 44 55",
["3281"] = "22 44 51", ["3282"] = "22 44 51", ["3283"] = "22 55 31", ["3284"] = "22 55 31", ["3285"] = "22 55 31", ["3286"] = "22 55 31", ["3287"] = "22 44 55", ["3288"] = "22 44 55",
["33A11"] = "44 33 51", ["33A12"] = "44 33 51", ["33A13"] = "44 44 31", ["33A14"] = "44 44 31", ["33A15"] = "44 44 31", ["33A16"] = "44 44 31", ["33A17"] = "44 33 55", ["33A18"] = "44 33 55",
["33A21"] = "44 33 51", ["33A22"] = "44 33 51", ["33A23"] = "44 44 31", ["33A24"] = "44 44 31", ["33A25"] = "44 44 31", ["33A26"] = "44 44 31", ["33A27"] = "44 33 55", ["33A28"] = "44 33 55",
["33A31"] = "44 33 51", ["33A32"] = "44 33 51", ["33A33"] = "44 44 31", ["33A34"] = "44 44 31", ["33A35"] = "44 44 31", ["33A36"] = "44 33 51", ["33A37"] = "44 33 55", ["33A38"] = "44 33 55",
["33A41"] = "44 33 51", ["33A42"] = "44 33 51", ["33A43"] = "44 44 31", ["33A44"] = "44 44 31", ["33A45"] = "44 44 31", ["33A46"] = "44 33 51", ["33A47"] = "44 33 55", ["33A48"] = "44 33 55",
["33A51"] = "44 33 51", ["33A52"] = "44 33 51", ["33A53"] = "44 44 31", ["33A54"] = "44 44 31", ["33A55"] = "44 33 51", ["33A56"] = "44 33 51", ["33A57"] = "44 33 55", ["33A58"] = "44 33 55",
["33A61"] = "44 33 51", ["33A62"] = "44 33 51", ["33A63"] = "44 33 51", ["33A64"] = "44 33 51", ["33A65"] = "44 44 31", ["33A66"] = "44 44 31", ["33A67"] = "44 33 55", ["33A68"] = "44 33 55",
["33A71"] = "44 33 51", ["33A72"] = "44 33 51", ["33A73"] = "44 44 31", ["33A74"] = "44 44 31", ["33A75"] = "44 44 31", ["33A76"] = "44 44 31", ["33A77"] = "44 33 55", ["33A78"] = "44 33 55",
["33A81"] = "44 33 51", ["33A82"] = "44 33 51", ["33A83"] = "44 44 31", ["33A84"] = "44 44 31", ["33A85"] = "44 44 31", ["33A86"] = "44 44 31", ["33A87"] = "44 33 55", ["33A88"] = "44 33 55",
["33B11"] = "22 22 51", ["33B12"] = "22 22 51", ["33B13"] = "22 44 31", ["33B14"] = "22 44 31", ["33B15"] = "22 44 31", ["33B16"] = "22 44 31", ["33B17"] = "44 33 55", ["33B18"] = "44 33 55",
["33B21"] = "22 22 51", ["33B22"] = "22 22 51", ["33B23"] = "22 44 31", ["33B24"] = "22 44 31", ["33B25"] = "22 44 31", ["33B26"] = "22 44 31", ["33B27"] = "44 33 55", ["33B28"] = "44 33 55",
["33B31"] = "22 22 51", ["33B32"] = "22 22 51", ["33B33"] = "22 22 51", ["33B34"] = "22 22 51", ["33B35"] = "22 22 51", ["33B36"] = "22 22 51", ["33B37"] = "22 22 55", ["33B38"] = "22 22 55",
["33B41"] = "22 22 51", ["33B42"] = "22 22 51", ["33B43"] = "22 22 51", ["33B44"] = "22 22 51", ["33B45"] = "22 22 51", ["33B46"] = "22 22 51", ["33B47"] = "22 22 55", ["33B48"] = "22 22 55",
["33B51"] = "22 22 51", ["33B52"] = "22 22 51", ["33B53"] = "22 44 31", ["33B54"] = "22 44 31", ["33B55"] = "22 44 31", ["33B56"] = "22 44 31", ["33B57"] = "22 22 55", ["33B58"] = "22 22 55",
["33B61"] = "22 22 51", ["33B62"] = "22 22 51", ["33B63"] = "22 44 31", ["33B64"] = "22 44 31", ["33B65"] = "22 44 31", ["33B66"] = "22 44 31", ["33B67"] = "22 22 55", ["33B68"] = "22 22 55",
["33B71"] = "22 22 51", ["33B72"] = "22 22 51", ["33B73"] = "22 44 31", ["33B74"] = "22 44 31", ["33B75"] = "22 44 31", ["33B76"] = "22 44 31", ["33B77"] = "22 22 55", ["33B78"] = "22 22 55",
["33B81"] = "22 22 51", ["33B82"] = "22 22 51", ["33B83"] = "22 44 31", ["33B84"] = "22 44 31", ["33B85"] = "22 44 31", ["33B86"] = "22 44 31", ["33B87"] = "22 22 55", ["33B88"] = "22 22 55",
["3411"] = "22 22 55", ["3412"] = "22 22 55", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "22 55 31", ["3416"] = "22 55 31", ["3417"] = "22 22 55", ["3418"] = "22 22 55",
["3421"] = "22 22 55", ["3422"] = "22 22 55", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "22 55 31", ["3426"] = "22 55 31", ["3427"] = "22 22 55", ["3428"] = "22 22 55",
["3431"] = "22 22 55", ["3432"] = "22 22 55", ["3433"] = "22 22 55", ["3434"] = "22 22 55", ["3435"] = "22 22 55", ["3436"] = "22 22 55", ["3437"] = "22 22 55", ["3438"] = "22 22 55",
["3441"] = "22 55 51", ["3442"] = "22 55 51", ["3443"] = "22 22 55", ["3444"] = "22 22 55", ["3445"] = "22 22 55", ["3446"] = "22 22 55", ["3447"] = "22 22 55", ["3448"] = "22 22 55",
["3451"] = "22 55 51", ["3452"] = "22 55 51", ["3453"] = "22 22 55", ["3454"] = "22 22 55", ["3455"] = "22 22 55", ["3456"] = "22 22 55", ["3457"] = "22 22 55", ["3458"] = "22 22 55",
["3461"] = "22 55 51", ["3462"] = "22 55 51", ["3463"] = "22 22 55", ["3464"] = "22 22 55", ["3465"] = "22 22 55", ["3466"] = "22 22 55", ["3467"] = "22 22 55", ["3468"] = "22 22 55",
["3471"] = "22 22 55", ["3472"] = "22 22 55", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "22 55 31", ["3476"] = "22 55 31", ["3477"] = "22 22 55", ["3478"] = "22 22 55",
["3481"] = "22 22 55", ["3482"] = "22 22 55", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "22 55 31", ["3486"] = "22 55 31", ["3487"] = "22 22 55", ["3488"] = "22 22 55",
["3401"] = "44 44 31", ["3402"] = "44 44 31", ["3403"] = "44 44 31", ["3404"] = "44 44 31", ["3405"] = "44 44 31", ["3406"] = "44 44 31", ["3407"] = "44 44 31", ["3408"] = "44 44 31",
["3511"] = "33 44 51", ["3512"] = "33 44 51", ["3513"] = "33 55 31", ["3514"] = "33 55 31", ["3515"] = "33 55 31", ["3516"] = "33 55 31", ["3517"] = "33 44 55", ["3518"] = "33 44 55",
["3521"] = "33 44 51", ["3522"] = "33 44 51", ["3523"] = "33 55 31", ["3524"] = "33 55 31", ["3525"] = "33 55 31", ["3526"] = "33 55 31", ["3527"] = "33 44 55", ["3528"] = "33 44 55",
["3531"] = "35 33 31", ["3532"] = "35 33 31", ["3533"] = "35 33 31", ["3534"] = "35 33 31", ["3535"] = "35 33 31", ["3536"] = "35 33 31", ["3537"] = "35 33 31", ["3538"] = "35 33 31",
["3541"] = "35 33 31", ["3542"] = "35 33 31", ["3543"] = "33 44 51", ["3544"] = "33 44 51", ["3545"] = "33 44 51", ["3546"] = "33 44 51", ["3547"] = "35 33 31", ["3548"] = "35 33 31",
["3551"] = "35 33 31", ["3552"] = "35 33 31", ["3553"] = "35 33 31", ["3554"] = "35 33 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "35 33 31", ["3558"] = "35 33 31",
["3561"] = "35 33 31", ["3562"] = "35 33 31", ["3563"] = "35 33 31", ["3564"] = "35 33 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "33 55 31", ["3568"] = "33 55 31",
["3571"] = "33 44 51", ["3572"] = "33 44 51", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "33 55 31", ["3576"] = "33 55 31", ["3577"] = "33 44 55", ["3578"] = "33 44 55",
["3581"] = "33 44 51", ["3582"] = "33 44 51", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "33 55 31", ["3586"] = "33 55 31", ["3587"] = "33 44 55", ["3588"] = "33 44 55",
["3611"] = "22 44 51", ["3612"] = "22 44 51", ["3613"] = "22 55 31", ["3614"] = "22 55 31", ["3615"] = "22 55 31", ["3616"] = "22 55 31", ["3617"] = "22 44 55", ["3618"] = "22 44 55",
["3621"] = "22 44 51", ["3622"] = "22 33 44", ["3623"] = "22 55 31", ["3624"] = "22 55 31", ["3625"] = "22 55 31", ["3626"] = "22 55 31", ["3627"] = "22 44 55", ["3628"] = "22 44 55",
["3631"] = "22 44 51", ["3632"] = "24 33 31", ["3633"] = "24 33 31", ["3634"] = "24 33 31", ["3635"] = "22 22 24", ["3636"] = "24 33 31", ["3637"] = "24 33 31", ["3638"] = "24 33 31",
["3641"] = "22 55 31", ["3642"] = "22 55 31", ["3643"] = "24 33 31", ["3644"] = "24 33 31", ["3645"] = "24 33 31", ["3646"] = "24 33 31", ["3647"] = "24 33 31", ["3648"] = "24 33 31",
["3651"] = "22 22 44", ["3652"] = "24 33 31", ["3653"] = "24 33 31", ["3654"] = "24 33 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "24 33 31", ["3658"] = "24 33 31",
["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "24 33 31", ["3664"] = "24 33 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31",
["3671"] = "22 44 51", ["3672"] = "22 44 51", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "22 55 31", ["3676"] = "22 55 31", ["3677"] = "22 44 55", ["3678"] = "22 44 55",
["3681"] = "22 44 51", ["3682"] = "22 44 51", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "22 55 31", ["3686"] = "22 55 31", ["3687"] = "22 44 55", ["3688"] = "22 44 55",
["3601"] = "33 44 51", ["3602"] = "33 44 51", ["3603"] = "33 55 31", ["3604"] = "33 55 31", ["3605"] = "35 33 31", ["3606"] = "35 33 31", ["3607"] = "33 44 55", ["3608"] = "33 44 55",
["3711"] = "33 44 51", ["3712"] = "33 44 51", ["3713"] = "33 44 51", ["3714"] = "33 44 51", ["3715"] = "33 44 51", ["3716"] = "33 44 51", ["3717"] = "33 44 55", ["3718"] = "33 44 55",
["3721"] = "33 44 51", ["3722"] = "33 44 51", ["3723"] = "33 44 51", ["3724"] = "33 44 51", ["3725"] = "33 44 51", ["3726"] = "33 44 51", ["3727"] = "33 44 55", ["3728"] = "33 44 55",
["3731"] = "53 33 31", ["3732"] = "53 33 31", ["3733"] = "53 33 31", ["3734"] = "53 33 31", ["3735"] = "53 33 31", ["3736"] = "53 33 31", ["3737"] = "53 33 31", ["3738"] = "53 33 31",
["3741"] = "53 33 31", ["3742"] = "53 33 31", ["3743"] = "53 33 31", ["3744"] = "53 33 31", ["3745"] = "53 33 31", ["3746"] = "53 33 31", ["3747"] = "53 33 31", ["3748"] = "53 33 31",
["3751"] = "53 33 31", ["3752"] = "53 33 31", ["3753"] = "53 33 31", ["3754"] = "53 33 31", ["3755"] = "53 33 31", ["3756"] = "53 33 31", ["3757"] = "53 33 31", ["3758"] = "53 33 31",
["3761"] = "53 33 31", ["3762"] = "53 33 31", ["3763"] = "53 33 31", ["3764"] = "53 33 31", ["3765"] = "53 33 31", ["3766"] = "53 33 31", ["3767"] = "53 33 31", ["3768"] = "53 33 31",
["3771"] = "33 44 51", ["3772"] = "33 44 51", ["3773"] = "33 44 51", ["3774"] = "33 44 51", ["3775"] = "33 44 51", ["3776"] = "33 44 51", ["3777"] = "33 44 55", ["3778"] = "33 44 55",
["3781"] = "33 44 51", ["3782"] = "33 44 51", ["3783"] = "33 44 51", ["3784"] = "33 44 51", ["3785"] = "33 44 51", ["3786"] = "33 44 51", ["3787"] = "33 44 55", ["3788"] = "33 44 55",
["3811"] = "22 44 51", ["3812"] = "22 44 51", ["3813"] = "22 44 51", ["3814"] = "22 44 51", ["3815"] = "22 44 51", ["3816"] = "22 44 51", ["3817"] = "22 44 55", ["3818"] = "22 44 55",
["3821"] = "22 44 51", ["3822"] = "22 44 51", ["3823"] = "22 44 51", ["3824"] = "22 44 51", ["3825"] = "22 44 51", ["3826"] = "22 44 51", ["3827"] = "22 44 55", ["3828"] = "22 44 55",
["3831"] = "11 22 44", ["3832"] = "11 22 44", ["3833"] = "11 22 44", ["3834"] = "11 22 44", ["3835"] = "11 22 44", ["3836"] = "11 22 44", ["3837"] = "11 22 44", ["3838"] = "11 22 44",
["3841"] = "11 22 44", ["3842"] = "11 22 44", ["3843"] = "11 22 44", ["3844"] = "11 22 44", ["3845"] = "11 22 44", ["3846"] = "11 22 44", ["3847"] = "11 22 44", ["3848"] = "11 22 44",
["3851"] = "11 22 44", ["3852"] = "11 22 44", ["3853"] = "11 22 44", ["3854"] = "11 22 44", ["3855"] = "11 22 44", ["3856"] = "11 22 44", ["3857"] = "11 22 44", ["3858"] = "11 22 44",
["3861"] = "11 22 44", ["3862"] = "11 22 44", ["3863"] = "11 22 44", ["3864"] = "11 22 44", ["3865"] = "11 22 44", ["3866"] = "11 22 44", ["3867"] = "11 22 44", ["3868"] = "11 22 44",
["3871"] = "22 44 51", ["3872"] = "22 44 51", ["3873"] = "22 44 51", ["3874"] = "22 44 51", ["3875"] = "22 44 51", ["3876"] = "22 44 51", ["3877"] = "22 44 55", ["3878"] = "22 44 55",
["3881"] = "22 44 51", ["3882"] = "22 44 51", ["3883"] = "22 44 51", ["3884"] = "22 44 51", ["3885"] = "22 44 51", ["3886"] = "22 44 51", ["3887"] = "22 44 55", ["3888"] = "22 44 55",
},
['tx'] = {
["10"] = "",
["11"] = "44", ["12"] = "22", ["13"] = "53", ["14"] = "42", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22",
["211"] = "44 44", ["212"] = "44 22", ["213"] = "44 44", ["214"] = "44 22", ["215"] = "44 44", ["216"] = "44 22", ["217"] = "44 55", ["218"] = "44 22",
["221"] = "22 44", ["222"] = "22 22", ["223"] = "22 44", ["224"] = "22 22", ["225"] = "22 44", ["226"] = "22 22", ["227"] = "22 55", ["228"] = "22 22",
["231"] = "53 53", ["232"] = "53 42", ["233"] = "53 53", ["234"] = "53 42", ["235"] = "53 53", ["236"] = "53 42", ["237"] = "53 55", ["238"] = "53 22",
["241"] = "42 53", ["242"] = "42 42", ["243"] = "42 53", ["244"] = "42 42", ["245"] = "42 53", ["246"] = "42 42", ["247"] = "42 55", ["248"] = "42 22",
["251"] = "334 334", ["252"] = "334 113", ["253"] = "334 53", ["254"] = "334 42", ["255"] = "334 334", ["256"] = "334 113", ["257"] = "334 55", ["258"] = "334 22",
["261"] = "113 334", ["262"] = "113 113", ["263"] = "113 53", ["264"] = "113 42", ["265"] = "113 334", ["266"] = "113 113", ["267"] = "113 55", ["268"] = "113 22",
["271"] = "55 44", ["272"] = "55 22", ["273"] = "55 53", ["274"] = "55 42", ["275"] = "55 334", ["276"] = "55 113", ["277"] = "55 55", ["278"] = "55 22",
["281"] = "22 44", ["282"] = "22 22", ["283"] = "22 53", ["284"] = "22 42", ["285"] = "22 334", ["286"] = "22 113", ["287"] = "22 55", ["288"] = "22 22",
["3111"] = "44 44 44", ["3112"] = "44 44 22", ["3113"] = "44 44 44", ["3114"] = "44 44 22", ["3115"] = "44 44 44", ["3116"] = "44 44 22", ["3117"] = "44 44 55", ["3118"] = "44 44 22",
["3121"] = "44 22 44", ["3122"] = "44 22 22", ["3123"] = "44 22 44", ["3124"] = "44 22 22", ["3125"] = "44 22 44", ["3126"] = "44 22 22", ["3127"] = "44 22 55", ["3128"] = "44 22 22",
["3131"] = "44 44 44", ["3132"] = "44 44 22", ["3133"] = "44 44 44", ["3134"] = "44 44 22", ["3135"] = "44 44 44", ["3136"] = "44 44 22", ["3137"] = "44 44 55", ["3138"] = "44 44 22",
["3141"] = "44 22 44", ["3142"] = "44 22 22", ["3143"] = "44 22 44", ["3144"] = "44 22 22", ["3145"] = "44 22 44", ["3146"] = "44 22 22", ["3147"] = "44 22 55", ["3148"] = "44 22 22",
["3151"] = "44 44 44", ["3152"] = "44 44 22", ["3153"] = "44 44 44", ["3154"] = "44 44 22", ["3155"] = "44 44 44", ["3156"] = "44 44 22", ["3157"] = "44 44 55", ["3158"] = "44 44 22",
["3161"] = "44 22 44", ["3162"] = "44 22 22", ["3163"] = "44 22 44", ["3164"] = "44 22 22", ["3165"] = "44 22 44", ["3166"] = "44 22 22", ["3167"] = "44 22 55", ["3168"] = "44 22 22",
["3171"] = "44 55 44", ["3172"] = "44 55 22", ["3173"] = "44 55 44", ["3174"] = "44 55 22", ["3175"] = "44 55 44", ["3176"] = "44 55 22", ["3177"] = "44 55 55", ["3178"] = "44 55 22",
["3181"] = "44 22 44", ["3182"] = "44 22 22", ["3183"] = "44 22 44", ["3184"] = "44 22 22", ["3185"] = "44 22 44", ["3186"] = "44 22 22", ["3187"] = "44 22 55", ["3188"] = "44 22 22",
["3211"] = "22 44 44", ["3212"] = "22 44 22", ["3213"] = "22 44 44", ["3214"] = "22 44 22", ["3215"] = "22 44 44", ["3216"] = "22 44 22", ["3217"] = "22 44 55", ["3218"] = "22 44 22",
["3221"] = "22 22 44", ["3222"] = "22 22 22", ["3223"] = "22 22 44", ["3224"] = "22 22 22", ["3225"] = "22 22 44", ["3226"] = "22 22 22", ["3227"] = "22 22 55", ["3228"] = "22 22 22",
["3231"] = "22 44 44", ["3232"] = "22 44 22", ["3233"] = "22 44 44", ["3234"] = "22 44 22", ["3235"] = "22 44 44", ["3236"] = "22 44 22", ["3237"] = "22 44 55", ["3238"] = "22 44 22",
["3241"] = "22 22 44", ["3242"] = "22 22 22", ["3243"] = "22 22 44", ["3244"] = "22 22 22", ["3245"] = "22 22 44", ["3246"] = "22 22 22", ["3247"] = "22 22 55", ["3248"] = "22 22 22",
["3251"] = "22 44 44", ["3252"] = "22 44 22", ["3253"] = "22 44 44", ["3254"] = "22 44 22", ["3255"] = "22 44 44", ["3256"] = "22 44 22", ["3257"] = "22 44 55", ["3258"] = "22 44 22",
["3261"] = "22 22 44", ["3262"] = "22 22 22", ["3263"] = "22 22 44", ["3264"] = "22 22 22", ["3265"] = "22 22 44", ["3266"] = "22 22 22", ["3267"] = "22 22 55", ["3268"] = "22 22 22",
["3271"] = "22 55 44", ["3272"] = "22 55 22", ["3273"] = "22 55 44", ["3274"] = "22 55 22", ["3275"] = "22 55 44", ["3276"] = "22 55 22", ["3277"] = "22 55 55", ["3278"] = "22 55 22",
["3281"] = "22 22 44", ["3282"] = "22 22 22", ["3283"] = "22 22 44", ["3284"] = "22 22 22", ["3285"] = "22 22 44", ["3286"] = "22 22 22", ["3287"] = "22 22 55", ["3288"] = "22 22 22",
["3311"] = "53 53 53", ["3312"] = "53 53 42", ["3313"] = "53 53 53", ["3314"] = "53 53 42", ["3315"] = "53 53 53", ["3316"] = "53 53 42", ["3317"] = "53 53 55", ["3318"] = "53 53 22",
["3321"] = "53 42 53", ["3322"] = "53 42 42", ["3323"] = "53 42 53", ["3324"] = "53 42 42", ["3325"] = "53 42 53", ["3326"] = "53 42 42", ["3327"] = "53 42 55", ["3328"] = "53 42 22",
["3331"] = "53 53 53", ["3332"] = "53 53 42", ["3333"] = "53 53 53", ["3334"] = "53 53 42", ["3335"] = "53 53 53", ["3336"] = "53 53 42", ["3337"] = "53 53 55", ["3338"] = "53 53 22",
["3341"] = "53 42 53", ["3342"] = "53 42 42", ["3343"] = "53 42 53", ["3344"] = "53 42 42", ["3345"] = "53 42 53", ["3346"] = "53 42 42", ["3347"] = "53 42 55", ["3348"] = "53 42 22",
["3351"] = "53 53 53", ["3352"] = "53 53 42", ["3353"] = "53 53 53", ["3354"] = "53 53 42", ["3355"] = "53 53 53", ["3356"] = "53 53 42", ["3357"] = "53 53 55", ["3358"] = "53 53 22",
["3361"] = "53 42 53", ["3362"] = "53 42 42", ["3363"] = "53 42 53", ["3364"] = "53 42 42", ["3365"] = "53 42 53", ["3366"] = "53 42 42", ["3367"] = "53 42 55", ["3368"] = "53 42 22",
["3371"] = "53 55 53", ["3372"] = "53 55 42", ["3373"] = "53 55 53", ["3374"] = "53 55 42", ["3375"] = "53 55 53", ["3376"] = "53 55 42", ["3377"] = "53 55 55", ["3378"] = "53 55 22",
["3381"] = "53 22 53", ["3382"] = "53 22 42", ["3383"] = "53 22 53", ["3384"] = "53 22 42", ["3385"] = "53 22 53", ["3386"] = "53 22 42", ["3387"] = "53 22 55", ["3388"] = "53 22 22",
["3411"] = "42 53 53", ["3412"] = "42 53 42", ["3413"] = "42 53 53", ["3414"] = "42 53 42", ["3415"] = "42 53 53", ["3416"] = "42 53 42", ["3417"] = "42 53 55", ["3418"] = "42 53 22",
["3421"] = "42 42 53", ["3422"] = "42 42 42", ["3423"] = "42 42 53", ["3424"] = "42 42 42", ["3425"] = "42 42 53", ["3426"] = "42 42 42", ["3427"] = "42 42 55", ["3428"] = "42 42 22",
["3431"] = "42 53 53", ["3432"] = "42 53 42", ["3433"] = "42 53 53", ["3434"] = "42 53 42", ["3435"] = "42 53 53", ["3436"] = "42 53 42", ["3437"] = "42 53 55", ["3438"] = "42 53 22",
["3441"] = "42 42 53", ["3442"] = "42 42 42", ["3443"] = "42 42 53", ["3444"] = "42 42 42", ["3445"] = "42 42 53", ["3446"] = "42 42 42", ["3447"] = "42 42 55", ["3448"] = "42 42 22",
["3451"] = "42 53 53", ["3452"] = "42 53 42", ["3453"] = "42 53 53", ["3454"] = "42 53 42", ["3455"] = "42 53 53", ["3456"] = "42 53 42", ["3457"] = "42 53 55", ["3458"] = "42 53 22",
["3461"] = "42 42 53", ["3462"] = "42 42 42", ["3463"] = "42 42 53", ["3464"] = "42 42 42", ["3465"] = "42 42 53", ["3466"] = "42 42 42", ["3467"] = "42 42 55", ["3468"] = "42 42 22",
["3471"] = "42 55 53", ["3472"] = "42 55 42", ["3473"] = "42 55 53", ["3474"] = "42 55 42", ["3475"] = "42 55 53", ["3476"] = "42 55 42", ["3477"] = "42 55 55", ["3478"] = "42 55 22",
["3481"] = "42 22 53", ["3482"] = "42 22 42", ["3483"] = "42 22 53", ["3484"] = "42 22 42", ["3485"] = "42 22 53", ["3486"] = "42 22 42", ["3487"] = "42 22 55", ["3488"] = "42 22 22",
["3511"] = "334 53 53", ["3512"] = "334 53 42", ["3513"] = "334 53 53", ["3514"] = "334 53 42", ["3515"] = "334 53 53", ["3516"] = "334 53 42", ["3517"] = "334 53 55", ["3518"] = "334 53 22",
["3521"] = "334 42 53", ["3522"] = "334 42 42", ["3523"] = "334 42 53", ["3524"] = "334 42 42", ["3525"] = "334 42 53", ["3526"] = "334 42 42", ["3527"] = "334 42 55", ["3528"] = "334 42 22",
["3531"] = "334 53 53", ["3532"] = "334 53 42", ["3533"] = "334 53 53", ["3534"] = "334 53 42", ["3535"] = "334 53 53", ["3536"] = "334 53 42", ["3537"] = "334 53 55", ["3538"] = "334 53 22",
["3541"] = "334 42 53", ["3542"] = "334 42 42", ["3543"] = "334 42 53", ["3544"] = "334 42 42", ["3545"] = "334 42 53", ["3546"] = "334 42 42", ["3547"] = "334 42 55", ["3548"] = "334 42 22",
["3551"] = "334 334 44", ["3552"] = "334 334 22", ["3553"] = "334 334 53", ["3554"] = "334 334 42", ["3555"] = "334 334 334", ["3556"] = "334 334 113", ["3557"] = "334 334 55", ["3558"] = "334 334 22",
["3561"] = "334 113 44", ["3562"] = "334 113 22", ["3563"] = "334 113 53", ["3564"] = "334 113 42", ["3565"] = "334 113 334", ["3566"] = "334 113 113", ["3567"] = "334 113 55", ["3568"] = "334 113 22",
["3571"] = "334 55 44", ["3572"] = "334 55 22", ["3573"] = "334 55 44", ["3574"] = "334 55 22", ["3575"] = "334 55 44", ["3576"] = "334 55 22", ["3577"] = "334 55 55", ["3578"] = "334 55 22",
["3581"] = "334 22 44", ["3582"] = "334 22 22", ["3583"] = "334 22 44", ["3584"] = "334 22 22", ["3585"] = "334 22 44", ["3586"] = "334 22 22", ["3587"] = "334 22 55", ["3588"] = "334 22 22",
["3611"] = "113 53 53", ["3612"] = "113 53 42", ["3613"] = "113 53 53", ["3614"] = "113 53 42", ["3615"] = "113 53 53", ["3616"] = "113 53 42", ["3617"] = "113 53 55", ["3618"] = "113 53 22",
["3621"] = "113 42 53", ["3622"] = "113 42 42", ["3623"] = "113 42 53", ["3624"] = "113 42 42", ["3625"] = "113 42 53", ["3626"] = "113 42 42", ["3627"] = "113 42 55", ["3628"] = "113 42 22",
["3631"] = "113 53 53", ["3632"] = "113 53 42", ["3633"] = "113 53 53", ["3634"] = "113 53 42", ["3635"] = "113 53 53", ["3636"] = "113 53 42", ["3637"] = "113 53 55", ["3638"] = "113 53 22",
["3641"] = "113 42 53", ["3642"] = "113 42 42", ["3643"] = "113 42 53", ["3644"] = "113 42 42", ["3645"] = "113 42 53", ["3646"] = "113 42 42", ["3647"] = "113 42 55", ["3648"] = "113 42 22",
["3651"] = "113 334 44", ["3652"] = "113 334 22", ["3653"] = "113 334 53", ["3654"] = "113 334 42", ["3655"] = "113 334 334", ["3656"] = "113 334 113", ["3657"] = "113 334 55", ["3658"] = "113 334 22",
["3661"] = "113 113 44", ["3662"] = "113 113 22", ["3663"] = "113 113 53", ["3664"] = "113 113 42", ["3665"] = "113 113 334", ["3666"] = "113 113 113", ["3667"] = "113 113 55", ["3668"] = "113 113 22",
["3671"] = "113 55 44", ["3672"] = "113 55 22", ["3673"] = "113 55 44", ["3674"] = "113 55 22", ["3675"] = "113 55 44", ["3676"] = "113 55 22", ["3677"] = "113 55 55", ["3678"] = "113 55 22",
["3681"] = "113 22 44", ["3682"] = "113 22 22", ["3683"] = "113 22 44", ["3684"] = "113 22 22", ["3685"] = "113 22 44", ["3686"] = "113 22 22", ["3687"] = "113 22 55", ["3688"] = "113 22 22",
["3711"] = "55 44 44", ["3712"] = "55 44 22", ["3713"] = "55 44 44", ["3714"] = "55 44 22", ["3715"] = "55 44 44", ["3716"] = "55 44 22", ["3717"] = "55 44 55", ["3718"] = "55 44 22",
["3721"] = "55 22 44", ["3722"] = "55 22 22", ["3723"] = "55 22 44", ["3724"] = "55 22 22", ["3725"] = "55 22 44", ["3726"] = "55 22 22", ["3727"] = "55 22 55", ["3728"] = "55 22 22",
["3731"] = "55 53 53", ["3732"] = "55 53 42", ["3733"] = "55 53 53", ["3734"] = "55 53 42", ["3735"] = "55 53 53", ["3736"] = "55 53 42", ["3737"] = "55 53 55", ["3738"] = "55 53 22",
["3741"] = "55 42 53", ["3742"] = "55 42 42", ["3743"] = "55 42 53", ["3744"] = "55 42 42", ["3745"] = "55 42 53", ["3746"] = "55 42 42", ["3747"] = "55 42 55", ["3748"] = "55 42 22",
["3751"] = "55 334 44", ["3752"] = "55 334 22", ["3753"] = "55 334 53", ["3754"] = "55 334 42", ["3755"] = "55 334 334", ["3756"] = "55 334 113", ["3757"] = "55 334 55", ["3758"] = "55 334 22",
["3761"] = "55 113 44", ["3762"] = "55 113 22", ["3763"] = "55 113 53", ["3764"] = "55 113 42", ["3765"] = "55 113 334", ["3766"] = "55 113 113", ["3767"] = "55 113 55", ["3768"] = "55 113 22",
["3771"] = "55 55 44", ["3772"] = "55 55 22", ["3773"] = "55 55 53", ["3774"] = "55 55 42", ["3775"] = "55 55 334", ["3776"] = "55 55 113", ["3777"] = "55 55 55", ["3778"] = "55 55 22",
["3781"] = "55 22 44", ["3782"] = "55 22 22", ["3783"] = "55 22 53", ["3784"] = "55 22 42", ["3785"] = "55 22 334", ["3786"] = "55 22 113", ["3787"] = "55 22 55", ["3788"] = "55 22 22",
["3811"] = "22 44 44", ["3812"] = "22 44 22", ["3813"] = "22 44 44", ["3814"] = "22 44 22", ["3815"] = "22 44 44", ["3816"] = "22 44 22", ["3817"] = "22 44 55", ["3818"] = "22 44 22",
["3821"] = "22 22 44", ["3822"] = "22 22 22", ["3823"] = "22 22 44", ["3824"] = "22 22 22", ["3825"] = "22 22 44", ["3826"] = "22 22 22", ["3827"] = "22 22 55", ["3828"] = "22 22 22",
["3831"] = "22 53 53", ["3832"] = "22 53 42", ["3833"] = "22 53 53", ["3834"] = "22 53 42", ["3835"] = "22 53 53", ["3836"] = "22 53 42", ["3837"] = "22 53 55", ["3838"] = "22 53 22",
["3841"] = "22 42 53", ["3842"] = "22 42 42", ["3843"] = "22 42 53", ["3844"] = "22 42 42", ["3845"] = "22 42 53", ["3846"] = "22 42 42", ["3847"] = "22 42 55", ["3848"] = "22 42 22",
["3851"] = "22 334 44", ["3852"] = "22 334 22", ["3853"] = "22 334 53", ["3854"] = "22 334 42", ["3855"] = "22 334 334", ["3856"] = "22 334 113", ["3857"] = "22 334 55", ["3858"] = "22 334 22",
["3861"] = "22 113 44", ["3862"] = "22 113 22", ["3863"] = "22 113 53", ["3864"] = "22 113 42", ["3865"] = "22 113 334", ["3866"] = "22 113 113", ["3867"] = "22 113 55", ["3868"] = "22 113 22",
["3871"] = "22 55 44", ["3872"] = "22 55 22", ["3873"] = "22 55 53", ["3874"] = "22 55 42", ["3875"] = "22 55 334", ["3876"] = "22 55 113", ["3877"] = "22 55 55", ["3878"] = "22 55 22",
["3881"] = "22 22 44", ["3882"] = "22 22 22", ["3883"] = "22 22 53", ["3884"] = "22 22 42", ["3885"] = "22 22 334", ["3886"] = "22 22 113", ["3887"] = "22 22 55", ["3888"] = "22 22 22",
--!RPS!
},
['hn'] = {
["10"] = "",
["11"] = "55", ["12"] = "113", ["13"] = "53", ["14"] = "42", ["15"] = "445", ["16"] = "113", ["17"] = "55", ["18"] = "22",
["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 55", ["214"] = "55 55", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "55 11", ["218"] = "55 11",
["221"] = "11 55", ["222"] = "11 55", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "55 22",
["231"] = "55 55", ["232"] = "55 55", ["233"] = "55 21", ["234"] = "55 21", ["235"] = "55 21", ["236"] = "55 21", ["237"] = "55 55", ["238"] = "55 55",
["241"] = "55 55", ["242"] = "55 55", ["243"] = "55 21", ["244"] = "55 21", ["245"] = "55 21", ["246"] = "55 21", ["247"] = "55 55", ["248"] = "55 55",
["251"] = "33 53", ["252"] = "33 42", ["253"] = "33 53", ["254"] = "33 42", ["255"] = "33 53", ["256"] = "33 42", ["257"] = "33 55", ["258"] = "33 22",
["261"] = "11 53", ["262"] = "11 42", ["263"] = "11 53", ["264"] = "11 42", ["265"] = "11 53", ["266"] = "11 42", ["267"] = "11 55", ["268"] = "11 22",
["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "11 55", ["282"] = "11 55", ["283"] = "22 21", ["284"] = "22 21", ["285"] = "22 21", ["286"] = "22 21", ["287"] = "11 55", ["288"] = "11 22",
["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 55", ["3114"] = "55 55 55", ["3115"] = "55 55 55", ["3116"] = "55 55 55", ["3117"] = "55 55 11", ["3118"] = "55 55 11",
["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 55", ["3124"] = "55 55 55", ["3125"] = "55 55 55", ["3126"] = "55 55 55", ["3127"] = "55 55 11", ["3128"] = "55 55 11",
["3131"] = "55 55 55", ["3132"] = "55 55 55", ["3133"] = "55 55 55", ["3134"] = "55 55 55", ["3135"] = "55 55 55", ["3136"] = "55 55 55", ["3137"] = "55 55 11", ["3138"] = "55 55 11",
["3141"] = "55 55 55", ["3142"] = "55 55 55", ["3143"] = "55 55 55", ["3144"] = "55 55 55", ["3145"] = "55 55 55", ["3146"] = "55 55 55", ["3147"] = "55 55 11", ["3148"] = "55 55 11",
["3151"] = "55 55 55", ["3152"] = "55 55 55", ["3153"] = "55 55 55", ["3154"] = "55 55 55", ["3155"] = "55 55 55", ["3156"] = "55 55 55", ["3157"] = "55 55 11", ["3158"] = "55 55 11",
["3161"] = "55 55 55", ["3162"] = "55 55 55", ["3163"] = "55 55 55", ["3164"] = "55 55 55", ["3165"] = "55 55 55", ["3166"] = "55 55 55", ["3167"] = "55 55 11", ["3168"] = "55 55 11",
["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 11", ["3178"] = "55 33 11",
["3181"] = "55 33 11", ["3182"] = "55 33 11", ["3183"] = "55 33 11", ["3184"] = "55 33 11", ["3185"] = "55 33 11", ["3186"] = "55 33 11", ["3187"] = "55 33 11", ["3188"] = "55 33 11",
["3211"] = "11 55 55", ["3212"] = "11 55 55", ["3213"] = "11 55 55", ["3214"] = "11 55 55", ["3215"] = "11 55 55", ["3216"] = "11 55 55", ["3217"] = "11 55 11", ["3218"] = "11 55 11",
["3221"] = "11 55 55", ["3222"] = "11 55 55", ["3223"] = "11 55 55", ["3224"] = "11 55 55", ["3225"] = "11 55 55", ["3226"] = "11 55 55", ["3227"] = "11 55 11", ["3228"] = "11 55 11",
["3231"] = "11 55 55", ["3232"] = "11 55 55", ["3233"] = "11 55 55", ["3234"] = "11 55 55", ["3235"] = "11 55 55", ["3236"] = "11 55 55", ["3237"] = "11 55 11", ["3238"] = "11 55 11",
["3241"] = "11 55 55", ["3242"] = "11 55 55", ["3243"] = "11 55 55", ["3244"] = "11 55 55", ["3245"] = "11 55 55", ["3246"] = "11 55 55", ["3247"] = "11 55 11", ["3248"] = "11 55 11",
["3251"] = "11 55 55", ["3252"] = "11 55 55", ["3253"] = "11 55 55", ["3254"] = "11 55 55", ["3255"] = "11 55 55", ["3256"] = "11 55 55", ["3257"] = "11 55 11", ["3258"] = "11 55 11",
["3261"] = "11 55 55", ["3262"] = "11 55 55", ["3263"] = "11 55 55", ["3264"] = "11 55 55", ["3265"] = "11 55 55", ["3266"] = "11 55 55", ["3267"] = "11 55 11", ["3268"] = "11 55 11",
["3271"] = "11 55 21", ["3272"] = "11 55 21", ["3273"] = "11 55 21", ["3274"] = "11 55 21", ["3275"] = "11 55 21", ["3276"] = "11 55 21", ["3277"] = "11 55 11", ["3278"] = "11 55 11",
["3281"] = "11 55 21", ["3282"] = "11 55 21", ["3283"] = "11 55 21", ["3284"] = "11 55 21", ["3285"] = "11 55 21", ["3286"] = "11 55 21", ["3287"] = "11 55 11", ["3288"] = "11 55 11",
["3311"] = "55 55 55", ["3312"] = "55 55 55", ["3313"] = "55 55 55", ["3314"] = "55 55 55", ["3315"] = "55 55 55", ["3316"] = "55 55 55", ["3317"] = "55 55 11", ["3318"] = "55 55 11",
["3321"] = "55 55 55", ["3322"] = "55 55 55", ["3323"] = "55 55 55", ["3324"] = "55 55 55", ["3325"] = "55 55 55", ["3326"] = "55 55 55", ["3327"] = "55 55 11", ["3328"] = "55 55 11",
["3331"] = "55 33 21", ["3332"] = "55 33 21", ["3333"] = "55 33 21", ["3334"] = "55 33 21", ["3335"] = "55 33 21", ["3336"] = "55 33 21", ["3337"] = "55 33 11", ["3338"] = "",
["3341"] = "55 33 21", ["3342"] = "55 33 21", ["3343"] = "55 33 21", ["3344"] = "55 33 21", ["3345"] = "55 33 21", ["3346"] = "55 33 21", ["3347"] = "55 33 11", ["3348"] = "55 33 11",
["3351"] = "55 33 21", ["3352"] = "55 33 21", ["3353"] = "55 33 21", ["3354"] = "55 33 21", ["3355"] = "55 33 21", ["3356"] = "55 33 21", ["3357"] = "55 33 11", ["3358"] = "55 33 11",
["3361"] = "55 33 21", ["3362"] = "55 33 21", ["3363"] = "55 33 21", ["3364"] = "55 33 21", ["3365"] = "55 33 21", ["3366"] = "55 33 21", ["3367"] = "55 33 11", ["3368"] = "55 33 11",
["3371"] = "55 55 21", ["3372"] = "55 55 21", ["3373"] = "55 55 21", ["3374"] = "55 55 21", ["3375"] = "55 55 21", ["3376"] = "55 55 21", ["3377"] = "55 55 11", ["3378"] = "55 55 11",
["3381"] = "55 55 21", ["3382"] = "55 55 21", ["3383"] = "55 55 21", ["3384"] = "55 55 21", ["3385"] = "55 55 21", ["3386"] = "55 55 21", ["3387"] = "55 55 11", ["3388"] = "55 55 11",
["3411"] = "55 55 55", ["3412"] = "55 55 55", ["3413"] = "55 55 55", ["3414"] = "55 55 55", ["3415"] = "55 55 55", ["3416"] = "55 55 55", ["3417"] = "55 55 11", ["3418"] = "55 55 11",
["3421"] = "55 55 55", ["3422"] = "55 55 55", ["3423"] = "55 55 55", ["3424"] = "55 55 55", ["3425"] = "55 55 55", ["3426"] = "55 55 55", ["3427"] = "55 55 11", ["3428"] = "55 55 11",
["3431"] = "55 33 21", ["3432"] = "55 33 21", ["3433"] = "55 33 21", ["3434"] = "55 33 21", ["3435"] = "55 33 21", ["3436"] = "55 33 21", ["3437"] = "55 33 11", ["3438"] = "55 33 11",
["3441"] = "55 33 21", ["3442"] = "55 33 21", ["3443"] = "55 33 21", ["3444"] = "55 33 21", ["3445"] = "55 33 21", ["3446"] = "55 33 21", ["3447"] = "55 33 11", ["3448"] = "55 33 11",
["3451"] = "55 33 21", ["3452"] = "55 33 21", ["3453"] = "55 33 21", ["3454"] = "55 33 21", ["3455"] = "55 33 21", ["3456"] = "55 33 21", ["3457"] = "55 33 11", ["3458"] = "55 33 11",
["3461"] = "55 33 21", ["3462"] = "55 33 21", ["3463"] = "55 33 21", ["3464"] = "55 33 21", ["3465"] = "55 33 21", ["3466"] = "55 33 21", ["3467"] = "55 33 11", ["3468"] = "55 33 11",
["3471"] = "55 55 21", ["3472"] = "55 55 21", ["3473"] = "55 55 21", ["3474"] = "55 55 21", ["3475"] = "55 55 21", ["3476"] = "55 55 21", ["3477"] = "55 55 11", ["3478"] = "55 55 11",
["3481"] = "55 55 21", ["3482"] = "55 55 21", ["3483"] = "55 55 21", ["3484"] = "55 55 21", ["3485"] = "55 55 21", ["3486"] = "55 55 21", ["3487"] = "55 55 11", ["3488"] = "55 55 11",
["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "33 55 21", ["3516"] = "33 55 21", ["3517"] = "33 55 11", ["3518"] = "33 55 11",
["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "33 55 21", ["3526"] = "33 55 21", ["3527"] = "33 55 11", ["3528"] = "33 55 11",
["3531"] = "33 55 21", ["3532"] = "33 55 21", ["3533"] = "33 55 21", ["3534"] = "33 55 21", ["3535"] = "33 55 21", ["3536"] = "33 55 21", ["3537"] = "33 55 11", ["3538"] = "33 55 11",
["3541"] = "33 55 21", ["3542"] = "33 55 21", ["3543"] = "33 55 21", ["3544"] = "33 55 21", ["3545"] = "33 55 21", ["3546"] = "33 55 21", ["3547"] = "33 55 11", ["3548"] = "33 55 11",
["3551"] = "33 55 21", ["3552"] = "33 55 21", ["3553"] = "33 55 21", ["3554"] = "33 55 21", ["3555"] = "33 55 21", ["3556"] = "33 55 21", ["3557"] = "33 55 11", ["3558"] = "33 55 11",
["3561"] = "33 55 21", ["3562"] = "33 55 21", ["3563"] = "33 55 21", ["3564"] = "33 55 21", ["3565"] = "33 55 21", ["3566"] = "33 55 21", ["3567"] = "33 55 11", ["3568"] = "33 55 11",
["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "33 55 21", ["3576"] = "33 55 21", ["3577"] = "33 55 11", ["3578"] = "33 55 11",
["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "33 55 21", ["3586"] = "33 55 21", ["3587"] = "33 55 11", ["3588"] = "33 55 11",
["3611"] = "11 55 21", ["3612"] = "11 55 21", ["3613"] = "11 55 21", ["3614"] = "11 55 21", ["3615"] = "11 55 21", ["3616"] = "11 55 21", ["3617"] = "11 55 11", ["3618"] = "11 55 11",
["3621"] = "11 55 21", ["3622"] = "11 55 21", ["3623"] = "11 55 21", ["3624"] = "11 55 21", ["3625"] = "11 55 21", ["3626"] = "11 55 21", ["3627"] = "11 55 11", ["3628"] = "11 55 11",
["3631"] = "11 55 21", ["3632"] = "11 55 21", ["3633"] = "11 55 21", ["3634"] = "11 55 21", ["3635"] = "11 55 21", ["3636"] = "11 55 21", ["3637"] = "11 55 11", ["3638"] = "11 55 11",
["3641"] = "11 55 21", ["3642"] = "11 55 21", ["3643"] = "11 55 21", ["3644"] = "11 55 21", ["3645"] = "11 55 21", ["3646"] = "11 55 21", ["3647"] = "11 55 11", ["3648"] = "11 55 11",
["3651"] = "11 55 21", ["3652"] = "11 55 21", ["3653"] = "11 55 21", ["3654"] = "11 55 21", ["3655"] = "11 55 21", ["3656"] = "11 55 21", ["3657"] = "11 55 11", ["3658"] = "11 55 11",
["3661"] = "11 55 21", ["3662"] = "11 55 21", ["3663"] = "11 55 21", ["3664"] = "11 55 21", ["3665"] = "11 55 21", ["3666"] = "11 55 21", ["3667"] = "11 55 11", ["3668"] = "11 55 11",
["3671"] = "11 55 21", ["3672"] = "11 55 21", ["3673"] = "11 55 21", ["3674"] = "11 55 21", ["3675"] = "11 55 21", ["3676"] = "11 55 21", ["3677"] = "11 55 11", ["3678"] = "11 55 11",
["3681"] = "11 55 21", ["3682"] = "11 55 21", ["3683"] = "11 55 21", ["3684"] = "11 55 21", ["3685"] = "11 55 21", ["3686"] = "11 55 21", ["3687"] = "11 55 11", ["3688"] = "11 55 11",
["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 55", ["3714"] = "55 55 55", ["3715"] = "55 55 55", ["3716"] = "55 55 55", ["3717"] = "55 55 11", ["3718"] = "55 55 11",
["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 55", ["3724"] = "55 55 55", ["3725"] = "55 55 55", ["3726"] = "55 55 55", ["3727"] = "55 55 11", ["3728"] = "55 55 11",
["3731"] = "55 33 21", ["3732"] = "55 33 21", ["3733"] = "55 33 21", ["3734"] = "55 33 21", ["3735"] = "55 33 21", ["3736"] = "55 33 21", ["3737"] = "55 33 11", ["3738"] = "55 33 11",
["3741"] = "55 33 21", ["3742"] = "55 33 21", ["3743"] = "55 33 21", ["3744"] = "55 33 21", ["3745"] = "55 33 21", ["3746"] = "55 33 21", ["3747"] = "55 33 11", ["3748"] = "55 33 11",
["3751"] = "55 33 21", ["3752"] = "55 33 21", ["3753"] = "55 33 21", ["3754"] = "55 33 21", ["3755"] = "55 33 21", ["3756"] = "55 33 21", ["3757"] = "55 33 11", ["3758"] = "55 33 11",
["3761"] = "55 33 21", ["3762"] = "55 33 21", ["3763"] = "55 33 21", ["3764"] = "55 33 21", ["3765"] = "55 33 21", ["3766"] = "55 33 21", ["3767"] = "55 33 11", ["3768"] = "55 33 11",
["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 55", ["3774"] = "55 55 55", ["3775"] = "55 55 55", ["3776"] = "55 55 55", ["3777"] = "55 55 55", ["3778"] = "55 55 55",
["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 55", ["3784"] = "55 55 55", ["3785"] = "55 55 55", ["3786"] = "55 55 55", ["3787"] = "55 55 55", ["3788"] = "55 55 55",
--3811 to 3816, 3821 to 3826 extrapolated from linguistic trends & data in vocab section
["3811"] = "11 55 55", ["3812"] = "11 55 55", ["3813"] = "11 55 55", ["3814"] = "11 55 55", ["3815"] = "11 55 55", ["3816"] = "11 55 55", ["3817"] = "11 55 11", ["3818"] = "11 55 11",
["3821"] = "11 55 55", ["3822"] = "11 55 55", ["3823"] = "11 55 55", ["3824"] = "11 55 55", ["3825"] = "11 55 55", ["3826"] = "11 55 55", ["3827"] = "11 55 11", ["3828"] = "11 55 11",
["3831"] = "22 33 21", ["3832"] = "22 33 21", ["3833"] = "22 33 21", ["3834"] = "22 33 21", ["3835"] = "22 33 21", ["3836"] = "22 33 21", ["3837"] = "", ["3838"] = "22 33 11",
["3841"] = "22 33 21", ["3842"] = "22 33 21", ["3843"] = "22 33 21", ["3844"] = "22 33 21", ["3845"] = "22 33 21", ["3846"] = "22 33 21", ["3847"] = "22 33 11", ["3848"] = "22 33 11",
["3851"] = "22 33 21", ["3852"] = "22 33 21", ["3853"] = "22 33 21", ["3854"] = "22 33 21", ["3855"] = "22 33 21", ["3856"] = "22 33 21", ["3857"] = "22 33 11", ["3858"] = "22 33 11",
["3861"] = "22 33 21", ["3862"] = "22 33 21", ["3863"] = "22 33 21", ["3864"] = "22 33 21", ["3865"] = "22 33 21", ["3866"] = "22 33 21", ["3867"] = "22 33 11", ["3868"] = "22 33 11",
["3871"] = "11 55 55", ["3872"] = "11 55 55", ["3873"] = "11 55 55", ["3874"] = "11 55 55", ["3875"] = "11 55 55", ["3876"] = "11 55 55", ["3877"] = "11 55 55", ["3878"] = "11 55 55",
["3881"] = "11 55 55", ["3882"] = "11 55 55", ["3883"] = "11 55 55", ["3884"] = "11 55 55", ["3885"] = "11 55 55", ["3886"] = "11 55 55", ["3887"] = "11 55 55", ["3888"] = "11 55 55",
--RPS
["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "33",
["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11", --2 and 8 have sporadic 1 & 8 shifts
["multiple"] = "33"
},
['hy'] = {
["10"] = "",
["11"] = "51", ["12"] = "31", ["13"] = "343", ["14"] = "232", ["15"] = "35", ["16"] = "213", ["17"] = "55", ["18"] = "22",
["211"] = "35 51", ["212"] = "35 51", ["213"] = "53 31", ["214"] = "53 31", ["215"] = "53 31", ["216"] = "53 31", ["217"] = "35 55", ["218"] = "35 55",
["221"] = "13 51", ["222"] = "13 51", ["223"] = "13 51", ["224"] = "13 51", ["225"] = "13 51", ["226"] = "13 51", ["227"] = "13 33", ["228"] = "13 33",
["231"] = "343 51", ["232"] = "343 51", ["233"] = "343 35", ["234"] = "343 35", ["235"] = "343 35", ["236"] = "343 35", ["237"] = "343 55", ["238"] = "343 55",
["241"] = "232 51", ["242"] = "232 31", ["243"] = "232 35", ["244"] = "232 35", ["245"] = "232 35", ["246"] = "232 35", ["247"] = "232 55", ["248"] = "232 55",
["251"] = "35 31", ["252"] = "35 31", ["253"] = "35 31", ["254"] = "35 31", ["255"] = "35 31", ["256"] = "35 31", ["257"] = "35 33", ["258"] = "35 33",
["261"] = "35 31", ["262"] = "35 31", ["263"] = "35 31", ["264"] = "35 31", ["265"] = "35 31", ["266"] = "35 31", ["267"] = "213 55", ["268"] = "213 55",
["271"] = "55 51", ["272"] = "55 51", ["273"] = "55 35", ["274"] = "55 35", ["275"] = "55 35", ["276"] = "55 35", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "22 51", ["282"] = "22 51", ["283"] = "22 35", ["284"] = "22 35", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 55", ["288"] = "22 55",
--based on the source, i think this is what they mean
["311"] = "35 55 31", ["312"] = "35 55 31", ["313"] = "53 55 31", ["314"] = "53 55 31", ["315"] = "35 55 31", ["316"] = "35 55 31", ["317"] = "35 55 31", ["318"] = "35 55 31",
["321"] = "31 55 31", ["322"] = "31 55 31", ["323"] = "31 55 31", ["324"] = "31 55 31", ["325"] = "31 55 31", ["326"] = "31 55 31", ["327"] = "31 55 31", ["328"] = "31 55 31",
["331"] = "34 53 31", ["332"] = "34 44 31", ["333"] = "34 44 31", ["334"] = "34 44 31", ["335"] = "34 44 31", ["336"] = "34 44 31", ["337"] = "34 44 31", ["338"] = "34 44 31",
["341"] = "23 53 31", ["342"] = "23 53 31", ["343"] = "23 44 31", ["344"] = "23 44 31", ["345"] = "23 44 31", ["346"] = "23 44 31", ["347"] = "23 44 31", ["348"] = "23 44 31",
["351"] = "35 55 31", ["352"] = "35 55 31", ["353"] = "35 55 31", ["354"] = "35 55 31", ["355"] = "35 55 31", ["356"] = "35 55 31", ["357"] = "35 55 31", ["358"] = "25 55 31",
["361"] = "13 44 31", ["362"] = "13 44 31", ["363"] = "13 44 31", ["364"] = "13 44 31", ["365"] = "13 44 31", ["366"] = "13 44 31", ["367"] = "13 44 31", ["368"] = "13 44 31",
["371"] = "55 55 51", ["372"] = "55 55 51", ["373"] = "55 55 31", ["374"] = "55 55 31", ["375"] = "55 55 31", ["376"] = "55 55 31", ["377"] = "55 55 31", ["378"] = "55 55 31",
["381"] = "22 55 51", ["382"] = "22 55 51", ["383"] = "22 55 51", ["384"] = "22 55 51", ["385"] = "22 55 51", ["386"] = "22 55 51", ["387"] = "22 55 51", ["388"] = "22 55 53",
--!RPS!
},
['dq'] = {
["11"] = "44", ["12"] = "213", ["13"] = "53", ["14"] = "31", ["15"] = "435", ["16"] = "224", ["17"] = "55", ["18"] = "33",
},
['hz'] = {
["10"] = "",
["11"] = "334", ["21"] = "33 34", ["31"] = "33 34 52", ["41"] = "33 34 55 21", ["51"] = "33 34 55 22 21",
["213"] = "33 53", ["313"] = "33 55 21", ["413"] = "33 55 22 21",
["217"] = "33 55", ["317"] = "33 34 55",
["12"] = "23", ["22"] = "22 34", ["32"] = "22 34 53", ["42"] = "22 34 55 21",
["223"] = "22 53", ["323"] = "22 55 21", ["423"] = "22 55 22 21",
["13"] = "53", ["23"] = "55 21", ["33"] = "55 22 21", ["43"] = "55 22 22 21", ["53"] = "55 22 22 22 21",
["15"] = "45", ["25"] = "34 53", ["35"] = "34 55 21", ["45"] = "34 55 22 21",
["16"] = "113", ["26"] = "11 53", ["36"] = "11 55 21", ["46"] = "11 55 22 21", ["56"] = "11 55 22 22 21",
["17"] = "55", ["27"] = "33 34", ["37"] = "33 34 53", ["47"] = "33 34 55 21",
["273"] = "33 53", ["373"] = "33 55 21", ["473"] = "33 55 22 21",
["270"] = "55 21", ["370"] = "55 22 21", ["470"] = "55 22 22 21",
["377"] = "44 44 55",
["378"] = "44 44 55",
["18"] = "23", ["28"] = "22 34", ["38"] = "22 34 53", ["48"] = "22 34 55 21", ["58"] = "22 34 55 22 21",
["283"] = "22 53", ["383"] = "22 55 21", ["483"] = "22 55 22 21",
["380"] = "22 22 33",
--RPS
["1s"] = "33", ["2s"] = "22", ["3s"] = "33", ["5s"] = "34", ["6s"] = "12", ["7s"] = "44", ["8s"] = "22",
--3: /33~44/, 5: /33~34/, 6: /11~12~23/, 7: /3~4/, 8: /2~3/
["multiple"] = "33"
},
['xs'] = {
["10"] = "",
["11"] = "44", ["12"] = "13", ["13"] = "34", ["14"] = "213", ["15"] = "53", ["16"] = "31", ["17"] = "55", ["18"] = "22",
},
['fy'] = {
["10"] = "",
["11"] = "53", ["12"] = "113", ["13"] = "424", ["14"] = "212", ["15"] = "335", ["16"] = "212", ["17"] = "55", ["18"] = "22",
["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "55 55", ["218"] = "55 55",
["22"] = "11 11",
["23"] = "33 35",
["24"] = "11 53",
["25"] = "33 53",
["26"] = "11 35",
["271"] = "55 31", ["272"] = "55 31", ["273"] = "33 35", ["274"] = "33 35", ["275"] = "33 35", ["276"] = "33 35", ["277"] = "55 31", ["278"] = "55 31",
["28"] = "11 53",
--RPS
["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "11", ["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11",
},
['sx'] = {
["10"] = "",
["11"] = "52", ["12"] = "231", ["13"] = "335", ["14"] = "113", ["15"] = "33", ["16"] = "11", ["17"] = "45", ["18"] = "23",
--regular disyllabic LPS
["211"] = "33 52", ["212"] = "33 52", ["213"] = "33 55", ["214"] = "33 55", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 55", ["218"] = "33 55",
["221"] = "11 52", ["222"] = "11 52", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "11 55",
["231"] = "335 52", ["232"] = "335 52", ["233"] = "335 52", ["234"] = "335 52", ["235"] = "335 52", ["236"] = "335 52", ["237"] = "335 54", ["238"] = "335 54",
["241"] = "115 52", ["242"] = "115 52", ["243"] = "115 52", ["244"] = "115 52", ["245"] = "115 52", ["246"] = "115 52", ["247"] = "115 54", ["248"] = "115 54",
["251"] = "33 33", ["252"] = "33 33", ["253"] = "33 33", ["254"] = "33 33", ["255"] = "33 33", ["256"] = "33 33", ["257"] = "33 33", ["258"] = "33 33",
["261"] = "11 11", ["262"] = "11 11", ["263"] = "11 11", ["264"] = "11 11", ["265"] = "11 11", ["266"] = "11 11", ["267"] = "11 11", ["268"] = "11 11",
["271"] = "33 52", ["272"] = "33 52", ["273"] = "33 55", ["274"] = "33 55", ["275"] = "33 55", ["276"] = "33 55", ["277"] = "33 55", ["278"] = "33 55",
["281"] = "11 52", ["282"] = "11 52", ["283"] = "11 55", ["284"] = "11 55", ["285"] = "11 55", ["286"] = "11 55", ["287"] = "11 55", ["288"] = "11 55",
--irregular LPS
["250"] = "33 55", ["260"] = "11 55",
--regular trisyllabic LPS
["3111"] = "33 55 52", ["3112"] = "33 55 52", ["3113"] = "33 55 52", ["3114"] = "33 55 52", ["3115"] = "33 55 52", ["3116"] = "33 55 52", ["3117"] = "33 55 54", ["3118"] = "33 55 54",
["3121"] = "33 55 52", ["3122"] = "33 55 52", ["3123"] = "33 55 52", ["3124"] = "33 55 52", ["3125"] = "33 55 52", ["3126"] = "33 55 52", ["3127"] = "33 55 54", ["3128"] = "33 55 54",
["3131"] = "33 55 52", ["3132"] = "33 55 52", ["3133"] = "33 55 52", ["3134"] = "33 55 52", ["3135"] = "33 55 52", ["3136"] = "33 55 52", ["3137"] = "33 55 54", ["3138"] = "33 55 54",
["3141"] = "33 55 52", ["3142"] = "33 55 52", ["3143"] = "33 55 52", ["3144"] = "33 55 52", ["3145"] = "33 55 52", ["3146"] = "33 55 52", ["3147"] = "33 55 54", ["3148"] = "33 55 54",
["3151"] = "33 55 52", ["3152"] = "33 55 52", ["3153"] = "33 55 52", ["3154"] = "33 55 52", ["3155"] = "33 55 52", ["3156"] = "33 55 52", ["3157"] = "33 55 54", ["3158"] = "33 55 54",
["3161"] = "33 55 52", ["3162"] = "33 55 52", ["3163"] = "33 55 52", ["3164"] = "33 55 52", ["3165"] = "33 55 52", ["3166"] = "33 55 52", ["3167"] = "33 55 54", ["3168"] = "33 55 54",
["3171"] = "33 5 52", ["3172"] = "33 5 52", ["3173"] = "33 5 52", ["3174"] = "33 5 52", ["3175"] = "33 5 52", ["3176"] = "33 5 52", ["3177"] = "33 5 54", ["3178"] = "33 5 54",
["3181"] = "33 5 52", ["3182"] = "33 5 52", ["3183"] = "33 5 52", ["3184"] = "33 5 52", ["3185"] = "33 5 52", ["3186"] = "33 5 52", ["3187"] = "33 5 54", ["3188"] = "33 5 54",
["3211"] = "11 55 52", ["3212"] = "11 55 52", ["3213"] = "11 55 52", ["3214"] = "11 55 52", ["3215"] = "11 55 52", ["3216"] = "11 55 52", ["3217"] = "11 55 54", ["3218"] = "11 55 54",
["3221"] = "11 55 52", ["3222"] = "11 55 52", ["3223"] = "11 55 52", ["3224"] = "11 55 52", ["3225"] = "11 55 52", ["3226"] = "11 55 52", ["3227"] = "11 55 54", ["3228"] = "11 55 54",
["3231"] = "11 55 52", ["3232"] = "11 55 52", ["3233"] = "11 55 52", ["3234"] = "11 55 52", ["3235"] = "11 55 52", ["3236"] = "11 55 52", ["3237"] = "11 55 54", ["3238"] = "11 55 54",
["3241"] = "11 55 52", ["3242"] = "11 55 52", ["3243"] = "11 55 52", ["3244"] = "11 55 52", ["3245"] = "11 55 52", ["3246"] = "11 55 52", ["3247"] = "11 55 54", ["3248"] = "11 55 54",
["3251"] = "11 55 52", ["3252"] = "11 55 52", ["3253"] = "11 55 52", ["3254"] = "11 55 52", ["3255"] = "11 55 52", ["3256"] = "11 55 52", ["3257"] = "11 55 54", ["3258"] = "11 55 54",
["3261"] = "11 55 52", ["3262"] = "11 55 52", ["3263"] = "11 55 52", ["3264"] = "11 55 52", ["3265"] = "11 55 52", ["3266"] = "11 55 52", ["3267"] = "11 55 54", ["3268"] = "11 55 54",
["3271"] = "11 5 52", ["3272"] = "11 5 52", ["3273"] = "11 5 52", ["3274"] = "11 5 52", ["3275"] = "11 5 52", ["3276"] = "11 5 52", ["3277"] = "11 5 54", ["3278"] = "11 5 54",
["3281"] = "11 5 52", ["3282"] = "11 5 52", ["3283"] = "11 5 52", ["3284"] = "11 5 52", ["3285"] = "11 5 52", ["3286"] = "11 5 52", ["3287"] = "11 5 54", ["3288"] = "11 5 54",
["3311"] = "335 55 52", ["3312"] = "335 55 52", ["3313"] = "335 55 52", ["3314"] = "335 55 52", ["3315"] = "335 55 52", ["3316"] = "335 55 52", ["3317"] = "335 55 54", ["3318"] = "335 55 54",
["3321"] = "335 55 52", ["3322"] = "335 55 52", ["3323"] = "335 55 52", ["3324"] = "335 55 52", ["3325"] = "335 55 52", ["3326"] = "335 55 52", ["3327"] = "335 55 54", ["3328"] = "335 55 54",
["3331"] = "335 55 52", ["3332"] = "335 55 52", ["3333"] = "335 55 52", ["3334"] = "335 55 52", ["3335"] = "335 55 52", ["3336"] = "335 55 52", ["3337"] = "335 55 54", ["3338"] = "335 55 54",
["3341"] = "335 55 52", ["3342"] = "335 55 52", ["3343"] = "335 55 52", ["3344"] = "335 55 52", ["3345"] = "335 55 52", ["3346"] = "335 55 52", ["3347"] = "335 55 54", ["3348"] = "335 55 54",
["3351"] = "335 55 52", ["3352"] = "335 55 52", ["3353"] = "335 55 52", ["3354"] = "335 55 52", ["3355"] = "335 55 52", ["3356"] = "335 55 52", ["3357"] = "335 55 54", ["3358"] = "335 55 54",
["3361"] = "335 55 52", ["3362"] = "335 55 52", ["3363"] = "335 55 52", ["3364"] = "335 55 52", ["3365"] = "335 55 52", ["3366"] = "335 55 52", ["3367"] = "335 55 54", ["3368"] = "335 55 54",
["3371"] = "335 5 52", ["3372"] = "335 5 52", ["3373"] = "335 5 52", ["3374"] = "335 5 52", ["3375"] = "335 5 52", ["3376"] = "335 5 52", ["3377"] = "335 5 54", ["3378"] = "335 5 54",
["3381"] = "335 5 52", ["3382"] = "335 5 52", ["3383"] = "335 5 52", ["3384"] = "335 5 52", ["3385"] = "335 5 52", ["3386"] = "335 5 52", ["3387"] = "335 5 54", ["3388"] = "335 5 54",
["3411"] = "115 55 52", ["3412"] = "115 55 52", ["3413"] = "115 55 52", ["3414"] = "115 55 52", ["3415"] = "115 55 52", ["3416"] = "115 55 52", ["3417"] = "115 55 54", ["3418"] = "115 55 54",
["3421"] = "115 55 52", ["3422"] = "115 55 52", ["3423"] = "115 55 52", ["3424"] = "115 55 52", ["3425"] = "115 55 52", ["3426"] = "115 55 52", ["3427"] = "115 55 54", ["3428"] = "115 55 54",
["3431"] = "115 55 52", ["3432"] = "115 55 52", ["3433"] = "115 55 52", ["3434"] = "115 55 52", ["3435"] = "115 55 52", ["3436"] = "115 55 52", ["3437"] = "115 55 54", ["3438"] = "115 55 54",
["3441"] = "115 55 52", ["3442"] = "115 55 52", ["3443"] = "115 55 52", ["3444"] = "115 55 52", ["3445"] = "115 55 52", ["3446"] = "115 55 52", ["3447"] = "115 55 54", ["3448"] = "115 55 54",
["3451"] = "115 55 52", ["3452"] = "115 55 52", ["3453"] = "115 55 52", ["3454"] = "115 55 52", ["3455"] = "115 55 52", ["3456"] = "115 55 52", ["3457"] = "115 55 54", ["3458"] = "115 55 54",
["3461"] = "115 55 52", ["3462"] = "115 55 52", ["3463"] = "115 55 52", ["3464"] = "115 55 52", ["3465"] = "115 55 52", ["3466"] = "115 55 52", ["3467"] = "115 55 54", ["3468"] = "115 55 54",
["3471"] = "115 5 52", ["3472"] = "115 5 52", ["3473"] = "115 5 52", ["3474"] = "115 5 52", ["3475"] = "115 5 52", ["3476"] = "115 5 52", ["3477"] = "115 5 54", ["3478"] = "115 5 54",
["3481"] = "115 5 52", ["3482"] = "115 5 52", ["3483"] = "115 5 52", ["3484"] = "115 5 52", ["3485"] = "115 5 52", ["3486"] = "115 5 52", ["3487"] = "115 5 54", ["3488"] = "115 5 54",
["3511"] = "33 33 33", ["3512"] = "33 33 33", ["3513"] = "33 33 33", ["3514"] = "33 33 33", ["3515"] = "33 33 33", ["3516"] = "33 33 33", ["3517"] = "33 33 3", ["3518"] = "33 33 3",
["3521"] = "33 33 33", ["3522"] = "33 33 33", ["3523"] = "33 33 33", ["3524"] = "33 33 33", ["3525"] = "33 33 33", ["3526"] = "33 33 33", ["3527"] = "33 33 3", ["3528"] = "33 33 3",
["3531"] = "33 33 33", ["3532"] = "33 33 33", ["3533"] = "33 33 33", ["3534"] = "33 33 33", ["3535"] = "33 33 33", ["3536"] = "33 33 33", ["3537"] = "33 33 3", ["3538"] = "33 33 3",
["3541"] = "33 33 33", ["3542"] = "33 33 33", ["3543"] = "33 33 33", ["3544"] = "33 33 33", ["3545"] = "33 33 33", ["3546"] = "33 33 33", ["3547"] = "33 33 3", ["3548"] = "33 33 3",
["3551"] = "33 33 33", ["3552"] = "33 33 33", ["3553"] = "33 33 33", ["3554"] = "33 33 33", ["3555"] = "33 33 33", ["3556"] = "33 33 33", ["3557"] = "33 33 3", ["3558"] = "33 33 3",
["3561"] = "33 33 33", ["3562"] = "33 33 33", ["3563"] = "33 33 33", ["3564"] = "33 33 33", ["3565"] = "33 33 33", ["3566"] = "33 33 33", ["3567"] = "33 33 3", ["3568"] = "33 33 3",
["3571"] = "33 3 33", ["3572"] = "33 3 33", ["3573"] = "33 3 33", ["3574"] = "33 3 33", ["3575"] = "33 3 33", ["3576"] = "33 3 33", ["3577"] = "33 3 3", ["3578"] = "33 3 3",
["3581"] = "33 3 33", ["3582"] = "33 3 33", ["3583"] = "33 3 33", ["3584"] = "33 3 33", ["3585"] = "33 3 33", ["3586"] = "33 3 33", ["3587"] = "33 3 3", ["3588"] = "33 3 3",
["3611"] = "11 11 11", ["3612"] = "11 11 11", ["3613"] = "11 11 11", ["3614"] = "11 11 11", ["3615"] = "11 11 11", ["3616"] = "11 11 11", ["3617"] = "11 11 1", ["3618"] = "11 11 1",
["3621"] = "11 11 11", ["3622"] = "11 11 11", ["3623"] = "11 11 11", ["3624"] = "11 11 11", ["3625"] = "11 11 11", ["3626"] = "11 11 11", ["3627"] = "11 11 1", ["3628"] = "11 11 1",
["3631"] = "11 11 11", ["3632"] = "11 11 11", ["3633"] = "11 11 11", ["3634"] = "11 11 11", ["3635"] = "11 11 11", ["3636"] = "11 11 11", ["3637"] = "11 11 1", ["3638"] = "11 11 1",
["3641"] = "11 11 11", ["3642"] = "11 11 11", ["3643"] = "11 11 11", ["3644"] = "11 11 11", ["3645"] = "11 11 11", ["3646"] = "11 11 11", ["3647"] = "11 11 1", ["3648"] = "11 11 1",
["3651"] = "11 11 11", ["3652"] = "11 11 11", ["3653"] = "11 11 11", ["3654"] = "11 11 11", ["3655"] = "11 11 11", ["3656"] = "11 11 11", ["3657"] = "11 11 1", ["3658"] = "11 11 1",
["3661"] = "11 11 11", ["3662"] = "11 11 11", ["3663"] = "11 11 11", ["3664"] = "11 11 11", ["3665"] = "11 11 11", ["3666"] = "11 11 11", ["3667"] = "11 11 1", ["3668"] = "11 11 1",
["3671"] = "11 1 11", ["3672"] = "11 1 11", ["3673"] = "11 1 11", ["3674"] = "11 1 11", ["3675"] = "11 1 11", ["3676"] = "11 1 11", ["3677"] = "11 1 1", ["3678"] = "11 1 1",
["3681"] = "11 1 11", ["3682"] = "11 1 11", ["3683"] = "11 1 11", ["3684"] = "11 1 11", ["3685"] = "11 1 11", ["3686"] = "11 1 11", ["3687"] = "11 1 1", ["3688"] = "11 1 1",
["3711"] = "3 55 52", ["3712"] = "3 55 52", ["3713"] = "3 55 52", ["3714"] = "3 55 52", ["3715"] = "3 55 52", ["3716"] = "3 55 52", ["3717"] = "3 55 54", ["3718"] = "3 55 54",
["3721"] = "3 55 52", ["3722"] = "3 55 52", ["3723"] = "3 55 52", ["3724"] = "3 55 52", ["3725"] = "3 55 52", ["3726"] = "3 55 52", ["3727"] = "3 55 54", ["3728"] = "3 55 54",
["3731"] = "3 55 52", ["3732"] = "3 55 52", ["3733"] = "3 55 52", ["3734"] = "3 55 52", ["3735"] = "3 55 52", ["3736"] = "3 55 52", ["3737"] = "3 55 54", ["3738"] = "3 55 54",
["3741"] = "3 55 52", ["3742"] = "3 55 52", ["3743"] = "3 55 52", ["3744"] = "3 55 52", ["3745"] = "3 55 52", ["3746"] = "3 55 52", ["3747"] = "3 55 54", ["3748"] = "3 55 54",
["3751"] = "3 55 52", ["3752"] = "3 55 52", ["3753"] = "3 55 52", ["3754"] = "3 55 52", ["3755"] = "3 55 52", ["3756"] = "3 55 52", ["3757"] = "3 55 54", ["3758"] = "3 55 54",
["3761"] = "3 55 52", ["3762"] = "3 55 52", ["3763"] = "3 55 52", ["3764"] = "3 55 52", ["3765"] = "3 55 52", ["3766"] = "3 55 52", ["3767"] = "3 55 54", ["3768"] = "3 55 54",
["3771"] = "3 5 52", ["3772"] = "3 5 52", ["3773"] = "3 5 52", ["3774"] = "3 5 52", ["3775"] = "3 5 52", ["3776"] = "3 5 52", ["3777"] = "3 5 54", ["3778"] = "3 5 54",
["3781"] = "3 5 52", ["3782"] = "3 5 52", ["3783"] = "3 5 52", ["3784"] = "3 5 52", ["3785"] = "3 5 52", ["3786"] = "3 5 52", ["3787"] = "3 5 54", ["3788"] = "3 5 54",
["3811"] = "1 55 52", ["3812"] = "1 55 52", ["3813"] = "1 55 52", ["3814"] = "1 55 52", ["3815"] = "1 55 52", ["3816"] = "1 55 52", ["3817"] = "1 55 54", ["3818"] = "1 55 54",
["3821"] = "1 55 52", ["3822"] = "1 55 52", ["3823"] = "1 55 52", ["3824"] = "1 55 52", ["3825"] = "1 55 52", ["3826"] = "1 55 52", ["3827"] = "1 55 54", ["3828"] = "1 55 54",
["3831"] = "1 55 52", ["3832"] = "1 55 52", ["3833"] = "1 55 52", ["3834"] = "1 55 52", ["3835"] = "1 55 52", ["3836"] = "1 55 52", ["3837"] = "1 55 54", ["3838"] = "1 55 54",
["3841"] = "1 55 52", ["3842"] = "1 55 52", ["3843"] = "1 55 52", ["3844"] = "1 55 52", ["3845"] = "1 55 52", ["3846"] = "1 55 52", ["3847"] = "1 55 54", ["3848"] = "1 55 54",
["3851"] = "1 55 52", ["3852"] = "1 55 52", ["3853"] = "1 55 52", ["3854"] = "1 55 52", ["3855"] = "1 55 52", ["3856"] = "1 55 52", ["3857"] = "1 55 54", ["3858"] = "1 55 54",
["3861"] = "1 55 52", ["3862"] = "1 55 52", ["3863"] = "1 55 52", ["3864"] = "1 55 52", ["3865"] = "1 55 52", ["3866"] = "1 55 52", ["3867"] = "1 55 54", ["3868"] = "1 55 54",
["3871"] = "1 5 52", ["3872"] = "1 5 52", ["3873"] = "1 5 52", ["3874"] = "1 5 52", ["3875"] = "1 5 52", ["3876"] = "1 5 52", ["3877"] = "1 5 54", ["3878"] = "1 5 54",
["3881"] = "1 5 52", ["3882"] = "1 5 52", ["3883"] = "1 5 52", ["3884"] = "1 5 52", ["3885"] = "1 5 52", ["3886"] = "1 5 52", ["3887"] = "1 5 54", ["3888"] = "1 5 54",
--LPS for numbers
["21N1"] = "33 52", ["21N2"] = "33 52", ["21N3"] = "33 55", ["21N4"] = "33 55", ["21N5"] = "33 55", ["21N6"] = "33 55", ["21N7"] = "33 55", ["21N8"] = "33 55",
["22N1"] = "11 52", ["22N2"] = "11 52", ["22N3"] = "11 55", ["22N4"] = "11 55", ["22N5"] = "11 55", ["22N6"] = "11 55", ["22N7"] = "11 55", ["22N8"] = "11 55",
["23N1"] = "55 52", ["23N2"] = "55 52", ["23N3"] = "55 55", ["23N4"] = "55 55", ["23N5"] = "55 55", ["23N6"] = "55 55", ["23N7"] = "55 55", ["23N8"] = "55 55",
["24N1"] = "115 52", ["24N2"] = "115 52", ["24N3"] = "115 55", ["24N4"] = "115 55", ["24N5"] = "115 55", ["24N6"] = "115 55", ["24N7"] = "115 55", ["24N8"] = "115 55",
["25N1"] = "55 52", ["25N2"] = "55 52", ["25N3"] = "55 55", ["25N4"] = "55 55", ["25N5"] = "55 55", ["25N6"] = "55 55", ["25N7"] = "55 55", ["25N8"] = "55 55",
["26N1"] = "11 52", ["26N2"] = "11 52", ["26N3"] = "11 55", ["26N4"] = "11 55", ["26N5"] = "11 55", ["26N6"] = "11 55", ["26N7"] = "11 55", ["26N8"] = "11 55",
["27N1"] = "33 52", ["27N2"] = "33 52", ["27N3"] = "33 55", ["27N4"] = "33 55", ["27N5"] = "33 55", ["27N6"] = "33 55", ["27N7"] = "33 55", ["27N8"] = "33 55",
["28N1"] = "11 52", ["28N2"] = "11 52", ["28N3"] = "11 55", ["28N4"] = "11 55", ["28N5"] = "11 55", ["28N6"] = "11 55", ["28N7"] = "11 55", ["28N8"] = "11 55",
["31N1"] = "33 52 55", ["31N2"] = "33 52 55", ["31N3"] = "33 55 55", ["31N4"] = "33 55 55", ["31N5"] = "33 55 55", ["31N6"] = "33 55 55", ["31N7"] = "33 55 55", ["31N8"] = "33 55 55",
["32N1"] = "11 52 55", ["32N2"] = "11 52 55", ["32N3"] = "11 55 55", ["32N4"] = "11 55 55", ["32N5"] = "11 55 55", ["32N6"] = "11 55 55", ["32N7"] = "11 55 55", ["32N8"] = "11 55 55",
["33N1"] = "55 52 55", ["33N2"] = "55 52 55", ["33N3"] = "55 55 55", ["33N4"] = "55 55 55", ["33N5"] = "55 55 55", ["33N6"] = "55 55 55", ["33N7"] = "55 55 55", ["33N8"] = "55 55 55",
["34N1"] = "115 52 55", ["34N2"] = "115 52 55", ["34N3"] = "115 55 55", ["34N4"] = "115 55 55", ["34N5"] = "115 55 55", ["34N6"] = "115 55 55", ["34N7"] = "115 55 55", ["34N8"] = "115 55 55",
["35N1"] = "55 52 55", ["35N2"] = "55 52 55", ["35N3"] = "55 55 55", ["35N4"] = "55 55 55", ["35N5"] = "55 55 55", ["35N6"] = "55 55 55", ["35N7"] = "55 55 55", ["35N8"] = "55 55 55",
["36N1"] = "11 52 55", ["36N2"] = "11 52 55", ["36N3"] = "11 55 55", ["36N4"] = "11 55 55", ["36N5"] = "11 55 55", ["36N6"] = "11 55 55", ["36N7"] = "11 55 55", ["36N8"] = "11 55 55",
["37N1"] = "33 52 55", ["37N2"] = "33 52 55", ["37N3"] = "33 55 55", ["37N4"] = "33 55 55", ["37N5"] = "33 55 55", ["37N6"] = "33 55 55", ["37N7"] = "33 55 55", ["37N8"] = "33 55 55",
["38N1"] = "11 52 55", ["38N2"] = "11 52 55", ["38N3"] = "11 55 55", ["38N4"] = "11 55 55", ["38N5"] = "11 55 55", ["38N6"] = "11 55 55", ["38N7"] = "11 55 55", ["38N8"] = "11 55 55",
--LPS for classifiers
["211C"] = "33 55", ["212C"] = "33 55", ["213C"] = "33 55", ["214C"] = "33 55", ["215C"] = "33 55", ["216C"] = "33 55", ["217C"] = "33 55", ["218C"] = "33 55",
["221C"] = "11 55", ["222C"] = "11 55", ["223C"] = "11 55", ["224C"] = "11 55", ["225C"] = "11 55", ["226C"] = "11 55", ["227C"] = "11 55", ["228C"] = "11 55",
["231C"] = "55 55", ["232C"] = "55 55", ["233C"] = "55 55", ["234C"] = "55 55", ["235C"] = "55 55", ["236C"] = "55 55", ["237C"] = "55 55", ["238C"] = "55 55",
["241C"] = "115 55", ["242C"] = "115 55", ["243C"] = "115 55", ["244C"] = "115 55", ["245C"] = "115 55", ["246C"] = "115 55", ["247C"] = "115 55", ["248C"] = "115 55",
["251C"] = "55 55", ["255C"] = "55 55", ["253C"] = "55 55", ["254C"] = "55 55", ["255C"] = "55 55", ["256C"] = "55 55", ["257C"] = "55 55", ["258C"] = "55 55",
["261C"] = "11 55", ["262C"] = "11 55", ["263C"] = "11 55", ["264C"] = "11 55", ["265C"] = "11 55", ["266C"] = "11 55", ["267C"] = "11 55", ["268C"] = "11 55",
["271C"] = "33 55", ["272C"] = "33 55", ["273C"] = "33 55", ["274C"] = "33 55", ["275C"] = "33 55", ["276C"] = "33 55", ["277C"] = "33 55", ["278C"] = "33 55",
["281C"] = "11 55", ["282C"] = "11 55", ["283C"] = "11 55", ["284C"] = "11 55", ["285C"] = "11 55", ["286C"] = "11 55", ["287C"] = "11 55", ["288C"] = "11 55",
["311C"] = "33 55 55", ["312C"] = "33 55 55", ["313C"] = "33 55 55", ["314C"] = "33 55 55", ["315C"] = "33 55 55", ["316C"] = "33 55 55", ["317C"] = "33 55 55", ["318C"] = "33 55 55",
["321C"] = "11 55 55", ["322C"] = "11 55 55", ["323C"] = "11 55 55", ["324C"] = "11 55 55", ["325C"] = "11 55 55", ["326C"] = "11 55 55", ["327C"] = "11 55 55", ["328C"] = "11 55 55",
["331C"] = "55 55 55", ["332C"] = "55 55 55", ["333C"] = "55 55 55", ["334C"] = "55 55 55", ["335C"] = "55 55 55", ["336C"] = "55 55 55", ["337C"] = "55 55 55", ["338C"] = "55 55 55",
["341C"] = "115 55 55", ["342C"] = "115 55 55", ["343C"] = "115 55 55", ["344C"] = "115 55 55", ["345C"] = "115 55 55", ["346C"] = "115 55 55", ["347C"] = "115 55 55", ["348C"] = "115 55 55",
["351C"] = "55 55 55", ["355C"] = "55 55 55", ["353C"] = "55 55 55", ["354C"] = "55 55 55", ["355C"] = "55 55 55", ["356C"] = "55 55 55", ["357C"] = "55 55 55", ["358C"] = "55 55 55",
["361C"] = "11 55 55", ["362C"] = "11 55 55", ["363C"] = "11 55 55", ["364C"] = "11 55 55", ["365C"] = "11 55 55", ["366C"] = "11 55 55", ["367C"] = "11 55 55", ["368C"] = "11 55 55",
["371C"] = "33 55 55", ["372C"] = "33 55 55", ["373C"] = "33 55 55", ["374C"] = "33 55 55", ["375C"] = "33 55 55", ["376C"] = "33 55 55", ["377C"] = "33 55 55", ["378C"] = "33 55 55",
["381C"] = "11 55 55", ["382C"] = "11 55 55", ["383C"] = "11 55 55", ["384C"] = "11 55 55", ["385C"] = "11 55 55", ["386C"] = "11 55 55", ["387C"] = "11 55 55", ["388C"] = "11 55 55",
--verb-SFP disyllabic ("單音詞和語助詞")
["211P"] = "33 52", ["212P"] = "55 52", ["214P"] = "55 52", ["215P"] = "33 55", ["216P"] = "33 55", ["217P"] = "55 54", ["218P"] = "55 54",
["221P"] = "11 52", ["222P"] = "115 52", ["224P"] = "115 52", ["225P"] = "11 55", ["226P"] = "11 55", ["227P"] = "115 54", ["228P"] = "115 54",
["231P"] = "335 52", ["232P"] = "33 52", ["234P"] = "33 55", ["235P"] = "335 52", ["236P"] = "335 52", ["237P"] = "33 55", ["238P"] = "33 55",
["241P"] = "115 52", ["242P"] = "11 52", ["244P"] = "11 55", ["245P"] = "115 52", ["246P"] = "115 52", ["247P"] = "11 55", ["248P"] = "11 55",
["251P"] = "33 55", ["252P"] = "33 33", ["254P"] = "33 33", ["255P"] = "33 33", ["256P"] = "33 33", ["257P"] = "33 33", ["258P"] = "33 33",
["261P"] = "11 55", ["262P"] = "11 11", ["264P"] = "11 11", ["265P"] = "11 11", ["266P"] = "11 11", ["267P"] = "11 11", ["268P"] = "11 11",
["271P"] = "33 55", ["272P"] = "33 52", ["274P"] = "33 55", ["275P"] = "33 55", ["276P"] = "33 55", ["277P"] = "33 55", ["278P"] = "33 55",
["281P"] = "11 55", ["282P"] = "11 52", ["284P"] = "11 55", ["285P"] = "11 55", ["286P"] = "11 55", ["287P"] = "11 55", ["288P"] = "11 55",
--verb object RPS ("述賓")
["211O"] = "33 52", ["212O"] = "55 231", ["213O"] = "55 335", ["214O"] = "55 113", ["215O"] = "33 55", ["216O"] = "55 11", ["217O"] = "55 45", ["218O"] = "55 23",
["221O"] = "11 52", ["222O"] = "55 231", ["223O"] = "55 335", ["224O"] = "55 113", ["225O"] = "11 55", ["226O"] = "55 11", ["227O"] = "55 45", ["228O"] = "55 23",
["231O"] = "33 52", ["232O"] = "55 231", ["233O"] = "55 335", ["234O"] = "55 113", ["235O"] = "33 55", ["236O"] = "55 11", ["237O"] = "55 45", ["238O"] = "55 23",
["241O"] = "11 52", ["242O"] = "55 231", ["243O"] = "55 335", ["244O"] = "55 113", ["245O"] = "11 55", ["246O"] = "55 11", ["247O"] = "55 45", ["248O"] = "55 23",
["251O"] = "33 52", ["252O"] = "55 231", ["253O"] = "55 335", ["254O"] = "55 113", ["255O"] = "33 55", ["256O"] = "55 11", ["257O"] = "55 45", ["258O"] = "55 23",
["261O"] = "11 52", ["262O"] = "55 231", ["263O"] = "55 335", ["264O"] = "55 113", ["265O"] = "11 55", ["266O"] = "55 11", ["267O"] = "55 45", ["268O"] = "55 23",
["271O"] = "33 52", ["272O"] = "55 231", ["273O"] = "55 335", ["274O"] = "55 113", ["275O"] = "33 55", ["276O"] = "55 11", ["277O"] = "55 45", ["278O"] = "55 23",
["281O"] = "11 52", ["282O"] = "55 231", ["283O"] = "55 335", ["284O"] = "55 113", ["285O"] = "11 55", ["286O"] = "55 11", ["287O"] = "55 45", ["288O"] = "55 23",
--noun verb/adjective RPS ("主謂")
["1A"] = "55", ["2A"] = "115", ["3A"] = "335", ["4A"] = "55", ["5A"] = "55", ["6A"] = "55", ["7A"] = "55", ["8A"] = "25"
},
-- [""] = "",
['cx'] = {
["11"] = "324", ["12"] = "14", ["15"] = "43", ["17"] = "45", ["18"] = "31",
["211"] = "42 334", ["212"] = "42 324", ["213"] = "45 41", ["214"] = "45 41", ["215"] = "45 41", ["216"] = "45 51", ["217"] = "42 54", ["218"] = "42 34",
["221"] = "32 334", ["222"] = "32 224", ["223"] = "35 41", ["224"] = "35 51", ["225"] = "35 41", ["226"] = "35 51", ["227"] = "32 54", ["228"] = "32 34",
["231"] = "42 51", ["232"] = "42 451", ["233"] = "42 51", ["234"] = "42 451", ["235"] = "42 51", ["236"] = "42 451", ["237"] = "42 54", ["238"] = "42 34",
["241"] = "32 51", ["242"] = "32 451", ["243"] = "24 44", ["244"] = "24 44", ["245"] = "24 44", ["246"] = "24 44", ["247"] = "24 55", ["248"] = "24 55",
["251"] = "33 31", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 31", ["256"] = "33 31", ["257"] = "44 54", ["258"] = "33 343",
["261"] = "21 44", ["262"] = "21 344", ["263"] = "21 44", ["264"] = "21 344", ["265"] = "21 44", ["266"] = "21 344", ["267"] = "31 55", ["268"] = "32 55",
["271"] = "44 31", ["272"] = "44 31", ["273"] = "44 31", ["274"] = "44 31", ["275"] = "44 31", ["276"] = "44 31", ["277"] = "44 32", ["278"] = "44 32",
["281"] = "32 51", ["282"] = "32 451", ["283"] = "32 44", ["284"] = "32 344", ["285"] = "32 44", ["286"] = "32 344", ["287"] = "32 55", ["288"] = "32 35",
},
['nb'] = {
["10"] = "",
["11"] = "52", ["12"] = "313", ["13"] = "325", ["14"] = "113", ["15"] = "55", ["16"] = "113", ["17"] = "55", ["18"] = "12",
["21"] = "33 51", ["22"] = "22 51", ["23"] = "33 35", ["24"] = "24 33", ["25"] = "55 33", ["26"] = "22 44", ["27"] = "55 33", ["28"] = "22 35",
["210"] = "33 44", ["240"] = "23 44", ["260"] = "22 35", ["270"] = "33 34",
["31"] = "33 55 31", ["32"] = "22 44 55", ["33"] = "33 44 55", ["34"] = "22 33 31", ["35"] = "55 33 31", ["36"] = "22 55 31", ["37"] = "55 33 31", ["38"] = "22 34 51",
--RPS
["s"] = "21", ["multiple"] = ""
},
['zs'] = {
["10"] = "",
["11"] = "53", ["12"] = "22", ["13"] = "35", ["14"] = "24", ["15"] = "44", ["16"] = "13", ["17"] = "55", ["18"] = "12",
}
}
return data
24ndtjred3j8ga5waeuvn6gtu4jzsr1
234947
234946
2026-05-26T07:14:39Z
Lee
19
[[:en:Module:wuu-pron/data]] වෙතින් එක් සංශෝධනයක්
234946
Scribunto
text/plain
local data = {}
--[[
sh - Shanghai 上海市區方言誌
jd - Jiading 嘉定方言研究
sj - Songjiang 松江方言研究
cm - Chongming 崇明方言研究
cs - Chuansha 上海地區方言調查研究 + 川沙方言同音字表 + 川沙縣誌
sz - Suzhou 蘇州方言語音研究
ks - Kunshan 吳氏:崑山方言研究 + 當代吳語研究
yx - Yixing 宜興方言同音字彙 + 宜興縣誌
cz - Changzhou 當代吳語研究
jj - Jingjiang 靖江縣誌
jx - Jiaxing 當代吳語研究
tx - Tongxiang 桐鄉方言誌
hn - Haining (Xiashi) 海寧方言誌
hy - Haiyan 海鹽方言誌
dq - Deqing 德清縣誌 + 德清話聲韻調之研究
hz - Hangzhou 杭州方言音檔 + 杭州方言の聲調
xs - Xiaoshan 蕭山方言同音字彙 + 蕭山方言研究 + 蕭山市志
fy - Fuyang 富陽方言研究
sx - Shaoxing 紹興方言研究
cx - Cixi 慈溪市誌 + 浙江慈溪方言聲調實驗研究 (RPS understanding needed)
nb - Ningbo 當代吳語研究
zs - Zhoushan 舟山方言兩字組的連讀變調 + 舟山方言研究 + 舟山方言 (samdhi understanding needed)
]]
data.ipa_final = {
['sh'] = {
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["oe"] = "ø",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ie"] = "ie",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø",
["iu"] = "y", ["ioe"] = "yø",
["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ",
["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ",
["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["iun"] = "yn", ["iuq"] = "yɪʔ",
["er"] = "əl", ["y"] = "z̩"
},
['jd'] = {
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["ae"] = "e", ["oe"] = "ø",
["i"] = "i", ["ia"] = "ia", ["iae"] = "ie̞", ["io"] = "iu", ["iau"] = "iɔ", ["ie"] = "ɪ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "ue̞", ["ue"] = "uɪ",
["iu"] = "y", ["ioe"] = "yø",
["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["aq"] = "aʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "iŋ", ["ion"] = "ioŋ",
["iaq"] = "iaʔ", ["iaoq"] = "iɔʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ",
["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uəŋ",
["uaq"] = "uaʔ", ["uaoq"] = "uɔʔ", ["uoq"] = "uoʔ", ["ueq"] = "uəʔ",
["iun"] = "yŋ",
["er"] = "øl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['sj'] = {
["a"] = "ɑ", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "ɯ",
["i"] = "i", ["ia"] = "iɑ", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["io"] = "io", ["iu"] = "iu", ["ieu"] = "iɯ",
["u"] = "u", ["ua"] = "uɑ", ["uae"] = "uɛ", ["ue"] = "ue", ["uiau"] = "uiɔ", --uiau: necessary?
["iu"] = "y", ["ioe"] = "yø",
["an"] = "æ̃", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "iæ̃", ["iaon"] = "iɒ̃", ["in"] = "iŋ", ["ion"] = "ioŋ",
["uan"] = "uæ̃", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ",
["iun"] = "yœ̃",
["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["aoq"] = "ɒʔ", ["eoq"] = "ʌʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "iɒʔ", ["ieq"] = "iʌʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uaoq"] = "uɒʔ", ["ueq"] = "uəʔ",
["iuq"] = "yœʔ",
["er"] = "əl", ["y"] = "z̩"
},
['cm'] = {
["a"] = "ɑ", ["e"] = "e", ["oe"] = "ø", ["ai"] = "ɛ", ["ae"] = "æ", ["eu"] = "ɵ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei",
["i"] = "i", ["ia"] = "iɑ", ["ie"] = "ie", ["iai"] = "iɛ", ["iae"] = "iæ", ["ieu"] = "iɵ", ["iau"] = "iɔ", ["io"] = "io",
["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uai"] = "uɛ", ["uae"] = "uæ", ["uo"] = "uo", ["uei"] = "uei",
["iu"] = "y", ["ioe"] = "yø",
["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ",
["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃",
["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃",
["iun"] = "yn", ["ion"] = "yoŋ",
--missing ɔ~, iɔ~
["aeq"] = "æʔ", ["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ",
["iaq"] = "iɑʔ", ["iq"] = "iəʔ",
["uaeq"] = "uæʔ", ["uaq"] = "uɑʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ",
["ioeq"] = "yøʔ", ["ioq"] = "yoʔ",
["er"] = "əl", ["y"] = "z̩",
-- only used in mutations:
["ueu"] = "uɵ", ["uon"] = "uoŋ", ["ui"] = "ui"
},
['cs'] = { -- 與學堂一致:io = iau, uo = o; uoeq, ieon, eoq 皆存
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["eu"] = "ɤ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø",
["i"] = "i", ["iuu"] = "iu", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iɤ", ["ioe"] = "yø",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ",
["iu"] = "y",
["an"] = "ã", ["aon"] = "ɑ", ["en"] = "ən", ["on"] = "oŋ",
["ian"] = "iã", ["iaon"] = "iɑ", ["in"] = "in", ["ieon"] = "iʌŋ", ["ion"] = "ioŋ",
["uan"] = "uã", ["uaon"] = "uɑ", ["uen"] = "uən",
["iun"] = "yn",
["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "œʔ", ["eq"] = "əʔ", ["eoq"] = "ʌʔ", ["oq"] = "oʔ", ["aoq"] = "ɔʔ",
["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["ioeq"] = "yœʔ", ["iq"] = "iɪʔ", ["ieq"] = "iʌʔ", ["ioq"] = "ioʔ", ["iaoq"] = "iɔʔ",
["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["uoeq"] = "uœʔ", ["ueq"] = "uəʔ", ["uaoq"] = "uɔʔ",
["er"] = "əl", ["y"] = "z̩",
},
['sz'] = {
["a"] = "ɑ", ["o"] = "o", ["au"] = "æ", ["eu"] = "øy", ["e"] = "e", ["oe"] = "ø", ["ou"] = "əu",
["i"] = "i", ["ia"] = "iɑ", ["io"] = "io", ["iau"] = "iæ", ["ieu"] = "ʏ", ["ioe"] = "iø", ["ie"] = "ɪ",
["u"] = "u", ["ua"] = "uɑ", ["ue"] = "ue", ["uoe"] = "uø",
["iu"] = "y", ["ioe"] = "yø",
["an"] = "ã", ["aon"] = "ɑ̃", ["en"] = "ən", ["on"] = "oŋ",
["aq"] = "ɑʔ", ["oq"] = "oʔ", ["eq"] = "əʔ", ["aeq"] = "aʔ",
["ian"] = "iã", ["iaon"] = "iɑ̃", ["in"] = "in", ["ion"] = "ioŋ",
["iaq"] = "iɑʔ", ["ioq"] = "ioʔ", ["iq"] = "iɪʔ", ["iaeq"] = "iaʔ",
["uan"] = "uã", ["uaon"] = "uɑ̃", ["uen"] = "uən",
["ueq"] = "uəʔ", ["uaeq"] = "uaʔ",
["iun"] = "yn", ["iuq"] = "yəʔ", ["iuaeq"] = "yaʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['ks'] = {
["a"] = "a", ["au"] = "ɔ", ["ae"] = "ɛ", ["oe"] = "ø", ["o"] = "o", ["e"] = "ei", ["ou"] = "əu",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ɪ", ["ioe"] = "iø",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø", ["ue"] = "uei",
["iu"] = "y",
["en"] = "ən", ["an"] = "ã", ["on"] = "oŋ",
["in"] = "in", ["ian"] = "iã", ["ion"] = "ioŋ",
["uen"] = "uən", ["uan"] = "uã",
["iun"] = "yn",
["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ",
["iq"] = "iəʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ", ["uaq"] = "uaʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['yx'] = {
["a"] = "a", ["o"] = "o", ["ou"] = "ʊ", ["ai"] = "ɛ", ["e"] = "ə", ["e"] = "ə", ["au"] = "au", ["eu"] = "əu",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["ie"] = "iɪ", ["iau"] = "iau", ["ieu"] = "iəu",
["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "uə",
["iu"] = "y",
["an"] = "aŋ", ["en"] = "ən", ["on"] = "oŋ",
["ian"] = "iaŋ", ["in"] = "in", ["ion"] = "ioŋ",
["uan"] = "uaŋ", ["uen"] = "uən",
["iun"] = "yən",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩",
},
['cz'] = {
["a"] = "a", ["ae"] = "ɛ", ["oe"] = "ɵ", ["o"] = "o", ["ie"] = "ɪ", ["ai"] = "ai", ["ei"] = "ei", ["au"] = "aɯ", ["ou"] = "ɤɯ",
["i"] = "i", ["ia"] = "ia", ["ioe"] = "iɵ", ["io"] = "io", ["iau"] = "iaɯ", ["iou"] = "iɤɯ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uɵ", ["uai"] = "uai",
["iu"] = "y",
["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "ioŋ",
["uan"] = "uaŋ", ["uen"] = "uəŋ",
["iun"] = "yiŋ",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iɪʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ",
["iuq"] = "yeʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['jj'] = {
["a"] = "a", ["au"] = "ɔ", ["ai"] = "ɛ", ["ou"] = "ə", ["o"] = "o", ["e"] = "e", ["eu"] = "ʏ",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["iai"] = "iɛ", ["ieu"] = "iʏ",
["u"] = "u", ["ua"] = "ua", ["uai"] = "uɛ", ["ue"] = "ue",
["iu"] = "y", ["iua"] = "ya", ["iuai"] = "yɛ", ["iou"] = "yə", ["iue"] = "ye",
["aen"] = "ã", ["oen"] = "ũ", ["en"] = "əŋ", ["on"] = "oŋ", ["an"] = "aŋ",
["ienn"] = "iɪ̃", ["iaen"] = "iã", ["ioen"] = "iũ", ["in"] = "iŋ", ["ien"] = "iəŋ", ["ion"] = "ioŋ", ["ian"] = "iaŋ",
["uaen"] = "uã", ["uen"] = "uəŋ", ["uan"] = "uaŋ",
["iun"] = "yəŋ", ["iuan"] = "yaŋ",
["aq"] = "aʔ", ["oq"] = "ɔʔ", ["eq"] = "əʔ", ["oeq"] = "oʔ",
["iq"] = "ieʔ", ["iaq"] = "iaʔ", ["ioq"] = "iɔʔ", ["ieq"] = "iəʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["iuaq"] = "yaʔ", ["ioeq"] = "yoʔ",
["er"] = "er", ["y"] = "z̩",
},
['jx'] = {
["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["oe"] = "ɤə", ["o"] = "o",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ieu"] = "iəu",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uɤə",
["iu"] = "y", ["ioe"] = "yɤə",
["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "oŋ",
["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ioŋ",
["uen"] = "un", ["yan"] = "uã", ["uaon"] = "uɑ̃",
["iun"] = "yn",
["eq"] = "əʔ", ["aq"] = "aʔ", ["oq"] = "oʔ",
["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["ioq"] = "ioʔ",
["ueq"] = "uəʔ", ["uaq"] = "uaʔ",
["iuq"] = "yəʔ",
["er"] = "l̩", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['tx'] = {
["a"] = "a", ["ae"] = "æ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "əɯ",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iæ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iəɯ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uæ", ["ui"] = "ui", ["ue"] = "uɛ",
["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "ən", ["on"] = "õ",
["ian"] = "iã", ["iaon"] = "iɔ̃", ["in"] = "in", ["ion"] = "ion",
["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "un",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["iaq"] = "iaʔ", ["ioq"] = "ioʔ", ["iq"] = "iəʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["er"] = "əl", ["y"] = "z̩"
},
['hn'] = {
["a"] = "a", ["o"] = "o", ["e"] = "e", ["oe"] = "ɤ", ["ae"] = "ɛ", ["au"] = "ɔ", ["eu"] = "ɤɯ",
["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["iae"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤɯ",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uɤ", ["uae"] = "uɛ",
["en"] = "ən", ["an"] = "ã", ["aon"] = "ɑ̃", ["on"] = "õ",
["in"] = "in", ["ian"] = "iã", ["iaon"] = "iɑ̃", ["ion"] = "ion",
["uen"] = "uən", ["uan"] = "uã", ["uaon"] = "uɑ̃",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ",
["er"] = "əl", ["y"] = "z̩"
},
['hy'] = {
["a"] = "a", ["ae"] = "ɛ", ["o"] = "o", ["e"] = "e", ["oe"] = "ə", ["au"] = "ɔ",
["i"] = "i", ["ia"] = "ia", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iɤ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uə",
["iu"] = "y", ["ioe"] = "yə",
["an"] = "ã", ["en"] = "ən", ["aon"] = "ɔ̃", ["on"] = "õ",
["ian"] = "iã", ["in"] = "iən", ["iaon"] = "iɔ̃", ["ion"] = "iõ",
["uan"] = "ã", ["uen"] = "uən", ["uaon"] = "ɔ̃",
["iun"] = "yən",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ",
["er"] = "l̩", ["y"] = "z̩"
},
['dq'] = {
["a"] = "a", ["au"] = "ɔ", ["uo"] = "uɔ", ["e"] = "ɛ", ["oe"] = "ɤ",
["i"] = "i", ["ieu"] = "iʏ", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uɔ", ["ue"] = "uɛ", ["uoe"] = "uɤ",
["an"] = "ã", ["en"] = "ən", ["on"] = "oŋ",
["ian"] = "iã", ["in"] = "in", ["ion"] = "ioŋ",
["uan"] = "uã", ["uen"] = "uən",
["aq"] = "aʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["uoq"] = "uoʔ",
["er"] = "əl", ["y"] = "z̩"
},
['hz'] = {
["a"] = "ɑ", ["e"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ei"] = "ei",
["i"] = "i", ["ia"] = "iɑ", ["ie"] = "iɛ", ["iau"] = "iɔ", ["ieu"] = "iø",
["u"] = "u", ["ua"] = "ua", ["ue"] = "uɛ", ["uo"] = "uo", ["uei"] = "ui",
["iu"] = "y",
["aen"] = "ẽ̞", ["en"] = "en", ["an"] = "ɑŋ", ["on"] = "oŋ",
["aq"] = "ɑʔ", ["eq"] = "əʔ", ["oq"] = "oʔ",
["ien"] = "iẽ̞", ["in"] = "in", ["ian"] = "iæ̃", ["ion"] = "ioŋ",
["iaq"] = "iɑʔ", ["iq"] = "iəʔ", ["ioq"] = "ioʔ",
["uen"] = "un", ["uan"] = "uæ̃", ["uon"] = "uõ",
["uaq"] = "uɑʔ", ["uoq"] = "uoʔ",
["iuon"] = "yõ", ["iun"] = "yn",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ",
-- old period, no official wugniu:
["eu"] = "ey",
-- zw stuff
["uwa"] = "zʷa", ["uwe"] = "zʷɛ", ["uwei"] = "zʷei",
["uwan"] = "zʷæ̃", ["uwaq"] = "zʷɑʔ", ["uwon"] = "zʷõ", ["uwen"] = "zʷen", ["uweq"] = "zʷəʔ",
},
['xs'] = { --與學堂城厢點大體一致,欠大西之 eʔ 及 ieʔ,添 yo,但 ae 及 oe 具鼻音化
["a"] = "a", ["e"] = "e", ["o"] = "o", ["au"] = "ɒ",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɒ",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo",
["iu"] = "y", ["iuo"] = "yo",
["ae"] = "ɛ̃", ["oe"] = "ə̃",
["ie"] = "iɛ̃", ["ioe"] = "yə̃",
["uae"] = "uɛ̃", ["uoe"] = "uə̃",
["an"] = "ã", ["aon"] = "ɒ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "ã", ["in"] = "iŋ",
["uan"] = "uã", ["uaon"] = "uɒ̃", ["uen"] = "uəŋ", ["uon"] = "uoŋ",
["iuaon"] = "yɒ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "əʔ",
["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "iəʔ",
["uaq"] = "uaʔ", ["uoq"] = "uoʔ",
["er"] = "ɚ", ["y"] = "z̩"
},
['fy'] = {
["a"] = "a", ["ae"] = "ɛ", ["au"] = "ɔ", ["o"] = "o", ["ou"] = "ʊ", ["ei"] = "ei",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["iau"] = "iɔ", ["iou"] = "iʊ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uo"] = "uo",
["iu"] = "y", ["iuae"] = "yɛ", ["iuo"] = "yo",
["an"] = "ã", ["aen"] = "ɛ̃", ["aon"] = "ɔ̃", ["en"] = "eŋ", ["on"] = "oŋ",
["ian"] = "iã", ["iaen"] = "iɛ̃", ["in"] = "iŋ",
["uan"] = "uã", ["uaen"] = "uɛ̃", ["uaon"] = "uɔ̃", ["uen"] = "ueŋ",
["iuaen"] = "yɛ̃", ["iaon"] = "yɔ̃", ["iun"] = "yŋ", ["ion"] = "yoŋ",
["aq"] = "ɐʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oq"] = "oʔ",
["iaq"] = "iɐʔ", ["iq"] = "iɪʔ", ["ioq"] = "yoʔ",
["uaq"] = "uɐʔ", ["uoq"] = "uoʔ",
["er"] = "l̩", ["y"] = "z̩"
},
['sx'] = {
["a"] = "a", ["e"] = "e", ["eu"] = "ɤ", ["au"] = "ɒ", ["o"] = "o",
["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ieu"] = "iɤ", ["iau"] = "iɒ", ["io"] = "io",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uo"] = "uo",
["iu"] = "y",
["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "ø̃", ["an"] = "aŋ", ["en"] = "əŋ", ["aon"] = "ɒŋ", ["on"] = "oŋ",
["iaen"] = "iæ̃", ["ien"] = "iẽ", ["ioen"] = "iø̃", ["ian"] = "iaŋ", ["in"] = "iŋ", ["iaon"] = "iɒŋ", ["ion"] = "ioŋ",
["uaen"] = "uæ̃", ["uen"] = "uẽ", ["uoen"] = "uø̃", ["uan"] = "uaŋ", ["uaon"] = "uɒŋ", ["uon"] = "uoŋ",
["aq"] = "aʔ", ["aeq"] = "æʔ", ["eq"] = "eʔ", ["eoq"] = "əʔ", ["oeq"] = "øʔ", ["oq"] = "oʔ",
["iaq"] = "iaʔ", ["iq"] = "ieʔ", ["ioeq"] = "iøʔ", ["ioq"] = "ioʔ",
["uaq"] = "uaʔ", ["uaeq"] = "uæʔ", ["ueq"] = "ueʔ", ["uoeq"] = "uøʔ", ["uoq"] = "uoʔ",
["er"] = "əl", ["y"] = "z̩"
},
['cx'] = { --check btwn sources
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["eu"] = "ɤ",
["i"] = "i", ["ia"] = "ia", ["io"] = "io", ["iau"] = "iɔ", ["ieu"] = "iɤ",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ue",
["iu"] = "y",
["an"] = "ã", ["aen"] = "æ̃", ["een"] = "ẽ", ["oen"] = "œ̃", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["ian"] = "iã", ["ien"] = "iẽ", ["ioen"] = "yœ̃", ["iaon"] = "iɔ̃", ["in"] = "iŋ", ["iun"] = "yəŋ", ["ion"] = "ioŋ",
["uan"] = "uã", ["uaen"] = "uæ̃", ["uoen"] = "uœ̃", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ",
["aq"] = "aʔ", ["oq"] = "oʔ", ["eq"] = "eʔ",
["iaq"] = "iaʔ", ["ioq"] = "yoʔ", ["iq"] = "ieʔ", ["iuq"] = "yeʔ",
["uaq"] = "uaʔ", ["ueq"] = "ueʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['nb'] = {
["a"] = "a", ["o"] = "o", ["au"] = "ɔ", ["e"] = "e", ["ae"] = "ɛ", ["oe"] = "ø", ["ei"] = "ɐɪ", ["eu"] = "œʏ", ["ou"] = "əu",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ie"] = "ie", ["ieu"] = "iʏ",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["uae"] = "uɛ", ["uei"] = "uɐɪ",
["iu"] = "y", ["io"] = "yo",
["an"] = "ã", ["aon"] = "ɔ̃", ["en"] = "əŋ", ["on"] = "oŋ",
["aq"] = "ɐʔ", ["oq"] = "oʔ",
["ian"] = "iã", ["in"] = "iŋ",
["iaq"] = "iɐʔ", ["iq"] = "iɪʔ",
["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ̃", ["uen"] = "uəŋ",
["uaq"] = "uɐʔ",
["iun"] = "yəŋ", ["ion"] = "yoŋ",
["iuq"] = "yəʔ", ["ioq"] = "yoʔ",
["yun"] = "z̩ʷøŋ",
["yuq"] = "z̩ʷœʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
['zs'] = { --與學堂一致, ai = a~i, uɛ~ = uɛ
["a"] = "a", ["au"] = "ɔ", ["o"] = "o", ["e"] = "e", ["ei"] = "ai", ["ou"] = "au", ["ae"] = "ɛ",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iɔ", ["ieu"] = "iu", ["iae"] = "iɛ",
["u"] = "u", ["ua"] = "ua", ["uo"] = "uo", ["ue"] = "ɔ", ["uei"] = "uai", ["uae"] = "uɛ",
["iu"] = "y",
["oen"] = "ø", ["an"] = "ã", ["aon"] = "ɔ", ["en"] = "ɐŋ", ["on"] = "oŋ",
["ien"] = "ĩ", ["ioen"] = "ỹ", ["ian"] = "iã", ["in"] = "iŋ", ["ion"] = "yoŋ",
["un"] = "ũ", ["uan"] = "uã", ["uaon"] = "uɔ", ["uen"] = "uɐŋ",
["aq"] = "ɐʔ", ["oq"] = "oʔ",
["iaq"] = "iɐʔ", ["iq"] = "iəʔ",
["uaq"] = "uɐʔ",
["iuq"] = "yɐʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ"
},
}
data.tone_contours = {
--if a lect is missing tone sandhi then uhh i'll add them later
['sh'] = {
["10"] = "", ["1-"] = "33",
["11"] = "53", ["21"] = "55 21", ["31"] = "55 33 21", ["41"] = "55 33 33 21", ["51"] = "55 33 33 33 21",
["15"] = "34", ["25"] = "33 44", ["35"] = "33 55 21", ["45"] = "33 55 33 21", ["55"] = "33 55 33 33 21",
["16"] = "23", ["26"] = "22 44", ["36"] = "22 55 21", ["46"] = "22 55 33 21", ["56"] = "22 55 33 33 21",
["17"] = "55", ["27"] = "33 44", ["37"] = "33 55 21", ["47"] = "33 55 33 21", ["57"] = "33 55 33 33 21",
["18"] = "12", ["28"] = "11 23", ["38"] = "11 22 23", ["48"] = "11 22 22 23", ["58"] = "22 55 33 33 21",
--RPS
["1s"] = "44", ["5s"] = "44", ["6s"] = "33", ["7s"] = "44", ["8s"] = "22",
["multiple"] = "33"
},
['jd'] = {
["10"] = "",
["11"] = "53", ["12"] = "31", ["13"] = "34", ["14"] = "13", ["15"] = "34", ["16"] = "13", ["17"] = "55", ["18"] = "12",
["211"] = "55 21", ["212"] = "55 21", ["213"] = "45 21", ["214"] = "45 21", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "55 21", ["218"] = "55 21",
["221"] = "22 53", ["222"] = "22 53", ["223"] = "24 21", ["224"] = "24 21", ["225"] = "23 44", ["226"] = "23 44", ["227"] = "24 21", ["228"] = "24 21",
["231"] = "35 21", ["232"] = "35 21", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "33 53", ["236"] = "33 53", ["237"] = "35 21", ["238"] = "35 21",
["241"] = "22 53", ["242"] = "22 53", ["243"] = "24 21", ["244"] = "24 21", ["245"] = "22 24", ["246"] = "22 24", ["247"] = "24 21", ["248"] = "24 21",
["251"] = "35 21", ["252"] = "35 21", ["253"] = "35 21", ["254"] = "35 21", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 21", ["258"] = "35 21",
["261"] = "22 53", ["262"] = "22 53", ["263"] = "24 21", ["264"] = "24 21", ["265"] = "24 44", ["266"] = "24 44", ["267"] = "24 21", ["268"] = "24 21",
["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 21", ["274"] = "44 21", ["275"] = "44 44", ["276"] = "44 44", ["277"] = "44 21", ["278"] = "44 21",
["281"] = "11 24", ["282"] = "11 24", ["283"] = "11 24", ["284"] = "11 24", ["285"] = "11 24", ["286"] = "11 24", ["287"] = "22 44", ["288"] = "22 44",
["3111"] = "55 33 21", ["3112"] = "55 33 21", ["3113"] = "55 33 21", ["3114"] = "55 33 21", ["3115"] = "55 33 21", ["3116"] = "55 33 21", ["3117"] = "55 33 21", ["3118"] = "55 33 21",
["3121"] = "55 33 21", ["3122"] = "55 33 21", ["3123"] = "55 33 21", ["3124"] = "55 33 21", ["3125"] = "55 33 21", ["3126"] = "55 33 21", ["3127"] = "55 33 21", ["3128"] = "55 33 21",
["3131"] = "35 33 21", ["3132"] = "35 33 21", ["3133"] = "35 33 21", ["3134"] = "35 33 21", ["3135"] = "35 33 21", ["3136"] = "35 33 21", ["3137"] = "35 33 21", ["3138"] = "35 33 21",
["3141"] = "35 33 21", ["3142"] = "35 33 21", ["3143"] = "35 33 21", ["3144"] = "35 33 21", ["3145"] = "35 33 21", ["3146"] = "35 33 21", ["3147"] = "35 33 21", ["3148"] = "35 33 21",
["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21",
["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21",
["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 21", ["3178"] = "55 33 21",
["3181"] = "55 33 21", ["3182"] = "55 33 21", ["3183"] = "55 33 21", ["3184"] = "55 33 21", ["3185"] = "55 33 21", ["3186"] = "55 33 21", ["3187"] = "55 33 21", ["3188"] = "55 33 21",
["3211"] = "22 55 21", ["3212"] = "22 55 21", ["3213"] = "22 55 21", ["3214"] = "22 55 21", ["3215"] = "22 55 44", ["3216"] = "22 55 44", ["3217"] = "22 55 21", ["3218"] = "22 55 21",
["3221"] = "22 55 21", ["3222"] = "22 55 21", ["3223"] = "22 55 21", ["3224"] = "22 55 21", ["3225"] = "22 55 44", ["3226"] = "22 55 44", ["3227"] = "22 55 21", ["3228"] = "22 55 21",
["3231"] = "24 33 21", ["3232"] = "24 33 21", ["3233"] = "24 33 21", ["3234"] = "24 33 21", ["3235"] = "24 33 21", ["3236"] = "24 33 21", ["3237"] = "24 33 21", ["3238"] = "24 33 21",
["3241"] = "24 33 21", ["3242"] = "24 33 21", ["3243"] = "24 33 21", ["3244"] = "24 33 21", ["3245"] = "24 33 21", ["3246"] = "24 33 21", ["3247"] = "24 33 21", ["3248"] = "24 33 21",
["3251"] = "22 55 21", ["3252"] = "22 55 21", ["3253"] = "22 55 21", ["3254"] = "22 55 21", ["3255"] = "22 55 44", ["3256"] = "22 55 44", ["3257"] = "22 55 21", ["3258"] = "22 55 21",
["3261"] = "22 55 21", ["3262"] = "22 55 21", ["3263"] = "22 55 21", ["3264"] = "22 55 21", ["3265"] = "22 55 44", ["3266"] = "22 55 44", ["3267"] = "22 55 21", ["3268"] = "22 55 21",
["3271"] = "22 55 21", ["3272"] = "22 55 21", ["3273"] = "22 55 21", ["3274"] = "22 55 21", ["3275"] = "22 55 44", ["3276"] = "22 55 44", ["3277"] = "22 55 21", ["3278"] = "22 55 21",
["3281"] = "22 55 21", ["3282"] = "22 55 21", ["3283"] = "22 55 21", ["3284"] = "22 55 21", ["3285"] = "22 55 44", ["3286"] = "22 55 44", ["3287"] = "22 55 21", ["3288"] = "22 55 21",
["3311"] = "33 55 21", ["3312"] = "33 55 21", ["3313"] = "33 55 21", ["3314"] = "33 55 21", ["3315"] = "35 33 21", ["3316"] = "35 33 21", ["3317"] = "33 55 21", ["3318"] = "33 55 21",
["3321"] = "33 55 21", ["3322"] = "33 55 21", ["3323"] = "33 55 21", ["3324"] = "33 55 21", ["3325"] = "35 33 21", ["3326"] = "35 33 21", ["3327"] = "33 55 21", ["3328"] = "33 55 21",
["3331"] = "33 55 21", ["3332"] = "33 55 21", ["3333"] = "33 55 21", ["3334"] = "33 55 21", ["3335"] = "35 33 21", ["3336"] = "35 33 21", ["3337"] = "33 55 21", ["3338"] = "33 55 21",
["3341"] = "33 55 21", ["3342"] = "33 55 21", ["3343"] = "33 55 21", ["3344"] = "33 55 21", ["3345"] = "35 33 21", ["3346"] = "35 33 21", ["3347"] = "33 55 21", ["3348"] = "33 55 21",
["3351"] = "33 55 21", ["3352"] = "33 55 21", ["3353"] = "33 55 21", ["3354"] = "33 55 21", ["3355"] = "33 55 21", ["3356"] = "33 55 21", ["3357"] = "33 55 21", ["3358"] = "33 55 21",
["3361"] = "33 55 21", ["3362"] = "33 55 21", ["3363"] = "33 55 21", ["3364"] = "33 55 21", ["3365"] = "33 55 21", ["3366"] = "33 55 21", ["3367"] = "33 55 21", ["3368"] = "33 55 21",
["3371"] = "33 55 21", ["3372"] = "33 55 21", ["3373"] = "33 55 21", ["3374"] = "33 55 21", ["3375"] = "35 33 21", ["3376"] = "35 33 21", ["3377"] = "33 55 21", ["3378"] = "33 55 21",
["3381"] = "33 55 21", ["3382"] = "33 55 21", ["3383"] = "33 55 21", ["3384"] = "33 55 21", ["3385"] = "35 33 21", ["3386"] = "35 33 21", ["3387"] = "33 55 21", ["3388"] = "33 55 21",
["3411"] = "22 55 21", ["3412"] = "22 55 21", ["3413"] = "22 55 21", ["3414"] = "22 55 21", ["3415"] = "22 55 44", ["3416"] = "22 55 44", ["3417"] = "22 55 21", ["3418"] = "22 55 21",
["3421"] = "22 55 21", ["3422"] = "22 55 21", ["3423"] = "22 55 21", ["3424"] = "22 55 21", ["3425"] = "22 55 44", ["3426"] = "22 55 44", ["3427"] = "22 55 21", ["3428"] = "22 55 21",
["3431"] = "22 55 21", ["3432"] = "22 55 21", ["3433"] = "22 55 21", ["3434"] = "22 55 21", ["3435"] = "35 33 21", ["3436"] = "35 33 21", ["3437"] = "35 33 21", ["3438"] = "35 33 21",
["3441"] = "22 55 21", ["3442"] = "22 55 21", ["3443"] = "22 55 21", ["3444"] = "22 55 21", ["3445"] = "35 33 21", ["3446"] = "35 33 21", ["3447"] = "35 33 21", ["3448"] = "35 33 21",
["3451"] = "22 55 21", ["3452"] = "22 55 21", ["3453"] = "22 55 21", ["3454"] = "22 55 21", ["3455"] = "22 55 44", ["3456"] = "22 55 44", ["3457"] = "22 55 21", ["3458"] = "22 55 21",
["3461"] = "22 55 21", ["3462"] = "22 55 21", ["3463"] = "22 55 21", ["3464"] = "22 55 21", ["3465"] = "22 55 44", ["3466"] = "22 55 44", ["3467"] = "22 55 21", ["3468"] = "22 55 21",
["3471"] = "22 55 21", ["3472"] = "22 55 21", ["3473"] = "22 55 21", ["3474"] = "22 55 21", ["3475"] = "22 55 44", ["3476"] = "22 55 44", ["3477"] = "22 55 21", ["3478"] = "22 55 21",
["3481"] = "22 55 21", ["3482"] = "22 55 21", ["3483"] = "22 55 21", ["3484"] = "22 55 21", ["3485"] = "22 55 44", ["3486"] = "22 55 44", ["3487"] = "22 55 21", ["3488"] = "22 55 21",
["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "24 33 21", ["3516"] = "24 33 21", ["3517"] = "33 55 21", ["3518"] = "33 55 21",
["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "24 33 21", ["3526"] = "24 33 21", ["3527"] = "33 55 21", ["3528"] = "33 55 21",
["3531"] = "55 33 21", ["3532"] = "55 33 21", ["3533"] = "35 33 21", ["3534"] = "35 33 21", ["3535"] = "35 33 21", ["3536"] = "35 33 21", ["3537"] = "35 33 21", ["3538"] = "35 33 21",
["3541"] = "24 33 21", ["3542"] = "24 33 21", ["3543"] = "24 33 21", ["3544"] = "24 33 21", ["3545"] = "24 33 21", ["3546"] = "24 33 21", ["3547"] = "24 33 21", ["3548"] = "24 33 21",
["3551"] = "44 44 53", ["3552"] = "44 44 53", ["3553"] = "44 44 53", ["3554"] = "44 44 53", ["3555"] = "44 44 53", ["3556"] = "44 44 53", ["3557"] = "44 44 53", ["3558"] = "44 44 53",
["3561"] = "44 44 53", ["3562"] = "44 44 53", ["3563"] = "44 44 53", ["3564"] = "44 44 53", ["3565"] = "44 44 53", ["3566"] = "44 44 53", ["3567"] = "44 44 53", ["3568"] = "44 44 53",
["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "35 33 21", ["3576"] = "35 33 21", ["3577"] = "33 55 21", ["3578"] = "33 55 21",
["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "35 33 21", ["3586"] = "35 33 21", ["3587"] = "33 55 21", ["3588"] = "33 55 21",
["3611"] = "22 55 21", ["3612"] = "22 55 21", ["3613"] = "22 55 21", ["3614"] = "22 55 21", ["3615"] = "22 55 44", ["3616"] = "22 55 44", ["3617"] = "22 55 21", ["3618"] = "22 55 21",
["3621"] = "22 55 21", ["3622"] = "22 55 21", ["3623"] = "22 55 21", ["3624"] = "22 55 21", ["3625"] = "22 55 44", ["3626"] = "22 55 44", ["3627"] = "22 55 21", ["3628"] = "22 55 21",
["3631"] = "22 55 21", ["3632"] = "22 55 21", ["3633"] = "22 55 21", ["3634"] = "22 55 21", ["3635"] = "24 33 21", ["3636"] = "24 33 21", ["3637"] = "24 33 21", ["3638"] = "24 33 21",
["3641"] = "24 33 21", ["3642"] = "24 33 21", ["3643"] = "24 33 21", ["3644"] = "24 33 21", ["3645"] = "24 33 21", ["3646"] = "24 33 21", ["3647"] = "24 33 21", ["3648"] = "24 33 21",
["3651"] = "22 55 21", ["3652"] = "22 55 21", ["3653"] = "22 55 21", ["3654"] = "22 55 21", ["3655"] = "22 55 44", ["3656"] = "22 55 44", ["3657"] = "22 55 21", ["3658"] = "22 55 21",
["3661"] = "22 55 21", ["3662"] = "22 55 21", ["3663"] = "22 55 21", ["3664"] = "22 55 21", ["3665"] = "22 55 44", ["3666"] = "22 55 44", ["3667"] = "22 55 21", ["3668"] = "22 55 21",
["3671"] = "22 55 21", ["3672"] = "22 55 21", ["3673"] = "22 55 21", ["3674"] = "22 55 21", ["3675"] = "22 55 44", ["3676"] = "22 55 44", ["3677"] = "22 55 21", ["3678"] = "22 55 21",
["3681"] = "22 55 21", ["3682"] = "22 55 21", ["3683"] = "22 55 21", ["3684"] = "22 55 21", ["3685"] = "22 55 44", ["3686"] = "22 55 44", ["3687"] = "22 55 21", ["3688"] = "22 55 21",
["3711"] = "33 55 21", ["3712"] = "33 55 21", ["3713"] = "33 55 21", ["3714"] = "33 55 21", ["3715"] = "33 55 44", ["3716"] = "33 55 44", ["3717"] = "33 55 21", ["3718"] = "33 55 21",
["3721"] = "33 55 21", ["3722"] = "33 55 21", ["3723"] = "33 55 21", ["3724"] = "33 55 21", ["3725"] = "33 55 44", ["3726"] = "33 55 44", ["3727"] = "33 55 21", ["3728"] = "33 55 21",
["3731"] = "33 55 21", ["3732"] = "33 55 21", ["3733"] = "33 55 21", ["3734"] = "33 55 21", ["3735"] = "33 55 21", ["3736"] = "33 55 21", ["3737"] = "33 55 21", ["3738"] = "33 55 21",
["3741"] = "33 55 21", ["3742"] = "33 55 21", ["3743"] = "33 55 21", ["3744"] = "33 55 21", ["3745"] = "33 55 21", ["3746"] = "33 55 21", ["3747"] = "33 55 21", ["3748"] = "33 55 21",
["3751"] = "33 55 21", ["3752"] = "33 55 21", ["3753"] = "33 55 21", ["3754"] = "33 55 21", ["3755"] = "33 55 44", ["3756"] = "33 55 44", ["3757"] = "33 55 21", ["3758"] = "33 55 21",
["3761"] = "33 55 21", ["3762"] = "33 55 21", ["3763"] = "33 55 21", ["3764"] = "33 55 21", ["3765"] = "33 55 44", ["3766"] = "33 55 44", ["3727"] = "33 55 21", ["3768"] = "33 55 21",
["3771"] = "33 55 21", ["3772"] = "33 55 21", ["3773"] = "33 55 21", ["3774"] = "33 55 21", ["3775"] = "33 55 44", ["3776"] = "33 55 44", ["3777"] = "33 55 21", ["3778"] = "33 55 21",
["3781"] = "33 55 21", ["3782"] = "33 55 21", ["3783"] = "33 55 21", ["3784"] = "33 55 21", ["3785"] = "33 55 44", ["3786"] = "33 55 44", ["3787"] = "33 55 21", ["3788"] = "33 55 21",
["3811"] = "11 11 24", ["3812"] = "11 11 24", ["3813"] = "11 11 24", ["3814"] = "11 11 24", ["3815"] = "11 11 24", ["3816"] = "11 11 24", ["3817"] = "11 11 24", ["3818"] = "11 11 24",
["3821"] = "11 11 24", ["3822"] = "11 11 24", ["3823"] = "11 11 24", ["3824"] = "11 11 24", ["3825"] = "11 11 24", ["3826"] = "11 11 24", ["3827"] = "11 11 24", ["3828"] = "11 11 24",
["3831"] = "22 55 21", ["3832"] = "22 55 21", ["3833"] = "22 55 21", ["3834"] = "22 55 21", ["3835"] = "22 55 21", ["3836"] = "22 55 21", ["3837"] = "22 55 21", ["3838"] = "22 55 21",
["3841"] = "22 55 21", ["3842"] = "22 55 21", ["3843"] = "22 55 21", ["3844"] = "22 55 21", ["3845"] = "22 55 21", ["3846"] = "22 55 21", ["3847"] = "22 55 21", ["3848"] = "22 55 21",
["3851"] = "22 55 21", ["3852"] = "22 55 21", ["3853"] = "22 55 21", ["3854"] = "22 55 21", ["3855"] = "22 55 21", ["3856"] = "22 55 21", ["3857"] = "22 55 21", ["3858"] = "22 55 21",
["3861"] = "22 55 21", ["3862"] = "22 55 21", ["3863"] = "22 55 21", ["3864"] = "22 55 21", ["3865"] = "22 55 21", ["3866"] = "22 55 21", ["3867"] = "22 55 21", ["3868"] = "22 55 21",
["3871"] = "11 11 24", ["3872"] = "11 11 24", ["3873"] = "11 11 24", ["3874"] = "11 11 24", ["3875"] = "11 11 24", ["3876"] = "11 11 24", ["3877"] = "11 11 24", ["3878"] = "11 11 24",
["3881"] = "11 11 24", ["3882"] = "11 11 24", ["3883"] = "11 11 24", ["3884"] = "11 11 24", ["3885"] = "11 11 24", ["3886"] = "11 11 24", ["3887"] = "11 11 24", ["3888"] = "11 11 24",
},
['sj'] = {
["10"] = "",
["11"] = "53", ["12"] = "31", ["13"] = "44", ["14"] = "22", ["15"] = "35", ["16"] = "13", ["17"] = "44", ["18"] = "22",
["211"] = "35 53", ["212"] = "35 53", ["213"] = "35 53", ["214"] = "35 53", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "53 31", ["218"] = "53 31",
["221"] = "15 53", ["222"] = "15 53", ["223"] = "15 53", ["224"] = "15 53", ["225"] = "24 31", ["226"] = "24 31", ["227"] = "22 22", ["228"] = "22 22",
["231"] = "35 31", ["232"] = "35 31", ["233"] = "35 31", ["234"] = "35 31", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "35 31", ["238"] = "35 31",
["241"] = "24 31", ["242"] = "24 31", ["243"] = "24 31", ["244"] = "24 31", ["245"] = "22 35", ["246"] = "22 35", ["247"] = "24 31", ["248"] = "24 31",
["251"] = "53 31", ["252"] = "53 31", ["253"] = "53 31", ["254"] = "53 31", ["255"] = "44 44", ["256"] = "44 44", ["257"] = "35 31", ["258"] = "35 31",
["261"] = "22 22", ["262"] = "22 22", ["263"] = "22 22", ["264"] = "22 22", ["265"] = "22 35", ["266"] = "22 35", ["267"] = "24 31", ["268"] = "24 31",
["271"] = "44 53", ["272"] = "44 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "44 35", ["276"] = "44 35", ["277"] = "44 44", ["278"] = "44 44",
["281"] = "22 53", ["282"] = "22 53", ["283"] = "22 22", ["284"] = "22 22", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 22", ["288"] = "22 22",
["3111"] = "35 55 31", ["3112"] = "35 55 31", ["3113"] = "35 55 31", ["3114"] = "35 55 31", ["3115"] = "35 55 31", ["3116"] = "35 55 31", ["3117"] = "55 33 31", ["3118"] = "55 33 31",
["3121"] = "35 55 31", ["3122"] = "35 55 31", ["3123"] = "35 55 31", ["3124"] = "35 55 31", ["3125"] = "35 55 31", ["3126"] = "35 55 31", ["3127"] = "55 33 31", ["3128"] = "55 33 31",
["3131"] = "55 33 31", ["3132"] = "55 33 31", ["3133"] = "55 33 31", ["3134"] = "55 33 31", ["3135"] = "35 55 31", ["3136"] = "35 55 31", ["3137"] = "55 33 31", ["3138"] = "55 33 31",
["3141"] = "55 33 31", ["3142"] = "55 33 31", ["3143"] = "55 33 31", ["3144"] = "55 33 31", ["3145"] = "35 55 31", ["3146"] = "35 55 31", ["3147"] = "55 33 31", ["3148"] = "55 33 31",
["3151"] = "55 33 31", ["3152"] = "55 33 31", ["3153"] = "55 33 31", ["3154"] = "55 33 31", ["3155"] = "55 33 31", ["3156"] = "55 33 31", ["3157"] = "55 33 31", ["3158"] = "55 33 31",
["3161"] = "55 33 31", ["3162"] = "55 33 31", ["3163"] = "55 33 31", ["3164"] = "55 33 31", ["3165"] = "55 33 31", ["3166"] = "55 33 31", ["3167"] = "55 33 31", ["3168"] = "55 33 31",
["3171"] = "35 55 31", ["3172"] = "35 55 31", ["3173"] = "55 33 31", ["3174"] = "55 33 31", ["3175"] = "55 33 31", ["3176"] = "55 33 31", ["3177"] = "55 33 31", ["3178"] = "55 33 31",
["3181"] = "35 55 31", ["3182"] = "35 55 31", ["3183"] = "55 33 31", ["3184"] = "55 33 31", ["3185"] = "55 33 31", ["3186"] = "55 33 31", ["3187"] = "55 33 31", ["3188"] = "55 33 31",
["3211"] = "13 55 31", ["3212"] = "13 55 31", ["3213"] = "13 55 31", ["3214"] = "13 55 31", ["3215"] = "13 55 31", ["3216"] = "13 55 31", ["3217"] = "22 22 22", ["3218"] = "22 22 22",
["3221"] = "13 55 31", ["3222"] = "13 55 31", ["3223"] = "13 55 31", ["3224"] = "13 55 31", ["3225"] = "13 55 31", ["3226"] = "13 55 31", ["3227"] = "22 22 22", ["3228"] = "22 22 22",
["3231"] = "24 33 31", ["3232"] = "24 33 31", ["3233"] = "24 33 31", ["3234"] = "24 33 31", ["3235"] = "13 55 31", ["3236"] = "13 55 31", ["3237"] = "24 33 31", ["3238"] = "24 33 31",
["3241"] = "24 33 31", ["3242"] = "24 33 31", ["3243"] = "24 33 31", ["3244"] = "24 33 31", ["3245"] = "13 55 31", ["3246"] = "13 55 31", ["3247"] = "24 33 31", ["3248"] = "24 33 31",
["3251"] = "24 33 31", ["3252"] = "24 33 31", ["3253"] = "24 33 31", ["3254"] = "24 33 31", ["3255"] = "24 33 31", ["3256"] = "24 33 31", ["3257"] = "24 33 31", ["3258"] = "24 33 31",
["3261"] = "24 33 31", ["3262"] = "24 33 31", ["3263"] = "24 33 31", ["3264"] = "24 33 31", ["3265"] = "24 33 31", ["3266"] = "24 33 31", ["3267"] = "22 22 22", ["3268"] = "22 22 22",
["3271"] = "13 55 31", ["3272"] = "13 55 31", ["3273"] = "22 22 22", ["3274"] = "22 22 22", ["3275"] = "22 22 22", ["3276"] = "22 22 22", ["3277"] = "22 22 22", ["3278"] = "22 22 22",
["3281"] = "13 55 31", ["3282"] = "13 55 31", ["3283"] = "22 22 22", ["3284"] = "22 22 22", ["3285"] = "22 22 22", ["3286"] = "22 22 22", ["3287"] = "22 22 22", ["3288"] = "22 22 22",
["3311"] = "33 55 31", ["3312"] = "33 55 31", ["3313"] = "33 55 31", ["3314"] = "33 55 31", ["3315"] = "35 33 31", ["3316"] = "35 33 31", ["3317"] = "33 55 31", ["3318"] = "33 55 31",
["3321"] = "33 55 31", ["3322"] = "33 55 31", ["3323"] = "33 55 31", ["3324"] = "33 55 31", ["3325"] = "35 33 31", ["3326"] = "35 33 31", ["3327"] = "33 55 31", ["3328"] = "33 55 31",
["3331"] = "33 55 31", ["3332"] = "33 55 31", ["3333"] = "33 55 31", ["3334"] = "33 55 31", ["3335"] = "35 33 31", ["3336"] = "35 33 31", ["3337"] = "33 55 31", ["3338"] = "33 55 31",
["3341"] = "33 55 31", ["3342"] = "33 55 31", ["3343"] = "33 55 31", ["3344"] = "33 55 31", ["3345"] = "35 33 31", ["3346"] = "35 33 31", ["3347"] = "33 55 31", ["3348"] = "33 55 31",
["3351"] = "33 55 31", ["3352"] = "33 55 31", ["3353"] = "33 55 31", ["3354"] = "33 55 31", ["3355"] = "35 33 31", ["3356"] = "35 33 31", ["3357"] = "33 55 31", ["3358"] = "33 55 31",
["3361"] = "33 55 31", ["3362"] = "33 55 31", ["3363"] = "33 55 31", ["3364"] = "33 55 31", ["3365"] = "35 33 31", ["3366"] = "35 33 31", ["3367"] = "33 55 31", ["3368"] = "33 55 31",
["3371"] = "33 55 53", ["3372"] = "33 55 53", ["3373"] = "33 55 31", ["3374"] = "33 55 31", ["3375"] = "35 33 31", ["3376"] = "35 33 31", ["3377"] = "33 55 31", ["3378"] = "33 55 31",
["3381"] = "33 55 53", ["3382"] = "33 55 53", ["3383"] = "33 55 31", ["3384"] = "33 55 31", ["3385"] = "35 33 31", ["3386"] = "35 33 31", ["3387"] = "33 55 31", ["3388"] = "33 55 31",
["3411"] = "22 55 31", ["3412"] = "22 55 31", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "24 33 31", ["3416"] = "24 33 31", ["3417"] = "22 55 31", ["3418"] = "22 55 31",
["3421"] = "22 55 31", ["3422"] = "22 55 31", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "24 33 31", ["3426"] = "24 33 31", ["3427"] = "22 55 31", ["3428"] = "22 55 31",
["3431"] = "22 55 31", ["3432"] = "22 55 31", ["3433"] = "22 55 31", ["3434"] = "22 55 31", ["3435"] = "24 33 31", ["3436"] = "24 33 31", ["3437"] = "22 55 31", ["3438"] = "22 55 31",
["3441"] = "22 55 31", ["3442"] = "22 55 31", ["3443"] = "22 55 31", ["3444"] = "22 55 31", ["3445"] = "24 33 31", ["3446"] = "24 33 31", ["3447"] = "22 55 31", ["3448"] = "22 55 31",
["3451"] = "22 55 31", ["3452"] = "22 55 31", ["3453"] = "22 55 31", ["3454"] = "22 55 31", ["3455"] = "24 33 31", ["3456"] = "24 33 31", ["3457"] = "22 55 31", ["3458"] = "22 55 31",
["3461"] = "22 55 31", ["3462"] = "22 55 31", ["3463"] = "22 55 31", ["3464"] = "22 55 31", ["3465"] = "24 33 31", ["3466"] = "24 33 31", ["3467"] = "22 55 31", ["3468"] = "22 55 31",
["3471"] = "22 55 53", ["3472"] = "22 55 53", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "24 33 31", ["3476"] = "24 33 31", ["3477"] = "22 55 31", ["3478"] = "22 55 31",
["3481"] = "22 55 53", ["3482"] = "22 55 53", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "24 33 31", ["3486"] = "24 33 31", ["3487"] = "22 55 31", ["3488"] = "22 55 31",
["3511"] = "55 33 31", ["3512"] = "55 33 31", ["3513"] = "55 33 31", ["3514"] = "55 33 31", ["3515"] = "55 33 31", ["3516"] = "55 33 31", ["3517"] = "55 33 31", ["3518"] = "55 33 31",
["3521"] = "55 33 31", ["3522"] = "55 33 31", ["3523"] = "55 33 31", ["3524"] = "55 33 31", ["3525"] = "55 33 31", ["3526"] = "55 33 31", ["3527"] = "55 33 31", ["3528"] = "55 33 31",
["3531"] = "44 44 53", ["3532"] = "44 44 53", ["3533"] = "44 44 53", ["3534"] = "44 44 53", ["3535"] = "55 33 31", ["3536"] = "55 33 31", ["3537"] = "44 44 53", ["3538"] = "44 44 53",
["3541"] = "33 55 31", ["3542"] = "33 55 31", ["3543"] = "33 55 31", ["3544"] = "33 55 31", ["3545"] = "55 33 31", ["3546"] = "55 33 31", ["3547"] = "44 44 53", ["3548"] = "44 44 53",
["3551"] = "33 55 31", ["3552"] = "33 55 31", ["3553"] = "33 55 31", ["3554"] = "33 55 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "44 44 53", ["3558"] = "44 44 53",
["3561"] = "33 55 31", ["3562"] = "33 55 31", ["3563"] = "33 55 31", ["3564"] = "33 55 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "44 44 53", ["3568"] = "44 44 53",
["3571"] = "33 55 53", ["3572"] = "33 55 53", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "35 33 31", ["3576"] = "35 33 31", ["3577"] = "33 55 31", ["3578"] = "33 55 31",
["3581"] = "33 55 53", ["3582"] = "33 55 53", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "35 33 31", ["3586"] = "35 33 31", ["3587"] = "33 55 31", ["3588"] = "33 55 31",
["3611"] = "22 22 22", ["3612"] = "22 22 22", ["3613"] = "22 22 22", ["3614"] = "22 22 22", ["3615"] = "22 22 22", ["3616"] = "22 22 22", ["3617"] = "22 22 22", ["3618"] = "22 22 22",
["3621"] = "22 22 22", ["3622"] = "22 22 22", ["3623"] = "22 22 22", ["3624"] = "22 22 22", ["3625"] = "22 22 22", ["3626"] = "22 22 22", ["3627"] = "22 22 22", ["3628"] = "22 22 22",
["3631"] = "22 55 53", ["3632"] = "22 55 53", ["3633"] = "22 55 53", ["3634"] = "22 55 53", ["3635"] = "22 22 22", ["3636"] = "22 22 22", ["3637"] = "22 55 53", ["3638"] = "22 55 53",
["3641"] = "22 55 53", ["3642"] = "22 55 53", ["3643"] = "22 55 53", ["3644"] = "22 55 53", ["3645"] = "22 22 22", ["3646"] = "22 22 22", ["3647"] = "22 55 53", ["3648"] = "22 55 53",
["3651"] = "22 55 31", ["3652"] = "22 55 31", ["3653"] = "22 55 31", ["3654"] = "22 55 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "22 55 31", ["3658"] = "22 55 31",
["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "22 55 31", ["3664"] = "22 55 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31",
["3671"] = "22 55 53", ["3672"] = "22 55 53", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "24 33 31", ["3676"] = "24 33 31", ["3677"] = "22 55 31", ["3678"] = "22 55 31",
["3681"] = "22 55 53", ["3682"] = "22 55 53", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "24 33 31", ["3686"] = "24 33 31", ["3687"] = "22 55 31", ["3688"] = "22 55 31",
["3711"] = "33 55 53", ["3712"] = "33 55 53", ["3713"] = "33 55 53", ["3714"] = "33 55 53", ["3715"] = "33 55 31", ["3716"] = "33 55 31", ["3717"] = "33 55 31", ["3718"] = "33 55 31",
["3721"] = "33 55 53", ["3722"] = "33 55 53", ["3723"] = "33 55 53", ["3724"] = "33 55 53", ["3725"] = "33 55 31", ["3726"] = "33 55 31", ["3727"] = "33 55 31", ["3728"] = "33 55 31",
["3731"] = "33 55 53", ["3732"] = "33 55 53", ["3733"] = "33 55 53", ["3734"] = "33 55 53", ["3735"] = "44 44 44", ["3736"] = "44 44 44", ["3737"] = "33 55 53", ["3738"] = "33 55 53",
["3741"] = "33 55 53", ["3742"] = "33 55 53", ["3743"] = "33 55 53", ["3744"] = "33 55 53", ["3745"] = "44 44 44", ["3746"] = "44 44 44", ["3747"] = "33 55 53", ["3748"] = "33 55 53",
["3751"] = "33 55 31", ["3752"] = "33 55 31", ["3753"] = "33 55 31", ["3754"] = "33 55 31", ["3755"] = "44 44 44", ["3756"] = "44 44 44", ["3757"] = "33 55 53", ["3758"] = "33 55 53",
["3761"] = "33 55 31", ["3762"] = "33 55 31", ["3763"] = "33 55 31", ["3764"] = "33 55 31", ["3765"] = "44 44 44", ["3766"] = "44 44 44", ["3767"] = "33 55 53", ["3768"] = "33 55 53",
["3771"] = "33 55 53", ["3772"] = "33 55 53", ["3773"] = "33 55 53", ["3774"] = "33 55 53", ["3775"] = "44 44 44", ["3776"] = "44 44 44", ["3777"] = "44 44 44", ["3778"] = "44 44 44",
["3781"] = "33 55 53", ["3782"] = "33 55 53", ["3783"] = "33 55 53", ["3784"] = "33 55 53", ["3785"] = "44 44 44", ["3786"] = "44 44 44", ["3787"] = "44 44 44", ["3788"] = "44 44 44",
["3811"] = "22 55 53", ["3812"] = "22 55 53", ["3813"] = "22 55 53", ["3814"] = "22 55 53", ["3815"] = "22 55 31", ["3816"] = "22 55 31", ["3817"] = "22 55 31", ["3818"] = "22 55 31",
["3821"] = "22 55 53", ["3822"] = "22 55 53", ["3823"] = "22 55 53", ["3824"] = "22 55 53", ["3825"] = "22 55 31", ["3826"] = "22 55 31", ["3827"] = "22 55 31", ["3828"] = "22 55 31",
["3831"] = "22 55 53", ["3832"] = "22 55 53", ["3833"] = "22 55 53", ["3834"] = "22 55 53", ["3835"] = "22 22 22", ["3836"] = "22 22 22", ["3837"] = "22 55 53", ["3838"] = "22 55 53",
["3841"] = "22 55 53", ["3842"] = "22 55 53", ["3843"] = "22 55 53", ["3844"] = "22 55 53", ["3845"] = "22 22 22", ["3846"] = "22 22 22", ["3847"] = "22 55 53", ["3848"] = "22 55 53",
["3851"] = "22 55 31", ["3852"] = "22 55 31", ["3853"] = "22 55 31", ["3854"] = "22 55 31", ["3855"] = "22 22 22", ["3856"] = "22 22 22", ["3857"] = "22 55 53", ["3858"] = "22 55 53",
["3861"] = "22 55 31", ["3862"] = "22 55 31", ["3863"] = "22 55 31", ["3864"] = "22 55 31", ["3865"] = "22 22 22", ["3866"] = "22 22 22", ["3867"] = "22 55 53", ["3868"] = "22 55 53",
["3871"] = "22 55 53", ["3872"] = "22 55 53", ["3873"] = "22 55 53", ["3874"] = "22 55 53", ["3875"] = "22 22 22", ["3876"] = "22 22 22", ["3877"] = "22 22 22", ["3878"] = "22 22 22",
["3881"] = "22 55 53", ["3882"] = "22 55 53", ["3883"] = "22 55 53", ["3884"] = "22 55 53", ["3885"] = "22 22 22", ["3886"] = "22 22 22", ["3887"] = "22 22 22", ["3888"] = "22 22 22",
--!RPS! : potentially doesn't exist? source found that claims that Old SH doesn't have RPS but whether or not this applies to Songjiang may be up for debate
},
['cm'] = {
["10"] = "",
["11"] = "55", ["12"] = "24", ["13"] = "424", ["14"] = "242", ["15"] = "33", ["16"] = "313", ["17"] = "5", ["18"] = "2",
-- disylls
-- regular LPS
["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 0", ["214"] = "55 0", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 5", ["218"] = "55 5",
["221"] = "24 55", ["222"] = "24 55", ["223"] = "24 0", ["224"] = "24 0", ["225"] = "24 33", ["226"] = "24 0", ["227"] = "24 5", ["228"] = "24 5",
["231"] = "42 55", ["232"] = "42 55", ["233"] = "33 0", ["234"] = "42 33", ["235"] = "42 33", ["236"] = "42 33", ["237"] = "42 5", ["238"] = "42 5",
["241"] = "31 55", ["242"] = "31 55", ["243"] = "31 33", ["244"] = "242 0", ["245"] = "242 0", ["246"] = "242 0", ["247"] = "31 5", ["248"] = "31 5",
["251"] = "42 55", ["252"] = "42 55", ["253"] = "33 0", ["254"] = "33 0", ["255"] = "42 33", ["256"] = "33 0", ["257"] = "42 5", ["258"] = "42 5",
["261"] = "31 55", ["262"] = "31 55", ["263"] = "31 33", ["264"] = "31 33", ["265"] = "31 33", ["266"] = "31 33", ["267"] = "31 5", ["268"] = "31 5",
["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 33", ["274"] = "55 33", ["275"] = "55 33", ["276"] = "55 33", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "22 55", ["282"] = "22 55", ["283"] = "22 33", ["284"] = "22 33", ["285"] = "22 33", ["286"] = "22 33", ["287"] = "22 55", ["288"] = "22 55",
-- numeral-classifier and verb/adjective-complement LPS
["211C"] = "55 55", ["212C"] = "55 55", ["213C"] = "55 0", ["214C"] = "55 0", ["215C"] = "55 0", ["216C"] = "55 0", ["217C"] = "55 55", ["218C"] = "55 55",
["221C"] = "24 55", ["222C"] = "24 55", ["223C"] = "24 0", ["224C"] = "24 0", ["225C"] = "24 33", ["226C"] = "24 0", ["227C"] = "24 55", ["228C"] = "24 55",
["231C"] = "42 33", ["232C"] = "42 33", ["233C"] = "42 33", ["234C"] = "42 33", ["235C"] = "42 33", ["236C"] = "42 33", ["237C"] = "42 0", ["238C"] = "42 0",
["241C"] = "242 0", ["242C"] = "242 0", ["243C"] = "242 0", ["244C"] = "242 0", ["245C"] = "242 0", ["246C"] = "242 0", ["247C"] = "242 0", ["248C"] = "242 0",
["251C"] = "33 55", ["252C"] = "33 55", ["253C"] = "33 55", ["254C"] = "33 55", ["255C"] = "33 55", ["256C"] = "33 55", ["257C"] = "33 0", ["258C"] = "33 0",
["261C"] = "31 33", ["262C"] = "31 33", ["263C"] = "31 33", ["264C"] = "31 33", ["265C"] = "31 33", ["266C"] = "31 33", ["267C"] = "31 0", ["268C"] = "31 0",
["271C"] = "55 55", ["272C"] = "55 55", ["273C"] = "55 33", ["274C"] = "55 33", ["275C"] = "55 33", ["276C"] = "55 33", ["277C"] = "55 55", ["278C"] = "55 55",
["281C"] = "22 55", ["282C"] = "22 55", ["283C"] = "22 33", ["284C"] = "22 33", ["285C"] = "22 33", ["286C"] = "22 33", ["287C"] = "22 55", ["288C"] = "22 55",
-- motion verbs → 過來、出來、上去、進去
["3M"] = "42 55", ["4M"] = "31 55", ["5M"] = "42 55", ["7M"] = "55 55",
-- verb-pronoun → 幫我、怪你、學渠
["1P"] = "55 55", ["2P"] = "24 55", ["3P"] = "53 33", ["4P"] = "242 0", ["5P"] = "33 55", ["6P"] = "31 33", ["7P"] = "55 55", ["8P"] = "22 55",
-- reduplicated (verb, counter, noun) → 天天、花花、做做、日日、坐坐
["RV1"] = "55 55", ["RV2"] = "24 55", ["RV3"] = "42 33", ["RV4"] = "242 0", ["RV5"] = "33 55", ["RV6"] = "31 33", ["RV7"] = "5 5", ["RV8"] = "2 5",
["RC1"] = "55 55", ["RC2"] = "24 55", ["RC3"] = "42 33", ["RC4"] = "24 0", ["RC5"] = "42 33", ["RC6"] = "24 0", ["RC7"] = "5 5", ["RC8"] = "2 5",
["RN1"] = "55 55", ["RN2"] = "24 55", ["RN3"] = "42 55", ["RN4"] = "242 0", ["RN5"] = "42 55", ["RN6"] = "42 55", ["RN7"] = "5 5", ["RN8"] = "2 5",
--regular trisyll LPS
["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 0", ["3114"] = "55 55 0", ["3115"] = "55 55 0", ["3116"] = "55 55 0", ["3117"] = "55 55 55", ["3118"] = "55 55 55",
["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 0", ["3124"] = "55 55 0", ["3125"] = "55 55 0", ["3126"] = "55 55 0", ["3127"] = "55 55 55", ["3128"] = "55 55 55",
["3131"] = "55 0 55", ["3132"] = "55 0 55", ["3133"] = "55 0 0", ["3134"] = "55 0 0", ["3135"] = "55 0 0", ["3136"] = "55 0 0", ["3137"] = "55 0 0", ["3138"] = "55 0 0",
["3141"] = "55 0 55", ["3142"] = "55 0 55", ["3143"] = "55 0 0", ["3144"] = "55 0 0", ["3145"] = "55 0 0", ["3146"] = "55 0 0", ["3147"] = "55 0 0", ["3148"] = "55 0 0",
["3151"] = "55 0 55", ["3152"] = "55 0 55", ["3153"] = "55 0 0", ["3154"] = "55 0 0", ["3155"] = "55 0 0", ["3156"] = "55 0 0", ["3157"] = "55 0 0", ["3158"] = "55 0 0",
["3161"] = "55 0 55", ["3162"] = "55 0 55", ["3163"] = "55 0 0", ["3164"] = "55 0 0", ["3165"] = "55 0 0", ["3166"] = "55 0 0", ["3167"] = "55 0 0", ["3168"] = "55 0 0",
["3171"] = "55 55 55", ["3172"] = "55 55 55", ["3173"] = "55 55 0", ["3174"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "55 55 0", ["3177"] = "55 55 55", ["3178"] = "55 55 55",
["3181"] = "55 55 55", ["3182"] = "55 55 55", ["3183"] = "55 55 0", ["3184"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55",
["3211"] = "24 33 55", ["3212"] = "24 33 55", ["3213"] = "24 55 0", ["3214"] = "24 55 0", ["3215"] = "24 55 0", ["3216"] = "24 55 0", ["3217"] = "24 33 55", ["3218"] = "24 33 55",
["3221"] = "24 33 55", ["3222"] = "24 33 55", ["3223"] = "24 55 0", ["3224"] = "24 55 0", ["3225"] = "24 55 0", ["3226"] = "24 55 0", ["3227"] = "24 33 55", ["3228"] = "24 33 55",
["3231"] = "24 33 55", ["3232"] = "24 33 55", ["3233"] = "24 33 0", ["3234"] = "24 33 0", ["3235"] = "24 0 0", ["3236"] = "24 0 0", ["3237"] = "24 33 55", ["3238"] = "24 33 55",
["3241"] = "24 0 55", ["3242"] = "24 0 55", ["3243"] = "24 0 0", ["3244"] = "24 0 0", ["3245"] = "24 0 0", ["3246"] = "24 0 0", ["3247"] = "24 0 0", ["3248"] = "24 0 0",
["3251"] = "24 33 55", ["3252"] = "24 33 55", ["3253"] = "24 33 0", ["3254"] = "24 33 0", ["3255"] = "24 33 0", ["3256"] = "24 33 0", ["3257"] = "24 33 55", ["3258"] = "24 33 5",
["3261"] = "24 0 55", ["3262"] = "24 0 55", ["3263"] = "24 0 0", ["3264"] = "24 0 0", ["3265"] = "24 0 0", ["3266"] = "24 0 0", ["3267"] = "24 0 0", ["3268"] = "24 0 0",
["3271"] = "24 55 55", ["3272"] = "24 55 55", ["3273"] = "24 55 0", ["3274"] = "24 55 0", ["3275"] = "24 55 0", ["3276"] = "24 55 0", ["3277"] = "24 55 55", ["3278"] = "24 55 55",
["3281"] = "24 55 55", ["3282"] = "24 55 55", ["3283"] = "24 55 0", ["3284"] = "24 55 0", ["3285"] = "24 55 0", ["3286"] = "24 55 0", ["3287"] = "24 55 55", ["3288"] = "24 55 55",
["3311"] = "42 33 55", ["3312"] = "42 33 55", ["3313"] = "42 55 0", ["3314"] = "42 55 0", ["3315"] = "42 55 0", ["3316"] = "42 55 0", ["3317"] = "42 33 55", ["3318"] = "42 33 55",
["3321"] = "42 33 55", ["3322"] = "42 33 55", ["3323"] = "42 55 0", ["3324"] = "42 55 0", ["3325"] = "42 55 0", ["3326"] = "42 55 0", ["3327"] = "42 33 55", ["3328"] = "42 33 55",
["3331"] = "42 33 55", ["3332"] = "42 33 55", ["3333"] = "42 33 0", ["3334"] = "42 33 0", ["3335"] = "42 33 0", ["3336"] = "42 33 0", ["3337"] = "42 33 55", ["3338"] = "42 33 55",
["3341"] = "42 33 55", ["3342"] = "42 33 55", ["3343"] = "42 33 0", ["3344"] = "42 33 0", ["3345"] = "42 33 0", ["3346"] = "42 33 0", ["3347"] = "42 33 55", ["3348"] = "42 33 55",
["3351"] = "42 33 55", ["3352"] = "42 33 55", ["3353"] = "42 33 0", ["3354"] = "42 33 0", ["3355"] = "42 33 0", ["3356"] = "42 33 0", ["3357"] = "42 33 55", ["3358"] = "42 33 55",
["3361"] = "42 33 55", ["3362"] = "42 33 55", ["3363"] = "42 33 0", ["3364"] = "42 33 0", ["3365"] = "42 33 0", ["3366"] = "42 33 0", ["3367"] = "42 33 55", ["3368"] = "42 33 55",
["3371"] = "42 55 55", ["3372"] = "42 55 55", ["3373"] = "42 55 0", ["3374"] = "42 55 0", ["3375"] = "42 55 0", ["3376"] = "42 55 0", ["3377"] = "42 55 55", ["3378"] = "42 55 55",
["3381"] = "42 55 55", ["3382"] = "42 55 55", ["3383"] = "42 55 0", ["3384"] = "42 55 0", ["3385"] = "42 55 0", ["3386"] = "42 55 0", ["3387"] = "42 55 55", ["3388"] = "42 55 55",
["3411"] = "31 33 55", ["3412"] = "31 33 55", ["3413"] = "31 55 0", ["3414"] = "31 55 0", ["3415"] = "31 55 0", ["3416"] = "31 55 0", ["3417"] = "31 33 55", ["3418"] = "31 33 55",
["3421"] = "31 33 55", ["3422"] = "31 33 55", ["3423"] = "31 55 0", ["3424"] = "31 55 0", ["3425"] = "31 55 0", ["3426"] = "31 55 0", ["3427"] = "31 33 55", ["3428"] = "31 33 55",
["3431"] = "31 33 55", ["3432"] = "31 33 55", ["3433"] = "31 33 0", ["3434"] = "31 33 0", ["3435"] = "31 33 0", ["3436"] = "31 33 0", ["3437"] = "31 33 55", ["3438"] = "31 33 55",
["3441"] = "31 33 55", ["3442"] = "31 33 55", ["3443"] = "31 33 0", ["3444"] = "31 33 0", ["3445"] = "31 33 0", ["3446"] = "31 33 0", ["3447"] = "31 33 55", ["3448"] = "31 33 55",
["3451"] = "31 33 55", ["3452"] = "31 33 55", ["3453"] = "31 33 0", ["3454"] = "31 33 0", ["3455"] = "31 33 0", ["3456"] = "31 33 0", ["3457"] = "31 33 55", ["3458"] = "31 33 55",
["3461"] = "31 33 55", ["3462"] = "31 33 55", ["3463"] = "31 33 0", ["3464"] = "31 33 0", ["3465"] = "31 33 0", ["3466"] = "31 33 0", ["3467"] = "31 33 55", ["3468"] = "31 33 55",
["3471"] = "31 55 55", ["3472"] = "31 55 55", ["3473"] = "31 55 0", ["3474"] = "31 55 0", ["3475"] = "31 55 0", ["3476"] = "31 55 0", ["3477"] = "31 55 55", ["3478"] = "31 55 55",
["3481"] = "31 55 55", ["3482"] = "31 55 55", ["3483"] = "31 55 0", ["3484"] = "31 55 0", ["3485"] = "31 55 0", ["3486"] = "31 55 0", ["3487"] = "31 55 55", ["3488"] = "31 55 55",
["3511"] = "42 33 55", ["3512"] = "42 33 55", ["3513"] = "42 55 0", ["3514"] = "42 55 0", ["3515"] = "42 55 0", ["3516"] = "42 55 0", ["3517"] = "42 33 55", ["3518"] = "42 33 55",
["3521"] = "42 33 55", ["3522"] = "42 33 55", ["3523"] = "42 55 0", ["3524"] = "42 55 0", ["3525"] = "42 55 0", ["3526"] = "42 55 0", ["3527"] = "42 33 55", ["3528"] = "42 33 55",
["3531"] = "42 33 55", ["3532"] = "42 33 55", ["3533"] = "42 33 0", ["3534"] = "42 33 0", ["3535"] = "42 33 0", ["3536"] = "42 33 0", ["3537"] = "42 33 55", ["3538"] = "42 33 55",
["3541"] = "42 33 55", ["3542"] = "42 33 55", ["3543"] = "42 33 0", ["3544"] = "42 33 0", ["3545"] = "42 33 0", ["3546"] = "42 33 0", ["3547"] = "42 33 55", ["3548"] = "42 33 55",
["3551"] = "42 33 55", ["3552"] = "42 33 55", ["3553"] = "42 33 0", ["3554"] = "42 33 0", ["3555"] = "42 33 0", ["3556"] = "42 33 0", ["3557"] = "42 33 55", ["3558"] = "42 33 55",
["3561"] = "42 33 55", ["3562"] = "42 33 55", ["3563"] = "42 33 0", ["3564"] = "42 33 0", ["3565"] = "42 33 0", ["3566"] = "42 33 0", ["3567"] = "42 33 55", ["3568"] = "42 33 55",
["3571"] = "42 55 55", ["3572"] = "42 55 55", ["3573"] = "42 55 0", ["3574"] = "42 55 0", ["3575"] = "42 55 0", ["3576"] = "42 55 0", ["3577"] = "42 55 55", ["3578"] = "42 55 55",
["3581"] = "42 55 55", ["3582"] = "42 55 55", ["3583"] = "42 55 0", ["3584"] = "42 55 0", ["3585"] = "42 55 0", ["3586"] = "42 55 0", ["3587"] = "42 55 55", ["3588"] = "42 55 55",
["3611"] = "31 33 55", ["3612"] = "31 33 55", ["3613"] = "31 55 0", ["3614"] = "31 55 0", ["3615"] = "31 55 0", ["3616"] = "31 55 0", ["3617"] = "31 33 55", ["3618"] = "31 33 55",
["3621"] = "31 33 55", ["3622"] = "31 33 55", ["3623"] = "31 55 0", ["3624"] = "31 55 0", ["3625"] = "31 55 0", ["3626"] = "31 55 0", ["3627"] = "31 33 55", ["3628"] = "31 33 55",
["3631"] = "31 33 55", ["3632"] = "31 33 55", ["3633"] = "31 33 0", ["3634"] = "31 33 0", ["3635"] = "31 33 0", ["3636"] = "31 33 0", ["3637"] = "31 33 55", ["3638"] = "31 33 55",
["3641"] = "31 33 55", ["3642"] = "31 33 55", ["3643"] = "31 33 0", ["3644"] = "31 33 0", ["3645"] = "31 33 0", ["3646"] = "31 33 0", ["3647"] = "31 33 55", ["3648"] = "31 33 55",
["3651"] = "31 33 55", ["3652"] = "31 33 55", ["3653"] = "31 33 0", ["3654"] = "31 33 0", ["3655"] = "31 33 0", ["3656"] = "31 33 0", ["3657"] = "31 33 55", ["3658"] = "31 33 55",
["3661"] = "31 33 55", ["3662"] = "31 33 55", ["3663"] = "31 33 0", ["3664"] = "31 33 0", ["3665"] = "31 33 0", ["3666"] = "31 33 0", ["3667"] = "31 33 55", ["3668"] = "31 33 55",
["3671"] = "31 55 55", ["3672"] = "31 55 55", ["3673"] = "31 55 0", ["3674"] = "31 55 0", ["3675"] = "31 55 0", ["3676"] = "31 55 0", ["3677"] = "31 55 55", ["3678"] = "31 55 55",
["3681"] = "31 55 55", ["3682"] = "31 55 55", ["3683"] = "31 55 0", ["3684"] = "31 55 0", ["3685"] = "31 55 0", ["3686"] = "31 55 0", ["3687"] = "31 55 55", ["3688"] = "31 55 55",
["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 0", ["3714"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "55 55 55", ["3718"] = "55 55 55",
["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 0", ["3724"] = "55 55 0", ["3725"] = "55 55 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55",
["3731"] = "55 33 55", ["3732"] = "55 33 55", ["3733"] = "55 33 0", ["3734"] = "55 33 0", ["3735"] = "55 33 0", ["3736"] = "55 33 0", ["3737"] = "55 33 55", ["3738"] = "55 33 55",
["3741"] = "55 33 55", ["3742"] = "55 33 55", ["3743"] = "55 33 0", ["3744"] = "55 33 0", ["3745"] = "55 33 0", ["3746"] = "55 33 0", ["3747"] = "55 33 55", ["3748"] = "55 33 55",
["3751"] = "55 33 55", ["3752"] = "55 33 55", ["3753"] = "55 33 0", ["3754"] = "55 33 0", ["3755"] = "55 33 0", ["3756"] = "55 33 0", ["3757"] = "55 33 55", ["3758"] = "55 33 55",
["3761"] = "55 33 55", ["3762"] = "55 33 55", ["3763"] = "55 33 0", ["3764"] = "55 33 0", ["3765"] = "55 33 0", ["3766"] = "55 33 0", ["3767"] = "55 33 55", ["3768"] = "55 33 55",
["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 0", ["3774"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55",
["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 0", ["3784"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55",
["3811"] = "22 33 55", ["3812"] = "22 33 55", ["3813"] = "22 55 0", ["3814"] = "22 55 0", ["3815"] = "22 55 0", ["3816"] = "22 55 0", ["3817"] = "22 33 55", ["3818"] = "22 33 55",
["3821"] = "22 33 55", ["3822"] = "22 33 55", ["3823"] = "22 55 0", ["3824"] = "22 55 0", ["3825"] = "22 55 0", ["3826"] = "22 55 0", ["3827"] = "22 33 55", ["3828"] = "22 33 55",
["3831"] = "22 33 55", ["3832"] = "22 33 55", ["3833"] = "22 33 0", ["3834"] = "22 33 0", ["3835"] = "22 33 0", ["3836"] = "22 33 0", ["3837"] = "22 33 55", ["3838"] = "22 33 55",
["3841"] = "22 33 55", ["3842"] = "22 33 55", ["3843"] = "22 33 0", ["3844"] = "22 33 0", ["3845"] = "22 33 0", ["3846"] = "22 33 0", ["3847"] = "22 33 55", ["3848"] = "22 33 55",
["3851"] = "22 33 55", ["3852"] = "22 33 55", ["3853"] = "22 33 0", ["3854"] = "22 33 0", ["3855"] = "22 33 0", ["3856"] = "22 33 0", ["3857"] = "22 33 55", ["3858"] = "22 33 55",
["3861"] = "22 33 55", ["3862"] = "22 33 55", ["3863"] = "22 33 0", ["3864"] = "22 33 0", ["3865"] = "22 33 0", ["3866"] = "22 33 0", ["3867"] = "22 33 55", ["3868"] = "22 33 55",
["3871"] = "22 55 55", ["3872"] = "22 55 55", ["3873"] = "22 55 0", ["3874"] = "22 55 0", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55",
["3881"] = "22 55 55", ["3882"] = "22 55 55", ["3883"] = "22 55 0", ["3884"] = "22 55 0", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55",
},
['cs'] = {
["10"] = "",
["11"] = "53", ["13"] = "44", ["14"] = "213", ["15"] = "35", ["16"] = "13", ["17"] = "55", ["18"] = "23",
["211"] = "55 53", ["212"] = "55 53", ["213"] = "55 21", ["214"] = "55 21", ["215"] = "55 21", ["216"] = "55 21", ["217"] = "55 53", ["218"] = "55 53",
["221"] = "22 22", ["222"] = "22 22", ["223"] = "22 22", ["224"] = "22 22", ["225"] = "22 24", ["226"] = "22 24", ["227"] = "22 44", ["228"] = "22 44",
["231"] = "33 53", ["232"] = "33 53", ["233"] = "35 21", ["234"] = "35 21", ["235"] = "44 44", ["236"] = "44 44", ["237"] = "33 53", ["238"] = "33 53",
["241"] = "22 53", ["242"] = "22 53", ["243"] = "13 21", ["244"] = "13 21", ["245"] = "22 34", ["246"] = "22 34", ["247"] = "22 53", ["248"] = "22 53",
["251"] = "33 53", ["252"] = "33 53", ["253"] = "44 44", ["254"] = "44 44", ["255"] = "55 21", ["256"] = "55 21", ["257"] = "33 53", ["258"] = "33 53",
["261"] = "22 53", ["262"] = "22 53", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "22 34", ["266"] = "22 34", ["267"] = "22 53", ["268"] = "22 53",
["271"] = "33 53", ["272"] = "33 53", ["273"] = "44 44", ["274"] = "44 44", ["275"] = "33 34", ["276"] = "33 34", ["277"] = "33 53", ["278"] = "33 53",
["281"] = "22 34", ["282"] = "22 34", ["283"] = "22 34", ["284"] = "22 34", ["285"] = "22 34", ["286"] = "22 34", ["287"] = "22 34", ["288"] = "22 34",
["311"] = "55 55 53", ["312"] = "55 55 53", ["313"] = "55 55 21", ["314"] = "55 55 21", ["315"] = "55 33 21", ["316"] = "55 33 21", ["317"] = "55 55 53", ["318"] = "55 55 53",
["321"] = "22 22 22", ["322"] = "22 22 22", ["323"] = "22 22 22", ["324"] = "22 22 22", ["325"] = "22 22 22", ["326"] = "22 22 22", ["327"] = "22 22 22", ["328"] = "22 22 22",
["331"] = "33 55 53", ["332"] = "33 55 53", ["333"] = "35 33 21", ["334"] = "44 44 44", ["335"] = "33 55 21", ["336"] = "33 55 21", ["337"] = "33 55 53", ["338"] = "33 55 53",
["341"] = "22 55 53", ["342"] = "22 55 53", ["343"] = "13 22 21", ["344"] = "13 22 21", ["345"] = "22 55 21", ["346"] = "22 55 21", ["347"] = "22 55 53", ["348"] = "22 55 53",
["351"] = "33 55 53", ["352"] = "33 55 53", ["353"] = "35 33 21", ["354"] = "44 44 44", ["355"] = "33 55 21", ["356"] = "33 55 21", ["357"] = "33 55 53", ["358"] = "33 55 53",
["361"] = "22 55 53", ["362"] = "22 55 53", ["363"] = "13 22 21", ["364"] = "13 22 21", ["365"] = "22 55 21", ["366"] = "22 55 21", ["367"] = "22 55 53", ["368"] = "22 55 53",
["371"] = "33 55 53", ["372"] = "33 55 53", ["373"] = "35 33 21", ["374"] = "44 44 44", ["375"] = "33 55 21", ["376"] = "33 55 21", ["377"] = "33 55 53", ["378"] = "33 55 53",
["381"] = "22 22 53", ["382"] = "22 22 53", ["383"] = "22 22 53", ["384"] = "22 22 53", ["385"] = "22 22 34", ["386"] = "22 22 34", ["387"] = "22 22 34", ["388"] = "22 22 34",
},
['sz'] = {
["1-"] = "33", ["2-"] = "33 33", ["3-"] = "33 33 33", ["4-"] = "33 33 33 33",
["10"] = "",
["11"] = "44", ["21"] = "44 0", ["31"] = "44 44 0", ["41"] = "44 44 44 0",
["12"] = "223", ["22"] = "22 33", ["32"] = "22 33 0", ["42"] = "22 33 44 0",
["13"] = "51", ["23"] = "52 11", ["33"] = "52 11 0", ["43"] = "52 11 11 0",
["15"] = "523", ["25"] = "52 33", ["35"] = "52 33 0", ["45"] = "52 33 44 0",
["16"] = "231", ["26"] = "23 11", ["36"] = "23 11 0", ["46"] = "23 11 11 0",
["17"] = "43", ["18"] = "23",
["271"] = "44 23", ["371"] = "44 23 0", ["471"] = "44 23 44 0",
["272"] = "44 23", ["372"] = "44 23 0", ["472"] = "44 23 44 0",
["273"] = "55 51", ["373"] = "55 51 0", ["473"] = "55 51 11 0",
["275"] = "55 523", ["375"] = "55 52 33", ["475"] = "55 52 22 33",
["276"] = "55 523", ["376"] = "55 52 33", ["476"] = "55 52 22 33",
["277"] = "44 44", ["377"] = "44 44 0", ["477"] = "44 44 44 22",
["278"] = "44 44", ["378"] = "44 44 0", ["478"] = "44 44 44 22",
["270"] = "44 0",
["281"] = "22 33", ["381"] = "22 33 0", ["481"] = "22 33 44 0",
["282"] = "22 33", ["382"] = "22 33 0", ["482"] = "22 33 44 0",
["283"] = "22 51", ["383"] = "22 51 0", ["483"] = "22 51 11 0",
["285"] = "22 523", ["385"] = "22 52 33", ["485"] = "22 52 22 33",
["286"] = "22 523", ["386"] = "22 52 33", ["486"] = "22 52 22 33",
["287"] = "33 44", ["387"] = "33 44 0", ["487"] = "33 44 22 0",
["288"] = "33 44", ["388"] = "33 44 0", ["488"] = "33 44 22 0",
["280"] = "33 0",
--RPS
["1s"] = "44", ["2s"] = "223", ["3s"] = "51",
["5s"] = "51", ["6s"] = "231", ["7s"] = "43", ["8s"] = "23",
["multiple"] = "33"
},
['ks'] = {
["10"] = "",
["11"] = "55", ["12"] = "13", ["13"] = "52", ["15"] = "412", ["16"] = "213", ["17"] = "55", ["18"] = "23",
["211"] = "44 41", ["212"] = "44 41", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "44 44", ["218"] = "44 44", --55 31
["221"] = "23 41", ["222"] = "23 41", ["223"] = "23 41", ["224"] = "23 41", ["225"] = "23 41", ["226"] = "23 41", ["227"] = "23 44", ["228"] = "23 44",
["231"] = "52 33", ["232"] = "52 33", ["233"] = "52 33", ["234"] = "52 33", ["235"] = "53 41", ["236"] = "53 41", ["237"] = "52 33", ["238"] = "52 33",
["241"] = "22 44", ["242"] = "31 33", ["243"] = "31 33", ["244"] = "31 31", ["245"] = "31 31", ["246"] = "31 31", ["247"] = "31 31", ["248"] = "31 31",
["251"] = "52 33", ["252"] = "52 33", ["253"] = "22 44", ["254"] = "22 44", ["255"] = "22 44", ["256"] = "22 44", ["257"] = "23 44", ["258"] = "23 44", --22 44
["261"] = "22 44", ["262"] = "22 44", ["263"] = "22 44", ["264"] = "22 44", ["265"] = "22 44", ["266"] = "22 44", ["267"] = "22 44", ["268"] = "22 44",
["271"] = "44 44", ["272"] = "44 44", ["273"] = "55 52", ["274"] = "55 52", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 55", ["278"] = "55 55", --55 33
["281"] = "22 31", ["282"] = "22 31", ["283"] = "22 23", ["284"] = "22 23", ["285"] = "22 31", ["286"] = "22 31", ["287"] = "22 33", ["288"] = "22 33",
},
['yx'] = {
["10"] = "",
["11"] = "55", ["12"] = "224", ["13"] = "52", ["14"] = "33", ["15"] = "412", ["16"] = "21", ["17"] = "55", ["18"] = "33",
},
['cz'] = { --for the underlying sequences that are listed with multiple chains, one is chosen for simplicity. The other sandhi chain can be accessed by having the chain tone be different from the underlying tone
["10"] = "",
["11"] = "55", ["12"] = "13", ["13"] = "45", ["15"] = "523", ["16"] = "24", ["17"] = "55", ["18"] = "23",
["3066"] = "45 55 0",
["211"] = "33 33", ["212"] = "33 33", ["213"] = "33 33", ["215"] = "55 0", ["216"] = "55 0", ["217"] = "55 55", ["218"] = "55 55",
["221"] = "11 33", ["222"] = "11 33", ["223"] = "11 33", ["225"] = "11 33", ["226"] = "11 33", ["227"] = "11 33", ["228"] = "11 33",
["231"] = "45 55", ["232"] = "45 55", ["233"] = "45 55", ["235"] = "45 55", ["236"] = "45 55", ["237"] = "45 55", ["238"] = "45 5",
["251"] = "55 23", ["252"] = "55 23", ["253"] = "55 23", ["255"] = "55 23", ["256"] = "55 23", ["257"] = "55 23", ["258"] = "55 23",
["261"] = "11 24", ["262"] = "11 24", ["263"] = "11 24", ["265"] = "23 11", ["266"] = "23 11", ["267"] = "11 24", ["268"] = "11 24",
["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 55", ["275"] = "55 42", ["276"] = "55 42", ["277"] = "55 55", ["278"] = "55 55", --aspirated tone 7 is considered underlying tone 8 for simplicity
["281"] = "11 13", ["282"] = "11 13", ["283"] = "11 13", ["285"] = "22 42", ["286"] = "22 42", ["287"] = "22 55", ["288"] = "22 55",
["3111"] = "33 33 0", ["3112"] = "33 33 0", ["3113"] = "33 33 0", ["3115"] = "33 33 0", ["3116"] = "33 33 0", ["3117"] = "33 33 0", ["3118"] = "33 33 0",
["3121"] = "33 33 0", ["3122"] = "33 33 0", ["3123"] = "33 33 0", ["3125"] = "33 33 0", ["3126"] = "33 33 0", ["3127"] = "33 33 0", ["3128"] = "33 33 0",
["3131"] = "55 42 0", ["3132"] = "55 42 0", ["3133"] = "55 42 0", ["3135"] = "55 42 0", ["3136"] = "55 42 0", ["3137"] = "55 42 0", ["3138"] = "55 42 0",
["3151"] = "55 42 0", ["3152"] = "55 42 0", ["3153"] = "55 42 0", ["3155"] = "55 42 0", ["3156"] = "55 42 0", ["3157"] = "55 42 0", ["3158"] = "55 42 0",
["3161"] = "55 42 0", ["3162"] = "55 42 0", ["3163"] = "55 42 0", ["3165"] = "55 42 0", ["3166"] = "55 42 0", ["3167"] = "55 42 0", ["3168"] = "55 42 0",
["3171"] = "55 55 0", ["3172"] = "55 55 0", ["3173"] = "55 55 0", ["3175"] = "55 55 0", ["3176"] = "", ["3177"] = "55 55 55", ["3178"] = "55 55 55",
["3181"] = "55 55 0", ["3182"] = "55 55 0", ["3183"] = "55 55 0", ["3185"] = "55 55 0", ["3186"] = "55 55 0", ["3187"] = "55 55 55", ["3188"] = "55 55 55",
["3102"] = "33 33 0",
["3211"] = "11 33 0", ["3212"] = "11 33 0", ["3213"] = "11 33 0", ["3215"] = "11 33 0", ["3216"] = "11 33 0", ["3217"] = "11 33 55", ["3218"] = "11 33 55",
["3221"] = "11 33 0", ["3222"] = "11 33 0", ["3223"] = "11 33 0", ["3225"] = "11 33 0", ["3226"] = "11 33 0", ["3227"] = "11 33 55", ["3228"] = "11 33 55",
["3231"] = "11 33 0", ["3232"] = "11 33 0", ["3233"] = "11 33 0", ["3235"] = "11 33 0", ["3236"] = "11 33 0", ["3237"] = "11 33 55", ["3238"] = "11 33 55",
["3251"] = "11 33 0", ["3252"] = "11 33 0", ["3253"] = "11 33 0", ["3255"] = "11 33 0", ["3256"] = "11 33 0", ["3257"] = "11 33 55", ["3258"] = "11 33 55",
["3261"] = "11 33 0", ["3262"] = "11 33 0", ["3263"] = "11 33 0", ["3265"] = "11 33 0", ["3266"] = "11 33 0", ["3267"] = "11 33 55", ["3268"] = "11 33 55",
["3271"] = "11 33 0", ["3272"] = "11 33 0", ["3273"] = "11 33 0", ["3275"] = "11 33 0", ["3276"] = "11 33 0", ["3277"] = "11 33 55", ["3278"] = "11 33 55",
["3281"] = "11 33 0", ["3282"] = "11 33 0", ["3283"] = "11 33 0", ["3285"] = "11 33 0", ["3286"] = "11 33 0", ["3287"] = "11 33 55", ["3288"] = "11 33 55",
["3202"] = "11 33 0",
["3311"] = "45 55 0", ["3312"] = "45 55 0", ["3313"] = "45 55 0", ["3315"] = "45 55 0", ["3316"] = "45 55 0", ["3317"] = "45 55 55", ["3318"] = "45 55 55",
["3321"] = "45 55 0", ["3322"] = "45 55 0", ["3323"] = "45 55 0", ["3325"] = "45 55 0", ["3326"] = "45 55 0", ["3327"] = "45 55 55", ["3328"] = "45 55 55",
["3331"] = "45 55 0", ["3332"] = "45 55 0", ["3333"] = "45 55 0", ["3335"] = "45 55 0", ["3336"] = "45 55 0", ["3337"] = "", ["3338"] = "45 55 55",
["3351"] = "45 55 0", ["3352"] = "45 55 0", ["3353"] = "45 55 0", ["3355"] = "45 55 0", ["3356"] = "45 55 0", ["3357"] = "45 55 55", ["3358"] = "45 55 55",
["3361"] = "45 55 0", ["3362"] = "45 55 0", ["3363"] = "45 55 0", ["3365"] = "45 55 0", ["3366"] = "45 55 0", ["3367"] = "45 55 55", ["3368"] = "",
["3371"] = "45 55 0", ["3372"] = "45 55 0", ["3373"] = "45 55 0", ["3375"] = "45 55 0", ["3376"] = "45 55 0", ["3377"] = "45 55 55", ["3378"] = "45 55 55",
["3381"] = "45 55 0", ["3382"] = "45 55 0", ["3383"] = "45 55 0", ["3385"] = "45 55 0", ["3386"] = "45 55 0", ["3387"] = "45 55 0", ["3388"] = "45 55 55",
["3330"] = "45 55 0", ["3303"] = "45 55 0", ["3305"] = "45 55 0",
["3511"] = "52 22 33", ["3512"] = "52 22 33", ["3513"] = "52 22 33", ["3515"] = "52 22 33", ["3516"] = "52 22 33", ["3517"] = "52 22 33", ["3518"] = "52 22 33",
["3521"] = "52 22 33", ["3522"] = "52 22 33", ["3523"] = "52 22 33", ["3525"] = "52 22 33", ["3526"] = "52 22 33", ["3527"] = "52 22 33", ["3528"] = "52 22 33",
["3531"] = "52 22 33", ["3532"] = "52 22 33", ["3533"] = "52 22 33", ["3535"] = "52 22 33", ["3536"] = "52 22 33", ["3537"] = "52 22 33", ["3538"] = "52 22 33",
["3551"] = "52 22 33", ["3552"] = "52 22 33", ["3553"] = "52 22 33", ["3555"] = "52 22 33", ["3556"] = "52 22 33", ["3557"] = "52 22 33", ["3558"] = "45 55 55",
["3561"] = "", ["3562"] = "52 22 33", ["3563"] = "", ["3565"] = "45 55 0", ["3566"] = "52 22 33", ["3567"] = "", ["3568"] = "45 55 55",
["3571"] = "52 22 33", ["3572"] = "52 22 33", ["3573"] = "52 22 33", ["3575"] = "52 22 33", ["3576"] = "", ["3577"] = "52 22 33", ["3578"] = "52 22 33",
["3581"] = "52 22 33", ["3582"] = "52 22 33", ["3583"] = "52 22 33", ["3585"] = "", ["3586"] = "52 22 33", ["3587"] = "52 22 33", ["3588"] = "52 22 33",
["3500"] = "52 22 33", ["3507"] = "52 22 33",
["3611"] = "11 11 24", ["3612"] = "11 11 24", ["3613"] = "11 11 24", ["3615"] = "11 11 24", ["3616"] = "11 11 24", ["3617"] = "11 11 24", ["3618"] = "11 11 24",
["3621"] = "11 11 24", ["3622"] = "11 11 24", ["3623"] = "11 11 24", ["3625"] = "11 11 24", ["3626"] = "11 11 24", ["3627"] = "11 11 24", ["3628"] = "11 11 24",
["3631"] = "11 11 24", ["3632"] = "11 11 24", ["3633"] = "11 11 24", ["3635"] = "11 11 24", ["3636"] = "11 11 24", ["3637"] = "11 11 24", ["3638"] = "11 11 24",
["3651"] = "11 11 24", ["3652"] = "11 11 24", ["3653"] = "11 11 24", ["3655"] = "23 11 0", ["3656"] = "23 11 0", ["3657"] = "23 11 0", ["3658"] = "23 11 0",
["3661"] = "23 11 0", ["3662"] = "11 11 24", ["3663"] = "23 11 0", ["3665"] = "23 11 0", ["3666"] = "23 11 0", ["3667"] = "23 11 0", ["3668"] = "23 11 0",
["3671"] = "11 11 24", ["3672"] = "11 11 24", ["3673"] = "11 11 24", ["3675"] = "11 11 24", ["3676"] = "11 11 24", ["3677"] = "11 11 24", ["3678"] = "11 11 24",
["3681"] = "11 11 24", ["3682"] = "11 11 24", ["3683"] = "11 11 24", ["3685"] = "11 11 24", ["3686"] = "11 11 24", ["3687"] = "11 11 24", ["3688"] = "11 11 24",
["3600"] = "11 11 24",
["3711"] = "55 55 0", ["3712"] = "55 55 0", ["3713"] = "55 55 0", ["3715"] = "55 55 0", ["3716"] = "55 55 0", ["3717"] = "11 11 13", ["3718"] = "11 11 13",
["3721"] = "11 11 13", ["3722"] = "11 11 13", ["3723"] = "11 11 13", ["3725"] = "55 42 0", ["3726"] = "55 55 0", ["3727"] = "55 55 55", ["3728"] = "55 55 55",
["3731"] = "55 55 0", ["3732"] = "55 55 0", ["3733"] = "11 11 13", ["3735"] = "55 55 0", ["3736"] = "55 55 0", ["3737"] = "55 55 55", ["3738"] = "55 55 55",
["3751"] = "55 42 0", ["3752"] = "55 42 0", ["3753"] = "55 42 0", ["3755"] = "55 42 0", ["3756"] = "", ["3757"] = "55 42 0", ["3758"] = "",
["3761"] = "55 42 0", ["3762"] = "55 42 0", ["3763"] = "55 42 0", ["3765"] = "55 42 0", ["3766"] = "55 42 0", ["3767"] = "55 42 0", ["3768"] = "55 42 0",
["3771"] = "55 55 0", ["3772"] = "55 55 0", ["3773"] = "55 55 0", ["3775"] = "55 55 0", ["3776"] = "55 55 0", ["3777"] = "55 55 55", ["3778"] = "55 55 55",
["3781"] = "", ["3782"] = "55 55 0", ["3783"] = "55 55 0", ["3785"] = "55 55 0", ["3786"] = "55 55 0", ["3787"] = "55 55 55", ["3788"] = "55 55 55",
["3770"] = "55 55 0", ["3780"] = "55 55 0", ["3707"] = "55 55 55",
["3811"] = "11 11 13", ["3812"] = "11 11 13", ["3813"] = "11 11 13", ["3815"] = "11 11 13", ["3816"] = "11 11 13", ["3817"] = "11 11 13", ["3818"] = "",
["3821"] = "11 11 13", ["3822"] = "11 11 13", ["3823"] = "11 11 13", ["3825"] = "11 11 13", ["3826"] = "11 11 13", ["3827"] = "11 11 13", ["3828"] = "11 11 13",
["3831"] = "11 11 13", ["3832"] = "11 11 13", ["3833"] = "11 11 13", ["3835"] = "11 11 13", ["3836"] = "11 11 13", ["3837"] = "11 11 13", ["3838"] = "11 11 13",
["3851"] = "22 42 0", ["3852"] = "22 42 0", ["3853"] = "22 42 0", ["3855"] = "22 42 0", ["3856"] = "22 42 0", ["3857"] = "22 42 0", ["3858"] = "",
["3861"] = "22 42 0", ["3862"] = "22 42 0", ["3863"] = "", ["3865"] = "22 42 0", ["3866"] = "22 42 0", ["3867"] = "22 42 0", ["3868"] = "22 42 0",
["3871"] = "11 11 13", ["3872"] = "11 11 13", ["3873"] = "11 11 13", ["3875"] = "22 55 0", ["3876"] = "22 55 0", ["3877"] = "22 55 55", ["3878"] = "22 55 55",
["3881"] = "11 11 13", ["3882"] = "11 11 13", ["3883"] = "11 11 13", ["3885"] = "22 55 0", ["3886"] = "22 55 0", ["3887"] = "22 55 55", ["3888"] = "22 55 55",
["3850"] = "22 42 0", ["3802"] = "22 42 0",
--RPS
["1s"] = "", ["2s"] = "", ["3s"] = "",
["5s"] = "", ["6s"] = "", ["7s"] = "", ["8s"] = "",
["multiple"] = "33"
},
['jj'] = {
["10"] = "",
["11"] = "44", ["12"] = "213", ["13"] = "35", ["15"] = "52", ["16"] = "31", ["17"] = "55", ["18"] = "23",
["211"] = "44 31", ["212"] = "44 31", ["213"] = "44 31", ["215"] = "44 31", ["216"] = "44 31", ["217"] = "44 31", ["218"] = "44 31",
["221"] = "23 21", ["222"] = "23 21", ["223"] = "23 21", ["225"] = "23 21", ["226"] = "23 21", ["227"] = "23 22", ["228"] = "23 22",
["231"] = "35 33", ["232"] = "35 33", ["233"] = "35 33", ["235"] = "35 33", ["236"] = "35 33", ["237"] = "35 33", ["238"] = "35 33",
["251"] = "52 21", ["252"] = "52 21", ["253"] = "52 21", ["255"] = "52 21", ["256"] = "52 21", ["257"] = "31 22", ["258"] = "31 22",
["261"] = "31 21", ["262"] = "31 21", ["263"] = "31 21", ["265"] = "31 21", ["266"] = "31 21", ["267"] = "31 22", ["268"] = "31 22",
["271"] = "55 31", ["272"] = "55 31", ["273"] = "55 31", ["275"] = "55 31", ["276"] = "55 31", ["277"] = "55 33", ["278"] = "55 33",
["281"] = "23 31", ["282"] = "23 31", ["283"] = "23 31", ["285"] = "23 31", ["286"] = "23 31", ["287"] = "23 33", ["288"] = "23 22",
},
['jx'] = {
["10"] = "",
["11"] = "53", ["12"] = "31", ["13A"] = "433", ["13B"] = "435", ["14"] = "213", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22",
["211"] = "44 53", ["212"] = "44 31", ["213"] = "44 21", ["214"] = "44 21", ["215"] = "44 21", ["216"] = "44 21", ["217"] = "44 55", ["218"] = "44 55",
["221"] = "22 44", ["222"] = "22 22", ["223"] = "13 53", ["224"] = "13 31", ["225"] = "13 53", ["226"] = "13 31", ["227"] = "31 55", ["228"] = "31 55",
["23A1"] = "44 53", ["23A2"] = "44 31", ["23A3"] = "44 21", ["23A4"] = "44 21", ["23A5"] = "44 21", ["23A6"] = "44 21", ["23A7"] = "44 55", ["23A8"] = "44 55",
["23B1"] = "13 53", ["23B2"] = "13 31", ["23B3"] = "22 13", ["23B4"] = "22 13", ["23B5"] = "22 13", ["23B6"] = "22 13", ["23B7"] = "13 55", ["23B8"] = "13 55",
["241"] = "22 13", ["242"] = "22 31", ["243"] = "22 13", ["244"] = "22 13", ["245"] = "22 13", ["246"] = "22 13", ["247"] = "22 55", ["248"] = "22 55",
["251"] = "44 53", ["252"] = "44 31", ["253"] = "44 21", ["254"] = "44 21", ["255"] = "44 21", ["256"] = "44 21", ["257"] = "44 55", ["258"] = "44 55",
["261"] = "22 53", ["262"] = "22 13", ["263"] = "13 21", ["264"] = "13 21", ["265"] = "13 21", ["266"] = "13 21", ["267"] = "22 55", ["268"] = "22 55",
["271"] = "55 44", ["272"] = "55 44", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "22 44", ["282"] = "22 13", ["283"] = "22 13", ["284"] = "22 13", ["285"] = "22 13", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 55",
["3111"] = "44 44 31", ["3112"] = "44 44 31", ["3113"] = "44 44 31", ["3114"] = "44 44 31", ["3115"] = "44 44 31", ["3116"] = "44 44 31", ["3117"] = "44 44 31", ["3118"] = "44 44 31",
["3121"] = "44 44 31", ["3122"] = "44 44 31", ["3123"] = "44 44 31", ["3124"] = "44 44 31", ["3125"] = "44 44 31", ["3126"] = "44 44 31", ["3127"] = "44 44 31", ["3128"] = "44 44 31",
["3131"] = "55 33 21", ["3132"] = "55 33 21", ["3133"] = "55 33 21", ["3134"] = "55 33 21", ["3135"] = "55 33 21", ["3136"] = "55 33 21", ["3137"] = "55 33 21", ["3138"] = "55 33 21",
["3141"] = "55 33 21", ["3142"] = "55 33 21", ["3143"] = "55 33 21", ["3144"] = "55 33 21", ["3145"] = "55 33 21", ["3146"] = "55 33 21", ["3147"] = "55 33 21", ["3148"] = "55 33 21",
["3151"] = "55 33 21", ["3152"] = "55 33 21", ["3153"] = "55 33 21", ["3154"] = "55 33 21", ["3155"] = "55 33 21", ["3156"] = "55 33 21", ["3157"] = "55 33 21", ["3158"] = "55 33 21",
["3161"] = "55 33 21", ["3162"] = "55 33 21", ["3163"] = "55 33 21", ["3164"] = "55 33 21", ["3165"] = "55 33 21", ["3166"] = "55 33 21", ["3167"] = "55 33 21", ["3168"] = "55 33 21",
["3171"] = "44 44 31", ["3172"] = "44 44 31", ["3173"] = "44 44 31", ["3174"] = "44 44 31", ["3175"] = "44 44 31", ["3176"] = "44 44 31", ["3177"] = "44 44 31", ["3178"] = "44 44 31",
["3181"] = "44 44 31", ["3182"] = "44 44 31", ["3183"] = "44 44 31", ["3184"] = "44 44 31", ["3185"] = "44 44 31", ["3186"] = "44 44 31", ["3187"] = "44 44 31", ["3188"] = "44 44 31",
["3211"] = "22 44 51", ["3212"] = "22 44 51", ["3213"] = "22 44 51", ["3214"] = "22 44 51", ["3215"] = "22 44 51", ["3216"] = "22 44 51", ["3217"] = "22 44 55", ["3218"] = "22 44 55",
["3221"] = "22 44 51", ["3222"] = "22 44 51", ["3223"] = "22 44 51", ["3224"] = "22 44 51", ["3225"] = "22 44 51", ["3226"] = "22 44 51", ["3227"] = "22 44 55", ["3228"] = "22 44 55",
["3231"] = "24 44 31", ["3232"] = "24 44 31", ["3233"] = "24 44 31", ["3234"] = "24 44 31", ["3235"] = "24 44 31", ["3236"] = "24 44 31", ["3237"] = "24 44 31", ["3238"] = "24 44 31",
["3241"] = "24 44 31", ["3242"] = "24 44 31", ["3243"] = "24 44 31", ["3244"] = "24 44 31", ["3245"] = "24 44 31", ["3246"] = "24 44 31", ["3247"] = "24 44 31", ["3248"] = "24 44 31",
["3251"] = "24 44 31", ["3252"] = "24 44 31", ["3253"] = "24 44 31", ["3254"] = "24 44 31", ["3255"] = "24 44 31", ["3256"] = "24 44 31", ["3257"] = "24 44 31", ["3258"] = "24 44 31",
["3261"] = "24 44 31", ["3262"] = "24 44 31", ["3263"] = "24 44 31", ["3264"] = "24 44 31", ["3265"] = "24 44 31", ["3266"] = "24 44 31", ["3267"] = "24 44 31", ["3268"] = "24 44 31",
["3271"] = "22 44 51", ["3272"] = "22 44 51", ["3273"] = "22 55 31", ["3274"] = "22 55 31", ["3275"] = "22 55 31", ["3276"] = "22 55 31", ["3277"] = "22 44 55", ["3278"] = "22 44 55",
["3281"] = "22 44 51", ["3282"] = "22 44 51", ["3283"] = "22 55 31", ["3284"] = "22 55 31", ["3285"] = "22 55 31", ["3286"] = "22 55 31", ["3287"] = "22 44 55", ["3288"] = "22 44 55",
["33A11"] = "44 33 51", ["33A12"] = "44 33 51", ["33A13"] = "44 44 31", ["33A14"] = "44 44 31", ["33A15"] = "44 44 31", ["33A16"] = "44 44 31", ["33A17"] = "44 33 55", ["33A18"] = "44 33 55",
["33A21"] = "44 33 51", ["33A22"] = "44 33 51", ["33A23"] = "44 44 31", ["33A24"] = "44 44 31", ["33A25"] = "44 44 31", ["33A26"] = "44 44 31", ["33A27"] = "44 33 55", ["33A28"] = "44 33 55",
["33A31"] = "44 33 51", ["33A32"] = "44 33 51", ["33A33"] = "44 44 31", ["33A34"] = "44 44 31", ["33A35"] = "44 44 31", ["33A36"] = "44 33 51", ["33A37"] = "44 33 55", ["33A38"] = "44 33 55",
["33A41"] = "44 33 51", ["33A42"] = "44 33 51", ["33A43"] = "44 44 31", ["33A44"] = "44 44 31", ["33A45"] = "44 44 31", ["33A46"] = "44 33 51", ["33A47"] = "44 33 55", ["33A48"] = "44 33 55",
["33A51"] = "44 33 51", ["33A52"] = "44 33 51", ["33A53"] = "44 44 31", ["33A54"] = "44 44 31", ["33A55"] = "44 33 51", ["33A56"] = "44 33 51", ["33A57"] = "44 33 55", ["33A58"] = "44 33 55",
["33A61"] = "44 33 51", ["33A62"] = "44 33 51", ["33A63"] = "44 33 51", ["33A64"] = "44 33 51", ["33A65"] = "44 44 31", ["33A66"] = "44 44 31", ["33A67"] = "44 33 55", ["33A68"] = "44 33 55",
["33A71"] = "44 33 51", ["33A72"] = "44 33 51", ["33A73"] = "44 44 31", ["33A74"] = "44 44 31", ["33A75"] = "44 44 31", ["33A76"] = "44 44 31", ["33A77"] = "44 33 55", ["33A78"] = "44 33 55",
["33A81"] = "44 33 51", ["33A82"] = "44 33 51", ["33A83"] = "44 44 31", ["33A84"] = "44 44 31", ["33A85"] = "44 44 31", ["33A86"] = "44 44 31", ["33A87"] = "44 33 55", ["33A88"] = "44 33 55",
["33B11"] = "22 22 51", ["33B12"] = "22 22 51", ["33B13"] = "22 44 31", ["33B14"] = "22 44 31", ["33B15"] = "22 44 31", ["33B16"] = "22 44 31", ["33B17"] = "44 33 55", ["33B18"] = "44 33 55",
["33B21"] = "22 22 51", ["33B22"] = "22 22 51", ["33B23"] = "22 44 31", ["33B24"] = "22 44 31", ["33B25"] = "22 44 31", ["33B26"] = "22 44 31", ["33B27"] = "44 33 55", ["33B28"] = "44 33 55",
["33B31"] = "22 22 51", ["33B32"] = "22 22 51", ["33B33"] = "22 22 51", ["33B34"] = "22 22 51", ["33B35"] = "22 22 51", ["33B36"] = "22 22 51", ["33B37"] = "22 22 55", ["33B38"] = "22 22 55",
["33B41"] = "22 22 51", ["33B42"] = "22 22 51", ["33B43"] = "22 22 51", ["33B44"] = "22 22 51", ["33B45"] = "22 22 51", ["33B46"] = "22 22 51", ["33B47"] = "22 22 55", ["33B48"] = "22 22 55",
["33B51"] = "22 22 51", ["33B52"] = "22 22 51", ["33B53"] = "22 44 31", ["33B54"] = "22 44 31", ["33B55"] = "22 44 31", ["33B56"] = "22 44 31", ["33B57"] = "22 22 55", ["33B58"] = "22 22 55",
["33B61"] = "22 22 51", ["33B62"] = "22 22 51", ["33B63"] = "22 44 31", ["33B64"] = "22 44 31", ["33B65"] = "22 44 31", ["33B66"] = "22 44 31", ["33B67"] = "22 22 55", ["33B68"] = "22 22 55",
["33B71"] = "22 22 51", ["33B72"] = "22 22 51", ["33B73"] = "22 44 31", ["33B74"] = "22 44 31", ["33B75"] = "22 44 31", ["33B76"] = "22 44 31", ["33B77"] = "22 22 55", ["33B78"] = "22 22 55",
["33B81"] = "22 22 51", ["33B82"] = "22 22 51", ["33B83"] = "22 44 31", ["33B84"] = "22 44 31", ["33B85"] = "22 44 31", ["33B86"] = "22 44 31", ["33B87"] = "22 22 55", ["33B88"] = "22 22 55",
["3411"] = "22 22 55", ["3412"] = "22 22 55", ["3413"] = "22 55 31", ["3414"] = "22 55 31", ["3415"] = "22 55 31", ["3416"] = "22 55 31", ["3417"] = "22 22 55", ["3418"] = "22 22 55",
["3421"] = "22 22 55", ["3422"] = "22 22 55", ["3423"] = "22 55 31", ["3424"] = "22 55 31", ["3425"] = "22 55 31", ["3426"] = "22 55 31", ["3427"] = "22 22 55", ["3428"] = "22 22 55",
["3431"] = "22 22 55", ["3432"] = "22 22 55", ["3433"] = "22 22 55", ["3434"] = "22 22 55", ["3435"] = "22 22 55", ["3436"] = "22 22 55", ["3437"] = "22 22 55", ["3438"] = "22 22 55",
["3441"] = "22 55 51", ["3442"] = "22 55 51", ["3443"] = "22 22 55", ["3444"] = "22 22 55", ["3445"] = "22 22 55", ["3446"] = "22 22 55", ["3447"] = "22 22 55", ["3448"] = "22 22 55",
["3451"] = "22 55 51", ["3452"] = "22 55 51", ["3453"] = "22 22 55", ["3454"] = "22 22 55", ["3455"] = "22 22 55", ["3456"] = "22 22 55", ["3457"] = "22 22 55", ["3458"] = "22 22 55",
["3461"] = "22 55 51", ["3462"] = "22 55 51", ["3463"] = "22 22 55", ["3464"] = "22 22 55", ["3465"] = "22 22 55", ["3466"] = "22 22 55", ["3467"] = "22 22 55", ["3468"] = "22 22 55",
["3471"] = "22 22 55", ["3472"] = "22 22 55", ["3473"] = "22 55 31", ["3474"] = "22 55 31", ["3475"] = "22 55 31", ["3476"] = "22 55 31", ["3477"] = "22 22 55", ["3478"] = "22 22 55",
["3481"] = "22 22 55", ["3482"] = "22 22 55", ["3483"] = "22 55 31", ["3484"] = "22 55 31", ["3485"] = "22 55 31", ["3486"] = "22 55 31", ["3487"] = "22 22 55", ["3488"] = "22 22 55",
["3401"] = "44 44 31", ["3402"] = "44 44 31", ["3403"] = "44 44 31", ["3404"] = "44 44 31", ["3405"] = "44 44 31", ["3406"] = "44 44 31", ["3407"] = "44 44 31", ["3408"] = "44 44 31",
["3511"] = "33 44 51", ["3512"] = "33 44 51", ["3513"] = "33 55 31", ["3514"] = "33 55 31", ["3515"] = "33 55 31", ["3516"] = "33 55 31", ["3517"] = "33 44 55", ["3518"] = "33 44 55",
["3521"] = "33 44 51", ["3522"] = "33 44 51", ["3523"] = "33 55 31", ["3524"] = "33 55 31", ["3525"] = "33 55 31", ["3526"] = "33 55 31", ["3527"] = "33 44 55", ["3528"] = "33 44 55",
["3531"] = "35 33 31", ["3532"] = "35 33 31", ["3533"] = "35 33 31", ["3534"] = "35 33 31", ["3535"] = "35 33 31", ["3536"] = "35 33 31", ["3537"] = "35 33 31", ["3538"] = "35 33 31",
["3541"] = "35 33 31", ["3542"] = "35 33 31", ["3543"] = "33 44 51", ["3544"] = "33 44 51", ["3545"] = "33 44 51", ["3546"] = "33 44 51", ["3547"] = "35 33 31", ["3548"] = "35 33 31",
["3551"] = "35 33 31", ["3552"] = "35 33 31", ["3553"] = "35 33 31", ["3554"] = "35 33 31", ["3555"] = "35 33 31", ["3556"] = "35 33 31", ["3557"] = "35 33 31", ["3558"] = "35 33 31",
["3561"] = "35 33 31", ["3562"] = "35 33 31", ["3563"] = "35 33 31", ["3564"] = "35 33 31", ["3565"] = "35 33 31", ["3566"] = "35 33 31", ["3567"] = "33 55 31", ["3568"] = "33 55 31",
["3571"] = "33 44 51", ["3572"] = "33 44 51", ["3573"] = "33 55 31", ["3574"] = "33 55 31", ["3575"] = "33 55 31", ["3576"] = "33 55 31", ["3577"] = "33 44 55", ["3578"] = "33 44 55",
["3581"] = "33 44 51", ["3582"] = "33 44 51", ["3583"] = "33 55 31", ["3584"] = "33 55 31", ["3585"] = "33 55 31", ["3586"] = "33 55 31", ["3587"] = "33 44 55", ["3588"] = "33 44 55",
["3611"] = "22 44 51", ["3612"] = "22 44 51", ["3613"] = "22 55 31", ["3614"] = "22 55 31", ["3615"] = "22 55 31", ["3616"] = "22 55 31", ["3617"] = "22 44 55", ["3618"] = "22 44 55",
["3621"] = "22 44 51", ["3622"] = "22 33 44", ["3623"] = "22 55 31", ["3624"] = "22 55 31", ["3625"] = "22 55 31", ["3626"] = "22 55 31", ["3627"] = "22 44 55", ["3628"] = "22 44 55",
["3631"] = "22 44 51", ["3632"] = "24 33 31", ["3633"] = "24 33 31", ["3634"] = "24 33 31", ["3635"] = "22 22 24", ["3636"] = "24 33 31", ["3637"] = "24 33 31", ["3638"] = "24 33 31",
["3641"] = "22 55 31", ["3642"] = "22 55 31", ["3643"] = "24 33 31", ["3644"] = "24 33 31", ["3645"] = "24 33 31", ["3646"] = "24 33 31", ["3647"] = "24 33 31", ["3648"] = "24 33 31",
["3651"] = "22 22 44", ["3652"] = "24 33 31", ["3653"] = "24 33 31", ["3654"] = "24 33 31", ["3655"] = "24 33 31", ["3656"] = "24 33 31", ["3657"] = "24 33 31", ["3658"] = "24 33 31",
["3661"] = "22 55 31", ["3662"] = "22 55 31", ["3663"] = "24 33 31", ["3664"] = "24 33 31", ["3665"] = "24 33 31", ["3666"] = "24 33 31", ["3667"] = "22 55 31", ["3668"] = "22 55 31",
["3671"] = "22 44 51", ["3672"] = "22 44 51", ["3673"] = "22 55 31", ["3674"] = "22 55 31", ["3675"] = "22 55 31", ["3676"] = "22 55 31", ["3677"] = "22 44 55", ["3678"] = "22 44 55",
["3681"] = "22 44 51", ["3682"] = "22 44 51", ["3683"] = "22 55 31", ["3684"] = "22 55 31", ["3685"] = "22 55 31", ["3686"] = "22 55 31", ["3687"] = "22 44 55", ["3688"] = "22 44 55",
["3601"] = "33 44 51", ["3602"] = "33 44 51", ["3603"] = "33 55 31", ["3604"] = "33 55 31", ["3605"] = "35 33 31", ["3606"] = "35 33 31", ["3607"] = "33 44 55", ["3608"] = "33 44 55",
["3711"] = "33 44 51", ["3712"] = "33 44 51", ["3713"] = "33 44 51", ["3714"] = "33 44 51", ["3715"] = "33 44 51", ["3716"] = "33 44 51", ["3717"] = "33 44 55", ["3718"] = "33 44 55",
["3721"] = "33 44 51", ["3722"] = "33 44 51", ["3723"] = "33 44 51", ["3724"] = "33 44 51", ["3725"] = "33 44 51", ["3726"] = "33 44 51", ["3727"] = "33 44 55", ["3728"] = "33 44 55",
["3731"] = "53 33 31", ["3732"] = "53 33 31", ["3733"] = "53 33 31", ["3734"] = "53 33 31", ["3735"] = "53 33 31", ["3736"] = "53 33 31", ["3737"] = "53 33 31", ["3738"] = "53 33 31",
["3741"] = "53 33 31", ["3742"] = "53 33 31", ["3743"] = "53 33 31", ["3744"] = "53 33 31", ["3745"] = "53 33 31", ["3746"] = "53 33 31", ["3747"] = "53 33 31", ["3748"] = "53 33 31",
["3751"] = "53 33 31", ["3752"] = "53 33 31", ["3753"] = "53 33 31", ["3754"] = "53 33 31", ["3755"] = "53 33 31", ["3756"] = "53 33 31", ["3757"] = "53 33 31", ["3758"] = "53 33 31",
["3761"] = "53 33 31", ["3762"] = "53 33 31", ["3763"] = "53 33 31", ["3764"] = "53 33 31", ["3765"] = "53 33 31", ["3766"] = "53 33 31", ["3767"] = "53 33 31", ["3768"] = "53 33 31",
["3771"] = "33 44 51", ["3772"] = "33 44 51", ["3773"] = "33 44 51", ["3774"] = "33 44 51", ["3775"] = "33 44 51", ["3776"] = "33 44 51", ["3777"] = "33 44 55", ["3778"] = "33 44 55",
["3781"] = "33 44 51", ["3782"] = "33 44 51", ["3783"] = "33 44 51", ["3784"] = "33 44 51", ["3785"] = "33 44 51", ["3786"] = "33 44 51", ["3787"] = "33 44 55", ["3788"] = "33 44 55",
["3811"] = "22 44 51", ["3812"] = "22 44 51", ["3813"] = "22 44 51", ["3814"] = "22 44 51", ["3815"] = "22 44 51", ["3816"] = "22 44 51", ["3817"] = "22 44 55", ["3818"] = "22 44 55",
["3821"] = "22 44 51", ["3822"] = "22 44 51", ["3823"] = "22 44 51", ["3824"] = "22 44 51", ["3825"] = "22 44 51", ["3826"] = "22 44 51", ["3827"] = "22 44 55", ["3828"] = "22 44 55",
["3831"] = "11 22 44", ["3832"] = "11 22 44", ["3833"] = "11 22 44", ["3834"] = "11 22 44", ["3835"] = "11 22 44", ["3836"] = "11 22 44", ["3837"] = "11 22 44", ["3838"] = "11 22 44",
["3841"] = "11 22 44", ["3842"] = "11 22 44", ["3843"] = "11 22 44", ["3844"] = "11 22 44", ["3845"] = "11 22 44", ["3846"] = "11 22 44", ["3847"] = "11 22 44", ["3848"] = "11 22 44",
["3851"] = "11 22 44", ["3852"] = "11 22 44", ["3853"] = "11 22 44", ["3854"] = "11 22 44", ["3855"] = "11 22 44", ["3856"] = "11 22 44", ["3857"] = "11 22 44", ["3858"] = "11 22 44",
["3861"] = "11 22 44", ["3862"] = "11 22 44", ["3863"] = "11 22 44", ["3864"] = "11 22 44", ["3865"] = "11 22 44", ["3866"] = "11 22 44", ["3867"] = "11 22 44", ["3868"] = "11 22 44",
["3871"] = "22 44 51", ["3872"] = "22 44 51", ["3873"] = "22 44 51", ["3874"] = "22 44 51", ["3875"] = "22 44 51", ["3876"] = "22 44 51", ["3877"] = "22 44 55", ["3878"] = "22 44 55",
["3881"] = "22 44 51", ["3882"] = "22 44 51", ["3883"] = "22 44 51", ["3884"] = "22 44 51", ["3885"] = "22 44 51", ["3886"] = "22 44 51", ["3887"] = "22 44 55", ["3888"] = "22 44 55",
},
['tx'] = {
["10"] = "",
["11"] = "44", ["12"] = "22", ["13"] = "53", ["14"] = "42", ["15"] = "334", ["16"] = "113", ["17"] = "55", ["18"] = "22",
["211"] = "44 44", ["212"] = "44 22", ["213"] = "44 44", ["214"] = "44 22", ["215"] = "44 44", ["216"] = "44 22", ["217"] = "44 55", ["218"] = "44 22",
["221"] = "22 44", ["222"] = "22 22", ["223"] = "22 44", ["224"] = "22 22", ["225"] = "22 44", ["226"] = "22 22", ["227"] = "22 55", ["228"] = "22 22",
["231"] = "53 53", ["232"] = "53 42", ["233"] = "53 53", ["234"] = "53 42", ["235"] = "53 53", ["236"] = "53 42", ["237"] = "53 55", ["238"] = "53 22",
["241"] = "42 53", ["242"] = "42 42", ["243"] = "42 53", ["244"] = "42 42", ["245"] = "42 53", ["246"] = "42 42", ["247"] = "42 55", ["248"] = "42 22",
["251"] = "334 334", ["252"] = "334 113", ["253"] = "334 53", ["254"] = "334 42", ["255"] = "334 334", ["256"] = "334 113", ["257"] = "334 55", ["258"] = "334 22",
["261"] = "113 334", ["262"] = "113 113", ["263"] = "113 53", ["264"] = "113 42", ["265"] = "113 334", ["266"] = "113 113", ["267"] = "113 55", ["268"] = "113 22",
["271"] = "55 44", ["272"] = "55 22", ["273"] = "55 53", ["274"] = "55 42", ["275"] = "55 334", ["276"] = "55 113", ["277"] = "55 55", ["278"] = "55 22",
["281"] = "22 44", ["282"] = "22 22", ["283"] = "22 53", ["284"] = "22 42", ["285"] = "22 334", ["286"] = "22 113", ["287"] = "22 55", ["288"] = "22 22",
["3111"] = "44 44 44", ["3112"] = "44 44 22", ["3113"] = "44 44 44", ["3114"] = "44 44 22", ["3115"] = "44 44 44", ["3116"] = "44 44 22", ["3117"] = "44 44 55", ["3118"] = "44 44 22",
["3121"] = "44 22 44", ["3122"] = "44 22 22", ["3123"] = "44 22 44", ["3124"] = "44 22 22", ["3125"] = "44 22 44", ["3126"] = "44 22 22", ["3127"] = "44 22 55", ["3128"] = "44 22 22",
["3131"] = "44 44 44", ["3132"] = "44 44 22", ["3133"] = "44 44 44", ["3134"] = "44 44 22", ["3135"] = "44 44 44", ["3136"] = "44 44 22", ["3137"] = "44 44 55", ["3138"] = "44 44 22",
["3141"] = "44 22 44", ["3142"] = "44 22 22", ["3143"] = "44 22 44", ["3144"] = "44 22 22", ["3145"] = "44 22 44", ["3146"] = "44 22 22", ["3147"] = "44 22 55", ["3148"] = "44 22 22",
["3151"] = "44 44 44", ["3152"] = "44 44 22", ["3153"] = "44 44 44", ["3154"] = "44 44 22", ["3155"] = "44 44 44", ["3156"] = "44 44 22", ["3157"] = "44 44 55", ["3158"] = "44 44 22",
["3161"] = "44 22 44", ["3162"] = "44 22 22", ["3163"] = "44 22 44", ["3164"] = "44 22 22", ["3165"] = "44 22 44", ["3166"] = "44 22 22", ["3167"] = "44 22 55", ["3168"] = "44 22 22",
["3171"] = "44 55 44", ["3172"] = "44 55 22", ["3173"] = "44 55 44", ["3174"] = "44 55 22", ["3175"] = "44 55 44", ["3176"] = "44 55 22", ["3177"] = "44 55 55", ["3178"] = "44 55 22",
["3181"] = "44 22 44", ["3182"] = "44 22 22", ["3183"] = "44 22 44", ["3184"] = "44 22 22", ["3185"] = "44 22 44", ["3186"] = "44 22 22", ["3187"] = "44 22 55", ["3188"] = "44 22 22",
["3211"] = "22 44 44", ["3212"] = "22 44 22", ["3213"] = "22 44 44", ["3214"] = "22 44 22", ["3215"] = "22 44 44", ["3216"] = "22 44 22", ["3217"] = "22 44 55", ["3218"] = "22 44 22",
["3221"] = "22 22 44", ["3222"] = "22 22 22", ["3223"] = "22 22 44", ["3224"] = "22 22 22", ["3225"] = "22 22 44", ["3226"] = "22 22 22", ["3227"] = "22 22 55", ["3228"] = "22 22 22",
["3231"] = "22 44 44", ["3232"] = "22 44 22", ["3233"] = "22 44 44", ["3234"] = "22 44 22", ["3235"] = "22 44 44", ["3236"] = "22 44 22", ["3237"] = "22 44 55", ["3238"] = "22 44 22",
["3241"] = "22 22 44", ["3242"] = "22 22 22", ["3243"] = "22 22 44", ["3244"] = "22 22 22", ["3245"] = "22 22 44", ["3246"] = "22 22 22", ["3247"] = "22 22 55", ["3248"] = "22 22 22",
["3251"] = "22 44 44", ["3252"] = "22 44 22", ["3253"] = "22 44 44", ["3254"] = "22 44 22", ["3255"] = "22 44 44", ["3256"] = "22 44 22", ["3257"] = "22 44 55", ["3258"] = "22 44 22",
["3261"] = "22 22 44", ["3262"] = "22 22 22", ["3263"] = "22 22 44", ["3264"] = "22 22 22", ["3265"] = "22 22 44", ["3266"] = "22 22 22", ["3267"] = "22 22 55", ["3268"] = "22 22 22",
["3271"] = "22 55 44", ["3272"] = "22 55 22", ["3273"] = "22 55 44", ["3274"] = "22 55 22", ["3275"] = "22 55 44", ["3276"] = "22 55 22", ["3277"] = "22 55 55", ["3278"] = "22 55 22",
["3281"] = "22 22 44", ["3282"] = "22 22 22", ["3283"] = "22 22 44", ["3284"] = "22 22 22", ["3285"] = "22 22 44", ["3286"] = "22 22 22", ["3287"] = "22 22 55", ["3288"] = "22 22 22",
["3311"] = "53 53 53", ["3312"] = "53 53 42", ["3313"] = "53 53 53", ["3314"] = "53 53 42", ["3315"] = "53 53 53", ["3316"] = "53 53 42", ["3317"] = "53 53 55", ["3318"] = "53 53 22",
["3321"] = "53 42 53", ["3322"] = "53 42 42", ["3323"] = "53 42 53", ["3324"] = "53 42 42", ["3325"] = "53 42 53", ["3326"] = "53 42 42", ["3327"] = "53 42 55", ["3328"] = "53 42 22",
["3331"] = "53 53 53", ["3332"] = "53 53 42", ["3333"] = "53 53 53", ["3334"] = "53 53 42", ["3335"] = "53 53 53", ["3336"] = "53 53 42", ["3337"] = "53 53 55", ["3338"] = "53 53 22",
["3341"] = "53 42 53", ["3342"] = "53 42 42", ["3343"] = "53 42 53", ["3344"] = "53 42 42", ["3345"] = "53 42 53", ["3346"] = "53 42 42", ["3347"] = "53 42 55", ["3348"] = "53 42 22",
["3351"] = "53 53 53", ["3352"] = "53 53 42", ["3353"] = "53 53 53", ["3354"] = "53 53 42", ["3355"] = "53 53 53", ["3356"] = "53 53 42", ["3357"] = "53 53 55", ["3358"] = "53 53 22",
["3361"] = "53 42 53", ["3362"] = "53 42 42", ["3363"] = "53 42 53", ["3364"] = "53 42 42", ["3365"] = "53 42 53", ["3366"] = "53 42 42", ["3367"] = "53 42 55", ["3368"] = "53 42 22",
["3371"] = "53 55 53", ["3372"] = "53 55 42", ["3373"] = "53 55 53", ["3374"] = "53 55 42", ["3375"] = "53 55 53", ["3376"] = "53 55 42", ["3377"] = "53 55 55", ["3378"] = "53 55 22",
["3381"] = "53 22 53", ["3382"] = "53 22 42", ["3383"] = "53 22 53", ["3384"] = "53 22 42", ["3385"] = "53 22 53", ["3386"] = "53 22 42", ["3387"] = "53 22 55", ["3388"] = "53 22 22",
["3411"] = "42 53 53", ["3412"] = "42 53 42", ["3413"] = "42 53 53", ["3414"] = "42 53 42", ["3415"] = "42 53 53", ["3416"] = "42 53 42", ["3417"] = "42 53 55", ["3418"] = "42 53 22",
["3421"] = "42 42 53", ["3422"] = "42 42 42", ["3423"] = "42 42 53", ["3424"] = "42 42 42", ["3425"] = "42 42 53", ["3426"] = "42 42 42", ["3427"] = "42 42 55", ["3428"] = "42 42 22",
["3431"] = "42 53 53", ["3432"] = "42 53 42", ["3433"] = "42 53 53", ["3434"] = "42 53 42", ["3435"] = "42 53 53", ["3436"] = "42 53 42", ["3437"] = "42 53 55", ["3438"] = "42 53 22",
["3441"] = "42 42 53", ["3442"] = "42 42 42", ["3443"] = "42 42 53", ["3444"] = "42 42 42", ["3445"] = "42 42 53", ["3446"] = "42 42 42", ["3447"] = "42 42 55", ["3448"] = "42 42 22",
["3451"] = "42 53 53", ["3452"] = "42 53 42", ["3453"] = "42 53 53", ["3454"] = "42 53 42", ["3455"] = "42 53 53", ["3456"] = "42 53 42", ["3457"] = "42 53 55", ["3458"] = "42 53 22",
["3461"] = "42 42 53", ["3462"] = "42 42 42", ["3463"] = "42 42 53", ["3464"] = "42 42 42", ["3465"] = "42 42 53", ["3466"] = "42 42 42", ["3467"] = "42 42 55", ["3468"] = "42 42 22",
["3471"] = "42 55 53", ["3472"] = "42 55 42", ["3473"] = "42 55 53", ["3474"] = "42 55 42", ["3475"] = "42 55 53", ["3476"] = "42 55 42", ["3477"] = "42 55 55", ["3478"] = "42 55 22",
["3481"] = "42 22 53", ["3482"] = "42 22 42", ["3483"] = "42 22 53", ["3484"] = "42 22 42", ["3485"] = "42 22 53", ["3486"] = "42 22 42", ["3487"] = "42 22 55", ["3488"] = "42 22 22",
["3511"] = "334 53 53", ["3512"] = "334 53 42", ["3513"] = "334 53 53", ["3514"] = "334 53 42", ["3515"] = "334 53 53", ["3516"] = "334 53 42", ["3517"] = "334 53 55", ["3518"] = "334 53 22",
["3521"] = "334 42 53", ["3522"] = "334 42 42", ["3523"] = "334 42 53", ["3524"] = "334 42 42", ["3525"] = "334 42 53", ["3526"] = "334 42 42", ["3527"] = "334 42 55", ["3528"] = "334 42 22",
["3531"] = "334 53 53", ["3532"] = "334 53 42", ["3533"] = "334 53 53", ["3534"] = "334 53 42", ["3535"] = "334 53 53", ["3536"] = "334 53 42", ["3537"] = "334 53 55", ["3538"] = "334 53 22",
["3541"] = "334 42 53", ["3542"] = "334 42 42", ["3543"] = "334 42 53", ["3544"] = "334 42 42", ["3545"] = "334 42 53", ["3546"] = "334 42 42", ["3547"] = "334 42 55", ["3548"] = "334 42 22",
["3551"] = "334 334 44", ["3552"] = "334 334 22", ["3553"] = "334 334 53", ["3554"] = "334 334 42", ["3555"] = "334 334 334", ["3556"] = "334 334 113", ["3557"] = "334 334 55", ["3558"] = "334 334 22",
["3561"] = "334 113 44", ["3562"] = "334 113 22", ["3563"] = "334 113 53", ["3564"] = "334 113 42", ["3565"] = "334 113 334", ["3566"] = "334 113 113", ["3567"] = "334 113 55", ["3568"] = "334 113 22",
["3571"] = "334 55 44", ["3572"] = "334 55 22", ["3573"] = "334 55 44", ["3574"] = "334 55 22", ["3575"] = "334 55 44", ["3576"] = "334 55 22", ["3577"] = "334 55 55", ["3578"] = "334 55 22",
["3581"] = "334 22 44", ["3582"] = "334 22 22", ["3583"] = "334 22 44", ["3584"] = "334 22 22", ["3585"] = "334 22 44", ["3586"] = "334 22 22", ["3587"] = "334 22 55", ["3588"] = "334 22 22",
["3611"] = "113 53 53", ["3612"] = "113 53 42", ["3613"] = "113 53 53", ["3614"] = "113 53 42", ["3615"] = "113 53 53", ["3616"] = "113 53 42", ["3617"] = "113 53 55", ["3618"] = "113 53 22",
["3621"] = "113 42 53", ["3622"] = "113 42 42", ["3623"] = "113 42 53", ["3624"] = "113 42 42", ["3625"] = "113 42 53", ["3626"] = "113 42 42", ["3627"] = "113 42 55", ["3628"] = "113 42 22",
["3631"] = "113 53 53", ["3632"] = "113 53 42", ["3633"] = "113 53 53", ["3634"] = "113 53 42", ["3635"] = "113 53 53", ["3636"] = "113 53 42", ["3637"] = "113 53 55", ["3638"] = "113 53 22",
["3641"] = "113 42 53", ["3642"] = "113 42 42", ["3643"] = "113 42 53", ["3644"] = "113 42 42", ["3645"] = "113 42 53", ["3646"] = "113 42 42", ["3647"] = "113 42 55", ["3648"] = "113 42 22",
["3651"] = "113 334 44", ["3652"] = "113 334 22", ["3653"] = "113 334 53", ["3654"] = "113 334 42", ["3655"] = "113 334 334", ["3656"] = "113 334 113", ["3657"] = "113 334 55", ["3658"] = "113 334 22",
["3661"] = "113 113 44", ["3662"] = "113 113 22", ["3663"] = "113 113 53", ["3664"] = "113 113 42", ["3665"] = "113 113 334", ["3666"] = "113 113 113", ["3667"] = "113 113 55", ["3668"] = "113 113 22",
["3671"] = "113 55 44", ["3672"] = "113 55 22", ["3673"] = "113 55 44", ["3674"] = "113 55 22", ["3675"] = "113 55 44", ["3676"] = "113 55 22", ["3677"] = "113 55 55", ["3678"] = "113 55 22",
["3681"] = "113 22 44", ["3682"] = "113 22 22", ["3683"] = "113 22 44", ["3684"] = "113 22 22", ["3685"] = "113 22 44", ["3686"] = "113 22 22", ["3687"] = "113 22 55", ["3688"] = "113 22 22",
["3711"] = "55 44 44", ["3712"] = "55 44 22", ["3713"] = "55 44 44", ["3714"] = "55 44 22", ["3715"] = "55 44 44", ["3716"] = "55 44 22", ["3717"] = "55 44 55", ["3718"] = "55 44 22",
["3721"] = "55 22 44", ["3722"] = "55 22 22", ["3723"] = "55 22 44", ["3724"] = "55 22 22", ["3725"] = "55 22 44", ["3726"] = "55 22 22", ["3727"] = "55 22 55", ["3728"] = "55 22 22",
["3731"] = "55 53 53", ["3732"] = "55 53 42", ["3733"] = "55 53 53", ["3734"] = "55 53 42", ["3735"] = "55 53 53", ["3736"] = "55 53 42", ["3737"] = "55 53 55", ["3738"] = "55 53 22",
["3741"] = "55 42 53", ["3742"] = "55 42 42", ["3743"] = "55 42 53", ["3744"] = "55 42 42", ["3745"] = "55 42 53", ["3746"] = "55 42 42", ["3747"] = "55 42 55", ["3748"] = "55 42 22",
["3751"] = "55 334 44", ["3752"] = "55 334 22", ["3753"] = "55 334 53", ["3754"] = "55 334 42", ["3755"] = "55 334 334", ["3756"] = "55 334 113", ["3757"] = "55 334 55", ["3758"] = "55 334 22",
["3761"] = "55 113 44", ["3762"] = "55 113 22", ["3763"] = "55 113 53", ["3764"] = "55 113 42", ["3765"] = "55 113 334", ["3766"] = "55 113 113", ["3767"] = "55 113 55", ["3768"] = "55 113 22",
["3771"] = "55 55 44", ["3772"] = "55 55 22", ["3773"] = "55 55 53", ["3774"] = "55 55 42", ["3775"] = "55 55 334", ["3776"] = "55 55 113", ["3777"] = "55 55 55", ["3778"] = "55 55 22",
["3781"] = "55 22 44", ["3782"] = "55 22 22", ["3783"] = "55 22 53", ["3784"] = "55 22 42", ["3785"] = "55 22 334", ["3786"] = "55 22 113", ["3787"] = "55 22 55", ["3788"] = "55 22 22",
["3811"] = "22 44 44", ["3812"] = "22 44 22", ["3813"] = "22 44 44", ["3814"] = "22 44 22", ["3815"] = "22 44 44", ["3816"] = "22 44 22", ["3817"] = "22 44 55", ["3818"] = "22 44 22",
["3821"] = "22 22 44", ["3822"] = "22 22 22", ["3823"] = "22 22 44", ["3824"] = "22 22 22", ["3825"] = "22 22 44", ["3826"] = "22 22 22", ["3827"] = "22 22 55", ["3828"] = "22 22 22",
["3831"] = "22 53 53", ["3832"] = "22 53 42", ["3833"] = "22 53 53", ["3834"] = "22 53 42", ["3835"] = "22 53 53", ["3836"] = "22 53 42", ["3837"] = "22 53 55", ["3838"] = "22 53 22",
["3841"] = "22 42 53", ["3842"] = "22 42 42", ["3843"] = "22 42 53", ["3844"] = "22 42 42", ["3845"] = "22 42 53", ["3846"] = "22 42 42", ["3847"] = "22 42 55", ["3848"] = "22 42 22",
["3851"] = "22 334 44", ["3852"] = "22 334 22", ["3853"] = "22 334 53", ["3854"] = "22 334 42", ["3855"] = "22 334 334", ["3856"] = "22 334 113", ["3857"] = "22 334 55", ["3858"] = "22 334 22",
["3861"] = "22 113 44", ["3862"] = "22 113 22", ["3863"] = "22 113 53", ["3864"] = "22 113 42", ["3865"] = "22 113 334", ["3866"] = "22 113 113", ["3867"] = "22 113 55", ["3868"] = "22 113 22",
["3871"] = "22 55 44", ["3872"] = "22 55 22", ["3873"] = "22 55 53", ["3874"] = "22 55 42", ["3875"] = "22 55 334", ["3876"] = "22 55 113", ["3877"] = "22 55 55", ["3878"] = "22 55 22",
["3881"] = "22 22 44", ["3882"] = "22 22 22", ["3883"] = "22 22 53", ["3884"] = "22 22 42", ["3885"] = "22 22 334", ["3886"] = "22 22 113", ["3887"] = "22 22 55", ["3888"] = "22 22 22",
--!RPS!
},
['hn'] = {
["10"] = "",
["11"] = "55", ["12"] = "113", ["13"] = "53", ["14"] = "42", ["15"] = "445", ["16"] = "113", ["17"] = "55", ["18"] = "22",
["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 55", ["214"] = "55 55", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "55 11", ["218"] = "55 11",
["221"] = "11 55", ["222"] = "11 55", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "55 22",
["231"] = "55 55", ["232"] = "55 55", ["233"] = "55 21", ["234"] = "55 21", ["235"] = "55 21", ["236"] = "55 21", ["237"] = "55 55", ["238"] = "55 55",
["241"] = "55 55", ["242"] = "55 55", ["243"] = "55 21", ["244"] = "55 21", ["245"] = "55 21", ["246"] = "55 21", ["247"] = "55 55", ["248"] = "55 55",
["251"] = "33 53", ["252"] = "33 42", ["253"] = "33 53", ["254"] = "33 42", ["255"] = "33 53", ["256"] = "33 42", ["257"] = "33 55", ["258"] = "33 22",
["261"] = "11 53", ["262"] = "11 42", ["263"] = "11 53", ["264"] = "11 42", ["265"] = "11 53", ["266"] = "11 42", ["267"] = "11 55", ["268"] = "11 22",
["271"] = "55 55", ["272"] = "55 55", ["273"] = "55 21", ["274"] = "55 21", ["275"] = "55 21", ["276"] = "55 21", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "11 55", ["282"] = "11 55", ["283"] = "22 21", ["284"] = "22 21", ["285"] = "22 21", ["286"] = "22 21", ["287"] = "11 55", ["288"] = "11 22",
["3111"] = "55 55 55", ["3112"] = "55 55 55", ["3113"] = "55 55 55", ["3114"] = "55 55 55", ["3115"] = "55 55 55", ["3116"] = "55 55 55", ["3117"] = "55 55 11", ["3118"] = "55 55 11",
["3121"] = "55 55 55", ["3122"] = "55 55 55", ["3123"] = "55 55 55", ["3124"] = "55 55 55", ["3125"] = "55 55 55", ["3126"] = "55 55 55", ["3127"] = "55 55 11", ["3128"] = "55 55 11",
["3131"] = "55 55 55", ["3132"] = "55 55 55", ["3133"] = "55 55 55", ["3134"] = "55 55 55", ["3135"] = "55 55 55", ["3136"] = "55 55 55", ["3137"] = "55 55 11", ["3138"] = "55 55 11",
["3141"] = "55 55 55", ["3142"] = "55 55 55", ["3143"] = "55 55 55", ["3144"] = "55 55 55", ["3145"] = "55 55 55", ["3146"] = "55 55 55", ["3147"] = "55 55 11", ["3148"] = "55 55 11",
["3151"] = "55 55 55", ["3152"] = "55 55 55", ["3153"] = "55 55 55", ["3154"] = "55 55 55", ["3155"] = "55 55 55", ["3156"] = "55 55 55", ["3157"] = "55 55 11", ["3158"] = "55 55 11",
["3161"] = "55 55 55", ["3162"] = "55 55 55", ["3163"] = "55 55 55", ["3164"] = "55 55 55", ["3165"] = "55 55 55", ["3166"] = "55 55 55", ["3167"] = "55 55 11", ["3168"] = "55 55 11",
["3171"] = "55 33 21", ["3172"] = "55 33 21", ["3173"] = "55 33 21", ["3174"] = "55 33 21", ["3175"] = "55 33 21", ["3176"] = "55 33 21", ["3177"] = "55 33 11", ["3178"] = "55 33 11",
["3181"] = "55 33 11", ["3182"] = "55 33 11", ["3183"] = "55 33 11", ["3184"] = "55 33 11", ["3185"] = "55 33 11", ["3186"] = "55 33 11", ["3187"] = "55 33 11", ["3188"] = "55 33 11",
["3211"] = "11 55 55", ["3212"] = "11 55 55", ["3213"] = "11 55 55", ["3214"] = "11 55 55", ["3215"] = "11 55 55", ["3216"] = "11 55 55", ["3217"] = "11 55 11", ["3218"] = "11 55 11",
["3221"] = "11 55 55", ["3222"] = "11 55 55", ["3223"] = "11 55 55", ["3224"] = "11 55 55", ["3225"] = "11 55 55", ["3226"] = "11 55 55", ["3227"] = "11 55 11", ["3228"] = "11 55 11",
["3231"] = "11 55 55", ["3232"] = "11 55 55", ["3233"] = "11 55 55", ["3234"] = "11 55 55", ["3235"] = "11 55 55", ["3236"] = "11 55 55", ["3237"] = "11 55 11", ["3238"] = "11 55 11",
["3241"] = "11 55 55", ["3242"] = "11 55 55", ["3243"] = "11 55 55", ["3244"] = "11 55 55", ["3245"] = "11 55 55", ["3246"] = "11 55 55", ["3247"] = "11 55 11", ["3248"] = "11 55 11",
["3251"] = "11 55 55", ["3252"] = "11 55 55", ["3253"] = "11 55 55", ["3254"] = "11 55 55", ["3255"] = "11 55 55", ["3256"] = "11 55 55", ["3257"] = "11 55 11", ["3258"] = "11 55 11",
["3261"] = "11 55 55", ["3262"] = "11 55 55", ["3263"] = "11 55 55", ["3264"] = "11 55 55", ["3265"] = "11 55 55", ["3266"] = "11 55 55", ["3267"] = "11 55 11", ["3268"] = "11 55 11",
["3271"] = "11 55 21", ["3272"] = "11 55 21", ["3273"] = "11 55 21", ["3274"] = "11 55 21", ["3275"] = "11 55 21", ["3276"] = "11 55 21", ["3277"] = "11 55 11", ["3278"] = "11 55 11",
["3281"] = "11 55 21", ["3282"] = "11 55 21", ["3283"] = "11 55 21", ["3284"] = "11 55 21", ["3285"] = "11 55 21", ["3286"] = "11 55 21", ["3287"] = "11 55 11", ["3288"] = "11 55 11",
["3311"] = "55 55 55", ["3312"] = "55 55 55", ["3313"] = "55 55 55", ["3314"] = "55 55 55", ["3315"] = "55 55 55", ["3316"] = "55 55 55", ["3317"] = "55 55 11", ["3318"] = "55 55 11",
["3321"] = "55 55 55", ["3322"] = "55 55 55", ["3323"] = "55 55 55", ["3324"] = "55 55 55", ["3325"] = "55 55 55", ["3326"] = "55 55 55", ["3327"] = "55 55 11", ["3328"] = "55 55 11",
["3331"] = "55 33 21", ["3332"] = "55 33 21", ["3333"] = "55 33 21", ["3334"] = "55 33 21", ["3335"] = "55 33 21", ["3336"] = "55 33 21", ["3337"] = "55 33 11", ["3338"] = "",
["3341"] = "55 33 21", ["3342"] = "55 33 21", ["3343"] = "55 33 21", ["3344"] = "55 33 21", ["3345"] = "55 33 21", ["3346"] = "55 33 21", ["3347"] = "55 33 11", ["3348"] = "55 33 11",
["3351"] = "55 33 21", ["3352"] = "55 33 21", ["3353"] = "55 33 21", ["3354"] = "55 33 21", ["3355"] = "55 33 21", ["3356"] = "55 33 21", ["3357"] = "55 33 11", ["3358"] = "55 33 11",
["3361"] = "55 33 21", ["3362"] = "55 33 21", ["3363"] = "55 33 21", ["3364"] = "55 33 21", ["3365"] = "55 33 21", ["3366"] = "55 33 21", ["3367"] = "55 33 11", ["3368"] = "55 33 11",
["3371"] = "55 55 21", ["3372"] = "55 55 21", ["3373"] = "55 55 21", ["3374"] = "55 55 21", ["3375"] = "55 55 21", ["3376"] = "55 55 21", ["3377"] = "55 55 11", ["3378"] = "55 55 11",
["3381"] = "55 55 21", ["3382"] = "55 55 21", ["3383"] = "55 55 21", ["3384"] = "55 55 21", ["3385"] = "55 55 21", ["3386"] = "55 55 21", ["3387"] = "55 55 11", ["3388"] = "55 55 11",
["3411"] = "55 55 55", ["3412"] = "55 55 55", ["3413"] = "55 55 55", ["3414"] = "55 55 55", ["3415"] = "55 55 55", ["3416"] = "55 55 55", ["3417"] = "55 55 11", ["3418"] = "55 55 11",
["3421"] = "55 55 55", ["3422"] = "55 55 55", ["3423"] = "55 55 55", ["3424"] = "55 55 55", ["3425"] = "55 55 55", ["3426"] = "55 55 55", ["3427"] = "55 55 11", ["3428"] = "55 55 11",
["3431"] = "55 33 21", ["3432"] = "55 33 21", ["3433"] = "55 33 21", ["3434"] = "55 33 21", ["3435"] = "55 33 21", ["3436"] = "55 33 21", ["3437"] = "55 33 11", ["3438"] = "55 33 11",
["3441"] = "55 33 21", ["3442"] = "55 33 21", ["3443"] = "55 33 21", ["3444"] = "55 33 21", ["3445"] = "55 33 21", ["3446"] = "55 33 21", ["3447"] = "55 33 11", ["3448"] = "55 33 11",
["3451"] = "55 33 21", ["3452"] = "55 33 21", ["3453"] = "55 33 21", ["3454"] = "55 33 21", ["3455"] = "55 33 21", ["3456"] = "55 33 21", ["3457"] = "55 33 11", ["3458"] = "55 33 11",
["3461"] = "55 33 21", ["3462"] = "55 33 21", ["3463"] = "55 33 21", ["3464"] = "55 33 21", ["3465"] = "55 33 21", ["3466"] = "55 33 21", ["3467"] = "55 33 11", ["3468"] = "55 33 11",
["3471"] = "55 55 21", ["3472"] = "55 55 21", ["3473"] = "55 55 21", ["3474"] = "55 55 21", ["3475"] = "55 55 21", ["3476"] = "55 55 21", ["3477"] = "55 55 11", ["3478"] = "55 55 11",
["3481"] = "55 55 21", ["3482"] = "55 55 21", ["3483"] = "55 55 21", ["3484"] = "55 55 21", ["3485"] = "55 55 21", ["3486"] = "55 55 21", ["3487"] = "55 55 11", ["3488"] = "55 55 11",
["3511"] = "33 55 21", ["3512"] = "33 55 21", ["3513"] = "33 55 21", ["3514"] = "33 55 21", ["3515"] = "33 55 21", ["3516"] = "33 55 21", ["3517"] = "33 55 11", ["3518"] = "33 55 11",
["3521"] = "33 55 21", ["3522"] = "33 55 21", ["3523"] = "33 55 21", ["3524"] = "33 55 21", ["3525"] = "33 55 21", ["3526"] = "33 55 21", ["3527"] = "33 55 11", ["3528"] = "33 55 11",
["3531"] = "33 55 21", ["3532"] = "33 55 21", ["3533"] = "33 55 21", ["3534"] = "33 55 21", ["3535"] = "33 55 21", ["3536"] = "33 55 21", ["3537"] = "33 55 11", ["3538"] = "33 55 11",
["3541"] = "33 55 21", ["3542"] = "33 55 21", ["3543"] = "33 55 21", ["3544"] = "33 55 21", ["3545"] = "33 55 21", ["3546"] = "33 55 21", ["3547"] = "33 55 11", ["3548"] = "33 55 11",
["3551"] = "33 55 21", ["3552"] = "33 55 21", ["3553"] = "33 55 21", ["3554"] = "33 55 21", ["3555"] = "33 55 21", ["3556"] = "33 55 21", ["3557"] = "33 55 11", ["3558"] = "33 55 11",
["3561"] = "33 55 21", ["3562"] = "33 55 21", ["3563"] = "33 55 21", ["3564"] = "33 55 21", ["3565"] = "33 55 21", ["3566"] = "33 55 21", ["3567"] = "33 55 11", ["3568"] = "33 55 11",
["3571"] = "33 55 21", ["3572"] = "33 55 21", ["3573"] = "33 55 21", ["3574"] = "33 55 21", ["3575"] = "33 55 21", ["3576"] = "33 55 21", ["3577"] = "33 55 11", ["3578"] = "33 55 11",
["3581"] = "33 55 21", ["3582"] = "33 55 21", ["3583"] = "33 55 21", ["3584"] = "33 55 21", ["3585"] = "33 55 21", ["3586"] = "33 55 21", ["3587"] = "33 55 11", ["3588"] = "33 55 11",
["3611"] = "11 55 21", ["3612"] = "11 55 21", ["3613"] = "11 55 21", ["3614"] = "11 55 21", ["3615"] = "11 55 21", ["3616"] = "11 55 21", ["3617"] = "11 55 11", ["3618"] = "11 55 11",
["3621"] = "11 55 21", ["3622"] = "11 55 21", ["3623"] = "11 55 21", ["3624"] = "11 55 21", ["3625"] = "11 55 21", ["3626"] = "11 55 21", ["3627"] = "11 55 11", ["3628"] = "11 55 11",
["3631"] = "11 55 21", ["3632"] = "11 55 21", ["3633"] = "11 55 21", ["3634"] = "11 55 21", ["3635"] = "11 55 21", ["3636"] = "11 55 21", ["3637"] = "11 55 11", ["3638"] = "11 55 11",
["3641"] = "11 55 21", ["3642"] = "11 55 21", ["3643"] = "11 55 21", ["3644"] = "11 55 21", ["3645"] = "11 55 21", ["3646"] = "11 55 21", ["3647"] = "11 55 11", ["3648"] = "11 55 11",
["3651"] = "11 55 21", ["3652"] = "11 55 21", ["3653"] = "11 55 21", ["3654"] = "11 55 21", ["3655"] = "11 55 21", ["3656"] = "11 55 21", ["3657"] = "11 55 11", ["3658"] = "11 55 11",
["3661"] = "11 55 21", ["3662"] = "11 55 21", ["3663"] = "11 55 21", ["3664"] = "11 55 21", ["3665"] = "11 55 21", ["3666"] = "11 55 21", ["3667"] = "11 55 11", ["3668"] = "11 55 11",
["3671"] = "11 55 21", ["3672"] = "11 55 21", ["3673"] = "11 55 21", ["3674"] = "11 55 21", ["3675"] = "11 55 21", ["3676"] = "11 55 21", ["3677"] = "11 55 11", ["3678"] = "11 55 11",
["3681"] = "11 55 21", ["3682"] = "11 55 21", ["3683"] = "11 55 21", ["3684"] = "11 55 21", ["3685"] = "11 55 21", ["3686"] = "11 55 21", ["3687"] = "11 55 11", ["3688"] = "11 55 11",
["3711"] = "55 55 55", ["3712"] = "55 55 55", ["3713"] = "55 55 55", ["3714"] = "55 55 55", ["3715"] = "55 55 55", ["3716"] = "55 55 55", ["3717"] = "55 55 11", ["3718"] = "55 55 11",
["3721"] = "55 55 55", ["3722"] = "55 55 55", ["3723"] = "55 55 55", ["3724"] = "55 55 55", ["3725"] = "55 55 55", ["3726"] = "55 55 55", ["3727"] = "55 55 11", ["3728"] = "55 55 11",
["3731"] = "55 33 21", ["3732"] = "55 33 21", ["3733"] = "55 33 21", ["3734"] = "55 33 21", ["3735"] = "55 33 21", ["3736"] = "55 33 21", ["3737"] = "55 33 11", ["3738"] = "55 33 11",
["3741"] = "55 33 21", ["3742"] = "55 33 21", ["3743"] = "55 33 21", ["3744"] = "55 33 21", ["3745"] = "55 33 21", ["3746"] = "55 33 21", ["3747"] = "55 33 11", ["3748"] = "55 33 11",
["3751"] = "55 33 21", ["3752"] = "55 33 21", ["3753"] = "55 33 21", ["3754"] = "55 33 21", ["3755"] = "55 33 21", ["3756"] = "55 33 21", ["3757"] = "55 33 11", ["3758"] = "55 33 11",
["3761"] = "55 33 21", ["3762"] = "55 33 21", ["3763"] = "55 33 21", ["3764"] = "55 33 21", ["3765"] = "55 33 21", ["3766"] = "55 33 21", ["3767"] = "55 33 11", ["3768"] = "55 33 11",
["3771"] = "55 55 55", ["3772"] = "55 55 55", ["3773"] = "55 55 55", ["3774"] = "55 55 55", ["3775"] = "55 55 55", ["3776"] = "55 55 55", ["3777"] = "55 55 55", ["3778"] = "55 55 55",
["3781"] = "55 55 55", ["3782"] = "55 55 55", ["3783"] = "55 55 55", ["3784"] = "55 55 55", ["3785"] = "55 55 55", ["3786"] = "55 55 55", ["3787"] = "55 55 55", ["3788"] = "55 55 55",
--3811 to 3816, 3821 to 3826 extrapolated from linguistic trends & data in vocab section
["3811"] = "11 55 55", ["3812"] = "11 55 55", ["3813"] = "11 55 55", ["3814"] = "11 55 55", ["3815"] = "11 55 55", ["3816"] = "11 55 55", ["3817"] = "11 55 11", ["3818"] = "11 55 11",
["3821"] = "11 55 55", ["3822"] = "11 55 55", ["3823"] = "11 55 55", ["3824"] = "11 55 55", ["3825"] = "11 55 55", ["3826"] = "11 55 55", ["3827"] = "11 55 11", ["3828"] = "11 55 11",
["3831"] = "22 33 21", ["3832"] = "22 33 21", ["3833"] = "22 33 21", ["3834"] = "22 33 21", ["3835"] = "22 33 21", ["3836"] = "22 33 21", ["3837"] = "", ["3838"] = "22 33 11",
["3841"] = "22 33 21", ["3842"] = "22 33 21", ["3843"] = "22 33 21", ["3844"] = "22 33 21", ["3845"] = "22 33 21", ["3846"] = "22 33 21", ["3847"] = "22 33 11", ["3848"] = "22 33 11",
["3851"] = "22 33 21", ["3852"] = "22 33 21", ["3853"] = "22 33 21", ["3854"] = "22 33 21", ["3855"] = "22 33 21", ["3856"] = "22 33 21", ["3857"] = "22 33 11", ["3858"] = "22 33 11",
["3861"] = "22 33 21", ["3862"] = "22 33 21", ["3863"] = "22 33 21", ["3864"] = "22 33 21", ["3865"] = "22 33 21", ["3866"] = "22 33 21", ["3867"] = "22 33 11", ["3868"] = "22 33 11",
["3871"] = "11 55 55", ["3872"] = "11 55 55", ["3873"] = "11 55 55", ["3874"] = "11 55 55", ["3875"] = "11 55 55", ["3876"] = "11 55 55", ["3877"] = "11 55 55", ["3878"] = "11 55 55",
["3881"] = "11 55 55", ["3882"] = "11 55 55", ["3883"] = "11 55 55", ["3884"] = "11 55 55", ["3885"] = "11 55 55", ["3886"] = "11 55 55", ["3887"] = "11 55 55", ["3888"] = "11 55 55",
--RPS
["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "33",
["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11", --2 and 8 have sporadic 1 & 8 shifts
["multiple"] = "33"
},
['hy'] = {
["10"] = "",
["11"] = "51", ["12"] = "31", ["13"] = "343", ["14"] = "232", ["15"] = "35", ["16"] = "213", ["17"] = "55", ["18"] = "22",
["211"] = "35 51", ["212"] = "35 51", ["213"] = "53 31", ["214"] = "53 31", ["215"] = "53 31", ["216"] = "53 31", ["217"] = "35 55", ["218"] = "35 55",
["221"] = "13 51", ["222"] = "13 51", ["223"] = "13 51", ["224"] = "13 51", ["225"] = "13 51", ["226"] = "13 51", ["227"] = "13 33", ["228"] = "13 33",
["231"] = "343 51", ["232"] = "343 51", ["233"] = "343 35", ["234"] = "343 35", ["235"] = "343 35", ["236"] = "343 35", ["237"] = "343 55", ["238"] = "343 55",
["241"] = "232 51", ["242"] = "232 31", ["243"] = "232 35", ["244"] = "232 35", ["245"] = "232 35", ["246"] = "232 35", ["247"] = "232 55", ["248"] = "232 55",
["251"] = "35 31", ["252"] = "35 31", ["253"] = "35 31", ["254"] = "35 31", ["255"] = "35 31", ["256"] = "35 31", ["257"] = "35 33", ["258"] = "35 33",
["261"] = "35 31", ["262"] = "35 31", ["263"] = "35 31", ["264"] = "35 31", ["265"] = "35 31", ["266"] = "35 31", ["267"] = "213 55", ["268"] = "213 55",
["271"] = "55 51", ["272"] = "55 51", ["273"] = "55 35", ["274"] = "55 35", ["275"] = "55 35", ["276"] = "55 35", ["277"] = "55 55", ["278"] = "55 55",
["281"] = "22 51", ["282"] = "22 51", ["283"] = "22 35", ["284"] = "22 35", ["285"] = "22 35", ["286"] = "22 35", ["287"] = "22 55", ["288"] = "22 55",
--based on the source, i think this is what they mean
["311"] = "35 55 31", ["312"] = "35 55 31", ["313"] = "53 55 31", ["314"] = "53 55 31", ["315"] = "35 55 31", ["316"] = "35 55 31", ["317"] = "35 55 31", ["318"] = "35 55 31",
["321"] = "31 55 31", ["322"] = "31 55 31", ["323"] = "31 55 31", ["324"] = "31 55 31", ["325"] = "31 55 31", ["326"] = "31 55 31", ["327"] = "31 55 31", ["328"] = "31 55 31",
["331"] = "34 53 31", ["332"] = "34 44 31", ["333"] = "34 44 31", ["334"] = "34 44 31", ["335"] = "34 44 31", ["336"] = "34 44 31", ["337"] = "34 44 31", ["338"] = "34 44 31",
["341"] = "23 53 31", ["342"] = "23 53 31", ["343"] = "23 44 31", ["344"] = "23 44 31", ["345"] = "23 44 31", ["346"] = "23 44 31", ["347"] = "23 44 31", ["348"] = "23 44 31",
["351"] = "35 55 31", ["352"] = "35 55 31", ["353"] = "35 55 31", ["354"] = "35 55 31", ["355"] = "35 55 31", ["356"] = "35 55 31", ["357"] = "35 55 31", ["358"] = "25 55 31",
["361"] = "13 44 31", ["362"] = "13 44 31", ["363"] = "13 44 31", ["364"] = "13 44 31", ["365"] = "13 44 31", ["366"] = "13 44 31", ["367"] = "13 44 31", ["368"] = "13 44 31",
["371"] = "55 55 51", ["372"] = "55 55 51", ["373"] = "55 55 31", ["374"] = "55 55 31", ["375"] = "55 55 31", ["376"] = "55 55 31", ["377"] = "55 55 31", ["378"] = "55 55 31",
["381"] = "22 55 51", ["382"] = "22 55 51", ["383"] = "22 55 51", ["384"] = "22 55 51", ["385"] = "22 55 51", ["386"] = "22 55 51", ["387"] = "22 55 51", ["388"] = "22 55 53",
--!RPS!
},
['dq'] = {
["11"] = "44", ["12"] = "213", ["13"] = "53", ["14"] = "31", ["15"] = "435", ["16"] = "224", ["17"] = "55", ["18"] = "33",
},
['hz'] = {
["10"] = "",
["11"] = "334", ["21"] = "33 34", ["31"] = "33 34 52", ["41"] = "33 34 55 21", ["51"] = "33 34 55 22 21",
["213"] = "33 53", ["313"] = "33 55 21", ["413"] = "33 55 22 21",
["217"] = "33 55", ["317"] = "33 34 55",
["12"] = "23", ["22"] = "22 34", ["32"] = "22 34 53", ["42"] = "22 34 55 21",
["223"] = "22 53", ["323"] = "22 55 21", ["423"] = "22 55 22 21",
["13"] = "53", ["23"] = "55 21", ["33"] = "55 22 21", ["43"] = "55 22 22 21", ["53"] = "55 22 22 22 21",
["15"] = "45", ["25"] = "34 53", ["35"] = "34 55 21", ["45"] = "34 55 22 21",
["16"] = "113", ["26"] = "11 53", ["36"] = "11 55 21", ["46"] = "11 55 22 21", ["56"] = "11 55 22 22 21",
["17"] = "55", ["27"] = "33 34", ["37"] = "33 34 53", ["47"] = "33 34 55 21",
["273"] = "33 53", ["373"] = "33 55 21", ["473"] = "33 55 22 21",
["270"] = "55 21", ["370"] = "55 22 21", ["470"] = "55 22 22 21",
["377"] = "44 44 55",
["378"] = "44 44 55",
["18"] = "23", ["28"] = "22 34", ["38"] = "22 34 53", ["48"] = "22 34 55 21", ["58"] = "22 34 55 22 21",
["283"] = "22 53", ["383"] = "22 55 21", ["483"] = "22 55 22 21",
["380"] = "22 22 33",
--RPS
["1s"] = "33", ["2s"] = "22", ["3s"] = "33", ["5s"] = "34", ["6s"] = "12", ["7s"] = "44", ["8s"] = "22",
--3: /33~44/, 5: /33~34/, 6: /11~12~23/, 7: /3~4/, 8: /2~3/
["multiple"] = "33"
},
['xs'] = {
["10"] = "",
["11"] = "44", ["12"] = "13", ["13"] = "34", ["14"] = "213", ["15"] = "53", ["16"] = "31", ["17"] = "55", ["18"] = "22",
},
['fy'] = {
["10"] = "",
["11"] = "53", ["12"] = "113", ["13"] = "424", ["14"] = "212", ["15"] = "335", ["16"] = "212", ["17"] = "55", ["18"] = "22",
["211"] = "55 55", ["212"] = "55 55", ["213"] = "55 31", ["214"] = "55 31", ["215"] = "55 31", ["216"] = "55 31", ["217"] = "55 55", ["218"] = "55 55",
["22"] = "11 11",
["23"] = "33 35",
["24"] = "11 53",
["25"] = "33 53",
["26"] = "11 35",
["271"] = "55 31", ["272"] = "55 31", ["273"] = "33 35", ["274"] = "33 35", ["275"] = "33 35", ["276"] = "33 35", ["277"] = "55 31", ["278"] = "55 31",
["28"] = "11 53",
--RPS
["1s"] = "33", ["2s"] = "11", ["3s"] = "33", ["4s"] = "11", ["5s"] = "33", ["6s"] = "11", ["7s"] = "33", ["8s"] = "11",
},
['sx'] = {
["10"] = "",
["11"] = "52", ["12"] = "231", ["13"] = "335", ["14"] = "113", ["15"] = "33", ["16"] = "11", ["17"] = "45", ["18"] = "23",
--regular disyllabic LPS
["211"] = "33 52", ["212"] = "33 52", ["213"] = "33 55", ["214"] = "33 55", ["215"] = "33 55", ["216"] = "33 55", ["217"] = "33 55", ["218"] = "33 55",
["221"] = "11 52", ["222"] = "11 52", ["223"] = "11 55", ["224"] = "11 55", ["225"] = "11 55", ["226"] = "11 55", ["227"] = "11 55", ["228"] = "11 55",
["231"] = "335 52", ["232"] = "335 52", ["233"] = "335 52", ["234"] = "335 52", ["235"] = "335 52", ["236"] = "335 52", ["237"] = "335 54", ["238"] = "335 54",
["241"] = "115 52", ["242"] = "115 52", ["243"] = "115 52", ["244"] = "115 52", ["245"] = "115 52", ["246"] = "115 52", ["247"] = "115 54", ["248"] = "115 54",
["251"] = "33 33", ["252"] = "33 33", ["253"] = "33 33", ["254"] = "33 33", ["255"] = "33 33", ["256"] = "33 33", ["257"] = "33 33", ["258"] = "33 33",
["261"] = "11 11", ["262"] = "11 11", ["263"] = "11 11", ["264"] = "11 11", ["265"] = "11 11", ["266"] = "11 11", ["267"] = "11 11", ["268"] = "11 11",
["271"] = "33 52", ["272"] = "33 52", ["273"] = "33 55", ["274"] = "33 55", ["275"] = "33 55", ["276"] = "33 55", ["277"] = "33 55", ["278"] = "33 55",
["281"] = "11 52", ["282"] = "11 52", ["283"] = "11 55", ["284"] = "11 55", ["285"] = "11 55", ["286"] = "11 55", ["287"] = "11 55", ["288"] = "11 55",
--irregular LPS
["250"] = "33 55", ["260"] = "11 55",
--regular trisyllabic LPS
["3111"] = "33 55 52", ["3112"] = "33 55 52", ["3113"] = "33 55 52", ["3114"] = "33 55 52", ["3115"] = "33 55 52", ["3116"] = "33 55 52", ["3117"] = "33 55 54", ["3118"] = "33 55 54",
["3121"] = "33 55 52", ["3122"] = "33 55 52", ["3123"] = "33 55 52", ["3124"] = "33 55 52", ["3125"] = "33 55 52", ["3126"] = "33 55 52", ["3127"] = "33 55 54", ["3128"] = "33 55 54",
["3131"] = "33 55 52", ["3132"] = "33 55 52", ["3133"] = "33 55 52", ["3134"] = "33 55 52", ["3135"] = "33 55 52", ["3136"] = "33 55 52", ["3137"] = "33 55 54", ["3138"] = "33 55 54",
["3141"] = "33 55 52", ["3142"] = "33 55 52", ["3143"] = "33 55 52", ["3144"] = "33 55 52", ["3145"] = "33 55 52", ["3146"] = "33 55 52", ["3147"] = "33 55 54", ["3148"] = "33 55 54",
["3151"] = "33 55 52", ["3152"] = "33 55 52", ["3153"] = "33 55 52", ["3154"] = "33 55 52", ["3155"] = "33 55 52", ["3156"] = "33 55 52", ["3157"] = "33 55 54", ["3158"] = "33 55 54",
["3161"] = "33 55 52", ["3162"] = "33 55 52", ["3163"] = "33 55 52", ["3164"] = "33 55 52", ["3165"] = "33 55 52", ["3166"] = "33 55 52", ["3167"] = "33 55 54", ["3168"] = "33 55 54",
["3171"] = "33 5 52", ["3172"] = "33 5 52", ["3173"] = "33 5 52", ["3174"] = "33 5 52", ["3175"] = "33 5 52", ["3176"] = "33 5 52", ["3177"] = "33 5 54", ["3178"] = "33 5 54",
["3181"] = "33 5 52", ["3182"] = "33 5 52", ["3183"] = "33 5 52", ["3184"] = "33 5 52", ["3185"] = "33 5 52", ["3186"] = "33 5 52", ["3187"] = "33 5 54", ["3188"] = "33 5 54",
["3211"] = "11 55 52", ["3212"] = "11 55 52", ["3213"] = "11 55 52", ["3214"] = "11 55 52", ["3215"] = "11 55 52", ["3216"] = "11 55 52", ["3217"] = "11 55 54", ["3218"] = "11 55 54",
["3221"] = "11 55 52", ["3222"] = "11 55 52", ["3223"] = "11 55 52", ["3224"] = "11 55 52", ["3225"] = "11 55 52", ["3226"] = "11 55 52", ["3227"] = "11 55 54", ["3228"] = "11 55 54",
["3231"] = "11 55 52", ["3232"] = "11 55 52", ["3233"] = "11 55 52", ["3234"] = "11 55 52", ["3235"] = "11 55 52", ["3236"] = "11 55 52", ["3237"] = "11 55 54", ["3238"] = "11 55 54",
["3241"] = "11 55 52", ["3242"] = "11 55 52", ["3243"] = "11 55 52", ["3244"] = "11 55 52", ["3245"] = "11 55 52", ["3246"] = "11 55 52", ["3247"] = "11 55 54", ["3248"] = "11 55 54",
["3251"] = "11 55 52", ["3252"] = "11 55 52", ["3253"] = "11 55 52", ["3254"] = "11 55 52", ["3255"] = "11 55 52", ["3256"] = "11 55 52", ["3257"] = "11 55 54", ["3258"] = "11 55 54",
["3261"] = "11 55 52", ["3262"] = "11 55 52", ["3263"] = "11 55 52", ["3264"] = "11 55 52", ["3265"] = "11 55 52", ["3266"] = "11 55 52", ["3267"] = "11 55 54", ["3268"] = "11 55 54",
["3271"] = "11 5 52", ["3272"] = "11 5 52", ["3273"] = "11 5 52", ["3274"] = "11 5 52", ["3275"] = "11 5 52", ["3276"] = "11 5 52", ["3277"] = "11 5 54", ["3278"] = "11 5 54",
["3281"] = "11 5 52", ["3282"] = "11 5 52", ["3283"] = "11 5 52", ["3284"] = "11 5 52", ["3285"] = "11 5 52", ["3286"] = "11 5 52", ["3287"] = "11 5 54", ["3288"] = "11 5 54",
["3311"] = "335 55 52", ["3312"] = "335 55 52", ["3313"] = "335 55 52", ["3314"] = "335 55 52", ["3315"] = "335 55 52", ["3316"] = "335 55 52", ["3317"] = "335 55 54", ["3318"] = "335 55 54",
["3321"] = "335 55 52", ["3322"] = "335 55 52", ["3323"] = "335 55 52", ["3324"] = "335 55 52", ["3325"] = "335 55 52", ["3326"] = "335 55 52", ["3327"] = "335 55 54", ["3328"] = "335 55 54",
["3331"] = "335 55 52", ["3332"] = "335 55 52", ["3333"] = "335 55 52", ["3334"] = "335 55 52", ["3335"] = "335 55 52", ["3336"] = "335 55 52", ["3337"] = "335 55 54", ["3338"] = "335 55 54",
["3341"] = "335 55 52", ["3342"] = "335 55 52", ["3343"] = "335 55 52", ["3344"] = "335 55 52", ["3345"] = "335 55 52", ["3346"] = "335 55 52", ["3347"] = "335 55 54", ["3348"] = "335 55 54",
["3351"] = "335 55 52", ["3352"] = "335 55 52", ["3353"] = "335 55 52", ["3354"] = "335 55 52", ["3355"] = "335 55 52", ["3356"] = "335 55 52", ["3357"] = "335 55 54", ["3358"] = "335 55 54",
["3361"] = "335 55 52", ["3362"] = "335 55 52", ["3363"] = "335 55 52", ["3364"] = "335 55 52", ["3365"] = "335 55 52", ["3366"] = "335 55 52", ["3367"] = "335 55 54", ["3368"] = "335 55 54",
["3371"] = "335 5 52", ["3372"] = "335 5 52", ["3373"] = "335 5 52", ["3374"] = "335 5 52", ["3375"] = "335 5 52", ["3376"] = "335 5 52", ["3377"] = "335 5 54", ["3378"] = "335 5 54",
["3381"] = "335 5 52", ["3382"] = "335 5 52", ["3383"] = "335 5 52", ["3384"] = "335 5 52", ["3385"] = "335 5 52", ["3386"] = "335 5 52", ["3387"] = "335 5 54", ["3388"] = "335 5 54",
["3411"] = "115 55 52", ["3412"] = "115 55 52", ["3413"] = "115 55 52", ["3414"] = "115 55 52", ["3415"] = "115 55 52", ["3416"] = "115 55 52", ["3417"] = "115 55 54", ["3418"] = "115 55 54",
["3421"] = "115 55 52", ["3422"] = "115 55 52", ["3423"] = "115 55 52", ["3424"] = "115 55 52", ["3425"] = "115 55 52", ["3426"] = "115 55 52", ["3427"] = "115 55 54", ["3428"] = "115 55 54",
["3431"] = "115 55 52", ["3432"] = "115 55 52", ["3433"] = "115 55 52", ["3434"] = "115 55 52", ["3435"] = "115 55 52", ["3436"] = "115 55 52", ["3437"] = "115 55 54", ["3438"] = "115 55 54",
["3441"] = "115 55 52", ["3442"] = "115 55 52", ["3443"] = "115 55 52", ["3444"] = "115 55 52", ["3445"] = "115 55 52", ["3446"] = "115 55 52", ["3447"] = "115 55 54", ["3448"] = "115 55 54",
["3451"] = "115 55 52", ["3452"] = "115 55 52", ["3453"] = "115 55 52", ["3454"] = "115 55 52", ["3455"] = "115 55 52", ["3456"] = "115 55 52", ["3457"] = "115 55 54", ["3458"] = "115 55 54",
["3461"] = "115 55 52", ["3462"] = "115 55 52", ["3463"] = "115 55 52", ["3464"] = "115 55 52", ["3465"] = "115 55 52", ["3466"] = "115 55 52", ["3467"] = "115 55 54", ["3468"] = "115 55 54",
["3471"] = "115 5 52", ["3472"] = "115 5 52", ["3473"] = "115 5 52", ["3474"] = "115 5 52", ["3475"] = "115 5 52", ["3476"] = "115 5 52", ["3477"] = "115 5 54", ["3478"] = "115 5 54",
["3481"] = "115 5 52", ["3482"] = "115 5 52", ["3483"] = "115 5 52", ["3484"] = "115 5 52", ["3485"] = "115 5 52", ["3486"] = "115 5 52", ["3487"] = "115 5 54", ["3488"] = "115 5 54",
["3511"] = "33 33 33", ["3512"] = "33 33 33", ["3513"] = "33 33 33", ["3514"] = "33 33 33", ["3515"] = "33 33 33", ["3516"] = "33 33 33", ["3517"] = "33 33 3", ["3518"] = "33 33 3",
["3521"] = "33 33 33", ["3522"] = "33 33 33", ["3523"] = "33 33 33", ["3524"] = "33 33 33", ["3525"] = "33 33 33", ["3526"] = "33 33 33", ["3527"] = "33 33 3", ["3528"] = "33 33 3",
["3531"] = "33 33 33", ["3532"] = "33 33 33", ["3533"] = "33 33 33", ["3534"] = "33 33 33", ["3535"] = "33 33 33", ["3536"] = "33 33 33", ["3537"] = "33 33 3", ["3538"] = "33 33 3",
["3541"] = "33 33 33", ["3542"] = "33 33 33", ["3543"] = "33 33 33", ["3544"] = "33 33 33", ["3545"] = "33 33 33", ["3546"] = "33 33 33", ["3547"] = "33 33 3", ["3548"] = "33 33 3",
["3551"] = "33 33 33", ["3552"] = "33 33 33", ["3553"] = "33 33 33", ["3554"] = "33 33 33", ["3555"] = "33 33 33", ["3556"] = "33 33 33", ["3557"] = "33 33 3", ["3558"] = "33 33 3",
["3561"] = "33 33 33", ["3562"] = "33 33 33", ["3563"] = "33 33 33", ["3564"] = "33 33 33", ["3565"] = "33 33 33", ["3566"] = "33 33 33", ["3567"] = "33 33 3", ["3568"] = "33 33 3",
["3571"] = "33 3 33", ["3572"] = "33 3 33", ["3573"] = "33 3 33", ["3574"] = "33 3 33", ["3575"] = "33 3 33", ["3576"] = "33 3 33", ["3577"] = "33 3 3", ["3578"] = "33 3 3",
["3581"] = "33 3 33", ["3582"] = "33 3 33", ["3583"] = "33 3 33", ["3584"] = "33 3 33", ["3585"] = "33 3 33", ["3586"] = "33 3 33", ["3587"] = "33 3 3", ["3588"] = "33 3 3",
["3611"] = "11 11 11", ["3612"] = "11 11 11", ["3613"] = "11 11 11", ["3614"] = "11 11 11", ["3615"] = "11 11 11", ["3616"] = "11 11 11", ["3617"] = "11 11 1", ["3618"] = "11 11 1",
["3621"] = "11 11 11", ["3622"] = "11 11 11", ["3623"] = "11 11 11", ["3624"] = "11 11 11", ["3625"] = "11 11 11", ["3626"] = "11 11 11", ["3627"] = "11 11 1", ["3628"] = "11 11 1",
["3631"] = "11 11 11", ["3632"] = "11 11 11", ["3633"] = "11 11 11", ["3634"] = "11 11 11", ["3635"] = "11 11 11", ["3636"] = "11 11 11", ["3637"] = "11 11 1", ["3638"] = "11 11 1",
["3641"] = "11 11 11", ["3642"] = "11 11 11", ["3643"] = "11 11 11", ["3644"] = "11 11 11", ["3645"] = "11 11 11", ["3646"] = "11 11 11", ["3647"] = "11 11 1", ["3648"] = "11 11 1",
["3651"] = "11 11 11", ["3652"] = "11 11 11", ["3653"] = "11 11 11", ["3654"] = "11 11 11", ["3655"] = "11 11 11", ["3656"] = "11 11 11", ["3657"] = "11 11 1", ["3658"] = "11 11 1",
["3661"] = "11 11 11", ["3662"] = "11 11 11", ["3663"] = "11 11 11", ["3664"] = "11 11 11", ["3665"] = "11 11 11", ["3666"] = "11 11 11", ["3667"] = "11 11 1", ["3668"] = "11 11 1",
["3671"] = "11 1 11", ["3672"] = "11 1 11", ["3673"] = "11 1 11", ["3674"] = "11 1 11", ["3675"] = "11 1 11", ["3676"] = "11 1 11", ["3677"] = "11 1 1", ["3678"] = "11 1 1",
["3681"] = "11 1 11", ["3682"] = "11 1 11", ["3683"] = "11 1 11", ["3684"] = "11 1 11", ["3685"] = "11 1 11", ["3686"] = "11 1 11", ["3687"] = "11 1 1", ["3688"] = "11 1 1",
["3711"] = "3 55 52", ["3712"] = "3 55 52", ["3713"] = "3 55 52", ["3714"] = "3 55 52", ["3715"] = "3 55 52", ["3716"] = "3 55 52", ["3717"] = "3 55 54", ["3718"] = "3 55 54",
["3721"] = "3 55 52", ["3722"] = "3 55 52", ["3723"] = "3 55 52", ["3724"] = "3 55 52", ["3725"] = "3 55 52", ["3726"] = "3 55 52", ["3727"] = "3 55 54", ["3728"] = "3 55 54",
["3731"] = "3 55 52", ["3732"] = "3 55 52", ["3733"] = "3 55 52", ["3734"] = "3 55 52", ["3735"] = "3 55 52", ["3736"] = "3 55 52", ["3737"] = "3 55 54", ["3738"] = "3 55 54",
["3741"] = "3 55 52", ["3742"] = "3 55 52", ["3743"] = "3 55 52", ["3744"] = "3 55 52", ["3745"] = "3 55 52", ["3746"] = "3 55 52", ["3747"] = "3 55 54", ["3748"] = "3 55 54",
["3751"] = "3 55 52", ["3752"] = "3 55 52", ["3753"] = "3 55 52", ["3754"] = "3 55 52", ["3755"] = "3 55 52", ["3756"] = "3 55 52", ["3757"] = "3 55 54", ["3758"] = "3 55 54",
["3761"] = "3 55 52", ["3762"] = "3 55 52", ["3763"] = "3 55 52", ["3764"] = "3 55 52", ["3765"] = "3 55 52", ["3766"] = "3 55 52", ["3767"] = "3 55 54", ["3768"] = "3 55 54",
["3771"] = "3 5 52", ["3772"] = "3 5 52", ["3773"] = "3 5 52", ["3774"] = "3 5 52", ["3775"] = "3 5 52", ["3776"] = "3 5 52", ["3777"] = "3 5 54", ["3778"] = "3 5 54",
["3781"] = "3 5 52", ["3782"] = "3 5 52", ["3783"] = "3 5 52", ["3784"] = "3 5 52", ["3785"] = "3 5 52", ["3786"] = "3 5 52", ["3787"] = "3 5 54", ["3788"] = "3 5 54",
["3811"] = "1 55 52", ["3812"] = "1 55 52", ["3813"] = "1 55 52", ["3814"] = "1 55 52", ["3815"] = "1 55 52", ["3816"] = "1 55 52", ["3817"] = "1 55 54", ["3818"] = "1 55 54",
["3821"] = "1 55 52", ["3822"] = "1 55 52", ["3823"] = "1 55 52", ["3824"] = "1 55 52", ["3825"] = "1 55 52", ["3826"] = "1 55 52", ["3827"] = "1 55 54", ["3828"] = "1 55 54",
["3831"] = "1 55 52", ["3832"] = "1 55 52", ["3833"] = "1 55 52", ["3834"] = "1 55 52", ["3835"] = "1 55 52", ["3836"] = "1 55 52", ["3837"] = "1 55 54", ["3838"] = "1 55 54",
["3841"] = "1 55 52", ["3842"] = "1 55 52", ["3843"] = "1 55 52", ["3844"] = "1 55 52", ["3845"] = "1 55 52", ["3846"] = "1 55 52", ["3847"] = "1 55 54", ["3848"] = "1 55 54",
["3851"] = "1 55 52", ["3852"] = "1 55 52", ["3853"] = "1 55 52", ["3854"] = "1 55 52", ["3855"] = "1 55 52", ["3856"] = "1 55 52", ["3857"] = "1 55 54", ["3858"] = "1 55 54",
["3861"] = "1 55 52", ["3862"] = "1 55 52", ["3863"] = "1 55 52", ["3864"] = "1 55 52", ["3865"] = "1 55 52", ["3866"] = "1 55 52", ["3867"] = "1 55 54", ["3868"] = "1 55 54",
["3871"] = "1 5 52", ["3872"] = "1 5 52", ["3873"] = "1 5 52", ["3874"] = "1 5 52", ["3875"] = "1 5 52", ["3876"] = "1 5 52", ["3877"] = "1 5 54", ["3878"] = "1 5 54",
["3881"] = "1 5 52", ["3882"] = "1 5 52", ["3883"] = "1 5 52", ["3884"] = "1 5 52", ["3885"] = "1 5 52", ["3886"] = "1 5 52", ["3887"] = "1 5 54", ["3888"] = "1 5 54",
--LPS for numbers
["21N1"] = "33 52", ["21N2"] = "33 52", ["21N3"] = "33 55", ["21N4"] = "33 55", ["21N5"] = "33 55", ["21N6"] = "33 55", ["21N7"] = "33 55", ["21N8"] = "33 55",
["22N1"] = "11 52", ["22N2"] = "11 52", ["22N3"] = "11 55", ["22N4"] = "11 55", ["22N5"] = "11 55", ["22N6"] = "11 55", ["22N7"] = "11 55", ["22N8"] = "11 55",
["23N1"] = "55 52", ["23N2"] = "55 52", ["23N3"] = "55 55", ["23N4"] = "55 55", ["23N5"] = "55 55", ["23N6"] = "55 55", ["23N7"] = "55 55", ["23N8"] = "55 55",
["24N1"] = "115 52", ["24N2"] = "115 52", ["24N3"] = "115 55", ["24N4"] = "115 55", ["24N5"] = "115 55", ["24N6"] = "115 55", ["24N7"] = "115 55", ["24N8"] = "115 55",
["25N1"] = "55 52", ["25N2"] = "55 52", ["25N3"] = "55 55", ["25N4"] = "55 55", ["25N5"] = "55 55", ["25N6"] = "55 55", ["25N7"] = "55 55", ["25N8"] = "55 55",
["26N1"] = "11 52", ["26N2"] = "11 52", ["26N3"] = "11 55", ["26N4"] = "11 55", ["26N5"] = "11 55", ["26N6"] = "11 55", ["26N7"] = "11 55", ["26N8"] = "11 55",
["27N1"] = "33 52", ["27N2"] = "33 52", ["27N3"] = "33 55", ["27N4"] = "33 55", ["27N5"] = "33 55", ["27N6"] = "33 55", ["27N7"] = "33 55", ["27N8"] = "33 55",
["28N1"] = "11 52", ["28N2"] = "11 52", ["28N3"] = "11 55", ["28N4"] = "11 55", ["28N5"] = "11 55", ["28N6"] = "11 55", ["28N7"] = "11 55", ["28N8"] = "11 55",
["31N1"] = "33 52 55", ["31N2"] = "33 52 55", ["31N3"] = "33 55 55", ["31N4"] = "33 55 55", ["31N5"] = "33 55 55", ["31N6"] = "33 55 55", ["31N7"] = "33 55 55", ["31N8"] = "33 55 55",
["32N1"] = "11 52 55", ["32N2"] = "11 52 55", ["32N3"] = "11 55 55", ["32N4"] = "11 55 55", ["32N5"] = "11 55 55", ["32N6"] = "11 55 55", ["32N7"] = "11 55 55", ["32N8"] = "11 55 55",
["33N1"] = "55 52 55", ["33N2"] = "55 52 55", ["33N3"] = "55 55 55", ["33N4"] = "55 55 55", ["33N5"] = "55 55 55", ["33N6"] = "55 55 55", ["33N7"] = "55 55 55", ["33N8"] = "55 55 55",
["34N1"] = "115 52 55", ["34N2"] = "115 52 55", ["34N3"] = "115 55 55", ["34N4"] = "115 55 55", ["34N5"] = "115 55 55", ["34N6"] = "115 55 55", ["34N7"] = "115 55 55", ["34N8"] = "115 55 55",
["35N1"] = "55 52 55", ["35N2"] = "55 52 55", ["35N3"] = "55 55 55", ["35N4"] = "55 55 55", ["35N5"] = "55 55 55", ["35N6"] = "55 55 55", ["35N7"] = "55 55 55", ["35N8"] = "55 55 55",
["36N1"] = "11 52 55", ["36N2"] = "11 52 55", ["36N3"] = "11 55 55", ["36N4"] = "11 55 55", ["36N5"] = "11 55 55", ["36N6"] = "11 55 55", ["36N7"] = "11 55 55", ["36N8"] = "11 55 55",
["37N1"] = "33 52 55", ["37N2"] = "33 52 55", ["37N3"] = "33 55 55", ["37N4"] = "33 55 55", ["37N5"] = "33 55 55", ["37N6"] = "33 55 55", ["37N7"] = "33 55 55", ["37N8"] = "33 55 55",
["38N1"] = "11 52 55", ["38N2"] = "11 52 55", ["38N3"] = "11 55 55", ["38N4"] = "11 55 55", ["38N5"] = "11 55 55", ["38N6"] = "11 55 55", ["38N7"] = "11 55 55", ["38N8"] = "11 55 55",
--LPS for classifiers
["211C"] = "33 55", ["212C"] = "33 55", ["213C"] = "33 55", ["214C"] = "33 55", ["215C"] = "33 55", ["216C"] = "33 55", ["217C"] = "33 55", ["218C"] = "33 55",
["221C"] = "11 55", ["222C"] = "11 55", ["223C"] = "11 55", ["224C"] = "11 55", ["225C"] = "11 55", ["226C"] = "11 55", ["227C"] = "11 55", ["228C"] = "11 55",
["231C"] = "55 55", ["232C"] = "55 55", ["233C"] = "55 55", ["234C"] = "55 55", ["235C"] = "55 55", ["236C"] = "55 55", ["237C"] = "55 55", ["238C"] = "55 55",
["241C"] = "115 55", ["242C"] = "115 55", ["243C"] = "115 55", ["244C"] = "115 55", ["245C"] = "115 55", ["246C"] = "115 55", ["247C"] = "115 55", ["248C"] = "115 55",
["251C"] = "55 55", ["255C"] = "55 55", ["253C"] = "55 55", ["254C"] = "55 55", ["255C"] = "55 55", ["256C"] = "55 55", ["257C"] = "55 55", ["258C"] = "55 55",
["261C"] = "11 55", ["262C"] = "11 55", ["263C"] = "11 55", ["264C"] = "11 55", ["265C"] = "11 55", ["266C"] = "11 55", ["267C"] = "11 55", ["268C"] = "11 55",
["271C"] = "33 55", ["272C"] = "33 55", ["273C"] = "33 55", ["274C"] = "33 55", ["275C"] = "33 55", ["276C"] = "33 55", ["277C"] = "33 55", ["278C"] = "33 55",
["281C"] = "11 55", ["282C"] = "11 55", ["283C"] = "11 55", ["284C"] = "11 55", ["285C"] = "11 55", ["286C"] = "11 55", ["287C"] = "11 55", ["288C"] = "11 55",
["311C"] = "33 55 55", ["312C"] = "33 55 55", ["313C"] = "33 55 55", ["314C"] = "33 55 55", ["315C"] = "33 55 55", ["316C"] = "33 55 55", ["317C"] = "33 55 55", ["318C"] = "33 55 55",
["321C"] = "11 55 55", ["322C"] = "11 55 55", ["323C"] = "11 55 55", ["324C"] = "11 55 55", ["325C"] = "11 55 55", ["326C"] = "11 55 55", ["327C"] = "11 55 55", ["328C"] = "11 55 55",
["331C"] = "55 55 55", ["332C"] = "55 55 55", ["333C"] = "55 55 55", ["334C"] = "55 55 55", ["335C"] = "55 55 55", ["336C"] = "55 55 55", ["337C"] = "55 55 55", ["338C"] = "55 55 55",
["341C"] = "115 55 55", ["342C"] = "115 55 55", ["343C"] = "115 55 55", ["344C"] = "115 55 55", ["345C"] = "115 55 55", ["346C"] = "115 55 55", ["347C"] = "115 55 55", ["348C"] = "115 55 55",
["351C"] = "55 55 55", ["355C"] = "55 55 55", ["353C"] = "55 55 55", ["354C"] = "55 55 55", ["355C"] = "55 55 55", ["356C"] = "55 55 55", ["357C"] = "55 55 55", ["358C"] = "55 55 55",
["361C"] = "11 55 55", ["362C"] = "11 55 55", ["363C"] = "11 55 55", ["364C"] = "11 55 55", ["365C"] = "11 55 55", ["366C"] = "11 55 55", ["367C"] = "11 55 55", ["368C"] = "11 55 55",
["371C"] = "33 55 55", ["372C"] = "33 55 55", ["373C"] = "33 55 55", ["374C"] = "33 55 55", ["375C"] = "33 55 55", ["376C"] = "33 55 55", ["377C"] = "33 55 55", ["378C"] = "33 55 55",
["381C"] = "11 55 55", ["382C"] = "11 55 55", ["383C"] = "11 55 55", ["384C"] = "11 55 55", ["385C"] = "11 55 55", ["386C"] = "11 55 55", ["387C"] = "11 55 55", ["388C"] = "11 55 55",
--verb-SFP disyllabic ("單音詞和語助詞")
["211P"] = "33 52", ["212P"] = "55 52", ["214P"] = "55 52", ["215P"] = "33 55", ["216P"] = "33 55", ["217P"] = "55 54", ["218P"] = "55 54",
["221P"] = "11 52", ["222P"] = "115 52", ["224P"] = "115 52", ["225P"] = "11 55", ["226P"] = "11 55", ["227P"] = "115 54", ["228P"] = "115 54",
["231P"] = "335 52", ["232P"] = "33 52", ["234P"] = "33 55", ["235P"] = "335 52", ["236P"] = "335 52", ["237P"] = "33 55", ["238P"] = "33 55",
["241P"] = "115 52", ["242P"] = "11 52", ["244P"] = "11 55", ["245P"] = "115 52", ["246P"] = "115 52", ["247P"] = "11 55", ["248P"] = "11 55",
["251P"] = "33 55", ["252P"] = "33 33", ["254P"] = "33 33", ["255P"] = "33 33", ["256P"] = "33 33", ["257P"] = "33 33", ["258P"] = "33 33",
["261P"] = "11 55", ["262P"] = "11 11", ["264P"] = "11 11", ["265P"] = "11 11", ["266P"] = "11 11", ["267P"] = "11 11", ["268P"] = "11 11",
["271P"] = "33 55", ["272P"] = "33 52", ["274P"] = "33 55", ["275P"] = "33 55", ["276P"] = "33 55", ["277P"] = "33 55", ["278P"] = "33 55",
["281P"] = "11 55", ["282P"] = "11 52", ["284P"] = "11 55", ["285P"] = "11 55", ["286P"] = "11 55", ["287P"] = "11 55", ["288P"] = "11 55",
--verb object RPS ("述賓")
["211O"] = "33 52", ["212O"] = "55 231", ["213O"] = "55 335", ["214O"] = "55 113", ["215O"] = "33 55", ["216O"] = "55 11", ["217O"] = "55 45", ["218O"] = "55 23",
["221O"] = "11 52", ["222O"] = "55 231", ["223O"] = "55 335", ["224O"] = "55 113", ["225O"] = "11 55", ["226O"] = "55 11", ["227O"] = "55 45", ["228O"] = "55 23",
["231O"] = "33 52", ["232O"] = "55 231", ["233O"] = "55 335", ["234O"] = "55 113", ["235O"] = "33 55", ["236O"] = "55 11", ["237O"] = "55 45", ["238O"] = "55 23",
["241O"] = "11 52", ["242O"] = "55 231", ["243O"] = "55 335", ["244O"] = "55 113", ["245O"] = "11 55", ["246O"] = "55 11", ["247O"] = "55 45", ["248O"] = "55 23",
["251O"] = "33 52", ["252O"] = "55 231", ["253O"] = "55 335", ["254O"] = "55 113", ["255O"] = "33 55", ["256O"] = "55 11", ["257O"] = "55 45", ["258O"] = "55 23",
["261O"] = "11 52", ["262O"] = "55 231", ["263O"] = "55 335", ["264O"] = "55 113", ["265O"] = "11 55", ["266O"] = "55 11", ["267O"] = "55 45", ["268O"] = "55 23",
["271O"] = "33 52", ["272O"] = "55 231", ["273O"] = "55 335", ["274O"] = "55 113", ["275O"] = "33 55", ["276O"] = "55 11", ["277O"] = "55 45", ["278O"] = "55 23",
["281O"] = "11 52", ["282O"] = "55 231", ["283O"] = "55 335", ["284O"] = "55 113", ["285O"] = "11 55", ["286O"] = "55 11", ["287O"] = "55 45", ["288O"] = "55 23",
--noun verb/adjective RPS ("主謂")
["1A"] = "55", ["2A"] = "115", ["3A"] = "335", ["4A"] = "55", ["5A"] = "55", ["6A"] = "55", ["7A"] = "55", ["8A"] = "25"
},
-- [""] = "",
['cx'] = {
["11"] = "324", ["12"] = "14", ["15"] = "43", ["17"] = "45", ["18"] = "31",
["211"] = "42 334", ["212"] = "42 324", ["213"] = "45 41", ["214"] = "45 41", ["215"] = "45 41", ["216"] = "45 51", ["217"] = "42 54", ["218"] = "42 34",
["221"] = "32 334", ["222"] = "32 224", ["223"] = "35 41", ["224"] = "35 51", ["225"] = "35 41", ["226"] = "35 51", ["227"] = "32 54", ["228"] = "32 34",
["231"] = "42 51", ["232"] = "42 451", ["233"] = "42 51", ["234"] = "42 451", ["235"] = "42 51", ["236"] = "42 451", ["237"] = "42 54", ["238"] = "42 34",
["241"] = "32 51", ["242"] = "32 451", ["243"] = "24 44", ["244"] = "24 44", ["245"] = "24 44", ["246"] = "24 44", ["247"] = "24 55", ["248"] = "24 55",
["251"] = "33 31", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 31", ["256"] = "33 31", ["257"] = "44 54", ["258"] = "33 343",
["261"] = "21 44", ["262"] = "21 344", ["263"] = "21 44", ["264"] = "21 344", ["265"] = "21 44", ["266"] = "21 344", ["267"] = "31 55", ["268"] = "32 55",
["271"] = "44 31", ["272"] = "44 31", ["273"] = "44 31", ["274"] = "44 31", ["275"] = "44 31", ["276"] = "44 31", ["277"] = "44 32", ["278"] = "44 32",
["281"] = "32 51", ["282"] = "32 451", ["283"] = "32 44", ["284"] = "32 344", ["285"] = "32 44", ["286"] = "32 344", ["287"] = "32 55", ["288"] = "32 35",
},
['nb'] = {
["10"] = "",
["11"] = "52", ["12"] = "313", ["13"] = "325", ["14"] = "113", ["15"] = "55", ["16"] = "113", ["17"] = "55", ["18"] = "12",
["21"] = "33 51", ["22"] = "22 51", ["23"] = "33 35", ["24"] = "24 33", ["25"] = "55 33", ["26"] = "22 44", ["27"] = "55 33", ["28"] = "22 35",
["210"] = "33 44", ["240"] = "23 44", ["260"] = "22 35", ["270"] = "33 34",
["31"] = "33 55 31", ["32"] = "22 44 55", ["33"] = "33 44 55", ["34"] = "22 33 31", ["35"] = "55 33 31", ["36"] = "22 55 31", ["37"] = "55 33 31", ["38"] = "22 34 51",
--RPS
["s"] = "21", ["multiple"] = ""
},
['zs'] = {
["10"] = "",
["11"] = "53", ["12"] = "22", ["13"] = "35", ["14"] = "24", ["15"] = "44", ["16"] = "13", ["17"] = "55", ["18"] = "12",
}
}
return data
24ndtjred3j8ga5waeuvn6gtu4jzsr1
Module:wuu-pron/Taizhou
828
121056
234944
185485
2025-03-21T09:11:38Z
en>ND381
0
234944
Scribunto
text/plain
local export = {}
-- todo:
-- 輕聲: logistics ??
-- auto nasal mutation (?)
-- sanmen sandhi
local loc_names = {
['hy'] = "Huangyan", --當代吳語研究 備註:該方言點暫無學堂拼音,該地點現以「學堂風」拼音拼寫
['lh'] = "Linhai", --臨海方言雙音節連讀變調實驗研究 + 浙江臨海方言音系
['sm'] = "Sanmen", --吳語三門方言研究
['tt'] = "Tiantai", --天台方言研究 + 天台縣誌 !! NOT 語保 !!
['wl'] = "Wenling", --浙江温嶺方言研究 + 温嶺縣誌
-- ['nh'] = "Ninghai" will be added in the future maybe
}
--all wiki pages link to "Taizhou dialect" except Tiantai, which links to "Tiantai dialect"
local order = { 'hy', 'lh', 'sm', 'tt', 'wl'
}
local ipa_initial = {
["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l",
["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ",
["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ",
["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ",
[""] = "",
}
local ipa_final = {
['hy'] = {
["ou"] = "əu", ["o"] = "o", ["a"] = "a", ["e"] = "e", ["au"] = "ɒ", ["ae"] = "ɛ", ["oe"] = "ø", ["eu"] = "iɤ",
["i"] = "i", ["yi"] = "iɪ", ["ia"] = "ia", ["ie"] = "ie", ["iau"] = "iɒ", ["iae"] = "iɛ", ["ioe"] = "uø", ["ieu"] = "iu",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ",
["iu"] = "y",
["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɒ̃",
["ian"] = "iã", ["in"] = "iɪŋ", ["ion"] = "yoŋ",
["uan"] = "uã", ["uen"] = "uəŋ", ["uaon"] = "uɒ̃",
["iun"] = "yɪŋ",
["aq"] = "ɐʔ", ["aeq"] = "ɛʔ", ["oq"] = "ɔʔ",
["iaq"] = "iɐʔ", ["iaeq"] = "ieʔ", ["ioq"] = "yɔʔ",
["uaq"] = "uɐʔ", ["iuaeq"] = "yɛʔ", ["uoq"] = "uɔʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ",
},
['lh'] = {
["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "œ",
["i"] = "i", ["ia"] = "ia", ["ie"] = "iɪ", ["ioe"] = "yø", ["iau"] = "iɔ", ["ieu"] = "iəu",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uø",
["iu"] = "y",
["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃",
["ian"] = "iã", ["in"] = "iəŋ", ["ion"] = "ioŋ", ["iaon"] = "yɔ̃",
["uan"] = "uã", ["uen"] = "uəŋ",
["iun"] = "yəŋ",
["aq"] = "ɐʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ",
["iaq"] = "iɐʔ", ["iq"] = "ieʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yoʔ",
["uaq"] = "uɐʔ", ["ueq"] = "uəʔ",
["iuq"] = "yøʔ",
["er"] = "l̩", ["y"] = "z̩"
},
['tt'] = { --與學堂一致,分拆縣誌所合併的促韻尾
["a"] = "a", ["e"] = "e", ["oe"] = "ø", ["o"] = "o", ["ei"] = "ei", ["au"] = "au", ["ou"] = "ou", ["eu"] = "ɤu",
["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ioe"] = "yø", ["iau"] = "iau", ["ieu"] = "iɤu",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø", ["uo"] = "uo", ["uei"] = "uei",
["iu"] = "y",
["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃",
["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ",["iaon"] = "yɔ̃",
["uan"] = "uaŋ", ["uen"] = "uəŋ", ["uaon"] = "uɔ̃",
["eq"] = "eʔ", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "uʔ",
["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yuʔ",
["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["uoeq"] = "uøʔ", ["uaoq"] = "uɔʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩"
},
['sm'] = { --Original book notation: discrepancies with 學堂 include: <ui> all merged into <ue> on wugniu, conservative-文讀 only. Wugniu scheme chosen
["a"] = "a", ["ae"] = "ɛ", ["au"] = "au", ["e"] = "e", ["eu"] = "ɤɯ", ["o"] = "o", ["oe"] = "ø", ["ou"] = "ʊ",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iau", ["ie"] = "ie", ["ieu"] = "iu~iɤɯ", ["iou"] = "iʊ", --<ieu> [iu] Shanglu, [iɤɯ] Xialu
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uo"] = "uo", ["uoe"] = "uø",
["iu"] = "y", ["io"] = "yo", ["ioe"] = "yø",
["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔŋ",
["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ", ["iaon"] = "yɔŋ", ["iun"] = "yŋ",
["aq"] = "aʔ", ["aeq"] = "ɛʔ", ["aoq"] = "ɔʔ", ["eq"] = "eʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ",
["iaq"] = "iaʔ", ["ieq"] = "iɪʔ",
[ "uaq" ] = "uaʔ", [ "uaeq" ] = "uɛʔ", [ "uaoq" ] = "uɔʔ", [ "ueq" ] = "uəʔ",
["iaoq"] = "iɔʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ",
["y"] = "z̩", ["yu"] = "z̩ʷ"
-- Book notation discrepancies with wugniu:
-- Book notation all -h instead of -q
-- Book notation yin and yang sonorant sets distinguished with apostrophe
-- Book notation tones are numbered 1-5, no dashes
-- Book notation has no ghi>y and ghu>w
-- Website eq = /əʔ/ vs book /eʔ/
-- Website iaoq = /iɔʔ/ vs book /yɔʔ/
-- Website an series = /ã/ vs book /aŋ/
-- Website aon series = /ɔ̃/ vs book /ɔŋ/
-- Book notation /yŋ/ <iuin> instead of wugniu <iun>
-- ["ih"] = "iʔ" vs ["ieh"] = "ieʔ" merged on wugniu website as ["ieq"] = "iɪʔ"
-- ["ioeh"] = "yøʔ" vs ["iuih"] = "yʔ" merged on wugniu website as ["ioeq"] = "yøʔ"
-- Website Missing rime ["ui"] = "ui" (book notes: old literary reading)
-- Website Missing rime ["uoeh"] = "uøʔ"
-- Book notes that /uo/ merger into /o/ is very common in Southern parts
-- Book has no gn-, website does
},
['wl'] = {
["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["o"] = "o", ["oe"] = "ø", ["eu"] = "ɤ", ["ou"] = "ɯ",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ioe"] = "yø", ["ieu"] = "iɤ", ["iou"] = "iɯ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø",
["iu"] = "y",
["an"] = "ã", ["en"] = "ən", ["oen"] = "øn", ["eun"] = "ɤn", ["aon"] = "ɔ̃",
["ian"] = "iã", ["in"] = "in", ["ion"] = "yun", ["iaon"] = "yɔ̃",
["uan"] = "uã", ["uen"] = "uən", ["on"] = "un", ["uaon"] = "uɔ̃",
["iun"] = "yn",
["aq"] = "aʔ", ["eq"] = "əʔ", ["euq"] = "ɤʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ",
["er"] = "əl", ["y"] = "z̩"
}
}
local ipa_syllabic = {
["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍",
}
local ipa_tone_contours = {
["hy"] = {
["10"] = "",
["11"] = "52", ["12"] = "31", ["15"] = "44", ["16"] = "113", ["17"] = "55", ["18"] = "12",
["211"] = "35 51", ["212"] = "33 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "33 44", ["218"] = "33 33",
["21A3"] = "33 51", ["21A4"] = "33 51",
["221"] = "25 51", ["222"] = "22 51", ["223"] = "23 31", ["224"] = "23 31", ["225"] = "22 44", ["226"] = "22 44", ["227"] = "23 44", ["228"] = "23 33",
["22A3"] = "22 51",
["231"] = "33 31", ["232"] = "55 31", ["233"] = "33 31", ["234"] = "33 31", ["235"] = "31 44", ["236"] = "31 13", ["237"] = "31 44", ["238"] = "31 33",
["23A1"] = "31 13", ["23A2"] = "34 31", ["23A3"] = "33 51", ["23A4"] = "33 51",
["23B2"] = "31 13",
["241"] = "23 31", ["242"] = "55 31", ["243"] = "23 31", ["244"] = "23 31", ["245"] = "21 44", ["246"] = "21 13", ["247"] = "21 44", ["248"] = "21 33",
["24A1"] = "21 13", ["24A2"] = "21 13", ["24A3"] = "21 51", ["24A4"] = "21 51",
["251"] = "33 31", ["252"] = "31 13", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 44", ["256"] = "33 44", ["257"] = "33 44", ["258"] = "33 33",
["25A2"] = "33 31", ["25A3"] = "33 51", ["25A4"] = "24 31",
["25B2"] = "55 31", ["25B3"] = "34 31", ["25B4"] = "22 51",
["261"] = "23 31", ["262"] = "23 31", ["263"] = "23 31", ["264"] = "23 31", ["265"] = "23 44", ["266"] = "23 44", ["267"] = "23 44", ["268"] = "23 33",
["26A1"] = "21 13", ["26A2"] = "21 13", ["26A3"] = "21 13", ["26A4"] = "21 13",
["26B2"] = "22 51", ["26B3"] = "22 51", ["26B4"] = "22 51",
["271"] = "33 31", ["272"] = "44 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 44", ["276"] = "33 13", ["277"] = "33 44", ["278"] = "33 33",
["27A1"] = "33 13", ["27A2"] = "22 51",
["281"] = "22 31", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 44", ["286"] = "22 13", ["287"] = "22 44", ["288"] = "22 33",
["28A1"] = "22 13"
},
["lh"] = {
["10"] = "",
["11"] = "33", ["12"] = "22", ["13"] = "42", ["14"] = "21", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "12",
["211"] = "334 21", ["212"] = "33 42", ["213"] = "33 42", ["214"] = "33 42", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "33 55", ["218"] = "33 55",
["221"] = "334 21", ["222"] = "23 42", ["223"] = "33 42", ["224"] = "33 42", ["225"] = "23 55", ["226"] = "23 55", ["227"] = "33 55", ["228"] = "33 55",
["231"] = "33 32", ["232"] = "23 53", ["233"] = "32 42", ["234"] = "32 42", ["235"] = "32 55", ["236"] = "32 12", ["237"] = "32 55", ["238"] = "32 55",
["251"] = "23 53", ["252"] = "32 53", ["253"] = "23 42", ["254"] = "33 42", ["255"] = "33 55", ["256"] = "33 55", ["257"] = "33 55", ["258"] = "33 55",
["261"] = "32 53", ["262"] = "32 53", ["263"] = "23 42", ["264"] = "23 42", ["265"] = "33 55", ["266"] = "33 55", ["267"] = "33 55", ["268"] = "33 55",
["271"] = "22 33", ["272"] = "33 33", ["273"] = "33 42", ["274"] = "33 53", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 55", ["278"] = "33 55",
["281"] = "22 33", ["282"] = "33 33", ["283"] = "33 42", ["284"] = "33 53", ["285"] = "33 55", ["286"] = "33 13", ["287"] = "33 55", ["288"] = "33 23",
},
["tt"] = {
["10"] = "",
["11"] = "33", ["12"] = "224", ["13"] = "325", ["14"] = "214", ["15"] = "55", ["16"] = "35", ["17"] = "55", ["18"] = "23",
["211"] = "33 33", ["212"] = "55 22", ["213"] = "33 325", ["214"] = "22 334", ["215"] = "33 55", ["216"] = "33 35", ["217"] = "33 55", ["218"] = "22 23",
["221"] = "33 33", ["222"] = "35 22", ["223"] = "44 325", ["224"] = "44 334", ["225"] = "44 55", ["226"] = "33 35", ["227"] = "44 55", ["228"] = "44 23",
["231"] = "32 33", ["232"] = "32 224", ["233"] = "32 325", ["234"] = "32 214", ["235"] = "32 55", ["236"] = "32 35", ["237"] = "32 55", ["238"] = "32 23",
["241"] = "21 33", ["242"] = "21 224", ["243"] = "21 325", ["244"] = "21 214", ["245"] = "21 55", ["246"] = "21 35", ["247"] = "21 55", ["248"] = "21 23",
["251"] = "33 33", ["252"] = "33 335", ["253"] = "33 325", ["254"] = "33 214", ["255"] = "33 55", ["256"] = "33 35", ["257"] = "33 55", ["258"] = "33 23",
["261"] = "33 33", ["262"] = "33 33", ["263"] = "33 325", ["264"] = "33 214", ["265"] = "33 55", ["266"] = "33 35", ["267"] = "33 55", ["268"] = "33 23",
["271"] = "11 33", ["272"] = "11 224", ["273"] = "11 325", ["274"] = "11 214", ["275"] = "11 55", ["276"] = "11 35", ["277"] = "11 55", ["278"] = "11 23",
["281"] = "21 33", ["282"] = "21 224", ["283"] = "21 325", ["284"] = "21 214", ["285"] = "21 55", ["286"] = "21 35", ["287"] = "21 55", ["288"] = "21 23",
["1s"] = "51", ["2s"] = "51", ["3s"] = "51", ["4s"] = "51", ["5s"] = "31", ["6s"] = "31", ["7s"] = "31", ["8s"] = "31"
},
["sm"] = {
["11"] = "334", ["12"] = "223", ["13"] = "314", ["14"] = "213", ["15"] = "55", ["16"] = "55", ["17"] = "5", ["18"] = "3",
},
["wl"] = {
["10"] = "",
["11"] = "33", ["12"] = "31", ["13"] = "42", ["14"] = "31", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "22",
--mutated tones: they kinda just like happen?
["1R"] = "15", ["2R"] = "15", ["3R"] = "51", ["4R"] = "51", ["5R"] = "51", ["6R"] = "51", ["7R"] = "51", ["8R"] = "51",
["211"] = "55 31", ["212"] = "35 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "35 55", ["216"] = "35 55", ["217"] = "33 55", ["218"] = "33 22",
["221"] = "35 51", ["222"] = "14 51", ["223"] = "13 31", ["224"] = "13 31", ["225"] = "13 55", ["226"] = "13 55", ["227"] = "13 55", ["228"] = "13 22",
["231"] = "42 33", ["232"] = "55 51", ["233"] = "42 31", ["234"] = "42 31", ["235"] = "42 55", ["236"] = "42 13", ["237"] = "42 55", ["238"] = "42 22",
["241"] = "31 33", ["242"] = "55 51", ["243"] = "31 31", ["244"] = "31 31", ["245"] = "31 55", ["246"] = "31 13", ["247"] = "31 55", ["248"] = "31 22",
["251"] = "33 33", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "35 55", ["256"] = "35 55", ["257"] = "33 55", ["258"] = "33 22",
["261"] = "13 33", ["262"] = "13 31", ["263"] = "13 31", ["264"] = "13 31", ["265"] = "13 55", ["266"] = "35 55", ["267"] = "13 55", ["268"] = "13 22",
["271"] = "33 33", ["272"] = "55 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 22", ["278"] = "33 22",
["281"] = "22 33", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 55", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 22"
-- 1/3/4/6/8 + * = no change; 2 + * > 6 + *; 5 + * > 1 + *; 7 + * > /3/ + * (can treat as 1 + *)
}
}
-- minidict ignored for now
-- all code can be ripped from the Northern module, with these exceptions:
-- Huangyan: ensure that the sandhi chain letters are allowed (like in Jinhuanese's module): 23A7 ≠ 237
-- Linhai: k, kh, g, h + i, y = c, cʰ, ɟ, ç
-- Wenling: ensure that it allows for mutation: 5cie+7cioq>cion ← this input needs to be allowed
-- collapsed display will work like Northern Wu: one loc = loc name, two or more locs = "Taizhou"
1hizsssoowrvfam73u6r63053or57db
234945
234944
2026-05-26T07:14:19Z
Lee
19
[[:en:Module:wuu-pron/Taizhou]] වෙතින් එක් සංශෝධනයක්
234944
Scribunto
text/plain
local export = {}
-- todo:
-- 輕聲: logistics ??
-- auto nasal mutation (?)
-- sanmen sandhi
local loc_names = {
['hy'] = "Huangyan", --當代吳語研究 備註:該方言點暫無學堂拼音,該地點現以「學堂風」拼音拼寫
['lh'] = "Linhai", --臨海方言雙音節連讀變調實驗研究 + 浙江臨海方言音系
['sm'] = "Sanmen", --吳語三門方言研究
['tt'] = "Tiantai", --天台方言研究 + 天台縣誌 !! NOT 語保 !!
['wl'] = "Wenling", --浙江温嶺方言研究 + 温嶺縣誌
-- ['nh'] = "Ninghai" will be added in the future maybe
}
--all wiki pages link to "Taizhou dialect" except Tiantai, which links to "Tiantai dialect"
local order = { 'hy', 'lh', 'sm', 'tt', 'wl'
}
local ipa_initial = {
["p"] = "p", ["ph"] = "pʰ", ["b"] = "b", ["m"] = "m", ["f"] = "f", ["v"] = "v",
["t"] = "t", ["th"] = "tʰ", ["d"] = "d", ["n"] = "n", ["l"] = "l",
["ts"] = "t͡s", ["tsh"] = "t͡sʰ", ["s"] = "s", ["z"] = "z", ["c"] = "t͡ɕ", ["ch"] = "t͡ɕʰ",
["dz"] = "d͡z", ["j"] = "d͡ʑ", ["gn"] = "n̠ʲ", ["sh"] = "ɕ", ["zh"] = "ʑ",
["k"] = "k", ["kh"] = "kʰ", ["g"] = "ɡ", ["ng"] = "ŋ", ["h"] = "h", ["gh"] = "ɦ",
[""] = "",
}
local ipa_final = {
['hy'] = {
["ou"] = "əu", ["o"] = "o", ["a"] = "a", ["e"] = "e", ["au"] = "ɒ", ["ae"] = "ɛ", ["oe"] = "ø", ["eu"] = "iɤ",
["i"] = "i", ["yi"] = "iɪ", ["ia"] = "ia", ["ie"] = "ie", ["iau"] = "iɒ", ["iae"] = "iɛ", ["ioe"] = "uø", ["ieu"] = "iu",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uae"] = "uɛ",
["iu"] = "y",
["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɒ̃",
["ian"] = "iã", ["in"] = "iɪŋ", ["ion"] = "yoŋ",
["uan"] = "uã", ["uen"] = "uəŋ", ["uaon"] = "uɒ̃",
["iun"] = "yɪŋ",
["aq"] = "ɐʔ", ["aeq"] = "ɛʔ", ["oq"] = "ɔʔ",
["iaq"] = "iɐʔ", ["iaeq"] = "ieʔ", ["ioq"] = "yɔʔ",
["uaq"] = "uɐʔ", ["iuaeq"] = "yɛʔ", ["uoq"] = "uɔʔ",
["er"] = "əl", ["y"] = "z̩", ["yu"] = "z̩ʷ",
},
['lh'] = {
["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["oe"] = "ø", ["au"] = "ɔ", ["o"] = "o", ["eu"] = "œ",
["i"] = "i", ["ia"] = "ia", ["ie"] = "iɪ", ["ioe"] = "yø", ["iau"] = "iɔ", ["ieu"] = "iəu",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uoe"] = "uø",
["iu"] = "y",
["an"] = "ã", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃",
["ian"] = "iã", ["in"] = "iəŋ", ["ion"] = "ioŋ", ["iaon"] = "yɔ̃",
["uan"] = "uã", ["uen"] = "uəŋ",
["iun"] = "yəŋ",
["aq"] = "ɐʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "oʔ",
["iaq"] = "iɐʔ", ["iq"] = "ieʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yoʔ",
["uaq"] = "uɐʔ", ["ueq"] = "uəʔ",
["iuq"] = "yøʔ",
["er"] = "l̩", ["y"] = "z̩"
},
['tt'] = { --與學堂一致,分拆縣誌所合併的促韻尾
["a"] = "a", ["e"] = "e", ["oe"] = "ø", ["o"] = "o", ["ei"] = "ei", ["au"] = "au", ["ou"] = "ou", ["eu"] = "ɤu",
["i"] = "i", ["ia"] = "ia", ["ie"] = "ie", ["ioe"] = "yø", ["iau"] = "iau", ["ieu"] = "iɤu",
["u"] = "u", ["ua"] = "ua", ["ue"] = "ue", ["uoe"] = "uø", ["uo"] = "uo", ["uei"] = "uei",
["iu"] = "y",
["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔ̃",
["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ",["iaon"] = "yɔ̃",
["uan"] = "uaŋ", ["uen"] = "uəŋ", ["uaon"] = "uɔ̃",
["eq"] = "eʔ", ["aq"] = "aʔ", ["aeq"] = "æʔ", ["oeq"] = "øʔ", ["aoq"] = "ɔʔ", ["oq"] = "uʔ",
["iq"] = "iɪʔ", ["iaq"] = "iaʔ", ["iaeq"] = "iæʔ", ["iaoq"] = "yɔʔ", ["ioq"] = "yuʔ",
["ueq"] = "uəʔ", ["uaq"] = "uaʔ", ["uoeq"] = "uøʔ", ["uaoq"] = "uɔʔ",
["iuq"] = "yəʔ",
["er"] = "əl", ["y"] = "z̩"
},
['sm'] = { --Original book notation: discrepancies with 學堂 include: <ui> all merged into <ue> on wugniu, conservative-文讀 only. Wugniu scheme chosen
["a"] = "a", ["ae"] = "ɛ", ["au"] = "au", ["e"] = "e", ["eu"] = "ɤɯ", ["o"] = "o", ["oe"] = "ø", ["ou"] = "ʊ",
["i"] = "i", ["ia"] = "ia", ["iau"] = "iau", ["ie"] = "ie", ["ieu"] = "iu~iɤɯ", ["iou"] = "iʊ", --<ieu> [iu] Shanglu, [iɤɯ] Xialu
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["ue"] = "ue", ["uo"] = "uo", ["uoe"] = "uø",
["iu"] = "y", ["io"] = "yo", ["ioe"] = "yø",
["an"] = "aŋ", ["en"] = "əŋ", ["on"] = "oŋ", ["aon"] = "ɔŋ",
["ian"] = "iaŋ", ["in"] = "iŋ", ["ion"] = "yoŋ", ["iaon"] = "yɔŋ", ["iun"] = "yŋ",
["aq"] = "aʔ", ["aeq"] = "ɛʔ", ["aoq"] = "ɔʔ", ["eq"] = "eʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ",
["iaq"] = "iaʔ", ["ieq"] = "iɪʔ",
[ "uaq" ] = "uaʔ", [ "uaeq" ] = "uɛʔ", [ "uaoq" ] = "uɔʔ", [ "ueq" ] = "uəʔ",
["iaoq"] = "iɔʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ",
["y"] = "z̩", ["yu"] = "z̩ʷ"
-- Book notation discrepancies with wugniu:
-- Book notation all -h instead of -q
-- Book notation yin and yang sonorant sets distinguished with apostrophe
-- Book notation tones are numbered 1-5, no dashes
-- Book notation has no ghi>y and ghu>w
-- Website eq = /əʔ/ vs book /eʔ/
-- Website iaoq = /iɔʔ/ vs book /yɔʔ/
-- Website an series = /ã/ vs book /aŋ/
-- Website aon series = /ɔ̃/ vs book /ɔŋ/
-- Book notation /yŋ/ <iuin> instead of wugniu <iun>
-- ["ih"] = "iʔ" vs ["ieh"] = "ieʔ" merged on wugniu website as ["ieq"] = "iɪʔ"
-- ["ioeh"] = "yøʔ" vs ["iuih"] = "yʔ" merged on wugniu website as ["ioeq"] = "yøʔ"
-- Website Missing rime ["ui"] = "ui" (book notes: old literary reading)
-- Website Missing rime ["uoeh"] = "uøʔ"
-- Book notes that /uo/ merger into /o/ is very common in Southern parts
-- Book has no gn-, website does
},
['wl'] = {
["a"] = "a", ["ae"] = "ɛ", ["e"] = "e", ["au"] = "ɔ", ["o"] = "o", ["oe"] = "ø", ["eu"] = "ɤ", ["ou"] = "ɯ",
["i"] = "i", ["ia"] = "ia", ["iae"] = "iɛ", ["ie"] = "ie", ["iau"] = "iɔ", ["ioe"] = "yø", ["ieu"] = "iɤ", ["iou"] = "iɯ",
["u"] = "u", ["ua"] = "ua", ["uae"] = "uɛ", ["uoe"] = "uø",
["iu"] = "y",
["an"] = "ã", ["en"] = "ən", ["oen"] = "øn", ["eun"] = "ɤn", ["aon"] = "ɔ̃",
["ian"] = "iã", ["in"] = "in", ["ion"] = "yun", ["iaon"] = "yɔ̃",
["uan"] = "uã", ["uen"] = "uən", ["on"] = "un", ["uaon"] = "uɔ̃",
["iun"] = "yn",
["aq"] = "aʔ", ["eq"] = "əʔ", ["euq"] = "ɤʔ", ["oq"] = "oʔ", ["oeq"] = "øʔ",
["iaq"] = "iaʔ", ["iq"] = "iəʔ", ["ioq"] = "yoʔ", ["ioeq"] = "yøʔ",
["uaq"] = "uaʔ", ["ueq"] = "uəʔ", ["uoq"] = "uoʔ",
["er"] = "əl", ["y"] = "z̩"
}
}
local ipa_syllabic = {
["m"] = "m̩", ["n"] = "n̩", ["ng"] = "ŋ̍",
}
local ipa_tone_contours = {
["hy"] = {
["10"] = "",
["11"] = "52", ["12"] = "31", ["15"] = "44", ["16"] = "113", ["17"] = "55", ["18"] = "12",
["211"] = "35 51", ["212"] = "33 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "33 44", ["216"] = "33 44", ["217"] = "33 44", ["218"] = "33 33",
["21A3"] = "33 51", ["21A4"] = "33 51",
["221"] = "25 51", ["222"] = "22 51", ["223"] = "23 31", ["224"] = "23 31", ["225"] = "22 44", ["226"] = "22 44", ["227"] = "23 44", ["228"] = "23 33",
["22A3"] = "22 51",
["231"] = "33 31", ["232"] = "55 31", ["233"] = "33 31", ["234"] = "33 31", ["235"] = "31 44", ["236"] = "31 13", ["237"] = "31 44", ["238"] = "31 33",
["23A1"] = "31 13", ["23A2"] = "34 31", ["23A3"] = "33 51", ["23A4"] = "33 51",
["23B2"] = "31 13",
["241"] = "23 31", ["242"] = "55 31", ["243"] = "23 31", ["244"] = "23 31", ["245"] = "21 44", ["246"] = "21 13", ["247"] = "21 44", ["248"] = "21 33",
["24A1"] = "21 13", ["24A2"] = "21 13", ["24A3"] = "21 51", ["24A4"] = "21 51",
["251"] = "33 31", ["252"] = "31 13", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "33 44", ["256"] = "33 44", ["257"] = "33 44", ["258"] = "33 33",
["25A2"] = "33 31", ["25A3"] = "33 51", ["25A4"] = "24 31",
["25B2"] = "55 31", ["25B3"] = "34 31", ["25B4"] = "22 51",
["261"] = "23 31", ["262"] = "23 31", ["263"] = "23 31", ["264"] = "23 31", ["265"] = "23 44", ["266"] = "23 44", ["267"] = "23 44", ["268"] = "23 33",
["26A1"] = "21 13", ["26A2"] = "21 13", ["26A3"] = "21 13", ["26A4"] = "21 13",
["26B2"] = "22 51", ["26B3"] = "22 51", ["26B4"] = "22 51",
["271"] = "33 31", ["272"] = "44 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 44", ["276"] = "33 13", ["277"] = "33 44", ["278"] = "33 33",
["27A1"] = "33 13", ["27A2"] = "22 51",
["281"] = "22 31", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 44", ["286"] = "22 13", ["287"] = "22 44", ["288"] = "22 33",
["28A1"] = "22 13"
},
["lh"] = {
["10"] = "",
["11"] = "33", ["12"] = "22", ["13"] = "42", ["14"] = "21", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "12",
["211"] = "334 21", ["212"] = "33 42", ["213"] = "33 42", ["214"] = "33 42", ["215"] = "55 55", ["216"] = "55 55", ["217"] = "33 55", ["218"] = "33 55",
["221"] = "334 21", ["222"] = "23 42", ["223"] = "33 42", ["224"] = "33 42", ["225"] = "23 55", ["226"] = "23 55", ["227"] = "33 55", ["228"] = "33 55",
["231"] = "33 32", ["232"] = "23 53", ["233"] = "32 42", ["234"] = "32 42", ["235"] = "32 55", ["236"] = "32 12", ["237"] = "32 55", ["238"] = "32 55",
["251"] = "23 53", ["252"] = "32 53", ["253"] = "23 42", ["254"] = "33 42", ["255"] = "33 55", ["256"] = "33 55", ["257"] = "33 55", ["258"] = "33 55",
["261"] = "32 53", ["262"] = "32 53", ["263"] = "23 42", ["264"] = "23 42", ["265"] = "33 55", ["266"] = "33 55", ["267"] = "33 55", ["268"] = "33 55",
["271"] = "22 33", ["272"] = "33 33", ["273"] = "33 42", ["274"] = "33 53", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 55", ["278"] = "33 55",
["281"] = "22 33", ["282"] = "33 33", ["283"] = "33 42", ["284"] = "33 53", ["285"] = "33 55", ["286"] = "33 13", ["287"] = "33 55", ["288"] = "33 23",
},
["tt"] = {
["10"] = "",
["11"] = "33", ["12"] = "224", ["13"] = "325", ["14"] = "214", ["15"] = "55", ["16"] = "35", ["17"] = "55", ["18"] = "23",
["211"] = "33 33", ["212"] = "55 22", ["213"] = "33 325", ["214"] = "22 334", ["215"] = "33 55", ["216"] = "33 35", ["217"] = "33 55", ["218"] = "22 23",
["221"] = "33 33", ["222"] = "35 22", ["223"] = "44 325", ["224"] = "44 334", ["225"] = "44 55", ["226"] = "33 35", ["227"] = "44 55", ["228"] = "44 23",
["231"] = "32 33", ["232"] = "32 224", ["233"] = "32 325", ["234"] = "32 214", ["235"] = "32 55", ["236"] = "32 35", ["237"] = "32 55", ["238"] = "32 23",
["241"] = "21 33", ["242"] = "21 224", ["243"] = "21 325", ["244"] = "21 214", ["245"] = "21 55", ["246"] = "21 35", ["247"] = "21 55", ["248"] = "21 23",
["251"] = "33 33", ["252"] = "33 335", ["253"] = "33 325", ["254"] = "33 214", ["255"] = "33 55", ["256"] = "33 35", ["257"] = "33 55", ["258"] = "33 23",
["261"] = "33 33", ["262"] = "33 33", ["263"] = "33 325", ["264"] = "33 214", ["265"] = "33 55", ["266"] = "33 35", ["267"] = "33 55", ["268"] = "33 23",
["271"] = "11 33", ["272"] = "11 224", ["273"] = "11 325", ["274"] = "11 214", ["275"] = "11 55", ["276"] = "11 35", ["277"] = "11 55", ["278"] = "11 23",
["281"] = "21 33", ["282"] = "21 224", ["283"] = "21 325", ["284"] = "21 214", ["285"] = "21 55", ["286"] = "21 35", ["287"] = "21 55", ["288"] = "21 23",
["1s"] = "51", ["2s"] = "51", ["3s"] = "51", ["4s"] = "51", ["5s"] = "31", ["6s"] = "31", ["7s"] = "31", ["8s"] = "31"
},
["sm"] = {
["11"] = "334", ["12"] = "223", ["13"] = "314", ["14"] = "213", ["15"] = "55", ["16"] = "55", ["17"] = "5", ["18"] = "3",
},
["wl"] = {
["10"] = "",
["11"] = "33", ["12"] = "31", ["13"] = "42", ["14"] = "31", ["15"] = "55", ["16"] = "13", ["17"] = "55", ["18"] = "22",
--mutated tones: they kinda just like happen?
["1R"] = "15", ["2R"] = "15", ["3R"] = "51", ["4R"] = "51", ["5R"] = "51", ["6R"] = "51", ["7R"] = "51", ["8R"] = "51",
["211"] = "55 31", ["212"] = "35 51", ["213"] = "33 31", ["214"] = "33 31", ["215"] = "35 55", ["216"] = "35 55", ["217"] = "33 55", ["218"] = "33 22",
["221"] = "35 51", ["222"] = "14 51", ["223"] = "13 31", ["224"] = "13 31", ["225"] = "13 55", ["226"] = "13 55", ["227"] = "13 55", ["228"] = "13 22",
["231"] = "42 33", ["232"] = "55 51", ["233"] = "42 31", ["234"] = "42 31", ["235"] = "42 55", ["236"] = "42 13", ["237"] = "42 55", ["238"] = "42 22",
["241"] = "31 33", ["242"] = "55 51", ["243"] = "31 31", ["244"] = "31 31", ["245"] = "31 55", ["246"] = "31 13", ["247"] = "31 55", ["248"] = "31 22",
["251"] = "33 33", ["252"] = "33 31", ["253"] = "33 31", ["254"] = "33 31", ["255"] = "35 55", ["256"] = "35 55", ["257"] = "33 55", ["258"] = "33 22",
["261"] = "13 33", ["262"] = "13 31", ["263"] = "13 31", ["264"] = "13 31", ["265"] = "13 55", ["266"] = "35 55", ["267"] = "13 55", ["268"] = "13 22",
["271"] = "33 33", ["272"] = "55 51", ["273"] = "33 31", ["274"] = "33 31", ["275"] = "33 55", ["276"] = "33 13", ["277"] = "33 22", ["278"] = "33 22",
["281"] = "22 33", ["282"] = "22 51", ["283"] = "22 31", ["284"] = "22 31", ["285"] = "22 55", ["286"] = "22 13", ["287"] = "22 55", ["288"] = "22 22"
-- 1/3/4/6/8 + * = no change; 2 + * > 6 + *; 5 + * > 1 + *; 7 + * > /3/ + * (can treat as 1 + *)
}
}
-- minidict ignored for now
-- all code can be ripped from the Northern module, with these exceptions:
-- Huangyan: ensure that the sandhi chain letters are allowed (like in Jinhuanese's module): 23A7 ≠ 237
-- Linhai: k, kh, g, h + i, y = c, cʰ, ɟ, ç
-- Wenling: ensure that it allows for mutation: 5cie+7cioq>cion ← this input needs to be allowed
-- collapsed display will work like Northern Wu: one loc = loc name, two or more locs = "Taizhou"
1hizsssoowrvfam73u6r63053or57db
flameout
0
137600
234925
222107
2026-05-25T13:45:51Z
Lee
19
/* නාම පදය */
234925
wikitext
text/x-wiki
{{also|flame-out|flame out}}
== ඉංග්රීසි ==
=== වෙනත් ආකාර ===
* {{alter|en|flame-out}}
=== නිරුක්තිය ===
{{deverbal|en|flame out}}.
=== උච්චාරණය ===
* {{audio|en|en-us-flameout.ogg|a=US}}
=== නාම පදය ===
{{en-noun|~}}
# [[දාහක|දාහකයක]] [[දැල්ල]] හදිසියේ නිවී යාම ([[ඉන්දන]] හෝ [[වාත ප්රවාහය]] අවහිර වීම හේතු කොට ගෙන ).
#: {{ant|en|flare-up}}
#: {{cot|en|burnout}}
#: {{ux|en|The left engine suffered a '''flameout''' from ingesting heavy rain.}}
#* {{quote-book|en|date=9 January 2007|author=w:National Transportation Safety Board|title=Aircraft Accident Report: Crash of Pinnacle Airlines Flight 3701, Bombardier CL-600-2B19, N8396A, Jefferson City, Missouri, October 14, 2004|chapter=1.18.2 Core Lock|url=https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archiveurl=https://web.archive.org/web/20220315050317/https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archivedate=15 March 2022|access-date=16 June 2022|page=37–38|text=Bombardier’s core lock screening procedure requires a cool-down period before engine shutdown to stabilize internal temperatures and clearances. However, this procedure does not produce the more severe thermal distress associated with the high power, high altitude '''flameouts''' that were experienced during the accident flight. As stated in the Safety Board’s November 20, 2006, safety recommendation letter to the FAA, the successful demonstration of Bombardier’s flight test procedure might not ensure that an engine will not experience core lock if the core is allowed to stop rotating after a high power, high altitude '''flameout'''. In its letter, the Board noted that the No. 1 accident engine had successfully passed the screening procedure during initial production acceptance testing.}}
# The act of [[flame out|flaming out]] or [[burn out|burning out]]; [[extinguish]]ing.
#: {{ant|en|flare-up}}
#: {{cot|en|burnout}}
# {{lb|en|figurative}} The act of [[quit]]ting or [[fail]]ing, especially due to [[overwork]] or in a [[dramatic]] [[manner]].
#: {{cot|en|burnout}}
#: {{ux|en|The company was one of Silicon Valley's more famous dot-com '''flameouts'''.}}
#* {{quote-book|en|year=2010|title=w:A Visit from the Goon Squad|author=w:Jennifer Egan|chapter=Selling the General|passage=She was part of a weave of girls at Miss Rutgers's School, a mesh so fine and scarily intimate that even her mother's '''flameout''' and jail sentence {{...}} couldn't dissolve it.}}
bmy0iwr1q1adhirjrysyhvrp2d0pa82
flame out
0
137604
234926
222106
2026-05-25T13:46:27Z
Lee
19
/* ක්රියා පදය */
234926
wikitext
text/x-wiki
{{also|flameout|flame-out}}
== ඉංග්රීසි ==
=== නිරුක්තිය ===
{{m|en|flame}} + {{m|en|out}}
=== උච්චාරණය ===
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-flame out.wav|a=US}}
=== ක්රියා පදය ===
{{en-verb|*}}
# {{lb|en|of processes and equipment involving [[combustion]]}} ගිනි දැල් [[නිවී යෑම]] හේතු කොටගෙන [[අක්රීය වීම]]. {{defdate|from 20th c.}}
#: {{cot|en|burn out}}
#* {{quote-text|en|year=1967|title=American Labor Arbitration Awards|volume=11|publisher=Prentice-Hall
|passage=If on flame out, steam pressure goes below 75# you must go back on gas to return [....] The grievant replied that If he did so, the boiler would '''flame out.'''}}
#* {{quote-journal|en|year=2000|journal=U.S|publisher=Environmental Protection Agency|title=Hot mix asphalt plants technical systems audit of testing at plant "C"|section=EPA-454R-00-026
|passage=On 24 July 1998, the silo THC analyzer's FID '''flamed out''' and could not be relighted.}}
#* {{quote-text|en|year=2004|author=Philip P. Walsh; Paul Fletcher|title=Gas Turbine Performance|page=487|passage=Restarting in flight is a very important engine capability for all aircraft, as occasionally engines do '''flame out'''.}}
#* {{quote-book|en|date=9 January 2007|author=w:National Transportation Safety Board|title=Aircraft Accident Report: Crash of Pinnacle Airlines Flight 3701, Bombardier CL-600-2B19, N8396A, Jefferson City, Missouri, October 14, 2004|chapter=2.2.2 Aerodynamic Stall and Upset Event|url=https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archiveurl=https://web.archive.org/web/20220315050317/https://www.ntsb.gov/investigations/AccidentReports/Reports/AAR0701.pdf|archivedate=15 March 2022|access-date=16 June 2022|page=46|text=While the pitch angle was decreasing, a left rolling motion began, which eventually reached 82º left wing down, and the N<sub>1</sub> and fuel flow indications for both engines declined steadily to zero, indicating that both engines had '''flamed out'''. The Safety Board concludes that the upset event exposed both engines to inlet airflow disruption conditions that led to engine stalls and a complete loss of engine power.}}
# {{lb|en|now|rare}} To become [[suddenly]] [[angry]]; to [[break out]] into [[indignation]] or similar [[emotion]]; to [[flare up]]. {{defdate|from 16th c.}}
#* {{RQ:Richardson Clarissa|I|4|text=[O]n being brought home, and giving us ground to suppose he was much worse hurt than he really was, and a fever ensuing, every one '''flamed out'''; and all was laid at my door.}}
# {{lb|en|figuratively}} To [[fail]], usually [[spectacularly]].
# {{lb|en|intransitive}} To stop due to exhaustion.
==== ව්යුත්පන්න යෙදුම් ====
{{col3|en
|flame-out<pos:n>
|flameout<pos:n>
}}
{{C|en|Anger}}
mka831she2b9fjzckz53kiumh387fzv
ප්රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද
14
140921
234898
228677
2026-05-25T13:27:57Z
Pinthura
2424
Pinthura විසින් [[ප්රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සිට [[ප්රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්රවර්ග නාමය වෙත ගෙනයාම.
228675
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
234900
234898
2026-05-25T13:28:07Z
Pinthura
2424
සේවා: ඉංග්රීසි ව්යාපෘතිය වෙත සබැඳියක් එක් කිරීම.
234900
wikitext
text/x-wiki
{{auto cat}}
[[en:Category:Spanish epicene adjectives]]
ixoajx9brjmyam0dkgwbp0fl7hxcbsl
Module:inc-headword
828
141772
234933
230773
2026-04-27T01:07:42Z
en>نعم البدل
0
correct script
234933
Scribunto
text/plain
-- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as
-- Marathi, Gujarati, Bengali, Assamese, etc.
local export = {}
local pos_functions = {}
local force_cat = false -- for testing; if true, categories appear in non-mainspace pages
local require_when_needed = require("Module:utilities/require when needed")
local m_links = require("Module:links")
local m_table = require("Module:table")
local list_to_set = m_table.listToSet
local rsplit = mw.text.split
local uupper = mw.ustring.upper
local ulower = mw.ustring.lower
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local en_utilities_module = "Module:en-utilities"
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local languages_module = "Module:languages"
local parse_interface_module = "Module:parse interface"
local scripts_module = "Module:scripts"
local ur_hi_convert_module = "Module:ur-hi-convert"
local pa_Arab_Guru_module = "Module:pa-Arab-Guru"
local m_en_utilities = require_when_needed(en_utilities_module)
local m_headword_utilities = require_when_needed(headword_utilities_module)
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local boolean_param = {type = "boolean"}
local list_param = {list = true, disallow_holes = true}
local gender_param = {type = "genders"}
local gender_param_with_default = {type = "genders", default = "?"}
local insert = table.insert
local concat = table.concat
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rsplit = mw.text.split
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local misc_pos_with_gender = list_to_set {
"numerals",
"suffixes",
"adjective forms",
"noun forms",
"proper noun forms",
"pronoun forms",
"determiner forms",
"verb forms",
"postposition forms",
}
local function generate_hindis_from_urdu_heads(headobjs)
local hindis = {}
for _, headobj in ipairs(headobjs) do
local hindiobj = m_table.shallowCopy(headobj)
hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term))
hindiobj.tr = nil
insert(hindis, hindiobj)
end
return hindis
end
local function generate_gur_from_shah_heads(headobjs)
local gurus = {}
for _, headobj in ipairs(headobjs) do
local guruobj = m_table.shallowCopy(headobj)
guruobj.term = require(pa_Arab_Guru_module).tr(m_links.remove_links(headobj.term))
guruobj.tr = nil
insert(gurus, guruobj)
end
return gurus
end
local langs_supported = {
["hi"] = {
other_langs_scripts = {
{"ur", "ur", "ur-Arab", "Urdu"},
},
},
["pa"] = {
other_langs_scripts = {
{"gur", "pa", "Guru", "Gurmukhi", generate_gur_from_shah_heads},
{"sha", "pa", "pa-Arab", "Shahmukhi"},
},
sccat = true,
},
["ur"] = {
other_langs_scripts = {
{"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads},
},
enable_auto_translit = true,
},
["phl"] = {
other_langs_scripts = {
{"pa", "phl", "Arab", "Perso-Arabic"},
{"lat", "phl", "Latn", "Latin"},
},
sccat = true,
},
["plk"] = {
other_langs_scripts = {
{"pa", "plk", "Arab", "Perso-Arabic"},
{"lat", "plk", "Latn", "Latin"},
},
sccat = true,
}
}
----------------------------------------------- Utilities --------------------------------------------
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
local function ine(val)
if val == "" then return nil else return val end
end
local function track(page)
require("Module:debug").track("hi-pa-headword/" .. page)
return true
end
local function validate_genders(data, genders)
data.genders = genders
if not genders then
return
end
for _, gspec in ipairs(genders) do
local g = gspec.spec
if g == "m" or g == "f" or
g == "m-p" or g == "f-p" or
g == "mf" or g == "mf-p" or
g == "mfbysense" or g == "mfbysense-p" or
g == "mfequiv" or g == "mfequiv-p" or
g == "?" then
else
error("Invalid gender: " .. g)
end
end
end
-- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple
-- comma-separated values are allowed.
local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param)
local argfield = field
if type(argfield) == "table" then
argfield = argfield[1]
end
if is_single_param then
local retval
if args[argfield] then
retval = m_headword_utilities.parse_term_with_modifiers {
val = args[argfield],
paramname = field,
splitchar = ",",
is_head = is_head,
include_mods = not no_include_tr and {"tr"} or nil,
}
end
return retval or {}
else
return m_headword_utilities.parse_term_list_with_modifiers {
forms = args[argfield],
paramname = field,
splitchar = ",",
is_head = is_head,
include_mods = not no_include_tr and {"tr"} or nil,
}
end
end
-- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come
-- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the
-- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the
-- accelerator form, or nil. `enable_auto_translit` is set if requested by the language.
local function parse_and_insert_inflection(data, args, field, label, accel_form)
local terms = parse_inflection(data, args, field)
local accel_obj
if accel_form then
local lemmas = {}
local lemma_translits = {}
for i, headobj in ipairs(data.heads) do
lemmas[i] = headobj.term
lemma_translits[i] = headobj.tr
end
accel_obj = {
lemma = lemmas,
lemma_translit = lemma_translits,
form = accel_form,
}
end
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = label,
accel = accel_obj,
enable_auto_translit = data.langprops.enable_auto_translit,
}
end
--[==[
Main entry point. Takes two params:
; {{para|lang|req=1}}
: The language code of the language of the headword template.
; {{para|1}}
: The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}.
]==]
function export.show(frame)
local iparams = {
[1] = true,
["lang"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local parargs = frame:getParent().args
local poscat = iargs[1]
local langcode = iargs.lang
if not langs_supported[langcode] then
local langcodes_supported = {}
for lang, _ in pairs(langs_supported) do
insert(langcodes_supported, lang)
end
error("This module currently only works for lang=" .. concat(langcodes_supported, "/"))
end
local lang = require(languages_module).getByCode(langcode, true)
local langname = lang:getCanonicalName()
local pos_in_1 = not poscat
if pos_in_1 then
poscat = ine(parargs[1]) or
mw.title.getCurrentTitle().fullText == "Template:" .. langcode .. "-head" and "interjection" or
error("Part of speech must be specified in 1=")
poscat = require(headword_module).canonicalize_pos(poscat)
end
local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat
local langprops = langs_supported[langcode]
local params = {
["head"] = true,
["head2"] = {replaced_by = false, instead = "use comma-separated |head="},
["tr"] = true,
["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"},
["id"] = true,
["sort"] = true,
["nolink"] = boolean_param,
["nolinkhead"] = {type = "boolean", alias_of = "nolink"},
["suffix"] = boolean_param,
["nosuffix"] = boolean_param,
["splithyphen"] = boolean_param,
["json"] = boolean_param,
["pagename"] = true, -- for testing
}
if pos_in_1 then
params[1] = {required = true} -- required but ignored as already processed above
end
for _, other_lang_script in ipairs(langprops.other_langs_scripts) do
local param, _, _, _ = unpack(other_lang_script)
params[param] = true
params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="}
params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="}
end
if pos_functions[indexing_poscat] then
for key, val in pairs(pos_functions[indexing_poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
lang = lang,
langname = langname,
langprops = langprops,
pos_category = poscat,
categories = {},
genders = {},
inflections = {},
pagename = pagename,
id = args.id,
sort_key = args.sort,
force_cat_output = force_cat,
-- We use our own splitting algorithm so the redundant head cat will be inaccurate.
no_redundant_head_cat = true,
sccat = langprops.sccat,
}
local trs = args.tr and split_on_comma(args.tr) or {}
local num_trs = #trs
local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {}
local user_specified_heads = heads
local num_heads = #heads
if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then
error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format(
num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or ""))
end
-- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads
-- to see if the user provided any heads.
if num_heads == 0 and num_trs > 0 then
heads = {}
for i = 1, num_trs do
heads[i] = {term = "+"}
end
end
if not heads[1] then
heads = {{term = "+"}}
end
for i, headobj in ipairs(heads) do
if headobj.term == "+" then
headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename,
{split_hyphen_when_space = args.splithyphen})
end
if headobj.tr and trs[i] then
if headobj.tr ~= trs[i] then
error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format(
headobj.tr, trs[i], i, headobj.term))
end
else
headobj.tr = headobj.tr or trs[i]
end
if headobj.tr == "+" then
headobj.tr = nil
end
end
data.heads = heads
data.is_suffix = false
if args.suffix or (
not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms"
) then
data.is_suffix = true
data.pos_category = "suffixes"
local singular_poscat = m_en_utilities.singularize(poscat)
insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
insert(data.inflections, {label = singular_poscat .. "-forming suffix"})
end
if pos_functions[indexing_poscat] then
pos_functions[indexing_poscat].func(args, data)
end
for _, other_lang_script in ipairs(langprops.other_langs_scripts) do
local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script)
local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {}
if not terms[1] and generate_from_heads then
terms = generate_from_heads(user_specified_heads)
end
if terms[1] then
local other_lang = require(languages_module).getByCode(other_langcode, true)
local other_sc = require(scripts_module).getByCode(other_sccode, true)
for _, termobj in ipairs(terms) do
termobj.lang = other_lang
termobj.sc = other_sc
end
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = lang_script_label .. " spelling",
-- Don't set `enable_auto_translit` here, e.g. for Urdu.
}
end
end
if args.json then
return require("Module:JSON").toJSON(data)
end
return require(headword_module).full_headword(data)
end
pos_functions.adjectives = {
params = {
[1] = {list = "comp", disallow_holes = true},
[2] = {list = "sup", disallow_holes = true},
["f"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
if args["ind"] then
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable adjectives")
end
parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>")
parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>")
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
pos_functions.ordinals = {
params = {
["f"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
data.pos_category = "adjectives"
insert(data.categories, data.langname .. " numerals")
if args["ind"] then
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable numerals")
end
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
pos_functions.cardinals = {
params = {
[1] = gender_param,
["g"] = {replaced_by = 1},
["sym"] = list_param,
},
func = function(args, data)
data.pos_category = "numerals"
validate_genders(data, args[1])
parse_and_insert_inflection(data, args, "sym", "native script symbol")
end,
}
local function nouns(plpos)
return {
params = {
[1] = gender_param_with_default,
["g"] = {replaced_by = 1},
["pl"] = list_param,
["f"] = list_param,
["m"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
validate_genders(data, args[1])
if args["ind"] then
if args["pl"][1] then
error("Can't specify both ind= and pl=")
end
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable " .. plpos)
else
parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p")
end
parse_and_insert_inflection(data, args, "m", "male equivalent", "m")
parse_and_insert_inflection(data, args, "f", "female equivalent", "f")
if args["m"][1] or args["f"][1] then
insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents")
end
end,
}
end
pos_functions.nouns = nouns("nouns")
pos_functions["proper nouns"] = nouns("proper nouns")
pos_functions.pronouns = {
params = {
[1] = gender_param,
["g"] = {replaced_by = 1},
},
func = function(args, data)
validate_genders(data, args[1])
end,
}
pos_functions.verbs = {
params = {
[1] = true,
},
func = function(args, data)
if args[1] then
local label, cat
if args[1] == "t" then
label = "transitive"
insert(data.categories, data.langname .. " transitive verbs")
elseif args[1] == "i" then
label = "intransitive"
insert(data.categories, data.langname .. " intransitive verbs")
elseif args[1] == "d" then
label = "ditransitive"
insert(data.categories, data.langname .. " ditransitive verbs")
elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then
label = "ambitransitive"
insert(data.categories, data.langname .. " ambitransitive verbs")
insert(data.categories, data.langname .. " transitive verbs")
insert(data.categories, data.langname .. " intransitive verbs")
elseif args[1] == "tp" then -- only in Palula
label = "transitive"
insert(data.categories, data.langname .. " transitive verbs")
insert(data.categories, data.langname .. " passive verbs")
insert(data.inflections, {label = glossary_link("passive")})
else
error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive")
end
insert(data.inflections, {label = glossary_link(label)})
end
if data.pagename:find(" ") then
local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "")
insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb)
end
end,
}
pos_functions.head_with_gender = {
params = {
[2] = gender_param,
},
func = function(args, data)
validate_genders(data, args[2])
end,
}
local pos_prelude = {
["head"] =
"This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " ..
"{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and "..
"{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.",
}
local noun_addl_params = [=[
;{{para|pl}}
: Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|f}}
: Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|m}}
: Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|ind|1}}
: Specify that the noun is indeclinable.
]=]
local pos_addl_params = {
["nouns"] = noun_addl_params,
["proper nouns"] = noun_addl_params,
["verbs"] = [=[
;{{para|1}}
: Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive).
]=],
["adjectives"] = [=[
;{{para|1}}
: Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|2}}
: Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|ind|1}}
: Specify that the adjective is indeclinable.
;{{para|f}}
: Feminine form(s) of an adjective with irregular feminine forms.
]=],
["cardinals"] = [=[
;{{para|sym}}
: Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=],
["ordinals"] = [=[
;{{para|ind|1}}
: Specify that the ordinal is indeclinable.
;{{para|f}}
: Feminine form(s) of an ordinal adjective with irregular feminine forms.
]=],
["head"] = [=[
;{{para|1|req=1}}
: Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}.
;{{para|2}}
: Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=],
}
local pos_has_gender = {
["nouns"] = true,
["proper nouns"] = true,
["pronouns"] = true,
["cardinals"] = true,
}
--[==[
Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters:
; {{para|lang|req=1}}
: The language code of the language of the headword template being documented.
; {{para|pos|req=1}}
: The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc.
]==]
function export.doctext(frame)
local iparams = {
["lang"] = {required = true, type = "language"},
["pos"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local langcode = iargs.lang:getCode()
if not langs_supported[langcode] then
local langcodes_supported = {}
for lang, _ in pairs(langs_supported) do
insert(langcodes_supported, lang)
end
error("This module currently only works for lang=" .. concat(langcodes_supported, "/"))
end
local other_lang_script_equivs = langcode == "hi" and [=[
;{{para|ur}}
: Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or langcode == "ur" and [=[
;{{para|hi}}
: Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or langcode == "pa" and [=[
;{{para|gur}}
: Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|sha}}
: Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or (langcode == "phl" or langcode == "plk") and [=[
;{{para|pa}}
: Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|lat}}
: Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or ""
local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.")
:gsub("LANG", iargs.lang:getCanonicalName())
:gsub("CODE", iargs.lang:getCode())
:gsub("POS", iargs.pos)
local g_text = [=[
;{{para|1}}
: Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=]
local includeg = pos_has_gender[iargs.pos]
local addl_params = pos_addl_params[iargs.pos] or ""
local text = prelude .. [=[
==Parameters==
The following parameters are supported:
]=] .. (includeg and g_text or "") .. addl_params .. [=[
;{{para|head}}
: Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") ..
"introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " ..
"Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " ..
"Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " ..
(langcode == "pa" and "for Gurmukhi terms " or "") ..
"when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[
;{{para|tr}}
: Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] ..
[=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] ..
[=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur.
]=] .. other_lang_script_equivs .. [=[
;{{para|nolink|1}}, {{para|nolinkhead|1}}
: Don't link the individual words in a multiword expression.
;{{para|suffix|1}}
: Specify that the term is a suffix. Not needed if the term begins with a hyphen.
;{{para|nosuffix|1}}
: Specify that a term beginning with a hyphen is not a suffix.
;{{para|id}}
: Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information.
; {{para|splithyph|1}}
: Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces.
; {{para|pagename}}
: Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc.
; {{para|sort}}
: Sort key. Rarely needs to be specified, as it is normally automatically generated.
; {{para|json|1}}
: Output the headword data in JSON form instead of the normal output. For use by bots.
]=]
local after_params_text =[=[
==Inline modifiers==
All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized:
* {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so
* {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized
* {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized
* {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized
* {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized
* {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}}
* {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so
==Suffix handling==
If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}.
]=]
after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName())
text = text .. after_params_text
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return mw.getCurrentFrame():preprocess(text)
end
return export
hd3qfcupn46qf91cemp7xaizi2r4qkd
234934
234933
2026-05-26T07:02:37Z
Lee
19
[[:en:Module:inc-headword]] වෙතින් එක් සංශෝධනයක්
234933
Scribunto
text/plain
-- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as
-- Marathi, Gujarati, Bengali, Assamese, etc.
local export = {}
local pos_functions = {}
local force_cat = false -- for testing; if true, categories appear in non-mainspace pages
local require_when_needed = require("Module:utilities/require when needed")
local m_links = require("Module:links")
local m_table = require("Module:table")
local list_to_set = m_table.listToSet
local rsplit = mw.text.split
local uupper = mw.ustring.upper
local ulower = mw.ustring.lower
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local en_utilities_module = "Module:en-utilities"
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local languages_module = "Module:languages"
local parse_interface_module = "Module:parse interface"
local scripts_module = "Module:scripts"
local ur_hi_convert_module = "Module:ur-hi-convert"
local pa_Arab_Guru_module = "Module:pa-Arab-Guru"
local m_en_utilities = require_when_needed(en_utilities_module)
local m_headword_utilities = require_when_needed(headword_utilities_module)
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local boolean_param = {type = "boolean"}
local list_param = {list = true, disallow_holes = true}
local gender_param = {type = "genders"}
local gender_param_with_default = {type = "genders", default = "?"}
local insert = table.insert
local concat = table.concat
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rsplit = mw.text.split
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local misc_pos_with_gender = list_to_set {
"numerals",
"suffixes",
"adjective forms",
"noun forms",
"proper noun forms",
"pronoun forms",
"determiner forms",
"verb forms",
"postposition forms",
}
local function generate_hindis_from_urdu_heads(headobjs)
local hindis = {}
for _, headobj in ipairs(headobjs) do
local hindiobj = m_table.shallowCopy(headobj)
hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term))
hindiobj.tr = nil
insert(hindis, hindiobj)
end
return hindis
end
local function generate_gur_from_shah_heads(headobjs)
local gurus = {}
for _, headobj in ipairs(headobjs) do
local guruobj = m_table.shallowCopy(headobj)
guruobj.term = require(pa_Arab_Guru_module).tr(m_links.remove_links(headobj.term))
guruobj.tr = nil
insert(gurus, guruobj)
end
return gurus
end
local langs_supported = {
["hi"] = {
other_langs_scripts = {
{"ur", "ur", "ur-Arab", "Urdu"},
},
},
["pa"] = {
other_langs_scripts = {
{"gur", "pa", "Guru", "Gurmukhi", generate_gur_from_shah_heads},
{"sha", "pa", "pa-Arab", "Shahmukhi"},
},
sccat = true,
},
["ur"] = {
other_langs_scripts = {
{"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads},
},
enable_auto_translit = true,
},
["phl"] = {
other_langs_scripts = {
{"pa", "phl", "Arab", "Perso-Arabic"},
{"lat", "phl", "Latn", "Latin"},
},
sccat = true,
},
["plk"] = {
other_langs_scripts = {
{"pa", "plk", "Arab", "Perso-Arabic"},
{"lat", "plk", "Latn", "Latin"},
},
sccat = true,
}
}
----------------------------------------------- Utilities --------------------------------------------
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
local function ine(val)
if val == "" then return nil else return val end
end
local function track(page)
require("Module:debug").track("hi-pa-headword/" .. page)
return true
end
local function validate_genders(data, genders)
data.genders = genders
if not genders then
return
end
for _, gspec in ipairs(genders) do
local g = gspec.spec
if g == "m" or g == "f" or
g == "m-p" or g == "f-p" or
g == "mf" or g == "mf-p" or
g == "mfbysense" or g == "mfbysense-p" or
g == "mfequiv" or g == "mfequiv-p" or
g == "?" then
else
error("Invalid gender: " .. g)
end
end
end
-- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple
-- comma-separated values are allowed.
local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param)
local argfield = field
if type(argfield) == "table" then
argfield = argfield[1]
end
if is_single_param then
local retval
if args[argfield] then
retval = m_headword_utilities.parse_term_with_modifiers {
val = args[argfield],
paramname = field,
splitchar = ",",
is_head = is_head,
include_mods = not no_include_tr and {"tr"} or nil,
}
end
return retval or {}
else
return m_headword_utilities.parse_term_list_with_modifiers {
forms = args[argfield],
paramname = field,
splitchar = ",",
is_head = is_head,
include_mods = not no_include_tr and {"tr"} or nil,
}
end
end
-- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come
-- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the
-- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the
-- accelerator form, or nil. `enable_auto_translit` is set if requested by the language.
local function parse_and_insert_inflection(data, args, field, label, accel_form)
local terms = parse_inflection(data, args, field)
local accel_obj
if accel_form then
local lemmas = {}
local lemma_translits = {}
for i, headobj in ipairs(data.heads) do
lemmas[i] = headobj.term
lemma_translits[i] = headobj.tr
end
accel_obj = {
lemma = lemmas,
lemma_translit = lemma_translits,
form = accel_form,
}
end
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = label,
accel = accel_obj,
enable_auto_translit = data.langprops.enable_auto_translit,
}
end
--[==[
Main entry point. Takes two params:
; {{para|lang|req=1}}
: The language code of the language of the headword template.
; {{para|1}}
: The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}.
]==]
function export.show(frame)
local iparams = {
[1] = true,
["lang"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local parargs = frame:getParent().args
local poscat = iargs[1]
local langcode = iargs.lang
if not langs_supported[langcode] then
local langcodes_supported = {}
for lang, _ in pairs(langs_supported) do
insert(langcodes_supported, lang)
end
error("This module currently only works for lang=" .. concat(langcodes_supported, "/"))
end
local lang = require(languages_module).getByCode(langcode, true)
local langname = lang:getCanonicalName()
local pos_in_1 = not poscat
if pos_in_1 then
poscat = ine(parargs[1]) or
mw.title.getCurrentTitle().fullText == "Template:" .. langcode .. "-head" and "interjection" or
error("Part of speech must be specified in 1=")
poscat = require(headword_module).canonicalize_pos(poscat)
end
local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat
local langprops = langs_supported[langcode]
local params = {
["head"] = true,
["head2"] = {replaced_by = false, instead = "use comma-separated |head="},
["tr"] = true,
["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"},
["id"] = true,
["sort"] = true,
["nolink"] = boolean_param,
["nolinkhead"] = {type = "boolean", alias_of = "nolink"},
["suffix"] = boolean_param,
["nosuffix"] = boolean_param,
["splithyphen"] = boolean_param,
["json"] = boolean_param,
["pagename"] = true, -- for testing
}
if pos_in_1 then
params[1] = {required = true} -- required but ignored as already processed above
end
for _, other_lang_script in ipairs(langprops.other_langs_scripts) do
local param, _, _, _ = unpack(other_lang_script)
params[param] = true
params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="}
params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="}
end
if pos_functions[indexing_poscat] then
for key, val in pairs(pos_functions[indexing_poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
lang = lang,
langname = langname,
langprops = langprops,
pos_category = poscat,
categories = {},
genders = {},
inflections = {},
pagename = pagename,
id = args.id,
sort_key = args.sort,
force_cat_output = force_cat,
-- We use our own splitting algorithm so the redundant head cat will be inaccurate.
no_redundant_head_cat = true,
sccat = langprops.sccat,
}
local trs = args.tr and split_on_comma(args.tr) or {}
local num_trs = #trs
local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {}
local user_specified_heads = heads
local num_heads = #heads
if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then
error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format(
num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or ""))
end
-- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads
-- to see if the user provided any heads.
if num_heads == 0 and num_trs > 0 then
heads = {}
for i = 1, num_trs do
heads[i] = {term = "+"}
end
end
if not heads[1] then
heads = {{term = "+"}}
end
for i, headobj in ipairs(heads) do
if headobj.term == "+" then
headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename,
{split_hyphen_when_space = args.splithyphen})
end
if headobj.tr and trs[i] then
if headobj.tr ~= trs[i] then
error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format(
headobj.tr, trs[i], i, headobj.term))
end
else
headobj.tr = headobj.tr or trs[i]
end
if headobj.tr == "+" then
headobj.tr = nil
end
end
data.heads = heads
data.is_suffix = false
if args.suffix or (
not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms"
) then
data.is_suffix = true
data.pos_category = "suffixes"
local singular_poscat = m_en_utilities.singularize(poscat)
insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
insert(data.inflections, {label = singular_poscat .. "-forming suffix"})
end
if pos_functions[indexing_poscat] then
pos_functions[indexing_poscat].func(args, data)
end
for _, other_lang_script in ipairs(langprops.other_langs_scripts) do
local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script)
local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {}
if not terms[1] and generate_from_heads then
terms = generate_from_heads(user_specified_heads)
end
if terms[1] then
local other_lang = require(languages_module).getByCode(other_langcode, true)
local other_sc = require(scripts_module).getByCode(other_sccode, true)
for _, termobj in ipairs(terms) do
termobj.lang = other_lang
termobj.sc = other_sc
end
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = lang_script_label .. " spelling",
-- Don't set `enable_auto_translit` here, e.g. for Urdu.
}
end
end
if args.json then
return require("Module:JSON").toJSON(data)
end
return require(headword_module).full_headword(data)
end
pos_functions.adjectives = {
params = {
[1] = {list = "comp", disallow_holes = true},
[2] = {list = "sup", disallow_holes = true},
["f"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
if args["ind"] then
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable adjectives")
end
parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>")
parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>")
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
pos_functions.ordinals = {
params = {
["f"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
data.pos_category = "adjectives"
insert(data.categories, data.langname .. " numerals")
if args["ind"] then
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable numerals")
end
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
pos_functions.cardinals = {
params = {
[1] = gender_param,
["g"] = {replaced_by = 1},
["sym"] = list_param,
},
func = function(args, data)
data.pos_category = "numerals"
validate_genders(data, args[1])
parse_and_insert_inflection(data, args, "sym", "native script symbol")
end,
}
local function nouns(plpos)
return {
params = {
[1] = gender_param_with_default,
["g"] = {replaced_by = 1},
["pl"] = list_param,
["f"] = list_param,
["m"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
validate_genders(data, args[1])
if args["ind"] then
if args["pl"][1] then
error("Can't specify both ind= and pl=")
end
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable " .. plpos)
else
parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p")
end
parse_and_insert_inflection(data, args, "m", "male equivalent", "m")
parse_and_insert_inflection(data, args, "f", "female equivalent", "f")
if args["m"][1] or args["f"][1] then
insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents")
end
end,
}
end
pos_functions.nouns = nouns("nouns")
pos_functions["proper nouns"] = nouns("proper nouns")
pos_functions.pronouns = {
params = {
[1] = gender_param,
["g"] = {replaced_by = 1},
},
func = function(args, data)
validate_genders(data, args[1])
end,
}
pos_functions.verbs = {
params = {
[1] = true,
},
func = function(args, data)
if args[1] then
local label, cat
if args[1] == "t" then
label = "transitive"
insert(data.categories, data.langname .. " transitive verbs")
elseif args[1] == "i" then
label = "intransitive"
insert(data.categories, data.langname .. " intransitive verbs")
elseif args[1] == "d" then
label = "ditransitive"
insert(data.categories, data.langname .. " ditransitive verbs")
elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then
label = "ambitransitive"
insert(data.categories, data.langname .. " ambitransitive verbs")
insert(data.categories, data.langname .. " transitive verbs")
insert(data.categories, data.langname .. " intransitive verbs")
elseif args[1] == "tp" then -- only in Palula
label = "transitive"
insert(data.categories, data.langname .. " transitive verbs")
insert(data.categories, data.langname .. " passive verbs")
insert(data.inflections, {label = glossary_link("passive")})
else
error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive")
end
insert(data.inflections, {label = glossary_link(label)})
end
if data.pagename:find(" ") then
local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "")
insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb)
end
end,
}
pos_functions.head_with_gender = {
params = {
[2] = gender_param,
},
func = function(args, data)
validate_genders(data, args[2])
end,
}
local pos_prelude = {
["head"] =
"This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " ..
"{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and "..
"{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.",
}
local noun_addl_params = [=[
;{{para|pl}}
: Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|f}}
: Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|m}}
: Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|ind|1}}
: Specify that the noun is indeclinable.
]=]
local pos_addl_params = {
["nouns"] = noun_addl_params,
["proper nouns"] = noun_addl_params,
["verbs"] = [=[
;{{para|1}}
: Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive).
]=],
["adjectives"] = [=[
;{{para|1}}
: Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|2}}
: Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|ind|1}}
: Specify that the adjective is indeclinable.
;{{para|f}}
: Feminine form(s) of an adjective with irregular feminine forms.
]=],
["cardinals"] = [=[
;{{para|sym}}
: Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=],
["ordinals"] = [=[
;{{para|ind|1}}
: Specify that the ordinal is indeclinable.
;{{para|f}}
: Feminine form(s) of an ordinal adjective with irregular feminine forms.
]=],
["head"] = [=[
;{{para|1|req=1}}
: Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}.
;{{para|2}}
: Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=],
}
local pos_has_gender = {
["nouns"] = true,
["proper nouns"] = true,
["pronouns"] = true,
["cardinals"] = true,
}
--[==[
Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters:
; {{para|lang|req=1}}
: The language code of the language of the headword template being documented.
; {{para|pos|req=1}}
: The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc.
]==]
function export.doctext(frame)
local iparams = {
["lang"] = {required = true, type = "language"},
["pos"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local langcode = iargs.lang:getCode()
if not langs_supported[langcode] then
local langcodes_supported = {}
for lang, _ in pairs(langs_supported) do
insert(langcodes_supported, lang)
end
error("This module currently only works for lang=" .. concat(langcodes_supported, "/"))
end
local other_lang_script_equivs = langcode == "hi" and [=[
;{{para|ur}}
: Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or langcode == "ur" and [=[
;{{para|hi}}
: Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or langcode == "pa" and [=[
;{{para|gur}}
: Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|sha}}
: Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or (langcode == "phl" or langcode == "plk") and [=[
;{{para|pa}}
: Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|lat}}
: Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or ""
local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.")
:gsub("LANG", iargs.lang:getCanonicalName())
:gsub("CODE", iargs.lang:getCode())
:gsub("POS", iargs.pos)
local g_text = [=[
;{{para|1}}
: Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=]
local includeg = pos_has_gender[iargs.pos]
local addl_params = pos_addl_params[iargs.pos] or ""
local text = prelude .. [=[
==Parameters==
The following parameters are supported:
]=] .. (includeg and g_text or "") .. addl_params .. [=[
;{{para|head}}
: Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") ..
"introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " ..
"Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " ..
"Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " ..
(langcode == "pa" and "for Gurmukhi terms " or "") ..
"when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[
;{{para|tr}}
: Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] ..
[=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] ..
[=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur.
]=] .. other_lang_script_equivs .. [=[
;{{para|nolink|1}}, {{para|nolinkhead|1}}
: Don't link the individual words in a multiword expression.
;{{para|suffix|1}}
: Specify that the term is a suffix. Not needed if the term begins with a hyphen.
;{{para|nosuffix|1}}
: Specify that a term beginning with a hyphen is not a suffix.
;{{para|id}}
: Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information.
; {{para|splithyph|1}}
: Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces.
; {{para|pagename}}
: Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc.
; {{para|sort}}
: Sort key. Rarely needs to be specified, as it is normally automatically generated.
; {{para|json|1}}
: Output the headword data in JSON form instead of the normal output. For use by bots.
]=]
local after_params_text =[=[
==Inline modifiers==
All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized:
* {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so
* {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized
* {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized
* {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized
* {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized
* {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}}
* {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so
==Suffix handling==
If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}.
]=]
after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName())
text = text .. after_params_text
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return mw.getCurrentFrame():preprocess(text)
end
return export
hd3qfcupn46qf91cemp7xaizi2r4qkd
234935
234934
2026-05-26T07:04:41Z
Lee
19
"Template" සිට "සැකිල්ල" වෙතට
234935
Scribunto
text/plain
-- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as
-- Marathi, Gujarati, Bengali, Assamese, etc.
local export = {}
local pos_functions = {}
local force_cat = false -- for testing; if true, categories appear in non-mainspace pages
local require_when_needed = require("Module:utilities/require when needed")
local m_links = require("Module:links")
local m_table = require("Module:table")
local list_to_set = m_table.listToSet
local rsplit = mw.text.split
local uupper = mw.ustring.upper
local ulower = mw.ustring.lower
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local en_utilities_module = "Module:en-utilities"
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local languages_module = "Module:languages"
local parse_interface_module = "Module:parse interface"
local scripts_module = "Module:scripts"
local ur_hi_convert_module = "Module:ur-hi-convert"
local pa_Arab_Guru_module = "Module:pa-Arab-Guru"
local m_en_utilities = require_when_needed(en_utilities_module)
local m_headword_utilities = require_when_needed(headword_utilities_module)
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local boolean_param = {type = "boolean"}
local list_param = {list = true, disallow_holes = true}
local gender_param = {type = "genders"}
local gender_param_with_default = {type = "genders", default = "?"}
local insert = table.insert
local concat = table.concat
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rsplit = mw.text.split
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local misc_pos_with_gender = list_to_set {
"numerals",
"suffixes",
"adjective forms",
"noun forms",
"proper noun forms",
"pronoun forms",
"determiner forms",
"verb forms",
"postposition forms",
}
local function generate_hindis_from_urdu_heads(headobjs)
local hindis = {}
for _, headobj in ipairs(headobjs) do
local hindiobj = m_table.shallowCopy(headobj)
hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term))
hindiobj.tr = nil
insert(hindis, hindiobj)
end
return hindis
end
local function generate_gur_from_shah_heads(headobjs)
local gurus = {}
for _, headobj in ipairs(headobjs) do
local guruobj = m_table.shallowCopy(headobj)
guruobj.term = require(pa_Arab_Guru_module).tr(m_links.remove_links(headobj.term))
guruobj.tr = nil
insert(gurus, guruobj)
end
return gurus
end
local langs_supported = {
["hi"] = {
other_langs_scripts = {
{"ur", "ur", "ur-Arab", "Urdu"},
},
},
["pa"] = {
other_langs_scripts = {
{"gur", "pa", "Guru", "Gurmukhi", generate_gur_from_shah_heads},
{"sha", "pa", "pa-Arab", "Shahmukhi"},
},
sccat = true,
},
["ur"] = {
other_langs_scripts = {
{"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads},
},
enable_auto_translit = true,
},
["phl"] = {
other_langs_scripts = {
{"pa", "phl", "Arab", "Perso-Arabic"},
{"lat", "phl", "Latn", "Latin"},
},
sccat = true,
},
["plk"] = {
other_langs_scripts = {
{"pa", "plk", "Arab", "Perso-Arabic"},
{"lat", "plk", "Latn", "Latin"},
},
sccat = true,
}
}
----------------------------------------------- Utilities --------------------------------------------
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
local function ine(val)
if val == "" then return nil else return val end
end
local function track(page)
require("Module:debug").track("hi-pa-headword/" .. page)
return true
end
local function validate_genders(data, genders)
data.genders = genders
if not genders then
return
end
for _, gspec in ipairs(genders) do
local g = gspec.spec
if g == "m" or g == "f" or
g == "m-p" or g == "f-p" or
g == "mf" or g == "mf-p" or
g == "mfbysense" or g == "mfbysense-p" or
g == "mfequiv" or g == "mfequiv-p" or
g == "?" then
else
error("Invalid gender: " .. g)
end
end
end
-- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple
-- comma-separated values are allowed.
local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param)
local argfield = field
if type(argfield) == "table" then
argfield = argfield[1]
end
if is_single_param then
local retval
if args[argfield] then
retval = m_headword_utilities.parse_term_with_modifiers {
val = args[argfield],
paramname = field,
splitchar = ",",
is_head = is_head,
include_mods = not no_include_tr and {"tr"} or nil,
}
end
return retval or {}
else
return m_headword_utilities.parse_term_list_with_modifiers {
forms = args[argfield],
paramname = field,
splitchar = ",",
is_head = is_head,
include_mods = not no_include_tr and {"tr"} or nil,
}
end
end
-- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come
-- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the
-- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the
-- accelerator form, or nil. `enable_auto_translit` is set if requested by the language.
local function parse_and_insert_inflection(data, args, field, label, accel_form)
local terms = parse_inflection(data, args, field)
local accel_obj
if accel_form then
local lemmas = {}
local lemma_translits = {}
for i, headobj in ipairs(data.heads) do
lemmas[i] = headobj.term
lemma_translits[i] = headobj.tr
end
accel_obj = {
lemma = lemmas,
lemma_translit = lemma_translits,
form = accel_form,
}
end
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = label,
accel = accel_obj,
enable_auto_translit = data.langprops.enable_auto_translit,
}
end
--[==[
Main entry point. Takes two params:
; {{para|lang|req=1}}
: The language code of the language of the headword template.
; {{para|1}}
: The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}.
]==]
function export.show(frame)
local iparams = {
[1] = true,
["lang"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local parargs = frame:getParent().args
local poscat = iargs[1]
local langcode = iargs.lang
if not langs_supported[langcode] then
local langcodes_supported = {}
for lang, _ in pairs(langs_supported) do
insert(langcodes_supported, lang)
end
error("This module currently only works for lang=" .. concat(langcodes_supported, "/"))
end
local lang = require(languages_module).getByCode(langcode, true)
local langname = lang:getCanonicalName()
local pos_in_1 = not poscat
if pos_in_1 then
poscat = ine(parargs[1]) or
mw.title.getCurrentTitle().fullText == "සැකිල්ල:" .. langcode .. "-head" and "interjection" or
error("Part of speech must be specified in 1=")
poscat = require(headword_module).canonicalize_pos(poscat)
end
local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat
local langprops = langs_supported[langcode]
local params = {
["head"] = true,
["head2"] = {replaced_by = false, instead = "use comma-separated |head="},
["tr"] = true,
["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"},
["id"] = true,
["sort"] = true,
["nolink"] = boolean_param,
["nolinkhead"] = {type = "boolean", alias_of = "nolink"},
["suffix"] = boolean_param,
["nosuffix"] = boolean_param,
["splithyphen"] = boolean_param,
["json"] = boolean_param,
["pagename"] = true, -- for testing
}
if pos_in_1 then
params[1] = {required = true} -- required but ignored as already processed above
end
for _, other_lang_script in ipairs(langprops.other_langs_scripts) do
local param, _, _, _ = unpack(other_lang_script)
params[param] = true
params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="}
params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="}
end
if pos_functions[indexing_poscat] then
for key, val in pairs(pos_functions[indexing_poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local data = {
lang = lang,
langname = langname,
langprops = langprops,
pos_category = poscat,
categories = {},
genders = {},
inflections = {},
pagename = pagename,
id = args.id,
sort_key = args.sort,
force_cat_output = force_cat,
-- We use our own splitting algorithm so the redundant head cat will be inaccurate.
no_redundant_head_cat = true,
sccat = langprops.sccat,
}
local trs = args.tr and split_on_comma(args.tr) or {}
local num_trs = #trs
local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {}
local user_specified_heads = heads
local num_heads = #heads
if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then
error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format(
num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or ""))
end
-- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads
-- to see if the user provided any heads.
if num_heads == 0 and num_trs > 0 then
heads = {}
for i = 1, num_trs do
heads[i] = {term = "+"}
end
end
if not heads[1] then
heads = {{term = "+"}}
end
for i, headobj in ipairs(heads) do
if headobj.term == "+" then
headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename,
{split_hyphen_when_space = args.splithyphen})
end
if headobj.tr and trs[i] then
if headobj.tr ~= trs[i] then
error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format(
headobj.tr, trs[i], i, headobj.term))
end
else
headobj.tr = headobj.tr or trs[i]
end
if headobj.tr == "+" then
headobj.tr = nil
end
end
data.heads = heads
data.is_suffix = false
if args.suffix or (
not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms"
) then
data.is_suffix = true
data.pos_category = "suffixes"
local singular_poscat = m_en_utilities.singularize(poscat)
insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
insert(data.inflections, {label = singular_poscat .. "-forming suffix"})
end
if pos_functions[indexing_poscat] then
pos_functions[indexing_poscat].func(args, data)
end
for _, other_lang_script in ipairs(langprops.other_langs_scripts) do
local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script)
local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {}
if not terms[1] and generate_from_heads then
terms = generate_from_heads(user_specified_heads)
end
if terms[1] then
local other_lang = require(languages_module).getByCode(other_langcode, true)
local other_sc = require(scripts_module).getByCode(other_sccode, true)
for _, termobj in ipairs(terms) do
termobj.lang = other_lang
termobj.sc = other_sc
end
m_headword_utilities.insert_inflection {
headdata = data,
terms = terms,
label = lang_script_label .. " spelling",
-- Don't set `enable_auto_translit` here, e.g. for Urdu.
}
end
end
if args.json then
return require("Module:JSON").toJSON(data)
end
return require(headword_module).full_headword(data)
end
pos_functions.adjectives = {
params = {
[1] = {list = "comp", disallow_holes = true},
[2] = {list = "sup", disallow_holes = true},
["f"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
if args["ind"] then
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable adjectives")
end
parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>")
parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>")
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
pos_functions.ordinals = {
params = {
["f"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
data.pos_category = "adjectives"
insert(data.categories, data.langname .. " numerals")
if args["ind"] then
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable numerals")
end
parse_and_insert_inflection(data, args, "f", "feminine")
end,
}
pos_functions.cardinals = {
params = {
[1] = gender_param,
["g"] = {replaced_by = 1},
["sym"] = list_param,
},
func = function(args, data)
data.pos_category = "numerals"
validate_genders(data, args[1])
parse_and_insert_inflection(data, args, "sym", "native script symbol")
end,
}
local function nouns(plpos)
return {
params = {
[1] = gender_param_with_default,
["g"] = {replaced_by = 1},
["pl"] = list_param,
["f"] = list_param,
["m"] = list_param,
["ind"] = boolean_param,
},
func = function(args, data)
validate_genders(data, args[1])
if args["ind"] then
if args["pl"][1] then
error("Can't specify both ind= and pl=")
end
insert(data.inflections, {label = glossary_link("indeclinable")})
insert(data.categories, data.langname .. " indeclinable " .. plpos)
else
parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p")
end
parse_and_insert_inflection(data, args, "m", "male equivalent", "m")
parse_and_insert_inflection(data, args, "f", "female equivalent", "f")
if args["m"][1] or args["f"][1] then
insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents")
end
end,
}
end
pos_functions.nouns = nouns("nouns")
pos_functions["proper nouns"] = nouns("proper nouns")
pos_functions.pronouns = {
params = {
[1] = gender_param,
["g"] = {replaced_by = 1},
},
func = function(args, data)
validate_genders(data, args[1])
end,
}
pos_functions.verbs = {
params = {
[1] = true,
},
func = function(args, data)
if args[1] then
local label, cat
if args[1] == "t" then
label = "transitive"
insert(data.categories, data.langname .. " transitive verbs")
elseif args[1] == "i" then
label = "intransitive"
insert(data.categories, data.langname .. " intransitive verbs")
elseif args[1] == "d" then
label = "ditransitive"
insert(data.categories, data.langname .. " ditransitive verbs")
elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then
label = "ambitransitive"
insert(data.categories, data.langname .. " ambitransitive verbs")
insert(data.categories, data.langname .. " transitive verbs")
insert(data.categories, data.langname .. " intransitive verbs")
elseif args[1] == "tp" then -- only in Palula
label = "transitive"
insert(data.categories, data.langname .. " transitive verbs")
insert(data.categories, data.langname .. " passive verbs")
insert(data.inflections, {label = glossary_link("passive")})
else
error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive")
end
insert(data.inflections, {label = glossary_link(label)})
end
if data.pagename:find(" ") then
local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "")
insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb)
end
end,
}
pos_functions.head_with_gender = {
params = {
[2] = gender_param,
},
func = function(args, data)
validate_genders(data, args[2])
end,
}
local pos_prelude = {
["head"] =
"This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " ..
"{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and "..
"{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.",
}
local noun_addl_params = [=[
;{{para|pl}}
: Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|f}}
: Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|m}}
: Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|ind|1}}
: Specify that the noun is indeclinable.
]=]
local pos_addl_params = {
["nouns"] = noun_addl_params,
["proper nouns"] = noun_addl_params,
["verbs"] = [=[
;{{para|1}}
: Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive).
]=],
["adjectives"] = [=[
;{{para|1}}
: Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|2}}
: Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|ind|1}}
: Specify that the adjective is indeclinable.
;{{para|f}}
: Feminine form(s) of an adjective with irregular feminine forms.
]=],
["cardinals"] = [=[
;{{para|sym}}
: Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=],
["ordinals"] = [=[
;{{para|ind|1}}
: Specify that the ordinal is indeclinable.
;{{para|f}}
: Feminine form(s) of an ordinal adjective with irregular feminine forms.
]=],
["head"] = [=[
;{{para|1|req=1}}
: Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}.
;{{para|2}}
: Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=],
}
local pos_has_gender = {
["nouns"] = true,
["proper nouns"] = true,
["pronouns"] = true,
["cardinals"] = true,
}
--[==[
Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters:
; {{para|lang|req=1}}
: The language code of the language of the headword template being documented.
; {{para|pos|req=1}}
: The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc.
]==]
function export.doctext(frame)
local iparams = {
["lang"] = {required = true, type = "language"},
["pos"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local langcode = iargs.lang:getCode()
if not langs_supported[langcode] then
local langcodes_supported = {}
for lang, _ in pairs(langs_supported) do
insert(langcodes_supported, lang)
end
error("This module currently only works for lang=" .. concat(langcodes_supported, "/"))
end
local other_lang_script_equivs = langcode == "hi" and [=[
;{{para|ur}}
: Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or langcode == "ur" and [=[
;{{para|hi}}
: Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or langcode == "pa" and [=[
;{{para|gur}}
: Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|sha}}
: Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or (langcode == "phl" or langcode == "plk") and [=[
;{{para|pa}}
: Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
;{{para|lat}}
: Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=] or ""
local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.")
:gsub("LANG", iargs.lang:getCanonicalName())
:gsub("CODE", iargs.lang:getCode())
:gsub("POS", iargs.pos)
local g_text = [=[
;{{para|1}}
: Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported.
]=]
local includeg = pos_has_gender[iargs.pos]
local addl_params = pos_addl_params[iargs.pos] or ""
local text = prelude .. [=[
==Parameters==
The following parameters are supported:
]=] .. (includeg and g_text or "") .. addl_params .. [=[
;{{para|head}}
: Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") ..
"introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " ..
"Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " ..
"Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " ..
(langcode == "pa" and "for Gurmukhi terms " or "") ..
"when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[
;{{para|tr}}
: Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] ..
[=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] ..
[=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur.
]=] .. other_lang_script_equivs .. [=[
;{{para|nolink|1}}, {{para|nolinkhead|1}}
: Don't link the individual words in a multiword expression.
;{{para|suffix|1}}
: Specify that the term is a suffix. Not needed if the term begins with a hyphen.
;{{para|nosuffix|1}}
: Specify that a term beginning with a hyphen is not a suffix.
;{{para|id}}
: Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information.
; {{para|splithyph|1}}
: Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces.
; {{para|pagename}}
: Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc.
; {{para|sort}}
: Sort key. Rarely needs to be specified, as it is normally automatically generated.
; {{para|json|1}}
: Output the headword data in JSON form instead of the normal output. For use by bots.
]=]
local after_params_text =[=[
==Inline modifiers==
All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized:
* {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so
* {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized
* {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized
* {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized
* {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized
* {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}}
* {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so
==Suffix handling==
If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}.
]=]
after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName())
text = text .. after_params_text
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return mw.getCurrentFrame():preprocess(text)
end
return export
i7oy9h8bx3ud10dgbsnyv5lhcqyw0n7
සැකිල්ල:hi-head
10
141896
234931
231031
2026-04-15T09:11:26Z
en>Surjection
0
Changed protection settings for "[[Template:hi-head]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
231030
wikitext
text/x-wiki
{{#invoke:inc-headword|show|lang=hi}}<!--
--><noinclude>{{documentation}}</noinclude>
2o8xdx74yebj2l8bfz9dt0b3vi8bhu4
234932
234931
2026-05-26T07:00:34Z
Lee
19
[[:en:Template:hi-head]] වෙතින් එක් සංශෝධනයක්
231030
wikitext
text/x-wiki
{{#invoke:inc-headword|show|lang=hi}}<!--
--><noinclude>{{documentation}}</noinclude>
2o8xdx74yebj2l8bfz9dt0b3vi8bhu4
cardinality
0
142563
234915
232541
2026-05-25T13:39:26Z
Lee
19
/* නාම පදය */
234915
wikitext
text/x-wiki
== ඉංග්රීසි ==
{{wp}}
=== නිරුක්තිය ===
From {{suffix|en|cardinal|ity}}.
=== උච්චාරණය ===
* {{IPA|en|/kɑːdɪˈnælɪti/|a=RP}}
* {{IPA|en|/kɑɹdɪˈnælɪti/|a=GA}}
* {{audio|en|LL-Q1860 (eng)-Wodencafe-cardinality.wav|a=US}}
=== නාම පදය ===
{{en-noun|~}}
# {{lb|en|set theory|of a set}} The number of [[element]]s a given set contains.
#: {{syn|en|power}}
#: {{ux|en|The empty set has a '''cardinality''' of zero.}}
#* {{quote-web|en|author=Johan de Jong|title=Set Theory|work=The Stacks Project|url=https://stacks.math.columbia.edu/download/sets.pdf|archiveurl=|archivedate=|location=|publisher=|year=2005|access-date=2018-2-26|passage=The ''cardinality'' of a set ''A'' is the least ordinal ''α'' such that there exists a bijection between ''A'' and ''α''. We sometimes use the notation <math>\alpha = |A|</math> to indicate this.}}
#* {{quote-book|en|year=2006|author=Michael Smithson; Jay Verkuilen|title=Fuzzy Set Theory: Applications in the Social Sciences|publisher=w:SAGE Publications|pageurl=https://books.google.com.au/books?id=CZ_GVh2ApjIC&pg=PA37&dq=%22cardinality%22%7C%22cardinalities%22&hl=en&sa=X&ved=0ahUKEwjcj5ywv_DaAhWCg5AKHcJHCdYQ6AEIUjAJ#v=onepage&q=%22cardinality%22%7C%22cardinalities%22&f=false|page=37
|passage=For fuzzy sets, the concept of set size or '''cardinality''' is both richer and more problematic than it is for crisp sets. It is richer because, as we shall see, we may use more than one kind of '''cardinality'''.}}
#* {{quote-book|en|year=2012|author=Adolf Grünbaum; Robert S. Cohen; Marx W. Wartofsky|title=Philosophical Problems of Space and Time|edition=2nd|pageurl=https://books.google.com.au/books?id=m3ugBwAAQBAJ&pg=PA487&dq=%22cardinality%22%7C%22cardinalities%22&hl=en&sa=X&ved=0ahUKEwjcj5ywv_DaAhWCg5AKHcJHCdYQ6AEIjQEwEw#v=onepage&q=%22cardinality%22%7C%22cardinalities%22&f=false|page=487|publisher=Springer
|passage=Clearly, in this example, the sensitivity to the '''cardinalities''' takes the weaker form <math>F[M(A)] = \overset{=}{A}</math> of a single-valued function from the measure to the '''cardinality''' rather than the stronger form <math>M(A) = f(\overset{=}{A})</math> of a function from the '''cardinality''' to the measure.}}
# {{lb|en|[[type theory]]}} The number of [[term]]s that can [[inhabit]] a [[type]]; the possible values of a type.
#* {{quote-book|en|title=Programming in Scala|chapter=19|isbn=978-0997148008|edition=5th|year=2021|author=w:Martin Odersky; et al.|publisher=Artima|passage=For many types, such as <code>String</code>, the set of possible values is unlimited. Such types have an infinite '''cardinality'''.}}
# {{lb|en|data modeling|databases}} The property of a relationship between a [[database]] [[table]] and another one, specifying whether it is one-to-one, one-to-many, many-to-one, or many-to-many.
# {{lb|en|religion}} The status of being [[cardinalitial]]
==== භාවිත සටහන් ====
{{sense|set theory}} The cardinality of an infinite set is an infinite [[cardinal number]]. The smallest such number, called {{m|en|aleph-null}} and denoted {{m|mul|ℵ₀}}, describes the [[natural numbers]]; the next is {{m|en|aleph-one}}. The cardinality of the [[real numbers]] is greater than aleph-null, though whether it is equal to aleph-one is the subject of the [[continuum hypothesis]].
==== ආශ්රිත යෙදුම් ====
* {{l|en|cardinal}}
==== පරිවර්තන ====
{{trans-top|(set theory) number of elements a given set contains}}
* Armenian: {{t+|hy|հզորություն}}
* Bulgarian: {{t|bg|кардиналност|f}}
* Chinese:
*: Mandarin: {{t+|cmn|勢}}
* Czech: {{t+|cs|mohutnost|f}}, {{t|cs|kardinalita|f}}
* Danish: {{t|da|mægtighed|c}}, {{t|da|kardinalitet|c}}
* Dutch: {{t+|nl|kardinaliteit|f}}
* Estonian: {{t|et|võimsus}}
* Finnish: {{t+|fi|mahtavuus}}
* French: {{t+|fr|cardinalité|f}}
* German: {{t|de|Mächtigkeit|f}}, {{t+|de|Kardinalität|f}}
* Greek: {{t+|el|πληθάριθμος|m}}
* Hebrew: {{t+|he|עָצְמָה|f}}
* Hindi: {{t|hi|प्रमुखता|?}}
* Hungarian: {{t+|hu|számosság}}
* Icelandic: {{t|is|fjöldatala|f}}
* Irish: {{t|ga|bunuimhreacht|f}}
* Italian: {{t|it|cardinalità|f}}, {{t|it|numerosità|f}}, {{t+|it|potenza|f}}
* Japanese: {{t+|ja|濃度|tr=のうど, nōdo}}
* Kazakh: {{t|kk|жиын қуаты}}
* Korean: {{t|ko|집합의 크기}}, {{t|ko|농도(濃度)}}
* Macedonian: {{t|mk|моќност|f}}
* Norwegian:
*: Bokmål: {{t|nb|kardinalitet|m}}
* Polish: {{t+|pl|liczebność|f}}, {{t+|pl|moc|f}}, {{t+|pl|kardynalność|f}}
* Portuguese: {{t+|pt|cardinalidade|f}}
* Romanian: {{t|ro|cardinalitate|f}}, {{t|ro|[[mărime]] ([[potențială]])|f}}
* Russian: {{t|ru|[[мо́щность]] ([[мно́жества]])|f}}
* Slovak: {{t|sk|mohutnosť|f}}
* Slovene: {{t|sl|moč množice|?}}
* Spanish: {{t|es|cardinalidad|f}}
* Swedish: {{t+|sv|kardinalitet|c}}
* Tamil: {{t|ta|எண் அளவை}}
* Thai: {{t|th|ภาวะเชิงการนับ|tr=p̣hāwa cheing kār nạb}}
* Ukrainian: {{t|uk|потужність|f-in}}
* Vietnamese: {{t+|vi|lực lượng}}, {{t|vi|lực lượng của một tập hợp}}
{{trans-bottom}}
{{trans-top|(type theory) number of terms that can inhabit a type}}
* Bulgarian: {{t|bg|кардиналност|f}}
* Polish: {{t+|pl|liczebność|f}}, {{t+|pl|moc|f}}, {{t+|pl|kardynalność|f}}
{{trans-bottom}}
{{trans-top|(data modeling) property of a relationship between a database table and another one}}
* Bulgarian: {{t|bg|кардиналност|f}}
* French: {{t+|fr|cardinalité|f}}
* Polish: {{t+|pl|liczebność|f}}, {{t+|pl|moc|f}}, {{t+|pl|kardynalność|f}}
{{trans-bottom}}
{{trans-top|(religion) status of being cardinalitial}}
* Bulgarian: {{t-check|bg|кардиналност|f}}
* French: {{t+|fr|cardinalité|f}}
* Polish: {{t+|pl|kardynalność|f}}
{{trans-bottom}}
==== අමතර අවධානයට ====
* {{l|en|aleph}}
* {{l|en|cardinal number}}
* {{l|en|multiplicity}}
=== වැඩිදුර් කියවීම සඳහා ===
* {{pedia|Aleph number}}
* {{pedia|Beth number}}
* {{pedia|Cardinality of the continuum}}
* {{pedia|Limit cardinal}}
{{C|en|Infinity}}
h9zt0iglu543bw9715oopsjusvz22kl
දමස්කස් කඩු
0
143939
234890
2026-05-25T12:31:11Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
234890
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
දමස්කස් කඩුව
0
143940
234891
2026-05-25T12:31:47Z
Lee
19
'==සිංහල== === නිරුක්තිය === {{rfe|si}} ===නාම පදය=== {{head|si|noun form}} # {{singular of|si|දමස්කස් කඩු}} # {{rfdef|si}}' යොදමින් නව පිටුවක් තනන ලදි
234891
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{singular of|si|දමස්කස් කඩු}}
# {{rfdef|si}}
gnpkjn24rb98ikred6p0tzxgu1034ag
ප්රවර්ගය:ස්පාඤ්ඤ epicene adjectives
14
143941
234899
2026-05-25T13:27:58Z
Pinthura
2424
Pinthura විසින් [[ප්රවර්ගය:ස්පාඤ්ඤ epicene adjectives]] සිට [[ප්රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්රවර්ග නාමය වෙත ගෙනයාම.
234899
wikitext
text/x-wiki
#යළියොමුව [[:ප්රවර්ගය:ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද]]
sw96d1h57kwa9w4oxbx0d5oyf981j63
234901
234899
2026-05-25T13:28:18Z
Pinthura
2424
සේවා: යළියොමුව, මෘදු ප්රවර්ග යළියොමුවක් බවට හැරවීම.
234901
wikitext
text/x-wiki
{{category redirect|ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද}}
fueksfvx9yqu18b7xofyfnjb880xpgc
ප්රවර්ගය:Spanish උභයලිංගික නාම විශේෂණ පද
14
143942
234902
2026-05-25T13:28:27Z
Pinthura
2424
සේවා: මෘදු ප්රවර්ග යළියොමුවක් නිර්මාණය.
234902
wikitext
text/x-wiki
{{category redirect|ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද}}
fueksfvx9yqu18b7xofyfnjb880xpgc
ප්රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව
14
143943
234904
2019-03-14T04:35:53Z
en>NadandoBot
0
wanted categories
234904
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
234905
234904
2026-05-25T13:30:46Z
Lee
19
[[:en:Category:Spanish_adjectives_by_inflection_type]] වෙතින් එක් සංශෝධනයක්
234904
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
234908
234905
2026-05-25T13:33:06Z
Lee
19
Lee විසින් [[ප්රවර්ගය:Spanish adjectives by inflection type]] සිට [[ප්රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව]] වෙත පිටුව ගෙන යන ලදී: ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද
234904
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
ප්රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද
14
143944
234906
2023-06-22T08:07:08Z
en>WingerBot
0
Created page with "{{auto cat}}"
234906
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
234907
234906
2026-05-25T13:31:10Z
Lee
19
[[:en:Category:Epicene_adjectives_by_language]] වෙතින් එක් සංශෝධනයක්
234906
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
234910
234907
2026-05-25T13:33:31Z
Lee
19
Lee විසින් [[ප්රවර්ගය:Epicene adjectives by language]] සිට [[ප්රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී
234906
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
ප්රවර්ගය:Spanish adjectives by inflection type
14
143945
234909
2026-05-25T13:33:07Z
Lee
19
Lee විසින් [[ප්රවර්ගය:Spanish adjectives by inflection type]] සිට [[ප්රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව]] වෙත පිටුව ගෙන යන ලදී: ස්පාඤ්ඤ උභයලිංගික නාම විශේෂණ පද
234909
wikitext
text/x-wiki
#යළියොමුව [[:ප්රවර්ගය:ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව]]
epcgjbbpal9uir1w16f64y9dm6xf4xk
234913
234909
2026-05-25T13:33:55Z
Pinthura
2424
රොබෝ: යළියොමුව, මෘදු ප්රවර්ග යළියොමුවක් බවට හැරවීම
234913
wikitext
text/x-wiki
{{category redirect|ස්පාඤ්ඤ නාම විශේෂණ පද, වරනැගීම් වර්ගය අනුව}}
9sciale4n5406tuiy631i7iswnbbj1s
ප්රවර්ගය:Epicene adjectives by language
14
143946
234911
2026-05-25T13:33:32Z
Lee
19
Lee විසින් [[ප්රවර්ගය:Epicene adjectives by language]] සිට [[ප්රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද]] වෙත පිටුව ගෙන යන ලදී
234911
wikitext
text/x-wiki
#යළියොමුව [[:ප්රවර්ගය:භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද]]
j3eswd7oo063j3grpx6i6laigpyd87i
234912
234911
2026-05-25T13:33:45Z
Pinthura
2424
රොබෝ: යළියොමුව, මෘදු ප්රවර්ග යළියොමුවක් බවට හැරවීම
234912
wikitext
text/x-wiki
{{category redirect|භාෂාව අනුව උභයලිංගික නාම විශේෂණ පද}}
du5ihsw38crg5cj02smqaer1cdv0u1u
Module:ksw-translit
828
143947
234917
2024-04-27T09:25:24Z
en>SurjectionBot
0
Protected "[[Module:ksw-translit]]": (bot) automatically protect highly visible templates/modules (reference score: 1927+ >= 1000) ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))
234917
Scribunto
text/plain
local export = {}
local gsub = mw.ustring.gsub
local u = mw.ustring.char
local tt1 = {
-- consonants
["က"] = "kə", ["ခ"] = "khə", ["ဂ"] = "ghə", ["ဃ"] = "xə", ["င"] = "ngə",
["စ"] = "sə", ["ဆ"] = "hsə", ["ၡ"] = "shə", ["ည"] = "nyə",
["တ"] = "tə", ["ထ"] = "hṭə", ["ဒ"] = "də", ["န"] = "nə",
["ပ"] = "pə", ["ဖ"] = "hpə", ["ဘ"] = "bə", ["မ"] = "mə",
["ယ"] = "yə", ["ရ"] = "rə", ["လ"] = "lə", ["ဝ"] = "wə",
["သ"] = "thə", ["ဟ"] = "hə", ["အ"] = "ʼə", ["ဧ"] = "ahh ",
-- medials
["ှ"] = "ˣhgə", ["ၠ"] = "ˣyə", ["ြ"] = "ˣrə", ["ျ"] = "ˣlə", ["ွ"] = "ˣwə",
-- dependent vowels
["ါ"] = "ah ", ["ံ"] = "ee ", ["ု"] = "u ", ["ူ"] = "oo ", ["ၢ"] = "uh ",
["့"] = "ay ", ["ဲ"] = "eh ", ["ိ"] = "oh ", ["ီ"] = "aw ",["ႉ"] = ". ",
-- numerals
["၀"] = "0", ["၁"] = "1", ["၂"] = "2", ["၃"] = "3", ["၄"] = "4",
["၅"] = "5", ["၆"] = "6", ["၇"] = "7", ["၈"] = "8", ["၉"] = "9",
-- zero-width space (display it if it hides in a word)
[u(0x200B)] = "‼",
}
local adjust0 = {
-- tones
["ၢ်"] = u(0x0331), ["ာ်"] = u(0x0323), ["း"] = u(0x0308), ["ၣ်"] = u(0x0300),
["ၤ"] = u(0x0304), --prolonged
}
function export.tr(text, lang, sc)
if type(text) == "table" then -- called directly from a template
text = text.args[1]
end
for k, v in pairs(adjust0) do
text = gsub(text, k, v)
end
text = gsub(text, ".", tt1)
text = gsub(text, "əˣ", "")
text = gsub(text, "ə([aeiou])", "%1")
text = gsub(text, "ə", "a ")
text = gsub(text, "%s(["..u(0x0331)..u(0x0323)..u(0x0308)..u(0x0300)..u(0x0304).."])", "%1 ")
text = gsub(text, "(.-)%s*$", "%1") -- remove space at the end
return text
end
return export
2y2a23i2iuseenlr7vrzyveqnk2kxum
234918
234917
2026-05-25T13:42:02Z
Lee
19
[[:en:Module:ksw-translit]] වෙතින් එක් සංශෝධනයක්
234917
Scribunto
text/plain
local export = {}
local gsub = mw.ustring.gsub
local u = mw.ustring.char
local tt1 = {
-- consonants
["က"] = "kə", ["ခ"] = "khə", ["ဂ"] = "ghə", ["ဃ"] = "xə", ["င"] = "ngə",
["စ"] = "sə", ["ဆ"] = "hsə", ["ၡ"] = "shə", ["ည"] = "nyə",
["တ"] = "tə", ["ထ"] = "hṭə", ["ဒ"] = "də", ["န"] = "nə",
["ပ"] = "pə", ["ဖ"] = "hpə", ["ဘ"] = "bə", ["မ"] = "mə",
["ယ"] = "yə", ["ရ"] = "rə", ["လ"] = "lə", ["ဝ"] = "wə",
["သ"] = "thə", ["ဟ"] = "hə", ["အ"] = "ʼə", ["ဧ"] = "ahh ",
-- medials
["ှ"] = "ˣhgə", ["ၠ"] = "ˣyə", ["ြ"] = "ˣrə", ["ျ"] = "ˣlə", ["ွ"] = "ˣwə",
-- dependent vowels
["ါ"] = "ah ", ["ံ"] = "ee ", ["ု"] = "u ", ["ူ"] = "oo ", ["ၢ"] = "uh ",
["့"] = "ay ", ["ဲ"] = "eh ", ["ိ"] = "oh ", ["ီ"] = "aw ",["ႉ"] = ". ",
-- numerals
["၀"] = "0", ["၁"] = "1", ["၂"] = "2", ["၃"] = "3", ["၄"] = "4",
["၅"] = "5", ["၆"] = "6", ["၇"] = "7", ["၈"] = "8", ["၉"] = "9",
-- zero-width space (display it if it hides in a word)
[u(0x200B)] = "‼",
}
local adjust0 = {
-- tones
["ၢ်"] = u(0x0331), ["ာ်"] = u(0x0323), ["း"] = u(0x0308), ["ၣ်"] = u(0x0300),
["ၤ"] = u(0x0304), --prolonged
}
function export.tr(text, lang, sc)
if type(text) == "table" then -- called directly from a template
text = text.args[1]
end
for k, v in pairs(adjust0) do
text = gsub(text, k, v)
end
text = gsub(text, ".", tt1)
text = gsub(text, "əˣ", "")
text = gsub(text, "ə([aeiou])", "%1")
text = gsub(text, "ə", "a ")
text = gsub(text, "%s(["..u(0x0331)..u(0x0323)..u(0x0308)..u(0x0300)..u(0x0304).."])", "%1 ")
text = gsub(text, "(.-)%s*$", "%1") -- remove space at the end
return text
end
return export
2y2a23i2iuseenlr7vrzyveqnk2kxum
Module:ksw-translit/documentation
828
143948
234919
2017-11-09T07:02:53Z
en>Erutuon
0
documentation template
234919
wikitext
text/x-wiki
{{translit module documentation|ksw}}
3swpg089k5npqtn66yw4ihvauysf6z2
234920
234919
2026-05-25T13:42:27Z
Lee
19
[[:en:Module:ksw-translit/documentation]] වෙතින් එක් සංශෝධනයක්
234919
wikitext
text/x-wiki
{{translit module documentation|ksw}}
3swpg089k5npqtn66yw4ihvauysf6z2
Module:dar-translit/documentation
828
143949
234921
2014-07-08T20:35:37Z
en>Rua
0
234921
wikitext
text/x-wiki
{{translit module documentation|dar}}
qg6z7cj94hcu4ef0npoms0v26uwwk9u
234922
234921
2026-05-25T13:44:56Z
Lee
19
[[:en:Module:dar-translit/documentation]] වෙතින් එක් සංශෝධනයක්
234921
wikitext
text/x-wiki
{{translit module documentation|dar}}
qg6z7cj94hcu4ef0npoms0v26uwwk9u
Module:dar-translit
828
143950
234923
2025-06-24T19:29:33Z
en>Kaitag words
0
234923
Scribunto
text/plain
local u = require("Module:string/char")
local export = {}
local mapping1 = {
["б"]="b", ["п"]="p", ["ф"]="f", ["в"]="v", ["м"]="m",
["д"]="d", ["т"]="t", ["й"]="j", ["н"]="n", ["з"]="z", ["ц"]="c",
["с"]="s", ["ж"]="ž", ["ш"]="š", ["щ"]="šč",
["л"]="l", ["ч"]="č", ["р"]="r", ["г"]="g", ["к"]="k", ["х"]="ꭓ",
["ъ"]="ʾ", ["а"]="a", ["е"]="e", ["ы"]="y", ["и"]="i", ["о"]="o", ["у"]="u",
["ё"]="ë", ["ь"]="’", ["э"]="e", ["ю"]="ju", ["я"]="ə",
["Б"]="B", ["П"]="P", ["Ф"]="F", ["В"]="V", ["М"]="M",
["Д"]="D", ["Т"]="T", ["Й"]="J", ["Н"]="N", ["З"]="Z", ["Ц"]="C",
["С"]="S", ["Ж"]="Ž", ["Ш"]="Š", ["Щ"]="Šč",
["Л"]="L", ["Ч"]="Č", ["Р"]="R", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ",
["Ъ"]="ʾ", ["А"]="A", ["Е"]="E", ["Ы"]="Y", ["И"]="I", ["О"]="O", ["У"]="U",
["Ё"]="Ë", ["Ь"]="’", ["Э"]="E", ["Ю"]="Ju", ["Я"]="Ə"
}
local mapping2 = {
['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ',
['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['цӏ'] = 'c̣', ['тӏ'] = 'ṭ',
['чӏ'] = 'č̣', ['кь'] = 'q̇', ['кӏ'] = 'ḳ', ['хь'] = 'x',
['хъ'] = 'q', ['къ'] = 'ɢ', ['гъ'] = 'ɣ', ['гӏ'] = 'ʿ',
['хӏ'] = 'ḥ', ['гь'] = 'h', ['Цӏ'] = 'C̣', ['Тӏ'] = 'Ṭ',
['Сс'] = 'S̄', ['Чӏ'] = 'Č̣', ['Кь'] = 'Q̇', ['Кӏ'] = 'Ḳ',
['Хь'] = 'X', ['Хъ'] = 'Q', ['Къ'] = 'ɢ', ['Гъ'] = 'Γ',
['Гӏ'] = 'ʿ', ['Хӏ'] = 'Ḥ', ['Гь'] = 'H',
}
function export.tr(text, lang, sc)
local str_gsub = string.gsub
-- Convert capital to lowercase palochka. Lowercase is found in tables
-- above.
text = str_gsub(text, u(0x4C0), u(0x4CF))
for pat, repl in pairs(mapping2) do
text = str_gsub(text, pat, repl)
end
-- pattern for non-ASCII UTF-8 characters
text = str_gsub(text, '[\194-\244][\128-\191]+', mapping1)
return text
end
return export
rz6x7spdt2dywmm6t5qd7b93nj5vpaf
234924
234923
2026-05-25T13:45:02Z
Lee
19
[[:en:Module:dar-translit]] වෙතින් එක් සංශෝධනයක්
234923
Scribunto
text/plain
local u = require("Module:string/char")
local export = {}
local mapping1 = {
["б"]="b", ["п"]="p", ["ф"]="f", ["в"]="v", ["м"]="m",
["д"]="d", ["т"]="t", ["й"]="j", ["н"]="n", ["з"]="z", ["ц"]="c",
["с"]="s", ["ж"]="ž", ["ш"]="š", ["щ"]="šč",
["л"]="l", ["ч"]="č", ["р"]="r", ["г"]="g", ["к"]="k", ["х"]="ꭓ",
["ъ"]="ʾ", ["а"]="a", ["е"]="e", ["ы"]="y", ["и"]="i", ["о"]="o", ["у"]="u",
["ё"]="ë", ["ь"]="’", ["э"]="e", ["ю"]="ju", ["я"]="ə",
["Б"]="B", ["П"]="P", ["Ф"]="F", ["В"]="V", ["М"]="M",
["Д"]="D", ["Т"]="T", ["Й"]="J", ["Н"]="N", ["З"]="Z", ["Ц"]="C",
["С"]="S", ["Ж"]="Ž", ["Ш"]="Š", ["Щ"]="Šč",
["Л"]="L", ["Ч"]="Č", ["Р"]="R", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ",
["Ъ"]="ʾ", ["А"]="A", ["Е"]="E", ["Ы"]="Y", ["И"]="I", ["О"]="O", ["У"]="U",
["Ё"]="Ë", ["Ь"]="’", ["Э"]="E", ["Ю"]="Ju", ["Я"]="Ə"
}
local mapping2 = {
['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ',
['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['цӏ'] = 'c̣', ['тӏ'] = 'ṭ',
['чӏ'] = 'č̣', ['кь'] = 'q̇', ['кӏ'] = 'ḳ', ['хь'] = 'x',
['хъ'] = 'q', ['къ'] = 'ɢ', ['гъ'] = 'ɣ', ['гӏ'] = 'ʿ',
['хӏ'] = 'ḥ', ['гь'] = 'h', ['Цӏ'] = 'C̣', ['Тӏ'] = 'Ṭ',
['Сс'] = 'S̄', ['Чӏ'] = 'Č̣', ['Кь'] = 'Q̇', ['Кӏ'] = 'Ḳ',
['Хь'] = 'X', ['Хъ'] = 'Q', ['Къ'] = 'ɢ', ['Гъ'] = 'Γ',
['Гӏ'] = 'ʿ', ['Хӏ'] = 'Ḥ', ['Гь'] = 'H',
}
function export.tr(text, lang, sc)
local str_gsub = string.gsub
-- Convert capital to lowercase palochka. Lowercase is found in tables
-- above.
text = str_gsub(text, u(0x4C0), u(0x4CF))
for pat, repl in pairs(mapping2) do
text = str_gsub(text, pat, repl)
end
-- pattern for non-ASCII UTF-8 characters
text = str_gsub(text, '[\194-\244][\128-\191]+', mapping1)
return text
end
return export
rz6x7spdt2dywmm6t5qd7b93nj5vpaf
වික්ෂනරි:Requested entries (Sinhalese)
4
143951
234930
2026-05-26T06:58:12Z
Lee
19
Lee විසින් [[වික්ෂනරි:Requested entries (Sinhalese)]] සිට [[වික්ෂනරි:Requested entries (සිංහල)]] වෙත පිටුව ගෙන යන ලදී
234930
wikitext
text/x-wiki
#යළියොමුව [[වික්ෂනරි:Requested entries (සිංහල)]]
exjylfwod0m2yhfmdo8vu0x6m6lwuxm
පිරිහිණිමි
0
143952
234950
2026-05-26T10:51:57Z
WrdSrchSi
3305
Page created: + IPA|si + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
234950
wikitext
text/x-wiki
==සිංහල==
===උච්චාරණය===
* {{IPA|si|/ˈpiriɦiɳimi/}}
===ක්රියා පද===
{{head|si|verb forms|head=පිරිහිණිමි|අනතීත-අකර්මක උත්තම ඒකවචන|පිරිහෙමි#ක්රියා පද}}
# {{lb|si|අකර්මක}} {{infl of|si|පිරිහේ#ක්රියා පද||අතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්යාත ක්රියා}}
[[ප්රවර්ගය: සිංහල ආඛ්යාත ක්රියා පද]]
44mtq13s73etm0votadobajojxe62bm
සෙට
0
143953
234951
2026-05-26T10:55:09Z
WrdSrchSi
3305
Page created: + alternative form of|si
234951
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{alternative form of|si|හෙට}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
oc47omcxhwv686onyqblrzmxur6sn3m
ඊයේට
0
143954
234952
2026-05-26T10:56:20Z
WrdSrchSi
3305
Page created.
234952
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{rfdef|si}}
4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3
සෙටින්
0
143955
234953
2026-05-26T10:57:52Z
WrdSrchSi
3305
Page created: + alternative form of|si
234953
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{alternative form of|si|හෙටින්}}
pzzt5pnog74w4pb3s5yxq8mu1c7kwhx
සෙටට
0
143956
234954
2026-05-26T10:59:18Z
WrdSrchSi
3305
Page created: + alternative form of
234954
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{alternative form of|si|හෙටට}}
kgfylgxqncb8v6g4o7slgay2idj1s5q
කෙළිත
0
143957
234955
2026-05-26T11:00:21Z
WrdSrchSi
3305
Page created.
234955
wikitext
text/x-wiki
== සිංහල ==
=== ක්රියා පද ===
{{head|si|verb form}}
# {{{1|{{rfdef|si}}}}} #: ''{{{2|<!-- example sentence -->}}}''
p515qhzvrxvpn5kx1ka05hdnfbvr2ar
යදියා
0
143958
234956
2026-05-26T11:01:41Z
WrdSrchSi
3305
Page created.
234956
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
මෑණියෝ
0
143959
234957
2026-05-26T11:05:46Z
WrdSrchSi
3305
Page created.
234957
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
එකකුට
0
143960
234958
2026-05-26T11:07:00Z
WrdSrchSi
3305
Page created.
234958
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{rfdef|si}}
4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3
නෙළනුව
0
143961
234959
2026-05-26T11:12:12Z
WrdSrchSi
3305
+ head|si|verb forms|head= + infl of|si + ප්රවර්ගය
234959
wikitext
text/x-wiki
== සිංහල ==
===ක්රියා පද===
{{head|si|verb forms|head=නෙළනුව}}
# {{infl of|si|නෙළයි#ක්රියා පද||අනාගත|නිපාත ක්රියා}}
[[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]] [[ප්රවර්ගය: සිංහල අනාගත නිපාත ක්රියා පද]]
30w1mznrgp8wvgti0i3u4omrwbadcee
පනිනුව
0
143962
234960
2026-05-26T11:15:15Z
WrdSrchSi
3305
Page created: + head|si|verb forms|head= + infl of|si + ප්රවර්ගය
234960
wikitext
text/x-wiki
== සිංහල ==
===ක්රියා පද===
{{head|si|verb forms|head=පනිනුව}}
# {{infl of|si|පනී#ක්රියා පද||අනාගත|නිපාත ක්රියා}}
[[ප්රවර්ගය: සිංහල නිපාත ක්රියා පද]] [[ප්රවර්ගය: සිංහල අනාගත නිපාත ක්රියා පද]]
53jn9tss4gfydnmftgvc0bcjnkxx2zg
තුමුටු
0
143963
234961
2026-05-26T11:20:02Z
WrdSrchSi
3305
Page created: + මූලාශ්ර
234961
wikitext
text/x-wiki
==සිංහල==
===ක්රියා විශේෂණ පද ?===
{{si-adv}}
# In a [[{{{1}}}]] manner{{{2|; <!--other wording-->}}}.
=== මූලාශ්ර ===
<references/>
* "55. තුමුටු [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්යාකරණ විවරණය''''', — 298 පිටුව
h7la1x2ztddnd56dy4swsuyoeply9vf
ඔහෝ
0
143964
234962
2026-05-26T11:23:45Z
WrdSrchSi
3305
Page created: + මූලාශ්ර
234962
wikitext
text/x-wiki
== සිංහල ==
=== මූලාශ්ර ===
<references/>
* "64. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්යාකරණ විවරණය''''', — 301 පිටුව
nvjm5ukg7o1gvzl9vwwtmnb7sv5zmuq
හෝය්යා
0
143965
234963
2026-05-26T11:26:18Z
WrdSrchSi
3305
Page created: + මූලාශ්ර
234963
wikitext
text/x-wiki
== සිංහල ==
=== මූලාශ්ර ===
<references/>
* "66. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්යාකරණ විවරණය''''', — 301 පිටුව
tl85rtjoh49fjin5xahslae1xcdisv7
සී
0
143966
234964
2026-05-26T11:29:15Z
WrdSrchSi
3305
Page created: + alternative form of|si + මූලාශ්ර
234964
wikitext
text/x-wiki
== සිංහල ==
# {{alternative form of|si|චී}}
=== මූලාශ්ර ===
<references/>
* "71. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්යාකරණ විවරණය''''', — 302 පිටුව
g4yq7bsgej4pwsa9o532zv1nsqweb2g
234965
234964
2026-05-26T11:30:49Z
WrdSrchSi
3305
Fixed.
234965
wikitext
text/x-wiki
== සිංහල ==
# {{alternative form of|si|චිඃ}}
=== මූලාශ්ර ===
<references/>
* "71. [https://tipitaka.lk/library/969]" කුමාරණතුංග මුනිදාස, '''''ව්යාකරණ විවරණය''''', — 302 පිටුව
nmfuuvffkepabo31hi86vwzwz1uwrw1
දරුවෙනි
0
143967
234966
2026-05-26T11:33:04Z
WrdSrchSi
3305
Page created.
234966
wikitext
text/x-wiki
==සිංහල==
=== නිරුක්තිය ===
{{rfe|si}}
===නාම පදය===
{{head|si|noun form}}
# {{rfdef|si}}
4bk4s1b4g1dyqtbh6fxsfy4ojsiyxw3