From 941f701d7d30841643755aa61f1b07f3593d7acb Mon Sep 17 00:00:00 2001 From: UndeadMaelys Date: Sun, 8 May 2022 18:31:09 +0200 Subject: [PATCH] changes to badges and types n stuff --- color.lua | 85 +++ converter.lua | 137 ++++- html/pop_up.html | 1 - ime.js | 10 +- input_test.txt | 55 +- main.js | 164 +++++- test.html | 1359 +++++++++++++++++++++++----------------------- 7 files changed, 1072 insertions(+), 739 deletions(-) create mode 100644 color.lua diff --git a/color.lua b/color.lua new file mode 100644 index 0000000..06596e1 --- /dev/null +++ b/color.lua @@ -0,0 +1,85 @@ +function Enum(tbl) + for i = 1, #tbl do + local v = tbl[i] + tbl[v] = i + end + return tbl +end + +COLOR = Enum { + "Black", + "Red", + "Green", + "Yellow", + "Blue", + "Purple", + "Cyan", + "LightGray", + "Gray", + "HighRed", + "HighGreen", + "HighYellow", + "HighBlue", + "HighPurple", + "HighCyan", + "White" +} + +EFFECT = Enum { + "Normal", + "Bold", + "Dim", + "Italic", + "Underline", + "BlinkSlow", + "BlinkFast", + "Invert", + "Conceal", + "CrossedOut" +} + +function effectText(Effect, ...) + local Text = "" + local tab = false + for _, v in pairs({...}) do + if not tab then + tab = true + else + Text = Text .. "\t" + end + Text = Text .. v + end + return "\027["..tostring(Effect-1).."m"..Text.."\027[0;m" +end + +function colorText(Color, ...) + local Text = "" + local tab = false + for _, v in pairs({...}) do + if not tab then + tab = true + else + Text = Text .. "\t" + end + Text = Text .. v + end + return "\027[38;5;"..tostring(Color-1).."m"..Text.."\027[0;m" +end + +function colorTextBackground(Color, ...) + local Text = "" + local tab = false + for _, v in pairs({...}) do + if not tab then + tab = true + else + Text = Text .. "\t" + end + Text = Text .. v + end + return "\027[48;5;"..tostring(Color-1).."m"..Text.."\027[0;m" +end + +function scrollTerminalUp(amount) + return "\027["..amount.."T" +end diff --git a/converter.lua b/converter.lua index 32cb9b7..3df16f0 100644 --- a/converter.lua +++ b/converter.lua @@ -1,12 +1,62 @@ require "r2h2_modified" +require "color" words = dofile("heonian-content/words.lua") +input = arg[1] or "input.txt" function apply(text) print(text) end +function printD(...) + io.stderr:write( + effectText( + EFFECT.Bold, + colorText( + COLOR.HighPurple, + "\tDEBUG:\t" + ) + ) .. + colorText( + COLOR.HighPurple, + table.unpack({...}) , "\n" + ) + ) +end + +function printW(...) + io.stderr:write( + effectText( + EFFECT.Bold, + colorText( + COLOR.HighYellow, + "\t WARN:\t" + ) + ) .. + colorText( + COLOR.HighYellow, + table.unpack({...}) .. "\n" + ) + ) +end + +function printE(...) + io.stderr:write( + effectText( + EFFECT.Bold, + colorText( + COLOR.HighRed, + "\tERROR:\t" + ) + ) .. + colorText( + COLOR.HighRed, + table.unpack({...}) .. "\n" + ) + ) +end + function process_content(content) content = content .. " " for i=1, 2 do @@ -31,6 +81,7 @@ function process_content(content) new_word = strip_symbols(new_word) new_word, indicators = revert_verbs(new_word, indicators) new_word, indicators = revert_nouns(new_word,indicators) + new_word, indicators = categorize_word(new_word,indicators) add_word(new_word) local html_stuff = [[ @@ -89,7 +140,7 @@ function process_content(content) ac = string.sub(ac, string.find(ac, " ")+1) -- now we print the thing with teh appropiate indicators. - --print(print_text, table.unpack(indicators)) + printD(print_text, table.unpack(indicators)) end apply_html("html/convo/text/end.html") end @@ -126,7 +177,7 @@ function add_word(str) end if add then table.insert(word_list,str) - if not in_dictionary(str) then io.stderr:write("Error: \""..str.."\" is not known\n") end + if not in_dictionary(str) then printW("\"" .. str .. "\" is not known") end end end @@ -161,9 +212,11 @@ function check_symbol(str) end function find_n_replace(str, tbl,find,repl,indicator) - if string.find(str, find) then - str = string.gsub(str,find, repl) - table.insert(tbl,indicator) + if not in_dictionary(str) then + if string.find(str, find) then + str = string.gsub(str,find, repl) + table.insert(tbl,indicator) + end end return str, tbl end @@ -174,37 +227,75 @@ function in_dictionary(str) end end -function check_morphemes(str, tbl,match,repl,indicator) +function categorize_word(str,indicators) + local ind = {} + for _, v in pairs(words) do + if strip_symbols(v[1]) == strip_spaces(str) then + table.insert(ind, string.lower(v[3])) + break + end + end + for _, v in pairs(indicators) do + table.insert(ind, v) + end + return str, ind +end + +function check_morphemes(str, tbl,match,repl,indicators) + if type(indicators) ~= "table" then + indicators = {indicators} + end if not in_dictionary(str) then local flen = string.len(match) - if string.sub(str, -flen) == match - and string.sub(str,-3) ~= "ton" then - str = string.sub(str, 0,string.len(str)-flen) - table.insert(tbl,indicator) + if string.sub(str, -flen) == match then + str = string.sub(str, 0,string.len(str)-flen) .. repl + if tbl then + for _, v in pairs(indicators) do + table.insert(tbl,v) + end + end end end return str, tbl end function revert_nouns(str, tbl) + str, tbl = check_morphemes(str,tbl,"lfur","","formal-n1") + str, tbl = check_morphemes(str,tbl,"lafura","","formal-n2") str, tbl = check_morphemes(str,tbl,"lan","","genitive") str, tbl = check_morphemes(str,tbl,"la","","possesive") - str, tbl = check_morphemes(str,tbl,"n","","plural") - str, tbl = check_morphemes(str,tbl,"lfur","","formal1") - str, tbl = check_morphemes(str,tbl,"lafura","","formal2") + str, tbl = check_morphemes(str,tbl,"n","","plural") return str, tbl end function revert_verbs(str, tbl) - str, tbl = find_n_replace(str, tbl,"kanya","ku","present-tense") - str, tbl = find_n_replace(str, tbl,"kome","ku","past-tense") - str, tbl = find_n_replace(str, tbl,"kupash","ku","volitional-mood") - str, tbl = find_n_replace(str, tbl,"kudash","ku","imperative-mood") - str, tbl = find_n_replace(str, tbl,"kubash","ku","shy-mood") - str, tbl = find_n_replace(str, tbl,"kutash","ku","threat-mood") - str, tbl = find_n_replace(str, tbl,"kushu","ku","comfy-mood") - str, tbl = find_n_replace(str, tbl,"kuha","ku","excited-mood") - str, tbl = find_n_replace(str, tbl,"faku","ku","negated") + -- moods first + str, tbl = revert_mood(str, tbl,"pash","","volitional-mood") + str, tbl = revert_mood(str, tbl,"dash","","imperative-mood") + str, tbl = revert_mood(str, tbl,"bash","","shy-mood") + str, tbl = revert_mood(str, tbl,"tash","","threat-mood") + str, tbl = revert_mood(str, tbl,"shu","","comfy-mood") + str, tbl = revert_mood(str, tbl,"ha","","excited-mood") + -- once we've cleaned moods lets try to get tense + str, tbl = check_morphemes(str, tbl,"kanya","ku",{"present-tense-formal","formal-v1"}) + str, tbl = check_morphemes(str, tbl,"kome","ku",{"past-tense-formal","formal-v2"}) + -- maybe it's informal? + str, tbl = check_morphemes(str, tbl,"nya","",{"present-tense-informal","informal-v1"}) + str, tbl = check_morphemes(str, tbl,"me","",{"past-tense-informal","informal-v2"}) + for _, v in pairs(tbl) do + if v == "informal-v1" + or v == "informal-v2" then + str = str .. "ku" + end + end + -- negate + str, tbl = check_morphemes(str, tbl,"faku","ku","negated") + return str, tbl +end + +function revert_mood(str, tbl,match,repl,indicator) + str, tbl = find_n_replace(str, tbl,"fa"..match,repl,indicator.."-negated") + str, tbl = find_n_replace(str, tbl,match,repl,indicator) return str, tbl end @@ -286,7 +377,7 @@ end -- lets make the html apply_html("html/start.html") -- get text -local file = io.open("input.txt","r") +local file = io.open(input,"r") local text = file:read("*all") file:close() diff --git a/html/pop_up.html b/html/pop_up.html index 4f73034..eb24c0e 100644 --- a/html/pop_up.html +++ b/html/pop_up.html @@ -4,7 +4,6 @@
diff --git a/ime.js b/ime.js index f852394..b5e5a58 100644 --- a/ime.js +++ b/ime.js @@ -4,11 +4,11 @@ // let h; -// window.onload = () => { - // document.querySelectorAll(".ime").forEach(input => { - // h = new HeonianIME(input); - // }); -// } +window.onload = () => { + document.querySelectorAll(".ime").forEach(input => { + h = new HeonianIME(input); + }); +} class HeonianIME { constructor(what) { diff --git a/input_test.txt b/input_test.txt index 2e0d901..b5cb8e7 100644 --- a/input_test.txt +++ b/input_test.txt @@ -1,23 +1,40 @@ -ITS ME PEKORA -d deez -r hiiiii!!!! -! uwu +NOUNS +d nya + ren + renla + renlan + relfur + renlafura + +m + +VERBS +r TENSES + utiku + utikanya + utikome +/ +r FORMAL + utika'nya + utikome +/ +r INFORMAL + uti'nya + uti'me +/ +r FEELING + utikupash + utifakupash + utikufapash + utifakufapash +/ +r IMPERATIVE + utikudash + utifakudash + utikufadash + utifaku + HOLY SHIT REMI d a amogus - - -it's meee pekora!!!! -i eshnyui.png -d yolo - so cool - so cool - so cool - - how this work owo - - - so cool - so uwu - very good \ No newline at end of file diff --git a/main.js b/main.js index 970c8fe..d29e0f6 100644 --- a/main.js +++ b/main.js @@ -4,6 +4,7 @@ let currentFont = "r"; let timeout = ""; +let badge_type = "#696969" let badge_generic = "#393939" let badge_register= "#fed100" let badge_number = "#420690" @@ -13,20 +14,80 @@ let badge_mood = "#dd00dd" let badge_negation = "#133337" let quirkBadges = { - "formal1": { + // TYPES + "verb": { + "name": "Verb", + "description": "This word expresses an action that the subject of the sentence performs.", + "color": badge_type, + "type": "Type", + "bending": "-ku" + }, + "noun": { + "name": "Noun", + "description": "This word refers to a concept.", + "color": badge_type, + "type": "Type", + "bending": "none" + }, + "pronoun": { + "name": "Pronoun", + "description": "This word occupies the place of a noun.", + "color": badge_type, + "type": "Type", + "bending": "none" + }, + "expression": { + "name": "Expression", + "description": "This is an idiomatic expression.", + "color": badge_type, + "type": "Type", + "bending": "none" + }, + // FORMAL REGISTER + "formal-n1": { "name": "Formal", "description": "This word is used in formal or sincere settings.", "color": badge_register, "type": "Register", "bending": "-lfur" }, - "formal2": { + "formal-n2": { "name": "Formal", "description": "This word is used in formal or sincere settings.", "color": badge_register, "type": "Register", "bending": "-lafura" }, + "formal-v1": { + "name": "Formal", + "description": "This word is used in formal or sincere settings.", + "color": badge_register, + "type": "Register", + "bending": "ku -> kanya" + }, + "formal-v2": { + "name": "Formal", + "description": "This word is used in formal or sincere settings.", + "color": badge_register, + "type": "Register", + "bending": "ku -> kome" + }, + // INFORMAL REGISTER + "informal-v1": { + "name": "Informal", + "description": "This word is NOT used in formal or sincere settings.", + "color": badge_register, + "type": "Register", + "bending": "ku -> nya" + }, + "informal-v2": { + "name": "Informal", + "description": "This word is NOT used in formal or sincere settings.", + "color": badge_register, + "type": "Register", + "bending": "ku -> me" + }, + // POSSESIVES "genitive": { "name": "Generic Possesive", "description": "This word is describing a generic possesive relationship.", @@ -41,6 +102,7 @@ let quirkBadges = { "type": "Case", "bending": "la" }, + // NUMBER "plural": { "name": "Plural", "description": "This word is denoted as more than one", @@ -48,20 +110,37 @@ let quirkBadges = { "type": "Number", "bending": "n" }, - "present-tense": { + // PRESENT TENSE + "present-tense-formal": { "name": "Present", "description": "This word is in the present tense.", "color": badge_tense, "type": "Tense", "bending": "ku → ka'nya" }, - "past-tense": { + "present-tense-informal": { + "name": "Present", + "description": "This word is in the present tense.", + "color": badge_tense, + "type": "Tense", + "bending": "ku → nya" + }, + // PAST TENSE + "past-tense-formal": { "name": "Past", "description": "This word is in the past tense.", "color": badge_tense, "type": "Tense", "bending": "ku → kome" }, + "past-tense-informal": { + "name": "Past", + "description": "This word is in the past tense.", + "color": badge_tense, + "type": "Tense", + "bending": "ku → me" + }, + // VOLITIONAL "volitional-mood": { "name": "Feeling", "description": "This word expresses a feeling or craving mood.", @@ -69,6 +148,14 @@ let quirkBadges = { "type": "Mood", "bending": "-pash" }, + "volitional-mood-negated": { + "name": "Negated Feeling", + "description": "This word denies feeling or craving mood.", + "color": badge_mood, + "type": "Mood", + "bending": "-fapash" + }, + // IMPERATIVE "imperative-mood": { "name": "Imperative", "description": "This word expresses a imperative mood.", @@ -76,34 +163,74 @@ let quirkBadges = { "type": "Mood", "bending": "-dash" }, + "imperative-mood-negated": { + "name": "Negated Imperative", + "description": "This word denies a imperative mood.", + "color": badge_mood, + "type": "Mood", + "bending": "-fadash" + }, + // SHY "shy-mood": { "name": "Shy", - "description": "This word expresses a shy mood..", + "description": "This word expresses a shy mood.", "color": badge_mood, "type": "Mood", "bending": "-bash" }, + "shy-mood-negated": { + "name": "Negated Shy", + "description": "This word denies a shy mood.", + "color": badge_mood, + "type": "Mood", + "bending": "-fabash" + }, + // THREAT "threat-mood": { "name": "Threat", - "description": "This word expresses a threatening mood..", + "description": "This word expresses a threatening mood.", "color": badge_mood, "type": "Mood", "bending": "-tash" }, + "threat-mood-negated": { + "name": "Negated Threat", + "description": "This word denies a threatening mood.", + "color": badge_mood, + "type": "Mood", + "bending": "-fatash" + }, + // COMF + "comfy-mood": { + "name": "Comfort", + "description": "This word expresses a comfortable mood.", + "color": badge_mood, + "type": "Mood", + "bending": "-bash" + }, "comfy-mood": { - "name": "Comfortable", - "description": "This word expresses a comfortable mood..", + "name": "Negated Comfort", + "description": "This word denies a comfortable mood.", "color": badge_mood, "type": "Mood", - "bending": "-tash" + "bending": "-fabash" }, + // EXCITEMENT "excited-mood": { "name": "Excitement", - "description": "This word expresses a excited mood..", + "description": "This word expresses a excited mood.", "color": badge_mood, "type": "Mood", - "bending": "-tash" + "bending": "-ha" }, + "excited-mood-negated": { + "name": "Negated Excitement", + "description": "This word denies a excited mood.", + "color": badge_mood, + "type": "Mood", + "bending": "-faha" + }, + // NEGATION "negated": { "name": "Negative", "description": "The word is expressing a negated meaning.", @@ -111,6 +238,7 @@ let quirkBadges = { "type": "Negation", "bending": "-fa-" }, + // UNKNOWN "unknown-tag": { "name": "Unknown tag", "color": "#393939", @@ -142,15 +270,15 @@ function showPopup(ogword, word, quirks = "") { let c = document.querySelector("#popup-container"); word = cleanWord(word); if (currentFont == "r") { - p.querySelector("h1").innerText = words[word]["romanizationProper"]; - p.querySelector("#popup-heo").innerText = words[word]["heonian"]; + p.querySelector("h1").innerText = ogword; + p.querySelector("#popup-heo").innerText = words[word]["romanizationProper"] + " | " + words[word]["heonian"]; p.querySelector("h1").style.fontFamily = "var(--font-normal)"; } else { - p.querySelector("h1").innerText = words[word]["heonian"]; - p.querySelector("#popup-heo").innerText = words[word]["romanizationProper"]; + p.querySelector("h1").innerText = ogword; + p.querySelector("#popup-heo").innerText = words[word]["heonian"] + " | " + words[word]["romanizationProper"]; p.querySelector("h1").style.fontFamily = "var(--font-heonian)"; } - p.querySelector("#popup-type").innerText = words[word]["type"]; + //p.querySelector("#popup-type").innerText = words[word]["type"]; p.querySelector("#popup-meaning").innerText = words[word]["meaning"]; p.querySelector("#popup-quirks").innerHTML = ""; if (quirks.trim() != "") { @@ -166,7 +294,7 @@ function showPopup(ogword, word, quirks = "") { badge.onclick = () => { p.querySelector("h1").innerText = quirkBadges[quirk]["name"]; p.querySelector("#popup-meaning").innerText = quirkBadges[quirk]["description"]; - p.querySelector("#popup-type").innerText = quirkBadges[quirk]["type"]; + //p.querySelector("#popup-type").innerText = quirkBadges[quirk]["type"]; p.querySelector("#popup-quirks-container").style.display = "none"; p.querySelector("#popup-heo").innerText = quirkBadges[quirk]["bending"]; } @@ -244,7 +372,7 @@ function createWordList() { //sometimes i really dislike javascript.. words[n]["heonian"] = e[0].innerText; words[n]["romanization"] = e[1].innerText.replace(". ", ""); words[n]["romanizationProper"] = e[1].innerText; - words[n]["type"] = e[2].innerText; + //words[n]["type"] = e[2].innerText; words[n]["meaning"] = e[3].innerText; } }); diff --git a/test.html b/test.html index d6a1878..a35843f 100644 --- a/test.html +++ b/test.html @@ -55,48 +55,48 @@ LU'NYA

nyan'pash! balfur yu e she polika'nya @@ -113,48 +113,48 @@ LU'NYA

!   @@ -189,40 +189,40 @@ ESH'NYUI

re chu meshu yu polika'nya @@ -231,40 +231,40 @@ ESH'NYUI

  @@ -311,16 +311,16 @@ LU'NYA

aa, anko! @@ -329,16 +329,16 @@ LU'NYA

, ! @@ -385,48 +385,48 @@ ESH'NYUI

ba yu e wawote to pu @@ -441,8 +441,8 @@ ESH'NYUI lili'nya @@ -459,48 +459,48 @@ ESH'NYUI

 @@ -515,8 +515,8 @@ ESH'NYUI  @@ -554,120 +554,120 @@ LU'NYA

relfur chu mya pu yu mya relfur lup apatka'nya faka'nya'pash ponme mya wawote polika'nya peekaka'nya'pash. @@ -676,120 +676,120 @@ LU'NYA

            @@ -816,8 +816,8 @@ ESH'NYUI

mi'shi'pashshu @@ -826,8 +826,8 @@ ESH'NYUI

 @@ -836,40 +836,40 @@ ESH'NYUI

balfur yu e ton polika'nya @@ -886,40 +886,40 @@ ESH'NYUI

   @@ -954,8 +954,8 @@ LU'NYA

mishi'pash!! @@ -964,8 +964,8 @@ LU'NYA

!! @@ -974,56 +974,56 @@ LU'NYA

relfurla mya ton polika'nya yu meluton ka'nya! @@ -1032,56 +1032,56 @@ LU'NYA

     ! @@ -1090,24 +1090,24 @@ LU'NYA

balfurla yu dra? @@ -1116,24 +1116,24 @@ LU'NYA

 ? @@ -1160,72 +1160,72 @@ ESH'NYUI

relfurla yu esh'dre mya ton polika'nya yu puroton ka'nyashu @@ -1234,72 +1234,72 @@ ESH'NYUI

       @@ -1308,48 +1308,48 @@ ESH'NYUI

relfur yu shi'ro'bae'pu yu pon'ya ka'nyashu @@ -1358,48 +1358,48 @@ ESH'NYUI

    @@ -1426,40 +1426,40 @@ LU'NYA

puroton yu ponya ton ka'nya! @@ -1468,40 +1468,40 @@ LU'NYA

   ! @@ -1528,40 +1528,40 @@ ESH'NYUI

be'nyui rerenlafura yu meluton mimifaka'nya… @@ -1570,40 +1570,40 @@ ESH'NYUI

   … @@ -1612,32 +1612,32 @@ ESH'NYUI

relfur yu meluton mimiku'pashshu @@ -1646,32 +1646,32 @@ ESH'NYUI

   @@ -1706,24 +1706,24 @@ LU'NYA relfur chu parefaka'nya… @@ -1740,24 +1740,24 @@ LU'NYA  … @@ -1766,40 +1766,40 @@ LU'NYA

be'nyui babanlafura yu meluton naomiminku @@ -1816,40 +1816,40 @@ LU'NYA

    @@ -1884,40 +1884,40 @@ ESH'NYUI

uu, relfur yu naomiminku mya @@ -1932,24 +1932,24 @@ ESH'NYUI mya ton ka'nya... @@ -1958,40 +1958,40 @@ ESH'NYUI

,    @@ -2006,24 +2006,24 @@ ESH'NYUI   . @@ -2032,40 +2032,40 @@ ESH'NYUI

relfur yu guraton to meluton @@ -2082,40 +2082,40 @@ ESH'NYUI

   @@ -2132,32 +2132,32 @@ ESH'NYUI

relfur yu ton mimiku'pashshu @@ -2166,32 +2166,32 @@ ESH'NYUI

   @@ -2218,32 +2218,32 @@ LU'NYA

ishi balfur yu mishi'pash! @@ -2252,32 +2252,32 @@ LU'NYA

  ! @@ -2286,64 +2286,64 @@ LU'NYA

balfur chu mya arilaen yu en ka'nya peekaka'nya @@ -2360,64 +2360,64 @@ LU'NYA

      @@ -2452,32 +2452,32 @@ ESH'NYUI

yesh balfur yu mishi'pashshu @@ -2486,32 +2486,32 @@ ESH'NYUI

   @@ -2540,64 +2540,64 @@ ESH'NYUI

relfur yu ari'laen parefaka'nya, balfur yu pareka'nya dra? @@ -2606,64 +2606,64 @@ ESH'NYUI

  ,   ? @@ -2690,32 +2690,32 @@ LU'NYA

relfur chu arilaen dedaka'nya. @@ -2724,32 +2724,32 @@ LU'NYA

   @@ -2758,24 +2758,24 @@ LU'NYA

imanla rila shashka'nya'pash. @@ -2784,24 +2784,24 @@ LU'NYA

   @@ -2810,56 +2810,56 @@ LU'NYA

imanla shoo chu ike to pikeshe ka'nya. @@ -2868,56 +2868,56 @@ LU'NYA

     @@ -2930,32 +2930,32 @@ LU'NYA

relfur chu arilaenlan luka'nya'pash. @@ -2964,32 +2964,32 @@ LU'NYA

   @@ -3016,48 +3016,48 @@ ESH'NYUI

arilaenla shoo chu pikeshe fuka'nya'bash dra? @@ -3066,48 +3066,48 @@ ESH'NYUI

    ? @@ -3134,32 +3134,32 @@ LU'NYA

gao chu relfur yu @@ -3174,8 +3174,8 @@ LU'NYA kan'ya. @@ -3184,32 +3184,32 @@ LU'NYA

  @@ -3224,8 +3224,8 @@ LU'NYA  @@ -3234,32 +3234,32 @@ LU'NYA

relfur chu arilaen dedaka'nya. @@ -3268,32 +3268,32 @@ LU'NYA

   @@ -3444,16 +3444,16 @@ denotes the subject - + -meshu +me -??? +verb -??? +past form to be (informal) @@ -3556,10 +3556,10 @@ mipura - + -lilinya +liliku ??? @@ -3654,16 +3654,16 @@ to think, to become aware - + -mishipashshu +mi.shi -??? +noun -??? +nighttime @@ -3682,10 +3682,10 @@ color - + -mishipash +relfur ??? @@ -3706,6 +3706,20 @@ noun red + + + + + + + +balfur + + +??? + + +??? @@ -3794,10 +3808,10 @@ bunny - + -reren +rere ??? @@ -3850,10 +3864,10 @@ to know, to learn - + -baban +baba ??? @@ -4046,16 +4060,16 @@ horns - +s -shash.ku +sshku -verb +??? -to split, to cut, to divide +??? @@ -4165,7 +4179,6 @@ fayu