diff --git a/android/KMAPro/kMAPro/build.gradle b/android/KMAPro/kMAPro/build.gradle index 1e04eeba7c..fe8fbb76a3 100644 --- a/android/KMAPro/kMAPro/build.gradle +++ b/android/KMAPro/kMAPro/build.gradle @@ -12,6 +12,10 @@ android { compileSdkVersion 29 buildToolsVersion "29.0.2" + // Don't compress kmp files so they can be copied via AssetManager + aaptOptions { + noCompress "kmp" + } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 diff --git a/android/KMEA/app/src/main/assets/nrc.en.mtnt.model.kmp b/android/KMAPro/kMAPro/src/main/assets/nrc.en.mtnt.model.kmp similarity index 100% rename from android/KMEA/app/src/main/assets/nrc.en.mtnt.model.kmp rename to android/KMAPro/kMAPro/src/main/assets/nrc.en.mtnt.model.kmp diff --git a/android/KMAPro/kMAPro/src/main/assets/sil_euro_latin.kmp b/android/KMAPro/kMAPro/src/main/assets/sil_euro_latin.kmp new file mode 100644 index 0000000000..1f0150e408 Binary files /dev/null and b/android/KMAPro/kMAPro/src/main/assets/sil_euro_latin.kmp differ diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index 98f0b3794a..2f74442019 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -24,6 +24,7 @@ import com.tavultesoft.kmea.KMManager.KeyboardType; import com.tavultesoft.kmea.KMTextView; import com.tavultesoft.kmea.KeyboardEventHandler.OnKeyboardDownloadEventListener; import com.tavultesoft.kmea.KeyboardEventHandler.OnKeyboardEventListener; +import com.tavultesoft.kmea.packages.PackageProcessor; import com.tavultesoft.kmea.util.FileUtils; import com.tavultesoft.kmea.util.FileProviderUtils; import com.tavultesoft.kmea.util.DownloadIntentService; @@ -31,6 +32,7 @@ import com.tavultesoft.kmea.util.DownloadIntentService; import android.Manifest; import android.app.ProgressDialog; import android.content.pm.PackageManager; +import android.content.res.AssetManager; import android.content.res.Resources; import android.database.Cursor; import android.net.Uri; @@ -104,6 +106,8 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi private int textSize = minTextSize; private static final String defaultKeyboardInstalled = "DefaultKeyboardInstalled"; private static final String defaultDictionaryInstalled = "DefaultDictionaryInstalled"; + private static final String defaultKeyboardPath = "sil_euro_latin.kmp"; + private static final String defaultDictionaryPath = "nrc.en.mtnt.model.kmp"; private static final String userTextKey = "UserText"; private static final String userTextSizeKey = "UserTextSize"; protected static final String didCheckUserDataKey = "DidCheckUserData"; @@ -161,6 +165,52 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi KMManager.initialize(getApplicationContext(), KeyboardType.KEYBOARD_TYPE_INAPP); KMManager.executeResourceUpdate(this); + + SharedPreferences prefs = getSharedPreferences(getString(R.string.kma_prefs_name), Context.MODE_PRIVATE); + // Add default keyboard + boolean installDefaultKeyboard = prefs.getBoolean(defaultKeyboardInstalled, false); + if (!installDefaultKeyboard) { + HashMap kbInfo = new HashMap(); + kbInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_PackageID); + kbInfo.put(KMManager.KMKey_KeyboardID, KMManager.KMDefault_KeyboardID); + kbInfo.put(KMManager.KMKey_LanguageID, KMManager.KMDefault_LanguageID); + kbInfo.put(KMManager.KMKey_KeyboardName, KMManager.KMDefault_KeyboardName); + kbInfo.put(KMManager.KMKey_LanguageName, KMManager.KMDefault_LanguageName); + kbInfo.put(KMManager.KMKey_KeyboardVersion, + KMManager.getLatestKeyboardFileVersion(context, KMManager.KMDefault_PackageID, KMManager.KMDefault_KeyboardID)); + kbInfo.put(KMManager.KMKey_Font, KMManager.KMDefault_KeyboardFont); + File welcomeFile = new File(KMManager.getPackagesDir(), KMManager.KMDefault_PackageID + File.separator + FileUtils.WELCOME_HTM); + kbInfo.put(KMManager.KMKey_CustomHelpLink, welcomeFile.getPath()); + KMManager.addKeyboard(this, kbInfo); + + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(defaultKeyboardInstalled, true); + editor.commit(); + } + + // Add default dictionary + boolean installDefaultDictionary = prefs.getBoolean(defaultDictionaryInstalled, false); + if (!installDefaultDictionary) { + HashMap lexicalModelInfo = new HashMap(); + lexicalModelInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_DictionaryPackageID); + lexicalModelInfo.put(KMManager.KMKey_LanguageID, KMManager.KMDefault_LanguageID); + lexicalModelInfo.put(KMManager.KMKey_LexicalModelID, KMManager.KMDefault_DictionaryModelID); + lexicalModelInfo.put(KMManager.KMKey_LexicalModelName, KMManager.KMDefault_DictionaryModelName); + lexicalModelInfo.put(KMManager.KMKey_LexicalModelVersion, + KMManager.getLexicalModelPackageVersion(context, KMManager.KMDefault_DictionaryPackageID)); + /* + // If welcome.htm exists, add custom help link + welcomeFile = new File(KMManager.getLexicalModelsDir(), KMManager.KMDefault_DictionaryPackageID + File.separator + FileUtils.WELCOME_HTM); + lexicalModelInfo.put(KMManager.KMKey_CustomHelpLink, welcomeFile.getPath()); + */ + KMManager.addLexicalModel(context, lexicalModelInfo); + KMManager.registerAssociatedLexicalModel(KMManager.KMDefault_LanguageID); + + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean(defaultDictionaryInstalled, true); + editor.commit(); + } + setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.titlebar); @@ -173,7 +223,6 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi getSupportActionBar().setBackgroundDrawable(getActionBarDrawable(this)); textView = (KMTextView) findViewById(R.id.kmTextView); - SharedPreferences prefs = getSharedPreferences(getString(R.string.kma_prefs_name), Context.MODE_PRIVATE); textView.setText(prefs.getString(userTextKey, "")); textSize = prefs.getInt(userTextSizeKey, minTextSize); textView.setTextSize((float) textSize); @@ -258,36 +307,10 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi KMManager.onResume(); KMManager.hideSystemKeyboard(); - SharedPreferences prefs = getSharedPreferences(getString(R.string.kma_prefs_name), Context.MODE_PRIVATE); - SharedPreferences.Editor editor = prefs.edit(); - - // Check if default keyboard should be added - if (!KMManager.keyboardExists(this, KMManager.KMDefault_UndefinedPackageID, - KMManager.KMDefault_KeyboardID, KMManager.KMDefault_LanguageID)) { - boolean installDefaultKeyboard = prefs.getBoolean(defaultKeyboardInstalled, false); - if (!installDefaultKeyboard) { - HashMap kbInfo = new HashMap(); - kbInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_UndefinedPackageID); - kbInfo.put(KMManager.KMKey_KeyboardID, KMManager.KMDefault_KeyboardID); - kbInfo.put(KMManager.KMKey_LanguageID, KMManager.KMDefault_LanguageID); - kbInfo.put(KMManager.KMKey_KeyboardName, KMManager.KMDefault_KeyboardName); - kbInfo.put(KMManager.KMKey_LanguageName, KMManager.KMDefault_LanguageName); - kbInfo.put(KMManager.KMKey_KeyboardVersion, KMManager.getLatestKeyboardFileVersion( - this, KMManager.KMDefault_UndefinedPackageID, KMManager.KMDefault_KeyboardID)); - kbInfo.put(KMManager.KMKey_Font, KMManager.KMDefault_KeyboardFont); - KMManager.addKeyboard(this, kbInfo); - } - - editor.putBoolean(defaultKeyboardInstalled, true); - editor.commit(); - } - KMManager.addKeyboardEventListener(this); KMKeyboardDownloaderActivity.addKeyboardDownloadEventListener(this); PackageActivity.addKeyboardDownloadEventListener(this); - checkAndInstallDefaultDictionary(); - Intent intent = getIntent(); data = intent.getData(); @@ -519,29 +542,6 @@ public class MainActivity extends AppCompatActivity implements OnKeyboardEventLi resizeTextView(false); } - private void checkAndInstallDefaultDictionary() { - SharedPreferences prefs = getSharedPreferences(getString(R.string.kma_prefs_name), Context.MODE_PRIVATE); - - // Check if default dictionary model package should be installed - // This also depends on a current keyboard being loaded - HashMap curKbInfo = KMManager.getCurrentKeyboardInfo(this); - if (!KMManager.lexicalModelExists(this, KMManager.KMDefault_DictionaryPackageID, - KMManager.KMDefault_LanguageID, KMManager.KMDefault_DictionaryModelID) && curKbInfo != null) { - boolean installDefaultDictionary = prefs.getBoolean(defaultDictionaryInstalled, false); - if (!installDefaultDictionary) { - File defaultDictionaryKMP = new File( - new File(KMManager.getResourceRoot(), KMManager.KMDefault_DictionaryKMP).getAbsolutePath()); - Uri uri = FileProvider.getUriForFile( - context, FileProviderUtils.getAuthority(context), defaultDictionaryKMP); - useLocalKMP(context, uri, true); - } - - SharedPreferences.Editor editor = prefs.edit(); - editor.putBoolean(defaultDictionaryInstalled, true); - editor.commit(); - } - } - /** * Parse the URI data to determine the URL for the .kmp keyboard package. * diff --git a/android/KMEA/app/src/main/assets/cloud/DejaVuSans.ttf b/android/KMEA/app/src/main/assets/cloud/DejaVuSans.ttf deleted file mode 100644 index 27cff476ef..0000000000 Binary files a/android/KMEA/app/src/main/assets/cloud/DejaVuSans.ttf and /dev/null differ diff --git a/android/KMEA/app/src/main/assets/cloud/sil_euro_latin-1.8.1.js b/android/KMEA/app/src/main/assets/cloud/sil_euro_latin-1.8.1.js deleted file mode 100644 index 52b262fcf8..0000000000 --- a/android/KMEA/app/src/main/assets/cloud/sil_euro_latin-1.8.1.js +++ /dev/null @@ -1,110 +0,0 @@ -if(typeof keyman === 'undefined') {console.log('Keyboard requires KeymanWeb 10.0 or later');if(typeof tavultesoft !== 'undefined') tavultesoft.keymanweb.util.alert("This keyboard requires KeymanWeb 10.0 or later");} else {KeymanWeb.KR(new Keyboard_sil_euro_latin());}function Keyboard_sil_euro_latin(){this.KI="Keyboard_sil_euro_latin";this.KN="EuroLatin (SIL)";this.KMINVER="10.0";this.KV=null;this.KH='

More help

Letters
Symbols
Accent
Marks
Type`#\'"^%&*~-_:@.|,
Result `  ̏ ´ ˝ ˆ ˇ  ̑ ˘ ˜ ˉ  ̱ ¨ ˚ ˙ . ¸
Other
Letters
Type = thencegjnostyz\'
Result ɔ ə ɂ ɲ ŋ ɵ ß þ ȝ ʒ
Ɔ Ə Ɂ Ɲ Ŋ Ɵ Þ Ȝ Ʒ

Type \\ thendegknos
Result ð ɛ ǥ ĸ ʼn ø ſ
Ð Ɛ Ǥ Ø
Digraphs Typea\\ed\\zf\\if\\li\\jl\\jn\\jo\\eo\\i
Result æ dž ij lj nj œ ƣ
Æ Dž DŽ IJ Lj LJ Nj NJ Œ Ƣ
Punctuation
and Symbols
Type\\?\\!<<>>\\f\\m\\P\\S\\T\\t\\|\\c\\p\\rt\\m
Result¿¡«»ªº§¦©®

Type\\:\\\'\\,\\_\\M\\N\\-\\~\\...\\.\\>
Result¨´¸¯­¬·
Numbers
and Fractions
Type\\+\\x\\/\\*\\%\\u
Result±×÷°µ

Typen\\o\\1\\2\\3\\4\\5\\6\\7\\8\\9\\0
Result¹²³

Type1//21//32//31//43//41//52//53//54//51//65//61//83//85//87//8
Result½¼¾
Currency
Symbols
Type $ thencefhlnNpPrRwy
Result¢£¥

Type $ thenCdDFgGkKt
Result¤
';this.KM=0;this.KBVER="1.8.1";this.KMBM=0x0010;this.KVKD="T_G_Tilde T_P_Dieresis";this.KVKL={"tablet":{"font":"Tahoma","layer":[{"id":"default","row":[{"id":1,"key":[{"id":"K_Q","text":"q","sk":[{"id":"U_A78C"}]},{"id":"K_W","text":"w","sk":[{"id":"U_1E81"},{"id":"U_1E83"},{"id":"U_0175"},{"id":"U_1E85"},{"id":"U_1E98"},{"id":"U_1E87"},{"id":"U_1E89"}]},{"id":"K_E","text":"e","sk":[{"text":"\u00E8","id":"U_00E8"},{"text":"\u0205","id":"U_0205"},{"text":"\u00E9","id":"U_00E9"},{"text":"\u00EA","id":"U_00EA"},{"text":"\u011B","id":"U_011B"},{"text":"\u0207","id":"U_0207"},{"text":"\u0115","id":"U_0115"},{"text":"\u1EBD","id":"U_1EBD"},{"text":"\u0113","id":"U_0113"},{"text":"\u00EB","id":"U_00EB"},{"text":"\u0117","id":"U_0117"},{"text":"\u1EB9","id":"U_1EB9"},{"text":"\u0119","id":"U_0119"},{"text":"\u0259","id":"U_0259"},{"text":"\u025B","id":"U_025B"}]},{"id":"K_R","text":"r","sk":[{"id":"U_0211"},{"id":"U_0155"},{"id":"U_0159"},{"id":"U_0213"},{"id":"U_024D"},{"id":"U_1E5F"},{"id":"U_1E59"},{"id":"U_1E5B"},{"id":"U_0157"}]},{"id":"K_T","text":"t","sk":[{"text":"\u0165","id":"U_0165"},{"text":"\u0167","id":"U_0167"},{"text":"\u1E6F","id":"U_1E6F"},{"text":"\u1E97","id":"U_1E97"},{"text":"\u1E6B","id":"U_1E6B"},{"text":"\u1E6D","id":"U_1E6D"},{"text":"\u0163","id":"U_0163"},{"text":"\u021B","id":"U_021B"},{"text":"\u00FE","id":"U_00FE"}]},{"id":"K_Y","text":"y","sk":[{"id":"U_1EF3"},{"id":"U_00FD"},{"id":"U_0177"},{"id":"U_1EF9"},{"id":"U_0233"},{"id":"U_00FF"},{"id":"U_1E99"},{"id":"U_1E8F"},{"id":"U_1EF5"}]},{"id":"K_U","text":"u","sk":[{"id":"U_00F9"},{"id":"U_0215"},{"id":"U_00FA"},{"id":"U_0171"},{"id":"U_00FB"},{"id":"U_01D4"},{"id":"U_0217"},{"id":"U_016D"},{"id":"U_0169"},{"id":"U_016B"},{"id":"U_00FC"},{"id":"U_016F"},{"id":"U_1EE5"},{"id":"U_0173"}]},{"id":"K_I","text":"i","sk":[{"id":"U_00EC"},{"id":"U_0209"},{"id":"U_00ED"},{"id":"U_00EE"},{"id":"U_01D0"},{"id":"U_020B"},{"id":"U_012D"},{"id":"U_0129"},{"id":"U_012B"},{"id":"U_00EF"},{"id":"U_0131"},{"id":"U_1ECB"},{"id":"U_012F"},{"id":"U_0272"},{"id":"U_0133"}]},{"id":"K_O","text":"o","sk":[{"id":"U_00F2"},{"id":"U_020D"},{"id":"U_00F3"},{"id":"U_0151"},{"id":"U_00F4"},{"id":"U_01D2"},{"id":"U_020F"},{"id":"U_014F"},{"id":"U_00F5"},{"id":"U_014D"},{"id":"U_00F6"},{"id":"U_022F"},{"id":"U_1ECD"},{"id":"U_01EB"},{"id":"U_0275"},{"id":"U_00F8"},{"id":"U_0254"},{"id":"U_0153"},{"id":"U_01A3"}]},{"id":"K_P","text":"p","sk":[{"text":"\u1E55","id":"U_1E55"},{"text":"p\u0308","id":"T_P_Dieresis"},{"text":"\u1E57","id":"U_1E57"}]}]},{"id":2,"key":[{"id":"K_A","text":"a","pad":"40","sk":[{"id":"U_00E0"},{"id":"U_0201"},{"id":"U_00E1"},{"id":"U_00E2"},{"id":"U_01CE"},{"id":"U_0203"},{"id":"U_0103"},{"id":"U_00E3"},{"id":"U_0101"},{"id":"U_00E4"},{"id":"U_00E5"},{"id":"U_0227"},{"id":"U_1EA1"},{"id":"U_0105"},{"id":"U_00E6"}]},{"id":"K_S","text":"s","sk":[{"text":"\u015B","id":"U_015B"},{"text":"\u015D","id":"U_015D"},{"text":"\u0161","id":"U_0161"},{"text":"\u1E61","id":"U_1E61"},{"text":"\u1E63","id":"U_1E63"},{"text":"\u015F","id":"U_015F"},{"text":"\u0219","id":"U_0219"},{"text":"\u00DF","id":"U_00DF"},{"text":"\u017F","id":"U_017F"}]},{"id":"K_D","text":"d","sk":[{"id":"U_010F"},{"id":"U_0111"},{"id":"U_1E0F"},{"id":"U_1E0B"},{"id":"U_1E0D"},{"id":"U_1E11"},{"id":"U_00F0"},{"id":"U_01C6"}]},{"id":"K_F","text":"f","sk":[{"id":"U_1E1F"},{"id":"U_FB01"},{"id":"U_FB02"}]},{"id":"K_G","text":"g","sk":[{"text":"\u01F5","id":"U_01F5"},{"text":"\u011D","id":"U_011D"},{"text":"\u01E7","id":"U_01E7"},{"text":"\u011F","id":"U_011F"},{"text":"g\u0303","id":"T_G_Tilde"},{"text":"\u1E21","id":"U_1E21"},{"text":"\u0121","id":"U_0121"},{"text":"\u0123","id":"U_0123"},{"text":"\u0242","id":"U_0242"},{"text":"\u01E5","id":"U_01E5"}]},{"id":"K_H","text":"h","sk":[{"id":"U_0125"},{"id":"U_021F"},{"id":"U_1E2B"},{"id":"U_0127"},{"id":"U_1E96"},{"id":"U_1E27"},{"id":"U_1E23"},{"id":"U_1E25"},{"id":"U_1E29"}]},{"id":"K_J","text":"j","sk":[{"id":"U_0135"},{"id":"U_01F0"},{"id":"U_0249"},{"id":"U_0237"}]},{"id":"K_K","text":"k","sk":[{"id":"U_1E31"},{"id":"U_01E9"},{"id":"U_1E35"},{"id":"U_1E33"},{"id":"U_0137"},{"id":"U_0138"}]},{"id":"K_L","text":"l","sk":[{"id":"U_013A"},{"id":"U_013E"},{"id":"U_026B"},{"id":"U_0142"},{"id":"U_1E3B"},{"id":"U_0140"},{"id":"U_1E37"},{"id":"U_013C"},{"id":"U_01C9"}]},{"id":"T_new_20","text":"","width":"10","sp":"10"}]},{"id":3,"key":[{"id":"K_SHIFT","text":"*Shift*","width":"100","sp":"1","nextlayer":"shift"},{"id":"K_Z","text":"z","sk":[{"id":"U_017A"},{"id":"U_1E91"},{"id":"U_017E"},{"id":"U_01B6"},{"id":"U_1E95"},{"id":"U_017C"},{"id":"U_1E93"},{"id":"U_2C6C"},{"id":"U_0292"},{"id":"U_01EF"}]},{"id":"K_X","text":"x","sk":[{"id":"U_1E8D"},{"id":"U_1E8B"}]},{"id":"K_C","text":"c","sk":[{"id":"U_0107"},{"id":"U_0109"},{"id":"U_010D"},{"id":"U_010B"},{"id":"U_00E7"}]},{"id":"K_V","text":"v","sk":[{"id":"U_1E7D"},{"id":"U_1E7F"}]},{"id":"K_B","text":"b","sk":[{"id":"U_0180"},{"id":"U_1E07"},{"id":"U_1E03"},{"id":"U_1E05"}]},{"id":"K_N","text":"n","sk":[{"id":"U_014B"},{"id":"U_01F9"},{"id":"U_0144"},{"id":"U_0148"},{"id":"U_00F1"},{"id":"U_1E49"},{"id":"U_1E45"},{"id":"U_1E47"},{"id":"U_0146"},{"id":"U_0149"},{"id":"U_01CC"}]},{"id":"K_M","text":"m","sk":[{"id":"U_1E3F"},{"id":"U_1E41"},{"id":"U_1E43"}]},{"id":"K_PERIOD","text":".","sk":[{"id":"K_COMMA","text":","},{"id":"U_0021"},{"id":"U_003F"},{"id":"U_0027"},{"id":"U_0022"},{"id":"U_005C"},{"id":"U_003A"},{"id":"U_003B"}]},{"id":"K_BKSP","text":"*BkSp*","width":"100","sp":"1"}]},{"id":4,"key":[{"id":"K_NUMERALS","text":"*123*","width":"150","sp":"1","nextlayer":"numeric"},{"id":"K_LOPT","text":"*Menu*","width":"100","sp":"1"},{"id":"T_new_34","text":"","width":"10","sp":"10"},{"id":"K_SPACE","text":"","width":"610","sp":"0"},{"id":"T_new_36","text":"","width":"10","sp":"10"},{"id":"K_ENTER","text":"*Enter*","width":"140","sp":"1"}]}]},{"id":"shift","row":[{"id":1,"key":[{"id":"K_Q","text":"Q","sk":[{"id":"U_A78B"}]},{"id":"K_W","text":"W","sk":[{"id":"U_1E80"},{"id":"U_1E82"},{"id":"U_0174"},{"id":"U_1E84"},{"id":"U_1E86"},{"id":"U_1E88"}]},{"id":"K_E","text":"E","sk":[{"id":"U_00C8"},{"id":"U_0204"},{"id":"U_00C9"},{"id":"U_00CA"},{"id":"U_011A"},{"id":"U_0206"},{"id":"U_0114"},{"id":"U_1EBC"},{"id":"U_0112"},{"id":"U_00CB"},{"id":"U_0116"},{"id":"U_1EB8"},{"id":"U_0118"},{"id":"U_018F"},{"id":"U_0190"}]},{"id":"K_R","text":"R","sk":[{"id":"U_0210"},{"id":"U_0154"},{"id":"U_0158"},{"id":"U_0212"},{"id":"U_024C"},{"id":"U_1E5E"},{"id":"U_1E58"},{"id":"U_1E5A"},{"id":"U_0156"}]},{"id":"K_T","text":"T","sk":[{"text":"\u0164","id":"U_0164"},{"text":"\u0166","id":"U_0166"},{"text":"\u1E6E","id":"U_1E6E"},{"text":"\u1E6A","id":"U_1E6A"},{"text":"\u1E6C","id":"U_1E6C"},{"text":"\u0162","id":"U_0162"},{"text":"\u021A","id":"U_021A"},{"text":"\u00DE","id":"U_00DE"}]},{"id":"K_Y","text":"Y","sk":[{"id":"U_1EF2"},{"id":"U_00DD"},{"id":"U_0176"},{"id":"U_1EF8"},{"id":"U_0232"},{"id":"U_0178"},{"id":"U_1E8E"},{"id":"U_1EF4"}]},{"id":"K_U","text":"U","sk":[{"id":"U_00D9"},{"id":"U_0214"},{"id":"U_00DA"},{"id":"U_0170"},{"id":"U_00DB"},{"id":"U_01D3"},{"id":"U_0216"},{"id":"U_016C"},{"id":"U_0168"},{"id":"U_016A"},{"id":"U_00DC"},{"id":"U_016E"},{"id":"U_1EE4"},{"id":"U_0172"}]},{"id":"K_I","text":"I","sk":[{"id":"U_00CC"},{"id":"U_0208"},{"id":"U_00CD"},{"id":"U_00CE"},{"id":"U_01CF"},{"id":"U_020A"},{"id":"U_012C"},{"id":"U_0128"},{"id":"U_012A"},{"id":"U_00CF"},{"id":"U_0130"},{"id":"U_1ECA"},{"id":"U_012E"},{"id":"U_019D"}]},{"id":"K_O","text":"O","sk":[{"id":"U_00D2"},{"id":"U_020C"},{"id":"U_00D3"},{"id":"U_0150"},{"id":"U_00D4"},{"id":"U_01D1"},{"id":"U_020E"},{"id":"U_014E"},{"id":"U_00D5"},{"id":"U_014C"},{"id":"U_00D6"},{"id":"U_022E"},{"id":"U_1ECC"},{"id":"U_01EA"},{"id":"U_019F"},{"id":"U_00D8"},{"id":"U_0186"},{"id":"U_0152"},{"id":"U_01A2"}]},{"id":"K_P","text":"P","sk":[{"text":"\u1E54","id":"U_1E54"},{"text":"P\u0308","id":"T_P_Dieresis"},{"text":"\u1E56","id":"U_1E56"}]}]},{"id":2,"key":[{"id":"K_A","text":"A","pad":"40","sk":[{"id":"U_00C0"},{"id":"U_0200"},{"id":"U_00C1"},{"id":"U_00C2"},{"id":"U_01CD"},{"id":"U_0202"},{"id":"U_0102"},{"id":"U_00C3"},{"id":"U_0100"},{"id":"U_00C4"},{"id":"U_00C5"},{"id":"U_0226"},{"id":"U_1EA0"},{"id":"U_0104"},{"id":"U_00C6"}]},{"id":"K_S","text":"S","sk":[{"text":"\u015A","id":"U_015A"},{"text":"\u015C","id":"U_015C"},{"text":"\u0160","id":"U_0160"},{"text":"\u1E60","id":"U_1E60"},{"text":"\u1E62","id":"U_1E62"},{"text":"\u015E","id":"U_015E"},{"text":"\u0218","id":"U_0218"},{"text":"\u1E9E","id":"U_1E9E"}]},{"id":"K_D","text":"D","sk":[{"id":"U_010E"},{"id":"U_0110"},{"id":"U_1E0E"},{"id":"U_1E0A"},{"id":"U_1E0C"},{"id":"U_1E10"},{"id":"U_00D0"},{"id":"U_01C5"},{"id":"U_01C4"}]},{"id":"K_F","text":"F","sk":[{"id":"U_1E1E"}]},{"id":"K_G","text":"G","sk":[{"text":"\u01F4","id":"U_01F4"},{"text":"\u011C","id":"U_011C"},{"text":"\u01E6","id":"U_01E6"},{"text":"\u011E","id":"U_011E"},{"text":"G\u0303","id":"T_G_Tilde"},{"text":"\u1E20","id":"U_1E20"},{"text":"\u0120","id":"U_0120"},{"text":"\u0122","id":"U_0122"},{"text":"\u0241","id":"U_0241"},{"text":"\u01E4","id":"U_01E4"}]},{"id":"K_H","text":"H","sk":[{"id":"U_0124"},{"id":"U_021E"},{"id":"U_1E2A"},{"id":"U_0126"},{"id":"U_1E26"},{"id":"U_1E22"},{"id":"U_1E24"},{"id":"U_1E28"}]},{"id":"K_J","text":"J","sk":[{"id":"U_0134"},{"id":"U_0248"}]},{"id":"K_K","text":"K","sk":[{"id":"U_1E30"},{"id":"U_01E8"},{"id":"U_1E34"},{"id":"U_1E32"},{"id":"U_0136"}]},{"id":"K_L","text":"L","sk":[{"id":"U_0139"},{"id":"U_013D"},{"id":"U_2C62"},{"id":"U_0141"},{"id":"U_1E3A"},{"id":"U_013F"},{"id":"U_1E36"},{"id":"U_013B"},{"id":"U_01C8"},{"id":"U_01C7"}]},{"id":"T_new_60","text":"","width":"10","sp":"10"}]},{"id":3,"key":[{"id":"K_SHIFT","text":"*Shift*","width":"100","sp":"2","nextlayer":"default"},{"id":"K_Z","text":"Z","sk":[{"id":"U_021C"},{"id":"U_0179"},{"id":"U_1E90"},{"id":"U_017D"},{"id":"U_01B5"},{"id":"U_1E94"},{"id":"U_017B"},{"id":"U_1E92"},{"id":"U_2C6B"},{"id":"U_01B7"},{"id":"U_01EE"}]},{"id":"K_X","text":"X","sk":[{"id":"U_1E8C"},{"id":"U_1E8A"}]},{"id":"K_C","text":"C","sk":[{"id":"U_0106"},{"id":"U_0108"},{"id":"U_010C"},{"id":"U_010A"},{"id":"U_00C7"}]},{"id":"K_V","text":"V","sk":[{"id":"U_1E7C"},{"id":"U_1E7E"}]},{"id":"K_B","text":"B","sk":[{"id":"U_0243"},{"id":"U_1E06"},{"id":"U_1E02"},{"id":"U_1E04"}]},{"id":"K_N","text":"N","sk":[{"id":"U_014A"},{"id":"U_01F8"},{"id":"U_0143"},{"id":"U_0147"},{"id":"U_00D1"},{"id":"U_1E48"},{"id":"U_1E44"},{"id":"U_1E46"},{"id":"U_0145"},{"id":"U_01CB"},{"id":"U_01CA"}]},{"id":"K_M","text":"M","sk":[{"id":"U_1E3E"},{"id":"U_1E40"},{"id":"U_1E42"}]},{"id":"K_PERIOD","text":".","layer":"default","sk":[{"text":",","id":"K_COMMA"},{"text":"!","id":"U_0021","layer":"default"},{"text":"?","id":"U_003F","layer":"default"},{"text":"'","id":"U_0027","layer":"default"},{"text":"\"","id":"U_0022","layer":"default"},{"text":"\\","id":"U_005C","layer":"default"},{"text":":","id":"U_003A","layer":"default"},{"text":";","id":"U_003B","layer":"default"}]},{"id":"K_BKSP","text":"*BkSp*","width":"100","sp":"1"}]},{"id":4,"key":[{"id":"K_NUMERALS","text":"*123*","width":"150","sp":"1","nextlayer":"numeric"},{"id":"K_LOPT","text":"*Menu*","width":"100","sp":"1"},{"id":"T_new_74","text":"","width":"10","sp":"10"},{"id":"K_SPACE","text":"","width":"610","sp":"0"},{"id":"T_new_76","text":"","width":"10","sp":"10"},{"id":"K_ENTER","text":"*Enter*","width":"140","sp":"1"}]}]},{"id":"numeric","row":[{"id":1,"key":[{"id":"K_1","text":"1","sp":"0","sk":[{"id":"U_00B9"},{"id":"U_00BD"},{"id":"U_2153"},{"id":"U_00BC"},{"id":"U_2155"},{"id":"U_2159"},{"id":"U_215B"}]},{"id":"K_2","text":"2","sp":"0","sk":[{"id":"U_00B2"},{"id":"U_2154"},{"id":"U_2156"}]},{"id":"K_3","text":"3","sp":"0","sk":[{"id":"U_00B3"},{"id":"U_00BE"},{"id":"U_2157"},{"id":"U_215C"}]},{"id":"K_4","text":"4","sp":"0","sk":[{"id":"U_2074"},{"id":"U_2158"}]},{"id":"K_5","text":"5","sp":"0","sk":[{"id":"U_2075"},{"id":"U_215A"},{"id":"U_215D"}]},{"id":"K_6","text":"6","sp":"0","sk":[{"id":"U_2076"}]},{"id":"K_7","text":"7","sp":"0","sk":[{"id":"U_2077"},{"id":"U_215E"}]},{"id":"K_8","text":"8","sp":"0","sk":[{"id":"U_2078"}]},{"id":"K_9","text":"9","sp":"0","sk":[{"id":"U_2079"}]},{"id":"K_0","text":"0","sp":"0","sk":[{"id":"U_2070"}]}]},{"id":2,"key":[{"id":"U_0024","text":"$","pad":"40"},{"id":"U_0040","text":"@"},{"id":"U_0023","text":"#"},{"id":"U_0025","text":"%","sk":[{"id":"U_2030"},{"id":"U_2031"}]},{"id":"U_0026","text":"&"},{"id":"U_005F","text":"_"},{"id":"U_003D","text":"="},{"id":"U_007C","text":"|"},{"id":"U_002F","text":"\/","sk":[{"text":"\\","id":"U_005C"}]},{"id":"T_new_164","text":"","width":"10","sp":"10"}]},{"id":3,"key":[{"id":"K_CURRENCIES","text":"*Currency*","width":"100","sp":"1","nextlayer":"currency"},{"id":"U_005B","text":"[","sk":[{"id":"U_007B"},{"id":"U_00AB"},{"id":"U_003C"}]},{"id":"U_0028","text":"("},{"id":"U_0029","text":")"},{"id":"U_005D","text":"]","sk":[{"id":"U_007D"},{"id":"U_00BB"},{"id":"U_003E"}]},{"id":"U_002B","text":"+"},{"id":"U_002D","text":"-"},{"id":"U_002A","text":"*"},{"id":"K_PERIOD","text":".","sk":[{"id":"K_COMMA","text":","},{"id":"U_0021"},{"id":"U_003F"},{"id":"U_0027"},{"id":"U_0022"},{"id":"U_005C"},{"id":"U_003A"},{"id":"U_003B"}]},{"id":"K_BKSP","text":"*BkSp*","width":"100","sp":"1"}]},{"id":4,"key":[{"id":"K_LOWER","text":"*abc*","width":"150","sp":"1","nextlayer":"default"},{"id":"K_LOPT","text":"*Menu*","width":"100","sp":"1"},{"id":"T_new_178","text":"","width":"10","sp":"10"},{"id":"K_SPACE","text":"","width":"610","sp":"0"},{"id":"T_new_180","text":"","width":"10","sp":"10"},{"id":"K_ENTER","text":"*Enter*","width":"140","sp":"1"}]}]},{"id":"symbol","row":[{"id":1,"key":[{"id":"U_0060","text":"`"},{"id":"U_007E","text":"~"},{"id":"U_005E","text":"^"},{"id":"U_00A8","text":"\u00A8"},{"id":"U_00B4","text":"\u00B4"},{"id":"U_00B8","text":"\u00B8"},{"id":"U_00AF","text":"\u00AF"},{"id":"U_00BF","text":"\u00BF"},{"id":"U_00A1","text":"\u00A1"},{"id":"U_00AC","text":"\u00AC"}]},{"id":2,"key":[{"id":"U_00AA","text":"\u00AA","pad":"40"},{"id":"U_00BA","text":"\u00BA"},{"id":"U_00B6","text":"\u00B6"},{"id":"U_00A7","text":"\u00A7"},{"id":"U_2021","text":"\u2021"},{"id":"U_2020","text":"\u2020"},{"id":"U_00A6","text":"\u00A6"},{"id":"U_2122","text":"\u2122"},{"id":"U_2116","text":"\u2116"},{"id":"T_new_336","text":"","width":"10","sp":"10"}]},{"id":3,"key":[{"id":"K_NUMERALS","text":"*123*","width":"100","sp":"1","nextlayer":"numeric"},{"id":"U_00A9","text":"\u00A9"},{"id":"U_2117","text":"\u2117"},{"id":"U_00AE","text":"\u00AE"},{"id":"U_2014","text":"\u2014"},{"id":"U_2013","text":"\u2013"},{"id":"U_2022","text":"\u2022"},{"id":"U_00B7","text":"\u00B7"},{"id":"U_2026","text":"\u2026","sk":[{"id":"U_00B1"},{"id":"U_00D7"},{"id":"U_00F7"},{"id":"U_00B5"},{"id":"U_00B0"},{"id":"U_2031"}]},{"id":"K_BKSP","text":"*BkSp*","width":"100","sp":"1"}]},{"id":4,"key":[{"id":"K_LOWER","text":"*abc*","width":"150","sp":"1","nextlayer":"default"},{"id":"K_LOPT","text":"*Menu*","width":"100","sp":"1"},{"id":"T_new_350","text":"","width":"10","sp":"10"},{"id":"K_SPACE","text":"","width":"610","sp":"0"},{"id":"T_new_352","text":"","width":"10","sp":"10"},{"id":"K_ENTER","text":"*Enter*","width":"140","sp":"1"}]}]},{"id":"currency","row":[{"id":1,"key":[{"id":"U_00A2","text":"\u00A2","nextlayer":"numeric"},{"id":"U_20AC","text":"\u20AC","nextlayer":"numeric"},{"id":"U_20A4","text":"\u20A4","nextlayer":"numeric"},{"id":"U_00A3","text":"\u00A3","nextlayer":"numeric"},{"id":"U_20AA","text":"\u20AA","nextlayer":"numeric"},{"id":"U_20A8","text":"\u20A8","nextlayer":"numeric"},{"id":"U_20B9","text":"\u20B9","nextlayer":"numeric"},{"id":"U_20A9","text":"\u20A9","nextlayer":"numeric"},{"id":"U_00A5","text":"\u00A5","nextlayer":"numeric"},{"id":"U_00A4","text":"\u00A4","nextlayer":"numeric"}]},{"id":2,"key":[{"id":"U_20AB","text":"\u20AB","pad":"40"},{"id":"U_20AF","text":"\u20AF"},{"id":"U_20B1","text":"\u20B1"},{"id":"U_20A3","text":"\u20A3"},{"id":"U_20B0","text":"\u20B0"},{"id":"U_20B2","text":"\u20B2"},{"id":"U_20B4","text":"\u20B4"},{"id":"U_20A1","text":"\u20A1"},{"id":"U_20AD","text":"\u20AD"},{"id":"T_new_2717","text":"","width":"10","sp":"10"}]},{"id":3,"key":[{"id":"K_SYMBOLS","text":"*Symbol*","width":"100","sp":"1","nextlayer":"symbol"},{"id":"U_20A6","text":"\u20A6"},{"id":"U_20A7","text":"\u20A7"},{"id":"U_20AE","text":"\u20AE"},{"id":"U_0BF9","text":"\u0BF9"},{"id":"U_09F3","text":"\u09F3"},{"id":"U_0E3F","text":"\u0E3F"},{"id":"T_new_2725","text":"","sp":"9"},{"id":"T_new_2726","text":"","sp":"9"},{"id":"K_BKSP","text":"*BkSp*","width":"100","sp":"1"}]},{"id":4,"key":[{"id":"K_LOWER","text":"*abc*","width":"150","sp":"1","nextlayer":"default"},{"id":"K_LOPT","text":"*Menu*","width":"100","sp":"1"},{"id":"T_new_2731","text":"","width":"10","sp":"10"},{"id":"K_SPACE","text":"","width":"610","sp":"0"},{"id":"T_new_2733","text":"","width":"10","sp":"10"},{"id":"K_ENTER","text":"*Enter*","width":"140","sp":"1"}]}]}]}};this.s13=KeymanWeb.KLOAD(this.KI,"option_key","");this.s14="`#'\"^%&*~-_:@.|,=\\$";this.s15="àèìǹòùẁỳÀÈÌǸÒÙẀỲ";this.s16="aeinouwyAEINOUWY";this.s17="ȁȅȉȍȑȕȀȄȈȌȐȔ";this.s18="aeioruAEIORU";this.s19="áćéǵíḱĺḿńóṕŕśúẃýźÁĆÉǴÍḰĹḾŃÓṔŔŚÚẂÝŹ";this.s20="acegiklmnoprsuwyzACEGIKLMNOPRSUWYZ";this.s21="őűŐŰ";this.s22="ouOU";this.s23="âĉêĝĥîĵôŝûŵŷẑÂĈÊĜĤÎĴÔŜÛŴŶẐ";this.s24="aceghijosuwyzACEGHIJOSUWYZ";this.s25="ǎǍčČďĎěĚǧǦȟȞǐǏǰǩǨľĽňŇǒǑřŘšŠťŤǔǓǯǮžŽ";this.s26="aAcCdDeEgGhHiIjkKlLnNoOrRsStTuUxXzZ";this.s27="ȂȃȆȇȊȋȎȏȒȓȖȗ";this.s28="AaEeIiOoRrUu";this.s29="ăĂĕĔğĞḫḪĭĬŏŎŭŬ";this.s30="aAeEgGhHiIoOuU";this.s31="ãÃẽẼĩĨɫⱢñÑõÕũŨṽṼỹỸ";this.s32="aAeEiIlLnNoOuUvVyY";this.s33="ĀāɃƀĐđĒēḠḡĦħĪīɈɉŁłŌōɌɍŦŧŪūȲȳƵƶ";this.s34="AaBbDdEeGgHhIiJjLlOoRrTtUuYyZz";this.s35="ḆḇḎḏẖḴḵḺḻṈṉṞṟṮṯẔẕ";this.s36="BbDdhKkLlNnRrTtZz";this.s37="äëḧïöẗüẅẍÿÄËḦÏÖÜẄẌŸ";this.s38="aehiotuwxyAEHIOUWXY";this.s39="åÅůŮẘẙșȘțȚ";this.s40="aAuUwysStT";this.s41="ȧȦḃḂċĊḋḊėĖḟḞġĠḣḢıİȷŀĿṁṀṅṄȯȮṗṖṙṘṡṠṫṪẇẆẋẊẏẎżŻ";this.s42="aAbBcCdDeEfFgGhHiIjlLmMnNoOpPrRsStTwWxXyYzZ";this.s43="ẠạḄḅḌḍẸẹḤḥỊịḲḳḶḷṂṃṆṇỌọṚṛṢṣṬṭỤụṾṿẈẉỴỵẒẓ";this.s44="AaBbDdEeHhIiKkLlMmNnOoRrSsTtUuVvWwYyZz";this.s45="ąĄçÇḑḐęĘģĢḩḨįĮķĶļĻņŅǫǪŗŖşŞţŢųŲⱬⱫ";this.s46="aAcCdDeEgGhHiIkKlLnNoOrRsStTuUzZ";this.s47="ƆɔƏəɁɂƝɲŊŋƟɵẞßÞþȜȝƷʒ";this.s48="CcEeGgJjNnOoSsTtYyZz";this.s49="©ÐðƐɛªǤǥĸ—º–ʼnØø¶℗®§ſ‡†µ×¡¦¨¬­¯°±´·¸¿÷‰•¹²³⁴⁵⁶⁷⁸⁹⁰";this.s50="cDdEefGgkMmNnOoPprSsTtux!|:~-_*+'.,?/%>1234567890";this.s51="¤¢₯₫€€₱₣₲₰₴₡₭₤₦₪₧£₹₨₮₩¥";this.s52="CcDdEefFGghkKlNnPpRrtwy";this.s55="touch";this.s56="touch";this.s57="touch";this.s58="touch";this.s59="touch";this.s60="";this.s61="";this.s62="";this.KVER="10.0.1206.0";this.gs=function(t,e) {return this.g0(t,e);};this.g0=function(t,e) {var k=KeymanWeb,r=0,m=0;if(k.KKM(e,16384,256)&&k.KIFS(31,this.s56,t)) {r=m=1;k.KDC(0,t);k.KO(-1,t,"g̃");}else if(k.KKM(e,16400,256)&&k.KIFS(31,this.s57,t)) {r=m=1;k.KDC(0,t);k.KO(-1,t,"G̃");}else if(k.KKM(e,16384,257)&&k.KIFS(31,this.s58,t)) {r=m=1;k.KDC(0,t);k.KO(-1,t,"p̈");}else if(k.KKM(e,16400,257)&&k.KIFS(31,this.s59,t)) {r=m=1;k.KDC(0,t);k.KO(-1,t,"P̈");}else if(k.KKM(e,16400,49)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¡");}else if(k.KKM(e,16400,222)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ꞌ");}else if(k.KKM(e,16400,222)&&k.KFCM(2,t,['\"',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"\"");}else if(k.KKM(e,16400,222)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,222)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"\"");k.KDO(-1,t,0);}else if(k.KKM(e,16400,51)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"#");}else if(k.KKM(e,16400,51)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,51)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"#");k.KDO(-1,t,0);}else if(k.KKM(e,16400,52)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"$");}else if(k.KKM(e,16400,52)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,52)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"$");k.KDO(-1,t,0);}else if(k.KKM(e,16400,53)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"‰");}else if(k.KKM(e,16400,53)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"%");}else if(k.KKM(e,16400,53)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,53)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"%");k.KDO(-1,t,0);}else if(k.KKM(e,16400,55)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"&");}else if(k.KKM(e,16400,55)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,55)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"&");k.KDO(-1,t,0);}else if(k.KKM(e,16384,222)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ꞌ");}else if(k.KKM(e,16384,222)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"´");}else if(k.KKM(e,16384,222)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"'");}else if(k.KKM(e,16384,222)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,222)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"'");k.KDO(-1,t,0);}else if(k.KKM(e,16400,56)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"°");}else if(k.KKM(e,16400,56)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"*");}else if(k.KKM(e,16400,56)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,56)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"*");k.KDO(-1,t,0);}else if(k.KKM(e,16400,187)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"±");}else if(k.KKM(e,16384,188)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¸");}else if(k.KKM(e,16384,188)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,",");}else if(k.KKM(e,16384,188)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,188)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,",");k.KDO(-1,t,0);}else if(k.KKM(e,16384,189)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"­");}else if(k.KKM(e,16384,189)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"-");}else if(k.KKM(e,16384,189)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,189)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"-");k.KDO(-1,t,0);}else if(k.KKM(e,16384,190)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"·");}else if(k.KKM(e,16384,190)&&k.KFCM(2,t,['·','.'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"…");}else if(k.KKM(e,16384,190)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,".");}else if(k.KKM(e,16384,190)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,190)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,".");k.KDO(-1,t,0);}else if(k.KKM(e,16384,191)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"÷");}else if(k.KKM(e,16384,48)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁰");}else if(k.KKM(e,16384,49)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¹");}else if(k.KKM(e,16384,50)&&k.KFCM(3,t,['1','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"½");}else if(k.KKM(e,16384,50)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"²");}else if(k.KKM(e,16384,50)&&k.KFCM(2,t,['¹','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"½");}else if(k.KKM(e,16384,51)&&k.KFCM(3,t,['1','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅓");}else if(k.KKM(e,16384,51)&&k.KFCM(3,t,['2','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅔");}else if(k.KKM(e,16384,51)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"³");}else if(k.KKM(e,16384,51)&&k.KFCM(2,t,['¹','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⅓");}else if(k.KKM(e,16384,51)&&k.KFCM(2,t,['²','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⅔");}else if(k.KKM(e,16384,52)&&k.KFCM(3,t,['1','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"¼");}else if(k.KKM(e,16384,52)&&k.KFCM(3,t,['3','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"¾");}else if(k.KKM(e,16384,52)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁴");}else if(k.KKM(e,16384,52)&&k.KFCM(2,t,['¹','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¼");}else if(k.KKM(e,16384,52)&&k.KFCM(2,t,['³','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¾");}else if(k.KKM(e,16384,53)&&k.KFCM(3,t,['1','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅕");}else if(k.KKM(e,16384,53)&&k.KFCM(3,t,['2','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅖");}else if(k.KKM(e,16384,53)&&k.KFCM(3,t,['3','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅗");}else if(k.KKM(e,16384,53)&&k.KFCM(3,t,['4','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅘");}else if(k.KKM(e,16384,53)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁵");}else if(k.KKM(e,16384,54)&&k.KFCM(3,t,['1','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅙");}else if(k.KKM(e,16384,54)&&k.KFCM(3,t,['5','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅚");}else if(k.KKM(e,16384,54)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁶");}else if(k.KKM(e,16384,55)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁷");}else if(k.KKM(e,16384,56)&&k.KFCM(3,t,['1','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅛");}else if(k.KKM(e,16384,56)&&k.KFCM(3,t,['3','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅜");}else if(k.KKM(e,16384,56)&&k.KFCM(3,t,['5','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅝");}else if(k.KKM(e,16384,56)&&k.KFCM(3,t,['7','/','/'])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"⅞");}else if(k.KKM(e,16384,56)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁸");}else if(k.KKM(e,16384,56)&&k.KFCM(2,t,['¹','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⅛");}else if(k.KKM(e,16384,56)&&k.KFCM(2,t,['³','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⅜");}else if(k.KKM(e,16384,56)&&k.KFCM(2,t,['⁵','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⅝");}else if(k.KKM(e,16384,56)&&k.KFCM(2,t,['⁷','/'])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⅞");}else if(k.KKM(e,16384,57)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"⁹");}else if(k.KKM(e,16400,186)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¨");}else if(k.KKM(e,16400,186)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,":");}else if(k.KKM(e,16400,186)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,186)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,":");k.KDO(-1,t,0);}else if(k.KKM(e,16400,188)&&k.KFCM(1,t,['<'])&&this.s13===this.s60) {r=m=1;k.KDC(1,t);k.KO(-1,t,"«");}else if(k.KKM(e,16400,188)&&k.KFCM(2,t,['<',{t:'d',d:1}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"<<");k.KDO(-1,t,1);}else if(k.KKM(e,16400,188)&&k.KFCM(1,t,['«'])) {r=m=1;k.KDC(1,t);k.KO(-1,t,"<<");k.KDO(-1,t,1);}else if(k.KKM(e,16384,187)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"=");}else if(k.KKM(e,16384,187)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,187)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"=");k.KDO(-1,t,0);}else if(k.KKM(e,16400,190)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"•");}else if(k.KKM(e,16400,190)&&k.KFCM(1,t,['>'])&&this.s13===this.s61) {r=m=1;k.KDC(1,t);k.KO(-1,t,"»");}else if(k.KKM(e,16400,190)&&k.KFCM(2,t,['>',{t:'d',d:1}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,">>");k.KDO(-1,t,1);}else if(k.KKM(e,16400,190)&&k.KFCM(1,t,['»'])) {r=m=1;k.KDC(1,t);k.KO(-1,t,">>");k.KDO(-1,t,1);}else if(k.KKM(e,16400,191)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¿");}else if(k.KKM(e,16400,50)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"@");}else if(k.KKM(e,16400,50)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,50)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"@");k.KDO(-1,t,0);}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"À");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȁ");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Á");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Â");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǎ");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȃ");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ă");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ã");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ā");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ä");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Å");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȧ");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ạ");}else if(k.KKM(e,16400,65)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ą");}else if(k.KKM(e,16400,66)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ƀ");}else if(k.KKM(e,16400,66)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḇ");}else if(k.KKM(e,16400,66)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḃ");}else if(k.KKM(e,16400,66)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḅ");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ć");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĉ");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Č");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ċ");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ç");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɔ");}else if(k.KKM(e,16400,67)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¤");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ď");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Đ");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḏ");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḋ");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḍ");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḑ");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ð");}else if(k.KKM(e,16400,68)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₯");}else if(k.KKM(e,16400,69)&&k.KFCM(3,t,['A','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Æ");}else if(k.KKM(e,16400,69)&&k.KFCM(3,t,['O','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Œ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"È");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȅ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"É");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ê");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ě");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȇ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĕ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẽ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ē");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ë");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ė");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẹ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ę");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ə");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɛ");}else if(k.KKM(e,16400,69)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"€");}else if(k.KKM(e,16400,70)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḟ");}else if(k.KKM(e,16400,70)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₣");}else if(k.KKM(e,16400,71)&&k.KFCM(3,t,['N','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Ŋ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"G̃");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǵ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĝ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǧ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ğ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḡ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ġ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ģ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɂ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǥ");}else if(k.KKM(e,16400,71)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₲");}else if(k.KKM(e,16400,72)&&k.KFCM(3,t,['T','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Þ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĥ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȟ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḫ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ħ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḧ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḣ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḥ");}else if(k.KKM(e,16400,72)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḩ");}else if(k.KKM(e,16400,73)&&k.KFCM(3,t,['O','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Ƣ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ì");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȉ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Í");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Î");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǐ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȋ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĭ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĩ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ī");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ï");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"İ");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ị");}else if(k.KKM(e,16400,73)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Į");}else if(k.KKM(e,16400,74)&&k.KFCM(3,t,['I','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"IJ");}else if(k.KKM(e,16400,74)&&k.KFCM(3,t,['L','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"LJ");}else if(k.KKM(e,16400,74)&&k.KFCM(3,t,['N','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"NJ");}else if(k.KKM(e,16400,74)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĵ");}else if(k.KKM(e,16400,74)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɉ");}else if(k.KKM(e,16400,74)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɲ");}else if(k.KKM(e,16400,75)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḱ");}else if(k.KKM(e,16400,75)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǩ");}else if(k.KKM(e,16400,75)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḵ");}else if(k.KKM(e,16400,75)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḳ");}else if(k.KKM(e,16400,75)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ķ");}else if(k.KKM(e,16400,75)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₭");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ĺ");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ľ");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɫ");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ł");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḻ");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŀ");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḷ");}else if(k.KKM(e,16400,76)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ļ");}else if(k.KKM(e,16400,77)&&k.KFCM(3,t,['T','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"™");}else if(k.KKM(e,16400,77)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ḿ");}else if(k.KKM(e,16400,77)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṁ");}else if(k.KKM(e,16400,77)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṃ");}else if(k.KKM(e,16400,77)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"—");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǹ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ń");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ň");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ñ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṉ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṅ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṇ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ņ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŋ");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"–");}else if(k.KKM(e,16400,78)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₦");}else if(k.KKM(e,16400,79)&&k.KFCM(3,t,['N','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"№");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ò");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȍ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ó");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['\"',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ő");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ô");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǒ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȏ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŏ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Õ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ō");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ö");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȯ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ọ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǫ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɵ");}else if(k.KKM(e,16400,79)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ø");}else if(k.KKM(e,16400,80)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"P̈");}else if(k.KKM(e,16400,80)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṕ");}else if(k.KKM(e,16400,80)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṗ");}else if(k.KKM(e,16400,80)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¶");}else if(k.KKM(e,16400,80)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₧");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȑ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŕ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ř");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȓ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ɍ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṟ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṙ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṛ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŗ");}else if(k.KKM(e,16400,82)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₹");}else if(k.KKM(e,16400,83)&&k.KFCM(3,t,['S','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"ẞ");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ś");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŝ");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Š");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ș");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṡ");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṣ");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ş");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẞ");}else if(k.KKM(e,16400,83)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"§");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ť");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŧ");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṯ");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ț");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṫ");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṭ");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ţ");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Þ");}else if(k.KKM(e,16400,84)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"‡");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ù");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȕ");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ú");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['\"',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ű");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Û");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǔ");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȗ");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŭ");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ũ");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ū");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ü");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ů");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ụ");}else if(k.KKM(e,16400,85)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ų");}else if(k.KKM(e,16400,86)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṽ");}else if(k.KKM(e,16400,86)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ṿ");}else if(k.KKM(e,16400,87)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẁ");}else if(k.KKM(e,16400,87)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẃ");}else if(k.KKM(e,16400,87)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŵ");}else if(k.KKM(e,16400,87)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẅ");}else if(k.KKM(e,16400,87)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẇ");}else if(k.KKM(e,16400,87)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẉ");}else if(k.KKM(e,16400,88)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ǯ");}else if(k.KKM(e,16400,88)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẍ");}else if(k.KKM(e,16400,88)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẋ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ỳ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ý");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ŷ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ỹ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȳ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ÿ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẏ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ỵ");}else if(k.KKM(e,16400,89)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ȝ");}else if(k.KKM(e,16400,90)&&k.KFCM(3,t,['D','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"DŽ");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ź");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẑ");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ž");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ƶ");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẕ");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ż");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ẓ");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ⱬ");}else if(k.KKM(e,16400,90)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"Ʒ");}else if(k.KKM(e,16384,220)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"\\");}else if(k.KKM(e,16384,220)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,220)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"\\");k.KDO(-1,t,0);}else if(k.KKM(e,16400,54)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"^");}else if(k.KKM(e,16400,54)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,54)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"^");k.KDO(-1,t,0);}else if(k.KKM(e,16400,189)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¯");}else if(k.KKM(e,16400,189)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"_");}else if(k.KKM(e,16400,189)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,189)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"_");k.KDO(-1,t,0);}else if(k.KKM(e,16384,192)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"`");}else if(k.KKM(e,16384,192)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16384,192)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"`");k.KDO(-1,t,0);}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"à");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȁ");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"á");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"â");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǎ");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȃ");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ă");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ã");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ā");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ä");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"å");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȧ");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ạ");}else if(k.KKM(e,16384,65)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ą");}else if(k.KKM(e,16384,66)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ƀ");}else if(k.KKM(e,16384,66)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḇ");}else if(k.KKM(e,16384,66)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḃ");}else if(k.KKM(e,16384,66)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḅ");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ć");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĉ");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"č");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ċ");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ç");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɔ");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"©");}else if(k.KKM(e,16384,67)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¢");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ď");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"đ");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḏ");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḋ");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḍ");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḑ");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ð");}else if(k.KKM(e,16384,68)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₫");}else if(k.KKM(e,16384,69)&&k.KFCM(3,t,['a','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"æ");}else if(k.KKM(e,16384,69)&&k.KFCM(3,t,['o','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"œ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"è");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȅ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"é");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ê");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ě");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȇ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĕ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẽ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ē");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ë");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ė");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẹ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ę");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ə");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɛ");}else if(k.KKM(e,16384,69)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"€");}else if(k.KKM(e,16384,70)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḟ");}else if(k.KKM(e,16384,70)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ª");}else if(k.KKM(e,16384,70)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₱");}else if(k.KKM(e,16384,71)&&k.KFCM(3,t,['n','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"ŋ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"g̃");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǵ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĝ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǧ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ğ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḡ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ġ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ģ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɂ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǥ");}else if(k.KKM(e,16384,71)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₰");}else if(k.KKM(e,16384,72)&&k.KFCM(3,t,['t','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"þ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĥ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȟ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḫ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ħ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẖ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḧ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḣ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḥ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḩ");}else if(k.KKM(e,16384,72)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₴");}else if(k.KKM(e,16384,73)&&k.KFCM(3,t,['f','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"fi");}else if(k.KKM(e,16384,73)&&k.KFCM(3,t,['o','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"ƣ");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ì");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȉ");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"í");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"î");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǐ");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȋ");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĭ");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĩ");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ī");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ï");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ı");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ị");}else if(k.KKM(e,16384,73)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"į");}else if(k.KKM(e,16384,74)&&k.KFCM(3,t,['i','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"ij");}else if(k.KKM(e,16384,74)&&k.KFCM(3,t,['L','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Lj");}else if(k.KKM(e,16384,74)&&k.KFCM(3,t,['l','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"lj");}else if(k.KKM(e,16384,74)&&k.KFCM(3,t,['N','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Nj");}else if(k.KKM(e,16384,74)&&k.KFCM(3,t,['n','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"nj");}else if(k.KKM(e,16384,74)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĵ");}else if(k.KKM(e,16384,74)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǰ");}else if(k.KKM(e,16384,74)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɉ");}else if(k.KKM(e,16384,74)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȷ");}else if(k.KKM(e,16384,74)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɲ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḱ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǩ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḵ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḳ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ķ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĸ");}else if(k.KKM(e,16384,75)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₡");}else if(k.KKM(e,16384,76)&&k.KFCM(3,t,['f','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"fl");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ĺ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ľ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɫ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ł");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḻ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŀ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḷ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ļ");}else if(k.KKM(e,16384,76)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₤");}else if(k.KKM(e,16384,77)&&k.KFCM(3,t,['t','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"™");}else if(k.KKM(e,16384,77)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ḿ");}else if(k.KKM(e,16384,77)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṁ");}else if(k.KKM(e,16384,77)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṃ");}else if(k.KKM(e,16384,77)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"º");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǹ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ń");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ň");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ñ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṉ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṅ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṇ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ņ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŋ");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ʼn");}else if(k.KKM(e,16384,78)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₪");}else if(k.KKM(e,16384,79)&&k.KFCM(3,t,['n','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"№");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ò");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȍ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ó");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['\"',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ő");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ô");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǒ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȏ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŏ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"õ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ō");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ö");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȯ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ọ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǫ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɵ");}else if(k.KKM(e,16384,79)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ø");}else if(k.KKM(e,16384,80)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"p̈");}else if(k.KKM(e,16384,80)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṕ");}else if(k.KKM(e,16384,80)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṗ");}else if(k.KKM(e,16384,80)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"℗");}else if(k.KKM(e,16384,80)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"£");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȑ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŕ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ř");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȓ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ɍ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṟ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṙ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṛ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŗ");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"®");}else if(k.KKM(e,16384,82)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₨");}else if(k.KKM(e,16384,83)&&k.KFCM(3,t,['s','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"ß");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ś");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŝ");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"š");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ș");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṡ");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṣ");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ş");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ß");}else if(k.KKM(e,16384,83)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ſ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ť");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŧ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṯ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẗ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ț");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṫ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṭ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ţ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"þ");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"†");}else if(k.KKM(e,16384,84)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₮");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ù");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['#',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȕ");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ú");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['\"',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ű");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"û");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǔ");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['&',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȗ");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['*',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŭ");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ũ");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ū");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ü");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ů");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ụ");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ų");}else if(k.KKM(e,16384,85)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"µ");}else if(k.KKM(e,16384,86)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṽ");}else if(k.KKM(e,16384,86)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ṿ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẁ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẃ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŵ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẅ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẘ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẇ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẉ");}else if(k.KKM(e,16384,87)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"₩");}else if(k.KKM(e,16384,88)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ǯ");}else if(k.KKM(e,16384,88)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẍ");}else if(k.KKM(e,16384,88)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẋ");}else if(k.KKM(e,16384,88)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"×");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['`',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ỳ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ý");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ŷ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ỹ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȳ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,[':',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ÿ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['@',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẙ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẏ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ỵ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ȝ");}else if(k.KKM(e,16384,89)&&k.KFCM(2,t,['$',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¥");}else if(k.KKM(e,16384,90)&&k.KFCM(3,t,['D','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"Dž");}else if(k.KKM(e,16384,90)&&k.KFCM(3,t,['d','\\',{t:'d',d:0}])) {r=m=1;k.KDC(3,t);k.KO(-1,t,"dž");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['\'',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ź");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['^',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẑ");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['%',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ž");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['-',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ƶ");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['_',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẕ");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['.',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ż");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ẓ");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,[',',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ⱬ");}else if(k.KKM(e,16384,90)&&k.KFCM(2,t,['=',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"ʒ");}else if(k.KKM(e,16400,220)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¦");}else if(k.KKM(e,16400,220)&&k.KFCM(2,t,['|',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"|");}else if(k.KKM(e,16400,220)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,220)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"|");k.KDO(-1,t,0);}else if(k.KKM(e,16400,192)&&k.KFCM(2,t,['\\',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"¬");}else if(k.KKM(e,16400,192)&&k.KFCM(2,t,['~',{t:'d',d:0}])) {r=m=1;k.KDC(2,t);k.KO(-1,t,"~");}else if(k.KKM(e,16400,192)&&k.KIFS(31,this.s55,t)) {r=m=1;k.KDC(0,t);r=this.g1(t,e);}else if(k.KKM(e,16400,192)&&this.s13===this.s62) {r=m=1;k.KDC(0,t);k.KO(-1,t,"~");k.KDO(-1,t,0);}return r;};this.g1=function(t,e) {var k=KeymanWeb,r=0,m=0;return r;};this.KHF=function(e) { - var h = document.getElementsByTagName('head'); - var stext = - "#keyboard_europeanlatin_help { text-align: left; padding: 0; background: #f5e3de; font-size: 8pt; font-family: Tahoma; cursor: default; padding: 4px; }"+ - "#keyboard_europeanlatin_help table { margin-top: 0; }"+ - "#keyboard_europeanlatin_help tr.out td { padding: 4px; border: solid 1px #ad4a28; font-size: 10pt; font-family: Cambria, Tahoma; font-weight: bold; text-align: center; background: white; }"+ - "#keyboard_europeanlatin_help th { padding: 2px 2px; font-size: 8pt; font-family: Tahoma; }"+ - "#keyboard_europeanlatin_help span.elkey { font-weight: normal; background: #e0e0e0; border: outset 1px; padding: 2px 6px; }"+ - "#keyboard_europeanlatin_help th.prompt { text-align: left; white-space: nowrap; }"+ - "#keyboard_europeanlatin_help tr.key th.prompt { background: white; border: none; font-weight: normal; text-align: right; }"+ - "#keyboard_europeanlatin_help tr.key th.title { background: white; border: none; font-weight: bold; vertical-align: middle; text-align: left; padding: 1px; }"+ - "#keyboard_europeanlatin_help tr.key th { min-width: 14px; margin: 2px; font-weight: normal; text-align: center; background: #e0e0e0; border: outset 1px; padding: 2px 2px; }"+ - "#keyboard_europeanlatin_help tr.out th.prompt { background: white; border: none; font-weight: normal; text-align: right; }"+ - "#keyboard_europeanlatin_help tr.gap th { background: white; border: none; height: 7px; }"+ - "#keyboard_europeanlatin_help p { font-weight: bold; }"+ - "#keyboard_eurolatin_tabsheets { color: black; border: solid 1px #ad4a28; margin: 0 4px 4px 4px; background: white; z-index: 101; }"+ - ".keyboard_eurolatin_tabsheet_selected { display: block; padding: 6px 6px 0 6px; }"+ - ".keyboard_eurolatin_tabsheet { display: none; }"+ - "#keyboard_eurolatin_tabs { margin: 4px 4px 0 4px; z-index: 100; }"+ - ".keyboard_eurolatin_tab { background: white; color: #ad4a28; border: solid 1px #ad4a28; display: inline; padding: 1px 4px 0px 4px; height: 16px; }"+ - ".keyboard_eurolatin_tab_selected { background: white; color: #ad4a28; border: solid 1px #ad4a28; display: inline; padding: 1px 4px; border-bottom: none; margin-top: -1px; height: 18px;}"; - - var style = document.createElement("style"); - style.setAttribute("type", "text/css"); - if(style.styleSheet){// IE - style.styleSheet.cssText = stext; - } else {// w3c - var cssText = document.createTextNode(stext); - style.appendChild(cssText); - } - if(h && h.length > 0) - h[0].appendChild(style); - - e=document.getElementById('keyboard_europeanlatin_help'); - if (typeof e.onselectstart!="undefined") //IE route - e.onselectstart=function(){return false;}; - else - { - e.style.MozUserSelect="none"; - e.style.KhtmlUserSelect="none"; - e.style.UserSelect="none"; - } - var ch = e.getElementsByTagName('td'); - - for(var i = 0; i < ch.length; i++) - { - if(ch[i].attributes['o']) - { - var sxv = ch[i].attributes['x'].value, so = ch[i].attributes['o'].value, sc = ch[i].attributes['c'].value; - if(ch[i].attributes['p']) var sp = ch[i].attributes['p'].value; else var sp = ''; - // ch[i].title = 'The following combinations are available: '+so; - var ce = function(tag){return document.createElement(tag);} - var sx = '', sy = '', sz = (sp == '' ? '' : sy); - var e2 = ce('div'); - for(var j = 0; j < sc.length; j++) - { - var chvo = so.charAt(j), chvc = sc.charAt(j), chvp = sp.charAt(j); - /* Special case for characters p umlaut, g tilde because they aren't precomposed */ - if(sxv == ':' && chvo == 'p') { chvo = 'p̈'; chvp = 'P̈'; } - if(sxv == '~' && chvo == 'g') { chvo = 'g̃'; chvp = 'G̃'; } - sx += ''; - sy += ''; - if(sp != '') sz += ''; - } - e2.innerHTML = sx+''+sy+''+sz+(sz == '' ? '' : '')+'
'+sxv+chvc+''+chvo+''+chvp+'
'; - - var es = e2.style; - es.background = '#f3ffdf'; - es.border = 'solid 1px #ad4a28'; - es.padding = '2px'; - es.display = 'none'; - es.position = 'absolute'; - es.left = (ch[i].offsetLeft+4)+'px'; - es.top = '24px'; - e2.onclick = function() { KeymanWeb.KT(); window.event.cancelBubble=true; return false; } - - ch[i].kmw_subitems = e2; - ch[i].appendChild(e2); - ch[i].onmouseover = function() { this.style.background = KeymanWeb_KeyHoverColor; this.kmw_subitems.style.left=this.offsetLeft+4+'px'; this.kmw_subitems.style.top=(this.offsetParent.offsetTop+this.offsetTop+this.offsetHeight-2)+'px'; this.kmw_subitems.style.display = 'block'; return false; } - ch[i].onmouseout = function() { this.style.background = ''; this.kmw_subitems.style.display = 'none'; return false; } - } - else - { - ch[i].onmouseover = function() { this.style.background = KeymanWeb_KeyHoverColor; return false; } - ch[i].onmouseout = function() { this.style.background = ''; return false; } - } - - ch[i].onclick = function(e) { with(this) { if(attributes['x']) KeymanWeb.KT(attributes['x'].value,0); else if(innerHTML != ' ') KeymanWeb.KT(innerHTML); else KeymanWeb.KT(''); } if(!e)e=window.event;if(e) e.cancelBubble=true;} - ch[i].onmousedown = function(e) { KeymanWeb.KSF(); if(!e)e=window.event;if(e) e.cancelBubble=true; } - } - - e.onclick=function() { KeymanWeb.KT(''); return false; } - e.onmousedown=function() { KeymanWeb.KSF(); return false; } - - e = document.getElementById('keyboard_eurolatin_tabs'); - e2 = document.getElementById('keyboard_eurolatin_tabsheets'); - var ch = [document.getElementById('keyboard_eurolatin_letters_tab'), document.getElementById('keyboard_eurolatin_symbols_tab')]; - var ch2 = [document.getElementById('keyboard_eurolatin_letters_tabsheet'), document.getElementById('keyboard_eurolatin_symbols_tabsheet')]; - for(var i = 0; i < ch.length; i++) - ch[i].onclick = (function(i) { return function(e) - { - for(var j = 0; j < ch.length; j++) - { - ch[j].className = "keyboard_eurolatin_tab" + (i == j ? "_selected" : ""); - ch2[j].className = "keyboard_eurolatin_tabsheet" + (i == j ? "_selected" : ""); - } - } - })(i); -} -} \ No newline at end of file diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java index 1c29c75afa..09e1000e2d 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java @@ -149,7 +149,7 @@ final class KMKeyboard extends WebView { Toast.makeText(context, "Fatal Error with " + currentKeyboard + ". Loading default keyboard", Toast.LENGTH_LONG).show(); - setKeyboard(KMManager.KMDefault_UndefinedPackageID, KMManager.KMDefault_KeyboardID, + setKeyboard(KMManager.KMDefault_PackageID, KMManager.KMDefault_KeyboardID, KMManager.KMDefault_LanguageID, KMManager.KMDefault_KeyboardName, KMManager.KMDefault_LanguageName, KMManager.KMDefault_KeyboardFont, null); } @@ -372,6 +372,7 @@ final class KMKeyboard extends WebView { if (!KMManager.shouldAllowSetKeyboard() || keyboardVersion == null) { Toast.makeText(context, "Can't set " + packageID + "::" + keyboardID + " for " + languageID + " language. Loading default keyboard", Toast.LENGTH_LONG).show(); + packageID = KMManager.KMDefault_PackageID; keyboardID = KMManager.KMDefault_KeyboardID; languageID = KMManager.KMDefault_LanguageID; retVal = false; @@ -473,6 +474,7 @@ final class KMKeyboard extends WebView { if (!KMManager.shouldAllowSetKeyboard() || keyboardVersion == null) { Toast.makeText(context, "Can't set " + packageID + "::" + keyboardID + " for " + languageID + " language. Loading default keyboard", Toast.LENGTH_LONG).show(); + packageID = KMManager.KMDefault_PackageID; keyboardID = KMManager.KMDefault_KeyboardID; languageID = KMManager.KMDefault_LanguageID; retVal = false; @@ -506,7 +508,7 @@ final class KMKeyboard extends WebView { if (!KMManager.shouldAllowSetKeyboard() || keyboardVersion == null) { Toast.makeText(context, "Can't set " + packageID + "::" + keyboardID + " for " + languageID + " language. Loading default keyboard", Toast.LENGTH_LONG).show(); - packageID = KMManager.KMDefault_UndefinedPackageID; + packageID = KMManager.KMDefault_PackageID; keyboardID = KMManager.KMDefault_KeyboardID; languageID = KMManager.KMDefault_LanguageID; keyboardName = KMManager.KMDefault_KeyboardName; diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java index fee0b4f494..d249da1868 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java @@ -11,6 +11,8 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -63,6 +65,7 @@ import com.tavultesoft.kmea.cloud.CloudDownloadMgr; import com.tavultesoft.kmea.data.Dataset; import com.tavultesoft.kmea.logic.ResourcesUpdateTool; import com.tavultesoft.kmea.packages.JSONUtils; +import com.tavultesoft.kmea.packages.LexicalModelPackageProcessor; import com.tavultesoft.kmea.packages.PackageProcessor; import com.tavultesoft.kmea.util.CharSequenceUtil; import com.tavultesoft.kmea.util.FileUtils; @@ -178,17 +181,19 @@ public final class KMManager { // Keyman internal keys protected static final String KMKey_ShouldShowHelpBubble = "ShouldShowHelpBubble"; - // Default Asset Paths + // Default Legacy Asset Paths // Previous keyboards installed from the cloud went to /languages/ and /fonts/ - // Keyboards now get installed into /packages/packageID/ - // Keyboards that have an undefined packageID are installed into /cloud/ + // Keyboards that have an undefined packageID were installed into /cloud/ public static final String KMDefault_LegacyAssetLanguages = "languages"; public static final String KMDefault_LegacyAssetFonts = "fonts"; public static final String KMDefault_UndefinedPackageID = "cloud"; + + // Keyboards now get installed into /packages/packageID/ public static final String KMDefault_AssetPackages = "packages"; public static final String KMDefault_LexicalModelPackages = "models"; // Default Keyboard Info + public static final String KMDefault_PackageID = "sil_euro_latin"; public static final String KMDefault_KeyboardID = "sil_euro_latin"; public static final String KMDefault_LanguageID = "en"; public static final String KMDefault_KeyboardName = "EuroLatin (SIL) Keyboard"; @@ -198,6 +203,7 @@ public final class KMManager { // Default Dictionary Info public static final String KMDefault_DictionaryPackageID = "nrc.en.mtnt"; public static final String KMDefault_DictionaryModelID = "nrc.en.mtnt"; + public static final String KMDefault_DictionaryModelName = "English dictionary (MTNT)"; public static final String KMDefault_DictionaryKMP = KMDefault_DictionaryPackageID + FileUtils.MODELPACKAGE; // Keyman files @@ -256,7 +262,9 @@ public final class KMManager { appContext = context.getApplicationContext(); if (!didCopyAssets || isTestMode()) { + // Copy and install assets copyAssets(appContext); + migrateOldKeyboardFiles(appContext); updateOldKeyboardsList(appContext); didCopyAssets = true; @@ -464,8 +472,7 @@ public final class KMManager { private static void copyAssets(Context context) { AssetManager assetManager = context.getAssets(); try { - // Copy main files - copyAsset(context, KMDefault_DictionaryKMP, "", true); + // Copy KMW files copyAsset(context, KMFilename_KeyboardHtml, "", true); copyAsset(context, KMFilename_JSEngine, "", true); if(KMManager.isDebugMode()) { @@ -481,7 +488,10 @@ public final class KMManager { packagesDir.mkdir(); } - // Copy default cloud keyboard + /* + // default cloud keyboard + // Intend to deprecate cloud/keyboards in Keyman 15.0 + */ File cloudDir = new File(getCloudDir()); if (!cloudDir.exists()) { cloudDir.mkdir(); @@ -496,6 +506,7 @@ public final class KMManager { if (!lexicalModelsDir.exists()) { lexicalModelsDir.mkdir(); } + String[] modelNames = assetManager.list(KMDefault_LexicalModelPackages); for (String modelName : modelNames) { File lexicalModelDir = new File(lexicalModelsDir, modelName); @@ -507,6 +518,31 @@ public final class KMManager { copyAsset(context, modelFile, KMDefault_LexicalModelPackages + File.separator + modelName, true); } } + + // Copy and install all KMP files (Issue for FV app?) + File resourceRoot = new File(getResourceRoot()); + PackageProcessor kmpProcessor = new PackageProcessor(resourceRoot); + LexicalModelPackageProcessor lmkmpProcessor = new LexicalModelPackageProcessor(resourceRoot); + String assetFiles[] = assetManager.list(""); + for (String assetFile : assetFiles) { + File kmpFile, tempPackagePath; + boolean installAsset = FileUtils.hasKeymanPackageExtension(assetFile) || + FileUtils.hasLexicalModelPackageExtension(assetFile); + + if (installAsset) { + copyAsset(context, assetFile, "", true); + kmpFile = new File(getResourceRoot(), assetFile); + tempPackagePath = kmpProcessor.unzipKMP(kmpFile); + + if (FileUtils.hasLexicalModelPackageExtension(assetFile)) { + lmkmpProcessor.processKMP(kmpFile, tempPackagePath, PackageProcessor.PP_LEXICAL_MODELS_KEY); + } else { + // Not using the list of entries returned from processKMP() + // because the main App will add the keyboard/lexical model info + kmpProcessor.processKMP(kmpFile, tempPackagePath, PackageProcessor.PP_KEYBOARDS_KEY); + } + } + } } catch (Exception e) { Log.e(TAG, "Failed to copy assets. Error: " + e); } @@ -555,6 +591,9 @@ public final class KMManager { * * Fonts used in legacy keyboards are also migrated from /fonts/ to /cloud/ * + * At some point, we might migrate /cloud/ keyboards into packages + * 5) For now, delete cloud/sil_euro_latin*.js + * * Assumption: No legacy keyboards exist in /packages/*.js * @param context */ @@ -563,26 +602,28 @@ public final class KMManager { String legacyFontsPath = getResourceRoot() + KMDefault_LegacyAssetFonts + File.separator; File legacyLanguagesDir = new File(legacyLanguagesPath); File legacyFontsDir = new File(legacyFontsPath); - if (!legacyLanguagesDir.exists() && !legacyFontsDir.exists()) { + File migratedDir = new File(getCloudDir()); + if (!legacyLanguagesDir.exists() && !legacyFontsDir.exists() && !migratedDir.exists()) { return; } - File migratedDir = new File(getCloudDir()); if (!migratedDir.exists()) { migratedDir.mkdir(); } + FileFilter keyboardFilter = new FileFilter() { + @Override + public boolean accept(File pathname) { + if (pathname.isFile() && FileUtils.hasJavaScriptExtension(pathname.getName())) { + return true; + } + return false; + } + }; + try { if (legacyLanguagesDir.exists()) { - FileFilter keyboardFilter = new FileFilter() { - @Override - public boolean accept(File pathname) { - if (pathname.isFile() && FileUtils.hasJavaScriptExtension(pathname.getName())) { - return true; - } - return false; - } - }; + File[] files = legacyLanguagesDir.listFiles(keyboardFilter); for (File file : files) { @@ -630,6 +671,18 @@ public final class KMManager { FileUtils.copyDirectory(legacyFontsDir, migratedDir); FileUtils.deleteDirectory(legacyFontsDir); } + + // TODO: Investigate how to migrate cloud/ keyboards to packages/ ? + // Would need to query what associated files get moved + // For now, can delete sil_euro_latin because it will be in packages/ + File[] files = migratedDir.listFiles(keyboardFilter); + for (File file: files) { + String filename = file.getName(); + if (filename.startsWith(KMDefault_KeyboardID)) { + file.delete(); + } + } + } catch (IOException e) { Log.e(TAG, "Failed to migrate assets. Error: " + e); } @@ -641,16 +694,18 @@ public final class KMManager { boolean shouldUpdateList = false; boolean shouldClearCache = false; HashMap kbInfo = kbList.get(0); + String pkgID = kbInfo.get(KMKey_PackageID); String kbID = kbInfo.get(KMKey_KeyboardID); - if (kbID.equals("us") || (kbID.equals("european2"))) { + if ( kbID.equals("us") || kbID.equals("european2") || + (pkgID.equals(KMDefault_UndefinedPackageID) && kbID.equals(KMDefault_KeyboardID)) ) { HashMap newKbInfo = new HashMap(); - newKbInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_UndefinedPackageID); + newKbInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_PackageID); newKbInfo.put(KMManager.KMKey_KeyboardID, KMManager.KMDefault_KeyboardID); newKbInfo.put(KMManager.KMKey_LanguageID, KMManager.KMDefault_LanguageID); newKbInfo.put(KMManager.KMKey_KeyboardName, KMManager.KMDefault_KeyboardName); newKbInfo.put(KMManager.KMKey_LanguageName, KMManager.KMDefault_LanguageName); newKbInfo.put(KMManager.KMKey_KeyboardVersion, - getLatestKeyboardFileVersion(context, KMManager.KMDefault_UndefinedPackageID, + getLatestKeyboardFileVersion(context, KMManager.KMDefault_PackageID, KMManager.KMDefault_KeyboardID)); newKbInfo.put(KMManager.KMKey_CustomKeyboard, "N"); newKbInfo.put(KMManager.KMKey_Font, KMManager.KMDefault_KeyboardFont); @@ -665,7 +720,7 @@ public final class KMManager { kbInfo = kbList.get(i); kbID = kbInfo.get(KMKey_KeyboardID); - String pkgID = kbInfo.get(KMKey_PackageID); + pkgID = kbInfo.get(KMKey_PackageID); if (pkgID == null || pkgID.isEmpty()) { pkgID = KMDefault_UndefinedPackageID; kbInfo.put(KMManager.KMKey_PackageID, pkgID); @@ -911,7 +966,7 @@ public final class KMManager { String keyboardID = keyboardInfo.get(KMManager.KMKey_KeyboardID); // Log Sentry analytic event, ignoring default keyboard - if (Sentry.isEnabled() && !(packageID.equalsIgnoreCase(KMManager.KMDefault_UndefinedPackageID) && + if (Sentry.isEnabled() && !(packageID.equalsIgnoreCase(KMManager.KMDefault_PackageID) && keyboardID.equalsIgnoreCase(KMManager.KMDefault_KeyboardID))) { Breadcrumb breadcrumb = new Breadcrumb(); breadcrumb.setMessage("KMManager.addKeyboard"); @@ -1208,6 +1263,29 @@ public final class KMManager { return kbFileVersion; } + /** + * Determine the latest version number for an installed lexical model by parsing kmp.json. + * @param context + * @param packageID + * @return String. + */ + public static String getLexicalModelPackageVersion(Context context, final String packageID) { + String path = getLexicalModelsDir() + packageID + File.separator + PackageProcessor.PP_DEFAULT_METADATA; + + try { + File kmpJSONFile = new File(path); + if (!kmpJSONFile.exists()) { + return null; + } + JSONParser jsonParser = new JSONParser(); + JSONObject kmpObject = jsonParser.getJSONObjectFromFile(kmpJSONFile); + + return LexicalModelPackageProcessor.getPackageVersion(kmpObject); + } catch (Exception e) { + return null; + } + } + public static void addKeyboardDownloadEventListener(OnKeyboardDownloadEventListener listener) { KMKeyboardDownloaderActivity.addKeyboardDownloadEventListener(listener); } @@ -1256,7 +1334,7 @@ public final class KMManager { public static void setShouldAllowSetKeyboard(boolean value) { shouldAllowSetKeyboard = value; if (shouldAllowSetKeyboard == false) { - setKeyboard(KMDefault_UndefinedPackageID, KMDefault_KeyboardID, + setKeyboard(KMDefault_PackageID, KMDefault_KeyboardID, KMDefault_LanguageID, KMDefault_KeyboardName, KMDefault_LanguageName, KMDefault_KeyboardFont, null); } } @@ -1529,7 +1607,7 @@ public final class KMManager { String kOskFont = keyboardInfo.get(KMManager.KMKey_OskFont); InAppKeyboard.setKeyboard(pkgId, kbId, langId, kbName, langName, kFont, kOskFont); } else { - InAppKeyboard.setKeyboard(KMDefault_UndefinedPackageID, KMDefault_KeyboardID, + InAppKeyboard.setKeyboard(KMDefault_PackageID, KMDefault_KeyboardID, KMDefault_LanguageID, KMDefault_KeyboardName, KMDefault_LanguageName, KMDefault_KeyboardFont, null); } diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java index b8caee8f8f..f67de35c24 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardPickerActivity.java @@ -110,13 +110,13 @@ public final class KeyboardPickerActivity extends AppCompatActivity { if (keyboardsList == null) { keyboardsList = new ArrayList>(); HashMap kbInfo = new HashMap(); - kbInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_UndefinedPackageID); + kbInfo.put(KMManager.KMKey_PackageID, KMManager.KMDefault_PackageID); kbInfo.put(KMManager.KMKey_KeyboardID, KMManager.KMDefault_KeyboardID); kbInfo.put(KMManager.KMKey_LanguageID, KMManager.KMDefault_LanguageID); kbInfo.put(KMManager.KMKey_KeyboardName, KMManager.KMDefault_KeyboardName); kbInfo.put(KMManager.KMKey_LanguageName, KMManager.KMDefault_LanguageName); kbInfo.put(KMManager.KMKey_KeyboardVersion, KMManager.getLatestKeyboardFileVersion( - context, KMManager.KMDefault_UndefinedPackageID, KMManager.KMDefault_KeyboardID)); + context, KMManager.KMDefault_PackageID, KMManager.KMDefault_KeyboardID)); kbInfo.put(KMManager.KMKey_CustomKeyboard, "N"); kbInfo.put(KMManager.KMKey_Font, KMManager.KMDefault_KeyboardFont); keyboardsList.add(kbInfo); diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardSettingsActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardSettingsActivity.java index 1376609d8b..bdc7d75f69 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardSettingsActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KeyboardSettingsActivity.java @@ -128,7 +128,7 @@ public final class KeyboardSettingsActivity extends AppCompatActivity { infoList.add(hashMap); // Display uninstall keyboard - if (!packageID.equalsIgnoreCase(KMManager.KMDefault_UndefinedPackageID) || + if (!packageID.equalsIgnoreCase(KMManager.KMDefault_PackageID) || !kbID.equalsIgnoreCase(KMManager.KMDefault_KeyboardID)) { hashMap = new HashMap<>(); hashMap.put(titleKey, getString(R.string.uninstall_keyboard)); diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageSettingsActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageSettingsActivity.java index bb47a60501..6848b09a32 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageSettingsActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/LanguageSettingsActivity.java @@ -130,7 +130,7 @@ public final class LanguageSettingsActivity extends AppCompatActivity { lgCode = bundle.getString(KMManager.KMKey_LanguageID); lgName = bundle.getString(KMManager.KMKey_LanguageName); - customHelpLink = bundle.getString(KMManager.KMKey_CustomHelpLink); + customHelpLink = bundle.getString(KMManager.KMKey_CustomHelpLink, ""); // Necessary to properly insert a language name into the title. (Has a %s slot for it.) String title = String.format(getString(R.string.title_language_settings), lgName); diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java index 8fef44aff0..b0fbe25421 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java @@ -64,7 +64,7 @@ public final class ModelPickerActivity extends AppCompatActivity { Bundle bundle = getIntent().getExtras(); String newLanguageID = bundle.getString(KMManager.KMKey_LanguageID); - String newCustomHelpLink = bundle.getString(KMManager.KMKey_CustomHelpLink); + String newCustomHelpLink = bundle.getString(KMManager.KMKey_CustomHelpLink, ""); // Sometimes we need to re-initialize the list of models that are displayed in the ListView languageID = newLanguageID; diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/FileUtils.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/FileUtils.java index 51ea47092a..acfe437351 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/FileUtils.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/util/FileUtils.java @@ -414,6 +414,11 @@ public final class FileUtils { return f.endsWith(LEXICALMODEL); } + public static boolean hasLexicalModelPackageExtension(String filename) { + String f = filename.toLowerCase(); + return f.endsWith(MODELPACKAGE); + } + public static boolean hasKeymanPackageExtension(String filename) { String f = filename.toLowerCase(); return f.endsWith(KEYMANPACKAGE); diff --git a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/util/FileUtilsTest.java b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/util/FileUtilsTest.java index 6ab6e52ba7..f652b3d2cb 100644 --- a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/util/FileUtilsTest.java +++ b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/util/FileUtilsTest.java @@ -190,6 +190,30 @@ public class FileUtilsTest { Assert.assertFalse(FileUtils.hasLexicalModelExtension(filename)); } + @Test + public void test_hasLexicalModelPackageExtension() { + String filename = "test/abc.kmp"; + Assert.assertFalse(FileUtils.hasLexicalModelPackageExtension(filename)); + + filename = "test/abc.KMP"; + Assert.assertFalse(FileUtils.hasLexicalModelPackageExtension(filename)); + + filename = "test/abc.kmpo"; + Assert.assertFalse(FileUtils.hasLexicalModelPackageExtension(filename)); + + filename = "test/abc.model.kmp"; + Assert.assertTrue(FileUtils.hasLexicalModelPackageExtension(filename)); + + filename = "test/abc.MODEL.KMP"; + Assert.assertTrue(FileUtils.hasLexicalModelPackageExtension(filename)); + + filename = "test/abc.MODEL.KMPO"; + Assert.assertFalse(FileUtils.hasLexicalModelPackageExtension(filename)); + + filename = ""; + Assert.assertFalse(FileUtils.hasLexicalModelPackageExtension(filename)); + } + @Test public void test_hasKeymanPackageExtension() { String filename = "test/abc.kmp"; diff --git a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/FunctionalTestHelper.java b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/FunctionalTestHelper.java index d769a81490..ba9996f81a 100644 --- a/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/FunctionalTestHelper.java +++ b/android/KMEA/app/src/test/java/com/tavultesoft/kmea/view/FunctionalTestHelper.java @@ -48,7 +48,7 @@ class FunctionalTestHelper { */ static void setInitialKeyboard() { - KMManager.setKeyboard(KMManager.KMDefault_UndefinedPackageID, + KMManager.setKeyboard(KMManager.KMDefault_PackageID, KMManager.KMDefault_KeyboardID, KMManager.KMDefault_LanguageID, KMManager.KMDefault_KeyboardName,