From: Fabrice Bellard Date: Mon, 19 Oct 2026 16:42:48 +0000 (+0200) Subject: implemented the Intl.Locale info methods and added the full UTS 35 likely subtags... X-Git-Url: https://git.kaiwu.me/$%7BGITURL%7D$%7Bcid%7D?a=commitdiff_plain;h=e2dc3ebbd874385fbcd48243acad5c8e98c4d451;p=quickjs.git implemented the Intl.Locale info methods and added the full UTS 35 likely subtags data --- diff --git a/gen-locale-data.js b/gen-locale-data.js index 5f52b0e..ee721d4 100644 --- a/gen-locale-data.js +++ b/gen-locale-data.js @@ -921,6 +921,105 @@ for (const dnLocale of dnDataEntries) { out += `};\n`; out += `const int display_names_count = sizeof(display_names_data) / sizeof(display_names_data[0]);\n`; +/* ------------------------------------------------------------------ */ +/* UTS 35 supplemental data: likely subtags, calendar preference, */ +/* time data, week data and script direction. */ +/* ------------------------------------------------------------------ */ +const CLDR_CORE_BASE = path.join(path.dirname(CLDR_BASE), '..', 'cldr-core'); + +function readSupplementalJSON(rel) { + return JSON.parse(fs.readFileSync(path.join(CLDR_CORE_BASE, rel), 'utf8')); +} + +/* --- Likely subtags --- */ +const likelySubtags = readSupplementalJSON('supplemental/likelySubtags.json')['supplemental']['likelySubtags']; +const likelySubtagKeys = Object.keys(likelySubtags).sort(); +out += `\n/* Add Likely Subtags data (UTS 35). Each entry is "key\\000value" where the\n` + + ` key is language[-script][-region] and the value is language-script-region. */\n`; +out += `const char *const likely_subtags_tab[] = {\n`; +for (const k of likelySubtagKeys) { + out += ` "${escapeCString(k)}\\000${escapeCString(likelySubtags[k])}",\n`; +} +out += `};\n`; +out += `const int likely_subtags_count = sizeof(likely_subtags_tab) / sizeof(likely_subtags_tab[0]);\n`; + +/* --- Calendar preference data (UTS 35 Part 4, Calendar Preference Data) --- */ +const calendarPreference = readSupplementalJSON('supplemental/calendarPreferenceData.json')['supplemental']['calendarPreferenceData']; +const calPrefKeys = Object.keys(calendarPreference).sort(); +out += `\n/* Calendar preference data: locale or region -> calendars by descending preference */\n`; +out += `const IntlPrefData cal_pref_tab[] = {\n`; +for (const k of calPrefKeys) { + out += ` { "${escapeCString(k)}", "${escapeCString(calendarPreference[k].join(' '))}" },\n`; +} +out += `};\n`; +out += `const int cal_pref_count = sizeof(cal_pref_tab) / sizeof(cal_pref_tab[0]);\n`; + +/* --- Time data (UTS 35 Part 4, Time Data) --- */ +const timeData = readSupplementalJSON('supplemental/timeData.json')['supplemental']['timeData']; +function hourCycleOf(token) { + switch (token) { + case 'h': case 'hb': case 'hB': return 'h12'; + case 'H': return 'h23'; + case 'K': return 'h11'; + case 'k': return 'h24'; + default: return null; + } +} +const timeDataKeys = Object.keys(timeData).sort(); +out += `\n/* Time data: locale or region -> hour cycles by descending preference */\n`; +out += `const IntlPrefData time_data_tab[] = {\n`; +for (const k of timeDataKeys) { + const entry = timeData[k]; + const ordered = (entry['_preferred'] + ' ' + entry['_allowed']).split(/\s+/); + const cycles = []; + for (const tok of ordered) { + const hc = hourCycleOf(tok); + if (hc && !cycles.includes(hc)) cycles.push(hc); + } + if (cycles.length == 0) continue; + out += ` { "${escapeCString(k)}", "${cycles.join(' ')}" },\n`; +} +out += `};\n`; +out += `const int time_data_count = sizeof(time_data_tab) / sizeof(time_data_tab[0]);\n`; + +/* --- Week data (UTS 35 Part 4, Week Data) --- */ +const weekData = readSupplementalJSON('supplemental/weekData.json')['supplemental']['weekData']; +const dayToNumber = { mon: 1, tue: 2, wed: 3, thu: 4, fri: 5, sat: 6, sun: 7 }; +const firstDay001 = dayToNumber[weekData['firstDay']['001']]; +const weekendStart001 = dayToNumber[weekData['weekendStart']['001']]; +const weekendEnd001 = dayToNumber[weekData['weekendEnd']['001']]; +const weekRegions = new Set(); +for (const name of ['firstDay', 'weekendStart', 'weekendEnd']) { + for (const region of Object.keys(weekData[name])) { + if (region.indexOf('-') < 0) weekRegions.add(region); + } +} +const weekRegionKeys = Array.from(weekRegions).sort(); +out += `\n/* Week data: region -> first day of week and weekend range (ISO 8601 days) */\n`; +out += `const IntlWeekData week_data_tab[] = {\n`; +for (const region of weekRegionKeys) { + const fd = dayToNumber[weekData['firstDay'][region]] || firstDay001; + const ws = dayToNumber[weekData['weekendStart'][region]] || weekendStart001; + const we = dayToNumber[weekData['weekendEnd'][region]] || weekendEnd001; + out += ` { "${escapeCString(region)}", ${fd}, ${ws}, ${we} },\n`; +} +out += `};\n`; +out += `const int week_data_count = sizeof(week_data_tab) / sizeof(week_data_tab[0]);\n`; + +/* --- Script direction (UTS 35 Part 1, Script Metadata) --- */ +const scriptMetadata = readSupplementalJSON('scriptMetadata.json')['scriptMetadata']; +const scriptDirKeys = Object.keys(scriptMetadata).filter(s => { + const rtl = scriptMetadata[s].rtl; + return rtl === 'YES' || rtl === 'NO'; +}).sort(); +out += `\n/* Script direction: script -> 0 for left-to-right, 1 for right-to-left */\n`; +out += `const IntlScriptDir script_dir_tab[] = {\n`; +for (const s of scriptDirKeys) { + out += ` { "${escapeCString(s)}", ${scriptMetadata[s].rtl === 'YES' ? 1 : 0} },\n`; +} +out += `};\n`; +out += `const int script_dir_count = sizeof(script_dir_tab) / sizeof(script_dir_tab[0]);\n`; + const displayCurrencyCodesSorted = Array.from(allDisplayCurrencyCodes).sort(); out += `\nconst char *intl_supported_currencies[] = {\n`; for (let i = 0; i < displayCurrencyCodesSorted.length; i++) { diff --git a/gen_tzdata.py b/gen_tzdata.py index cf458e0..c895b71 100644 --- a/gen_tzdata.py +++ b/gen_tzdata.py @@ -296,6 +296,23 @@ def collect_zone_names(): return sorted(names) +def collect_region_zones(): + """Map ISO 3166 country codes to the zone identifiers of zone.tab.""" + regions = {} + with open('/usr/share/zoneinfo/zone.tab', encoding='utf-8') as fp: + for line in fp: + line = line.rstrip('\n') + if not line or line.startswith('#'): + continue + fields = line.split('\t') + if len(fields) < 3: + continue + regions.setdefault(fields[0], []).append(fields[2]) + for zones in regions.values(): + zones.sort() + return regions + + def collect_all_zones(): """Return set of canonical zones plus aliases.""" zones = set(NEEDED_ZONES) @@ -405,9 +422,19 @@ def main(): for name in zone_names: f.write(f' "{name}",\n') f.write('};\n') - f.write('const int ti_tz_name_count = countof(ti_tz_names);\n') + f.write('const int ti_tz_name_count = countof(ti_tz_names);\n\n') + + # Zones commonly used in each region (Intl.Locale.prototype.getTimeZones) + region_zones = collect_region_zones() + f.write('/* Zone identifiers commonly used in each region, sorted and zero separated */\n') + f.write('const TiTzRegion ti_tz_region_tab[] = {\n') + for region in sorted(region_zones): + zones = '\\000'.join(region_zones[region]) + f.write(f' {{ "{region}", "{zones}" }},\n') + f.write('};\n') + f.write('const int ti_tz_region_count = countof(ti_tz_region_tab);\n') - print(f"Generated {out_path}: {len(canonical_list)} canonical zones, {len(alias_list)} aliases, {len(zone_names)} zone names", file=sys.stderr) + print(f"Generated {out_path}: {len(canonical_list)} canonical zones, {len(alias_list)} aliases, {len(zone_names)} zone names, {len(region_zones)} regions", file=sys.stderr) if __name__ == "__main__": main() diff --git a/intl/collator.c b/intl/collator.c index bf1a9fc..8e44e53 100644 --- a/intl/collator.c +++ b/intl/collator.c @@ -82,13 +82,21 @@ static int is_collation_supported(const char *collation, const char *locale) { if (!strcmp(collation, "default")) return 1; + /* the root collations are inherited by every locale */ + if (!strcmp(collation, "emoji") || !strcmp(collation, "eor")) + return 1; if (!strcmp(locale, "de") || !strncmp(locale, "de-", 3)) { - if (!strcmp(collation, "phonebk") || !strcmp(collation, "eor")) + if (!strcmp(collation, "phonebk")) return 1; } return 0; } +BOOL js_intl_collation_is_supported(const char *collation, const char *locale) +{ + return is_collation_supported(collation, locale); +} + static JSClassDef js_collator_class = { "Collator", .finalizer = js_collator_finalizer, diff --git a/intl/intl.c b/intl/intl.c index d1cfbbd..a2c9ede 100644 --- a/intl/intl.c +++ b/intl/intl.c @@ -135,7 +135,7 @@ const char *intl_all_numbering_systems[] = { const int intl_all_numbering_systems_count = countof(intl_all_numbering_systems); const char *intl_supported_collations[] = { - "eor", "phonebk" + "emoji", "eor", "phonebk" }; const int intl_supported_collations_count = countof(intl_supported_collations); diff --git a/intl/intl_private.h b/intl/intl_private.h index 3f6bed4..0a8b5c5 100644 --- a/intl/intl_private.h +++ b/intl/intl_private.h @@ -6,6 +6,7 @@ #define QUICKJS_INTL_PRIVATE_H #include "../quickjs.h" +#include "../cutils.h" JSValue js_canonicalizeLocaleList(JSContext *ctx, JSValueConst locales); int js_canonicalizeLocaleList_c(JSContext *ctx, JSValueConst locales, @@ -56,6 +57,7 @@ char *js_intl_locale_get_numbering_system(JSContext *ctx, const char *locale); char *js_intl_locale_get_unicode_key(JSContext *ctx, const char *locale, const char *key); const char *js_intl_find_u_extension(const char *locale); int js_intl_locale_has_key(const char *locale, const char *key); +BOOL js_intl_collation_is_supported(const char *collation, const char *locale); extern const char *intl_all_numbering_systems[]; extern const int intl_all_numbering_systems_count; @@ -334,6 +336,38 @@ static inline const char *strpool_get(const char *pool, int n) { #define LD_DAYPERIOD_NARROW(ld, i) strpool_get(dayperiod_narrow_tab[(ld)->dayperiod_narrow_idx], (i)) const LocaleData *js_intl_find_locale_data(const char *locale); + +/* UTS 35 supplemental data (see gen-locale-data.js) */ + +typedef struct { + const char *key; /* locale or region subtag */ + const char *value; /* space separated list, most preferred first */ +} IntlPrefData; + +extern const char *const likely_subtags_tab[]; /* "key\000value" entries, sorted */ +extern const int likely_subtags_count; +extern const IntlPrefData cal_pref_tab[]; +extern const int cal_pref_count; +extern const IntlPrefData time_data_tab[]; +extern const int time_data_count; + +typedef struct { + const char *region; + uint8_t firstDay; /* ISO 8601 day of week, 1 (Monday) .. 7 (Sunday) */ + uint8_t weekendStart; + uint8_t weekendEnd; +} IntlWeekData; + +extern const IntlWeekData week_data_tab[]; +extern const int week_data_count; + +typedef struct { + const char *script; + uint8_t dir; /* 0 = left-to-right, 1 = right-to-left */ +} IntlScriptDir; + +extern const IntlScriptDir script_dir_tab[]; +extern const int script_dir_count; int js_intl_get_currency_digits(const char *currency); const char *js_intl_get_currency_symbol(const char *currency, const char *locale); diff --git a/intl/locale-data.c b/intl/locale-data.c index 9779234..686b0ee 100644 --- a/intl/locale-data.c +++ b/intl/locale-data.c @@ -24611,6 +24611,8476 @@ const DisplayNamesData display_names_data[] = { }; const int display_names_count = sizeof(display_names_data) / sizeof(display_names_data[0]); +/* Add Likely Subtags data (UTS 35). Each entry is "key\000value" where the + key is language[-script][-region] and the value is language-script-region. */ +const char *const likely_subtags_tab[] = { + "aa\000aa-Latn-ET", + "aaa\000aaa-Latn-NG", + "aab\000aab-Latn-NG", + "aac\000aac-Latn-PG", + "aad\000aad-Latn-PG", + "aae\000aae-Latn-IT", + "aaf\000aaf-Mlym-IN", + "aag\000aag-Latn-PG", + "aah\000aah-Latn-PG", + "aai\000aai-Latn-PG", + "aak\000aak-Latn-PG", + "aal\000aal-Latn-CM", + "aan\000aan-Latn-BR", + "aao\000aao-Arab-DZ", + "aap\000aap-Latn-BR", + "aaq\000aaq-Latn-US", + "aas\000aas-Latn-TZ", + "aat\000aat-Grek-GR", + "aau\000aau-Latn-PG", + "aaw\000aaw-Latn-PG", + "aax\000aax-Latn-ID", + "aaz\000aaz-Latn-ID", + "ab\000ab-Cyrl-GE", + "aba\000aba-Latn-CI", + "abb\000abb-Latn-CM", + "abc\000abc-Latn-PH", + "abd\000abd-Latn-PH", + "abe\000abe-Latn-CA", + "abf\000abf-Latn-MY", + "abg\000abg-Latn-PG", + "abh\000abh-Arab-TJ", + "abi\000abi-Latn-CI", + "abl\000abl-Rjng-ID", + "abm\000abm-Latn-NG", + "abn\000abn-Latn-NG", + "abo\000abo-Latn-NG", + "abp\000abp-Latn-PH", + "abq\000abq-Cyrl-RU", + "abq-Latn\000abq-Latn-TR", + "abq-TR\000abq-Latn-TR", + "abr\000abr-Latn-GH", + "abs\000abs-Latn-ID", + "abt\000abt-Latn-PG", + "abu\000abu-Latn-CI", + "abv\000abv-Arab-BH", + "abw\000abw-Latn-PG", + "abx\000abx-Latn-PH", + "aby\000aby-Latn-PG", + "abz\000abz-Latn-ID", + "aca\000aca-Latn-CO", + "acb\000acb-Latn-NG", + "acd\000acd-Latn-GH", + "ace\000ace-Latn-ID", + "acf\000acf-Latn-LC", + "ach\000ach-Latn-UG", + "acm\000acm-Arab-IQ", + "acn\000acn-Latn-CN", + "acp\000acp-Latn-NG", + "acq\000acq-Arab-YE", + "acr\000acr-Latn-GT", + "acs\000acs-Latn-BR", + "act\000act-Latn-NL", + "acu\000acu-Latn-EC", + "acv\000acv-Latn-US", + "acw\000acw-Arab-SA", + "acx\000acx-Arab-OM", + "acy\000acy-Latn-CY", + "acz\000acz-Latn-SD", + "ada\000ada-Latn-GH", + "adb\000adb-Latn-TL", + "add\000add-Latn-CM", + "ade\000ade-Latn-TG", + "adf\000adf-Arab-OM", + "adg\000adg-Latn-AU", + "adh\000adh-Latn-UG", + "adi\000adi-Latn-IN", + "adj\000adj-Latn-CI", + "adl\000adl-Latn-IN", + "adn\000adn-Latn-ID", + "ado\000ado-Latn-PG", + "adq\000adq-Latn-GH", + "adr\000adr-Latn-ID", + "adt\000adt-Latn-AU", + "adu\000adu-Latn-NG", + "adw\000adw-Latn-BR", + "adx\000adx-Tibt-CN", + "ady\000ady-Cyrl-RU", + "adz\000adz-Latn-PG", + "ae\000ae-Avst-IR", + "aea\000aea-Latn-AU", + "aeb\000aeb-Arab-TN", + "aec\000aec-Arab-EG", + "aee\000aee-Arab-AF", + "aek\000aek-Latn-NC", + "ael\000ael-Latn-CM", + "aem\000aem-Latn-VN", + "aeq\000aeq-Arab-PK", + "aer\000aer-Latn-AU", + "aes\000aes-Latn-US", + "aeu\000aeu-Latn-CN", + "aew\000aew-Latn-PG", + "aey\000aey-Latn-PG", + "aez\000aez-Latn-PG", + "af\000af-Latn-ZA", + "afb\000afb-Arab-KW", + "afd\000afd-Latn-PG", + "afe\000afe-Latn-NG", + "afh\000afh-Latn-GH", + "afi\000afi-Latn-PG", + "afk\000afk-Latn-PG", + "afn\000afn-Latn-NG", + "afo\000afo-Latn-NG", + "afp\000afp-Latn-PG", + "afs\000afs-Latn-MX", + "afu\000afu-Latn-GH", + "afz\000afz-Latn-ID", + "aga\000aga-Latn-PE", + "agb\000agb-Latn-NG", + "agc\000agc-Latn-NG", + "agd\000agd-Latn-PG", + "age\000age-Latn-PG", + "agf\000agf-Latn-ID", + "agg\000agg-Latn-PG", + "agh\000agh-Latn-CD", + "agi\000agi-Deva-IN", + "agj\000agj-Ethi-ET", + "agk\000agk-Latn-PH", + "agl\000agl-Latn-PG", + "agm\000agm-Latn-PG", + "agn\000agn-Latn-PH", + "ago\000ago-Latn-PG", + "agq\000agq-Latn-CM", + "agr\000agr-Latn-PE", + "ags\000ags-Latn-CM", + "agt\000agt-Latn-PH", + "agu\000agu-Latn-GT", + "agv\000agv-Latn-PH", + "agw\000agw-Latn-SB", + "agx\000agx-Cyrl-RU", + "agy\000agy-Latn-PH", + "agz\000agz-Latn-PH", + "aha\000aha-Latn-GH", + "ahb\000ahb-Latn-VU", + "ahg\000ahg-Ethi-ET", + "ahh\000ahh-Latn-ID", + "ahi\000ahi-Latn-CI", + "ahk\000ahk-Latn-MM", + "ahl\000ahl-Latn-TG", + "ahm\000ahm-Latn-CI", + "ahn\000ahn-Latn-NG", + "aho\000aho-Ahom-IN", + "ahp\000ahp-Latn-CI", + "ahr\000ahr-Deva-IN", + "ahs\000ahs-Latn-NG", + "aht\000aht-Latn-US", + "aia\000aia-Latn-SB", + "aib\000aib-Arab-CN", + "aic\000aic-Latn-PG", + "aid\000aid-Latn-AU", + "aie\000aie-Latn-PG", + "aif\000aif-Latn-PG", + "aig\000aig-Latn-AG", + "aii\000aii-Syrc-IQ", + "aij\000aij-Hebr-IL", + "aik\000aik-Latn-NG", + "ail\000ail-Latn-PG", + "aim\000aim-Latn-IN", + "ain\000ain-Kana-JP", + "aio\000aio-Mymr-IN", + "aip\000aip-Latn-ID", + "aiq\000aiq-Arab-AF", + "air\000air-Latn-ID", + "ait\000ait-Latn-BR", + "aiw\000aiw-Latn-ET", + "aix\000aix-Latn-PG", + "aiy\000aiy-Latn-CF", + "aja\000aja-Latn-SS", + "ajg\000ajg-Latn-BJ", + "aji\000aji-Latn-NC", + "ajn\000ajn-Latn-AU", + "ajw\000ajw-Latn-NG", + "ajz\000ajz-Latn-IN", + "ak\000ak-Latn-GH", + "akb\000akb-Latn-ID", + "akc\000akc-Latn-ID", + "akd\000akd-Latn-NG", + "ake\000ake-Latn-GY", + "akf\000akf-Latn-NG", + "akg\000akg-Latn-ID", + "akh\000akh-Latn-PG", + "aki\000aki-Latn-PG", + "akk\000akk-Xsux-IQ", + "akl\000akl-Latn-PH", + "ako\000ako-Latn-SR", + "akp\000akp-Latn-GH", + "akq\000akq-Latn-PG", + "akr\000akr-Latn-VU", + "aks\000aks-Latn-TG", + "akt\000akt-Latn-PG", + "aku\000aku-Latn-CM", + "akv\000akv-Cyrl-RU", + "akw\000akw-Latn-CG", + "akz\000akz-Latn-US", + "ala\000ala-Latn-NG", + "alc\000alc-Latn-CL", + "ald\000ald-Latn-CI", + "ale\000ale-Latn-US", + "alf\000alf-Latn-NG", + "alh\000alh-Latn-AU", + "ali\000ali-Latn-PG", + "alj\000alj-Latn-PH", + "alk\000alk-Laoo-LA", + "all\000all-Mlym-IN", + "alm\000alm-Latn-VU", + "aln\000aln-Latn-XK", + "alo\000alo-Latn-ID", + "alp\000alp-Latn-ID", + "alq\000alq-Latn-CA", + "alr\000alr-Cyrl-RU", + "alt\000alt-Cyrl-RU", + "alu\000alu-Latn-SB", + "alw\000alw-Ethi-ET", + "alx\000alx-Latn-PG", + "aly\000aly-Latn-AU", + "alz\000alz-Latn-CD", + "am\000am-Ethi-ET", + "ama\000ama-Latn-BR", + "amb\000amb-Latn-NG", + "amc\000amc-Latn-PE", + "ame\000ame-Latn-PE", + "amf\000amf-Latn-ET", + "amg\000amg-Latn-AU", + "ami\000ami-Latn-TW", + "amj\000amj-Latn-TD", + "amk\000amk-Latn-ID", + "amm\000amm-Latn-PG", + "amn\000amn-Latn-PG", + "amo\000amo-Latn-NG", + "amp\000amp-Latn-PG", + "amq\000amq-Latn-ID", + "amr\000amr-Latn-PE", + "ams\000ams-Jpan-JP", + "amt\000amt-Latn-PG", + "amu\000amu-Latn-MX", + "amv\000amv-Latn-ID", + "amw\000amw-Syrc-SY", + "amx\000amx-Latn-AU", + "amy\000amy-Latn-AU", + "amz\000amz-Latn-AU", + "an\000an-Latn-ES", + "ana\000ana-Latn-CO", + "anb\000anb-Latn-PE", + "anc\000anc-Latn-NG", + "and\000and-Latn-ID", + "ane\000ane-Latn-NC", + "anf\000anf-Latn-GH", + "ang\000ang-Latn-GB", + "anh\000anh-Latn-PG", + "ani\000ani-Cyrl-RU", + "anj\000anj-Latn-PG", + "ank\000ank-Latn-NG", + "anl\000anl-Latn-MM", + "anm\000anm-Latn-IN", + "ann\000ann-Latn-NG", + "ano\000ano-Latn-CO", + "anp\000anp-Deva-IN", + "anq\000anq-Deva-IN", + "anr\000anr-Deva-IN", + "ans\000ans-Latn-CO", + "ant\000ant-Latn-AU", + "anu\000anu-Ethi-ET", + "anv\000anv-Latn-CM", + "anw\000anw-Latn-NG", + "anx\000anx-Latn-PG", + "any\000any-Latn-CI", + "anz\000anz-Latn-PG", + "aoa\000aoa-Latn-ST", + "aob\000aob-Latn-PG", + "aoc\000aoc-Latn-VE", + "aod\000aod-Latn-PG", + "aoe\000aoe-Latn-PG", + "aof\000aof-Latn-PG", + "aog\000aog-Latn-PG", + "aoi\000aoi-Latn-AU", + "aoj\000aoj-Latn-PG", + "aok\000aok-Latn-NC", + "aol\000aol-Latn-ID", + "aom\000aom-Latn-PG", + "aon\000aon-Latn-PG", + "aor\000aor-Latn-VU", + "aos\000aos-Latn-ID", + "aot\000aot-Beng-BD", + "aox\000aox-Latn-GY", + "aoz\000aoz-Latn-ID", + "apb\000apb-Latn-SB", + "apc\000apc-Arab-SY", + "apd\000apd-Arab-SD", + "ape\000ape-Latn-PG", + "apf\000apf-Latn-PH", + "apg\000apg-Latn-ID", + "aph\000aph-Deva-NP", + "api\000api-Latn-BR", + "apj\000apj-Latn-US", + "apk\000apk-Latn-US", + "apl\000apl-Latn-US", + "apm\000apm-Latn-US", + "apn\000apn-Latn-BR", + "apo\000apo-Latn-PG", + "app\000app-Latn-VU", + "apr\000apr-Latn-PG", + "aps\000aps-Latn-PG", + "apt\000apt-Latn-IN", + "apu\000apu-Latn-BR", + "apv\000apv-Latn-BR", + "apw\000apw-Latn-US", + "apx\000apx-Latn-ID", + "apy\000apy-Latn-BR", + "apz\000apz-Latn-PG", + "aqc\000aqc-Cyrl-RU", + "aqd\000aqd-Latn-ML", + "aqg\000aqg-Latn-NG", + "aqk\000aqk-Latn-NG", + "aqm\000aqm-Latn-ID", + "aqn\000aqn-Latn-PH", + "aqr\000aqr-Latn-NC", + "aqt\000aqt-Latn-PY", + "aqz\000aqz-Latn-BR", + "ar\000ar-Arab-EG", + "arc\000arc-Armi-IR", + "arc-Hatr\000arc-Hatr-IQ", + "arc-Nbat\000arc-Nbat-JO", + "arc-Palm\000arc-Palm-SY", + "ard\000ard-Latn-AU", + "are\000are-Latn-AU", + "arh\000arh-Latn-CO", + "ari\000ari-Latn-US", + "arj\000arj-Latn-BR", + "ark\000ark-Latn-BR", + "arl\000arl-Latn-PE", + "arn\000arn-Latn-CL", + "aro\000aro-Latn-BO", + "arp\000arp-Latn-US", + "arq\000arq-Arab-DZ", + "arr\000arr-Latn-BR", + "ars\000ars-Arab-SA", + "aru\000aru-Latn-BR", + "arv\000arv-Latn-ET", + "arw\000arw-Latn-SR", + "arx\000arx-Latn-BR", + "ary\000ary-Arab-MA", + "arz\000arz-Arab-EG", + "as\000as-Beng-IN", + "asa\000asa-Latn-TZ", + "asb\000asb-Latn-CA", + "asc\000asc-Latn-ID", + "ase\000ase-Sgnw-US", + "asg\000asg-Latn-NG", + "ash\000ash-Latn-PE", + "asi\000asi-Latn-ID", + "asj\000asj-Latn-CM", + "ask\000ask-Arab-AF", + "asl\000asl-Latn-ID", + "asn\000asn-Latn-BR", + "aso\000aso-Latn-PG", + "asr\000asr-Deva-IN", + "ass\000ass-Latn-CM", + "ast\000ast-Latn-ES", + "asu\000asu-Latn-BR", + "asv\000asv-Latn-CD", + "asx\000asx-Latn-PG", + "asy\000asy-Latn-ID", + "asz\000asz-Latn-ID", + "ata\000ata-Latn-PG", + "atb\000atb-Latn-CN", + "atc\000atc-Latn-PE", + "atd\000atd-Latn-PH", + "ate\000ate-Latn-PG", + "atg\000atg-Latn-NG", + "ati\000ati-Latn-CI", + "atj\000atj-Latn-CA", + "atk\000atk-Latn-PH", + "atl\000atl-Latn-PH", + "atm\000atm-Latn-PH", + "atn\000atn-Arab-IR", + "ato\000ato-Latn-CM", + "atp\000atp-Latn-PH", + "atq\000atq-Latn-ID", + "atr\000atr-Latn-BR", + "ats\000ats-Latn-US", + "att\000att-Latn-PH", + "atu\000atu-Latn-SS", + "atv\000atv-Cyrl-RU", + "atw\000atw-Latn-US", + "atx\000atx-Latn-BR", + "aty\000aty-Latn-VU", + "atz\000atz-Latn-PH", + "aua\000aua-Latn-SB", + "auc\000auc-Latn-EC", + "aud\000aud-Latn-SB", + "aug\000aug-Latn-BJ", + "auh\000auh-Latn-ZM", + "aui\000aui-Latn-PG", + "auj\000auj-Arab-LY", + "auk\000auk-Latn-PG", + "aul\000aul-Latn-VU", + "aum\000aum-Latn-NG", + "aun\000aun-Latn-PG", + "auo\000auo-Latn-NG", + "aup\000aup-Latn-PG", + "auq\000auq-Latn-ID", + "aur\000aur-Latn-PG", + "aut\000aut-Latn-PF", + "auu\000auu-Latn-ID", + "auw\000auw-Latn-ID", + "auy\000auy-Latn-PG", + "auz\000auz-Arab-UZ", + "av\000av-Cyrl-RU", + "avb\000avb-Latn-PG", + "avd\000avd-Arab-IR", + "avi\000avi-Latn-CI", + "avk\000avk-Latn-001", + "avl\000avl-Arab-EG", + "avm\000avm-Latn-AU", + "avn\000avn-Latn-GH", + "avo\000avo-Latn-BR", + "avs\000avs-Latn-PE", + "avt\000avt-Latn-PG", + "avu\000avu-Latn-SS", + "avv\000avv-Latn-BR", + "awa\000awa-Deva-IN", + "awb\000awb-Latn-PG", + "awc\000awc-Latn-NG", + "awe\000awe-Latn-BR", + "awg\000awg-Latn-AU", + "awh\000awh-Latn-ID", + "awi\000awi-Latn-PG", + "awk\000awk-Latn-AU", + "awm\000awm-Latn-PG", + "awn\000awn-Ethi-ET", + "awo\000awo-Latn-NG", + "awr\000awr-Latn-ID", + "aws\000aws-Latn-ID", + "awt\000awt-Latn-BR", + "awu\000awu-Latn-ID", + "awv\000awv-Latn-ID", + "aww\000aww-Latn-PG", + "awx\000awx-Latn-PG", + "awy\000awy-Latn-ID", + "axb\000axb-Latn-AR", + "axe\000axe-Latn-AU", + "axg\000axg-Latn-BR", + "axk\000axk-Latn-CF", + "axl\000axl-Latn-AU", + "axm\000axm-Armn-AM", + "axx\000axx-Latn-NC", + "ay\000ay-Latn-BO", + "aya\000aya-Latn-PG", + "ayb\000ayb-Latn-BJ", + "ayc\000ayc-Latn-PE", + "ayd\000ayd-Latn-AU", + "aye\000aye-Latn-NG", + "ayg\000ayg-Latn-TG", + "ayh\000ayh-Arab-YE", + "ayi\000ayi-Latn-NG", + "ayk\000ayk-Latn-NG", + "ayl\000ayl-Arab-LY", + "ayn\000ayn-Arab-YE", + "ayo\000ayo-Latn-PY", + "ayp\000ayp-Arab-IQ", + "ayq\000ayq-Latn-PG", + "ays\000ays-Latn-PH", + "ayt\000ayt-Latn-PH", + "ayu\000ayu-Latn-NG", + "ayz\000ayz-Latn-ID", + "az\000az-Latn-AZ", + "az-Arab\000az-Arab-IR", + "az-IQ\000az-Arab-IQ", + "az-IR\000az-Arab-IR", + "az-RU\000az-Cyrl-RU", + "azb\000azb-Arab-IR", + "azd\000azd-Latn-MX", + "azg\000azg-Latn-MX", + "azm\000azm-Latn-MX", + "azn\000azn-Latn-MX", + "azo\000azo-Latn-CM", + "azt\000azt-Latn-PH", + "azz\000azz-Latn-MX", + "ba\000ba-Cyrl-RU", + "baa\000baa-Latn-SB", + "bab\000bab-Latn-GW", + "bac\000bac-Latn-ID", + "bae\000bae-Latn-VE", + "baf\000baf-Latn-CM", + "bag\000bag-Latn-CM", + "bah\000bah-Latn-BS", + "baj\000baj-Latn-ID", + "bal\000bal-Arab-PK", + "ban\000ban-Latn-ID", + "bao\000bao-Latn-CO", + "bap\000bap-Deva-NP", + "bap-Krai\000bap-Krai-IN", + "bar\000bar-Latn-AT", + "bas\000bas-Latn-CM", + "bau\000bau-Latn-NG", + "bav\000bav-Latn-CM", + "baw\000baw-Latn-CM", + "bax\000bax-Bamu-CM", + "bay\000bay-Latn-ID", + "bba\000bba-Latn-BJ", + "bbb\000bbb-Latn-PG", + "bbc\000bbc-Latn-ID", + "bbd\000bbd-Latn-PG", + "bbe\000bbe-Latn-CD", + "bbf\000bbf-Latn-PG", + "bbg\000bbg-Latn-GA", + "bbi\000bbi-Latn-CM", + "bbj\000bbj-Latn-CM", + "bbk\000bbk-Latn-CM", + "bbl\000bbl-Geor-GE", + "bbm\000bbm-Latn-CD", + "bbn\000bbn-Latn-PG", + "bbo\000bbo-Latn-BF", + "bbp\000bbp-Latn-CF", + "bbq\000bbq-Latn-CM", + "bbr\000bbr-Latn-PG", + "bbs\000bbs-Latn-NG", + "bbt\000bbt-Latn-NG", + "bbu\000bbu-Latn-NG", + "bbv\000bbv-Latn-PG", + "bbw\000bbw-Latn-CM", + "bbx\000bbx-Latn-CM", + "bby\000bby-Latn-CM", + "bca\000bca-Latn-CN", + "bcb\000bcb-Latn-SN", + "bcd\000bcd-Latn-ID", + "bce\000bce-Latn-CM", + "bcf\000bcf-Latn-PG", + "bcg\000bcg-Latn-GN", + "bch\000bch-Latn-PG", + "bci\000bci-Latn-CI", + "bcj\000bcj-Latn-AU", + "bck\000bck-Latn-AU", + "bcm\000bcm-Latn-PG", + "bcn\000bcn-Latn-NG", + "bco\000bco-Latn-PG", + "bcp\000bcp-Latn-CD", + "bcq\000bcq-Ethi-ET", + "bcr\000bcr-Latn-CA", + "bcs\000bcs-Latn-NG", + "bct\000bct-Latn-CD", + "bcu\000bcu-Latn-PG", + "bcv\000bcv-Latn-NG", + "bcw\000bcw-Latn-CM", + "bcy\000bcy-Latn-NG", + "bcz\000bcz-Latn-SN", + "bda\000bda-Latn-SN", + "bdb\000bdb-Latn-ID", + "bdc\000bdc-Latn-CO", + "bdd\000bdd-Latn-PG", + "bde\000bde-Latn-NG", + "bdf\000bdf-Latn-PG", + "bdg\000bdg-Latn-MY", + "bdh\000bdh-Latn-SS", + "bdi\000bdi-Latn-SD", + "bdj\000bdj-Latn-SS", + "bdk\000bdk-Latn-AZ", + "bdl\000bdl-Latn-ID", + "bdm\000bdm-Latn-TD", + "bdn\000bdn-Latn-CM", + "bdo\000bdo-Latn-TD", + "bdp\000bdp-Latn-TZ", + "bdq\000bdq-Latn-VN", + "bdr\000bdr-Latn-MY", + "bds\000bds-Latn-TZ", + "bdt\000bdt-Latn-CF", + "bdu\000bdu-Latn-CM", + "bdv\000bdv-Orya-IN", + "bdw\000bdw-Latn-ID", + "bdx\000bdx-Latn-ID", + "bdy\000bdy-Latn-AU", + "bdz\000bdz-Arab-PK", + "be\000be-Cyrl-BY", + "bea\000bea-Latn-CA", + "beb\000beb-Latn-CM", + "bec\000bec-Latn-CM", + "bed\000bed-Latn-ID", + "bee\000bee-Deva-IN", + "bef\000bef-Latn-PG", + "beh\000beh-Latn-BJ", + "bei\000bei-Latn-ID", + "bej\000bej-Arab-SD", + "bek\000bek-Latn-PG", + "bem\000bem-Latn-ZM", + "beo\000beo-Latn-PG", + "bep\000bep-Latn-ID", + "beq\000beq-Latn-CG", + "bes\000bes-Latn-TD", + "bet\000bet-Latn-CI", + "beu\000beu-Latn-ID", + "bev\000bev-Latn-CI", + "bew\000bew-Latn-ID", + "bex\000bex-Latn-SS", + "bey\000bey-Latn-PG", + "bez\000bez-Latn-TZ", + "bfa\000bfa-Latn-SS", + "bfb\000bfb-Deva-IN", + "bfc\000bfc-Latn-CN", + "bfd\000bfd-Latn-CM", + "bfe\000bfe-Latn-ID", + "bff\000bff-Latn-CF", + "bfg\000bfg-Latn-ID", + "bfh\000bfh-Latn-PG", + "bfj\000bfj-Latn-CM", + "bfl\000bfl-Latn-CF", + "bfm\000bfm-Latn-CM", + "bfn\000bfn-Latn-TL", + "bfo\000bfo-Latn-BF", + "bfp\000bfp-Latn-CM", + "bfq\000bfq-Taml-IN", + "bfs\000bfs-Latn-CN", + "bft\000bft-Arab-PK", + "bfu\000bfu-Tibt-IN", + "bfw\000bfw-Orya-IN", + "bfx\000bfx-Latn-PH", + "bfy\000bfy-Deva-IN", + "bfz\000bfz-Deva-IN", + "bg\000bg-Cyrl-BG", + "bga\000bga-Latn-NG", + "bgb\000bgb-Latn-ID", + "bgc\000bgc-Deva-IN", + "bgd\000bgd-Deva-IN", + "bgf\000bgf-Latn-CM", + "bgg\000bgg-Latn-IN", + "bgi\000bgi-Latn-PH", + "bgj\000bgj-Latn-CM", + "bgn\000bgn-Arab-PK", + "bgo\000bgo-Latn-GN", + "bgp\000bgp-Arab-PK", + "bgq\000bgq-Deva-IN", + "bgr\000bgr-Latn-IN", + "bgs\000bgs-Latn-PH", + "bgt\000bgt-Latn-SB", + "bgu\000bgu-Latn-NG", + "bgv\000bgv-Latn-ID", + "bgw\000bgw-Deva-IN", + "bgx\000bgx-Grek-TR", + "bgy\000bgy-Latn-ID", + "bgz\000bgz-Latn-ID", + "bha\000bha-Deva-IN", + "bhb\000bhb-Deva-IN", + "bhc\000bhc-Latn-ID", + "bhd\000bhd-Deva-IN", + "bhe\000bhe-Arab-PK", + "bhf\000bhf-Latn-PG", + "bhg\000bhg-Latn-PG", + "bhh\000bhh-Cyrl-IL", + "bhi\000bhi-Deva-IN", + "bhj\000bhj-Deva-NP", + "bhl\000bhl-Latn-PG", + "bhm\000bhm-Arab-OM", + "bhn\000bhn-Syrc-GE", + "bho\000bho-Deva-IN", + "bhp\000bhp-Latn-ID", + "bhq\000bhq-Latn-ID", + "bhr\000bhr-Latn-MG", + "bhs\000bhs-Latn-CM", + "bht\000bht-Deva-IN", + "bhu\000bhu-Deva-IN", + "bhv\000bhv-Latn-ID", + "bhw\000bhw-Latn-ID", + "bhy\000bhy-Latn-CD", + "bhz\000bhz-Latn-ID", + "bi\000bi-Latn-VU", + "bia\000bia-Latn-AU", + "bib\000bib-Latn-BF", + "bid\000bid-Latn-TD", + "bie\000bie-Latn-PG", + "bif\000bif-Latn-GW", + "big\000big-Latn-PG", + "bik\000bik-Latn-PH", + "bil\000bil-Latn-NG", + "bim\000bim-Latn-GH", + "bin\000bin-Latn-NG", + "bio\000bio-Latn-PG", + "bip\000bip-Latn-CD", + "biq\000biq-Latn-PG", + "bir\000bir-Latn-PG", + "bit\000bit-Latn-PG", + "biu\000biu-Latn-IN", + "biv\000biv-Latn-GH", + "biw\000biw-Latn-CM", + "bix\000bix-Deva-IN", + "biy\000biy-Deva-IN", + "biz\000biz-Latn-CD", + "bja\000bja-Latn-CD", + "bjb\000bjb-Latn-AU", + "bjc\000bjc-Latn-PG", + "bjf\000bjf-Syrc-IL", + "bjg\000bjg-Latn-GW", + "bjh\000bjh-Latn-PG", + "bji\000bji-Latn-ET", + "bjj\000bjj-Deva-IN", + "bjk\000bjk-Latn-PG", + "bjl\000bjl-Latn-PG", + "bjm\000bjm-Arab-IQ", + "bjn\000bjn-Latn-ID", + "bjo\000bjo-Latn-CF", + "bjp\000bjp-Latn-PG", + "bjr\000bjr-Latn-PG", + "bjs\000bjs-Latn-BB", + "bjt\000bjt-Latn-SN", + "bju\000bju-Latn-CM", + "bjv\000bjv-Latn-TD", + "bjw\000bjw-Latn-CI", + "bjx\000bjx-Latn-PH", + "bjy\000bjy-Latn-AU", + "bjz\000bjz-Latn-PG", + "bka\000bka-Latn-NG", + "bkc\000bkc-Latn-CM", + "bkd\000bkd-Latn-PH", + "bkf\000bkf-Latn-CD", + "bkg\000bkg-Latn-CF", + "bkh\000bkh-Latn-CM", + "bki\000bki-Latn-VU", + "bkj\000bkj-Latn-CF", + "bkk\000bkk-Tibt-IN", + "bkl\000bkl-Latn-ID", + "bkm\000bkm-Latn-CM", + "bkn\000bkn-Latn-ID", + "bko\000bko-Latn-CM", + "bkp\000bkp-Latn-CD", + "bkq\000bkq-Latn-BR", + "bkr\000bkr-Latn-ID", + "bks\000bks-Latn-PH", + "bkt\000bkt-Latn-CD", + "bku\000bku-Latn-PH", + "bkv\000bkv-Latn-NG", + "bkw\000bkw-Latn-CG", + "bkx\000bkx-Latn-TL", + "bky\000bky-Latn-NG", + "bkz\000bkz-Latn-ID", + "bla\000bla-Latn-CA", + "blb\000blb-Latn-SB", + "blc\000blc-Latn-CA", + "bld\000bld-Latn-ID", + "ble\000ble-Latn-GW", + "blf\000blf-Latn-ID", + "blh\000blh-Latn-LR", + "bli\000bli-Latn-CD", + "blj\000blj-Latn-ID", + "blk\000blk-Mymr-MM", + "blm\000blm-Latn-SS", + "bln\000bln-Latn-PH", + "blo\000blo-Latn-BJ", + "blp\000blp-Latn-SB", + "blq\000blq-Latn-PG", + "blr\000blr-Latn-CN", + "bls\000bls-Latn-ID", + "blt\000blt-Tavt-VN", + "blv\000blv-Latn-AO", + "blw\000blw-Latn-PH", + "blx\000blx-Latn-PH", + "bly\000bly-Latn-BJ", + "blz\000blz-Latn-ID", + "bm\000bm-Latn-ML", + "bma\000bma-Latn-NG", + "bmb\000bmb-Latn-CD", + "bmc\000bmc-Latn-PG", + "bmd\000bmd-Latn-GN", + "bme\000bme-Latn-CF", + "bmf\000bmf-Latn-SL", + "bmg\000bmg-Latn-CD", + "bmh\000bmh-Latn-PG", + "bmi\000bmi-Latn-TD", + "bmj\000bmj-Deva-NP", + "bmk\000bmk-Latn-PG", + "bml\000bml-Latn-CD", + "bmm\000bmm-Latn-MG", + "bmn\000bmn-Latn-PG", + "bmo\000bmo-Latn-CM", + "bmp\000bmp-Latn-PG", + "bmq\000bmq-Latn-ML", + "bmr\000bmr-Latn-CO", + "bms\000bms-Latn-NE", + "bmu\000bmu-Latn-PG", + "bmv\000bmv-Latn-CM", + "bmw\000bmw-Latn-CG", + "bmx\000bmx-Latn-PG", + "bmz\000bmz-Latn-PG", + "bn\000bn-Beng-BD", + "bna\000bna-Latn-ID", + "bnb\000bnb-Latn-MY", + "bnc\000bnc-Latn-PH", + "bnd\000bnd-Latn-ID", + "bne\000bne-Latn-ID", + "bnf\000bnf-Latn-ID", + "bng\000bng-Latn-GQ", + "bni\000bni-Latn-CD", + "bnj\000bnj-Latn-PH", + "bnk\000bnk-Latn-VU", + "bnm\000bnm-Latn-GQ", + "bnn\000bnn-Latn-TW", + "bno\000bno-Latn-PH", + "bnp\000bnp-Latn-PG", + "bnq\000bnq-Latn-ID", + "bnr\000bnr-Latn-VU", + "bns\000bns-Deva-IN", + "bnu\000bnu-Latn-ID", + "bnv\000bnv-Latn-ID", + "bnw\000bnw-Latn-PG", + "bnx\000bnx-Latn-CD", + "bny\000bny-Latn-MY", + "bnz\000bnz-Latn-CM", + "bo\000bo-Tibt-CN", + "boa\000boa-Latn-PE", + "bob\000bob-Latn-KE", + "boe\000boe-Latn-CM", + "bof\000bof-Latn-BF", + "boh\000boh-Latn-CD", + "boj\000boj-Latn-PG", + "bok\000bok-Latn-CG", + "bol\000bol-Latn-NG", + "bom\000bom-Latn-NG", + "bon\000bon-Latn-PG", + "boo\000boo-Latn-ML", + "bop\000bop-Latn-PG", + "boq\000boq-Latn-PG", + "bor\000bor-Latn-BR", + "bot\000bot-Latn-SS", + "bou\000bou-Latn-TZ", + "bov\000bov-Latn-GH", + "bow\000bow-Latn-PG", + "box\000box-Latn-BF", + "boy\000boy-Latn-CF", + "boz\000boz-Latn-ML", + "bpa\000bpa-Latn-VU", + "bpc\000bpc-Latn-CM", + "bpd\000bpd-Latn-CF", + "bpe\000bpe-Latn-PG", + "bpg\000bpg-Latn-ID", + "bph\000bph-Cyrl-RU", + "bpi\000bpi-Latn-PG", + "bpj\000bpj-Latn-CD", + "bpk\000bpk-Latn-NC", + "bpl\000bpl-Latn-AU", + "bpm\000bpm-Latn-PG", + "bpo\000bpo-Latn-ID", + "bpp\000bpp-Latn-ID", + "bpq\000bpq-Latn-ID", + "bpr\000bpr-Latn-PH", + "bps\000bps-Latn-PH", + "bpt\000bpt-Latn-AU", + "bpu\000bpu-Latn-PG", + "bpv\000bpv-Latn-ID", + "bpw\000bpw-Latn-PG", + "bpx\000bpx-Deva-IN", + "bpy\000bpy-Beng-IN", + "bpz\000bpz-Latn-ID", + "bqa\000bqa-Latn-BJ", + "bqb\000bqb-Latn-ID", + "bqc\000bqc-Latn-BJ", + "bqd\000bqd-Latn-CM", + "bqf\000bqf-Latn-GN", + "bqg\000bqg-Latn-TG", + "bqi\000bqi-Arab-IR", + "bqj\000bqj-Latn-SN", + "bqk\000bqk-Latn-CF", + "bql\000bql-Latn-PG", + "bqm\000bqm-Latn-CM", + "bqo\000bqo-Latn-CM", + "bqp\000bqp-Latn-NG", + "bqq\000bqq-Latn-ID", + "bqr\000bqr-Latn-ID", + "bqs\000bqs-Latn-PG", + "bqt\000bqt-Latn-CM", + "bqu\000bqu-Latn-CD", + "bqv\000bqv-Latn-CI", + "bqw\000bqw-Latn-NG", + "bqx\000bqx-Latn-NG", + "bqz\000bqz-Latn-CM", + "br\000br-Latn-FR", + "bra\000bra-Deva-IN", + "brb\000brb-Khmr-KH", + "brc\000brc-Latn-GY", + "brd\000brd-Deva-NP", + "brf\000brf-Latn-CD", + "brg\000brg-Latn-BO", + "brh\000brh-Arab-PK", + "bri\000bri-Latn-CM", + "brj\000brj-Latn-VU", + "brk\000brk-Arab-SD", + "brl\000brl-Latn-BW", + "brm\000brm-Latn-CD", + "brn\000brn-Latn-CR", + "bro\000bro-Tibt-BT", + "brp\000brp-Latn-ID", + "brq\000brq-Latn-PG", + "brr\000brr-Latn-SB", + "brs\000brs-Latn-ID", + "brt\000brt-Latn-NG", + "bru\000bru-Latn-VN", + "brv\000brv-Laoo-LA", + "brw\000brw-Knda-IN", + "brx\000brx-Deva-IN", + "bry\000bry-Latn-PG", + "brz\000brz-Latn-PG", + "bs\000bs-Latn-BA", + "bsa\000bsa-Latn-ID", + "bsb\000bsb-Latn-BN", + "bsc\000bsc-Latn-SN", + "bse\000bse-Latn-CM", + "bsf\000bsf-Latn-NG", + "bsh\000bsh-Arab-AF", + "bsi\000bsi-Latn-CM", + "bsj\000bsj-Latn-NG", + "bsk\000bsk-Arab-PK", + "bsl\000bsl-Latn-NG", + "bsm\000bsm-Latn-ID", + "bsn\000bsn-Latn-CO", + "bso\000bso-Latn-TD", + "bsp\000bsp-Latn-GN", + "bsq\000bsq-Latn-LR", + "bsr\000bsr-Latn-NG", + "bss\000bss-Latn-CM", + "bst\000bst-Ethi-ET", + "bsu\000bsu-Latn-ID", + "bsv\000bsv-Latn-GN", + "bsw\000bsw-Latn-ET", + "bsx\000bsx-Latn-NG", + "bsy\000bsy-Latn-MY", + "bta\000bta-Latn-NG", + "btc\000btc-Latn-CM", + "btd\000btd-Batk-ID", + "bte\000bte-Latn-NG", + "btf\000btf-Latn-TD", + "btg\000btg-Latn-CI", + "bth\000bth-Latn-MY", + "bti\000bti-Latn-ID", + "btj\000btj-Latn-ID", + "btm\000btm-Batk-ID", + "btn\000btn-Latn-PH", + "bto\000bto-Latn-PH", + "btp\000btp-Latn-PG", + "btq\000btq-Latn-MY", + "btr\000btr-Latn-VU", + "bts\000bts-Latn-ID", + "btt\000btt-Latn-NG", + "btu\000btu-Latn-NG", + "btv\000btv-Deva-PK", + "btw\000btw-Latn-PH", + "btx\000btx-Latn-ID", + "bty\000bty-Latn-ID", + "btz\000btz-Latn-ID", + "bua\000bua-Cyrl-RU", + "bub\000bub-Latn-TD", + "buc\000buc-Latn-YT", + "bud\000bud-Latn-TG", + "bue\000bue-Latn-CA", + "buf\000buf-Latn-CD", + "bug\000bug-Latn-ID", + "buh\000buh-Latn-CN", + "bui\000bui-Latn-CG", + "buj\000buj-Latn-NG", + "buk\000buk-Latn-PG", + "bum\000bum-Latn-CM", + "bun\000bun-Latn-SL", + "buo\000buo-Latn-PG", + "bup\000bup-Latn-ID", + "buq\000buq-Latn-PG", + "bus\000bus-Latn-NG", + "but\000but-Latn-PG", + "buu\000buu-Latn-CD", + "buv\000buv-Latn-PG", + "buw\000buw-Latn-GA", + "bux\000bux-Latn-NG", + "buy\000buy-Latn-SL", + "buz\000buz-Latn-NG", + "bva\000bva-Latn-TD", + "bvb\000bvb-Latn-GQ", + "bvc\000bvc-Latn-SB", + "bvd\000bvd-Latn-SB", + "bve\000bve-Latn-ID", + "bvf\000bvf-Latn-TD", + "bvg\000bvg-Latn-CM", + "bvh\000bvh-Latn-NG", + "bvi\000bvi-Latn-SS", + "bvj\000bvj-Latn-NG", + "bvk\000bvk-Latn-ID", + "bvm\000bvm-Latn-CM", + "bvn\000bvn-Latn-PG", + "bvo\000bvo-Latn-TD", + "bvq\000bvq-Latn-CF", + "bvr\000bvr-Latn-AU", + "bvt\000bvt-Latn-ID", + "bvu\000bvu-Latn-ID", + "bvv\000bvv-Latn-VE", + "bvw\000bvw-Latn-NG", + "bvx\000bvx-Latn-CG", + "bvy\000bvy-Latn-PH", + "bvz\000bvz-Latn-ID", + "bwa\000bwa-Latn-NC", + "bwb\000bwb-Latn-FJ", + "bwc\000bwc-Latn-ZM", + "bwd\000bwd-Latn-PG", + "bwe\000bwe-Mymr-MM", + "bwf\000bwf-Latn-PG", + "bwg\000bwg-Latn-MZ", + "bwh\000bwh-Latn-CM", + "bwi\000bwi-Latn-VE", + "bwj\000bwj-Latn-BF", + "bwk\000bwk-Latn-PG", + "bwl\000bwl-Latn-CD", + "bwm\000bwm-Latn-PG", + "bwo\000bwo-Latn-ET", + "bwp\000bwp-Latn-ID", + "bwq\000bwq-Latn-BF", + "bwr\000bwr-Latn-NG", + "bws\000bws-Latn-CD", + "bwt\000bwt-Latn-CM", + "bwu\000bwu-Latn-GH", + "bww\000bww-Latn-CD", + "bwx\000bwx-Latn-CN", + "bwy\000bwy-Latn-BF", + "bwz\000bwz-Latn-CG", + "bxa\000bxa-Latn-SB", + "bxb\000bxb-Latn-SS", + "bxc\000bxc-Latn-GQ", + "bxf\000bxf-Latn-PG", + "bxg\000bxg-Latn-CD", + "bxh\000bxh-Latn-PG", + "bxi\000bxi-Latn-AU", + "bxj\000bxj-Latn-AU", + "bxl\000bxl-Latn-BF", + "bxm\000bxm-Cyrl-MN", + "bxn\000bxn-Latn-AU", + "bxo\000bxo-Latn-NG", + "bxp\000bxp-Latn-CM", + "bxq\000bxq-Latn-NG", + "bxs\000bxs-Latn-CM", + "bxu\000bxu-Mong-CN", + "bxv\000bxv-Latn-TD", + "bxw\000bxw-Latn-ML", + "bxz\000bxz-Latn-PG", + "bya\000bya-Latn-PH", + "byb\000byb-Latn-CM", + "byc\000byc-Latn-NG", + "byd\000byd-Latn-ID", + "bye\000bye-Latn-PG", + "byf\000byf-Latn-NG", + "byh\000byh-Deva-NP", + "byi\000byi-Latn-CD", + "byj\000byj-Latn-NG", + "byk\000byk-Latn-CN", + "byl\000byl-Latn-ID", + "bym\000bym-Latn-AU", + "byn\000byn-Ethi-ER", + "byp\000byp-Latn-NG", + "byr\000byr-Latn-PG", + "bys\000bys-Latn-NG", + "byv\000byv-Latn-CM", + "byw\000byw-Deva-NP", + "byx\000byx-Latn-PG", + "byz\000byz-Latn-PG", + "bza\000bza-Latn-LR", + "bzb\000bzb-Latn-ID", + "bzc\000bzc-Latn-MG", + "bzd\000bzd-Latn-CR", + "bze\000bze-Latn-ML", + "bzf\000bzf-Latn-PG", + "bzh\000bzh-Latn-PG", + "bzi\000bzi-Thai-TH", + "bzj\000bzj-Latn-BZ", + "bzk\000bzk-Latn-NI", + "bzl\000bzl-Latn-ID", + "bzm\000bzm-Latn-CD", + "bzn\000bzn-Latn-ID", + "bzo\000bzo-Latn-CD", + "bzp\000bzp-Latn-ID", + "bzq\000bzq-Latn-ID", + "bzr\000bzr-Latn-AU", + "bzt\000bzt-Latn-001", + "bzu\000bzu-Latn-ID", + "bzv\000bzv-Latn-CM", + "bzw\000bzw-Latn-NG", + "bzx\000bzx-Latn-ML", + "bzy\000bzy-Latn-NG", + "bzz\000bzz-Latn-NG", + "ca\000ca-Latn-ES", + "caa\000caa-Latn-GT", + "cab\000cab-Latn-HN", + "cac\000cac-Latn-GT", + "cad\000cad-Latn-US", + "cae\000cae-Latn-SN", + "caf\000caf-Latn-CA", + "cag\000cag-Latn-PY", + "cah\000cah-Latn-PE", + "caj\000caj-Latn-BO", + "cak\000cak-Latn-GT", + "cal\000cal-Latn-MP", + "cam\000cam-Latn-NC", + "can\000can-Latn-PG", + "cao\000cao-Latn-BO", + "cap\000cap-Latn-BO", + "caq\000caq-Latn-IN", + "car\000car-Latn-VE", + "cas\000cas-Latn-BO", + "cav\000cav-Latn-BO", + "caw\000caw-Latn-BO", + "cax\000cax-Latn-BO", + "cay\000cay-Latn-CA", + "caz\000caz-Latn-BO", + "cbb\000cbb-Latn-CO", + "cbc\000cbc-Latn-CO", + "cbd\000cbd-Latn-CO", + "cbg\000cbg-Latn-CO", + "cbi\000cbi-Latn-EC", + "cbj\000cbj-Latn-BJ", + "cbk\000cbk-Latn-PH", + "cbl\000cbl-Latn-MM", + "cbn\000cbn-Thai-TH", + "cbo\000cbo-Latn-NG", + "cbq\000cbq-Latn-NG", + "cbr\000cbr-Latn-PE", + "cbs\000cbs-Latn-PE", + "cbt\000cbt-Latn-PE", + "cbu\000cbu-Latn-PE", + "cbv\000cbv-Latn-CO", + "cbw\000cbw-Latn-PH", + "cby\000cby-Latn-CO", + "ccc\000ccc-Latn-PE", + "ccd\000ccd-Latn-BR", + "cce\000cce-Latn-MZ", + "ccg\000ccg-Latn-NG", + "cch\000cch-Latn-NG", + "ccj\000ccj-Latn-GW", + "ccl\000ccl-Latn-TZ", + "ccm\000ccm-Latn-MY", + "cco\000cco-Latn-MX", + "ccp\000ccp-Cakm-BD", + "ccr\000ccr-Latn-SV", + "cde\000cde-Telu-IN", + "cdf\000cdf-Latn-IN", + "cdh\000cdh-Deva-IN", + "cdi\000cdi-Gujr-IN", + "cdj\000cdj-Deva-IN", + "cdm\000cdm-Deva-NP", + "cdn\000cdn-Deva-IN", + "cdo\000cdo-Hans-CN", + "cdr\000cdr-Latn-NG", + "cdz\000cdz-Beng-IN", + "ce\000ce-Cyrl-RU", + "cea\000cea-Latn-US", + "ceb\000ceb-Latn-PH", + "ceg\000ceg-Latn-PY", + "cek\000cek-Latn-MM", + "cen\000cen-Latn-NG", + "cet\000cet-Latn-NG", + "cey\000cey-Latn-MM", + "cfa\000cfa-Latn-NG", + "cfd\000cfd-Latn-NG", + "cfg\000cfg-Latn-NG", + "cfm\000cfm-Latn-MM", + "cga\000cga-Latn-PG", + "cgc\000cgc-Latn-PH", + "cgg\000cgg-Latn-UG", + "cgk\000cgk-Tibt-BT", + "ch\000ch-Latn-GU", + "chb\000chb-Latn-CO", + "chd\000chd-Latn-MX", + "chf\000chf-Latn-MX", + "chg\000chg-Arab-TM", + "chh\000chh-Latn-US", + "chj\000chj-Latn-MX", + "chk\000chk-Latn-FM", + "chl\000chl-Latn-US", + "chm\000chm-Cyrl-RU", + "chn\000chn-Latn-US", + "cho\000cho-Latn-US", + "chp\000chp-Latn-CA", + "chq\000chq-Latn-MX", + "chr\000chr-Cher-US", + "cht\000cht-Latn-PE", + "chw\000chw-Latn-MZ", + "chx\000chx-Deva-NP", + "chy\000chy-Latn-US", + "chz\000chz-Latn-MX", + "cia\000cia-Latn-ID", + "cib\000cib-Latn-BJ", + "cic\000cic-Latn-US", + "cie\000cie-Latn-NG", + "cih\000cih-Deva-IN", + "cim\000cim-Latn-IT", + "cin\000cin-Latn-BR", + "cip\000cip-Latn-MX", + "cir\000cir-Latn-NC", + "ciw\000ciw-Latn-US", + "ciy\000ciy-Latn-VE", + "cja\000cja-Arab-KH", + "cje\000cje-Latn-VN", + "cjh\000cjh-Latn-US", + "cji\000cji-Cyrl-RU", + "cjk\000cjk-Latn-AO", + "cjm\000cjm-Cham-VN", + "cjn\000cjn-Latn-PG", + "cjo\000cjo-Latn-PE", + "cjp\000cjp-Latn-CR", + "cjs\000cjs-Latn-RU", + "cjv\000cjv-Latn-PG", + "cjy\000cjy-Hans-CN", + "ckb\000ckb-Arab-IQ", + "ckl\000ckl-Latn-NG", + "ckm\000ckm-Latn-HR", + "ckn\000ckn-Latn-MM", + "cko\000cko-Latn-GH", + "ckq\000ckq-Latn-TD", + "ckr\000ckr-Latn-PG", + "cks\000cks-Latn-NC", + "ckt\000ckt-Cyrl-RU", + "cku\000cku-Latn-US", + "ckv\000ckv-Latn-TW", + "ckx\000ckx-Latn-CM", + "cky\000cky-Latn-NG", + "ckz\000ckz-Latn-GT", + "cla\000cla-Latn-NG", + "clc\000clc-Latn-CA", + "cle\000cle-Latn-MX", + "clh\000clh-Arab-PK", + "cli\000cli-Latn-GH", + "clj\000clj-Latn-MM", + "clk\000clk-Latn-IN", + "cll\000cll-Latn-GH", + "clm\000clm-Latn-US", + "clo\000clo-Latn-MX", + "clt\000clt-Latn-MM", + "clu\000clu-Latn-PH", + "clw\000clw-Cyrl-RU", + "cly\000cly-Latn-MX", + "cma\000cma-Latn-VN", + "cme\000cme-Latn-BF", + "cmg\000cmg-Soyo-MN", + "cmi\000cmi-Latn-CO", + "cml\000cml-Latn-ID", + "cmo\000cmo-Latn-VN", + "cmr\000cmr-Latn-MM", + "cms\000cms-Latn-IT", + "cmt\000cmt-Latn-ZA", + "cna\000cna-Tibt-IN", + "cnb\000cnb-Latn-MM", + "cnc\000cnc-Latn-VN", + "cng\000cng-Latn-CN", + "cnh\000cnh-Latn-MM", + "cni\000cni-Latn-PE", + "cnk\000cnk-Latn-MM", + "cnl\000cnl-Latn-MX", + "cnp\000cnp-Hans-CN", + "cnq\000cnq-Latn-CM", + "cns\000cns-Latn-ID", + "cnt\000cnt-Latn-MX", + "cnw\000cnw-Latn-MM", + "cnx\000cnx-Latn-GB", + "co\000co-Latn-FR", + "coa\000coa-Latn-AU", + "cob\000cob-Latn-MX", + "coc\000coc-Latn-MX", + "cod\000cod-Latn-PE", + "coe\000coe-Latn-CO", + "cof\000cof-Latn-EC", + "cog\000cog-Thai-TH", + "coh\000coh-Latn-KE", + "coj\000coj-Latn-MX", + "cok\000cok-Latn-MX", + "col\000col-Latn-US", + "com\000com-Latn-US", + "coo\000coo-Latn-CA", + "cop\000cop-Copt-EG", + "coq\000coq-Latn-US", + "cot\000cot-Latn-PE", + "cou\000cou-Latn-SN", + "cox\000cox-Latn-PE", + "coz\000coz-Latn-MX", + "cpa\000cpa-Latn-MX", + "cpb\000cpb-Latn-PE", + "cpc\000cpc-Latn-PE", + "cpg\000cpg-Grek-GR", + "cpi\000cpi-Latn-NR", + "cpn\000cpn-Latn-GH", + "cpo\000cpo-Latn-BF", + "cps\000cps-Latn-PH", + "cpu\000cpu-Latn-PE", + "cpx\000cpx-Latn-CN", + "cpy\000cpy-Latn-PE", + "cqd\000cqd-Latn-CN", + "cr\000cr-Cans-CA", + "cra\000cra-Latn-ET", + "crb\000crb-Latn-VC", + "crc\000crc-Latn-VU", + "crd\000crd-Latn-US", + "crf\000crf-Latn-CO", + "crg\000crg-Latn-CA", + "crh\000crh-Cyrl-UA", + "cri\000cri-Latn-ST", + "crj\000crj-Cans-CA", + "crk\000crk-Cans-CA", + "crl\000crl-Cans-CA", + "crm\000crm-Cans-CA", + "crn\000crn-Latn-MX", + "cro\000cro-Latn-US", + "crq\000crq-Latn-AR", + "crs\000crs-Latn-SC", + "crt\000crt-Latn-AR", + "crv\000crv-Latn-IN", + "crw\000crw-Latn-VN", + "crx\000crx-Latn-CA", + "cry\000cry-Latn-NG", + "crz\000crz-Latn-US", + "cs\000cs-Latn-CZ", + "csa\000csa-Latn-MX", + "csb\000csb-Latn-PL", + "csh\000csh-Mymr-MM", + "csj\000csj-Latn-MM", + "csk\000csk-Latn-SN", + "csm\000csm-Latn-US", + "cso\000cso-Latn-MX", + "csp\000csp-Hans-CN", + "css\000css-Latn-US", + "cst\000cst-Latn-US", + "csv\000csv-Latn-MM", + "csw\000csw-Cans-CA", + "csy\000csy-Latn-MM", + "csz\000csz-Latn-US", + "cta\000cta-Latn-MX", + "ctc\000ctc-Latn-US", + "ctd\000ctd-Pauc-MM", + "cte\000cte-Latn-MX", + "ctg\000ctg-Beng-BD", + "cth\000cth-Latn-MM", + "ctl\000ctl-Latn-MX", + "ctm\000ctm-Latn-US", + "ctn\000ctn-Deva-NP", + "cto\000cto-Latn-CO", + "ctp\000ctp-Latn-MX", + "cts\000cts-Latn-PH", + "ctt\000ctt-Taml-IN", + "ctu\000ctu-Latn-MX", + "cty\000cty-Taml-IN", + "ctz\000ctz-Latn-MX", + "cu\000cu-Cyrl-RU", + "cu-Glag\000cu-Glag-BG", + "cua\000cua-Latn-VN", + "cub\000cub-Latn-CO", + "cuc\000cuc-Latn-MX", + "cuh\000cuh-Latn-KE", + "cui\000cui-Latn-CO", + "cuj\000cuj-Latn-PE", + "cuk\000cuk-Latn-PA", + "cul\000cul-Latn-BR", + "cuo\000cuo-Latn-VE", + "cup\000cup-Latn-US", + "cut\000cut-Latn-MX", + "cuu\000cuu-Lana-CN", + "cuv\000cuv-Latn-CM", + "cux\000cux-Latn-MX", + "cuy\000cuy-Latn-MX", + "cv\000cv-Cyrl-RU", + "cvg\000cvg-Latn-IN", + "cvn\000cvn-Latn-MX", + "cwa\000cwa-Latn-TZ", + "cwb\000cwb-Latn-MZ", + "cwe\000cwe-Latn-TZ", + "cwg\000cwg-Latn-MY", + "cwt\000cwt-Latn-SN", + "cxh\000cxh-Latn-NG", + "cy\000cy-Latn-GB", + "cya\000cya-Latn-MX", + "cyb\000cyb-Latn-BO", + "cyo\000cyo-Latn-PH", + "czh\000czh-Hans-CN", + "czk\000czk-Hebr-CZ", + "czn\000czn-Latn-MX", + "czt\000czt-Latn-MM", + "da\000da-Latn-DK", + "daa\000daa-Latn-TD", + "dac\000dac-Latn-PG", + "dad\000dad-Latn-PG", + "dae\000dae-Latn-CM", + "dag\000dag-Latn-GH", + "dah\000dah-Latn-PG", + "dai\000dai-Latn-TD", + "daj\000daj-Latn-SD", + "dak\000dak-Latn-US", + "dal\000dal-Latn-KE", + "dam\000dam-Latn-NG", + "dao\000dao-Latn-MM", + "daq\000daq-Deva-IN", + "dar\000dar-Cyrl-RU", + "das\000das-Latn-CI", + "dau\000dau-Latn-TD", + "dav\000dav-Latn-KE", + "daw\000daw-Latn-PH", + "dax\000dax-Latn-AU", + "daz\000daz-Latn-ID", + "dba\000dba-Latn-ML", + "dbb\000dbb-Latn-NG", + "dbd\000dbd-Latn-NG", + "dbe\000dbe-Latn-ID", + "dbf\000dbf-Latn-ID", + "dbg\000dbg-Latn-ML", + "dbi\000dbi-Latn-NG", + "dbj\000dbj-Latn-MY", + "dbl\000dbl-Latn-AU", + "dbm\000dbm-Latn-NG", + "dbn\000dbn-Latn-ID", + "dbo\000dbo-Latn-NG", + "dbp\000dbp-Latn-NG", + "dbq\000dbq-Latn-CM", + "dbt\000dbt-Latn-ML", + "dbu\000dbu-Latn-ML", + "dbv\000dbv-Latn-NG", + "dbw\000dbw-Latn-ML", + "dby\000dby-Latn-PG", + "dcc\000dcc-Arab-IN", + "dcr\000dcr-Latn-VI", + "dda\000dda-Latn-AU", + "ddd\000ddd-Latn-SS", + "dde\000dde-Latn-CG", + "ddg\000ddg-Latn-TL", + "ddi\000ddi-Latn-PG", + "ddj\000ddj-Latn-AU", + "ddn\000ddn-Latn-BJ", + "ddo\000ddo-Cyrl-RU", + "ddr\000ddr-Latn-AU", + "dds\000dds-Latn-ML", + "ddw\000ddw-Latn-ID", + "de\000de-Latn-DE", + "dec\000dec-Latn-SD", + "ded\000ded-Latn-PG", + "dee\000dee-Latn-LR", + "def\000def-Arab-IR", + "deg\000deg-Latn-NG", + "deh\000deh-Arab-PK", + "dei\000dei-Latn-ID", + "del\000del-Latn-US", + "dem\000dem-Latn-ID", + "den\000den-Latn-CA", + "deq\000deq-Latn-CF", + "der\000der-Beng-IN", + "des\000des-Latn-BR", + "dev\000dev-Latn-PG", + "dez\000dez-Latn-CD", + "dga\000dga-Latn-GH", + "dgb\000dgb-Latn-ML", + "dgc\000dgc-Latn-PH", + "dgd\000dgd-Latn-BF", + "dge\000dge-Latn-PG", + "dgg\000dgg-Latn-PG", + "dgh\000dgh-Latn-NG", + "dgi\000dgi-Latn-BF", + "dgk\000dgk-Latn-CF", + "dgl\000dgl-Arab-SD", + "dgn\000dgn-Latn-AU", + "dgr\000dgr-Latn-CA", + "dgs\000dgs-Latn-BF", + "dgt\000dgt-Latn-AU", + "dgw\000dgw-Latn-AU", + "dgx\000dgx-Latn-PG", + "dgz\000dgz-Latn-PG", + "dhg\000dhg-Latn-AU", + "dhi\000dhi-Deva-NP", + "dhl\000dhl-Latn-AU", + "dhm\000dhm-Latn-AO", + "dhn\000dhn-Gujr-IN", + "dho\000dho-Gujr-IN", + "dhr\000dhr-Latn-AU", + "dhs\000dhs-Latn-TZ", + "dhu\000dhu-Latn-AU", + "dhv\000dhv-Latn-NC", + "dhw\000dhw-Deva-NP", + "dhx\000dhx-Latn-AU", + "dia\000dia-Latn-PG", + "dib\000dib-Latn-SS", + "dic\000dic-Latn-CI", + "did\000did-Latn-SS", + "dif\000dif-Latn-AU", + "dig\000dig-Latn-KE", + "dih\000dih-Latn-MX", + "dii\000dii-Latn-CM", + "dij\000dij-Latn-ID", + "dil\000dil-Latn-SD", + "din\000din-Latn-SS", + "dio\000dio-Latn-NG", + "dip\000dip-Latn-SS", + "dir\000dir-Latn-NG", + "dis\000dis-Latn-IN", + "diu\000diu-Latn-NA", + "diw\000diw-Latn-SS", + "dix\000dix-Latn-VU", + "diy\000diy-Latn-ID", + "diz\000diz-Latn-CD", + "dja\000dja-Latn-AU", + "djb\000djb-Latn-AU", + "djc\000djc-Latn-TD", + "djd\000djd-Latn-AU", + "dje\000dje-Latn-NE", + "djf\000djf-Latn-AU", + "dji\000dji-Latn-AU", + "djj\000djj-Latn-AU", + "djk\000djk-Latn-SR", + "djm\000djm-Latn-ML", + "djn\000djn-Latn-AU", + "djo\000djo-Latn-ID", + "djr\000djr-Latn-AU", + "dju\000dju-Latn-PG", + "djw\000djw-Latn-AU", + "dka\000dka-Tibt-BT", + "dkg\000dkg-Latn-NG", + "dkk\000dkk-Latn-ID", + "dkr\000dkr-Latn-MY", + "dks\000dks-Latn-SS", + "dkx\000dkx-Latn-CM", + "dlg\000dlg-Cyrl-RU", + "dlm\000dlm-Latn-HR", + "dln\000dln-Latn-IN", + "dma\000dma-Latn-GA", + "dmb\000dmb-Latn-ML", + "dmc\000dmc-Latn-PG", + "dmd\000dmd-Latn-AU", + "dme\000dme-Latn-CM", + "dmf\000dmf-Medf-NG", + "dmg\000dmg-Latn-MY", + "dmk\000dmk-Arab-PK", + "dml\000dml-Arab-PK", + "dmm\000dmm-Latn-CM", + "dmo\000dmo-Latn-CM", + "dmr\000dmr-Latn-ID", + "dms\000dms-Latn-ID", + "dmu\000dmu-Latn-ID", + "dmv\000dmv-Latn-MY", + "dmw\000dmw-Latn-AU", + "dmx\000dmx-Latn-MZ", + "dmy\000dmy-Latn-ID", + "dna\000dna-Latn-ID", + "dnd\000dnd-Latn-PG", + "dne\000dne-Latn-TZ", + "dng\000dng-Cyrl-KG", + "dni\000dni-Latn-ID", + "dnj\000dnj-Latn-CI", + "dnk\000dnk-Latn-ID", + "dnn\000dnn-Latn-BF", + "dno\000dno-Latn-CD", + "dnr\000dnr-Latn-PG", + "dnt\000dnt-Latn-ID", + "dnu\000dnu-Mymr-MM", + "dnv\000dnv-Mymr-MM", + "dnw\000dnw-Latn-ID", + "dny\000dny-Latn-BR", + "doa\000doa-Latn-PG", + "dob\000dob-Latn-PG", + "doc\000doc-Latn-CN", + "doe\000doe-Latn-TZ", + "dof\000dof-Latn-PG", + "doh\000doh-Latn-NG", + "doi\000doi-Deva-IN", + "dok\000dok-Latn-ID", + "dol\000dol-Latn-PG", + "don\000don-Latn-PG", + "doo\000doo-Latn-CD", + "dop\000dop-Latn-BJ", + "dor\000dor-Latn-SB", + "dos\000dos-Latn-BF", + "dot\000dot-Latn-NG", + "dov\000dov-Latn-ZW", + "dow\000dow-Latn-CM", + "dox\000dox-Ethi-ET", + "doy\000doy-Latn-GH", + "dpp\000dpp-Latn-MY", + "drc\000drc-Latn-PT", + "dre\000dre-Tibt-NP", + "drg\000drg-Latn-MY", + "dri\000dri-Latn-NG", + "drl\000drl-Latn-AU", + "drn\000drn-Latn-ID", + "dro\000dro-Latn-MY", + "drq\000drq-Deva-NP", + "drs\000drs-Ethi-ET", + "drt\000drt-Latn-NL", + "dru\000dru-Latn-TW", + "dry\000dry-Deva-NP", + "dsb\000dsb-Latn-DE", + "dsh\000dsh-Latn-KE", + "dsi\000dsi-Latn-TD", + "dsk\000dsk-Latn-NG", + "dsn\000dsn-Latn-ID", + "dso\000dso-Orya-IN", + "dsq\000dsq-Latn-ML", + "dta\000dta-Latn-CN", + "dtb\000dtb-Latn-MY", + "dtd\000dtd-Latn-CA", + "dth\000dth-Latn-AU", + "dti\000dti-Latn-ML", + "dtk\000dtk-Latn-ML", + "dtm\000dtm-Latn-ML", + "dto\000dto-Latn-ML", + "dtp\000dtp-Latn-MY", + "dtr\000dtr-Latn-MY", + "dts\000dts-Latn-ML", + "dtt\000dtt-Latn-ML", + "dtu\000dtu-Latn-ML", + "dty\000dty-Deva-NP", + "dua\000dua-Latn-CM", + "dub\000dub-Gujr-IN", + "duc\000duc-Latn-PG", + "due\000due-Latn-PH", + "duf\000duf-Latn-NC", + "dug\000dug-Latn-KE", + "duh\000duh-Deva-IN", + "dui\000dui-Latn-PG", + "duk\000duk-Latn-PG", + "dul\000dul-Latn-PH", + "dum\000dum-Latn-NL", + "dun\000dun-Latn-ID", + "duo\000duo-Latn-PH", + "dup\000dup-Latn-ID", + "duq\000duq-Latn-ID", + "dur\000dur-Latn-CM", + "dus\000dus-Deva-NP", + "duu\000duu-Latn-CN", + "duv\000duv-Latn-ID", + "duw\000duw-Latn-ID", + "dux\000dux-Latn-ML", + "duy\000duy-Latn-PH", + "duz\000duz-Latn-CM", + "dv\000dv-Thaa-MV", + "dva\000dva-Latn-PG", + "dwa\000dwa-Latn-NG", + "dwk\000dwk-Orya-IN", + "dwr\000dwr-Latn-ET", + "dws\000dws-Latn-001", + "dwu\000dwu-Latn-AU", + "dww\000dww-Latn-PG", + "dwy\000dwy-Latn-AU", + "dwz\000dwz-Deva-NP", + "dya\000dya-Latn-BF", + "dyb\000dyb-Latn-AU", + "dyd\000dyd-Latn-AU", + "dyg\000dyg-Latn-PH", + "dyi\000dyi-Latn-CI", + "dym\000dym-Latn-ML", + "dyn\000dyn-Latn-AU", + "dyo\000dyo-Latn-SN", + "dyr\000dyr-Latn-NG", + "dyu\000dyu-Latn-BF", + "dyy\000dyy-Latn-AU", + "dz\000dz-Tibt-BT", + "dza\000dza-Latn-NG", + "dzd\000dzd-Latn-NG", + "dze\000dze-Latn-AU", + "dzg\000dzg-Latn-TD", + "dzl\000dzl-Tibt-BT", + "dzn\000dzn-Latn-CD", + "eaa\000eaa-Latn-AU", + "ebc\000ebc-Latn-ID", + "ebg\000ebg-Latn-NG", + "ebk\000ebk-Latn-PH", + "ebo\000ebo-Latn-CG", + "ebr\000ebr-Latn-CI", + "ebu\000ebu-Latn-KE", + "ecr\000ecr-Grek-GR", + "ecy\000ecy-Cprt-CY", + "ee\000ee-Latn-GH", + "efa\000efa-Latn-NG", + "efe\000efe-Latn-CD", + "efi\000efi-Latn-NG", + "ega\000ega-Latn-CI", + "egl\000egl-Latn-IT", + "egm\000egm-Latn-TZ", + "ego\000ego-Latn-NG", + "egy\000egy-Egyp-EG", + "ehu\000ehu-Latn-NG", + "eip\000eip-Latn-ID", + "eit\000eit-Latn-PG", + "eiv\000eiv-Latn-PG", + "eja\000eja-Latn-GW", + "eka\000eka-Latn-NG", + "eke\000eke-Latn-NG", + "ekg\000ekg-Latn-ID", + "eki\000eki-Latn-NG", + "ekl\000ekl-Latn-BD", + "ekm\000ekm-Latn-CM", + "eko\000eko-Latn-MZ", + "ekp\000ekp-Latn-NG", + "ekr\000ekr-Latn-NG", + "eky\000eky-Kali-MM", + "el\000el-Grek-GR", + "ele\000ele-Latn-PG", + "elk\000elk-Latn-PG", + "elm\000elm-Latn-NG", + "elo\000elo-Latn-KE", + "elu\000elu-Latn-PG", + "ema\000ema-Latn-NG", + "emb\000emb-Latn-ID", + "eme\000eme-Latn-GF", + "emg\000emg-Deva-NP", + "emi\000emi-Latn-PG", + "emm\000emm-Latn-MX", + "emn\000emn-Latn-CM", + "emp\000emp-Latn-PA", + "ems\000ems-Latn-US", + "emu\000emu-Deva-IN", + "emw\000emw-Latn-ID", + "emx\000emx-Latn-FR", + "emz\000emz-Latn-CM", + "en\000en-Latn-US", + "en-Shaw\000en-Shaw-GB", + "ena\000ena-Latn-PG", + "enb\000enb-Latn-KE", + "enc\000enc-Latn-VN", + "end\000end-Latn-ID", + "enf\000enf-Cyrl-RU", + "enh\000enh-Cyrl-RU", + "enl\000enl-Latn-PY", + "enm\000enm-Latn-GB", + "enn\000enn-Latn-NG", + "eno\000eno-Latn-ID", + "enq\000enq-Latn-PG", + "enr\000enr-Latn-ID", + "env\000env-Latn-NG", + "enw\000enw-Latn-NG", + "enx\000enx-Latn-PY", + "eo\000eo-Latn-001", + "eot\000eot-Latn-CI", + "epi\000epi-Latn-NG", + "era\000era-Taml-IN", + "erg\000erg-Latn-VU", + "erh\000erh-Latn-NG", + "eri\000eri-Latn-PG", + "erk\000erk-Latn-VU", + "err\000err-Latn-AU", + "ers\000ers-Latn-CN", + "ert\000ert-Latn-ID", + "erw\000erw-Latn-ID", + "es\000es-Latn-ES", + "ese\000ese-Latn-BO", + "esg\000esg-Gonm-IN", + "esh\000esh-Arab-IR", + "esi\000esi-Latn-US", + "esm\000esm-Latn-CI", + "ess\000ess-Latn-US", + "esu\000esu-Latn-US", + "esy\000esy-Latn-PH", + "et\000et-Latn-EE", + "etb\000etb-Latn-NG", + "etn\000etn-Latn-VU", + "eto\000eto-Latn-CM", + "etr\000etr-Latn-PG", + "ets\000ets-Latn-NG", + "ett\000ett-Ital-IT", + "etu\000etu-Latn-NG", + "etx\000etx-Latn-NG", + "etz\000etz-Latn-ID", + "eu\000eu-Latn-ES", + "eud\000eud-Latn-MX", + "eve\000eve-Cyrl-RU", + "evh\000evh-Latn-NG", + "evn\000evn-Cyrl-RU", + "ewo\000ewo-Latn-CM", + "ext\000ext-Latn-ES", + "eya\000eya-Latn-US", + "eyo\000eyo-Latn-KE", + "eza\000eza-Latn-NG", + "eze\000eze-Latn-NG", + "fa\000fa-Arab-IR", + "faa\000faa-Latn-PG", + "fab\000fab-Latn-GQ", + "fad\000fad-Latn-PG", + "faf\000faf-Latn-SB", + "fag\000fag-Latn-PG", + "fah\000fah-Latn-NG", + "fai\000fai-Latn-PG", + "faj\000faj-Latn-PG", + "fak\000fak-Latn-CM", + "fal\000fal-Latn-CM", + "fam\000fam-Latn-NG", + "fan\000fan-Latn-GQ", + "fap\000fap-Latn-SN", + "far\000far-Latn-SB", + "fau\000fau-Latn-ID", + "fax\000fax-Latn-ES", + "fay\000fay-Arab-IR", + "faz\000faz-Arab-IR", + "fbl\000fbl-Latn-PH", + "fer\000fer-Latn-SS", + "ff\000ff-Latn-SN", + "ff-Adlm\000ff-Adlm-GN", + "ffi\000ffi-Latn-PG", + "ffm\000ffm-Latn-ML", + "fgr\000fgr-Latn-TD", + "fi\000fi-Latn-FI", + "fia\000fia-Arab-SD", + "fie\000fie-Latn-NG", + "fif\000fif-Latn-SA", + "fil\000fil-Latn-PH", + "fip\000fip-Latn-TZ", + "fir\000fir-Latn-NG", + "fit\000fit-Latn-SE", + "fiw\000fiw-Latn-PG", + "fj\000fj-Latn-FJ", + "fkk\000fkk-Latn-NG", + "fkv\000fkv-Latn-NO", + "fla\000fla-Latn-US", + "flh\000flh-Latn-ID", + "fli\000fli-Latn-NG", + "fll\000fll-Latn-CM", + "fln\000fln-Latn-AU", + "flr\000flr-Latn-CD", + "fly\000fly-Latn-ZA", + "fmp\000fmp-Latn-CM", + "fmu\000fmu-Deva-IN", + "fnb\000fnb-Latn-VU", + "fng\000fng-Latn-ZA", + "fni\000fni-Latn-TD", + "fo\000fo-Latn-FO", + "fod\000fod-Latn-BJ", + "foi\000foi-Latn-PG", + "fom\000fom-Latn-CD", + "fon\000fon-Latn-BJ", + "for\000for-Latn-PG", + "fos\000fos-Latn-TW", + "fpe\000fpe-Latn-GQ", + "fqs\000fqs-Latn-PG", + "fr\000fr-Latn-FR", + "frc\000frc-Latn-US", + "frd\000frd-Latn-ID", + "frk\000frk-Latn-DE", + "frm\000frm-Latn-FR", + "fro\000fro-Latn-FR", + "frp\000frp-Latn-FR", + "frq\000frq-Latn-PG", + "frr\000frr-Latn-DE", + "frs\000frs-Latn-DE", + "frt\000frt-Latn-VU", + "fub\000fub-Arab-CM", + "fud\000fud-Latn-WF", + "fue\000fue-Latn-BJ", + "fuf\000fuf-Latn-GN", + "fuh\000fuh-Latn-NE", + "fui\000fui-Latn-TD", + "fum\000fum-Latn-NG", + "fun\000fun-Latn-BR", + "fuq\000fuq-Latn-NE", + "fur\000fur-Latn-IT", + "fut\000fut-Latn-VU", + "fuu\000fuu-Latn-CD", + "fuv\000fuv-Latn-NG", + "fuy\000fuy-Latn-PG", + "fvr\000fvr-Latn-SD", + "fwa\000fwa-Latn-NC", + "fwe\000fwe-Latn-NA", + "fy\000fy-Latn-NL", + "ga\000ga-Latn-IE", + "gaa\000gaa-Latn-GH", + "gab\000gab-Latn-TD", + "gac\000gac-Latn-IN", + "gad\000gad-Latn-PH", + "gae\000gae-Latn-VE", + "gaf\000gaf-Latn-PG", + "gag\000gag-Latn-MD", + "gah\000gah-Latn-PG", + "gai\000gai-Latn-PG", + "gaj\000gaj-Latn-PG", + "gak\000gak-Latn-ID", + "gal\000gal-Latn-TL", + "gam\000gam-Latn-PG", + "gan\000gan-Hans-CN", + "gao\000gao-Latn-PG", + "gap\000gap-Latn-PG", + "gaq\000gaq-Orya-IN", + "gar\000gar-Latn-PG", + "gas\000gas-Gujr-IN", + "gat\000gat-Latn-PG", + "gau\000gau-Telu-IN", + "gaw\000gaw-Latn-PG", + "gax\000gax-Latn-ET", + "gay\000gay-Latn-ID", + "gba\000gba-Latn-CF", + "gbb\000gbb-Latn-AU", + "gbd\000gbd-Latn-AU", + "gbe\000gbe-Latn-PG", + "gbf\000gbf-Latn-PG", + "gbg\000gbg-Latn-CF", + "gbh\000gbh-Latn-BJ", + "gbi\000gbi-Latn-ID", + "gbj\000gbj-Orya-IN", + "gbk\000gbk-Deva-IN", + "gbl\000gbl-Gujr-IN", + "gbm\000gbm-Deva-IN", + "gbn\000gbn-Latn-SS", + "gbp\000gbp-Latn-CF", + "gbq\000gbq-Latn-CF", + "gbr\000gbr-Latn-NG", + "gbs\000gbs-Latn-BJ", + "gbu\000gbu-Latn-AU", + "gbv\000gbv-Latn-CF", + "gbw\000gbw-Latn-AU", + "gbx\000gbx-Latn-BJ", + "gby\000gby-Latn-NG", + "gbz\000gbz-Arab-IR", + "gcc\000gcc-Latn-PG", + "gcd\000gcd-Latn-AU", + "gcf\000gcf-Latn-GP", + "gcl\000gcl-Latn-GD", + "gcn\000gcn-Latn-PG", + "gcr\000gcr-Latn-GF", + "gct\000gct-Latn-VE", + "gd\000gd-Latn-GB", + "gdb\000gdb-Orya-IN", + "gdc\000gdc-Latn-AU", + "gdd\000gdd-Latn-PG", + "gde\000gde-Latn-NG", + "gdf\000gdf-Latn-NG", + "gdg\000gdg-Latn-PH", + "gdh\000gdh-Latn-AU", + "gdi\000gdi-Latn-CF", + "gdj\000gdj-Latn-AU", + "gdk\000gdk-Latn-TD", + "gdl\000gdl-Latn-ET", + "gdm\000gdm-Latn-TD", + "gdn\000gdn-Latn-PG", + "gdo\000gdo-Cyrl-RU", + "gdq\000gdq-Latn-YE", + "gdr\000gdr-Latn-PG", + "gdt\000gdt-Latn-AU", + "gdu\000gdu-Latn-NG", + "gdx\000gdx-Deva-IN", + "gea\000gea-Latn-NG", + "geb\000geb-Latn-PG", + "gec\000gec-Latn-LR", + "ged\000ged-Latn-NG", + "gef\000gef-Latn-ID", + "geg\000geg-Latn-NG", + "geh\000geh-Latn-CA", + "gei\000gei-Latn-ID", + "gej\000gej-Latn-TG", + "gek\000gek-Latn-NG", + "gel\000gel-Latn-NG", + "geq\000geq-Latn-CF", + "ges\000ges-Latn-ID", + "gev\000gev-Latn-GA", + "gew\000gew-Latn-NG", + "gex\000gex-Latn-SO", + "gey\000gey-Latn-CD", + "gez\000gez-Ethi-ET", + "gfk\000gfk-Latn-PG", + "gga\000gga-Latn-SB", + "ggb\000ggb-Latn-LR", + "ggd\000ggd-Latn-AU", + "gge\000gge-Latn-AU", + "ggg\000ggg-Arab-PK", + "ggk\000ggk-Latn-AU", + "ggl\000ggl-Latn-PG", + "ggt\000ggt-Latn-PG", + "ggu\000ggu-Latn-CI", + "ggw\000ggw-Latn-PG", + "gha\000gha-Arab-LY", + "ghc\000ghc-Latn-GB", + "ghe\000ghe-Deva-NP", + "ghk\000ghk-Latn-MM", + "ghn\000ghn-Latn-SB", + "gho\000gho-Tfng-MA", + "ghr\000ghr-Arab-PK", + "ghs\000ghs-Latn-PG", + "ght\000ght-Tibt-NP", + "gia\000gia-Latn-AU", + "gib\000gib-Latn-NG", + "gic\000gic-Latn-ZA", + "gid\000gid-Latn-CM", + "gie\000gie-Latn-CI", + "gig\000gig-Arab-PK", + "gih\000gih-Latn-AU", + "gil\000gil-Latn-KI", + "gim\000gim-Latn-PG", + "gin\000gin-Cyrl-RU", + "gip\000gip-Latn-PG", + "giq\000giq-Latn-VN", + "gir\000gir-Latn-VN", + "gis\000gis-Latn-CM", + "git\000git-Latn-CA", + "gix\000gix-Latn-CD", + "giy\000giy-Latn-AU", + "giz\000giz-Latn-CM", + "gjk\000gjk-Arab-PK", + "gjm\000gjm-Latn-AU", + "gjn\000gjn-Latn-GH", + "gjr\000gjr-Latn-AU", + "gju\000gju-Arab-PK", + "gka\000gka-Latn-PG", + "gkd\000gkd-Latn-PG", + "gke\000gke-Latn-CM", + "gkn\000gkn-Latn-NG", + "gko\000gko-Latn-AU", + "gkp\000gkp-Latn-GN", + "gku\000gku-Latn-ZA", + "gl\000gl-Latn-ES", + "glb\000glb-Latn-NG", + "glc\000glc-Latn-TD", + "gld\000gld-Cyrl-RU", + "glh\000glh-Arab-AF", + "glj\000glj-Latn-TD", + "glk\000glk-Arab-IR", + "gll\000gll-Latn-AU", + "glo\000glo-Latn-NG", + "glr\000glr-Latn-LR", + "glu\000glu-Latn-TD", + "glw\000glw-Latn-NG", + "gma\000gma-Latn-AU", + "gmb\000gmb-Latn-SB", + "gmd\000gmd-Latn-NG", + "gmg\000gmg-Latn-PG", + "gmh\000gmh-Latn-DE", + "gml\000gml-Latf-DE", + "gmm\000gmm-Latn-CM", + "gmn\000gmn-Latn-CM", + "gmr\000gmr-Latn-AU", + "gmu\000gmu-Latn-PG", + "gmv\000gmv-Ethi-ET", + "gmx\000gmx-Latn-TZ", + "gmy\000gmy-Linb-GR", + "gmz\000gmz-Latn-NG", + "gn\000gn-Latn-PY", + "gna\000gna-Latn-BF", + "gnb\000gnb-Latn-IN", + "gnc\000gnc-Latn-ES", + "gnd\000gnd-Latn-CM", + "gne\000gne-Latn-NG", + "gng\000gng-Latn-TG", + "gnh\000gnh-Latn-NG", + "gni\000gni-Latn-AU", + "gnj\000gnj-Latn-CI", + "gnk\000gnk-Latn-BW", + "gnl\000gnl-Latn-AU", + "gnm\000gnm-Latn-PG", + "gnn\000gnn-Latn-AU", + "gnq\000gnq-Latn-MY", + "gnr\000gnr-Latn-AU", + "gnt\000gnt-Latn-PG", + "gnu\000gnu-Latn-PG", + "gnw\000gnw-Latn-BO", + "gnz\000gnz-Latn-CF", + "goa\000goa-Latn-CI", + "gob\000gob-Latn-CO", + "goc\000goc-Latn-PG", + "god\000god-Latn-CI", + "goe\000goe-Tibt-BT", + "gof\000gof-Ethi-ET", + "gog\000gog-Latn-TZ", + "goh\000goh-Latn-DE", + "goi\000goi-Latn-PG", + "goj\000goj-Deva-IN", + "gok\000gok-Deva-IN", + "gol\000gol-Latn-LR", + "gon\000gon-Deva-IN", + "goo\000goo-Latn-FJ", + "gop\000gop-Latn-ID", + "goq\000goq-Latn-ID", + "gor\000gor-Latn-ID", + "gos\000gos-Latn-NL", + "got\000got-Goth-UA", + "gou\000gou-Latn-CM", + "gov\000gov-Latn-CI", + "gow\000gow-Latn-TZ", + "gox\000gox-Latn-CD", + "goy\000goy-Latn-TD", + "gpa\000gpa-Latn-NG", + "gpe\000gpe-Latn-GH", + "gpn\000gpn-Latn-PG", + "gqa\000gqa-Latn-NG", + "gqn\000gqn-Latn-BR", + "gqr\000gqr-Latn-TD", + "gra\000gra-Deva-IN", + "grb\000grb-Latn-LR", + "grc\000grc-Grek-GR", + "grd\000grd-Latn-NG", + "grg\000grg-Latn-PG", + "grh\000grh-Latn-NG", + "gri\000gri-Latn-SB", + "grj\000grj-Latn-LR", + "grm\000grm-Latn-MY", + "grq\000grq-Latn-PG", + "grr\000grr-Arab-DZ", + "grs\000grs-Latn-ID", + "grt\000grt-Beng-IN", + "gru\000gru-Ethi-ET", + "grv\000grv-Latn-LR", + "grw\000grw-Latn-PG", + "grx\000grx-Latn-PG", + "gry\000gry-Latn-LR", + "grz\000grz-Latn-PG", + "gsl\000gsl-Latn-SN", + "gsn\000gsn-Latn-PG", + "gso\000gso-Latn-CF", + "gsp\000gsp-Latn-PG", + "gsw\000gsw-Latn-CH", + "gta\000gta-Latn-BR", + "gtu\000gtu-Latn-AU", + "gu\000gu-Gujr-IN", + "gua\000gua-Latn-NG", + "gub\000gub-Latn-BR", + "guc\000guc-Latn-CO", + "gud\000gud-Latn-CI", + "gue\000gue-Latn-AU", + "guf\000guf-Latn-AU", + "guh\000guh-Latn-CO", + "gui\000gui-Latn-BO", + "guk\000guk-Latn-ET", + "gul\000gul-Latn-US", + "gum\000gum-Latn-CO", + "gun\000gun-Latn-BR", + "guo\000guo-Latn-CO", + "gup\000gup-Latn-AU", + "guq\000guq-Latn-PY", + "gur\000gur-Latn-GH", + "gut\000gut-Latn-CR", + "guu\000guu-Latn-VE", + "guw\000guw-Latn-BJ", + "gux\000gux-Latn-BF", + "guz\000guz-Latn-KE", + "gv\000gv-Latn-IM", + "gva\000gva-Latn-PY", + "gvc\000gvc-Latn-BR", + "gve\000gve-Latn-PG", + "gvf\000gvf-Latn-PG", + "gvj\000gvj-Latn-BR", + "gvl\000gvl-Latn-TD", + "gvm\000gvm-Latn-NG", + "gvn\000gvn-Latn-AU", + "gvo\000gvo-Latn-BR", + "gvp\000gvp-Latn-BR", + "gvr\000gvr-Deva-NP", + "gvs\000gvs-Latn-PG", + "gvy\000gvy-Latn-AU", + "gwa\000gwa-Latn-CI", + "gwb\000gwb-Latn-NG", + "gwc\000gwc-Arab-PK", + "gwd\000gwd-Latn-ET", + "gwe\000gwe-Latn-TZ", + "gwf\000gwf-Arab-PK", + "gwg\000gwg-Latn-NG", + "gwi\000gwi-Latn-CA", + "gwj\000gwj-Latn-BW", + "gwm\000gwm-Latn-AU", + "gwn\000gwn-Latn-NG", + "gwr\000gwr-Latn-UG", + "gwt\000gwt-Arab-AF", + "gwu\000gwu-Latn-AU", + "gww\000gww-Latn-AU", + "gwx\000gwx-Latn-GH", + "gxx\000gxx-Latn-CI", + "gyb\000gyb-Latn-PG", + "gyd\000gyd-Latn-AU", + "gye\000gye-Latn-NG", + "gyf\000gyf-Latn-AU", + "gyg\000gyg-Latn-CF", + "gyi\000gyi-Latn-CM", + "gyl\000gyl-Latn-ET", + "gym\000gym-Latn-PA", + "gyn\000gyn-Latn-GY", + "gyo\000gyo-Deva-NP", + "gyr\000gyr-Latn-BO", + "gyy\000gyy-Latn-AU", + "gyz\000gyz-Latn-NG", + "gza\000gza-Latn-SD", + "gzi\000gzi-Arab-IR", + "gzn\000gzn-Latn-ID", + "ha\000ha-Latn-NG", + "ha-CM\000ha-Arab-CM", + "ha-SD\000ha-Arab-SD", + "haa\000haa-Latn-US", + "hac\000hac-Arab-IR", + "had\000had-Latn-ID", + "hae\000hae-Latn-ET", + "hag\000hag-Latn-GH", + "hah\000hah-Latn-PG", + "hai\000hai-Latn-CA", + "haj\000haj-Latn-IN", + "hak\000hak-Hans-CN", + "hak-Hant\000hak-Hant-TW", + "hak-TW\000hak-Hant-TW", + "hal\000hal-Latn-VN", + "ham\000ham-Latn-PG", + "han\000han-Latn-TZ", + "hao\000hao-Latn-PG", + "hap\000hap-Latn-ID", + "haq\000haq-Latn-TZ", + "har\000har-Ethi-ET", + "has\000has-Latn-CA", + "hav\000hav-Latn-CD", + "haw\000haw-Latn-US", + "hax\000hax-Latn-CA", + "hay\000hay-Latn-TZ", + "haz\000haz-Arab-AF", + "hba\000hba-Latn-CD", + "hbb\000hbb-Latn-NG", + "hbn\000hbn-Latn-SD", + "hbo\000hbo-Hebr-IL", + "hbu\000hbu-Latn-TL", + "hch\000hch-Latn-MX", + "hdy\000hdy-Ethi-ET", + "he\000he-Hebr-IL", + "hed\000hed-Latn-TD", + "heg\000heg-Latn-ID", + "heh\000heh-Latn-TZ", + "hei\000hei-Latn-CA", + "hem\000hem-Latn-CD", + "hgm\000hgm-Latn-NA", + "hgw\000hgw-Latn-PG", + "hhi\000hhi-Latn-PG", + "hhr\000hhr-Latn-SN", + "hhy\000hhy-Latn-PG", + "hi\000hi-Deva-IN", + "hia\000hia-Latn-NG", + "hib\000hib-Latn-PE", + "hid\000hid-Latn-US", + "hif\000hif-Deva-FJ", + "hig\000hig-Latn-NG", + "hih\000hih-Latn-PG", + "hii\000hii-Takr-IN", + "hij\000hij-Latn-CM", + "hik\000hik-Latn-ID", + "hil\000hil-Latn-PH", + "hio\000hio-Latn-BW", + "hir\000hir-Latn-BR", + "hit\000hit-Xsux-TR", + "hiw\000hiw-Latn-VU", + "hix\000hix-Latn-BR", + "hji\000hji-Latn-ID", + "hka\000hka-Latn-TZ", + "hke\000hke-Latn-CD", + "hkh\000hkh-Arab-IN", + "hkk\000hkk-Latn-PG", + "hla\000hla-Latn-PG", + "hlb\000hlb-Deva-IN", + "hld\000hld-Latn-VN", + "hlt\000hlt-Latn-MM", + "hlu\000hlu-Hluw-TR", + "hma\000hma-Latn-CN", + "hmb\000hmb-Latn-ML", + "hmd\000hmd-Plrd-CN", + "hmf\000hmf-Latn-VN", + "hmj\000hmj-Bopo-CN", + "hmm\000hmm-Latn-CN", + "hmn\000hmn-Latn-CN", + "hmp\000hmp-Latn-CN", + "hmq\000hmq-Bopo-CN", + "hmr\000hmr-Latn-IN", + "hms\000hms-Latn-CN", + "hmt\000hmt-Latn-PG", + "hmu\000hmu-Latn-ID", + "hmv\000hmv-Latn-VN", + "hmw\000hmw-Latn-CN", + "hmy\000hmy-Latn-CN", + "hmz\000hmz-Latn-CN", + "hna\000hna-Latn-CM", + "hnd\000hnd-Arab-PK", + "hne\000hne-Deva-IN", + "hng\000hng-Latn-AO", + "hnh\000hnh-Latn-BW", + "hni\000hni-Latn-CN", + "hnj\000hnj-Hmnp-US", + "hnj-Hmng\000hnj-Hmng-LA", + "hnm\000hnm-Hans-CN", + "hnn\000hnn-Latn-PH", + "hno\000hno-Arab-PK", + "hns\000hns-Latn-SR", + "ho\000ho-Latn-PG", + "hoa\000hoa-Latn-SB", + "hob\000hob-Latn-PG", + "hoc\000hoc-Deva-IN", + "hod\000hod-Latn-NG", + "hoe\000hoe-Latn-NG", + "hoh\000hoh-Arab-OM", + "hoi\000hoi-Latn-US", + "hoj\000hoj-Deva-IN", + "hol\000hol-Latn-AO", + "hom\000hom-Latn-SS", + "hoo\000hoo-Latn-CD", + "hop\000hop-Latn-US", + "hor\000hor-Latn-TD", + "hot\000hot-Latn-PG", + "hov\000hov-Latn-ID", + "how\000how-Hani-CN", + "hoy\000hoy-Deva-IN", + "hpo\000hpo-Mymr-MM", + "hr\000hr-Latn-HR", + "hra\000hra-Latn-IN", + "hrc\000hrc-Latn-PG", + "hre\000hre-Latn-VN", + "hrk\000hrk-Latn-ID", + "hrm\000hrm-Latn-CN", + "hro\000hro-Latn-VN", + "hrp\000hrp-Latn-AU", + "hrt\000hrt-Syrc-TR", + "hru\000hru-Latn-IN", + "hrw\000hrw-Latn-PG", + "hrx\000hrx-Latn-BR", + "hrz\000hrz-Arab-IR", + "hsb\000hsb-Latn-DE", + "hsn\000hsn-Hans-CN", + "hss\000hss-Arab-OM", + "ht\000ht-Latn-HT", + "hti\000hti-Latn-ID", + "hto\000hto-Latn-CO", + "hts\000hts-Latn-TZ", + "htu\000htu-Latn-ID", + "htx\000htx-Xsux-TR", + "hu\000hu-Latn-HU", + "hub\000hub-Latn-PE", + "huc\000huc-Latn-BW", + "hud\000hud-Latn-ID", + "hue\000hue-Latn-MX", + "huf\000huf-Latn-PG", + "hug\000hug-Latn-PE", + "huh\000huh-Latn-CL", + "hui\000hui-Latn-PG", + "huk\000huk-Latn-ID", + "hul\000hul-Latn-PG", + "hum\000hum-Latn-CD", + "hup\000hup-Latn-US", + "hur\000hur-Latn-CA", + "hus\000hus-Latn-MX", + "hut\000hut-Deva-NP", + "huu\000huu-Latn-PE", + "huv\000huv-Latn-MX", + "huw\000huw-Latn-ID", + "hux\000hux-Latn-PE", + "huy\000huy-Hebr-IL", + "huz\000huz-Cyrl-RU", + "hvc\000hvc-Latn-HT", + "hve\000hve-Latn-MX", + "hvk\000hvk-Latn-NC", + "hvn\000hvn-Latn-ID", + "hvv\000hvv-Latn-MX", + "hwa\000hwa-Latn-CI", + "hwc\000hwc-Latn-US", + "hwo\000hwo-Latn-NG", + "hy\000hy-Armn-AM", + "hya\000hya-Latn-CM", + "hyw\000hyw-Armn-AM", + "hz\000hz-Latn-NA", + "ia\000ia-Latn-001", + "iai\000iai-Latn-NC", + "ian\000ian-Latn-PG", + "iar\000iar-Latn-PG", + "iba\000iba-Latn-MY", + "ibb\000ibb-Latn-NG", + "ibd\000ibd-Latn-AU", + "ibe\000ibe-Latn-NG", + "ibg\000ibg-Latn-PH", + "ibh\000ibh-Latn-VN", + "ibl\000ibl-Latn-PH", + "ibm\000ibm-Latn-NG", + "ibn\000ibn-Latn-NG", + "ibr\000ibr-Latn-NG", + "ibu\000ibu-Latn-ID", + "iby\000iby-Latn-NG", + "ica\000ica-Latn-BJ", + "ich\000ich-Latn-NG", + "icr\000icr-Latn-CO", + "id\000id-Latn-ID", + "ida\000ida-Latn-KE", + "idb\000idb-Latn-IN", + "idc\000idc-Latn-NG", + "idd\000idd-Latn-BJ", + "ide\000ide-Latn-NG", + "idi\000idi-Latn-PG", + "idr\000idr-Latn-SS", + "ids\000ids-Latn-NG", + "idt\000idt-Latn-TL", + "idu\000idu-Latn-NG", + "ie\000ie-Latn-EE", + "ifa\000ifa-Latn-PH", + "ifb\000ifb-Latn-PH", + "ife\000ife-Latn-TG", + "iff\000iff-Latn-VU", + "ifk\000ifk-Latn-PH", + "ifm\000ifm-Latn-CG", + "ifu\000ifu-Latn-PH", + "ify\000ify-Latn-PH", + "ig\000ig-Latn-NG", + "igb\000igb-Latn-NG", + "ige\000ige-Latn-NG", + "igg\000igg-Latn-PG", + "igl\000igl-Latn-NG", + "igm\000igm-Latn-PG", + "ign\000ign-Latn-BO", + "igo\000igo-Latn-PG", + "igs\000igs-Latn-001", + "igw\000igw-Latn-NG", + "ihb\000ihb-Latn-ID", + "ihi\000ihi-Latn-NG", + "ihp\000ihp-Latn-ID", + "ihw\000ihw-Latn-AU", + "ii\000ii-Yiii-CN", + "iin\000iin-Latn-AU", + "ijc\000ijc-Latn-NG", + "ije\000ije-Latn-NG", + "ijj\000ijj-Latn-BJ", + "ijn\000ijn-Latn-NG", + "ijs\000ijs-Latn-NG", + "ik\000ik-Latn-US", + "ikh\000ikh-Latn-NG", + "iki\000iki-Latn-NG", + "ikk\000ikk-Latn-NG", + "ikl\000ikl-Latn-NG", + "iko\000iko-Latn-NG", + "ikp\000ikp-Latn-NG", + "ikr\000ikr-Latn-AU", + "ikt\000ikt-Latn-CA", + "ikv\000ikv-Latn-NG", + "ikw\000ikw-Latn-NG", + "ikx\000ikx-Latn-UG", + "ikz\000ikz-Latn-TZ", + "ila\000ila-Latn-ID", + "ilb\000ilb-Latn-ZM", + "ilg\000ilg-Latn-AU", + "ili\000ili-Latn-CN", + "ilk\000ilk-Latn-PH", + "ilm\000ilm-Latn-MY", + "ilo\000ilo-Latn-PH", + "ilp\000ilp-Latn-PH", + "ilu\000ilu-Latn-ID", + "ilv\000ilv-Latn-NG", + "imi\000imi-Latn-PG", + "iml\000iml-Latn-US", + "imn\000imn-Latn-PG", + "imo\000imo-Latn-PG", + "imr\000imr-Latn-ID", + "ims\000ims-Latn-IT", + "imt\000imt-Latn-SS", + "imy\000imy-Lyci-TR", + "in\000in-Latn-ID", + "inb\000inb-Latn-CO", + "ing\000ing-Latn-US", + "inh\000inh-Cyrl-RU", + "inj\000inj-Latn-CO", + "inn\000inn-Latn-PH", + "ino\000ino-Latn-PG", + "inp\000inp-Latn-PE", + "int\000int-Mymr-MM", + "io\000io-Latn-001", + "ior\000ior-Ethi-ET", + "iou\000iou-Latn-PG", + "iow\000iow-Latn-US", + "ipi\000ipi-Latn-PG", + "ipo\000ipo-Latn-PG", + "iqu\000iqu-Latn-PE", + "iqw\000iqw-Latn-NG", + "ire\000ire-Latn-ID", + "irh\000irh-Latn-ID", + "iri\000iri-Latn-NG", + "irk\000irk-Latn-TZ", + "irn\000irn-Latn-BR", + "iru\000iru-Taml-IN", + "irx\000irx-Latn-ID", + "iry\000iry-Latn-PH", + "is\000is-Latn-IS", + "isa\000isa-Latn-PG", + "isc\000isc-Latn-PE", + "isd\000isd-Latn-PH", + "ish\000ish-Latn-NG", + "isi\000isi-Latn-NG", + "isk\000isk-Arab-AF", + "ism\000ism-Latn-ID", + "isn\000isn-Latn-TZ", + "iso\000iso-Latn-NG", + "ist\000ist-Latn-HR", + "isu\000isu-Latn-CM", + "it\000it-Latn-IT", + "itb\000itb-Latn-PH", + "itd\000itd-Latn-ID", + "ite\000ite-Latn-BO", + "iti\000iti-Latn-PH", + "itk\000itk-Hebr-IT", + "itl\000itl-Cyrl-RU", + "itm\000itm-Latn-NG", + "ito\000ito-Latn-BO", + "itr\000itr-Latn-PG", + "its\000its-Latn-NG", + "itt\000itt-Latn-PH", + "itv\000itv-Latn-PH", + "itw\000itw-Latn-NG", + "itx\000itx-Latn-ID", + "ity\000ity-Latn-PH", + "itz\000itz-Latn-GT", + "iu\000iu-Cans-CA", + "ium\000ium-Latn-CN", + "ivb\000ivb-Latn-PH", + "ivv\000ivv-Latn-PH", + "iw\000iw-Hebr-IL", + "iwk\000iwk-Latn-PH", + "iwm\000iwm-Latn-PG", + "iwo\000iwo-Latn-ID", + "iws\000iws-Latn-PG", + "ixc\000ixc-Latn-MX", + "ixl\000ixl-Latn-GT", + "iya\000iya-Latn-NG", + "iyo\000iyo-Latn-CM", + "iyx\000iyx-Latn-CG", + "izh\000izh-Latn-RU", + "izm\000izm-Latn-NG", + "izr\000izr-Latn-NG", + "izz\000izz-Latn-NG", + "ja\000ja-Jpan-JP", + "jaa\000jaa-Latn-BR", + "jab\000jab-Latn-NG", + "jac\000jac-Latn-GT", + "jad\000jad-Arab-GN", + "jae\000jae-Latn-PG", + "jaf\000jaf-Latn-NG", + "jah\000jah-Latn-MY", + "jaj\000jaj-Latn-SB", + "jak\000jak-Latn-MY", + "jal\000jal-Latn-ID", + "jam\000jam-Latn-JM", + "jan\000jan-Latn-AU", + "jao\000jao-Latn-AU", + "jaq\000jaq-Latn-ID", + "jas\000jas-Latn-NC", + "jat\000jat-Arab-AF", + "jau\000jau-Latn-ID", + "jax\000jax-Latn-ID", + "jay\000jay-Latn-AU", + "jaz\000jaz-Latn-NC", + "jbe\000jbe-Hebr-IL", + "jbi\000jbi-Latn-AU", + "jbj\000jbj-Latn-ID", + "jbk\000jbk-Latn-PG", + "jbm\000jbm-Latn-NG", + "jbn\000jbn-Arab-LY", + "jbo\000jbo-Latn-001", + "jbr\000jbr-Latn-ID", + "jbt\000jbt-Latn-BR", + "jbu\000jbu-Latn-CM", + "jbw\000jbw-Latn-AU", + "jct\000jct-Cyrl-UA", + "jda\000jda-Tibt-IN", + "jdg\000jdg-Arab-PK", + "jdt\000jdt-Cyrl-RU", + "jeb\000jeb-Latn-PE", + "jee\000jee-Deva-NP", + "jeh\000jeh-Latn-VN", + "jei\000jei-Latn-ID", + "jek\000jek-Latn-CI", + "jel\000jel-Latn-ID", + "jen\000jen-Latn-NG", + "jer\000jer-Latn-NG", + "jet\000jet-Latn-PG", + "jeu\000jeu-Latn-TD", + "jgb\000jgb-Latn-CD", + "jge\000jge-Geor-GE", + "jgk\000jgk-Latn-NG", + "jgo\000jgo-Latn-CM", + "jhi\000jhi-Latn-MY", + "ji\000ji-Hebr-UA", + "jia\000jia-Latn-CM", + "jib\000jib-Latn-NG", + "jic\000jic-Latn-HN", + "jid\000jid-Latn-NG", + "jie\000jie-Latn-NG", + "jig\000jig-Latn-AU", + "jil\000jil-Latn-PG", + "jim\000jim-Latn-CM", + "jit\000jit-Latn-TZ", + "jiu\000jiu-Latn-CN", + "jiv\000jiv-Latn-EC", + "jiy\000jiy-Latn-CN", + "jje\000jje-Hang-KR", + "jjr\000jjr-Latn-NG", + "jka\000jka-Latn-ID", + "jkm\000jkm-Mymr-MM", + "jko\000jko-Latn-PG", + "jku\000jku-Latn-NG", + "jle\000jle-Latn-SD", + "jma\000jma-Latn-PG", + "jmb\000jmb-Latn-NG", + "jmc\000jmc-Latn-TZ", + "jmd\000jmd-Latn-ID", + "jmi\000jmi-Latn-NG", + "jml\000jml-Deva-NP", + "jmn\000jmn-Latn-MM", + "jmr\000jmr-Latn-GH", + "jms\000jms-Latn-NG", + "jmw\000jmw-Latn-PG", + "jmx\000jmx-Latn-MX", + "jna\000jna-Takr-IN", + "jnd\000jnd-Arab-PK", + "jng\000jng-Latn-AU", + "jni\000jni-Latn-NG", + "jnj\000jnj-Latn-ET", + "jnl\000jnl-Deva-IN", + "jns\000jns-Deva-IN", + "job\000job-Latn-CD", + "jod\000jod-Latn-CI", + "jog\000jog-Arab-PK", + "jor\000jor-Latn-BO", + "jow\000jow-Latn-ML", + "jpa\000jpa-Hebr-PS", + "jpr\000jpr-Hebr-IL", + "jqr\000jqr-Latn-PE", + "jra\000jra-Latn-VN", + "jrb\000jrb-Hebr-IL", + "jrr\000jrr-Latn-NG", + "jrt\000jrt-Latn-NG", + "jru\000jru-Latn-VE", + "jua\000jua-Latn-BR", + "jub\000jub-Latn-NG", + "jud\000jud-Latn-CI", + "juh\000juh-Latn-NG", + "jui\000jui-Latn-AU", + "juk\000juk-Latn-NG", + "jul\000jul-Deva-NP", + "jum\000jum-Latn-SD", + "jun\000jun-Orya-IN", + "juo\000juo-Latn-NG", + "jup\000jup-Latn-BR", + "jur\000jur-Latn-BR", + "jut\000jut-Latn-DK", + "juu\000juu-Latn-NG", + "juw\000juw-Latn-NG", + "juy\000juy-Orya-IN", + "jv\000jv-Latn-ID", + "jvd\000jvd-Latn-ID", + "jvn\000jvn-Latn-SR", + "jw\000jw-Latn-ID", + "jwi\000jwi-Latn-GH", + "jya\000jya-Tibt-CN", + "jye\000jye-Hebr-IL", + "jyy\000jyy-Latn-TD", + "ka\000ka-Geor-GE", + "kaa\000kaa-Cyrl-UZ", + "kab\000kab-Latn-DZ", + "kac\000kac-Latn-MM", + "kad\000kad-Latn-NG", + "kag\000kag-Latn-MY", + "kah\000kah-Latn-CF", + "kai\000kai-Latn-NG", + "kaj\000kaj-Latn-NG", + "kak\000kak-Latn-PH", + "kam\000kam-Latn-KE", + "kao\000kao-Latn-ML", + "kap\000kap-Cyrl-RU", + "kaq\000kaq-Latn-PE", + "kav\000kav-Latn-BR", + "kaw\000kaw-Bali-ID", + "kax\000kax-Latn-ID", + "kay\000kay-Latn-BR", + "kba\000kba-Latn-AU", + "kbb\000kbb-Latn-BR", + "kbc\000kbc-Latn-BR", + "kbd\000kbd-Cyrl-RU", + "kbe\000kbe-Latn-AU", + "kbg\000kbg-Tibt-IN", + "kbh\000kbh-Latn-CO", + "kbi\000kbi-Latn-ID", + "kbj\000kbj-Latn-CD", + "kbk\000kbk-Latn-PG", + "kbl\000kbl-Latn-TD", + "kbm\000kbm-Latn-PG", + "kbn\000kbn-Latn-CF", + "kbo\000kbo-Latn-SS", + "kbp\000kbp-Latn-TG", + "kbq\000kbq-Latn-PG", + "kbr\000kbr-Latn-ET", + "kbs\000kbs-Latn-GA", + "kbt\000kbt-Latn-PG", + "kbu\000kbu-Arab-PK", + "kbv\000kbv-Latn-ID", + "kbw\000kbw-Latn-PG", + "kbx\000kbx-Latn-PG", + "kby\000kby-Arab-NE", + "kbz\000kbz-Latn-NG", + "kca\000kca-Cyrl-RU", + "kcb\000kcb-Latn-PG", + "kcc\000kcc-Latn-NG", + "kcd\000kcd-Latn-ID", + "kce\000kce-Latn-NG", + "kcf\000kcf-Latn-NG", + "kcg\000kcg-Latn-NG", + "kch\000kch-Latn-NG", + "kci\000kci-Latn-NG", + "kcj\000kcj-Latn-GW", + "kck\000kck-Latn-ZW", + "kcl\000kcl-Latn-PG", + "kcm\000kcm-Latn-CF", + "kcn\000kcn-Latn-UG", + "kco\000kco-Latn-PG", + "kcp\000kcp-Latn-SD", + "kcq\000kcq-Latn-NG", + "kcs\000kcs-Latn-NG", + "kct\000kct-Latn-PG", + "kcu\000kcu-Latn-TZ", + "kcv\000kcv-Latn-CD", + "kcw\000kcw-Latn-CD", + "kcy\000kcy-Arab-DZ", + "kcz\000kcz-Latn-TZ", + "kda\000kda-Latn-AU", + "kdc\000kdc-Latn-TZ", + "kdd\000kdd-Latn-AU", + "kde\000kde-Latn-TZ", + "kdf\000kdf-Latn-PG", + "kdg\000kdg-Latn-CD", + "kdh\000kdh-Latn-TG", + "kdi\000kdi-Latn-UG", + "kdj\000kdj-Latn-UG", + "kdk\000kdk-Latn-NC", + "kdl\000kdl-Latn-NG", + "kdm\000kdm-Latn-NG", + "kdn\000kdn-Latn-ZW", + "kdp\000kdp-Latn-NG", + "kdq\000kdq-Beng-IN", + "kdr\000kdr-Latn-LT", + "kdt\000kdt-Thai-TH", + "kdw\000kdw-Latn-ID", + "kdx\000kdx-Latn-NG", + "kdy\000kdy-Latn-ID", + "kdz\000kdz-Latn-CM", + "kea\000kea-Latn-CV", + "keb\000keb-Latn-GA", + "kec\000kec-Latn-SD", + "ked\000ked-Latn-TZ", + "kee\000kee-Latn-US", + "kef\000kef-Latn-TG", + "keg\000keg-Latn-SD", + "keh\000keh-Latn-PG", + "kei\000kei-Latn-ID", + "kek\000kek-Latn-GT", + "kel\000kel-Latn-CD", + "kem\000kem-Latn-TL", + "ken\000ken-Latn-CM", + "keo\000keo-Latn-UG", + "ker\000ker-Latn-TD", + "kes\000kes-Latn-NG", + "ket\000ket-Cyrl-RU", + "keu\000keu-Latn-TG", + "kev\000kev-Mlym-IN", + "kew\000kew-Latn-PG", + "kex\000kex-Deva-IN", + "key\000key-Telu-IN", + "kez\000kez-Latn-NG", + "kfa\000kfa-Knda-IN", + "kfb\000kfb-Deva-IN", + "kfc\000kfc-Telu-IN", + "kfd\000kfd-Knda-IN", + "kfe\000kfe-Taml-IN", + "kff\000kff-Latn-IN", + "kfg\000kfg-Knda-IN", + "kfh\000kfh-Mlym-IN", + "kfi\000kfi-Taml-IN", + "kfk\000kfk-Deva-IN", + "kfl\000kfl-Latn-CM", + "kfm\000kfm-Arab-IR", + "kfn\000kfn-Latn-CM", + "kfo\000kfo-Latn-CI", + "kfp\000kfp-Deva-IN", + "kfq\000kfq-Deva-IN", + "kfr\000kfr-Deva-IN", + "kfs\000kfs-Deva-IN", + "kfu\000kfu-Deva-IN", + "kfv\000kfv-Latn-IN", + "kfw\000kfw-Latn-IN", + "kfx\000kfx-Deva-IN", + "kfy\000kfy-Deva-IN", + "kfz\000kfz-Latn-BF", + "kg\000kg-Latn-CD", + "kga\000kga-Latn-CI", + "kgb\000kgb-Latn-ID", + "kge\000kge-Latn-ID", + "kgf\000kgf-Latn-PG", + "kgj\000kgj-Deva-NP", + "kgk\000kgk-Latn-BR", + "kgl\000kgl-Latn-AU", + "kgo\000kgo-Latn-SD", + "kgp\000kgp-Latn-BR", + "kgq\000kgq-Latn-ID", + "kgr\000kgr-Latn-ID", + "kgs\000kgs-Latn-AU", + "kgt\000kgt-Latn-NG", + "kgu\000kgu-Latn-PG", + "kgv\000kgv-Latn-ID", + "kgw\000kgw-Latn-ID", + "kgx\000kgx-Latn-ID", + "kgy\000kgy-Tibt-NP", + "kha\000kha-Latn-IN", + "khb\000khb-Talu-CN", + "khc\000khc-Latn-ID", + "khd\000khd-Latn-ID", + "khe\000khe-Latn-ID", + "khf\000khf-Thai-LA", + "khg\000khg-Tibt-CN", + "khh\000khh-Latn-ID", + "khj\000khj-Latn-NG", + "khl\000khl-Latn-PG", + "khn\000khn-Deva-IN", + "kho\000kho-Brah-IR", + "khp\000khp-Latn-ID", + "khq\000khq-Latn-ML", + "khr\000khr-Latn-IN", + "khs\000khs-Latn-PG", + "kht\000kht-Mymr-IN", + "khu\000khu-Latn-AO", + "khv\000khv-Cyrl-RU", + "khw\000khw-Arab-PK", + "khx\000khx-Latn-CD", + "khy\000khy-Latn-CD", + "khz\000khz-Latn-PG", + "ki\000ki-Latn-KE", + "kia\000kia-Latn-TD", + "kib\000kib-Latn-SD", + "kic\000kic-Latn-US", + "kid\000kid-Latn-CM", + "kie\000kie-Latn-TD", + "kif\000kif-Deva-NP", + "kig\000kig-Latn-ID", + "kih\000kih-Latn-PG", + "kij\000kij-Latn-PG", + "kil\000kil-Latn-NG", + "kim\000kim-Cyrl-RU", + "kio\000kio-Latn-US", + "kip\000kip-Deva-NP", + "kiq\000kiq-Latn-ID", + "kis\000kis-Latn-PG", + "kit\000kit-Latn-PG", + "kiu\000kiu-Latn-TR", + "kiv\000kiv-Latn-TZ", + "kiw\000kiw-Latn-PG", + "kix\000kix-Latn-IN", + "kiy\000kiy-Latn-ID", + "kiz\000kiz-Latn-TZ", + "kj\000kj-Latn-NA", + "kja\000kja-Latn-ID", + "kjb\000kjb-Latn-GT", + "kjc\000kjc-Latn-ID", + "kjd\000kjd-Latn-PG", + "kje\000kje-Latn-ID", + "kjg\000kjg-Laoo-LA", + "kjh\000kjh-Cyrl-RU", + "kji\000kji-Latn-SB", + "kjj\000kjj-Latn-AZ", + "kjk\000kjk-Latn-ID", + "kjl\000kjl-Deva-NP", + "kjm\000kjm-Latn-VN", + "kjn\000kjn-Latn-AU", + "kjo\000kjo-Deva-IN", + "kjp\000kjp-Mymr-MM", + "kjq\000kjq-Latn-US", + "kjr\000kjr-Latn-ID", + "kjs\000kjs-Latn-PG", + "kjt\000kjt-Thai-TH", + "kju\000kju-Latn-US", + "kjx\000kjx-Latn-PG", + "kjy\000kjy-Latn-PG", + "kjz\000kjz-Tibt-BT", + "kk\000kk-Cyrl-KZ", + "kk-AF\000kk-Arab-AF", + "kk-Arab\000kk-Arab-CN", + "kk-CN\000kk-Arab-CN", + "kk-IR\000kk-Arab-IR", + "kk-MN\000kk-Arab-MN", + "kka\000kka-Latn-NG", + "kkb\000kkb-Latn-ID", + "kkc\000kkc-Latn-PG", + "kkd\000kkd-Latn-NG", + "kke\000kke-Latn-GN", + "kkf\000kkf-Tibt-IN", + "kkg\000kkg-Latn-PH", + "kkh\000kkh-Lana-MM", + "kki\000kki-Latn-TZ", + "kkj\000kkj-Latn-CM", + "kkk\000kkk-Latn-SB", + "kkl\000kkl-Latn-ID", + "kkm\000kkm-Latn-NG", + "kko\000kko-Latn-SD", + "kkp\000kkp-Latn-AU", + "kkq\000kkq-Latn-CD", + "kkr\000kkr-Latn-NG", + "kks\000kks-Latn-NG", + "kkt\000kkt-Deva-NP", + "kku\000kku-Latn-NG", + "kkv\000kkv-Latn-ID", + "kkw\000kkw-Latn-CG", + "kkx\000kkx-Latn-ID", + "kky\000kky-Latn-AU", + "kkz\000kkz-Latn-CA", + "kl\000kl-Latn-GL", + "kla\000kla-Latn-US", + "klb\000klb-Latn-MX", + "klc\000klc-Latn-CM", + "kld\000kld-Latn-AU", + "kle\000kle-Deva-NP", + "klf\000klf-Latn-TD", + "klg\000klg-Latn-PH", + "klh\000klh-Latn-PG", + "kli\000kli-Latn-ID", + "klj\000klj-Arab-IR", + "klk\000klk-Latn-NG", + "kll\000kll-Latn-PH", + "klm\000klm-Latn-PG", + "kln\000kln-Latn-KE", + "klo\000klo-Latn-NG", + "klp\000klp-Latn-PG", + "klq\000klq-Latn-PG", + "klr\000klr-Deva-NP", + "kls\000kls-Latn-PK", + "klt\000klt-Latn-PG", + "klu\000klu-Latn-LR", + "klv\000klv-Latn-VU", + "klw\000klw-Latn-ID", + "klx\000klx-Latn-PG", + "kly\000kly-Latn-ID", + "klz\000klz-Latn-ID", + "km\000km-Khmr-KH", + "kma\000kma-Latn-GH", + "kmb\000kmb-Latn-AO", + "kmc\000kmc-Latn-CN", + "kmd\000kmd-Latn-PH", + "kme\000kme-Latn-CM", + "kmf\000kmf-Latn-PG", + "kmg\000kmg-Latn-PG", + "kmh\000kmh-Latn-PG", + "kmi\000kmi-Latn-NG", + "kmj\000kmj-Deva-IN", + "kmk\000kmk-Latn-PH", + "kml\000kml-Latn-PH", + "kmm\000kmm-Latn-IN", + "kmn\000kmn-Latn-PG", + "kmo\000kmo-Latn-PG", + "kmp\000kmp-Latn-CM", + "kmq\000kmq-Latn-ET", + "kms\000kms-Latn-PG", + "kmt\000kmt-Latn-ID", + "kmu\000kmu-Latn-PG", + "kmv\000kmv-Latn-BR", + "kmw\000kmw-Latn-CD", + "kmx\000kmx-Latn-PG", + "kmy\000kmy-Latn-NG", + "kmz\000kmz-Arab-IR", + "kn\000kn-Knda-IN", + "kna\000kna-Latn-NG", + "knb\000knb-Latn-PH", + "knd\000knd-Latn-ID", + "kne\000kne-Latn-PH", + "knf\000knf-Latn-GW", + "kni\000kni-Latn-NG", + "knj\000knj-Latn-GT", + "knk\000knk-Latn-SL", + "knl\000knl-Latn-ID", + "knm\000knm-Latn-BR", + "knn\000knn-Deva-IN", + "kno\000kno-Latn-SL", + "knp\000knp-Latn-CM", + "knq\000knq-Latn-MY", + "knr\000knr-Latn-PG", + "kns\000kns-Latn-MY", + "knt\000knt-Latn-BR", + "knu\000knu-Latn-GN", + "knv\000knv-Latn-PG", + "knw\000knw-Latn-NA", + "knx\000knx-Latn-ID", + "kny\000kny-Latn-CD", + "knz\000knz-Latn-BF", + "ko\000ko-Kore-KR", + "koa\000koa-Latn-PG", + "koc\000koc-Latn-NG", + "kod\000kod-Latn-ID", + "koe\000koe-Latn-SS", + "kof\000kof-Latn-NG", + "kog\000kog-Latn-CO", + "koh\000koh-Latn-CG", + "koi\000koi-Cyrl-RU", + "kok\000kok-Deva-IN", + "kol\000kol-Latn-PG", + "koo\000koo-Latn-UG", + "kop\000kop-Latn-PG", + "koq\000koq-Latn-GA", + "kos\000kos-Latn-FM", + "kot\000kot-Latn-CM", + "kou\000kou-Latn-TD", + "kov\000kov-Latn-NG", + "kow\000kow-Latn-NG", + "koy\000koy-Latn-US", + "koz\000koz-Latn-PG", + "kpa\000kpa-Latn-NG", + "kpc\000kpc-Latn-CO", + "kpd\000kpd-Latn-ID", + "kpe\000kpe-Latn-LR", + "kpf\000kpf-Latn-PG", + "kpg\000kpg-Latn-FM", + "kph\000kph-Latn-GH", + "kpi\000kpi-Latn-ID", + "kpj\000kpj-Latn-BR", + "kpk\000kpk-Latn-NG", + "kpl\000kpl-Latn-CD", + "kpm\000kpm-Latn-VN", + "kpn\000kpn-Latn-BR", + "kpo\000kpo-Latn-TG", + "kpq\000kpq-Latn-ID", + "kpr\000kpr-Latn-PG", + "kps\000kps-Latn-ID", + "kpt\000kpt-Cyrl-RU", + "kpu\000kpu-Latn-ID", + "kpw\000kpw-Latn-PG", + "kpx\000kpx-Latn-PG", + "kpy\000kpy-Cyrl-RU", + "kpz\000kpz-Latn-UG", + "kqa\000kqa-Latn-PG", + "kqb\000kqb-Latn-PG", + "kqc\000kqc-Latn-PG", + "kqd\000kqd-Syrc-IQ", + "kqe\000kqe-Latn-PH", + "kqf\000kqf-Latn-PG", + "kqg\000kqg-Latn-BF", + "kqh\000kqh-Latn-TZ", + "kqi\000kqi-Latn-PG", + "kqj\000kqj-Latn-PG", + "kqk\000kqk-Latn-BJ", + "kql\000kql-Latn-PG", + "kqm\000kqm-Latn-CI", + "kqn\000kqn-Latn-ZM", + "kqo\000kqo-Latn-LR", + "kqp\000kqp-Latn-TD", + "kqq\000kqq-Latn-BR", + "kqr\000kqr-Latn-MY", + "kqs\000kqs-Latn-GN", + "kqt\000kqt-Latn-MY", + "kqu\000kqu-Latn-ZA", + "kqv\000kqv-Latn-ID", + "kqw\000kqw-Latn-PG", + "kqx\000kqx-Latn-CM", + "kqy\000kqy-Ethi-ET", + "kqz\000kqz-Latn-ZA", + "kr\000kr-Latn-NG", + "kra\000kra-Deva-NP", + "krb\000krb-Latn-US", + "krc\000krc-Cyrl-RU", + "krd\000krd-Latn-TL", + "kre\000kre-Latn-BR", + "krf\000krf-Latn-VU", + "krh\000krh-Latn-NG", + "kri\000kri-Latn-SL", + "krj\000krj-Latn-PH", + "krk\000krk-Cyrl-RU", + "krl\000krl-Latn-RU", + "krn\000krn-Latn-LR", + "kro\000kro-Latn-LR", + "krp\000krp-Latn-NG", + "krr\000krr-Khmr-KH", + "krs\000krs-Latn-SS", + "krt\000krt-Latn-NE", + "kru\000kru-Deva-IN", + "krv\000krv-Khmr-KH", + "krw\000krw-Latn-LR", + "krx\000krx-Latn-SN", + "kry\000kry-Latn-AZ", + "krz\000krz-Latn-ID", + "ks\000ks-Arab-IN", + "ksb\000ksb-Latn-TZ", + "ksc\000ksc-Latn-PH", + "ksd\000ksd-Latn-PG", + "kse\000kse-Latn-PG", + "ksf\000ksf-Latn-CM", + "ksg\000ksg-Latn-SB", + "ksh\000ksh-Latn-DE", + "ksi\000ksi-Latn-PG", + "ksj\000ksj-Latn-PG", + "ksk\000ksk-Latn-US", + "ksl\000ksl-Latn-PG", + "ksm\000ksm-Latn-NG", + "ksn\000ksn-Latn-PH", + "kso\000kso-Latn-NG", + "ksp\000ksp-Latn-CF", + "ksq\000ksq-Latn-NG", + "ksr\000ksr-Latn-PG", + "kss\000kss-Latn-LR", + "kst\000kst-Latn-BF", + "ksu\000ksu-Mymr-IN", + "ksv\000ksv-Latn-CD", + "ksw\000ksw-Mymr-MM", + "ksx\000ksx-Latn-ID", + "ksz\000ksz-Deva-IN", + "kta\000kta-Latn-VN", + "ktb\000ktb-Ethi-ET", + "ktc\000ktc-Latn-NG", + "ktd\000ktd-Latn-AU", + "kte\000kte-Deva-NP", + "ktf\000ktf-Latn-CD", + "ktg\000ktg-Latn-AU", + "kth\000kth-Latn-TD", + "kti\000kti-Latn-ID", + "ktj\000ktj-Latn-CI", + "ktk\000ktk-Latn-PG", + "ktl\000ktl-Arab-IR", + "ktm\000ktm-Latn-PG", + "ktn\000ktn-Latn-BR", + "kto\000kto-Latn-PG", + "ktp\000ktp-Plrd-CN", + "ktq\000ktq-Latn-PH", + "kts\000kts-Latn-ID", + "ktt\000ktt-Latn-ID", + "ktu\000ktu-Latn-CD", + "ktv\000ktv-Latn-VN", + "ktw\000ktw-Latn-US", + "ktx\000ktx-Latn-BR", + "kty\000kty-Latn-CD", + "ktz\000ktz-Latn-NA", + "ku\000ku-Latn-TR", + "ku-AM\000ku-Cyrl-AM", + "ku-AZ\000ku-Cyrl-AZ", + "ku-Arab\000ku-Arab-IQ", + "ku-Cyrl\000ku-Cyrl-AM", + "ku-GE\000ku-Cyrl-GE", + "ku-IQ\000ku-Arab-IQ", + "ku-IR\000ku-Arab-IR", + "ku-LB\000ku-Arab-LB", + "ku-TM\000ku-Cyrl-TM", + "ku-Yezi\000ku-Yezi-GE", + "kub\000kub-Latn-NG", + "kuc\000kuc-Latn-ID", + "kud\000kud-Latn-PG", + "kue\000kue-Latn-PG", + "kuf\000kuf-Laoo-LA", + "kug\000kug-Latn-NG", + "kuh\000kuh-Latn-NG", + "kui\000kui-Latn-BR", + "kuj\000kuj-Latn-TZ", + "kuk\000kuk-Latn-ID", + "kul\000kul-Latn-NG", + "kum\000kum-Cyrl-RU", + "kun\000kun-Latn-ER", + "kuo\000kuo-Latn-PG", + "kup\000kup-Latn-PG", + "kuq\000kuq-Latn-BR", + "kus\000kus-Latn-GH", + "kut\000kut-Latn-CA", + "kuu\000kuu-Latn-US", + "kuv\000kuv-Latn-ID", + "kuw\000kuw-Latn-CF", + "kux\000kux-Latn-AU", + "kuy\000kuy-Latn-AU", + "kuz\000kuz-Latn-CL", + "kv\000kv-Cyrl-RU", + "kva\000kva-Cyrl-RU", + "kvb\000kvb-Latn-ID", + "kvc\000kvc-Latn-PG", + "kvd\000kvd-Latn-ID", + "kve\000kve-Latn-MY", + "kvf\000kvf-Latn-TD", + "kvg\000kvg-Latn-PG", + "kvh\000kvh-Latn-ID", + "kvi\000kvi-Latn-TD", + "kvj\000kvj-Latn-CM", + "kvl\000kvl-Latn-MM", + "kvm\000kvm-Latn-CM", + "kvn\000kvn-Latn-CO", + "kvo\000kvo-Latn-ID", + "kvp\000kvp-Latn-ID", + "kvq\000kvq-Mymr-MM", + "kvr\000kvr-Latn-ID", + "kvt\000kvt-Mymr-MM", + "kvv\000kvv-Latn-ID", + "kvw\000kvw-Latn-ID", + "kvx\000kvx-Arab-PK", + "kvy\000kvy-Kali-MM", + "kvz\000kvz-Latn-ID", + "kw\000kw-Latn-GB", + "kwa\000kwa-Latn-BR", + "kwb\000kwb-Latn-NG", + "kwc\000kwc-Latn-CG", + "kwd\000kwd-Latn-SB", + "kwe\000kwe-Latn-ID", + "kwf\000kwf-Latn-SB", + "kwg\000kwg-Latn-TD", + "kwh\000kwh-Latn-ID", + "kwi\000kwi-Latn-CO", + "kwj\000kwj-Latn-PG", + "kwk\000kwk-Latn-CA", + "kwl\000kwl-Latn-NG", + "kwm\000kwm-Latn-NA", + "kwn\000kwn-Latn-NA", + "kwo\000kwo-Latn-PG", + "kwp\000kwp-Latn-CI", + "kwr\000kwr-Latn-ID", + "kws\000kws-Latn-CD", + "kwt\000kwt-Latn-ID", + "kwu\000kwu-Latn-CM", + "kwv\000kwv-Latn-TD", + "kww\000kww-Latn-SR", + "kwx\000kwx-Deva-IN", + "kwy\000kwy-Latn-AO", + "kwz\000kwz-Latn-AO", + "kxa\000kxa-Latn-PG", + "kxb\000kxb-Latn-CI", + "kxc\000kxc-Latn-ET", + "kxd\000kxd-Latn-BN", + "kxf\000kxf-Mymr-MM", + "kxi\000kxi-Latn-MY", + "kxj\000kxj-Latn-TD", + "kxk\000kxk-Mymr-MM", + "kxm\000kxm-Thai-TH", + "kxn\000kxn-Latn-MY", + "kxo\000kxo-Latn-BR", + "kxp\000kxp-Arab-PK", + "kxq\000kxq-Latn-ID", + "kxr\000kxr-Latn-PG", + "kxt\000kxt-Latn-PG", + "kxv\000kxv-Latn-IN", + "kxw\000kxw-Latn-PG", + "kxx\000kxx-Latn-CG", + "kxy\000kxy-Latn-VN", + "kxz\000kxz-Latn-PG", + "ky\000ky-Cyrl-KG", + "ky-Arab\000ky-Arab-CN", + "ky-CN\000ky-Arab-CN", + "ky-Latn\000ky-Latn-TR", + "ky-TR\000ky-Latn-TR", + "kya\000kya-Latn-TZ", + "kyb\000kyb-Latn-PH", + "kyc\000kyc-Latn-PG", + "kyd\000kyd-Latn-ID", + "kye\000kye-Latn-GH", + "kyf\000kyf-Latn-CI", + "kyg\000kyg-Latn-PG", + "kyh\000kyh-Latn-US", + "kyi\000kyi-Latn-MY", + "kyj\000kyj-Latn-PH", + "kyk\000kyk-Latn-PH", + "kyl\000kyl-Latn-US", + "kym\000kym-Latn-CF", + "kyn\000kyn-Latn-PH", + "kyo\000kyo-Latn-ID", + "kyq\000kyq-Latn-TD", + "kyr\000kyr-Latn-BR", + "kys\000kys-Latn-MY", + "kyt\000kyt-Latn-ID", + "kyu\000kyu-Kali-MM", + "kyv\000kyv-Deva-NP", + "kyw\000kyw-Deva-IN", + "kyx\000kyx-Latn-PG", + "kyy\000kyy-Latn-PG", + "kyz\000kyz-Latn-BR", + "kza\000kza-Latn-BF", + "kzb\000kzb-Latn-ID", + "kzc\000kzc-Latn-CI", + "kzd\000kzd-Latn-ID", + "kze\000kze-Latn-PG", + "kzf\000kzf-Latn-ID", + "kzi\000kzi-Latn-MY", + "kzk\000kzk-Latn-SB", + "kzl\000kzl-Latn-ID", + "kzm\000kzm-Latn-ID", + "kzn\000kzn-Latn-MW", + "kzo\000kzo-Latn-GA", + "kzp\000kzp-Latn-ID", + "kzr\000kzr-Latn-CM", + "kzs\000kzs-Latn-MY", + "kzu\000kzu-Latn-ID", + "kzv\000kzv-Latn-ID", + "kzw\000kzw-Latn-BR", + "kzx\000kzx-Latn-ID", + "kzy\000kzy-Latn-CD", + "kzz\000kzz-Latn-ID", + "la\000la-Latn-VA", + "laa\000laa-Latn-PH", + "lab\000lab-Lina-GR", + "lac\000lac-Latn-MX", + "lad\000lad-Hebr-IL", + "lae\000lae-Deva-IN", + "lag\000lag-Latn-TZ", + "lah\000lah-Arab-PK", + "lai\000lai-Latn-MW", + "laj\000laj-Latn-UG", + "lal\000lal-Latn-CD", + "lam\000lam-Latn-ZM", + "lan\000lan-Latn-NG", + "lap\000lap-Latn-TD", + "laq\000laq-Latn-VN", + "lar\000lar-Latn-GH", + "las\000las-Latn-TG", + "lau\000lau-Latn-ID", + "law\000law-Latn-ID", + "lax\000lax-Latn-IN", + "laz\000laz-Latn-PG", + "lb\000lb-Latn-LU", + "lbb\000lbb-Latn-PG", + "lbe\000lbe-Cyrl-RU", + "lbf\000lbf-Deva-IN", + "lbi\000lbi-Latn-CM", + "lbj\000lbj-Tibt-IN", + "lbl\000lbl-Latn-PH", + "lbm\000lbm-Deva-IN", + "lbn\000lbn-Latn-LA", + "lbo\000lbo-Laoo-LA", + "lbq\000lbq-Latn-PG", + "lbr\000lbr-Deva-NP", + "lbt\000lbt-Latn-VN", + "lbu\000lbu-Latn-PG", + "lbv\000lbv-Latn-PG", + "lbw\000lbw-Latn-ID", + "lbx\000lbx-Latn-ID", + "lby\000lby-Latn-AU", + "lbz\000lbz-Latn-AU", + "lcc\000lcc-Latn-ID", + "lcd\000lcd-Latn-ID", + "lce\000lce-Latn-ID", + "lcf\000lcf-Latn-ID", + "lch\000lch-Latn-AO", + "lcl\000lcl-Latn-ID", + "lcm\000lcm-Latn-PG", + "lcp\000lcp-Thai-CN", + "lcq\000lcq-Latn-ID", + "lcs\000lcs-Latn-ID", + "lda\000lda-Latn-CI", + "ldb\000ldb-Latn-NG", + "ldd\000ldd-Latn-NG", + "ldg\000ldg-Latn-NG", + "ldh\000ldh-Latn-NG", + "ldi\000ldi-Latn-CG", + "ldj\000ldj-Latn-NG", + "ldk\000ldk-Latn-NG", + "ldl\000ldl-Latn-NG", + "ldm\000ldm-Latn-GN", + "ldn\000ldn-Latn-001", + "ldo\000ldo-Latn-NG", + "ldp\000ldp-Latn-NG", + "ldq\000ldq-Latn-NG", + "lea\000lea-Latn-CD", + "leb\000leb-Latn-ZM", + "lec\000lec-Latn-BO", + "led\000led-Latn-CD", + "lee\000lee-Latn-BF", + "lef\000lef-Latn-GH", + "leh\000leh-Latn-ZM", + "lei\000lei-Latn-PG", + "lej\000lej-Latn-CD", + "lek\000lek-Latn-PG", + "lel\000lel-Latn-CD", + "lem\000lem-Latn-CM", + "len\000len-Latn-SV", + "leo\000leo-Latn-CM", + "lep\000lep-Lepc-IN", + "leq\000leq-Latn-PG", + "ler\000ler-Latn-PG", + "les\000les-Latn-CD", + "let\000let-Latn-PG", + "leu\000leu-Latn-PG", + "lev\000lev-Latn-ID", + "lew\000lew-Latn-ID", + "lex\000lex-Latn-ID", + "ley\000ley-Latn-ID", + "lez\000lez-Cyrl-RU", + "lfa\000lfa-Latn-CM", + "lfn\000lfn-Latn-001", + "lg\000lg-Latn-UG", + "lga\000lga-Latn-SB", + "lgb\000lgb-Latn-SB", + "lgg\000lgg-Latn-UG", + "lgh\000lgh-Latn-VN", + "lgi\000lgi-Latn-ID", + "lgk\000lgk-Latn-VU", + "lgl\000lgl-Latn-SB", + "lgm\000lgm-Latn-CD", + "lgn\000lgn-Latn-ET", + "lgo\000lgo-Latn-SS", + "lgq\000lgq-Latn-GH", + "lgr\000lgr-Latn-SB", + "lgt\000lgt-Latn-PG", + "lgu\000lgu-Latn-SB", + "lgz\000lgz-Latn-CD", + "lha\000lha-Latn-VN", + "lhh\000lhh-Latn-ID", + "lhi\000lhi-Latn-CN", + "lhm\000lhm-Deva-NP", + "lhn\000lhn-Latn-MY", + "lhs\000lhs-Syrc-SY", + "lht\000lht-Latn-VU", + "lhu\000lhu-Latn-CN", + "li\000li-Latn-NL", + "lia\000lia-Latn-SL", + "lib\000lib-Latn-PG", + "lic\000lic-Latn-CN", + "lid\000lid-Latn-PG", + "lie\000lie-Latn-CD", + "lif\000lif-Deva-NP", + "lif-Limb\000lif-Limb-IN", + "lig\000lig-Latn-GH", + "lih\000lih-Latn-PG", + "lij\000lij-Latn-IT", + "lik\000lik-Latn-CD", + "lil\000lil-Latn-CA", + "lio\000lio-Latn-ID", + "lip\000lip-Latn-GH", + "liq\000liq-Latn-ET", + "lir\000lir-Latn-LR", + "lis\000lis-Lisu-CN", + "liu\000liu-Latn-SD", + "liv\000liv-Latn-LV", + "liw\000liw-Latn-ID", + "lix\000lix-Latn-ID", + "liy\000liy-Latn-CF", + "liz\000liz-Latn-CD", + "lja\000lja-Latn-AU", + "lje\000lje-Latn-ID", + "lji\000lji-Latn-ID", + "ljl\000ljl-Latn-ID", + "ljp\000ljp-Latn-ID", + "ljw\000ljw-Latn-AU", + "ljx\000ljx-Latn-AU", + "lka\000lka-Latn-TL", + "lkb\000lkb-Latn-KE", + "lkc\000lkc-Latn-VN", + "lkd\000lkd-Latn-BR", + "lke\000lke-Latn-UG", + "lkh\000lkh-Tibt-BT", + "lki\000lki-Arab-IR", + "lkj\000lkj-Latn-MY", + "lkl\000lkl-Latn-PG", + "lkm\000lkm-Latn-AU", + "lkn\000lkn-Latn-VU", + "lko\000lko-Latn-KE", + "lkr\000lkr-Latn-SS", + "lks\000lks-Latn-KE", + "lkt\000lkt-Latn-US", + "lku\000lku-Latn-AU", + "lky\000lky-Latn-SS", + "lla\000lla-Latn-NG", + "llb\000llb-Latn-MZ", + "llc\000llc-Latn-GN", + "lld\000lld-Latn-IT", + "lle\000lle-Latn-PG", + "llf\000llf-Latn-PG", + "llg\000llg-Latn-ID", + "lli\000lli-Latn-CG", + "llj\000llj-Latn-AU", + "llk\000llk-Latn-MY", + "lll\000lll-Latn-PG", + "llm\000llm-Latn-ID", + "lln\000lln-Latn-TD", + "llp\000llp-Latn-VU", + "llq\000llq-Latn-ID", + "llu\000llu-Latn-SB", + "llx\000llx-Latn-FJ", + "lma\000lma-Latn-GN", + "lmb\000lmb-Latn-VU", + "lmc\000lmc-Latn-AU", + "lmd\000lmd-Latn-SD", + "lme\000lme-Latn-TD", + "lmf\000lmf-Latn-ID", + "lmg\000lmg-Latn-PG", + "lmh\000lmh-Deva-NP", + "lmi\000lmi-Latn-CD", + "lmj\000lmj-Latn-ID", + "lmk\000lmk-Latn-IN", + "lml\000lml-Latn-VU", + "lmn\000lmn-Telu-IN", + "lmo\000lmo-Latn-IT", + "lmp\000lmp-Latn-CM", + "lmq\000lmq-Latn-ID", + "lmr\000lmr-Latn-ID", + "lmu\000lmu-Latn-VU", + "lmv\000lmv-Latn-FJ", + "lmw\000lmw-Latn-US", + "lmx\000lmx-Latn-CM", + "lmy\000lmy-Latn-ID", + "ln\000ln-Latn-CD", + "lna\000lna-Latn-CF", + "lnb\000lnb-Latn-NA", + "lnd\000lnd-Latn-ID", + "lng\000lng-Latn-HU", + "lnh\000lnh-Latn-MY", + "lni\000lni-Latn-PG", + "lnj\000lnj-Latn-AU", + "lnl\000lnl-Latn-CF", + "lnm\000lnm-Latn-PG", + "lnn\000lnn-Latn-VU", + "lns\000lns-Latn-CM", + "lnu\000lnu-Latn-NG", + "lnw\000lnw-Latn-AU", + "lnz\000lnz-Latn-CD", + "lo\000lo-Laoo-LA", + "loa\000loa-Latn-ID", + "lob\000lob-Latn-BF", + "loc\000loc-Latn-PH", + "loe\000loe-Latn-ID", + "log\000log-Latn-CD", + "loh\000loh-Latn-SS", + "loi\000loi-Latn-CI", + "loj\000loj-Latn-PG", + "lok\000lok-Latn-SL", + "lol\000lol-Latn-CD", + "lom\000lom-Latn-LR", + "lon\000lon-Latn-MW", + "loo\000loo-Latn-CD", + "lop\000lop-Latn-NG", + "loq\000loq-Latn-CD", + "lor\000lor-Latn-CI", + "los\000los-Latn-PG", + "lot\000lot-Latn-SS", + "lou\000lou-Latn-US", + "low\000low-Latn-MY", + "lox\000lox-Latn-ID", + "loy\000loy-Deva-NP", + "loz\000loz-Latn-ZM", + "lpa\000lpa-Latn-VU", + "lpe\000lpe-Latn-ID", + "lpn\000lpn-Latn-MM", + "lpo\000lpo-Plrd-CN", + "lpx\000lpx-Latn-SS", + "lqr\000lqr-Latn-SS", + "lra\000lra-Latn-MY", + "lrc\000lrc-Arab-IR", + "lrg\000lrg-Latn-AU", + "lri\000lri-Latn-KE", + "lrk\000lrk-Arab-PK", + "lrl\000lrl-Arab-IR", + "lrm\000lrm-Latn-KE", + "lrn\000lrn-Latn-ID", + "lro\000lro-Latn-SD", + "lrt\000lrt-Latn-ID", + "lrv\000lrv-Latn-VU", + "lrz\000lrz-Latn-VU", + "lsa\000lsa-Arab-IR", + "lsd\000lsd-Hebr-IL", + "lse\000lse-Latn-CD", + "lsi\000lsi-Latn-MM", + "lsm\000lsm-Latn-UG", + "lsr\000lsr-Latn-PG", + "lss\000lss-Arab-PK", + "lt\000lt-Latn-LT", + "ltc\000ltc-Hant-CN", + "ltg\000ltg-Latn-LV", + "lth\000lth-Latn-UG", + "lti\000lti-Latn-ID", + "ltn\000ltn-Latn-BR", + "lto\000lto-Latn-KE", + "lts\000lts-Latn-KE", + "ltu\000ltu-Latn-ID", + "lu\000lu-Latn-CD", + "lua\000lua-Latn-CD", + "luc\000luc-Latn-UG", + "lud\000lud-Latn-RU", + "lue\000lue-Latn-ZM", + "luf\000luf-Latn-PG", + "luh\000luh-Hans-CN", + "lui\000lui-Latn-US", + "luj\000luj-Latn-CD", + "luk\000luk-Tibt-BT", + "lul\000lul-Latn-SS", + "lum\000lum-Latn-AO", + "lun\000lun-Latn-ZM", + "luo\000luo-Latn-KE", + "lup\000lup-Latn-GA", + "luq\000luq-Latn-CU", + "lur\000lur-Latn-ID", + "lus\000lus-Latn-IN", + "lut\000lut-Latn-US", + "luu\000luu-Deva-NP", + "luv\000luv-Arab-OM", + "luw\000luw-Latn-CM", + "luy\000luy-Latn-KE", + "luz\000luz-Arab-IR", + "lv\000lv-Latn-LV", + "lva\000lva-Latn-TL", + "lvi\000lvi-Latn-LA", + "lvk\000lvk-Latn-SB", + "lvl\000lvl-Latn-CD", + "lvu\000lvu-Latn-ID", + "lwa\000lwa-Latn-CD", + "lwe\000lwe-Latn-ID", + "lwg\000lwg-Latn-KE", + "lwh\000lwh-Latn-VN", + "lwl\000lwl-Thai-TH", + "lwm\000lwm-Thai-CN", + "lwo\000lwo-Latn-SS", + "lwt\000lwt-Latn-ID", + "lww\000lww-Latn-VU", + "lxm\000lxm-Latn-PG", + "lya\000lya-Tibt-BT", + "lyn\000lyn-Latn-ZM", + "lzh\000lzh-Hant-CN", + "lzl\000lzl-Latn-VU", + "lzn\000lzn-Latn-MM", + "lzz\000lzz-Latn-TR", + "lzz-GE\000lzz-Geor-GE", + "lzz-Geor\000lzz-Geor-GE", + "maa\000maa-Latn-MX", + "mab\000mab-Latn-MX", + "mad\000mad-Latn-ID", + "mae\000mae-Latn-NG", + "maf\000maf-Latn-CM", + "mag\000mag-Deva-IN", + "mai\000mai-Deva-IN", + "maj\000maj-Latn-MX", + "mak\000mak-Latn-ID", + "mam\000mam-Latn-GT", + "man\000man-Latn-GM", + "man-Nkoo\000man-Nkoo-GN", + "maq\000maq-Latn-MX", + "mas\000mas-Latn-KE", + "mat\000mat-Latn-MX", + "mau\000mau-Latn-MX", + "mav\000mav-Latn-BR", + "maw\000maw-Latn-GH", + "max\000max-Latn-ID", + "maz\000maz-Latn-MX", + "mba\000mba-Latn-PH", + "mbb\000mbb-Latn-PH", + "mbc\000mbc-Latn-BR", + "mbd\000mbd-Latn-PH", + "mbf\000mbf-Latn-SG", + "mbh\000mbh-Latn-PG", + "mbi\000mbi-Latn-PH", + "mbj\000mbj-Latn-BR", + "mbk\000mbk-Latn-PG", + "mbl\000mbl-Latn-BR", + "mbm\000mbm-Latn-CG", + "mbn\000mbn-Latn-CO", + "mbo\000mbo-Latn-CM", + "mbp\000mbp-Latn-CO", + "mbq\000mbq-Latn-PG", + "mbr\000mbr-Latn-CO", + "mbs\000mbs-Latn-PH", + "mbt\000mbt-Latn-PH", + "mbu\000mbu-Latn-NG", + "mbv\000mbv-Latn-GN", + "mbw\000mbw-Latn-PG", + "mbx\000mbx-Latn-PG", + "mby\000mby-Arab-PK", + "mbz\000mbz-Latn-MX", + "mca\000mca-Latn-PY", + "mcb\000mcb-Latn-PE", + "mcc\000mcc-Latn-PG", + "mcd\000mcd-Latn-PE", + "mce\000mce-Latn-MX", + "mcf\000mcf-Latn-PE", + "mcg\000mcg-Latn-VE", + "mch\000mch-Latn-VE", + "mci\000mci-Latn-PG", + "mcj\000mcj-Latn-NG", + "mck\000mck-Latn-AO", + "mcl\000mcl-Latn-CO", + "mcm\000mcm-Latn-MY", + "mcn\000mcn-Latn-TD", + "mco\000mco-Latn-MX", + "mcp\000mcp-Latn-CM", + "mcq\000mcq-Latn-PG", + "mcr\000mcr-Latn-PG", + "mcs\000mcs-Latn-CM", + "mct\000mct-Latn-CM", + "mcu\000mcu-Latn-CM", + "mcv\000mcv-Latn-PG", + "mcw\000mcw-Latn-TD", + "mcx\000mcx-Latn-CF", + "mcy\000mcy-Latn-PG", + "mcz\000mcz-Latn-PG", + "mda\000mda-Latn-NG", + "mdb\000mdb-Latn-PG", + "mdc\000mdc-Latn-PG", + "mdd\000mdd-Latn-CM", + "mde\000mde-Arab-TD", + "mdf\000mdf-Cyrl-RU", + "mdg\000mdg-Latn-TD", + "mdh\000mdh-Latn-PH", + "mdi\000mdi-Latn-CD", + "mdj\000mdj-Latn-CD", + "mdk\000mdk-Latn-CD", + "mdm\000mdm-Latn-CD", + "mdn\000mdn-Latn-CF", + "mdp\000mdp-Latn-CD", + "mdq\000mdq-Latn-CD", + "mdr\000mdr-Latn-ID", + "mds\000mds-Latn-PG", + "mdt\000mdt-Latn-CG", + "mdu\000mdu-Latn-CG", + "mdv\000mdv-Latn-MX", + "mdw\000mdw-Latn-CG", + "mdx\000mdx-Ethi-ET", + "mdy\000mdy-Ethi-ET", + "mdz\000mdz-Latn-BR", + "mea\000mea-Latn-CM", + "meb\000meb-Latn-PG", + "mec\000mec-Latn-AU", + "med\000med-Latn-PG", + "mee\000mee-Latn-PG", + "meh\000meh-Latn-MX", + "mej\000mej-Latn-ID", + "mek\000mek-Latn-PG", + "mel\000mel-Latn-MY", + "mem\000mem-Latn-AU", + "men\000men-Latn-SL", + "meo\000meo-Latn-MY", + "mep\000mep-Latn-AU", + "meq\000meq-Latn-CM", + "mer\000mer-Latn-KE", + "mes\000mes-Latn-TD", + "met\000met-Latn-PG", + "meu\000meu-Latn-PG", + "mev\000mev-Latn-LR", + "mew\000mew-Latn-NG", + "mey\000mey-Arab-DZ", + "mey-Latn\000mey-Latn-SN", + "mey-SN\000mey-Latn-SN", + "mez\000mez-Latn-US", + "mfa\000mfa-Arab-TH", + "mfb\000mfb-Latn-ID", + "mfc\000mfc-Latn-CD", + "mfd\000mfd-Latn-CM", + "mfe\000mfe-Latn-MU", + "mff\000mff-Latn-CM", + "mfg\000mfg-Latn-GN", + "mfh\000mfh-Latn-CM", + "mfi\000mfi-Arab-CM", + "mfj\000mfj-Latn-CM", + "mfk\000mfk-Latn-CM", + "mfl\000mfl-Latn-NG", + "mfm\000mfm-Latn-NG", + "mfn\000mfn-Latn-NG", + "mfo\000mfo-Latn-NG", + "mfp\000mfp-Latn-ID", + "mfq\000mfq-Latn-TG", + "mfr\000mfr-Latn-AU", + "mft\000mft-Latn-PG", + "mfu\000mfu-Latn-AO", + "mfv\000mfv-Latn-SN", + "mfw\000mfw-Latn-PG", + "mfx\000mfx-Latn-ET", + "mfy\000mfy-Latn-MX", + "mfz\000mfz-Latn-SS", + "mg\000mg-Latn-MG", + "mga\000mga-Latg-IE", + "mgb\000mgb-Latn-TD", + "mgc\000mgc-Latn-SS", + "mgd\000mgd-Latn-SS", + "mge\000mge-Latn-TD", + "mgf\000mgf-Latn-ID", + "mgg\000mgg-Latn-CM", + "mgh\000mgh-Latn-MZ", + "mgi\000mgi-Latn-NG", + "mgj\000mgj-Latn-NG", + "mgk\000mgk-Latn-ID", + "mgl\000mgl-Latn-PG", + "mgm\000mgm-Latn-TL", + "mgn\000mgn-Latn-CF", + "mgo\000mgo-Latn-CM", + "mgp\000mgp-Deva-NP", + "mgq\000mgq-Latn-TZ", + "mgr\000mgr-Latn-ZM", + "mgs\000mgs-Latn-TZ", + "mgt\000mgt-Latn-PG", + "mgu\000mgu-Latn-PG", + "mgv\000mgv-Latn-TZ", + "mgw\000mgw-Latn-TZ", + "mgy\000mgy-Latn-TZ", + "mgz\000mgz-Latn-TZ", + "mh\000mh-Latn-MH", + "mhb\000mhb-Latn-GA", + "mhc\000mhc-Latn-MX", + "mhd\000mhd-Latn-TZ", + "mhe\000mhe-Latn-MY", + "mhf\000mhf-Latn-PG", + "mhg\000mhg-Latn-AU", + "mhi\000mhi-Latn-UG", + "mhj\000mhj-Arab-AF", + "mhk\000mhk-Latn-CM", + "mhl\000mhl-Latn-PG", + "mhm\000mhm-Latn-MZ", + "mhn\000mhn-Latn-IT", + "mho\000mho-Latn-ZM", + "mhp\000mhp-Latn-ID", + "mhq\000mhq-Latn-US", + "mhs\000mhs-Latn-ID", + "mht\000mht-Latn-VE", + "mhu\000mhu-Latn-IN", + "mhw\000mhw-Latn-BW", + "mhx\000mhx-Latn-MM", + "mhy\000mhy-Latn-ID", + "mhz\000mhz-Latn-ID", + "mi\000mi-Latn-NZ", + "mia\000mia-Latn-US", + "mib\000mib-Latn-MX", + "mic\000mic-Latn-CA", + "mid\000mid-Mand-IQ", + "mie\000mie-Latn-MX", + "mif\000mif-Latn-CM", + "mig\000mig-Latn-MX", + "mih\000mih-Latn-MX", + "mii\000mii-Latn-MX", + "mij\000mij-Latn-CM", + "mik\000mik-Latn-US", + "mil\000mil-Latn-MX", + "mim\000mim-Latn-MX", + "min\000min-Latn-ID", + "mio\000mio-Latn-MX", + "mip\000mip-Latn-MX", + "miq\000miq-Latn-NI", + "mir\000mir-Latn-MX", + "mit\000mit-Latn-MX", + "miu\000miu-Latn-MX", + "miw\000miw-Latn-PG", + "mix\000mix-Latn-MX", + "miy\000miy-Latn-MX", + "miz\000miz-Latn-MX", + "mjb\000mjb-Latn-TL", + "mjc\000mjc-Latn-MX", + "mjd\000mjd-Latn-US", + "mje\000mje-Latn-TD", + "mjg\000mjg-Latn-CN", + "mjh\000mjh-Latn-TZ", + "mji\000mji-Latn-CN", + "mjj\000mjj-Latn-PG", + "mjk\000mjk-Latn-PG", + "mjl\000mjl-Deva-IN", + "mjm\000mjm-Latn-PG", + "mjn\000mjn-Latn-PG", + "mjq\000mjq-Mlym-IN", + "mjr\000mjr-Mlym-IN", + "mjs\000mjs-Latn-NG", + "mjt\000mjt-Deva-IN", + "mju\000mju-Telu-IN", + "mjv\000mjv-Mlym-IN", + "mjw\000mjw-Latn-IN", + "mjx\000mjx-Latn-BD", + "mjy\000mjy-Latn-US", + "mjz\000mjz-Deva-NP", + "mk\000mk-Cyrl-MK", + "mka\000mka-Latn-CI", + "mkb\000mkb-Deva-IN", + "mkc\000mkc-Latn-PG", + "mke\000mke-Deva-IN", + "mkf\000mkf-Latn-NG", + "mki\000mki-Arab-PK", + "mkj\000mkj-Latn-FM", + "mkk\000mkk-Latn-CM", + "mkl\000mkl-Latn-BJ", + "mkm\000mkm-Thai-TH", + "mkn\000mkn-Latn-ID", + "mko\000mko-Latn-NG", + "mkp\000mkp-Latn-PG", + "mkr\000mkr-Latn-PG", + "mks\000mks-Latn-MX", + "mkt\000mkt-Latn-NC", + "mkv\000mkv-Latn-VU", + "mkw\000mkw-Latn-CG", + "mkx\000mkx-Latn-PH", + "mky\000mky-Latn-ID", + "mkz\000mkz-Latn-TL", + "ml\000ml-Mlym-IN", + "mla\000mla-Latn-VU", + "mlb\000mlb-Latn-CM", + "mlc\000mlc-Latn-VN", + "mle\000mle-Latn-PG", + "mlf\000mlf-Thai-LA", + "mlh\000mlh-Latn-PG", + "mli\000mli-Latn-ID", + "mlj\000mlj-Latn-TD", + "mlk\000mlk-Latn-KE", + "mll\000mll-Latn-VU", + "mln\000mln-Latn-SB", + "mlo\000mlo-Latn-SN", + "mlp\000mlp-Latn-PG", + "mlr\000mlr-Latn-CM", + "mls\000mls-Latn-SD", + "mlu\000mlu-Latn-SB", + "mlv\000mlv-Latn-VU", + "mlw\000mlw-Latn-CM", + "mlx\000mlx-Latn-VU", + "mlz\000mlz-Latn-PH", + "mma\000mma-Latn-NG", + "mmb\000mmb-Latn-ID", + "mmc\000mmc-Latn-MX", + "mmd\000mmd-Latn-CN", + "mme\000mme-Latn-VU", + "mmf\000mmf-Latn-NG", + "mmg\000mmg-Latn-VU", + "mmh\000mmh-Latn-BR", + "mmi\000mmi-Latn-PG", + "mmm\000mmm-Latn-VU", + "mmn\000mmn-Latn-PH", + "mmo\000mmo-Latn-PG", + "mmp\000mmp-Latn-PG", + "mmq\000mmq-Latn-PG", + "mmr\000mmr-Latn-CN", + "mmt\000mmt-Latn-PG", + "mmu\000mmu-Latn-CM", + "mmv\000mmv-Latn-BR", + "mmw\000mmw-Latn-VU", + "mmx\000mmx-Latn-PG", + "mmy\000mmy-Latn-TD", + "mmz\000mmz-Latn-CD", + "mn\000mn-Cyrl-MN", + "mn-CN\000mn-Mong-CN", + "mn-Mong\000mn-Mong-CN", + "mna\000mna-Latn-PG", + "mnb\000mnb-Latn-ID", + "mnc\000mnc-Mong-CN", + "mnd\000mnd-Latn-BR", + "mne\000mne-Latn-TD", + "mnf\000mnf-Latn-CM", + "mng\000mng-Latn-VN", + "mnh\000mnh-Latn-CD", + "mni\000mni-Beng-IN", + "mnj\000mnj-Arab-AF", + "mnk\000mnk-Latn-GM", + "mnl\000mnl-Latn-VU", + "mnm\000mnm-Latn-PG", + "mnn\000mnn-Latn-VN", + "mnp\000mnp-Latn-CN", + "mnq\000mnq-Latn-MY", + "mnr\000mnr-Latn-US", + "mns\000mns-Cyrl-RU", + "mnu\000mnu-Latn-ID", + "mnv\000mnv-Latn-SB", + "mnw\000mnw-Mymr-MM", + "mnx\000mnx-Latn-ID", + "mny\000mny-Latn-MZ", + "mnz\000mnz-Latn-ID", + "mo\000mo-Latn-RO", + "moa\000moa-Latn-CI", + "moc\000moc-Latn-AR", + "mod\000mod-Latn-US", + "moe\000moe-Latn-CA", + "mog\000mog-Latn-ID", + "moh\000moh-Latn-CA", + "moi\000moi-Latn-NG", + "moj\000moj-Latn-CG", + "mok\000mok-Latn-ID", + "mom\000mom-Latn-NI", + "moo\000moo-Latn-VN", + "mop\000mop-Latn-BZ", + "moq\000moq-Latn-ID", + "mor\000mor-Latn-SD", + "mos\000mos-Latn-BF", + "mot\000mot-Latn-CO", + "mou\000mou-Latn-TD", + "mov\000mov-Latn-US", + "mow\000mow-Latn-CG", + "mox\000mox-Latn-PG", + "moy\000moy-Latn-ET", + "moz\000moz-Latn-TD", + "mpa\000mpa-Latn-TZ", + "mpb\000mpb-Latn-AU", + "mpc\000mpc-Latn-AU", + "mpd\000mpd-Latn-BR", + "mpe\000mpe-Latn-ET", + "mpg\000mpg-Latn-TD", + "mph\000mph-Latn-AU", + "mpi\000mpi-Latn-CM", + "mpj\000mpj-Latn-AU", + "mpk\000mpk-Latn-TD", + "mpl\000mpl-Latn-PG", + "mpm\000mpm-Latn-MX", + "mpn\000mpn-Latn-PG", + "mpo\000mpo-Latn-PG", + "mpp\000mpp-Latn-PG", + "mpq\000mpq-Latn-BR", + "mpr\000mpr-Latn-SB", + "mps\000mps-Latn-PG", + "mpt\000mpt-Latn-PG", + "mpu\000mpu-Latn-BR", + "mpv\000mpv-Latn-PG", + "mpw\000mpw-Latn-BR", + "mpx\000mpx-Latn-PG", + "mpy\000mpy-Latn-ID", + "mpz\000mpz-Thai-TH", + "mqa\000mqa-Latn-ID", + "mqb\000mqb-Latn-CM", + "mqc\000mqc-Latn-ID", + "mqe\000mqe-Latn-PG", + "mqf\000mqf-Latn-ID", + "mqg\000mqg-Latn-ID", + "mqh\000mqh-Latn-MX", + "mqi\000mqi-Latn-ID", + "mqj\000mqj-Latn-ID", + "mqk\000mqk-Latn-PH", + "mql\000mql-Latn-BJ", + "mqm\000mqm-Latn-PF", + "mqn\000mqn-Latn-ID", + "mqo\000mqo-Latn-ID", + "mqp\000mqp-Latn-ID", + "mqq\000mqq-Latn-MY", + "mqr\000mqr-Latn-ID", + "mqs\000mqs-Latn-ID", + "mqt\000mqt-Latn-TH", + "mqu\000mqu-Latn-SS", + "mqv\000mqv-Latn-PG", + "mqw\000mqw-Latn-PG", + "mqx\000mqx-Latn-ID", + "mqy\000mqy-Latn-ID", + "mqz\000mqz-Latn-PG", + "mr\000mr-Deva-IN", + "mra\000mra-Thai-TH", + "mrb\000mrb-Latn-VU", + "mrc\000mrc-Latn-US", + "mrd\000mrd-Deva-NP", + "mrf\000mrf-Latn-ID", + "mrg\000mrg-Latn-IN", + "mrh\000mrh-Latn-IN", + "mrj\000mrj-Cyrl-RU", + "mrk\000mrk-Latn-NC", + "mrl\000mrl-Latn-FM", + "mrm\000mrm-Latn-VU", + "mrn\000mrn-Latn-SB", + "mro\000mro-Mroo-BD", + "mrp\000mrp-Latn-VU", + "mrq\000mrq-Latn-PF", + "mrr\000mrr-Deva-IN", + "mrs\000mrs-Latn-VU", + "mrt\000mrt-Latn-NG", + "mru\000mru-Latn-CM", + "mrv\000mrv-Latn-PF", + "mrw\000mrw-Latn-PH", + "mrx\000mrx-Latn-ID", + "mry\000mry-Latn-PH", + "mrz\000mrz-Latn-ID", + "ms\000ms-Latn-MY", + "ms-CC\000ms-Arab-CC", + "msb\000msb-Latn-PH", + "mse\000mse-Latn-TD", + "msf\000msf-Latn-ID", + "msg\000msg-Latn-ID", + "msh\000msh-Latn-MG", + "msi\000msi-Latn-MY", + "msj\000msj-Latn-CD", + "msk\000msk-Latn-PH", + "msl\000msl-Latn-ID", + "msm\000msm-Latn-PH", + "msn\000msn-Latn-VU", + "mso\000mso-Latn-ID", + "msp\000msp-Latn-BR", + "msq\000msq-Latn-NC", + "mss\000mss-Latn-ID", + "msu\000msu-Latn-PG", + "msv\000msv-Latn-CM", + "msw\000msw-Latn-GW", + "msx\000msx-Latn-PG", + "msy\000msy-Latn-PG", + "msz\000msz-Latn-PG", + "mt\000mt-Latn-MT", + "mta\000mta-Latn-PH", + "mtb\000mtb-Latn-CI", + "mtc\000mtc-Latn-PG", + "mtd\000mtd-Latn-ID", + "mte\000mte-Latn-SB", + "mtf\000mtf-Latn-PG", + "mtg\000mtg-Latn-ID", + "mth\000mth-Latn-ID", + "mti\000mti-Latn-PG", + "mtj\000mtj-Latn-ID", + "mtk\000mtk-Latn-CM", + "mtl\000mtl-Latn-NG", + "mtm\000mtm-Cyrl-RU", + "mtn\000mtn-Latn-NI", + "mto\000mto-Latn-MX", + "mtp\000mtp-Latn-BO", + "mtq\000mtq-Latn-VN", + "mtr\000mtr-Deva-IN", + "mts\000mts-Latn-PE", + "mtt\000mtt-Latn-VU", + "mtu\000mtu-Latn-MX", + "mtv\000mtv-Latn-PG", + "mtw\000mtw-Latn-PH", + "mtx\000mtx-Latn-MX", + "mty\000mty-Latn-PG", + "mua\000mua-Latn-CM", + "mub\000mub-Latn-TD", + "muc\000muc-Latn-CM", + "mud\000mud-Cyrl-RU", + "mue\000mue-Latn-EC", + "mug\000mug-Latn-CM", + "muh\000muh-Latn-SS", + "mui\000mui-Latn-ID", + "muj\000muj-Latn-TD", + "muk\000muk-Tibt-NP", + "mum\000mum-Latn-PG", + "muo\000muo-Latn-CM", + "muq\000muq-Latn-CN", + "mur\000mur-Latn-SS", + "mus\000mus-Latn-US", + "mut\000mut-Deva-IN", + "muu\000muu-Latn-KE", + "muv\000muv-Taml-IN", + "mux\000mux-Latn-PG", + "muy\000muy-Latn-CM", + "muz\000muz-Ethi-ET", + "mva\000mva-Latn-PG", + "mvd\000mvd-Latn-ID", + "mve\000mve-Arab-PK", + "mvf\000mvf-Mong-CN", + "mvg\000mvg-Latn-MX", + "mvh\000mvh-Latn-TD", + "mvk\000mvk-Latn-PG", + "mvl\000mvl-Latn-AU", + "mvn\000mvn-Latn-PG", + "mvo\000mvo-Latn-SB", + "mvp\000mvp-Latn-ID", + "mvq\000mvq-Latn-PG", + "mvr\000mvr-Latn-ID", + "mvs\000mvs-Latn-ID", + "mvt\000mvt-Latn-VU", + "mvu\000mvu-Latn-TD", + "mvv\000mvv-Latn-MY", + "mvw\000mvw-Latn-TZ", + "mvx\000mvx-Latn-ID", + "mvy\000mvy-Arab-PK", + "mvz\000mvz-Ethi-ET", + "mwa\000mwa-Latn-PG", + "mwb\000mwb-Latn-PG", + "mwc\000mwc-Latn-PG", + "mwe\000mwe-Latn-TZ", + "mwf\000mwf-Latn-AU", + "mwg\000mwg-Latn-PG", + "mwh\000mwh-Latn-PG", + "mwi\000mwi-Latn-VU", + "mwk\000mwk-Latn-ML", + "mwl\000mwl-Latn-PT", + "mwm\000mwm-Latn-TD", + "mwn\000mwn-Latn-ZM", + "mwo\000mwo-Latn-VU", + "mwp\000mwp-Latn-AU", + "mwq\000mwq-Latn-MM", + "mwr\000mwr-Deva-IN", + "mws\000mws-Latn-KE", + "mwt\000mwt-Mymr-MM", + "mwu\000mwu-Latn-SS", + "mwv\000mwv-Latn-ID", + "mww\000mww-Hmnp-US", + "mwz\000mwz-Latn-CD", + "mxa\000mxa-Latn-MX", + "mxb\000mxb-Latn-MX", + "mxc\000mxc-Latn-ZW", + "mxd\000mxd-Latn-ID", + "mxe\000mxe-Latn-VU", + "mxf\000mxf-Latn-CM", + "mxg\000mxg-Latn-AO", + "mxh\000mxh-Latn-CD", + "mxi\000mxi-Latn-ES", + "mxj\000mxj-Latn-IN", + "mxk\000mxk-Latn-PG", + "mxl\000mxl-Latn-BJ", + "mxm\000mxm-Latn-PG", + "mxn\000mxn-Latn-ID", + "mxo\000mxo-Latn-ZM", + "mxp\000mxp-Latn-MX", + "mxq\000mxq-Latn-MX", + "mxr\000mxr-Latn-MY", + "mxs\000mxs-Latn-MX", + "mxt\000mxt-Latn-MX", + "mxu\000mxu-Latn-CM", + "mxv\000mxv-Latn-MX", + "mxw\000mxw-Latn-PG", + "mxx\000mxx-Latn-CI", + "mxy\000mxy-Latn-MX", + "mxz\000mxz-Latn-ID", + "my\000my-Mymr-MM", + "myb\000myb-Latn-TD", + "myc\000myc-Latn-CD", + "mye\000mye-Latn-GA", + "myf\000myf-Latn-ET", + "myg\000myg-Latn-CM", + "myh\000myh-Latn-US", + "myj\000myj-Latn-SS", + "myk\000myk-Latn-ML", + "myl\000myl-Latn-ID", + "mym\000mym-Ethi-ET", + "myp\000myp-Latn-BR", + "myr\000myr-Latn-PE", + "myu\000myu-Latn-BR", + "myv\000myv-Cyrl-RU", + "myw\000myw-Latn-PG", + "myx\000myx-Latn-UG", + "myy\000myy-Latn-CO", + "myz\000myz-Mand-IR", + "mza\000mza-Latn-MX", + "mzb\000mzb-Arab-DZ", + "mzd\000mzd-Latn-CM", + "mze\000mze-Latn-PG", + "mzh\000mzh-Latn-AR", + "mzi\000mzi-Latn-MX", + "mzj\000mzj-Latn-LR", + "mzk\000mzk-Latn-NG", + "mzl\000mzl-Latn-MX", + "mzm\000mzm-Latn-NG", + "mzn\000mzn-Arab-IR", + "mzo\000mzo-Latn-BR", + "mzp\000mzp-Latn-BO", + "mzq\000mzq-Latn-ID", + "mzr\000mzr-Latn-BR", + "mzt\000mzt-Latn-MY", + "mzu\000mzu-Latn-PG", + "mzv\000mzv-Latn-CF", + "mzw\000mzw-Latn-GH", + "mzx\000mzx-Latn-GY", + "mzz\000mzz-Latn-PG", + "na\000na-Latn-NR", + "naa\000naa-Latn-ID", + "nab\000nab-Latn-BR", + "nac\000nac-Latn-PG", + "nae\000nae-Latn-ID", + "naf\000naf-Latn-PG", + "nag\000nag-Latn-IN", + "naj\000naj-Latn-GN", + "nak\000nak-Latn-PG", + "nal\000nal-Latn-PG", + "nam\000nam-Latn-AU", + "nan\000nan-Hans-CN", + "nan-Hant\000nan-Hant-TW", + "nan-MO\000nan-Hant-MO", + "nan-TW\000nan-Hant-TW", + "nao\000nao-Deva-NP", + "nap\000nap-Latn-IT", + "naq\000naq-Latn-NA", + "nar\000nar-Latn-NG", + "nas\000nas-Latn-PG", + "nat\000nat-Latn-NG", + "naw\000naw-Latn-GH", + "nax\000nax-Latn-PG", + "nay\000nay-Latn-AU", + "naz\000naz-Latn-MX", + "nb\000nb-Latn-NO", + "nba\000nba-Latn-AO", + "nbb\000nbb-Latn-NG", + "nbc\000nbc-Latn-IN", + "nbd\000nbd-Latn-CD", + "nbe\000nbe-Latn-IN", + "nbh\000nbh-Latn-NG", + "nbi\000nbi-Latn-IN", + "nbj\000nbj-Latn-AU", + "nbk\000nbk-Latn-PG", + "nbm\000nbm-Latn-CF", + "nbn\000nbn-Latn-ID", + "nbo\000nbo-Latn-NG", + "nbp\000nbp-Latn-NG", + "nbq\000nbq-Latn-ID", + "nbr\000nbr-Latn-NG", + "nbt\000nbt-Latn-IN", + "nbu\000nbu-Latn-IN", + "nbv\000nbv-Latn-CM", + "nbw\000nbw-Latn-CD", + "nby\000nby-Latn-PG", + "nca\000nca-Latn-PG", + "ncb\000ncb-Latn-IN", + "ncc\000ncc-Latn-PG", + "ncd\000ncd-Deva-NP", + "nce\000nce-Latn-PG", + "ncf\000ncf-Latn-PG", + "ncg\000ncg-Latn-CA", + "nch\000nch-Latn-MX", + "nci\000nci-Latn-MX", + "ncj\000ncj-Latn-MX", + "nck\000nck-Latn-AU", + "ncl\000ncl-Latn-MX", + "ncm\000ncm-Latn-PG", + "ncn\000ncn-Latn-PG", + "nco\000nco-Latn-PG", + "ncq\000ncq-Laoo-LA", + "ncr\000ncr-Latn-CM", + "nct\000nct-Latn-IN", + "ncu\000ncu-Latn-GH", + "ncx\000ncx-Latn-MX", + "ncz\000ncz-Latn-US", + "nd\000nd-Latn-ZW", + "nda\000nda-Latn-CG", + "ndb\000ndb-Latn-CM", + "ndc\000ndc-Latn-MZ", + "ndd\000ndd-Latn-NG", + "ndf\000ndf-Cyrl-RU", + "ndg\000ndg-Latn-TZ", + "ndh\000ndh-Latn-TZ", + "ndi\000ndi-Latn-NG", + "ndj\000ndj-Latn-TZ", + "ndk\000ndk-Latn-CD", + "ndl\000ndl-Latn-CD", + "ndm\000ndm-Latn-TD", + "ndn\000ndn-Latn-CG", + "ndp\000ndp-Latn-UG", + "ndq\000ndq-Latn-AO", + "ndr\000ndr-Latn-NG", + "nds\000nds-Latn-DE", + "ndt\000ndt-Latn-CD", + "ndu\000ndu-Latn-CM", + "ndv\000ndv-Latn-SN", + "ndw\000ndw-Latn-CD", + "ndx\000ndx-Latn-ID", + "ndy\000ndy-Latn-CF", + "ndz\000ndz-Latn-SS", + "ne\000ne-Deva-NP", + "nea\000nea-Latn-ID", + "neb\000neb-Latn-CI", + "nec\000nec-Latn-ID", + "ned\000ned-Latn-NG", + "nee\000nee-Latn-NC", + "neg\000neg-Cyrl-RU", + "neh\000neh-Tibt-BT", + "nei\000nei-Xsux-TR", + "nej\000nej-Latn-PG", + "nek\000nek-Latn-NC", + "nem\000nem-Latn-NC", + "nen\000nen-Latn-NC", + "neo\000neo-Latn-VN", + "neq\000neq-Latn-MX", + "ner\000ner-Latn-ID", + "net\000net-Latn-PG", + "neu\000neu-Latn-001", + "new\000new-Deva-NP", + "nex\000nex-Latn-PG", + "ney\000ney-Latn-CI", + "nez\000nez-Latn-US", + "nfa\000nfa-Latn-ID", + "nfd\000nfd-Latn-NG", + "nfl\000nfl-Latn-SB", + "nfr\000nfr-Latn-GH", + "nfu\000nfu-Latn-CM", + "ng\000ng-Latn-NA", + "nga\000nga-Latn-CD", + "ngb\000ngb-Latn-CD", + "ngc\000ngc-Latn-CD", + "ngd\000ngd-Latn-CF", + "nge\000nge-Latn-CM", + "ngg\000ngg-Latn-CF", + "ngh\000ngh-Latn-ZA", + "ngi\000ngi-Latn-NG", + "ngj\000ngj-Latn-CM", + "ngk\000ngk-Latn-AU", + "ngl\000ngl-Latn-MZ", + "ngm\000ngm-Latn-FM", + "ngn\000ngn-Latn-CM", + "ngp\000ngp-Latn-TZ", + "ngq\000ngq-Latn-TZ", + "ngr\000ngr-Latn-SB", + "ngs\000ngs-Latn-NG", + "ngt\000ngt-Laoo-LA", + "ngu\000ngu-Latn-MX", + "ngv\000ngv-Latn-CM", + "ngw\000ngw-Latn-NG", + "ngx\000ngx-Latn-NG", + "ngy\000ngy-Latn-CM", + "ngz\000ngz-Latn-CG", + "nha\000nha-Latn-AU", + "nhb\000nhb-Latn-CI", + "nhc\000nhc-Latn-MX", + "nhd\000nhd-Latn-PY", + "nhe\000nhe-Latn-MX", + "nhf\000nhf-Latn-AU", + "nhg\000nhg-Latn-MX", + "nhi\000nhi-Latn-MX", + "nhk\000nhk-Latn-MX", + "nhm\000nhm-Latn-MX", + "nhn\000nhn-Latn-MX", + "nho\000nho-Latn-PG", + "nhp\000nhp-Latn-MX", + "nhq\000nhq-Latn-MX", + "nhr\000nhr-Latn-BW", + "nht\000nht-Latn-MX", + "nhu\000nhu-Latn-CM", + "nhv\000nhv-Latn-MX", + "nhw\000nhw-Latn-MX", + "nhx\000nhx-Latn-MX", + "nhy\000nhy-Latn-MX", + "nhz\000nhz-Latn-MX", + "nia\000nia-Latn-ID", + "nib\000nib-Latn-PG", + "nid\000nid-Latn-AU", + "nie\000nie-Latn-TD", + "nif\000nif-Latn-PG", + "nig\000nig-Latn-AU", + "nih\000nih-Latn-TZ", + "nii\000nii-Latn-PG", + "nij\000nij-Latn-ID", + "nil\000nil-Latn-ID", + "nim\000nim-Latn-TZ", + "nin\000nin-Latn-NG", + "nio\000nio-Cyrl-RU", + "niq\000niq-Latn-KE", + "nir\000nir-Latn-ID", + "nis\000nis-Latn-PG", + "nit\000nit-Telu-IN", + "niu\000niu-Latn-NU", + "niv\000niv-Cyrl-RU", + "niw\000niw-Latn-PG", + "nix\000nix-Latn-CD", + "niy\000niy-Latn-CD", + "niz\000niz-Latn-PG", + "nja\000nja-Latn-NG", + "njb\000njb-Latn-IN", + "njd\000njd-Latn-TZ", + "njh\000njh-Latn-IN", + "nji\000nji-Latn-AU", + "njj\000njj-Latn-CM", + "njl\000njl-Latn-SS", + "njm\000njm-Latn-IN", + "njn\000njn-Latn-IN", + "njo\000njo-Latn-IN", + "njr\000njr-Latn-NG", + "njs\000njs-Latn-ID", + "njt\000njt-Latn-SR", + "nju\000nju-Latn-AU", + "njx\000njx-Latn-CG", + "njy\000njy-Latn-CM", + "njz\000njz-Latn-IN", + "nka\000nka-Latn-ZM", + "nkb\000nkb-Latn-IN", + "nkc\000nkc-Latn-CM", + "nkd\000nkd-Latn-IN", + "nke\000nke-Latn-SB", + "nkf\000nkf-Latn-IN", + "nkg\000nkg-Latn-PG", + "nkh\000nkh-Latn-IN", + "nki\000nki-Latn-IN", + "nkj\000nkj-Latn-ID", + "nkk\000nkk-Latn-VU", + "nkm\000nkm-Latn-PG", + "nkn\000nkn-Latn-AO", + "nko\000nko-Latn-GH", + "nkq\000nkq-Latn-GH", + "nkr\000nkr-Latn-FM", + "nks\000nks-Latn-ID", + "nkt\000nkt-Latn-TZ", + "nku\000nku-Latn-CI", + "nkv\000nkv-Latn-MW", + "nkw\000nkw-Latn-CD", + "nkx\000nkx-Latn-NG", + "nkz\000nkz-Latn-NG", + "nl\000nl-Latn-NL", + "nla\000nla-Latn-CM", + "nlc\000nlc-Latn-ID", + "nle\000nle-Latn-KE", + "nlg\000nlg-Latn-SB", + "nli\000nli-Arab-AF", + "nlj\000nlj-Latn-CD", + "nlk\000nlk-Latn-ID", + "nlm\000nlm-Arab-PK", + "nlo\000nlo-Latn-CD", + "nlq\000nlq-Latn-MM", + "nlu\000nlu-Latn-GH", + "nlv\000nlv-Latn-MX", + "nlw\000nlw-Latn-AU", + "nlx\000nlx-Deva-IN", + "nly\000nly-Latn-AU", + "nlz\000nlz-Latn-SB", + "nma\000nma-Latn-IN", + "nmb\000nmb-Latn-VU", + "nmc\000nmc-Latn-TD", + "nmd\000nmd-Latn-GA", + "nme\000nme-Latn-IN", + "nmf\000nmf-Latn-IN", + "nmg\000nmg-Latn-CM", + "nmh\000nmh-Latn-IN", + "nmi\000nmi-Latn-NG", + "nmj\000nmj-Latn-CF", + "nmk\000nmk-Latn-VU", + "nml\000nml-Latn-CM", + "nmm\000nmm-Deva-NP", + "nmn\000nmn-Latn-BW", + "nmo\000nmo-Latn-IN", + "nmp\000nmp-Latn-AU", + "nmq\000nmq-Latn-ZW", + "nmr\000nmr-Latn-CM", + "nms\000nms-Latn-VU", + "nmt\000nmt-Latn-FM", + "nmu\000nmu-Latn-US", + "nmv\000nmv-Latn-AU", + "nmw\000nmw-Latn-PG", + "nmx\000nmx-Latn-PG", + "nmz\000nmz-Latn-TG", + "nn\000nn-Latn-NO", + "nna\000nna-Latn-AU", + "nnb\000nnb-Latn-CD", + "nnc\000nnc-Latn-TD", + "nnd\000nnd-Latn-VU", + "nne\000nne-Latn-AO", + "nnf\000nnf-Latn-PG", + "nng\000nng-Latn-IN", + "nnh\000nnh-Latn-CM", + "nni\000nni-Latn-ID", + "nnj\000nnj-Latn-ET", + "nnk\000nnk-Latn-PG", + "nnl\000nnl-Latn-IN", + "nnm\000nnm-Latn-PG", + "nnn\000nnn-Latn-TD", + "nnp\000nnp-Wcho-IN", + "nnq\000nnq-Latn-TZ", + "nnr\000nnr-Latn-AU", + "nnt\000nnt-Latn-US", + "nnu\000nnu-Latn-GH", + "nnv\000nnv-Latn-AU", + "nnw\000nnw-Latn-BF", + "nny\000nny-Latn-AU", + "nnz\000nnz-Latn-CM", + "no\000no-Latn-NO", + "noa\000noa-Latn-CO", + "noc\000noc-Latn-PG", + "nod\000nod-Lana-TH", + "noe\000noe-Deva-IN", + "nof\000nof-Latn-PG", + "nog\000nog-Cyrl-RU", + "noh\000noh-Latn-PG", + "noi\000noi-Deva-IN", + "noj\000noj-Latn-CO", + "nok\000nok-Latn-US", + "non\000non-Runr-SE", + "nop\000nop-Latn-PG", + "noq\000noq-Latn-CD", + "nos\000nos-Yiii-CN", + "not\000not-Latn-PE", + "nou\000nou-Latn-PG", + "nov\000nov-Latn-001", + "now\000now-Latn-TZ", + "noy\000noy-Latn-TD", + "npb\000npb-Tibt-BT", + "npg\000npg-Latn-MM", + "nph\000nph-Latn-IN", + "npl\000npl-Latn-MX", + "npn\000npn-Latn-PG", + "npo\000npo-Latn-IN", + "nps\000nps-Latn-ID", + "npu\000npu-Latn-IN", + "npx\000npx-Latn-SB", + "npy\000npy-Latn-ID", + "nqg\000nqg-Latn-BJ", + "nqk\000nqk-Latn-BJ", + "nql\000nql-Latn-AO", + "nqm\000nqm-Latn-ID", + "nqn\000nqn-Latn-PG", + "nqo\000nqo-Nkoo-GN", + "nqq\000nqq-Latn-MM", + "nqt\000nqt-Latn-NG", + "nqy\000nqy-Latn-MM", + "nr\000nr-Latn-ZA", + "nra\000nra-Latn-GA", + "nrb\000nrb-Latn-ER", + "nre\000nre-Latn-IN", + "nrf\000nrf-Latn-JE", + "nrg\000nrg-Latn-VU", + "nri\000nri-Latn-IN", + "nrk\000nrk-Latn-AU", + "nrl\000nrl-Latn-AU", + "nrm\000nrm-Latn-MY", + "nrn\000nrn-Runr-GB", + "nrp\000nrp-Latn-IT", + "nru\000nru-Latn-CN", + "nrx\000nrx-Latn-AU", + "nrz\000nrz-Latn-PG", + "nsa\000nsa-Latn-IN", + "nsb\000nsb-Latn-ZA", + "nsc\000nsc-Latn-NG", + "nsd\000nsd-Yiii-CN", + "nse\000nse-Latn-ZM", + "nsf\000nsf-Yiii-CN", + "nsg\000nsg-Latn-TZ", + "nsh\000nsh-Latn-CM", + "nsk\000nsk-Cans-CA", + "nsm\000nsm-Latn-IN", + "nsn\000nsn-Latn-PG", + "nso\000nso-Latn-ZA", + "nsq\000nsq-Latn-US", + "nss\000nss-Latn-PG", + "nst\000nst-Tnsa-IN", + "nsu\000nsu-Latn-MX", + "nsv\000nsv-Yiii-CN", + "nsw\000nsw-Latn-VU", + "nsx\000nsx-Latn-AO", + "nsy\000nsy-Latn-ID", + "nsz\000nsz-Latn-US", + "ntd\000ntd-Latn-MY", + "ntg\000ntg-Latn-AU", + "nti\000nti-Latn-BF", + "ntj\000ntj-Latn-AU", + "ntk\000ntk-Latn-TZ", + "ntm\000ntm-Latn-BJ", + "nto\000nto-Latn-CD", + "ntp\000ntp-Latn-MX", + "ntr\000ntr-Latn-GH", + "ntu\000ntu-Latn-SB", + "ntx\000ntx-Latn-MM", + "nty\000nty-Yiii-VN", + "ntz\000ntz-Arab-IR", + "nua\000nua-Latn-NC", + "nuc\000nuc-Latn-BR", + "nud\000nud-Latn-PG", + "nue\000nue-Latn-CF", + "nuf\000nuf-Latn-CN", + "nug\000nug-Latn-AU", + "nuh\000nuh-Latn-NG", + "nui\000nui-Latn-GQ", + "nuj\000nuj-Latn-UG", + "nuk\000nuk-Latn-CA", + "num\000num-Latn-TO", + "nun\000nun-Latn-MM", + "nuo\000nuo-Latn-VN", + "nup\000nup-Latn-NG", + "nuq\000nuq-Latn-PG", + "nur\000nur-Latn-PG", + "nus\000nus-Latn-SS", + "nut\000nut-Latn-VN", + "nuu\000nuu-Latn-CD", + "nuv\000nuv-Latn-BF", + "nuw\000nuw-Latn-FM", + "nux\000nux-Latn-PG", + "nuy\000nuy-Latn-AU", + "nuz\000nuz-Latn-MX", + "nv\000nv-Latn-US", + "nvh\000nvh-Latn-VU", + "nvm\000nvm-Latn-PG", + "nvo\000nvo-Latn-CM", + "nwb\000nwb-Latn-CI", + "nwc\000nwc-Newa-NP", + "nwe\000nwe-Latn-CM", + "nwg\000nwg-Latn-AU", + "nwi\000nwi-Latn-VU", + "nwm\000nwm-Latn-SS", + "nwo\000nwo-Latn-AU", + "nwr\000nwr-Latn-PG", + "nww\000nww-Latn-TZ", + "nwx\000nwx-Deva-NP", + "nxa\000nxa-Latn-TL", + "nxd\000nxd-Latn-CD", + "nxe\000nxe-Latn-ID", + "nxg\000nxg-Latn-ID", + "nxi\000nxi-Latn-TZ", + "nxk\000nxk-Latn-MM", + "nxl\000nxl-Latn-ID", + "nxn\000nxn-Latn-AU", + "nxo\000nxo-Latn-GA", + "nxq\000nxq-Latn-CN", + "nxr\000nxr-Latn-PG", + "nxx\000nxx-Latn-ID", + "ny\000ny-Latn-MW", + "nyb\000nyb-Latn-GH", + "nyc\000nyc-Latn-CD", + "nyd\000nyd-Latn-KE", + "nye\000nye-Latn-AO", + "nyf\000nyf-Latn-KE", + "nyg\000nyg-Latn-CD", + "nyh\000nyh-Latn-AU", + "nyi\000nyi-Latn-SD", + "nyj\000nyj-Latn-CD", + "nyk\000nyk-Latn-AO", + "nyl\000nyl-Thai-TH", + "nym\000nym-Latn-TZ", + "nyn\000nyn-Latn-UG", + "nyo\000nyo-Latn-UG", + "nyp\000nyp-Latn-UG", + "nyq\000nyq-Arab-IR", + "nyr\000nyr-Latn-MW", + "nys\000nys-Latn-AU", + "nyt\000nyt-Latn-AU", + "nyu\000nyu-Latn-MZ", + "nyv\000nyv-Latn-AU", + "nyw\000nyw-Thai-TH", + "nyx\000nyx-Latn-AU", + "nyy\000nyy-Latn-TZ", + "nza\000nza-Latn-CM", + "nzb\000nzb-Latn-GA", + "nzd\000nzd-Latn-CD", + "nzi\000nzi-Latn-GH", + "nzk\000nzk-Latn-CF", + "nzm\000nzm-Latn-IN", + "nzr\000nzr-Latn-NG", + "nzu\000nzu-Latn-CG", + "nzy\000nzy-Latn-TD", + "nzz\000nzz-Latn-ML", + "oaa\000oaa-Cyrl-RU", + "oac\000oac-Cyrl-RU", + "oar\000oar-Syrc-SY", + "oav\000oav-Geor-GE", + "obi\000obi-Latn-US", + "obk\000obk-Latn-PH", + "obl\000obl-Latn-CM", + "obm\000obm-Phnx-JO", + "obo\000obo-Latn-PH", + "obr\000obr-Mymr-MM", + "obt\000obt-Latn-FR", + "obu\000obu-Latn-NG", + "oc\000oc-Latn-FR", + "oca\000oca-Latn-PE", + "oco\000oco-Latn-GB", + "ocu\000ocu-Latn-MX", + "oda\000oda-Latn-NG", + "odk\000odk-Arab-PK", + "odt\000odt-Latn-NL", + "odu\000odu-Latn-NG", + "ofs\000ofs-Latn-NL", + "ofu\000ofu-Latn-NG", + "ogb\000ogb-Latn-NG", + "ogc\000ogc-Latn-NG", + "ogg\000ogg-Latn-NG", + "ogo\000ogo-Latn-NG", + "ogu\000ogu-Latn-NG", + "oht\000oht-Xsux-TR", + "ohu\000ohu-Latn-HU", + "oia\000oia-Latn-ID", + "oie\000oie-Latn-SS", + "oin\000oin-Latn-PG", + "oj\000oj-Cans-CA", + "ojb\000ojb-Latn-CA", + "ojc\000ojc-Latn-CA", + "ojs\000ojs-Cans-CA", + "ojv\000ojv-Latn-SB", + "ojw\000ojw-Latn-CA", + "oka\000oka-Latn-CA", + "okb\000okb-Latn-NG", + "okc\000okc-Latn-CD", + "okd\000okd-Latn-NG", + "oke\000oke-Latn-NG", + "okg\000okg-Latn-AU", + "oki\000oki-Latn-KE", + "okk\000okk-Latn-PG", + "okm\000okm-Hang-KR", + "oko\000oko-Hani-KR", + "okr\000okr-Latn-NG", + "oks\000oks-Latn-NG", + "oku\000oku-Latn-CM", + "okv\000okv-Latn-PG", + "okx\000okx-Latn-NG", + "okz\000okz-Khmr-KH", + "ola\000ola-Deva-NP", + "old\000old-Latn-TZ", + "ole\000ole-Tibt-BT", + "olk\000olk-Latn-AU", + "olm\000olm-Latn-NG", + "olo\000olo-Latn-RU", + "olr\000olr-Latn-VU", + "olt\000olt-Latn-LT", + "olu\000olu-Latn-AO", + "om\000om-Latn-ET", + "oma\000oma-Latn-US", + "omb\000omb-Latn-VU", + "omc\000omc-Latn-PE", + "omg\000omg-Latn-PE", + "omi\000omi-Latn-CD", + "omk\000omk-Cyrl-RU", + "oml\000oml-Latn-CD", + "omo\000omo-Latn-PG", + "omp\000omp-Mtei-IN", + "omr\000omr-Modi-IN", + "omt\000omt-Latn-KE", + "omu\000omu-Latn-PE", + "omw\000omw-Latn-PG", + "omx\000omx-Mymr-MM", + "ona\000ona-Latn-AR", + "one\000one-Latn-CA", + "ong\000ong-Latn-PG", + "oni\000oni-Latn-ID", + "onj\000onj-Latn-PG", + "onk\000onk-Latn-PG", + "onn\000onn-Latn-PG", + "ono\000ono-Latn-CA", + "onp\000onp-Latn-IN", + "onr\000onr-Latn-PG", + "ons\000ons-Latn-PG", + "ont\000ont-Latn-PG", + "onu\000onu-Latn-VU", + "onx\000onx-Latn-ID", + "ood\000ood-Latn-US", + "oon\000oon-Deva-IN", + "oor\000oor-Latn-ZA", + "opa\000opa-Latn-NG", + "opk\000opk-Latn-ID", + "opm\000opm-Latn-PG", + "opo\000opo-Latn-PG", + "opt\000opt-Latn-MX", + "opy\000opy-Latn-BR", + "or\000or-Orya-IN", + "ora\000ora-Latn-SB", + "orc\000orc-Latn-KE", + "ore\000ore-Latn-PE", + "org\000org-Latn-NG", + "orn\000orn-Latn-MY", + "oro\000oro-Latn-PG", + "orr\000orr-Latn-NG", + "ors\000ors-Latn-MY", + "ort\000ort-Telu-IN", + "oru\000oru-Arab-PK", + "orv\000orv-Cyrl-RU", + "orw\000orw-Latn-BR", + "orx\000orx-Latn-NG", + "orz\000orz-Latn-ID", + "os\000os-Cyrl-GE", + "osa\000osa-Osge-US", + "osc\000osc-Ital-IT", + "osi\000osi-Java-ID", + "oso\000oso-Latn-NG", + "osp\000osp-Latn-ES", + "ost\000ost-Latn-CM", + "osu\000osu-Latn-PG", + "osx\000osx-Latn-DE", + "ota\000ota-Arab-TR", + "otb\000otb-Tibt-CN", + "otd\000otd-Latn-ID", + "ote\000ote-Latn-MX", + "oti\000oti-Latn-BR", + "otk\000otk-Orkh-MN", + "otl\000otl-Latn-MX", + "otm\000otm-Latn-MX", + "otn\000otn-Latn-MX", + "otq\000otq-Latn-MX", + "otr\000otr-Latn-SD", + "ots\000ots-Latn-MX", + "ott\000ott-Latn-MX", + "otu\000otu-Latn-BR", + "otw\000otw-Latn-CA", + "otx\000otx-Latn-MX", + "oty\000oty-Gran-IN", + "otz\000otz-Latn-MX", + "oub\000oub-Latn-LR", + "oue\000oue-Latn-PG", + "oui\000oui-Ougr-CN", + "oum\000oum-Latn-PG", + "ovd\000ovd-Latn-SE", + "owi\000owi-Latn-PG", + "owl\000owl-Latn-GB", + "oyb\000oyb-Laoo-LA", + "oyd\000oyd-Latn-ET", + "oym\000oym-Latn-BR", + "oyy\000oyy-Latn-PG", + "ozm\000ozm-Latn-CM", + "pa\000pa-Guru-IN", + "pa-Arab\000pa-Arab-PK", + "pa-PK\000pa-Arab-PK", + "pab\000pab-Latn-BR", + "pac\000pac-Latn-VN", + "pad\000pad-Latn-BR", + "pae\000pae-Latn-CD", + "paf\000paf-Latn-BR", + "pag\000pag-Latn-PH", + "pah\000pah-Latn-BR", + "pai\000pai-Latn-NG", + "pak\000pak-Latn-BR", + "pal\000pal-Phli-IR", + "pal-Phlp\000pal-Phlp-CN", + "pam\000pam-Latn-PH", + "pao\000pao-Latn-US", + "pap\000pap-Latn-CW", + "paq\000paq-Cyrl-TJ", + "par\000par-Latn-US", + "pas\000pas-Latn-ID", + "pau\000pau-Latn-PW", + "pav\000pav-Latn-BR", + "paw\000paw-Latn-US", + "pax\000pax-Latn-BR", + "pay\000pay-Latn-HN", + "paz\000paz-Latn-BR", + "pbb\000pbb-Latn-CO", + "pbc\000pbc-Latn-GY", + "pbe\000pbe-Latn-MX", + "pbf\000pbf-Latn-MX", + "pbg\000pbg-Latn-VE", + "pbh\000pbh-Latn-VE", + "pbi\000pbi-Latn-CM", + "pbl\000pbl-Latn-NG", + "pbm\000pbm-Latn-MX", + "pbn\000pbn-Latn-NG", + "pbo\000pbo-Latn-GW", + "pbp\000pbp-Latn-GN", + "pbr\000pbr-Latn-TZ", + "pbs\000pbs-Latn-MX", + "pbt\000pbt-Arab-AF", + "pbv\000pbv-Latn-IN", + "pby\000pby-Latn-PG", + "pca\000pca-Latn-MX", + "pcb\000pcb-Khmr-KH", + "pcc\000pcc-Latn-CN", + "pcd\000pcd-Latn-FR", + "pce\000pce-Mymr-MM", + "pcf\000pcf-Mlym-IN", + "pcg\000pcg-Mlym-IN", + "pch\000pch-Deva-IN", + "pci\000pci-Deva-IN", + "pcj\000pcj-Telu-IN", + "pck\000pck-Latn-IN", + "pcm\000pcm-Latn-NG", + "pcn\000pcn-Latn-NG", + "pcp\000pcp-Latn-BO", + "pcw\000pcw-Latn-NG", + "pda\000pda-Latn-PG", + "pdc\000pdc-Latn-US", + "pdn\000pdn-Latn-ID", + "pdo\000pdo-Latn-ID", + "pdt\000pdt-Latn-CA", + "pdu\000pdu-Latn-MM", + "pea\000pea-Latn-ID", + "peb\000peb-Latn-US", + "ped\000ped-Latn-PG", + "pee\000pee-Latn-ID", + "peg\000peg-Orya-IN", + "pei\000pei-Latn-MX", + "pek\000pek-Latn-PG", + "pel\000pel-Latn-ID", + "pem\000pem-Latn-CD", + "peo\000peo-Xpeo-IR", + "pep\000pep-Latn-PG", + "peq\000peq-Latn-US", + "pev\000pev-Latn-VE", + "pex\000pex-Latn-PG", + "pey\000pey-Latn-ID", + "pez\000pez-Latn-MY", + "pfa\000pfa-Latn-FM", + "pfe\000pfe-Latn-CM", + "pfl\000pfl-Latn-DE", + "pga\000pga-Latn-SS", + "pgd\000pgd-Khar-PK", + "pgg\000pgg-Deva-IN", + "pgi\000pgi-Latn-PG", + "pgk\000pgk-Latn-VU", + "pgl\000pgl-Ogam-IE", + "pgn\000pgn-Ital-IT", + "pgs\000pgs-Latn-NG", + "pgu\000pgu-Latn-ID", + "phd\000phd-Deva-IN", + "phg\000phg-Latn-VN", + "phh\000phh-Latn-VN", + "phk\000phk-Mymr-IN", + "phl\000phl-Arab-PK", + "phm\000phm-Latn-MZ", + "phn\000phn-Phnx-LB", + "pho\000pho-Laoo-LA", + "phr\000phr-Arab-PK", + "pht\000pht-Thai-TH", + "phu\000phu-Thai-TH", + "phv\000phv-Arab-AF", + "phw\000phw-Deva-NP", + "pi\000pi-Latn-GB", + "pi-Deva\000pi-Deva-IN", + "pi-IN\000pi-Deva-IN", + "pi-LK\000pi-Sinh-LK", + "pi-MM\000pi-Mymr-MM", + "pi-Mymr\000pi-Mymr-MM", + "pi-Sinh\000pi-Sinh-LK", + "pi-TH\000pi-Thai-TH", + "pi-Thai\000pi-Thai-TH", + "pia\000pia-Latn-MX", + "pib\000pib-Latn-PE", + "pic\000pic-Latn-GA", + "pid\000pid-Latn-VE", + "pif\000pif-Latn-FM", + "pig\000pig-Latn-PE", + "pih\000pih-Latn-NF", + "pij\000pij-Latn-CO", + "pil\000pil-Latn-BJ", + "pim\000pim-Latn-US", + "pin\000pin-Latn-PG", + "pio\000pio-Latn-CO", + "pip\000pip-Latn-NG", + "pir\000pir-Latn-BR", + "pis\000pis-Latn-SB", + "pit\000pit-Latn-AU", + "piu\000piu-Latn-AU", + "piv\000piv-Latn-SB", + "piw\000piw-Latn-TZ", + "pix\000pix-Latn-PG", + "piy\000piy-Latn-NG", + "piz\000piz-Latn-NC", + "pjt\000pjt-Latn-AU", + "pka\000pka-Brah-IN", + "pkb\000pkb-Latn-KE", + "pkg\000pkg-Latn-PG", + "pkh\000pkh-Latn-BD", + "pkn\000pkn-Latn-AU", + "pko\000pko-Latn-KE", + "pkp\000pkp-Latn-CK", + "pkr\000pkr-Mlym-IN", + "pku\000pku-Latn-ID", + "pl\000pl-Latn-PL", + "pla\000pla-Latn-PG", + "plb\000plb-Latn-VU", + "plc\000plc-Latn-PH", + "pld\000pld-Latn-GB", + "ple\000ple-Latn-ID", + "plg\000plg-Latn-AR", + "plh\000plh-Latn-ID", + "plk\000plk-Arab-PK", + "pll\000pll-Mymr-MM", + "pln\000pln-Latn-CO", + "plo\000plo-Latn-MX", + "plr\000plr-Latn-CI", + "pls\000pls-Latn-MX", + "plu\000plu-Latn-BR", + "plv\000plv-Latn-PH", + "plw\000plw-Latn-PH", + "plz\000plz-Latn-MY", + "pma\000pma-Latn-VU", + "pmb\000pmb-Latn-CD", + "pmd\000pmd-Latn-AU", + "pme\000pme-Latn-NC", + "pmf\000pmf-Latn-ID", + "pmh\000pmh-Brah-IN", + "pmi\000pmi-Latn-CN", + "pmj\000pmj-Latn-CN", + "pml\000pml-Latn-TN", + "pmm\000pmm-Latn-CM", + "pmn\000pmn-Latn-CM", + "pmo\000pmo-Latn-ID", + "pmq\000pmq-Latn-MX", + "pmr\000pmr-Latn-PG", + "pms\000pms-Latn-IT", + "pmt\000pmt-Latn-PF", + "pmw\000pmw-Latn-US", + "pmx\000pmx-Latn-IN", + "pmy\000pmy-Latn-ID", + "pmz\000pmz-Latn-MX", + "pna\000pna-Latn-MY", + "pnc\000pnc-Latn-ID", + "pnd\000pnd-Latn-AO", + "pne\000pne-Latn-MY", + "png\000png-Latn-NG", + "pnh\000pnh-Latn-CK", + "pni\000pni-Latn-ID", + "pnj\000pnj-Latn-AU", + "pnk\000pnk-Latn-BO", + "pnl\000pnl-Latn-BF", + "pnm\000pnm-Latn-MY", + "pnn\000pnn-Latn-PG", + "pno\000pno-Latn-PE", + "pnp\000pnp-Latn-ID", + "pnq\000pnq-Latn-BF", + "pnr\000pnr-Latn-PG", + "pns\000pns-Latn-ID", + "pnt\000pnt-Grek-GR", + "pnt-Cyrl\000pnt-Cyrl-RU", + "pnt-Latn\000pnt-Latn-TR", + "pnt-RU\000pnt-Cyrl-RU", + "pnt-TR\000pnt-Latn-TR", + "pnv\000pnv-Latn-AU", + "pnw\000pnw-Latn-AU", + "pny\000pny-Latn-CM", + "pnz\000pnz-Latn-CF", + "poc\000poc-Latn-GT", + "poe\000poe-Latn-MX", + "pof\000pof-Latn-CD", + "pog\000pog-Latn-BR", + "poh\000poh-Latn-GT", + "poi\000poi-Latn-MX", + "pok\000pok-Latn-BR", + "pom\000pom-Latn-US", + "pon\000pon-Latn-FM", + "poo\000poo-Latn-US", + "pop\000pop-Latn-NC", + "poq\000poq-Latn-MX", + "pos\000pos-Latn-MX", + "pot\000pot-Latn-US", + "pov\000pov-Latn-GW", + "pow\000pow-Latn-MX", + "poy\000poy-Latn-TZ", + "ppe\000ppe-Latn-PG", + "ppi\000ppi-Latn-MX", + "ppk\000ppk-Latn-ID", + "ppl\000ppl-Latn-SV", + "ppm\000ppm-Latn-ID", + "ppn\000ppn-Latn-PG", + "ppo\000ppo-Latn-PG", + "ppp\000ppp-Latn-CD", + "ppq\000ppq-Latn-PG", + "pps\000pps-Latn-MX", + "ppt\000ppt-Latn-PG", + "pqa\000pqa-Latn-NG", + "pqm\000pqm-Latn-CA", + "prc\000prc-Arab-AF", + "prd\000prd-Arab-IR", + "pre\000pre-Latn-ST", + "prf\000prf-Latn-PH", + "prg\000prg-Latn-PL", + "prh\000prh-Latn-PH", + "pri\000pri-Latn-NC", + "prk\000prk-Latn-MM", + "prm\000prm-Latn-PG", + "pro\000pro-Latn-FR", + "prq\000prq-Latn-PE", + "prr\000prr-Latn-BR", + "prt\000prt-Thai-TH", + "pru\000pru-Latn-ID", + "prw\000prw-Latn-PG", + "prx\000prx-Arab-IN", + "ps\000ps-Arab-AF", + "psa\000psa-Latn-ID", + "pse\000pse-Latn-ID", + "psh\000psh-Arab-AF", + "psi\000psi-Arab-AF", + "psm\000psm-Latn-BO", + "psn\000psn-Latn-ID", + "psq\000psq-Latn-PG", + "pss\000pss-Latn-PG", + "pst\000pst-Arab-PK", + "psu\000psu-Brah-IN", + "psw\000psw-Latn-VU", + "pt\000pt-Latn-BR", + "pta\000pta-Latn-PY", + "pth\000pth-Latn-BR", + "pti\000pti-Latn-AU", + "ptn\000ptn-Latn-ID", + "pto\000pto-Latn-BR", + "ptp\000ptp-Latn-PG", + "ptr\000ptr-Latn-VU", + "ptt\000ptt-Latn-ID", + "ptu\000ptu-Latn-ID", + "ptv\000ptv-Latn-VU", + "pua\000pua-Latn-MX", + "pub\000pub-Latn-IN", + "puc\000puc-Latn-ID", + "pud\000pud-Latn-ID", + "pue\000pue-Latn-AR", + "puf\000puf-Latn-ID", + "pug\000pug-Latn-BF", + "pui\000pui-Latn-CO", + "puj\000puj-Latn-ID", + "pum\000pum-Deva-NP", + "puo\000puo-Latn-VN", + "pup\000pup-Latn-PG", + "puq\000puq-Latn-BO", + "pur\000pur-Latn-BR", + "put\000put-Latn-ID", + "puu\000puu-Latn-GA", + "puw\000puw-Latn-FM", + "pux\000pux-Latn-PG", + "puy\000puy-Latn-US", + "pwa\000pwa-Latn-PG", + "pwb\000pwb-Latn-NG", + "pwg\000pwg-Latn-PG", + "pwm\000pwm-Latn-PH", + "pwn\000pwn-Latn-TW", + "pwo\000pwo-Mymr-MM", + "pwr\000pwr-Deva-IN", + "pww\000pww-Thai-TH", + "pxm\000pxm-Latn-MX", + "pye\000pye-Latn-CI", + "pym\000pym-Latn-NG", + "pyn\000pyn-Latn-BR", + "pyu\000pyu-Latn-TW", + "pyx\000pyx-Mymr-MM", + "pyy\000pyy-Latn-MM", + "pze\000pze-Latn-NG", + "pzh\000pzh-Latn-TW", + "pzn\000pzn-Latn-MM", + "qu\000qu-Latn-PE", + "qua\000qua-Latn-US", + "qub\000qub-Latn-PE", + "quc\000quc-Latn-GT", + "qud\000qud-Latn-EC", + "quf\000quf-Latn-PE", + "qug\000qug-Latn-EC", + "qui\000qui-Latn-US", + "quk\000quk-Latn-PE", + "qul\000qul-Latn-BO", + "qum\000qum-Latn-GT", + "qun\000qun-Latn-US", + "qup\000qup-Latn-PE", + "quq\000quq-Latn-ES", + "qur\000qur-Latn-PE", + "qus\000qus-Latn-AR", + "quv\000quv-Latn-GT", + "quw\000quw-Latn-EC", + "qux\000qux-Latn-PE", + "quy\000quy-Latn-PE", + "qva\000qva-Latn-PE", + "qvc\000qvc-Latn-PE", + "qve\000qve-Latn-PE", + "qvh\000qvh-Latn-PE", + "qvi\000qvi-Latn-EC", + "qvj\000qvj-Latn-EC", + "qvl\000qvl-Latn-PE", + "qvm\000qvm-Latn-PE", + "qvn\000qvn-Latn-PE", + "qvo\000qvo-Latn-PE", + "qvp\000qvp-Latn-PE", + "qvs\000qvs-Latn-PE", + "qvw\000qvw-Latn-PE", + "qvz\000qvz-Latn-EC", + "qwa\000qwa-Latn-PE", + "qwc\000qwc-Latn-PE", + "qwh\000qwh-Latn-PE", + "qwm\000qwm-Latn-HU", + "qws\000qws-Latn-PE", + "qwt\000qwt-Latn-US", + "qxa\000qxa-Latn-PE", + "qxc\000qxc-Latn-PE", + "qxh\000qxh-Latn-PE", + "qxl\000qxl-Latn-EC", + "qxn\000qxn-Latn-PE", + "qxo\000qxo-Latn-PE", + "qxp\000qxp-Latn-PE", + "qxq\000qxq-Arab-IR", + "qxr\000qxr-Latn-EC", + "qxt\000qxt-Latn-PE", + "qxu\000qxu-Latn-PE", + "qxw\000qxw-Latn-PE", + "qya\000qya-Latn-001", + "qyp\000qyp-Latn-US", + "raa\000raa-Deva-NP", + "rab\000rab-Deva-NP", + "rac\000rac-Latn-ID", + "rad\000rad-Latn-VN", + "raf\000raf-Deva-NP", + "rag\000rag-Latn-KE", + "rah\000rah-Beng-IN", + "rai\000rai-Latn-PG", + "raj\000raj-Deva-IN", + "rak\000rak-Latn-PG", + "ram\000ram-Latn-BR", + "ran\000ran-Latn-ID", + "rao\000rao-Latn-PG", + "rap\000rap-Latn-CL", + "rar\000rar-Latn-CK", + "rav\000rav-Deva-NP", + "raw\000raw-Latn-MM", + "rax\000rax-Latn-NG", + "ray\000ray-Latn-PF", + "raz\000raz-Latn-ID", + "rbb\000rbb-Mymr-MM", + "rbk\000rbk-Latn-PH", + "rbl\000rbl-Latn-PH", + "rbp\000rbp-Latn-AU", + "rcf\000rcf-Latn-RE", + "rdb\000rdb-Arab-IR", + "rea\000rea-Latn-PG", + "reb\000reb-Latn-ID", + "ree\000ree-Latn-MY", + "reg\000reg-Latn-TZ", + "rei\000rei-Orya-IN", + "rej\000rej-Latn-ID", + "rel\000rel-Latn-KE", + "rem\000rem-Latn-PE", + "ren\000ren-Latn-VN", + "res\000res-Latn-NG", + "ret\000ret-Latn-ID", + "rey\000rey-Latn-BO", + "rga\000rga-Latn-VU", + "rgn\000rgn-Latn-IT", + "rgr\000rgr-Latn-PE", + "rgs\000rgs-Latn-VN", + "rgu\000rgu-Latn-ID", + "rhg\000rhg-Rohg-MM", + "rhp\000rhp-Latn-PG", + "ria\000ria-Latn-IN", + "rif\000rif-Latn-MA", + "ril\000ril-Latn-MM", + "rim\000rim-Latn-TZ", + "rin\000rin-Latn-NG", + "rir\000rir-Latn-ID", + "rit\000rit-Latn-AU", + "riu\000riu-Latn-ID", + "rjg\000rjg-Latn-ID", + "rji\000rji-Deva-NP", + "rjs\000rjs-Deva-NP", + "rka\000rka-Khmr-KH", + "rkb\000rkb-Latn-BR", + "rkh\000rkh-Latn-CK", + "rki\000rki-Mymr-MM", + "rkm\000rkm-Latn-BF", + "rkt\000rkt-Beng-BD", + "rkw\000rkw-Latn-AU", + "rm\000rm-Latn-CH", + "rma\000rma-Latn-NI", + "rmb\000rmb-Latn-AU", + "rmc\000rmc-Latn-SK", + "rmd\000rmd-Latn-DK", + "rme\000rme-Latn-GB", + "rmf\000rmf-Latn-FI", + "rmg\000rmg-Latn-NO", + "rmh\000rmh-Latn-ID", + "rmi\000rmi-Armn-AM", + "rmk\000rmk-Latn-PG", + "rml\000rml-Latn-PL", + "rmm\000rmm-Latn-ID", + "rmn\000rmn-Latn-RS", + "rmo\000rmo-Latn-CH", + "rmp\000rmp-Latn-PG", + "rmq\000rmq-Latn-ES", + "rmt\000rmt-Arab-IR", + "rmu\000rmu-Latn-SE", + "rmw\000rmw-Latn-GB", + "rmx\000rmx-Latn-VN", + "rmz\000rmz-Mymr-IN", + "rn\000rn-Latn-BI", + "rnd\000rnd-Latn-CD", + "rng\000rng-Latn-MZ", + "rnl\000rnl-Latn-IN", + "rnn\000rnn-Latn-ID", + "rnr\000rnr-Latn-AU", + "rnw\000rnw-Latn-TZ", + "ro\000ro-Latn-RO", + "rob\000rob-Latn-ID", + "roc\000roc-Latn-VN", + "rod\000rod-Latn-NG", + "roe\000roe-Latn-PG", + "rof\000rof-Latn-TZ", + "rog\000rog-Latn-VN", + "rol\000rol-Latn-PH", + "rom\000rom-Latn-RO", + "roo\000roo-Latn-PG", + "rop\000rop-Latn-AU", + "ror\000ror-Latn-ID", + "rou\000rou-Latn-TD", + "row\000row-Latn-ID", + "rpn\000rpn-Latn-VU", + "rpt\000rpt-Latn-PG", + "rri\000rri-Latn-SB", + "rrm\000rrm-Latn-NZ", + "rro\000rro-Latn-PG", + "rrt\000rrt-Latn-AU", + "rsk\000rsk-Cyrl-RS", + "rsw\000rsw-Latn-NG", + "rtc\000rtc-Latn-MM", + "rth\000rth-Latn-ID", + "rtm\000rtm-Latn-FJ", + "rtw\000rtw-Deva-IN", + "ru\000ru-Cyrl-RU", + "rub\000rub-Latn-UG", + "ruc\000ruc-Latn-UG", + "rue\000rue-Cyrl-UA", + "ruf\000ruf-Latn-TZ", + "rug\000rug-Latn-SB", + "rui\000rui-Latn-TZ", + "ruk\000ruk-Latn-NG", + "ruo\000ruo-Latn-HR", + "rup\000rup-Latn-RO", + "ruq\000ruq-Latn-GR", + "rut\000rut-Cyrl-RU", + "ruu\000ruu-Latn-MY", + "ruy\000ruy-Latn-NG", + "ruz\000ruz-Latn-NG", + "rw\000rw-Latn-RW", + "rwa\000rwa-Latn-PG", + "rwk\000rwk-Latn-TZ", + "rwl\000rwl-Latn-TZ", + "rwm\000rwm-Latn-UG", + "rwo\000rwo-Latn-PG", + "rwr\000rwr-Deva-IN", + "rxd\000rxd-Latn-AU", + "rxw\000rxw-Latn-AU", + "ryu\000ryu-Kana-JP", + "sa\000sa-Deva-IN", + "saa\000saa-Latn-TD", + "sab\000sab-Latn-PA", + "sac\000sac-Latn-US", + "sad\000sad-Latn-TZ", + "sae\000sae-Latn-BR", + "saf\000saf-Latn-GH", + "sah\000sah-Cyrl-RU", + "saj\000saj-Latn-ID", + "sak\000sak-Latn-GA", + "sam\000sam-Samr-PS", + "sao\000sao-Latn-ID", + "saq\000saq-Latn-KE", + "sar\000sar-Latn-BO", + "sas\000sas-Latn-ID", + "sat\000sat-Olck-IN", + "sau\000sau-Latn-ID", + "sav\000sav-Latn-SN", + "saw\000saw-Latn-ID", + "sax\000sax-Latn-VU", + "say\000say-Latn-NG", + "saz\000saz-Saur-IN", + "sba\000sba-Latn-TD", + "sbb\000sbb-Latn-SB", + "sbc\000sbc-Latn-PG", + "sbd\000sbd-Latn-BF", + "sbe\000sbe-Latn-PG", + "sbg\000sbg-Latn-ID", + "sbh\000sbh-Latn-PG", + "sbi\000sbi-Latn-PG", + "sbj\000sbj-Latn-TD", + "sbk\000sbk-Latn-TZ", + "sbl\000sbl-Latn-PH", + "sbm\000sbm-Latn-TZ", + "sbn\000sbn-Arab-PK", + "sbo\000sbo-Latn-MY", + "sbp\000sbp-Latn-TZ", + "sbq\000sbq-Latn-PG", + "sbr\000sbr-Latn-ID", + "sbs\000sbs-Latn-NA", + "sbt\000sbt-Latn-ID", + "sbu\000sbu-Tibt-IN", + "sbv\000sbv-Latn-IT", + "sbw\000sbw-Latn-GA", + "sbx\000sbx-Latn-ID", + "sby\000sby-Latn-ZM", + "sbz\000sbz-Latn-CF", + "sc\000sc-Latn-IT", + "scb\000scb-Latn-VN", + "sce\000sce-Latn-CN", + "scf\000scf-Latn-PA", + "scg\000scg-Latn-ID", + "sch\000sch-Latn-IN", + "sci\000sci-Latn-LK", + "sck\000sck-Deva-IN", + "scl\000scl-Arab-PK", + "scn\000scn-Latn-IT", + "sco\000sco-Latn-GB", + "scp\000scp-Deva-NP", + "scs\000scs-Latn-CA", + "sct\000sct-Laoo-LA", + "scu\000scu-Takr-IN", + "scv\000scv-Latn-NG", + "scw\000scw-Latn-NG", + "scx\000scx-Grek-IT", + "sd\000sd-Arab-PK", + "sd-Deva\000sd-Deva-IN", + "sd-IN\000sd-Deva-IN", + "sd-Khoj\000sd-Khoj-IN", + "sd-Sind\000sd-Sind-IN", + "sda\000sda-Latn-ID", + "sdb\000sdb-Arab-IQ", + "sdc\000sdc-Latn-IT", + "sde\000sde-Latn-NG", + "sdf\000sdf-Arab-IQ", + "sdg\000sdg-Arab-AF", + "sdh\000sdh-Arab-IR", + "sdj\000sdj-Latn-CG", + "sdk\000sdk-Latn-PG", + "sdn\000sdn-Latn-IT", + "sdo\000sdo-Latn-MY", + "sdq\000sdq-Latn-ID", + "sdr\000sdr-Beng-BD", + "sds\000sds-Arab-TN", + "sdu\000sdu-Latn-ID", + "sdx\000sdx-Latn-MY", + "se\000se-Latn-NO", + "sea\000sea-Latn-MY", + "seb\000seb-Latn-CI", + "sec\000sec-Latn-CA", + "sed\000sed-Latn-VN", + "see\000see-Latn-US", + "sef\000sef-Latn-CI", + "seg\000seg-Latn-TZ", + "seh\000seh-Latn-MZ", + "sei\000sei-Latn-MX", + "sej\000sej-Latn-PG", + "sek\000sek-Latn-CA", + "sel\000sel-Cyrl-RU", + "sen\000sen-Latn-BF", + "seo\000seo-Latn-PG", + "sep\000sep-Latn-BF", + "seq\000seq-Latn-BF", + "ser\000ser-Latn-US", + "ses\000ses-Latn-ML", + "set\000set-Latn-ID", + "seu\000seu-Latn-ID", + "sev\000sev-Latn-CI", + "sew\000sew-Latn-PG", + "sey\000sey-Latn-EC", + "sez\000sez-Latn-MM", + "sfe\000sfe-Latn-PH", + "sfm\000sfm-Plrd-CN", + "sfw\000sfw-Latn-GH", + "sg\000sg-Latn-CF", + "sga\000sga-Latn-IE", + "sgb\000sgb-Latn-PH", + "sgc\000sgc-Latn-KE", + "sgd\000sgd-Latn-PH", + "sge\000sge-Latn-ID", + "sgh\000sgh-Cyrl-TJ", + "sgi\000sgi-Latn-CM", + "sgj\000sgj-Deva-IN", + "sgm\000sgm-Latn-KE", + "sgp\000sgp-Latn-IN", + "sgr\000sgr-Arab-IR", + "sgs\000sgs-Latn-LT", + "sgt\000sgt-Tibt-BT", + "sgu\000sgu-Latn-ID", + "sgw\000sgw-Ethi-ET", + "sgy\000sgy-Arab-AF", + "sgz\000sgz-Latn-PG", + "sha\000sha-Latn-NG", + "shb\000shb-Latn-BR", + "shc\000shc-Latn-CD", + "shd\000shd-Arab-PK", + "she\000she-Latn-ET", + "shg\000shg-Latn-BW", + "shh\000shh-Latn-US", + "shi\000shi-Tfng-MA", + "shj\000shj-Latn-SD", + "shk\000shk-Latn-SS", + "shm\000shm-Arab-IR", + "shn\000shn-Mymr-MM", + "sho\000sho-Latn-NG", + "shp\000shp-Latn-PE", + "shq\000shq-Latn-ZM", + "shr\000shr-Latn-CD", + "shs\000shs-Latn-CA", + "sht\000sht-Latn-US", + "shu\000shu-Arab-TD", + "shv\000shv-Arab-OM", + "shw\000shw-Latn-SD", + "shy\000shy-Latn-DZ", + "shz\000shz-Latn-ML", + "si\000si-Sinh-LK", + "sia\000sia-Cyrl-RU", + "sib\000sib-Latn-MY", + "sid\000sid-Latn-ET", + "sie\000sie-Latn-ZM", + "sif\000sif-Latn-BF", + "sig\000sig-Latn-GH", + "sih\000sih-Latn-NC", + "sii\000sii-Latn-IN", + "sij\000sij-Latn-PG", + "sik\000sik-Latn-BR", + "sil\000sil-Latn-GH", + "sim\000sim-Latn-PG", + "sip\000sip-Tibt-IN", + "siq\000siq-Latn-PG", + "sir\000sir-Latn-NG", + "sis\000sis-Latn-US", + "siu\000siu-Latn-PG", + "siv\000siv-Latn-PG", + "siw\000siw-Latn-PG", + "six\000six-Latn-PG", + "siy\000siy-Arab-IR", + "siz\000siz-Arab-EG", + "sja\000sja-Latn-CO", + "sjb\000sjb-Latn-ID", + "sjc\000sjc-Hans-CN", + "sjd\000sjd-Cyrl-RU", + "sje\000sje-Latn-SE", + "sjg\000sjg-Latn-TD", + "sjl\000sjl-Latn-IN", + "sjm\000sjm-Latn-PH", + "sjp\000sjp-Deva-IN", + "sjr\000sjr-Latn-PG", + "sjt\000sjt-Cyrl-RU", + "sju\000sju-Latn-SE", + "sjw\000sjw-Latn-US", + "sk\000sk-Latn-SK", + "ska\000ska-Latn-US", + "skb\000skb-Thai-TH", + "skc\000skc-Latn-PG", + "skd\000skd-Latn-US", + "ske\000ske-Latn-VU", + "skf\000skf-Latn-BR", + "skg\000skg-Latn-MG", + "skh\000skh-Latn-ID", + "ski\000ski-Latn-ID", + "skj\000skj-Deva-NP", + "skm\000skm-Latn-PG", + "skn\000skn-Latn-PH", + "sko\000sko-Latn-ID", + "skp\000skp-Latn-MY", + "skq\000skq-Latn-BF", + "skr\000skr-Arab-PK", + "sks\000sks-Latn-PG", + "skt\000skt-Latn-CD", + "sku\000sku-Latn-VU", + "skv\000skv-Latn-ID", + "skw\000skw-Latn-GY", + "skx\000skx-Latn-ID", + "sky\000sky-Latn-SB", + "skz\000skz-Latn-ID", + "sl\000sl-Latn-SI", + "slc\000slc-Latn-CO", + "sld\000sld-Latn-BF", + "slg\000slg-Latn-ID", + "slh\000slh-Latn-US", + "sli\000sli-Latn-PL", + "slj\000slj-Latn-BR", + "sll\000sll-Latn-PG", + "slm\000slm-Latn-PH", + "sln\000sln-Latn-US", + "slp\000slp-Latn-ID", + "slr\000slr-Latn-CN", + "slu\000slu-Latn-ID", + "slw\000slw-Latn-PG", + "slx\000slx-Latn-CD", + "sly\000sly-Latn-ID", + "slz\000slz-Latn-ID", + "sm\000sm-Latn-WS", + "sma\000sma-Latn-SE", + "smb\000smb-Latn-PG", + "smc\000smc-Latn-PG", + "smf\000smf-Latn-PG", + "smg\000smg-Latn-PG", + "smh\000smh-Yiii-CN", + "smj\000smj-Latn-SE", + "smk\000smk-Latn-PH", + "sml\000sml-Latn-PH", + "smn\000smn-Latn-FI", + "smp\000smp-Samr-IL", + "smq\000smq-Latn-PG", + "smr\000smr-Latn-ID", + "sms\000sms-Latn-FI", + "smt\000smt-Latn-IN", + "smu\000smu-Khmr-KH", + "smw\000smw-Latn-ID", + "smx\000smx-Latn-CD", + "smy\000smy-Arab-IR", + "smz\000smz-Latn-PG", + "sn\000sn-Latn-ZW", + "snc\000snc-Latn-PG", + "sne\000sne-Latn-MY", + "snf\000snf-Latn-SN", + "sng\000sng-Latn-CD", + "sni\000sni-Latn-PE", + "snj\000snj-Latn-CF", + "snk\000snk-Latn-ML", + "snl\000snl-Latn-PH", + "snm\000snm-Latn-UG", + "snn\000snn-Latn-CO", + "sno\000sno-Latn-US", + "snp\000snp-Latn-PG", + "snq\000snq-Latn-GA", + "snr\000snr-Latn-PG", + "sns\000sns-Latn-VU", + "snu\000snu-Latn-ID", + "snv\000snv-Latn-MY", + "snw\000snw-Latn-GH", + "snx\000snx-Latn-PG", + "sny\000sny-Latn-PG", + "snz\000snz-Latn-PG", + "so\000so-Latn-SO", + "soa\000soa-Tavt-TH", + "sob\000sob-Latn-ID", + "soc\000soc-Latn-CD", + "sod\000sod-Latn-CD", + "soe\000soe-Latn-CD", + "sog\000sog-Sogd-UZ", + "soi\000soi-Deva-NP", + "sok\000sok-Latn-TD", + "sol\000sol-Latn-PG", + "soo\000soo-Latn-CD", + "sop\000sop-Latn-CD", + "soq\000soq-Latn-PG", + "sor\000sor-Latn-TD", + "sos\000sos-Latn-BF", + "sou\000sou-Thai-TH", + "sov\000sov-Latn-PW", + "sow\000sow-Latn-PG", + "sox\000sox-Latn-CM", + "soy\000soy-Latn-BJ", + "soz\000soz-Latn-TZ", + "spb\000spb-Latn-ID", + "spc\000spc-Latn-VE", + "spd\000spd-Latn-PG", + "spe\000spe-Latn-PG", + "spg\000spg-Latn-MY", + "spi\000spi-Latn-ID", + "spk\000spk-Latn-PG", + "spl\000spl-Latn-PG", + "spm\000spm-Latn-PG", + "spn\000spn-Latn-PY", + "spo\000spo-Latn-US", + "spp\000spp-Latn-ML", + "spq\000spq-Latn-PE", + "spr\000spr-Latn-ID", + "sps\000sps-Latn-PG", + "spt\000spt-Tibt-IN", + "spv\000spv-Orya-IN", + "sq\000sq-Latn-AL", + "sqa\000sqa-Latn-NG", + "sqh\000sqh-Latn-NG", + "sqm\000sqm-Latn-CF", + "sqo\000sqo-Arab-IR", + "sqq\000sqq-Laoo-LA", + "sqt\000sqt-Arab-YE", + "squ\000squ-Latn-CA", + "sr\000sr-Cyrl-RS", + "sr-ME\000sr-Latn-ME", + "sr-RO\000sr-Latn-RO", + "sr-TR\000sr-Latn-TR", + "sra\000sra-Latn-PG", + "srb\000srb-Sora-IN", + "sre\000sre-Latn-ID", + "srf\000srf-Latn-PG", + "srg\000srg-Latn-PH", + "srh\000srh-Arab-CN", + "sri\000sri-Latn-CO", + "srk\000srk-Latn-MY", + "srl\000srl-Latn-ID", + "srm\000srm-Latn-SR", + "srn\000srn-Latn-SR", + "sro\000sro-Latn-IT", + "srq\000srq-Latn-BO", + "srr\000srr-Latn-SN", + "srs\000srs-Latn-CA", + "srt\000srt-Latn-ID", + "sru\000sru-Latn-BR", + "srv\000srv-Latn-PH", + "srw\000srw-Latn-ID", + "srx\000srx-Deva-IN", + "sry\000sry-Latn-PG", + "srz\000srz-Arab-IR", + "ss\000ss-Latn-ZA", + "ssb\000ssb-Latn-PH", + "ssc\000ssc-Latn-TZ", + "ssd\000ssd-Latn-PG", + "sse\000sse-Latn-PH", + "ssf\000ssf-Latn-TW", + "ssg\000ssg-Latn-PG", + "ssh\000ssh-Arab-AE", + "ssj\000ssj-Latn-PG", + "ssl\000ssl-Latn-GH", + "ssm\000ssm-Latn-MY", + "ssn\000ssn-Latn-KE", + "sso\000sso-Latn-PG", + "ssq\000ssq-Latn-ID", + "sss\000sss-Laoo-LA", + "sst\000sst-Latn-PG", + "ssu\000ssu-Latn-PG", + "ssv\000ssv-Latn-VU", + "ssx\000ssx-Latn-PG", + "ssy\000ssy-Latn-ER", + "ssz\000ssz-Latn-PG", + "st\000st-Latn-ZA", + "sta\000sta-Latn-ZM", + "stb\000stb-Latn-PH", + "ste\000ste-Latn-ID", + "stf\000stf-Latn-PG", + "stg\000stg-Latn-VN", + "sth\000sth-Latn-IE", + "sti\000sti-Latn-VN", + "stj\000stj-Latn-BF", + "stk\000stk-Latn-PG", + "stl\000stl-Latn-NL", + "stm\000stm-Latn-PG", + "stn\000stn-Latn-SB", + "sto\000sto-Latn-CA", + "stp\000stp-Latn-MX", + "stq\000stq-Latn-DE", + "str\000str-Latn-CA", + "sts\000sts-Arab-AF", + "stt\000stt-Latn-VN", + "stu\000stu-Lana-MM", + "stu-CN\000stu-Tale-CN", + "stu-Tale\000stu-Tale-CN", + "stv\000stv-Ethi-ET", + "stw\000stw-Latn-FM", + "sty\000sty-Cyrl-RU", + "su\000su-Latn-ID", + "sua\000sua-Latn-PG", + "sub\000sub-Latn-CD", + "suc\000suc-Latn-PH", + "sue\000sue-Latn-PG", + "sug\000sug-Latn-PG", + "sui\000sui-Latn-PG", + "suj\000suj-Latn-TZ", + "suk\000suk-Latn-TZ", + "suo\000suo-Latn-PG", + "suq\000suq-Latn-ET", + "sur\000sur-Latn-NG", + "sus\000sus-Latn-GN", + "sut\000sut-Latn-NI", + "suv\000suv-Latn-IN", + "suw\000suw-Latn-TZ", + "suy\000suy-Latn-BR", + "suz\000suz-Deva-NP", + "sv\000sv-Latn-SE", + "sva\000sva-Geor-GE", + "svb\000svb-Latn-PG", + "svc\000svc-Latn-VC", + "sve\000sve-Latn-ID", + "svm\000svm-Latn-IT", + "svs\000svs-Latn-SB", + "sw\000sw-Latn-TZ", + "swb\000swb-Arab-YT", + "swf\000swf-Latn-CD", + "swg\000swg-Latn-DE", + "swi\000swi-Hani-CN", + "swj\000swj-Latn-GA", + "swk\000swk-Latn-MW", + "swm\000swm-Latn-PG", + "swo\000swo-Latn-BR", + "swp\000swp-Latn-PG", + "swq\000swq-Latn-CM", + "swr\000swr-Latn-ID", + "sws\000sws-Latn-ID", + "swt\000swt-Latn-ID", + "swu\000swu-Latn-ID", + "swv\000swv-Deva-IN", + "sww\000sww-Latn-VU", + "swx\000swx-Latn-BR", + "swy\000swy-Latn-TD", + "sxb\000sxb-Latn-KE", + "sxe\000sxe-Latn-GA", + "sxn\000sxn-Latn-ID", + "sxr\000sxr-Latn-TW", + "sxs\000sxs-Latn-NG", + "sxu\000sxu-Runr-DE", + "sxw\000sxw-Latn-BJ", + "sya\000sya-Latn-ID", + "syb\000syb-Latn-PH", + "syc\000syc-Syrc-TR", + "syi\000syi-Latn-GA", + "syk\000syk-Latn-NG", + "syl\000syl-Beng-BD", + "sym\000sym-Latn-BF", + "syn\000syn-Syrc-IR", + "syo\000syo-Latn-KH", + "syr\000syr-Syrc-IQ", + "sys\000sys-Latn-TD", + "syw\000syw-Deva-NP", + "syx\000syx-Latn-GA", + "sza\000sza-Latn-MY", + "szb\000szb-Latn-ID", + "szc\000szc-Latn-MY", + "szg\000szg-Latn-CD", + "szl\000szl-Latn-PL", + "szn\000szn-Latn-ID", + "szp\000szp-Latn-ID", + "szv\000szv-Latn-CM", + "szw\000szw-Latn-ID", + "szy\000szy-Latn-TW", + "ta\000ta-Taml-IN", + "taa\000taa-Latn-US", + "tab\000tab-Cyrl-RU", + "tac\000tac-Latn-MX", + "tad\000tad-Latn-ID", + "tae\000tae-Latn-BR", + "taf\000taf-Latn-BR", + "tag\000tag-Latn-SD", + "taj\000taj-Deva-NP", + "tak\000tak-Latn-NG", + "tal\000tal-Latn-NG", + "tan\000tan-Latn-NG", + "tao\000tao-Latn-TW", + "tap\000tap-Latn-CD", + "taq\000taq-Latn-ML", + "tar\000tar-Latn-MX", + "tas\000tas-Latn-VN", + "tau\000tau-Latn-US", + "tav\000tav-Latn-CO", + "taw\000taw-Latn-PG", + "tax\000tax-Latn-TD", + "tay\000tay-Latn-TW", + "taz\000taz-Latn-SD", + "tba\000tba-Latn-BR", + "tbc\000tbc-Latn-PG", + "tbd\000tbd-Latn-PG", + "tbe\000tbe-Latn-SB", + "tbf\000tbf-Latn-PG", + "tbg\000tbg-Latn-PG", + "tbh\000tbh-Latn-AU", + "tbi\000tbi-Latn-SD", + "tbj\000tbj-Latn-PG", + "tbk\000tbk-Tagb-PH", + "tbl\000tbl-Latn-PH", + "tbm\000tbm-Latn-CD", + "tbn\000tbn-Latn-CO", + "tbo\000tbo-Latn-PG", + "tbp\000tbp-Latn-ID", + "tbs\000tbs-Latn-PG", + "tbt\000tbt-Latn-CD", + "tbu\000tbu-Latn-MX", + "tbv\000tbv-Latn-PG", + "tbw\000tbw-Latn-PH", + "tbx\000tbx-Latn-PG", + "tby\000tby-Latn-ID", + "tbz\000tbz-Latn-BJ", + "tca\000tca-Latn-BR", + "tcb\000tcb-Latn-US", + "tcc\000tcc-Latn-TZ", + "tcd\000tcd-Latn-GH", + "tce\000tce-Latn-CA", + "tcf\000tcf-Latn-MX", + "tcg\000tcg-Latn-ID", + "tch\000tch-Latn-TC", + "tci\000tci-Latn-PG", + "tck\000tck-Latn-GA", + "tcm\000tcm-Latn-ID", + "tcn\000tcn-Deva-NP", + "tco\000tco-Mymr-MM", + "tcp\000tcp-Latn-MM", + "tcq\000tcq-Latn-ID", + "tcs\000tcs-Latn-AU", + "tcu\000tcu-Latn-MX", + "tcw\000tcw-Latn-MX", + "tcx\000tcx-Taml-IN", + "tcy\000tcy-Knda-IN", + "tcz\000tcz-Latn-IN", + "tda\000tda-Tfng-NE", + "tdb\000tdb-Deva-IN", + "tdc\000tdc-Latn-CO", + "tdd\000tdd-Tale-CN", + "tde\000tde-Latn-ML", + "tdg\000tdg-Deva-NP", + "tdh\000tdh-Deva-NP", + "tdi\000tdi-Latn-ID", + "tdj\000tdj-Latn-ID", + "tdk\000tdk-Latn-NG", + "tdl\000tdl-Latn-NG", + "tdm\000tdm-Latn-GY", + "tdn\000tdn-Latn-ID", + "tdo\000tdo-Latn-NG", + "tdq\000tdq-Latn-NG", + "tdr\000tdr-Latn-VN", + "tds\000tds-Latn-ID", + "tdt\000tdt-Latn-TL", + "tdv\000tdv-Latn-NG", + "tdx\000tdx-Latn-MG", + "tdy\000tdy-Latn-PH", + "te\000te-Telu-IN", + "tea\000tea-Latn-MY", + "teb\000teb-Latn-EC", + "tec\000tec-Latn-KE", + "ted\000ted-Latn-CI", + "tee\000tee-Latn-MX", + "teg\000teg-Latn-GA", + "teh\000teh-Latn-AR", + "tei\000tei-Latn-PG", + "tek\000tek-Latn-CD", + "tem\000tem-Latn-SL", + "ten\000ten-Latn-CO", + "teo\000teo-Latn-UG", + "tep\000tep-Latn-MX", + "teq\000teq-Latn-SD", + "ter\000ter-Latn-BR", + "tes\000tes-Java-ID", + "tet\000tet-Latn-TL", + "teu\000teu-Latn-UG", + "tev\000tev-Latn-ID", + "tew\000tew-Latn-US", + "tex\000tex-Latn-SS", + "tey\000tey-Latn-SD", + "tez\000tez-Latn-NE", + "tfi\000tfi-Latn-BJ", + "tfn\000tfn-Latn-US", + "tfo\000tfo-Latn-ID", + "tfr\000tfr-Latn-PA", + "tft\000tft-Latn-ID", + "tg\000tg-Cyrl-TJ", + "tg-Arab\000tg-Arab-PK", + "tg-PK\000tg-Arab-PK", + "tga\000tga-Latn-KE", + "tgb\000tgb-Latn-MY", + "tgc\000tgc-Latn-PG", + "tgd\000tgd-Latn-NG", + "tge\000tge-Deva-NP", + "tgf\000tgf-Tibt-BT", + "tgh\000tgh-Latn-TT", + "tgi\000tgi-Latn-PG", + "tgj\000tgj-Latn-IN", + "tgn\000tgn-Latn-PH", + "tgo\000tgo-Latn-PG", + "tgp\000tgp-Latn-VU", + "tgq\000tgq-Latn-MY", + "tgs\000tgs-Latn-VU", + "tgt\000tgt-Latn-PH", + "tgu\000tgu-Latn-PG", + "tgv\000tgv-Latn-BR", + "tgw\000tgw-Latn-CI", + "tgx\000tgx-Latn-CA", + "tgy\000tgy-Latn-SS", + "tgz\000tgz-Latn-AU", + "th\000th-Thai-TH", + "thd\000thd-Latn-AU", + "the\000the-Deva-NP", + "thf\000thf-Deva-NP", + "thh\000thh-Latn-MX", + "thi\000thi-Tale-LA", + "thk\000thk-Latn-KE", + "thl\000thl-Deva-NP", + "thm\000thm-Thai-TH", + "thp\000thp-Latn-CA", + "thq\000thq-Deva-NP", + "thr\000thr-Deva-NP", + "ths\000ths-Deva-NP", + "tht\000tht-Latn-CA", + "thu\000thu-Latn-SS", + "thv\000thv-Latn-DZ", + "thy\000thy-Latn-NG", + "thz\000thz-Latn-NE", + "ti\000ti-Ethi-ET", + "tic\000tic-Latn-SD", + "tif\000tif-Latn-PG", + "tig\000tig-Ethi-ER", + "tih\000tih-Latn-MY", + "tii\000tii-Latn-CD", + "tij\000tij-Deva-NP", + "tik\000tik-Latn-CM", + "til\000til-Latn-US", + "tim\000tim-Latn-PG", + "tin\000tin-Cyrl-RU", + "tio\000tio-Latn-PG", + "tip\000tip-Latn-ID", + "tiq\000tiq-Latn-BF", + "tis\000tis-Latn-PH", + "tit\000tit-Latn-CO", + "tiu\000tiu-Latn-PH", + "tiv\000tiv-Latn-NG", + "tiw\000tiw-Latn-AU", + "tix\000tix-Latn-US", + "tiy\000tiy-Latn-PH", + "tja\000tja-Latn-LR", + "tjg\000tjg-Latn-ID", + "tji\000tji-Latn-CN", + "tjj\000tjj-Latn-AU", + "tjl\000tjl-Mymr-MM", + "tjn\000tjn-Latn-CI", + "tjo\000tjo-Arab-DZ", + "tjp\000tjp-Latn-AU", + "tjs\000tjs-Latn-CN", + "tju\000tju-Latn-AU", + "tjw\000tjw-Latn-AU", + "tk\000tk-Latn-TM", + "tka\000tka-Latn-BR", + "tkb\000tkb-Deva-IN", + "tkd\000tkd-Latn-TL", + "tke\000tke-Latn-MZ", + "tkf\000tkf-Latn-BR", + "tkg\000tkg-Latn-MG", + "tkl\000tkl-Latn-TK", + "tkp\000tkp-Latn-SB", + "tkq\000tkq-Latn-NG", + "tkr\000tkr-Latn-AZ", + "tks\000tks-Arab-IR", + "tkt\000tkt-Deva-NP", + "tku\000tku-Latn-MX", + "tkv\000tkv-Latn-PG", + "tkw\000tkw-Latn-SB", + "tkx\000tkx-Latn-ID", + "tkz\000tkz-Latn-VN", + "tl\000tl-Latn-PH", + "tla\000tla-Latn-MX", + "tlb\000tlb-Latn-ID", + "tlc\000tlc-Latn-MX", + "tld\000tld-Latn-ID", + "tlf\000tlf-Latn-PG", + "tlg\000tlg-Latn-ID", + "tli\000tli-Latn-US", + "tlj\000tlj-Latn-UG", + "tlk\000tlk-Latn-ID", + "tll\000tll-Latn-CD", + "tlm\000tlm-Latn-VU", + "tln\000tln-Latn-ID", + "tlp\000tlp-Latn-MX", + "tlq\000tlq-Latn-MM", + "tlr\000tlr-Latn-SB", + "tls\000tls-Latn-VU", + "tlt\000tlt-Latn-ID", + "tlu\000tlu-Latn-ID", + "tlv\000tlv-Latn-ID", + "tlx\000tlx-Latn-PG", + "tly\000tly-Latn-AZ", + "tma\000tma-Latn-TD", + "tmb\000tmb-Latn-VU", + "tmc\000tmc-Latn-TD", + "tmd\000tmd-Latn-PG", + "tme\000tme-Latn-BR", + "tmf\000tmf-Latn-PY", + "tmg\000tmg-Latn-ID", + "tmh\000tmh-Latn-NE", + "tmi\000tmi-Latn-VU", + "tmj\000tmj-Latn-ID", + "tml\000tml-Latn-ID", + "tmm\000tmm-Latn-VN", + "tmn\000tmn-Latn-ID", + "tmo\000tmo-Latn-MY", + "tmq\000tmq-Latn-PG", + "tmr\000tmr-Syrc-IL", + "tmt\000tmt-Latn-VU", + "tmu\000tmu-Latn-ID", + "tmv\000tmv-Latn-CD", + "tmw\000tmw-Latn-MY", + "tmy\000tmy-Latn-PG", + "tmz\000tmz-Latn-VE", + "tn\000tn-Latn-ZA", + "tna\000tna-Latn-BO", + "tnb\000tnb-Latn-CO", + "tnc\000tnc-Latn-CO", + "tnd\000tnd-Latn-CO", + "tng\000tng-Latn-TD", + "tnh\000tnh-Latn-PG", + "tni\000tni-Latn-ID", + "tnk\000tnk-Latn-VU", + "tnl\000tnl-Latn-VU", + "tnm\000tnm-Latn-ID", + "tnn\000tnn-Latn-VU", + "tno\000tno-Latn-BO", + "tnp\000tnp-Latn-VU", + "tnq\000tnq-Latn-PR", + "tnr\000tnr-Latn-SN", + "tns\000tns-Latn-PG", + "tnt\000tnt-Latn-ID", + "tnv\000tnv-Cakm-BD", + "tnw\000tnw-Latn-ID", + "tnx\000tnx-Latn-SB", + "tny\000tny-Latn-TZ", + "to\000to-Latn-TO", + "tob\000tob-Latn-AR", + "toc\000toc-Latn-MX", + "tod\000tod-Latn-GN", + "tof\000tof-Latn-PG", + "tog\000tog-Latn-MW", + "toh\000toh-Latn-MZ", + "toi\000toi-Latn-ZM", + "toj\000toj-Latn-MX", + "tok\000tok-Latn-001", + "tol\000tol-Latn-US", + "tom\000tom-Latn-ID", + "too\000too-Latn-MX", + "top\000top-Latn-MX", + "toq\000toq-Latn-SS", + "tor\000tor-Latn-CD", + "tos\000tos-Latn-MX", + "tou\000tou-Latn-VN", + "tov\000tov-Arab-IR", + "tow\000tow-Latn-US", + "tox\000tox-Latn-PW", + "toy\000toy-Latn-ID", + "toz\000toz-Latn-CM", + "tpa\000tpa-Latn-PG", + "tpc\000tpc-Latn-MX", + "tpe\000tpe-Latn-BD", + "tpf\000tpf-Latn-ID", + "tpg\000tpg-Latn-ID", + "tpi\000tpi-Latn-PG", + "tpj\000tpj-Latn-PY", + "tpk\000tpk-Latn-BR", + "tpl\000tpl-Latn-MX", + "tpm\000tpm-Latn-GH", + "tpn\000tpn-Latn-BR", + "tpp\000tpp-Latn-MX", + "tpr\000tpr-Latn-BR", + "tpt\000tpt-Latn-MX", + "tpu\000tpu-Khmr-KH", + "tpv\000tpv-Latn-MP", + "tpx\000tpx-Latn-MX", + "tpy\000tpy-Latn-BR", + "tpz\000tpz-Latn-PG", + "tqb\000tqb-Latn-BR", + "tql\000tql-Latn-VU", + "tqm\000tqm-Latn-PG", + "tqn\000tqn-Latn-US", + "tqo\000tqo-Latn-PG", + "tqp\000tqp-Latn-PG", + "tqt\000tqt-Latn-MX", + "tqu\000tqu-Latn-SB", + "tqw\000tqw-Latn-US", + "tr\000tr-Latn-TR", + "tra\000tra-Arab-AF", + "trb\000trb-Latn-PG", + "trc\000trc-Latn-MX", + "tre\000tre-Latn-ID", + "trf\000trf-Latn-TT", + "trg\000trg-Hebr-IL", + "trh\000trh-Latn-PG", + "tri\000tri-Latn-SR", + "trj\000trj-Latn-TD", + "trl\000trl-Latn-GB", + "trm\000trm-Arab-AF", + "trn\000trn-Latn-BO", + "tro\000tro-Latn-IN", + "trp\000trp-Latn-IN", + "trq\000trq-Latn-MX", + "trr\000trr-Latn-PE", + "trs\000trs-Latn-MX", + "trt\000trt-Latn-ID", + "tru\000tru-Latn-TR", + "trv\000trv-Latn-TW", + "trw\000trw-Arab-PK", + "trx\000trx-Latn-MY", + "try\000try-Latn-IN", + "trz\000trz-Latn-BR", + "ts\000ts-Latn-ZA", + "tsa\000tsa-Latn-CG", + "tsb\000tsb-Latn-ET", + "tsc\000tsc-Latn-MZ", + "tsd\000tsd-Grek-GR", + "tsg\000tsg-Latn-PH", + "tsh\000tsh-Latn-CM", + "tsi\000tsi-Latn-CA", + "tsj\000tsj-Tibt-BT", + "tsl\000tsl-Latn-VN", + "tsp\000tsp-Latn-BF", + "tsr\000tsr-Latn-VU", + "tst\000tst-Latn-ML", + "tsu\000tsu-Latn-TW", + "tsv\000tsv-Latn-GA", + "tsw\000tsw-Latn-NG", + "tsx\000tsx-Latn-PG", + "tsz\000tsz-Latn-MX", + "tt\000tt-Cyrl-RU", + "ttb\000ttb-Latn-NG", + "ttc\000ttc-Latn-GT", + "ttd\000ttd-Latn-PG", + "tte\000tte-Latn-PG", + "ttf\000ttf-Latn-CM", + "tth\000tth-Laoo-LA", + "tti\000tti-Latn-ID", + "ttj\000ttj-Latn-UG", + "ttk\000ttk-Latn-CO", + "ttl\000ttl-Latn-ZM", + "ttm\000ttm-Latn-CA", + "ttn\000ttn-Latn-ID", + "tto\000tto-Laoo-LA", + "ttp\000ttp-Latn-ID", + "ttr\000ttr-Latn-NG", + "tts\000tts-Thai-TH", + "ttt\000ttt-Latn-AZ", + "ttu\000ttu-Latn-PG", + "ttv\000ttv-Latn-PG", + "ttw\000ttw-Latn-MY", + "tty\000tty-Latn-ID", + "ttz\000ttz-Deva-NP", + "tua\000tua-Latn-PG", + "tub\000tub-Latn-US", + "tuc\000tuc-Latn-PG", + "tud\000tud-Latn-BR", + "tue\000tue-Latn-CO", + "tuf\000tuf-Latn-CO", + "tug\000tug-Latn-TD", + "tuh\000tuh-Latn-PG", + "tui\000tui-Latn-CM", + "tuj\000tuj-Latn-ID", + "tul\000tul-Latn-NG", + "tum\000tum-Latn-MW", + "tun\000tun-Latn-US", + "tuo\000tuo-Latn-BR", + "tuq\000tuq-Latn-TD", + "tus\000tus-Latn-CA", + "tuu\000tuu-Latn-US", + "tuv\000tuv-Latn-KE", + "tux\000tux-Latn-BR", + "tuy\000tuy-Latn-KE", + "tuz\000tuz-Latn-BF", + "tva\000tva-Latn-SB", + "tvd\000tvd-Latn-NG", + "tve\000tve-Latn-ID", + "tvi\000tvi-Latn-NG", + "tvk\000tvk-Latn-VU", + "tvl\000tvl-Latn-TV", + "tvm\000tvm-Latn-ID", + "tvn\000tvn-Mymr-MM", + "tvo\000tvo-Latn-ID", + "tvs\000tvs-Latn-KE", + "tvt\000tvt-Latn-IN", + "tvu\000tvu-Latn-CM", + "tvw\000tvw-Latn-ID", + "tvx\000tvx-Latn-TW", + "twa\000twa-Latn-US", + "twb\000twb-Latn-PH", + "twd\000twd-Latn-NL", + "twe\000twe-Latn-ID", + "twf\000twf-Latn-US", + "twg\000twg-Latn-ID", + "twh\000twh-Latn-VN", + "twl\000twl-Latn-MZ", + "twm\000twm-Tibt-IN", + "twn\000twn-Latn-CM", + "two\000two-Latn-BW", + "twp\000twp-Latn-PG", + "twq\000twq-Latn-NE", + "twr\000twr-Latn-MX", + "twt\000twt-Latn-BR", + "twu\000twu-Latn-ID", + "tww\000tww-Latn-PG", + "twx\000twx-Latn-MZ", + "twy\000twy-Latn-ID", + "txa\000txa-Latn-MY", + "txe\000txe-Latn-ID", + "txg\000txg-Tang-CN", + "txi\000txi-Latn-BR", + "txj\000txj-Latn-NG", + "txm\000txm-Latn-ID", + "txn\000txn-Latn-ID", + "txo\000txo-Toto-IN", + "txq\000txq-Latn-ID", + "txs\000txs-Latn-ID", + "txt\000txt-Latn-ID", + "txu\000txu-Latn-BR", + "txx\000txx-Latn-MY", + "txy\000txy-Latn-MG", + "ty\000ty-Latn-PF", + "tya\000tya-Latn-PG", + "tye\000tye-Latn-NG", + "tyh\000tyh-Latn-VN", + "tyi\000tyi-Latn-CG", + "tyj\000tyj-Latn-VN", + "tyl\000tyl-Latn-VN", + "tyn\000tyn-Latn-ID", + "typ\000typ-Latn-AU", + "tyr\000tyr-Tavt-VN", + "tys\000tys-Latn-VN", + "tyt\000tyt-Latn-VN", + "tyu\000tyu-Latn-BW", + "tyv\000tyv-Cyrl-RU", + "tyx\000tyx-Latn-CG", + "tyy\000tyy-Latn-NG", + "tyz\000tyz-Latn-VN", + "tzh\000tzh-Latn-MX", + "tzj\000tzj-Latn-GT", + "tzl\000tzl-Latn-001", + "tzm\000tzm-Latn-MA", + "tzn\000tzn-Latn-ID", + "tzo\000tzo-Latn-MX", + "tzx\000tzx-Latn-PG", + "uam\000uam-Latn-BR", + "uar\000uar-Latn-PG", + "uba\000uba-Latn-NG", + "ubi\000ubi-Latn-TD", + "ubl\000ubl-Latn-PH", + "ubr\000ubr-Latn-PG", + "ubu\000ubu-Latn-PG", + "uby\000uby-Latn-TR", + "uda\000uda-Latn-NG", + "ude\000ude-Cyrl-RU", + "udg\000udg-Mlym-IN", + "udi\000udi-Cyrl-RU", + "udj\000udj-Latn-ID", + "udl\000udl-Latn-CM", + "udm\000udm-Cyrl-RU", + "udu\000udu-Latn-SD", + "ues\000ues-Latn-ID", + "ufi\000ufi-Latn-PG", + "ug\000ug-Arab-CN", + "ug-Cyrl\000ug-Cyrl-KZ", + "ug-KZ\000ug-Cyrl-KZ", + "ug-MN\000ug-Cyrl-MN", + "uga\000uga-Ugar-SY", + "ugb\000ugb-Latn-AU", + "uge\000uge-Latn-SB", + "ugh\000ugh-Cyrl-RU", + "ugo\000ugo-Thai-TH", + "uha\000uha-Latn-NG", + "uhn\000uhn-Latn-ID", + "uis\000uis-Latn-PG", + "uiv\000uiv-Latn-CM", + "uji\000uji-Latn-NG", + "uk\000uk-Cyrl-UA", + "uka\000uka-Latn-ID", + "ukg\000ukg-Latn-PG", + "ukh\000ukh-Latn-CF", + "uki\000uki-Orya-IN", + "ukk\000ukk-Latn-MM", + "ukp\000ukp-Latn-NG", + "ukq\000ukq-Latn-NG", + "uku\000uku-Latn-NG", + "ukv\000ukv-Latn-SS", + "ukw\000ukw-Latn-NG", + "uky\000uky-Latn-AU", + "ula\000ula-Latn-NG", + "ulb\000ulb-Latn-NG", + "ulc\000ulc-Cyrl-RU", + "ule\000ule-Latn-AR", + "ulf\000ulf-Latn-ID", + "uli\000uli-Latn-FM", + "ulk\000ulk-Latn-AU", + "ulm\000ulm-Latn-ID", + "uln\000uln-Latn-PG", + "ulu\000ulu-Latn-ID", + "ulw\000ulw-Latn-NI", + "uly\000uly-Latn-NG", + "uma\000uma-Latn-US", + "umb\000umb-Latn-AO", + "umd\000umd-Latn-AU", + "umg\000umg-Latn-AU", + "umi\000umi-Latn-MY", + "umm\000umm-Latn-NG", + "umn\000umn-Latn-MM", + "umo\000umo-Latn-BR", + "ump\000ump-Latn-AU", + "umr\000umr-Latn-AU", + "ums\000ums-Latn-ID", + "una\000una-Latn-PG", + "und\000en-Latn-US", + "und-419\000es-Latn-419", + "und-AD\000ca-Latn-AD", + "und-AE\000ar-Arab-AE", + "und-AF\000fa-Arab-AF", + "und-AL\000sq-Latn-AL", + "und-AM\000hy-Armn-AM", + "und-AO\000pt-Latn-AO", + "und-AR\000es-Latn-AR", + "und-AS\000sm-Latn-AS", + "und-AT\000de-Latn-AT", + "und-AW\000nl-Latn-AW", + "und-AX\000sv-Latn-AX", + "und-AZ\000az-Latn-AZ", + "und-Adlm\000ff-Adlm-GN", + "und-Aghb\000xag-Aghb-AZ", + "und-Ahom\000aho-Ahom-IN", + "und-Arab\000ar-Arab-EG", + "und-Arab-AF\000fa-Arab-AF", + "und-Arab-AZ\000az-Arab-AZ", + "und-Arab-BN\000ms-Arab-BN", + "und-Arab-CC\000ms-Arab-CC", + "und-Arab-CN\000ug-Arab-CN", + "und-Arab-GB\000ur-Arab-GB", + "und-Arab-ID\000ms-Arab-ID", + "und-Arab-IN\000ur-Arab-IN", + "und-Arab-IR\000fa-Arab-IR", + "und-Arab-KH\000cja-Arab-KH", + "und-Arab-MM\000rhg-Arab-MM", + "und-Arab-MN\000kk-Arab-MN", + "und-Arab-MU\000ur-Arab-MU", + "und-Arab-NG\000ha-Arab-NG", + "und-Arab-PK\000ur-Arab-PK", + "und-Arab-TH\000mfa-Arab-TH", + "und-Arab-TJ\000fa-Arab-TJ", + "und-Arab-TR\000apc-Arab-TR", + "und-Arab-YT\000swb-Arab-YT", + "und-Armi\000arc-Armi-IR", + "und-Armn\000hy-Armn-AM", + "und-Avst\000ae-Avst-IR", + "und-BA\000bs-Latn-BA", + "und-BD\000bn-Beng-BD", + "und-BE\000nl-Latn-BE", + "und-BF\000fr-Latn-BF", + "und-BG\000bg-Cyrl-BG", + "und-BH\000ar-Arab-BH", + "und-BI\000rn-Latn-BI", + "und-BJ\000fr-Latn-BJ", + "und-BL\000fr-Latn-BL", + "und-BN\000ms-Latn-BN", + "und-BO\000es-Latn-BO", + "und-BQ\000pap-Latn-BQ", + "und-BR\000pt-Latn-BR", + "und-BT\000dz-Tibt-BT", + "und-BV\000no-Latn-BV", + "und-BY\000ru-Cyrl-BY", + "und-Bali\000ban-Bali-ID", + "und-Bamu\000bax-Bamu-CM", + "und-Bass\000bsq-Bass-LR", + "und-Batk\000bbc-Batk-ID", + "und-Beng\000bn-Beng-BD", + "und-Berf\000zag-Berf-SD", + "und-Bhks\000sa-Bhks-IN", + "und-Bopo\000zh-Bopo-TW", + "und-Brah\000pka-Brah-IN", + "und-Brai\000fr-Brai-FR", + "und-Bugi\000bug-Bugi-ID", + "und-Buhd\000bku-Buhd-PH", + "und-CC\000ms-Arab-CC", + "und-CD\000fr-Latn-CD", + "und-CF\000sg-Latn-CF", + "und-CG\000fr-Latn-CG", + "und-CH\000de-Latn-CH", + "und-CI\000fr-Latn-CI", + "und-CL\000es-Latn-CL", + "und-CM\000fr-Latn-CM", + "und-CN\000zh-Hans-CN", + "und-CO\000es-Latn-CO", + "und-CR\000es-Latn-CR", + "und-CU\000es-Latn-CU", + "und-CV\000pt-Latn-CV", + "und-CW\000pap-Latn-CW", + "und-CY\000el-Grek-CY", + "und-CZ\000cs-Latn-CZ", + "und-Cakm\000ccp-Cakm-BD", + "und-Cans\000iu-Cans-CA", + "und-Cari\000xcr-Cari-TR", + "und-Cham\000cjm-Cham-VN", + "und-Cher\000chr-Cher-US", + "und-Chrs\000xco-Chrs-UZ", + "und-Copt\000cop-Copt-EG", + "und-Cpmn\000und-Cpmn-CY", + "und-Cprt\000ecy-Cprt-CY", + "und-Cyrl\000ru-Cyrl-RU", + "und-Cyrl-AF\000kaa-Cyrl-AF", + "und-Cyrl-AL\000mk-Cyrl-AL", + "und-Cyrl-AZ\000az-Cyrl-AZ", + "und-Cyrl-BA\000sr-Cyrl-BA", + "und-Cyrl-BG\000bg-Cyrl-BG", + "und-Cyrl-GE\000ab-Cyrl-GE", + "und-Cyrl-GR\000mk-Cyrl-GR", + "und-Cyrl-IR\000kaa-Cyrl-IR", + "und-Cyrl-KG\000ky-Cyrl-KG", + "und-Cyrl-MD\000uk-Cyrl-MD", + "und-Cyrl-ME\000sr-Cyrl-ME", + "und-Cyrl-MK\000mk-Cyrl-MK", + "und-Cyrl-MN\000mn-Cyrl-MN", + "und-Cyrl-RO\000bg-Cyrl-RO", + "und-Cyrl-RS\000sr-Cyrl-RS", + "und-Cyrl-SK\000uk-Cyrl-SK", + "und-Cyrl-TJ\000tg-Cyrl-TJ", + "und-Cyrl-TR\000kbd-Cyrl-TR", + "und-Cyrl-UA\000uk-Cyrl-UA", + "und-Cyrl-UZ\000uz-Cyrl-UZ", + "und-Cyrl-XK\000sr-Cyrl-XK", + "und-DE\000de-Latn-DE", + "und-DJ\000fr-Latn-DJ", + "und-DK\000da-Latn-DK", + "und-DO\000es-Latn-DO", + "und-DZ\000ar-Arab-DZ", + "und-Deva\000hi-Deva-IN", + "und-Deva-BT\000ne-Deva-BT", + "und-Deva-FJ\000hif-Deva-FJ", + "und-Deva-MU\000bho-Deva-MU", + "und-Deva-NP\000ne-Deva-NP", + "und-Deva-PK\000btv-Deva-PK", + "und-Diak\000dv-Diak-MV", + "und-Dogr\000doi-Dogr-IN", + "und-Dupl\000fr-Dupl-FR", + "und-EA\000es-Latn-EA", + "und-EC\000es-Latn-EC", + "und-EE\000et-Latn-EE", + "und-EG\000ar-Arab-EG", + "und-EH\000ar-Arab-EH", + "und-ER\000ti-Ethi-ER", + "und-ES\000es-Latn-ES", + "und-ET\000am-Ethi-ET", + "und-Egyp\000egy-Egyp-EG", + "und-Elba\000sq-Elba-AL", + "und-Elym\000arc-Elym-IR", + "und-Ethi\000am-Ethi-ET", + "und-Ethi-ER\000ti-Ethi-ER", + "und-FI\000fi-Latn-FI", + "und-FO\000fo-Latn-FO", + "und-FR\000fr-Latn-FR", + "und-GA\000fr-Latn-GA", + "und-GE\000ka-Geor-GE", + "und-GF\000fr-Latn-GF", + "und-GH\000ak-Latn-GH", + "und-GL\000kl-Latn-GL", + "und-GN\000fr-Latn-GN", + "und-GP\000fr-Latn-GP", + "und-GQ\000es-Latn-GQ", + "und-GR\000el-Grek-GR", + "und-GT\000es-Latn-GT", + "und-GW\000pt-Latn-GW", + "und-Gara\000wo-Gara-SN", + "und-Geor\000ka-Geor-GE", + "und-Glag\000cu-Glag-BG", + "und-Gong\000wsg-Gong-IN", + "und-Gonm\000esg-Gonm-IN", + "und-Goth\000got-Goth-UA", + "und-Gran\000sa-Gran-IN", + "und-Grek\000el-Grek-GR", + "und-Grek-TR\000bgx-Grek-TR", + "und-Gujr\000gu-Gujr-IN", + "und-Gukh\000gvr-Gukh-NP", + "und-Guru\000pa-Guru-IN", + "und-HK\000zh-Hant-HK", + "und-HN\000es-Latn-HN", + "und-HR\000hr-Latn-HR", + "und-HT\000ht-Latn-HT", + "und-HU\000hu-Latn-HU", + "und-Hanb\000zh-Hanb-TW", + "und-Hang\000ko-Hang-KR", + "und-Hani\000zh-Hani-CN", + "und-Hano\000hnn-Hano-PH", + "und-Hans\000zh-Hans-CN", + "und-Hant\000zh-Hant-TW", + "und-Hant-CA\000yue-Hant-CA", + "und-Hant-CN\000yue-Hant-CN", + "und-Hatr\000arc-Hatr-IQ", + "und-Hebr\000he-Hebr-IL", + "und-Hebr-SE\000yi-Hebr-SE", + "und-Hebr-UA\000yi-Hebr-UA", + "und-Hebr-US\000yi-Hebr-US", + "und-Hira\000ja-Hira-JP", + "und-Hluw\000hlu-Hluw-TR", + "und-Hmng\000hnj-Hmng-LA", + "und-Hmnp\000mww-Hmnp-US", + "und-Hmnp-AU\000hnj-Hmnp-AU", + "und-Hmnp-FR\000hnj-Hmnp-FR", + "und-Hmnp-GF\000hnj-Hmnp-GF", + "und-Hmnp-LA\000hnj-Hmnp-LA", + "und-Hmnp-MM\000hnj-Hmnp-MM", + "und-Hmnp-SR\000hnj-Hmnp-SR", + "und-Hmnp-TH\000hnj-Hmnp-TH", + "und-Hung\000hu-Hung-HU", + "und-IC\000es-Latn-IC", + "und-ID\000id-Latn-ID", + "und-IL\000he-Hebr-IL", + "und-IN\000hi-Deva-IN", + "und-IQ\000ar-Arab-IQ", + "und-IR\000fa-Arab-IR", + "und-IS\000is-Latn-IS", + "und-IT\000it-Latn-IT", + "und-Ital\000ett-Ital-IT", + "und-JO\000ar-Arab-JO", + "und-JP\000ja-Jpan-JP", + "und-Jamo\000ko-Jamo-KR", + "und-Java\000jv-Java-ID", + "und-Jpan\000ja-Jpan-JP", + "und-KE\000sw-Latn-KE", + "und-KG\000ky-Cyrl-KG", + "und-KH\000km-Khmr-KH", + "und-KM\000ar-Arab-KM", + "und-KP\000ko-Kore-KP", + "und-KR\000ko-Kore-KR", + "und-KW\000ar-Arab-KW", + "und-KZ\000ru-Cyrl-KZ", + "und-Kali\000eky-Kali-MM", + "und-Kana\000ja-Kana-JP", + "und-Kawi\000kaw-Kawi-ID", + "und-Khar\000pgd-Khar-PK", + "und-Khmr\000km-Khmr-KH", + "und-Khoj\000sd-Khoj-IN", + "und-Kits\000zkt-Kits-CN", + "und-Knda\000kn-Knda-IN", + "und-Kore\000ko-Kore-KR", + "und-Krai\000bap-Krai-IN", + "und-Kthi\000bho-Kthi-IN", + "und-LA\000lo-Laoo-LA", + "und-LB\000ar-Arab-LB", + "und-LI\000de-Latn-LI", + "und-LK\000si-Sinh-LK", + "und-LS\000st-Latn-LS", + "und-LT\000lt-Latn-LT", + "und-LU\000fr-Latn-LU", + "und-LV\000lv-Latn-LV", + "und-LY\000ar-Arab-LY", + "und-Lana\000nod-Lana-TH", + "und-Lana-MM\000stu-Lana-MM", + "und-Laoo\000lo-Laoo-LA", + "und-Latn-AE\000en-Latn-AE", + "und-Latn-AF\000tk-Latn-AF", + "und-Latn-AM\000ku-Latn-AM", + "und-Latn-BD\000en-Latn-BD", + "und-Latn-BG\000en-Latn-BG", + "und-Latn-BT\000en-Latn-BT", + "und-Latn-CC\000en-Latn-CC", + "und-Latn-CN\000za-Latn-CN", + "und-Latn-CY\000tr-Latn-CY", + "und-Latn-DZ\000fr-Latn-DZ", + "und-Latn-EG\000en-Latn-EG", + "und-Latn-ER\000en-Latn-ER", + "und-Latn-ET\000en-Latn-ET", + "und-Latn-GR\000en-Latn-GR", + "und-Latn-HK\000en-Latn-HK", + "und-Latn-IL\000en-Latn-IL", + "und-Latn-IN\000en-Latn-IN", + "und-Latn-IQ\000en-Latn-IQ", + "und-Latn-IR\000tk-Latn-IR", + "und-Latn-JO\000en-Latn-JO", + "und-Latn-KM\000fr-Latn-KM", + "und-Latn-KZ\000en-Latn-KZ", + "und-Latn-LB\000en-Latn-LB", + "und-Latn-LK\000en-Latn-LK", + "und-Latn-MA\000fr-Latn-MA", + "und-Latn-MK\000sq-Latn-MK", + "und-Latn-MM\000kac-Latn-MM", + "und-Latn-MO\000en-Latn-MO", + "und-Latn-MR\000fr-Latn-MR", + "und-Latn-MV\000en-Latn-MV", + "und-Latn-NP\000en-Latn-NP", + "und-Latn-PK\000en-Latn-PK", + "und-Latn-RU\000krl-Latn-RU", + "und-Latn-SD\000en-Latn-SD", + "und-Latn-SS\000en-Latn-SS", + "und-Latn-SY\000ku-Latn-SY", + "und-Latn-TD\000fr-Latn-TD", + "und-Latn-TH\000en-Latn-TH", + "und-Latn-TN\000fr-Latn-TN", + "und-Latn-TW\000trv-Latn-TW", + "und-Latn-UA\000pl-Latn-UA", + "und-Latn-YE\000en-Latn-YE", + "und-Lepc\000lep-Lepc-IN", + "und-Limb\000lif-Limb-IN", + "und-Lina\000lab-Lina-GR", + "und-Linb\000gmy-Linb-GR", + "und-Lisu\000lis-Lisu-CN", + "und-Lyci\000xlc-Lyci-TR", + "und-Lydi\000xld-Lydi-TR", + "und-MA\000ar-Arab-MA", + "und-MC\000fr-Latn-MC", + "und-MD\000ro-Latn-MD", + "und-ME\000sr-Latn-ME", + "und-MF\000fr-Latn-MF", + "und-MG\000mg-Latn-MG", + "und-MK\000mk-Cyrl-MK", + "und-ML\000bm-Latn-ML", + "und-MM\000my-Mymr-MM", + "und-MN\000mn-Cyrl-MN", + "und-MO\000zh-Hant-MO", + "und-MQ\000fr-Latn-MQ", + "und-MR\000ar-Arab-MR", + "und-MT\000mt-Latn-MT", + "und-MU\000fr-Latn-MU", + "und-MV\000dv-Thaa-MV", + "und-MX\000es-Latn-MX", + "und-MY\000ms-Latn-MY", + "und-MZ\000pt-Latn-MZ", + "und-Mahj\000hi-Mahj-IN", + "und-Maka\000mak-Maka-ID", + "und-Mand\000myz-Mand-IR", + "und-Mani\000xmn-Mani-CN", + "und-Marc\000bo-Marc-CN", + "und-Medf\000dmf-Medf-NG", + "und-Mend\000men-Mend-SL", + "und-Merc\000xmr-Merc-SD", + "und-Mero\000xmr-Mero-SD", + "und-Mlym\000ml-Mlym-IN", + "und-Modi\000mr-Modi-IN", + "und-Mong\000mn-Mong-CN", + "und-Mroo\000mro-Mroo-BD", + "und-Mtei\000mni-Mtei-IN", + "und-Mult\000skr-Mult-PK", + "und-Mymr\000my-Mymr-MM", + "und-Mymr-IN\000kht-Mymr-IN", + "und-Mymr-TH\000mnw-Mymr-TH", + "und-NA\000af-Latn-NA", + "und-NC\000fr-Latn-NC", + "und-NE\000ha-Latn-NE", + "und-NI\000es-Latn-NI", + "und-NL\000nl-Latn-NL", + "und-NO\000nb-Latn-NO", + "und-NP\000ne-Deva-NP", + "und-Nagm\000unr-Nagm-IN", + "und-Nand\000sa-Nand-IN", + "und-Narb\000xna-Narb-SA", + "und-Nbat\000arc-Nbat-JO", + "und-Newa\000new-Newa-NP", + "und-Nkoo\000man-Nkoo-GN", + "und-Nkoo-ML\000bm-Nkoo-ML", + "und-OM\000ar-Arab-OM", + "und-Ogam\000sga-Ogam-IE", + "und-Olck\000sat-Olck-IN", + "und-Onao\000unr-Onao-IN", + "und-Orkh\000otk-Orkh-MN", + "und-Orya\000or-Orya-IN", + "und-Osge\000osa-Osge-US", + "und-Osma\000so-Osma-SO", + "und-Ougr\000oui-Ougr-CN", + "und-PA\000es-Latn-PA", + "und-PE\000es-Latn-PE", + "und-PF\000fr-Latn-PF", + "und-PG\000tpi-Latn-PG", + "und-PH\000fil-Latn-PH", + "und-PK\000ur-Arab-PK", + "und-PL\000pl-Latn-PL", + "und-PM\000fr-Latn-PM", + "und-PR\000es-Latn-PR", + "und-PS\000ar-Arab-PS", + "und-PT\000pt-Latn-PT", + "und-PW\000pau-Latn-PW", + "und-PY\000gn-Latn-PY", + "und-Palm\000arc-Palm-SY", + "und-Pauc\000ctd-Pauc-MM", + "und-Perm\000kv-Perm-RU", + "und-Phag\000lzh-Phag-CN", + "und-Phli\000pal-Phli-IR", + "und-Phlp\000pal-Phlp-CN", + "und-Phnx\000phn-Phnx-LB", + "und-Plrd\000hmd-Plrd-CN", + "und-Prti\000xpr-Prti-IR", + "und-QA\000ar-Arab-QA", + "und-RE\000fr-Latn-RE", + "und-RO\000ro-Latn-RO", + "und-RS\000sr-Cyrl-RS", + "und-RU\000ru-Cyrl-RU", + "und-RW\000rw-Latn-RW", + "und-Rjng\000rej-Rjng-ID", + "und-Rohg\000rhg-Rohg-MM", + "und-Runr\000non-Runr-SE", + "und-SA\000ar-Arab-SA", + "und-SC\000fr-Latn-SC", + "und-SD\000ar-Arab-SD", + "und-SE\000sv-Latn-SE", + "und-SI\000sl-Latn-SI", + "und-SJ\000nb-Latn-SJ", + "und-SK\000sk-Latn-SK", + "und-SM\000it-Latn-SM", + "und-SN\000wo-Latn-SN", + "und-SO\000so-Latn-SO", + "und-SR\000nl-Latn-SR", + "und-SS\000ar-Arab-SS", + "und-ST\000pt-Latn-ST", + "und-SV\000es-Latn-SV", + "und-SY\000ar-Arab-SY", + "und-Samr\000smp-Samr-IL", + "und-Sarb\000xsa-Sarb-YE", + "und-Saur\000saz-Saur-IN", + "und-Sgnw\000ase-Sgnw-US", + "und-Shaw\000en-Shaw-GB", + "und-Shrd\000sa-Shrd-IN", + "und-Sidd\000sa-Sidd-IN", + "und-Sidt\000xsd-Sidt-TR", + "und-Sind\000sd-Sind-IN", + "und-Sinh\000si-Sinh-LK", + "und-Sogd\000sog-Sogd-UZ", + "und-Sogo\000sog-Sogo-UZ", + "und-Sora\000srb-Sora-IN", + "und-Soyo\000cmg-Soyo-MN", + "und-Sund\000su-Sund-ID", + "und-Sunu\000suz-Sunu-NP", + "und-Sylo\000syl-Sylo-BD", + "und-Syrc\000syr-Syrc-IQ", + "und-TD\000ar-Arab-TD", + "und-TF\000fr-Latn-TF", + "und-TG\000fr-Latn-TG", + "und-TH\000th-Thai-TH", + "und-TJ\000tg-Cyrl-TJ", + "und-TK\000tkl-Latn-TK", + "und-TL\000pt-Latn-TL", + "und-TM\000tk-Latn-TM", + "und-TN\000ar-Arab-TN", + "und-TO\000to-Latn-TO", + "und-TR\000tr-Latn-TR", + "und-TV\000tvl-Latn-TV", + "und-TW\000zh-Hant-TW", + "und-TZ\000sw-Latn-TZ", + "und-Tagb\000tbw-Tagb-PH", + "und-Takr\000doi-Takr-IN", + "und-Tale\000tdd-Tale-CN", + "und-Talu\000khb-Talu-CN", + "und-Taml\000ta-Taml-IN", + "und-Tang\000txg-Tang-CN", + "und-Tavt\000blt-Tavt-VN", + "und-Tayo\000tyj-Tayo-VN", + "und-Telu\000te-Telu-IN", + "und-Tfng\000zgh-Tfng-MA", + "und-Tglg\000fil-Tglg-PH", + "und-Thaa\000dv-Thaa-MV", + "und-Thai\000th-Thai-TH", + "und-Thai-CN\000lcp-Thai-CN", + "und-Thai-KH\000kdt-Thai-KH", + "und-Thai-LA\000kdt-Thai-LA", + "und-Tibt\000bo-Tibt-CN", + "und-Tibt-BT\000dz-Tibt-BT", + "und-Tirh\000mai-Tirh-IN", + "und-Tnsa\000nst-Tnsa-IN", + "und-Todr\000sq-Todr-AL", + "und-Tols\000kru-Tols-IN", + "und-Toto\000txo-Toto-IN", + "und-Tutg\000sa-Tutg-IN", + "und-UA\000uk-Cyrl-UA", + "und-UG\000sw-Latn-UG", + "und-UY\000es-Latn-UY", + "und-UZ\000uz-Latn-UZ", + "und-Ugar\000uga-Ugar-SY", + "und-VA\000it-Latn-VA", + "und-VE\000es-Latn-VE", + "und-VN\000vi-Latn-VN", + "und-VU\000bi-Latn-VU", + "und-Vaii\000vai-Vaii-LR", + "und-Vith\000sq-Vith-AL", + "und-WF\000fr-Latn-WF", + "und-WS\000sm-Latn-WS", + "und-Wara\000hoc-Wara-IN", + "und-Wcho\000nnp-Wcho-IN", + "und-XK\000sq-Latn-XK", + "und-Xpeo\000peo-Xpeo-IR", + "und-Xsux\000akk-Xsux-IQ", + "und-YE\000ar-Arab-YE", + "und-YT\000fr-Latn-YT", + "und-Yezi\000ku-Yezi-GE", + "und-Yiii\000ii-Yiii-CN", + "und-ZW\000sn-Latn-ZW", + "und-Zanb\000cmg-Zanb-MN", + "une\000une-Latn-NG", + "ung\000ung-Latn-AU", + "uni\000uni-Latn-PG", + "unk\000unk-Latn-BR", + "unm\000unm-Latn-US", + "unn\000unn-Latn-AU", + "unr\000unr-Beng-IN", + "unr-Deva\000unr-Deva-NP", + "unr-NP\000unr-Deva-NP", + "unu\000unu-Latn-PG", + "unx\000unx-Beng-IN", + "unz\000unz-Latn-ID", + "uon\000uon-Latn-TW", + "upi\000upi-Latn-PG", + "upv\000upv-Latn-VU", + "ur\000ur-Arab-PK", + "ura\000ura-Latn-PE", + "urb\000urb-Latn-BR", + "urc\000urc-Latn-AU", + "ure\000ure-Latn-BO", + "urf\000urf-Latn-AU", + "urg\000urg-Latn-PG", + "urh\000urh-Latn-NG", + "uri\000uri-Latn-PG", + "urk\000urk-Thai-TH", + "urm\000urm-Latn-PG", + "urn\000urn-Latn-ID", + "uro\000uro-Latn-PG", + "urp\000urp-Latn-BR", + "urr\000urr-Latn-VU", + "urt\000urt-Latn-PG", + "uru\000uru-Latn-BR", + "urv\000urv-Latn-PG", + "urw\000urw-Latn-PG", + "urx\000urx-Latn-PG", + "ury\000ury-Latn-ID", + "urz\000urz-Latn-BR", + "usa\000usa-Latn-PG", + "ush\000ush-Arab-PK", + "usi\000usi-Latn-BD", + "usk\000usk-Latn-CM", + "usp\000usp-Latn-GT", + "uss\000uss-Latn-NG", + "usu\000usu-Latn-PG", + "uta\000uta-Latn-NG", + "ute\000ute-Latn-US", + "uth\000uth-Latn-NG", + "utp\000utp-Latn-SB", + "utr\000utr-Latn-NG", + "utu\000utu-Latn-PG", + "uum\000uum-Grek-GE", + "uur\000uur-Latn-VU", + "uve\000uve-Latn-NC", + "uvh\000uvh-Latn-PG", + "uvl\000uvl-Latn-PG", + "uwa\000uwa-Latn-AU", + "uya\000uya-Latn-NG", + "uz\000uz-Latn-UZ", + "uz-AF\000uz-Arab-AF", + "uz-Arab\000uz-Arab-AF", + "uz-CN\000uz-Cyrl-CN", + "uzs\000uzs-Arab-AF", + "vaa\000vaa-Taml-IN", + "vae\000vae-Latn-CF", + "vaf\000vaf-Arab-IR", + "vag\000vag-Latn-GH", + "vah\000vah-Deva-IN", + "vai\000vai-Vaii-LR", + "vaj\000vaj-Latn-NA", + "val\000val-Latn-PG", + "vam\000vam-Latn-PG", + "van\000van-Latn-PG", + "vao\000vao-Latn-VU", + "vap\000vap-Latn-IN", + "var\000var-Latn-MX", + "vas\000vas-Deva-IN", + "vau\000vau-Latn-CD", + "vav\000vav-Deva-IN", + "vay\000vay-Deva-NP", + "vbb\000vbb-Latn-ID", + "vbk\000vbk-Latn-PH", + "ve\000ve-Latn-ZA", + "vec\000vec-Latn-IT", + "vem\000vem-Latn-NG", + "veo\000veo-Latn-US", + "vep\000vep-Latn-RU", + "ver\000ver-Latn-NG", + "vgr\000vgr-Arab-PK", + "vi\000vi-Latn-VN", + "vic\000vic-Latn-SX", + "vid\000vid-Latn-TZ", + "vif\000vif-Latn-CG", + "vig\000vig-Latn-BF", + "vil\000vil-Latn-AR", + "vin\000vin-Latn-TZ", + "vit\000vit-Latn-NG", + "viv\000viv-Latn-PG", + "vjk\000vjk-Deva-IN", + "vka\000vka-Latn-AU", + "vkj\000vkj-Latn-TD", + "vkk\000vkk-Latn-ID", + "vkl\000vkl-Latn-ID", + "vkm\000vkm-Latn-BR", + "vkn\000vkn-Latn-NG", + "vko\000vko-Latn-ID", + "vkp\000vkp-Latn-IN", + "vkt\000vkt-Latn-ID", + "vku\000vku-Latn-AU", + "vkz\000vkz-Latn-NG", + "vlp\000vlp-Latn-VU", + "vls\000vls-Latn-BE", + "vma\000vma-Latn-AU", + "vmb\000vmb-Latn-AU", + "vmc\000vmc-Latn-MX", + "vmd\000vmd-Knda-IN", + "vme\000vme-Latn-ID", + "vmf\000vmf-Latn-DE", + "vmg\000vmg-Latn-PG", + "vmh\000vmh-Arab-IR", + "vmi\000vmi-Latn-AU", + "vmj\000vmj-Latn-MX", + "vmk\000vmk-Latn-MZ", + "vml\000vml-Latn-AU", + "vmm\000vmm-Latn-MX", + "vmp\000vmp-Latn-MX", + "vmq\000vmq-Latn-MX", + "vmr\000vmr-Latn-MZ", + "vms\000vms-Latn-ID", + "vmu\000vmu-Latn-AU", + "vmw\000vmw-Latn-MZ", + "vmx\000vmx-Latn-MX", + "vmy\000vmy-Latn-MX", + "vmz\000vmz-Latn-MX", + "vnk\000vnk-Latn-SB", + "vnm\000vnm-Latn-VU", + "vnp\000vnp-Latn-VU", + "vo\000vo-Latn-001", + "vor\000vor-Latn-NG", + "vot\000vot-Latn-RU", + "vra\000vra-Latn-VU", + "vro\000vro-Latn-EE", + "vrs\000vrs-Latn-SB", + "vrt\000vrt-Latn-VU", + "vto\000vto-Latn-ID", + "vum\000vum-Latn-GA", + "vun\000vun-Latn-TZ", + "vut\000vut-Latn-CM", + "vwa\000vwa-Latn-CN", + "wa\000wa-Latn-BE", + "waa\000waa-Latn-US", + "wab\000wab-Latn-PG", + "wac\000wac-Latn-US", + "wad\000wad-Latn-ID", + "wae\000wae-Latn-CH", + "waf\000waf-Latn-BR", + "wag\000wag-Latn-PG", + "wah\000wah-Latn-ID", + "wai\000wai-Latn-ID", + "waj\000waj-Latn-PG", + "wal\000wal-Ethi-ET", + "wam\000wam-Latn-US", + "wan\000wan-Latn-CI", + "wap\000wap-Latn-GY", + "waq\000waq-Latn-AU", + "war\000war-Latn-PH", + "was\000was-Latn-US", + "wat\000wat-Latn-PG", + "wau\000wau-Latn-BR", + "wav\000wav-Latn-NG", + "waw\000waw-Latn-BR", + "wax\000wax-Latn-PG", + "way\000way-Latn-SR", + "waz\000waz-Latn-PG", + "wba\000wba-Latn-VE", + "wbb\000wbb-Latn-ID", + "wbe\000wbe-Latn-ID", + "wbf\000wbf-Latn-BF", + "wbh\000wbh-Latn-TZ", + "wbi\000wbi-Latn-TZ", + "wbj\000wbj-Latn-TZ", + "wbk\000wbk-Arab-AF", + "wbl\000wbl-Latn-PK", + "wbm\000wbm-Latn-CN", + "wbp\000wbp-Latn-AU", + "wbq\000wbq-Telu-IN", + "wbr\000wbr-Deva-IN", + "wbt\000wbt-Latn-AU", + "wbv\000wbv-Latn-AU", + "wbw\000wbw-Latn-ID", + "wca\000wca-Latn-BR", + "wci\000wci-Latn-TG", + "wdd\000wdd-Latn-GA", + "wdg\000wdg-Latn-PG", + "wdj\000wdj-Latn-AU", + "wdk\000wdk-Latn-AU", + "wdt\000wdt-Latn-CA", + "wdu\000wdu-Latn-AU", + "wdy\000wdy-Latn-AU", + "wec\000wec-Latn-CI", + "wed\000wed-Latn-PG", + "weg\000weg-Latn-AU", + "weh\000weh-Latn-CM", + "wei\000wei-Latn-PG", + "wem\000wem-Latn-BJ", + "weo\000weo-Latn-ID", + "wep\000wep-Latn-DE", + "wer\000wer-Latn-PG", + "wes\000wes-Latn-CM", + "wet\000wet-Latn-ID", + "weu\000weu-Latn-MM", + "wew\000wew-Latn-ID", + "wfg\000wfg-Latn-ID", + "wga\000wga-Latn-AU", + "wgb\000wgb-Latn-PG", + "wgg\000wgg-Latn-AU", + "wgi\000wgi-Latn-PG", + "wgo\000wgo-Latn-ID", + "wgu\000wgu-Latn-AU", + "wgy\000wgy-Latn-AU", + "wha\000wha-Latn-ID", + "whg\000whg-Latn-PG", + "whk\000whk-Latn-ID", + "whu\000whu-Latn-ID", + "wib\000wib-Latn-BF", + "wic\000wic-Latn-US", + "wie\000wie-Latn-AU", + "wif\000wif-Latn-AU", + "wig\000wig-Latn-AU", + "wih\000wih-Latn-AU", + "wii\000wii-Latn-PG", + "wij\000wij-Latn-AU", + "wik\000wik-Latn-AU", + "wil\000wil-Latn-AU", + "wim\000wim-Latn-AU", + "win\000win-Latn-US", + "wir\000wir-Latn-BR", + "wiu\000wiu-Latn-PG", + "wiv\000wiv-Latn-PG", + "wiy\000wiy-Latn-US", + "wja\000wja-Latn-NG", + "wji\000wji-Latn-NG", + "wka\000wka-Latn-TZ", + "wkd\000wkd-Latn-ID", + "wkr\000wkr-Latn-AU", + "wkw\000wkw-Latn-AU", + "wky\000wky-Latn-AU", + "wla\000wla-Latn-PG", + "wle\000wle-Ethi-ET", + "wlg\000wlg-Latn-AU", + "wlh\000wlh-Latn-TL", + "wli\000wli-Latn-ID", + "wlm\000wlm-Latn-GB", + "wlo\000wlo-Arab-ID", + "wlr\000wlr-Latn-VU", + "wls\000wls-Latn-WF", + "wlu\000wlu-Latn-AU", + "wlv\000wlv-Latn-AR", + "wlw\000wlw-Latn-ID", + "wlx\000wlx-Latn-GH", + "wma\000wma-Latn-NG", + "wmb\000wmb-Latn-AU", + "wmc\000wmc-Latn-PG", + "wmd\000wmd-Latn-BR", + "wme\000wme-Deva-NP", + "wmh\000wmh-Latn-TL", + "wmi\000wmi-Latn-AU", + "wmm\000wmm-Latn-ID", + "wmn\000wmn-Latn-NC", + "wmo\000wmo-Latn-PG", + "wms\000wms-Latn-ID", + "wmt\000wmt-Latn-AU", + "wmw\000wmw-Latn-MZ", + "wmx\000wmx-Latn-PG", + "wnb\000wnb-Latn-PG", + "wnc\000wnc-Latn-PG", + "wnd\000wnd-Latn-AU", + "wne\000wne-Arab-PK", + "wng\000wng-Latn-ID", + "wni\000wni-Arab-KM", + "wnk\000wnk-Latn-ID", + "wnm\000wnm-Latn-AU", + "wnn\000wnn-Latn-AU", + "wno\000wno-Latn-ID", + "wnp\000wnp-Latn-PG", + "wnu\000wnu-Latn-PG", + "wnw\000wnw-Latn-US", + "wny\000wny-Latn-AU", + "wo\000wo-Latn-SN", + "woa\000woa-Latn-AU", + "wob\000wob-Latn-CI", + "woc\000woc-Latn-PG", + "wod\000wod-Latn-ID", + "woe\000woe-Latn-FM", + "wof\000wof-Latn-GM", + "wog\000wog-Latn-PG", + "woi\000woi-Latn-ID", + "wok\000wok-Latn-CM", + "wom\000wom-Latn-NG", + "won\000won-Latn-CD", + "woo\000woo-Latn-ID", + "wor\000wor-Latn-ID", + "wos\000wos-Latn-PG", + "wow\000wow-Latn-ID", + "wpc\000wpc-Latn-VE", + "wrb\000wrb-Latn-AU", + "wrg\000wrg-Latn-AU", + "wrh\000wrh-Latn-AU", + "wri\000wri-Latn-AU", + "wrk\000wrk-Latn-AU", + "wrl\000wrl-Latn-AU", + "wrm\000wrm-Latn-AU", + "wro\000wro-Latn-AU", + "wrp\000wrp-Latn-ID", + "wrr\000wrr-Latn-AU", + "wrs\000wrs-Latn-PG", + "wru\000wru-Latn-ID", + "wrv\000wrv-Latn-PG", + "wrw\000wrw-Latn-AU", + "wrx\000wrx-Latn-ID", + "wrz\000wrz-Latn-AU", + "wsa\000wsa-Latn-ID", + "wsg\000wsg-Gong-IN", + "wsi\000wsi-Latn-VU", + "wsk\000wsk-Latn-PG", + "wsr\000wsr-Latn-PG", + "wss\000wss-Latn-GH", + "wsu\000wsu-Latn-BR", + "wsv\000wsv-Arab-AF", + "wtb\000wtb-Latn-TZ", + "wtf\000wtf-Latn-PG", + "wth\000wth-Latn-AU", + "wti\000wti-Latn-ET", + "wtk\000wtk-Latn-PG", + "wtm\000wtm-Deva-IN", + "wtw\000wtw-Latn-ID", + "wua\000wua-Latn-AU", + "wub\000wub-Latn-AU", + "wud\000wud-Latn-TG", + "wul\000wul-Latn-ID", + "wum\000wum-Latn-GA", + "wun\000wun-Latn-TZ", + "wur\000wur-Latn-AU", + "wut\000wut-Latn-PG", + "wuu\000wuu-Hans-CN", + "wuv\000wuv-Latn-PG", + "wux\000wux-Latn-AU", + "wuy\000wuy-Latn-ID", + "wwa\000wwa-Latn-BJ", + "wwb\000wwb-Latn-AU", + "wwo\000wwo-Latn-VU", + "wwr\000wwr-Latn-AU", + "www\000www-Latn-CM", + "wxw\000wxw-Latn-AU", + "wyb\000wyb-Latn-AU", + "wyi\000wyi-Latn-AU", + "wym\000wym-Latn-PL", + "wyn\000wyn-Latn-US", + "wyr\000wyr-Latn-BR", + "wyy\000wyy-Latn-FJ", + "xaa\000xaa-Latn-ES", + "xab\000xab-Latn-NG", + "xag\000xag-Aghb-AZ", + "xai\000xai-Latn-BR", + "xaj\000xaj-Latn-BR", + "xak\000xak-Latn-VE", + "xal\000xal-Cyrl-RU", + "xam\000xam-Latn-ZA", + "xan\000xan-Ethi-ET", + "xao\000xao-Latn-VN", + "xar\000xar-Latn-PG", + "xas\000xas-Cyrl-RU", + "xat\000xat-Latn-BR", + "xau\000xau-Latn-ID", + "xav\000xav-Latn-BR", + "xaw\000xaw-Latn-US", + "xay\000xay-Latn-ID", + "xbb\000xbb-Latn-AU", + "xbd\000xbd-Latn-AU", + "xbe\000xbe-Latn-AU", + "xbg\000xbg-Latn-AU", + "xbi\000xbi-Latn-PG", + "xbj\000xbj-Latn-AU", + "xbm\000xbm-Latn-FR", + "xbn\000xbn-Latn-MY", + "xbp\000xbp-Latn-AU", + "xbr\000xbr-Latn-ID", + "xbw\000xbw-Latn-BR", + "xby\000xby-Latn-AU", + "xch\000xch-Latn-US", + "xco\000xco-Chrs-UZ", + "xcr\000xcr-Cari-TR", + "xda\000xda-Latn-AU", + "xdk\000xdk-Latn-AU", + "xdo\000xdo-Latn-AO", + "xdq\000xdq-Cyrl-RU", + "xdy\000xdy-Latn-ID", + "xed\000xed-Latn-CM", + "xeg\000xeg-Latn-ZA", + "xem\000xem-Latn-ID", + "xer\000xer-Latn-BR", + "xes\000xes-Latn-PG", + "xet\000xet-Latn-BR", + "xeu\000xeu-Latn-PG", + "xgb\000xgb-Latn-CI", + "xgd\000xgd-Latn-AU", + "xgg\000xgg-Latn-AU", + "xgi\000xgi-Latn-AU", + "xgm\000xgm-Latn-AU", + "xgu\000xgu-Latn-AU", + "xgw\000xgw-Latn-AU", + "xh\000xh-Latn-ZA", + "xhe\000xhe-Arab-PK", + "xhm\000xhm-Khmr-KH", + "xhv\000xhv-Latn-VN", + "xii\000xii-Latn-ZA", + "xin\000xin-Latn-GT", + "xir\000xir-Latn-BR", + "xis\000xis-Orya-IN", + "xiy\000xiy-Latn-BR", + "xjb\000xjb-Latn-AU", + "xjt\000xjt-Latn-AU", + "xka\000xka-Arab-PK", + "xkb\000xkb-Latn-BJ", + "xkc\000xkc-Arab-IR", + "xkd\000xkd-Latn-ID", + "xke\000xke-Latn-ID", + "xkf\000xkf-Tibt-BT", + "xkg\000xkg-Latn-ML", + "xkj\000xkj-Arab-IR", + "xkl\000xkl-Latn-ID", + "xkn\000xkn-Latn-ID", + "xkp\000xkp-Arab-IR", + "xkq\000xkq-Latn-ID", + "xkr\000xkr-Latn-BR", + "xks\000xks-Latn-ID", + "xkt\000xkt-Latn-GH", + "xku\000xku-Latn-CG", + "xkv\000xkv-Latn-BW", + "xkw\000xkw-Latn-ID", + "xkx\000xkx-Latn-PG", + "xky\000xky-Latn-MY", + "xkz\000xkz-Latn-BT", + "xla\000xla-Latn-PG", + "xlc\000xlc-Lyci-TR", + "xld\000xld-Lydi-TR", + "xly\000xly-Elym-IR", + "xma\000xma-Latn-SO", + "xmb\000xmb-Latn-CM", + "xmc\000xmc-Latn-MZ", + "xmd\000xmd-Latn-CM", + "xmf\000xmf-Geor-GE", + "xmg\000xmg-Latn-CM", + "xmh\000xmh-Latn-AU", + "xmj\000xmj-Latn-CM", + "xmm\000xmm-Latn-ID", + "xmn\000xmn-Mani-CN", + "xmo\000xmo-Latn-BR", + "xmp\000xmp-Latn-AU", + "xmq\000xmq-Latn-AU", + "xmr\000xmr-Merc-SD", + "xmt\000xmt-Latn-ID", + "xmu\000xmu-Latn-AU", + "xmv\000xmv-Latn-MG", + "xmw\000xmw-Latn-MG", + "xmx\000xmx-Latn-ID", + "xmy\000xmy-Latn-AU", + "xmz\000xmz-Latn-ID", + "xna\000xna-Narb-SA", + "xnb\000xnb-Latn-TW", + "xni\000xni-Latn-AU", + "xnj\000xnj-Latn-TZ", + "xnk\000xnk-Latn-AU", + "xnm\000xnm-Latn-AU", + "xnn\000xnn-Latn-PH", + "xnq\000xnq-Latn-MZ", + "xnr\000xnr-Deva-IN", + "xnt\000xnt-Latn-US", + "xnu\000xnu-Latn-AU", + "xny\000xny-Latn-AU", + "xnz\000xnz-Latn-EG", + "xoc\000xoc-Latn-NG", + "xod\000xod-Latn-ID", + "xog\000xog-Latn-UG", + "xoi\000xoi-Latn-PG", + "xok\000xok-Latn-BR", + "xom\000xom-Latn-SD", + "xon\000xon-Latn-GH", + "xoo\000xoo-Latn-BR", + "xop\000xop-Latn-PG", + "xor\000xor-Latn-BR", + "xow\000xow-Latn-PG", + "xpa\000xpa-Latn-AU", + "xpb\000xpb-Latn-AU", + "xpd\000xpd-Latn-AU", + "xpf\000xpf-Latn-AU", + "xpg\000xpg-Grek-TR", + "xph\000xph-Latn-AU", + "xpi\000xpi-Ogam-GB", + "xpj\000xpj-Latn-AU", + "xpk\000xpk-Latn-BR", + "xpl\000xpl-Latn-AU", + "xpm\000xpm-Cyrl-RU", + "xpn\000xpn-Latn-BR", + "xpo\000xpo-Latn-MX", + "xpq\000xpq-Latn-US", + "xpr\000xpr-Prti-IR", + "xpt\000xpt-Latn-AU", + "xpv\000xpv-Latn-AU", + "xpw\000xpw-Latn-AU", + "xpx\000xpx-Latn-AU", + "xpz\000xpz-Latn-AU", + "xra\000xra-Latn-BR", + "xrb\000xrb-Latn-BF", + "xrd\000xrd-Latn-AU", + "xre\000xre-Latn-BR", + "xrg\000xrg-Latn-AU", + "xri\000xri-Latn-BR", + "xrm\000xrm-Cyrl-RU", + "xrn\000xrn-Cyrl-RU", + "xrr\000xrr-Latn-IT", + "xru\000xru-Latn-AU", + "xrw\000xrw-Latn-PG", + "xsa\000xsa-Sarb-YE", + "xsb\000xsb-Latn-PH", + "xsd\000xsd-Sidt-TR", + "xse\000xse-Latn-ID", + "xsh\000xsh-Latn-NG", + "xsi\000xsi-Latn-PG", + "xsm\000xsm-Latn-GH", + "xsn\000xsn-Latn-NG", + "xsp\000xsp-Latn-PG", + "xsq\000xsq-Latn-MZ", + "xsr\000xsr-Deva-NP", + "xsu\000xsu-Latn-VE", + "xsy\000xsy-Latn-TW", + "xta\000xta-Latn-MX", + "xtb\000xtb-Latn-MX", + "xtc\000xtc-Latn-SD", + "xtd\000xtd-Latn-MX", + "xte\000xte-Latn-ID", + "xth\000xth-Latn-AU", + "xti\000xti-Latn-MX", + "xtj\000xtj-Latn-MX", + "xtl\000xtl-Latn-MX", + "xtm\000xtm-Latn-MX", + "xtn\000xtn-Latn-MX", + "xtp\000xtp-Latn-MX", + "xtq\000xtq-Brah-IR", + "xts\000xts-Latn-MX", + "xtt\000xtt-Latn-MX", + "xtu\000xtu-Latn-MX", + "xtv\000xtv-Latn-AU", + "xtw\000xtw-Latn-BR", + "xty\000xty-Latn-MX", + "xub\000xub-Taml-IN", + "xud\000xud-Latn-AU", + "xuj\000xuj-Taml-IN", + "xul\000xul-Latn-AU", + "xum\000xum-Latn-IT", + "xun\000xun-Latn-AU", + "xuo\000xuo-Latn-TD", + "xut\000xut-Latn-AU", + "xuu\000xuu-Latn-NA", + "xve\000xve-Ital-IT", + "xvi\000xvi-Arab-AF", + "xvn\000xvn-Latn-ES", + "xvo\000xvo-Latn-IT", + "xvs\000xvs-Latn-IT", + "xwa\000xwa-Latn-BR", + "xwd\000xwd-Latn-AU", + "xwe\000xwe-Latn-BJ", + "xwj\000xwj-Latn-AU", + "xwk\000xwk-Latn-AU", + "xwl\000xwl-Latn-BJ", + "xwo\000xwo-Cyrl-RU", + "xwr\000xwr-Latn-ID", + "xwt\000xwt-Latn-AU", + "xww\000xww-Latn-AU", + "xxb\000xxb-Latn-GH", + "xxk\000xxk-Latn-ID", + "xxm\000xxm-Latn-AU", + "xxr\000xxr-Latn-BR", + "xxt\000xxt-Latn-ID", + "xya\000xya-Latn-AU", + "xyb\000xyb-Latn-AU", + "xyj\000xyj-Latn-AU", + "xyk\000xyk-Latn-AU", + "xyl\000xyl-Latn-BR", + "xyt\000xyt-Latn-AU", + "xyy\000xyy-Latn-AU", + "xzh\000xzh-Marc-CN", + "xzp\000xzp-Latn-MX", + "yaa\000yaa-Latn-PE", + "yab\000yab-Latn-BR", + "yac\000yac-Latn-ID", + "yad\000yad-Latn-PE", + "yae\000yae-Latn-VE", + "yaf\000yaf-Latn-CD", + "yag\000yag-Latn-CL", + "yah\000yah-Latn-TJ", + "yai\000yai-Cyrl-TJ", + "yaj\000yaj-Latn-CF", + "yak\000yak-Latn-US", + "yal\000yal-Latn-GN", + "yam\000yam-Latn-CM", + "yan\000yan-Latn-NI", + "yao\000yao-Latn-MZ", + "yap\000yap-Latn-FM", + "yaq\000yaq-Latn-MX", + "yar\000yar-Latn-VE", + "yas\000yas-Latn-CM", + "yat\000yat-Latn-CM", + "yau\000yau-Latn-VE", + "yav\000yav-Latn-CM", + "yaw\000yaw-Latn-BR", + "yax\000yax-Latn-AO", + "yay\000yay-Latn-NG", + "yaz\000yaz-Latn-NG", + "yba\000yba-Latn-NG", + "ybb\000ybb-Latn-CM", + "ybe\000ybe-Latn-CN", + "ybh\000ybh-Deva-NP", + "ybi\000ybi-Deva-NP", + "ybj\000ybj-Latn-NG", + "ybl\000ybl-Latn-NG", + "ybm\000ybm-Latn-PG", + "ybn\000ybn-Latn-BR", + "ybo\000ybo-Latn-PG", + "ybx\000ybx-Latn-PG", + "yby\000yby-Latn-PG", + "ycl\000ycl-Latn-CN", + "ycn\000ycn-Latn-CO", + "ycr\000ycr-Latn-TW", + "yda\000yda-Latn-AU", + "yde\000yde-Latn-PG", + "ydg\000ydg-Arab-PK", + "ydk\000ydk-Latn-PG", + "yea\000yea-Mlym-IN", + "yec\000yec-Latn-DE", + "yee\000yee-Latn-PG", + "yei\000yei-Latn-CM", + "yej\000yej-Grek-GR", + "yel\000yel-Latn-CD", + "yer\000yer-Latn-NG", + "yes\000yes-Latn-NG", + "yet\000yet-Latn-ID", + "yeu\000yeu-Telu-IN", + "yev\000yev-Latn-PG", + "yey\000yey-Latn-BW", + "yga\000yga-Latn-AU", + "ygi\000ygi-Latn-AU", + "ygl\000ygl-Latn-PG", + "ygm\000ygm-Latn-PG", + "ygp\000ygp-Plrd-CN", + "ygr\000ygr-Latn-PG", + "ygu\000ygu-Latn-AU", + "ygw\000ygw-Latn-PG", + "yhd\000yhd-Hebr-IL", + "yi\000yi-Hebr-UA", + "yia\000yia-Latn-AU", + "yig\000yig-Yiii-CN", + "yih\000yih-Hebr-DE", + "yii\000yii-Latn-AU", + "yij\000yij-Latn-AU", + "yil\000yil-Latn-AU", + "yim\000yim-Latn-IN", + "yir\000yir-Latn-ID", + "yis\000yis-Latn-PG", + "yiv\000yiv-Yiii-CN", + "yka\000yka-Latn-PH", + "ykg\000ykg-Cyrl-RU", + "ykh\000ykh-Cyrl-MN", + "yki\000yki-Latn-ID", + "ykk\000ykk-Latn-PG", + "ykm\000ykm-Latn-PG", + "yko\000yko-Latn-CM", + "ykr\000ykr-Latn-PG", + "yky\000yky-Latn-CF", + "yla\000yla-Latn-PG", + "ylb\000ylb-Latn-PG", + "yle\000yle-Latn-PG", + "ylg\000ylg-Latn-PG", + "yli\000yli-Latn-ID", + "yll\000yll-Latn-PG", + "ylr\000ylr-Latn-AU", + "ylu\000ylu-Latn-PG", + "yly\000yly-Latn-NC", + "ymb\000ymb-Latn-PG", + "yme\000yme-Latn-PE", + "ymg\000ymg-Latn-CD", + "ymk\000ymk-Latn-MZ", + "yml\000yml-Latn-PG", + "ymm\000ymm-Latn-SO", + "ymn\000ymn-Latn-ID", + "ymo\000ymo-Latn-PG", + "ymp\000ymp-Latn-PG", + "yna\000yna-Plrd-CN", + "ynb\000ynb-Latn-PG", + "ynd\000ynd-Latn-AU", + "yng\000yng-Latn-CD", + "ynk\000ynk-Cyrl-RU", + "ynl\000ynl-Latn-PG", + "ynq\000ynq-Latn-NG", + "yns\000yns-Latn-CD", + "ynu\000ynu-Latn-CO", + "yo\000yo-Latn-NG", + "yob\000yob-Latn-PG", + "yog\000yog-Latn-PH", + "yoi\000yoi-Jpan-JP", + "yok\000yok-Latn-US", + "yol\000yol-Latn-IE", + "yom\000yom-Latn-CD", + "yon\000yon-Latn-PG", + "yot\000yot-Latn-NG", + "yoy\000yoy-Thai-TH", + "yra\000yra-Latn-PG", + "yrb\000yrb-Latn-PG", + "yre\000yre-Latn-CI", + "yrk\000yrk-Cyrl-RU", + "yrl\000yrl-Latn-BR", + "yrm\000yrm-Latn-AU", + "yro\000yro-Latn-BR", + "yrs\000yrs-Latn-ID", + "yrw\000yrw-Latn-PG", + "yry\000yry-Latn-AU", + "ysd\000ysd-Yiii-CN", + "ysn\000ysn-Yiii-CN", + "ysp\000ysp-Yiii-CN", + "ysr\000ysr-Cyrl-RU", + "yss\000yss-Latn-PG", + "ysy\000ysy-Plrd-CN", + "ytw\000ytw-Latn-PG", + "yty\000yty-Latn-AU", + "yua\000yua-Latn-MX", + "yub\000yub-Latn-AU", + "yuc\000yuc-Latn-US", + "yud\000yud-Hebr-IL", + "yue\000yue-Hant-HK", + "yue-CN\000yue-Hans-CN", + "yue-Hans\000yue-Hans-CN", + "yuf\000yuf-Latn-US", + "yug\000yug-Cyrl-RU", + "yui\000yui-Latn-CO", + "yuj\000yuj-Latn-PG", + "yul\000yul-Latn-CF", + "yum\000yum-Latn-US", + "yun\000yun-Latn-NG", + "yup\000yup-Latn-CO", + "yuq\000yuq-Latn-BO", + "yur\000yur-Latn-US", + "yut\000yut-Latn-PG", + "yuw\000yuw-Latn-PG", + "yux\000yux-Cyrl-RU", + "yuz\000yuz-Latn-BO", + "yva\000yva-Latn-ID", + "yvt\000yvt-Latn-VE", + "ywa\000ywa-Latn-PG", + "ywg\000ywg-Latn-AU", + "ywn\000ywn-Latn-BR", + "ywq\000ywq-Plrd-CN", + "ywr\000ywr-Latn-AU", + "ywu\000ywu-Plrd-CN", + "yww\000yww-Latn-AU", + "yxa\000yxa-Latn-AU", + "yxg\000yxg-Latn-AU", + "yxl\000yxl-Latn-AU", + "yxm\000yxm-Latn-AU", + "yxu\000yxu-Latn-AU", + "yxy\000yxy-Latn-AU", + "yyr\000yyr-Latn-AU", + "yyu\000yyu-Latn-PG", + "za\000za-Latn-CN", + "zaa\000zaa-Latn-MX", + "zab\000zab-Latn-MX", + "zac\000zac-Latn-MX", + "zad\000zad-Latn-MX", + "zae\000zae-Latn-MX", + "zaf\000zaf-Latn-MX", + "zag\000zag-Latn-SD", + "zah\000zah-Latn-NG", + "zaj\000zaj-Latn-TZ", + "zak\000zak-Latn-TZ", + "zam\000zam-Latn-MX", + "zao\000zao-Latn-MX", + "zap\000zap-Latn-MX", + "zaq\000zaq-Latn-MX", + "zar\000zar-Latn-MX", + "zas\000zas-Latn-MX", + "zat\000zat-Latn-MX", + "zau\000zau-Tibt-IN", + "zav\000zav-Latn-MX", + "zaw\000zaw-Latn-MX", + "zax\000zax-Latn-MX", + "zay\000zay-Latn-ET", + "zaz\000zaz-Latn-NG", + "zba\000zba-Arab-001", + "zbc\000zbc-Latn-MY", + "zbe\000zbe-Latn-MY", + "zbt\000zbt-Latn-ID", + "zbu\000zbu-Latn-NG", + "zbw\000zbw-Latn-MY", + "zca\000zca-Latn-MX", + "zch\000zch-Hani-CN", + "zdj\000zdj-Arab-KM", + "zea\000zea-Latn-NL", + "zeg\000zeg-Latn-PG", + "zeh\000zeh-Hani-CN", + "zem\000zem-Latn-NG", + "zen\000zen-Tfng-MR", + "zga\000zga-Latn-TZ", + "zgb\000zgb-Hani-CN", + "zgh\000zgh-Tfng-MA", + "zgm\000zgm-Hani-CN", + "zgn\000zgn-Hani-CN", + "zgr\000zgr-Latn-PG", + "zh\000zh-Hans-CN", + "zh-AU\000zh-Hant-AU", + "zh-BN\000zh-Hant-BN", + "zh-Bopo\000zh-Bopo-TW", + "zh-GB\000zh-Hant-GB", + "zh-GF\000zh-Hant-GF", + "zh-HK\000zh-Hant-HK", + "zh-Hanb\000zh-Hanb-TW", + "zh-Hant\000zh-Hant-TW", + "zh-ID\000zh-Hant-ID", + "zh-MO\000zh-Hant-MO", + "zh-PA\000zh-Hant-PA", + "zh-PF\000zh-Hant-PF", + "zh-PH\000zh-Hant-PH", + "zh-SR\000zh-Hant-SR", + "zh-TH\000zh-Hant-TH", + "zh-TW\000zh-Hant-TW", + "zh-US\000zh-Hant-US", + "zh-VN\000zh-Hant-VN", + "zhd\000zhd-Hani-CN", + "zhi\000zhi-Latn-NG", + "zhn\000zhn-Latn-CN", + "zhw\000zhw-Latn-CM", + "zia\000zia-Latn-PG", + "zik\000zik-Latn-PG", + "zil\000zil-Latn-GN", + "zim\000zim-Latn-TD", + "zin\000zin-Latn-TZ", + "ziw\000ziw-Latn-TZ", + "ziz\000ziz-Latn-NG", + "zka\000zka-Latn-ID", + "zkd\000zkd-Latn-MM", + "zko\000zko-Cyrl-RU", + "zkp\000zkp-Latn-BR", + "zkt\000zkt-Kits-CN", + "zku\000zku-Latn-AU", + "zkz\000zkz-Cyrl-RU", + "zla\000zla-Latn-CD", + "zlj\000zlj-Hani-CN", + "zlm\000zlm-Latn-MY", + "zln\000zln-Hani-CN", + "zlq\000zlq-Hani-CN", + "zlu\000zlu-Latn-NG", + "zma\000zma-Latn-AU", + "zmb\000zmb-Latn-CD", + "zmc\000zmc-Latn-AU", + "zmd\000zmd-Latn-AU", + "zme\000zme-Latn-AU", + "zmf\000zmf-Latn-CD", + "zmg\000zmg-Latn-AU", + "zmh\000zmh-Latn-PG", + "zmi\000zmi-Latn-MY", + "zmj\000zmj-Latn-AU", + "zmk\000zmk-Latn-AU", + "zml\000zml-Latn-AU", + "zmm\000zmm-Latn-AU", + "zmn\000zmn-Latn-GA", + "zmo\000zmo-Latn-SD", + "zmp\000zmp-Latn-CD", + "zmq\000zmq-Latn-CD", + "zmr\000zmr-Latn-AU", + "zms\000zms-Latn-CD", + "zmt\000zmt-Latn-AU", + "zmu\000zmu-Latn-AU", + "zmv\000zmv-Latn-AU", + "zmw\000zmw-Latn-CD", + "zmx\000zmx-Latn-CG", + "zmy\000zmy-Latn-AU", + "zmz\000zmz-Latn-CD", + "zna\000zna-Latn-TD", + "zne\000zne-Latn-CD", + "zng\000zng-Latn-VN", + "znk\000znk-Latn-AU", + "zns\000zns-Latn-NG", + "zoc\000zoc-Latn-MX", + "zoh\000zoh-Latn-MX", + "zom\000zom-Latn-IN", + "zoo\000zoo-Latn-MX", + "zoq\000zoq-Latn-MX", + "zor\000zor-Latn-MX", + "zos\000zos-Latn-MX", + "zpa\000zpa-Latn-MX", + "zpb\000zpb-Latn-MX", + "zpc\000zpc-Latn-MX", + "zpd\000zpd-Latn-MX", + "zpe\000zpe-Latn-MX", + "zpf\000zpf-Latn-MX", + "zpg\000zpg-Latn-MX", + "zph\000zph-Latn-MX", + "zpi\000zpi-Latn-MX", + "zpj\000zpj-Latn-MX", + "zpk\000zpk-Latn-MX", + "zpl\000zpl-Latn-MX", + "zpm\000zpm-Latn-MX", + "zpn\000zpn-Latn-MX", + "zpo\000zpo-Latn-MX", + "zpp\000zpp-Latn-MX", + "zpq\000zpq-Latn-MX", + "zpr\000zpr-Latn-MX", + "zps\000zps-Latn-MX", + "zpt\000zpt-Latn-MX", + "zpu\000zpu-Latn-MX", + "zpv\000zpv-Latn-MX", + "zpw\000zpw-Latn-MX", + "zpx\000zpx-Latn-MX", + "zpy\000zpy-Latn-MX", + "zpz\000zpz-Latn-MX", + "zqe\000zqe-Hani-CN", + "zrg\000zrg-Orya-IN", + "zrn\000zrn-Latn-TD", + "zro\000zro-Latn-EC", + "zrp\000zrp-Hebr-FR", + "zrs\000zrs-Latn-ID", + "zsa\000zsa-Latn-PG", + "zsr\000zsr-Latn-MX", + "zsu\000zsu-Latn-PG", + "zte\000zte-Latn-MX", + "ztg\000ztg-Latn-MX", + "ztl\000ztl-Latn-MX", + "ztm\000ztm-Latn-MX", + "ztn\000ztn-Latn-MX", + "ztp\000ztp-Latn-MX", + "ztq\000ztq-Latn-MX", + "zts\000zts-Latn-MX", + "ztt\000ztt-Latn-MX", + "ztu\000ztu-Latn-MX", + "ztx\000ztx-Latn-MX", + "zty\000zty-Latn-MX", + "zu\000zu-Latn-ZA", + "zuh\000zuh-Latn-PG", + "zum\000zum-Arab-OM", + "zun\000zun-Latn-US", + "zuy\000zuy-Latn-CM", + "zwa\000zwa-Ethi-ET", + "zyg\000zyg-Hani-CN", + "zyj\000zyj-Latn-CN", + "zyn\000zyn-Hani-CN", + "zyp\000zyp-Latn-MM", + "zza\000zza-Latn-TR", + "zzj\000zzj-Hani-CN", +}; +const int likely_subtags_count = sizeof(likely_subtags_tab) / sizeof(likely_subtags_tab[0]); + +/* Calendar preference data: locale or region -> calendars by descending preference */ +const IntlPrefData cal_pref_tab[] = { + { "001", "gregorian" }, + { "AE", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" }, + { "AF", "persian gregorian islamic islamic-civil islamic-tbla" }, + { "AL", "gregorian islamic-civil islamic-tbla" }, + { "AZ", "gregorian islamic-civil islamic-tbla" }, + { "BD", "gregorian islamic islamic-civil islamic-tbla" }, + { "BH", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" }, + { "CN", "gregorian chinese" }, + { "CX", "gregorian chinese" }, + { "DJ", "gregorian islamic islamic-civil islamic-tbla" }, + { "DZ", "gregorian islamic islamic-civil islamic-tbla" }, + { "EG", "gregorian coptic islamic islamic-civil islamic-tbla" }, + { "EH", "gregorian islamic islamic-civil islamic-tbla" }, + { "ER", "gregorian islamic islamic-civil islamic-tbla" }, + { "ET", "gregorian ethiopic" }, + { "HK", "gregorian chinese" }, + { "ID", "gregorian islamic islamic-civil islamic-tbla" }, + { "IL", "gregorian hebrew islamic islamic-civil islamic-tbla" }, + { "IN", "gregorian indian" }, + { "IQ", "gregorian islamic islamic-civil islamic-tbla" }, + { "IR", "persian gregorian islamic islamic-civil islamic-tbla" }, + { "JO", "gregorian islamic islamic-civil islamic-tbla" }, + { "JP", "gregorian japanese" }, + { "KM", "gregorian islamic islamic-civil islamic-tbla" }, + { "KR", "gregorian dangi" }, + { "KW", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" }, + { "LB", "gregorian islamic islamic-civil islamic-tbla" }, + { "LY", "gregorian islamic islamic-civil islamic-tbla" }, + { "MA", "gregorian islamic islamic-civil islamic-tbla" }, + { "MO", "gregorian chinese" }, + { "MR", "gregorian islamic islamic-civil islamic-tbla" }, + { "MV", "gregorian islamic-civil islamic-tbla" }, + { "MY", "gregorian islamic islamic-civil islamic-tbla" }, + { "NE", "gregorian islamic islamic-civil islamic-tbla" }, + { "OM", "gregorian islamic islamic-civil islamic-tbla" }, + { "PK", "gregorian islamic islamic-civil islamic-tbla" }, + { "PS", "gregorian islamic islamic-civil islamic-tbla" }, + { "QA", "gregorian islamic-umalqura islamic islamic-civil islamic-tbla" }, + { "SA", "gregorian islamic-umalqura islamic islamic-rgsa" }, + { "SD", "gregorian islamic islamic-civil islamic-tbla" }, + { "SG", "gregorian chinese" }, + { "SY", "gregorian islamic islamic-civil islamic-tbla" }, + { "TD", "gregorian islamic islamic-civil islamic-tbla" }, + { "TH", "buddhist gregorian" }, + { "TJ", "gregorian islamic-civil islamic-tbla" }, + { "TM", "gregorian islamic-civil islamic-tbla" }, + { "TN", "gregorian islamic islamic-civil islamic-tbla" }, + { "TR", "gregorian islamic-civil islamic-tbla" }, + { "TW", "gregorian roc chinese" }, + { "UZ", "gregorian islamic-civil islamic-tbla" }, + { "XK", "gregorian islamic-civil islamic-tbla" }, + { "YE", "gregorian islamic islamic-civil islamic-tbla" }, +}; +const int cal_pref_count = sizeof(cal_pref_tab) / sizeof(cal_pref_tab[0]); + +/* Time data: locale or region -> hour cycles by descending preference */ +const IntlPrefData time_data_tab[] = { + { "001", "h23 h12" }, + { "419", "h12 h23" }, + { "AC", "h23 h12" }, + { "AD", "h23 h12" }, + { "AE", "h12 h23" }, + { "AF", "h23 h12" }, + { "AG", "h12 h23" }, + { "AI", "h23 h12" }, + { "AL", "h12 h23" }, + { "AM", "h23 h12" }, + { "AO", "h23 h12" }, + { "AR", "h12 h23" }, + { "AS", "h12 h23" }, + { "AT", "h23 h12" }, + { "AU", "h12 h23" }, + { "AW", "h23 h12" }, + { "AX", "h23" }, + { "AZ", "h23 h12" }, + { "BA", "h23 h12" }, + { "BB", "h12 h23" }, + { "BD", "h12 h23" }, + { "BE", "h23 h12" }, + { "BF", "h23 h12" }, + { "BG", "h23 h12" }, + { "BH", "h12 h23" }, + { "BI", "h23 h12" }, + { "BJ", "h23 h12" }, + { "BL", "h23 h12" }, + { "BM", "h12 h23" }, + { "BN", "h12 h23" }, + { "BO", "h12 h23" }, + { "BQ", "h23" }, + { "BR", "h23 h12" }, + { "BS", "h12 h23" }, + { "BT", "h12 h23" }, + { "BW", "h23 h12" }, + { "BY", "h23 h12" }, + { "BZ", "h23 h12" }, + { "CA", "h12 h23" }, + { "CC", "h23 h12" }, + { "CD", "h23 h12" }, + { "CF", "h23 h12" }, + { "CG", "h23 h12" }, + { "CH", "h23 h12" }, + { "CI", "h23 h12" }, + { "CK", "h23 h12" }, + { "CL", "h12 h23" }, + { "CM", "h23 h12" }, + { "CN", "h23 h12" }, + { "CO", "h12 h23" }, + { "CP", "h23" }, + { "CR", "h12 h23" }, + { "CU", "h12 h23" }, + { "CV", "h23 h12" }, + { "CW", "h23 h12" }, + { "CX", "h23 h12" }, + { "CY", "h12 h23" }, + { "CZ", "h23" }, + { "DE", "h23 h12" }, + { "DG", "h23 h12" }, + { "DJ", "h12 h23" }, + { "DK", "h23" }, + { "DM", "h12 h23" }, + { "DO", "h12 h23" }, + { "DZ", "h12 h23" }, + { "EA", "h23 h12" }, + { "EC", "h12 h23" }, + { "EE", "h23 h12" }, + { "EG", "h12 h23" }, + { "EH", "h12 h23" }, + { "ER", "h12 h23" }, + { "ES", "h23 h12" }, + { "ET", "h12 h23" }, + { "FI", "h23" }, + { "FJ", "h12 h23" }, + { "FK", "h23 h12" }, + { "FM", "h12 h23" }, + { "FO", "h23 h12" }, + { "FR", "h23 h12" }, + { "GA", "h23 h12" }, + { "GB", "h23 h12" }, + { "GD", "h12 h23" }, + { "GE", "h23 h12" }, + { "GF", "h23 h12" }, + { "GG", "h23 h12" }, + { "GH", "h12 h23" }, + { "GI", "h23 h12" }, + { "GL", "h23 h12" }, + { "GM", "h12 h23" }, + { "GN", "h23 h12" }, + { "GP", "h23 h12" }, + { "GQ", "h23 h12" }, + { "GR", "h12 h23" }, + { "GS", "h23 h12" }, + { "GT", "h12 h23" }, + { "GU", "h12 h23" }, + { "GW", "h23 h12" }, + { "GY", "h12 h23" }, + { "HK", "h12 h23" }, + { "HN", "h12 h23" }, + { "HR", "h23 h12" }, + { "HU", "h23 h12" }, + { "IC", "h23 h12" }, + { "ID", "h23" }, + { "IE", "h23 h12" }, + { "IL", "h23 h12" }, + { "IM", "h23 h12" }, + { "IN", "h12 h23" }, + { "IO", "h23 h12" }, + { "IQ", "h12 h23" }, + { "IR", "h23 h12" }, + { "IS", "h23" }, + { "IT", "h23 h12" }, + { "JE", "h23 h12" }, + { "JM", "h12 h23" }, + { "JO", "h12 h23" }, + { "JP", "h23 h11 h12" }, + { "KE", "h23 h12" }, + { "KG", "h23 h12" }, + { "KH", "h12 h23" }, + { "KI", "h12 h23" }, + { "KM", "h23 h12" }, + { "KN", "h12 h23" }, + { "KP", "h12 h23" }, + { "KR", "h12 h23" }, + { "KW", "h12 h23" }, + { "KY", "h12 h23" }, + { "KZ", "h23 h12" }, + { "LA", "h23 h12" }, + { "LB", "h12 h23" }, + { "LC", "h12 h23" }, + { "LI", "h23 h12" }, + { "LK", "h23 h12" }, + { "LR", "h12 h23" }, + { "LS", "h12 h23" }, + { "LT", "h23 h12" }, + { "LU", "h23 h12" }, + { "LV", "h23 h12" }, + { "LY", "h12 h23" }, + { "MA", "h23 h12" }, + { "MC", "h23 h12" }, + { "MD", "h23 h12" }, + { "ME", "h23 h12" }, + { "MF", "h23 h12" }, + { "MG", "h23 h12" }, + { "MH", "h12 h23" }, + { "MK", "h23 h12" }, + { "ML", "h23" }, + { "MM", "h23 h12" }, + { "MN", "h23 h12" }, + { "MO", "h12 h23" }, + { "MP", "h12 h23" }, + { "MQ", "h23 h12" }, + { "MR", "h12 h23" }, + { "MS", "h23 h12" }, + { "MT", "h23 h12" }, + { "MU", "h23 h12" }, + { "MV", "h23 h12" }, + { "MW", "h12 h23" }, + { "MX", "h12 h23" }, + { "MY", "h12 h23" }, + { "MZ", "h23 h12" }, + { "NA", "h12 h23" }, + { "NC", "h23 h12" }, + { "NE", "h23" }, + { "NF", "h23 h12" }, + { "NG", "h23 h12" }, + { "NI", "h12 h23" }, + { "NL", "h23 h12" }, + { "NO", "h23 h12" }, + { "NP", "h23 h12" }, + { "NR", "h23 h12" }, + { "NU", "h23 h12" }, + { "NZ", "h12 h23" }, + { "OM", "h12 h23" }, + { "PA", "h12 h23" }, + { "PE", "h12 h23" }, + { "PF", "h23 h12" }, + { "PG", "h12 h23" }, + { "PH", "h12 h23" }, + { "PK", "h12 h23" }, + { "PL", "h23 h12" }, + { "PM", "h23 h12" }, + { "PN", "h23 h12" }, + { "PR", "h12 h23" }, + { "PS", "h12 h23" }, + { "PT", "h23 h12" }, + { "PW", "h12 h23" }, + { "PY", "h12 h23" }, + { "QA", "h12 h23" }, + { "RE", "h23 h12" }, + { "RO", "h23 h12" }, + { "RS", "h23 h12" }, + { "RU", "h23" }, + { "RW", "h23 h12" }, + { "SA", "h12 h23" }, + { "SB", "h12 h23" }, + { "SC", "h23 h12" }, + { "SD", "h12 h23" }, + { "SE", "h23" }, + { "SG", "h12 h23" }, + { "SH", "h23 h12" }, + { "SI", "h23 h12" }, + { "SJ", "h23" }, + { "SK", "h23" }, + { "SL", "h12 h23" }, + { "SM", "h23 h12" }, + { "SN", "h23 h12" }, + { "SO", "h12 h23" }, + { "SR", "h23 h12" }, + { "SS", "h12 h23" }, + { "ST", "h23 h12" }, + { "SV", "h12 h23" }, + { "SX", "h23 h12" }, + { "SY", "h12 h23" }, + { "SZ", "h12 h23" }, + { "TA", "h23 h12" }, + { "TC", "h12 h23" }, + { "TD", "h12 h23" }, + { "TF", "h23 h12" }, + { "TG", "h23 h12" }, + { "TH", "h23 h12" }, + { "TJ", "h23 h12" }, + { "TL", "h23 h12" }, + { "TM", "h23 h12" }, + { "TN", "h12 h23" }, + { "TO", "h12 h23" }, + { "TR", "h23 h12" }, + { "TT", "h12 h23" }, + { "TW", "h12 h23" }, + { "TZ", "h23 h12" }, + { "UA", "h23 h12" }, + { "UG", "h23 h12" }, + { "UM", "h12 h23" }, + { "US", "h12 h23" }, + { "UY", "h12 h23" }, + { "UZ", "h23 h12" }, + { "VA", "h23 h12" }, + { "VC", "h12 h23" }, + { "VE", "h12 h23" }, + { "VG", "h12 h23" }, + { "VI", "h12 h23" }, + { "VN", "h23 h12" }, + { "VU", "h12 h23" }, + { "WF", "h23 h12" }, + { "WS", "h12 h23" }, + { "XK", "h23 h12" }, + { "YE", "h12 h23" }, + { "YT", "h23 h12" }, + { "ZA", "h23 h12" }, + { "ZM", "h12 h23" }, + { "ZW", "h23 h12" }, + { "af-ZA", "h23 h12" }, + { "ar-001", "h12 h23" }, + { "ca-ES", "h23 h12" }, + { "en-001", "h12 h23" }, + { "en-HK", "h12 h23" }, + { "en-IL", "h23 h12" }, + { "en-MY", "h12 h23" }, + { "es-BR", "h23 h12" }, + { "es-ES", "h23 h12" }, + { "es-GQ", "h23 h12" }, + { "fr-CA", "h23 h12" }, + { "gl-ES", "h23 h12" }, + { "gu-IN", "h12 h23" }, + { "hi-IN", "h12 h23" }, + { "it-CH", "h23 h12" }, + { "it-IT", "h23 h12" }, + { "kn-IN", "h12 h23" }, + { "ku-SY", "h23 h12" }, + { "ml-IN", "h12 h23" }, + { "mr-IN", "h12 h23" }, + { "pa-IN", "h12 h23" }, + { "ta-IN", "h12 h23" }, + { "te-IN", "h12 h23" }, + { "zu-ZA", "h23 h12" }, +}; +const int time_data_count = sizeof(time_data_tab) / sizeof(time_data_tab[0]); + +/* Week data: region -> first day of week and weekend range (ISO 8601 days) */ +const IntlWeekData week_data_tab[] = { + { "001", 1, 6, 7 }, + { "AD", 1, 6, 7 }, + { "AE", 1, 6, 7 }, + { "AF", 6, 4, 5 }, + { "AG", 7, 6, 7 }, + { "AI", 1, 6, 7 }, + { "AL", 1, 6, 7 }, + { "AM", 1, 6, 7 }, + { "AN", 1, 6, 7 }, + { "AR", 1, 6, 7 }, + { "AS", 7, 6, 7 }, + { "AT", 1, 6, 7 }, + { "AU", 1, 6, 7 }, + { "AX", 1, 6, 7 }, + { "AZ", 1, 6, 7 }, + { "BA", 1, 6, 7 }, + { "BD", 7, 6, 7 }, + { "BE", 1, 6, 7 }, + { "BG", 1, 6, 7 }, + { "BH", 6, 5, 6 }, + { "BM", 1, 6, 7 }, + { "BN", 1, 6, 7 }, + { "BR", 7, 6, 7 }, + { "BS", 7, 6, 7 }, + { "BT", 7, 6, 7 }, + { "BW", 7, 6, 7 }, + { "BY", 1, 6, 7 }, + { "BZ", 7, 6, 7 }, + { "CA", 7, 6, 7 }, + { "CH", 1, 6, 7 }, + { "CL", 1, 6, 7 }, + { "CM", 1, 6, 7 }, + { "CN", 1, 6, 7 }, + { "CO", 7, 6, 7 }, + { "CR", 1, 6, 7 }, + { "CY", 1, 6, 7 }, + { "CZ", 1, 6, 7 }, + { "DE", 1, 6, 7 }, + { "DJ", 6, 6, 7 }, + { "DK", 1, 6, 7 }, + { "DM", 7, 6, 7 }, + { "DO", 7, 6, 7 }, + { "DZ", 6, 5, 6 }, + { "EC", 1, 6, 7 }, + { "EE", 1, 6, 7 }, + { "EG", 6, 5, 6 }, + { "ES", 1, 6, 7 }, + { "ET", 7, 6, 7 }, + { "FI", 1, 6, 7 }, + { "FJ", 1, 6, 7 }, + { "FO", 1, 6, 7 }, + { "FR", 1, 6, 7 }, + { "GB", 1, 6, 7 }, + { "GE", 1, 6, 7 }, + { "GF", 1, 6, 7 }, + { "GP", 1, 6, 7 }, + { "GR", 1, 6, 7 }, + { "GT", 7, 6, 7 }, + { "GU", 7, 6, 7 }, + { "HK", 7, 6, 7 }, + { "HN", 7, 6, 7 }, + { "HR", 1, 6, 7 }, + { "HU", 1, 6, 7 }, + { "ID", 7, 6, 7 }, + { "IE", 1, 6, 7 }, + { "IL", 7, 5, 6 }, + { "IN", 7, 7, 7 }, + { "IQ", 6, 5, 6 }, + { "IR", 6, 5, 5 }, + { "IS", 7, 6, 7 }, + { "IT", 1, 6, 7 }, + { "JM", 7, 6, 7 }, + { "JO", 6, 5, 6 }, + { "JP", 7, 6, 7 }, + { "KE", 7, 6, 7 }, + { "KG", 1, 6, 7 }, + { "KH", 7, 6, 7 }, + { "KR", 7, 6, 7 }, + { "KW", 6, 5, 6 }, + { "KZ", 1, 6, 7 }, + { "LA", 7, 6, 7 }, + { "LB", 1, 6, 7 }, + { "LI", 1, 6, 7 }, + { "LK", 1, 6, 7 }, + { "LT", 1, 6, 7 }, + { "LU", 1, 6, 7 }, + { "LV", 1, 6, 7 }, + { "LY", 6, 5, 6 }, + { "MC", 1, 6, 7 }, + { "MD", 1, 6, 7 }, + { "ME", 1, 6, 7 }, + { "MH", 7, 6, 7 }, + { "MK", 1, 6, 7 }, + { "MM", 7, 6, 7 }, + { "MN", 1, 6, 7 }, + { "MO", 7, 6, 7 }, + { "MQ", 1, 6, 7 }, + { "MT", 7, 6, 7 }, + { "MV", 5, 6, 7 }, + { "MX", 7, 6, 7 }, + { "MY", 1, 6, 7 }, + { "MZ", 7, 6, 7 }, + { "NI", 7, 6, 7 }, + { "NL", 1, 6, 7 }, + { "NO", 1, 6, 7 }, + { "NP", 7, 6, 7 }, + { "NZ", 1, 6, 7 }, + { "OM", 6, 5, 6 }, + { "PA", 7, 6, 7 }, + { "PE", 7, 6, 7 }, + { "PH", 7, 6, 7 }, + { "PK", 7, 6, 7 }, + { "PL", 1, 6, 7 }, + { "PR", 7, 6, 7 }, + { "PT", 7, 6, 7 }, + { "PY", 7, 6, 7 }, + { "QA", 6, 5, 6 }, + { "RE", 1, 6, 7 }, + { "RO", 1, 6, 7 }, + { "RS", 1, 6, 7 }, + { "RU", 1, 6, 7 }, + { "SA", 7, 5, 6 }, + { "SD", 6, 5, 6 }, + { "SE", 1, 6, 7 }, + { "SG", 7, 6, 7 }, + { "SI", 1, 6, 7 }, + { "SK", 1, 6, 7 }, + { "SM", 1, 6, 7 }, + { "SV", 7, 6, 7 }, + { "SY", 6, 5, 6 }, + { "TH", 7, 6, 7 }, + { "TJ", 1, 6, 7 }, + { "TM", 1, 6, 7 }, + { "TR", 1, 6, 7 }, + { "TT", 7, 6, 7 }, + { "TW", 7, 6, 7 }, + { "UA", 1, 6, 7 }, + { "UG", 1, 7, 7 }, + { "UM", 7, 6, 7 }, + { "US", 7, 6, 7 }, + { "UY", 1, 6, 7 }, + { "UZ", 1, 6, 7 }, + { "VA", 1, 6, 7 }, + { "VE", 7, 6, 7 }, + { "VI", 7, 6, 7 }, + { "VN", 1, 6, 7 }, + { "WS", 7, 6, 7 }, + { "XK", 1, 6, 7 }, + { "YE", 7, 5, 6 }, + { "ZA", 7, 6, 7 }, + { "ZW", 7, 6, 7 }, +}; +const int week_data_count = sizeof(week_data_tab) / sizeof(week_data_tab[0]); + +/* Script direction: script -> 0 for left-to-right, 1 for right-to-left */ +const IntlScriptDir script_dir_tab[] = { + { "Adlm", 1 }, + { "Aghb", 0 }, + { "Ahom", 0 }, + { "Arab", 1 }, + { "Armi", 1 }, + { "Armn", 0 }, + { "Avst", 1 }, + { "Bali", 0 }, + { "Bamu", 0 }, + { "Bass", 0 }, + { "Batk", 0 }, + { "Beng", 0 }, + { "Berf", 0 }, + { "Bhks", 0 }, + { "Bopo", 0 }, + { "Brah", 0 }, + { "Bugi", 0 }, + { "Buhd", 0 }, + { "Cakm", 0 }, + { "Cans", 0 }, + { "Cari", 0 }, + { "Cham", 0 }, + { "Cher", 0 }, + { "Chrs", 1 }, + { "Copt", 0 }, + { "Cpmn", 0 }, + { "Cprt", 1 }, + { "Cyrl", 0 }, + { "Deva", 0 }, + { "Diak", 0 }, + { "Dogr", 0 }, + { "Dsrt", 0 }, + { "Dupl", 0 }, + { "Egyp", 0 }, + { "Elba", 0 }, + { "Elym", 1 }, + { "Ethi", 0 }, + { "Gara", 1 }, + { "Geor", 0 }, + { "Glag", 0 }, + { "Gong", 0 }, + { "Gonm", 0 }, + { "Goth", 0 }, + { "Gran", 0 }, + { "Grek", 0 }, + { "Gujr", 0 }, + { "Gukh", 0 }, + { "Guru", 0 }, + { "Hanb", 0 }, + { "Hang", 0 }, + { "Hani", 0 }, + { "Hano", 0 }, + { "Hans", 0 }, + { "Hant", 0 }, + { "Hatr", 1 }, + { "Hebr", 1 }, + { "Hira", 0 }, + { "Hluw", 0 }, + { "Hmng", 0 }, + { "Hmnp", 0 }, + { "Hung", 1 }, + { "Ital", 0 }, + { "Jamo", 0 }, + { "Java", 0 }, + { "Jpan", 0 }, + { "Kali", 0 }, + { "Kana", 0 }, + { "Kawi", 0 }, + { "Khar", 1 }, + { "Khmr", 0 }, + { "Khoj", 0 }, + { "Kits", 0 }, + { "Knda", 0 }, + { "Kore", 0 }, + { "Krai", 0 }, + { "Kthi", 0 }, + { "Lana", 0 }, + { "Laoo", 0 }, + { "Latn", 0 }, + { "Lepc", 0 }, + { "Limb", 0 }, + { "Lina", 0 }, + { "Linb", 0 }, + { "Lisu", 0 }, + { "Lyci", 0 }, + { "Lydi", 1 }, + { "Mahj", 0 }, + { "Maka", 0 }, + { "Mand", 1 }, + { "Mani", 1 }, + { "Marc", 0 }, + { "Medf", 0 }, + { "Mend", 1 }, + { "Merc", 1 }, + { "Mero", 1 }, + { "Mlym", 0 }, + { "Modi", 0 }, + { "Mong", 0 }, + { "Mroo", 0 }, + { "Mtei", 0 }, + { "Mult", 0 }, + { "Mymr", 0 }, + { "Nagm", 0 }, + { "Nand", 0 }, + { "Narb", 1 }, + { "Nbat", 1 }, + { "Newa", 0 }, + { "Nkoo", 1 }, + { "Nshu", 0 }, + { "Ogam", 0 }, + { "Olck", 0 }, + { "Onao", 0 }, + { "Orkh", 1 }, + { "Orya", 0 }, + { "Osge", 0 }, + { "Osma", 0 }, + { "Ougr", 1 }, + { "Palm", 1 }, + { "Pauc", 0 }, + { "Perm", 0 }, + { "Phag", 0 }, + { "Phli", 1 }, + { "Phlp", 1 }, + { "Phnx", 1 }, + { "Plrd", 0 }, + { "Prti", 1 }, + { "Rjng", 0 }, + { "Rohg", 1 }, + { "Runr", 0 }, + { "Samr", 1 }, + { "Sarb", 1 }, + { "Saur", 0 }, + { "Sgnw", 0 }, + { "Shaw", 0 }, + { "Shrd", 0 }, + { "Sidd", 0 }, + { "Sidt", 1 }, + { "Sind", 0 }, + { "Sinh", 0 }, + { "Sogd", 1 }, + { "Sogo", 1 }, + { "Sora", 0 }, + { "Soyo", 0 }, + { "Sund", 0 }, + { "Sunu", 0 }, + { "Sylo", 0 }, + { "Syrc", 1 }, + { "Tagb", 0 }, + { "Takr", 0 }, + { "Tale", 0 }, + { "Talu", 0 }, + { "Taml", 0 }, + { "Tang", 0 }, + { "Tavt", 0 }, + { "Tayo", 0 }, + { "Telu", 0 }, + { "Tfng", 0 }, + { "Tglg", 0 }, + { "Thaa", 1 }, + { "Thai", 0 }, + { "Tibt", 0 }, + { "Tirh", 0 }, + { "Tnsa", 0 }, + { "Todr", 0 }, + { "Tols", 0 }, + { "Toto", 0 }, + { "Tutg", 0 }, + { "Ugar", 0 }, + { "Vaii", 0 }, + { "Vith", 0 }, + { "Wara", 0 }, + { "Wcho", 0 }, + { "Xpeo", 0 }, + { "Xsux", 0 }, + { "Yezi", 1 }, + { "Yiii", 0 }, + { "Zanb", 0 }, +}; +const int script_dir_count = sizeof(script_dir_tab) / sizeof(script_dir_tab[0]); + const char *intl_supported_currencies[] = { "ADP", "AED", diff --git a/intl/locale.c b/intl/locale.c index 507e2a1..49ef72d 100644 --- a/intl/locale.c +++ b/intl/locale.c @@ -8,6 +8,7 @@ #include "../quickjs.h" #include "../cutils.h" +#include "../temporal/temporal_private.h" #include "intl_private.h" static JSClassID js_locale_class_id; @@ -248,6 +249,7 @@ static const char *canonicalize_keyword_value(const char *key, const char *value if (!strcasecmp(key, "ca")) { if (!strcasecmp(value, "islamicc")) return "islamic-civil"; if (!strcasecmp(value, "ethiopic-amete-alem")) return "ethioaa"; + if (!strcasecmp(value, "gregorian")) return "gregory"; } return value; } @@ -1377,349 +1379,246 @@ static JSValue js_locale_get_firstDayOfWeek(JSContext *ctx, JSValueConst this_va return JS_UNDEFINED; } -static JSValue js_locale_getCalendars(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) +/* Split locale into base (before first extension singleton) and suffix */ +static void locale_split_base_suffix(const char *locale, char *base, int base_size, char *suffix, int suffix_size) { - JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); - if (!s) - return JS_EXCEPTION; - { - JSValue arr = JS_NewArray(ctx); - if (JS_IsException(arr)) - return JS_EXCEPTION; - JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "gregory"), - JS_PROP_C_W_E); - return arr; + int len = (int)strlen(locale); + int i = 0; + int ext_pos = -1; + base[0] = '\0'; + suffix[0] = '\0'; + while (i < len) { + int j = i; + while (j < len && locale[j] != '-') j++; + int slen = j - i; + if (slen == 1 && isalpha((unsigned char)locale[i]) && i > 0) { + ext_pos = i - 1; /* include leading dash */ + break; + } + i = j + 1; } -} - -static JSValue js_locale_getTimeZones(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) -{ - JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); - if (!s) - return JS_EXCEPTION; - if (!s->region) - return JS_UNDEFINED; - { - JSValue arr = JS_NewArray(ctx); - if (JS_IsException(arr)) - return JS_EXCEPTION; - JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "UTC"), - JS_PROP_C_W_E); - return arr; + if (ext_pos >= 0) { + pstrcpy(base, base_size, locale); + base[ext_pos] = '\0'; + pstrcpy(suffix, suffix_size, locale + ext_pos); + } else { + pstrcpy(base, base_size, locale); } } -static int weekday_name_to_number(const char *s) +/* --------------------------------------------------------------------- */ +/* UTS 35 likely subtags */ +/* --------------------------------------------------------------------- */ + +static BOOL is_script_subtag(const char *s) { - if (!strcmp(s, "mon") || !strcmp(s, "1")) return 1; - if (!strcmp(s, "tue") || !strcmp(s, "2")) return 2; - if (!strcmp(s, "wed") || !strcmp(s, "3")) return 3; - if (!strcmp(s, "thu") || !strcmp(s, "4")) return 4; - if (!strcmp(s, "fri") || !strcmp(s, "5")) return 5; - if (!strcmp(s, "sat") || !strcmp(s, "6")) return 6; - if (!strcmp(s, "sun") || !strcmp(s, "7") || !strcmp(s, "0")) return 7; - return 7; + int i, len = (int)strlen(s); + if (len != 4) + return FALSE; + for (i = 0; i < 4; i++) { + if (!isalpha((unsigned char)s[i])) + return FALSE; + } + return TRUE; } -static JSValue js_locale_getTextInfo(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) +static BOOL is_region_subtag(const char *s) { - JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); - if (!s) - return JS_EXCEPTION; - { - JSValue obj = JS_NewObject(ctx); - if (JS_IsException(obj)) - return JS_EXCEPTION; - { - const char *dir = "ltr"; - if (s->language && (!strcmp(s->language, "ar") || - !strcmp(s->language, "he") || - !strcmp(s->language, "fa") || - !strcmp(s->language, "ur"))) - dir = "rtl"; - JS_DefinePropertyValueStr(ctx, obj, "direction", - JS_NewString(ctx, dir), JS_PROP_C_W_E); + int i, len = (int)strlen(s); + if (len == 2) { + for (i = 0; i < 2; i++) { + if (!isalpha((unsigned char)s[i])) + return FALSE; + } + return TRUE; + } + if (len == 3) { + for (i = 0; i < 3; i++) { + if (!isdigit((unsigned char)s[i])) + return FALSE; } - return obj; + return TRUE; } + return FALSE; } -static JSValue js_locale_getCollations(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) +static BOOL is_alphanum_len(const char *s, int min_len, int max_len) { - if (!JS_GetOpaque2(ctx, this_val, js_locale_class_id)) - return JS_EXCEPTION; - { - JSValue arr = JS_NewArray(ctx); - if (JS_IsException(arr)) - return JS_EXCEPTION; - JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "default"), - JS_PROP_C_W_E); - return arr; + int i, len = (int)strlen(s); + if (len < min_len || len > max_len) + return FALSE; + for (i = 0; i < len; i++) { + if (!isalnum((unsigned char)s[i])) + return FALSE; + } + return TRUE; +} + +/* Look up a key in the likely subtags data. Returns the associated + language-script-region value, or NULL if the key is unknown. */ +static const char *likely_subtags_lookup(const char *key) +{ + int lo = 0, hi = likely_subtags_count - 1; + while (lo <= hi) { + int mid = lo + (hi - lo) / 2; + const char *entry = likely_subtags_tab[mid]; + int c = strcmp(entry, key); + if (c == 0) + return entry + strlen(entry) + 1; + if (c < 0) + lo = mid + 1; + else + hi = mid - 1; } + return NULL; } -static JSValue js_locale_getHourCycles(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) +/* Add Likely Subtags (UTS 35). Store the maximized form of the language, + script and region subtags in buf. The subtags which are present are kept, + the missing ones are taken from the matched entry. Returns 0 on success, + or -1 if no data matches (an error is signaled by the caller). */ +static int locale_add_likely_subtags(const char *lang, const char *script, + const char *region, char *buf, int buf_size) { - if (!JS_GetOpaque2(ctx, this_val, js_locale_class_id)) - return JS_EXCEPTION; - { - JSValue arr = JS_NewArray(ctx); - if (JS_IsException(arr)) - return JS_EXCEPTION; - JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "h12"), - JS_PROP_C_W_E); - return arr; + char key[64], value[64], *vsubtags[4]; + const char *found = NULL; + const char *prefix, *sc, *rg; + BOOL has_lang = lang && *lang && strcmp(lang, "und") != 0; + BOOL has_script = script && *script && strcmp(script, "Zzzz") != 0; + BOOL has_region = region && *region && strcmp(region, "ZZ") != 0; + int n; + + prefix = has_lang ? lang : "und"; + if (has_lang && has_script && has_region) { + /* already in maximal form */ + snprintf(buf, buf_size, "%s-%s-%s", lang, script, region); + return 0; + } + /* Try the keys built from the subtags which are present, longest first */ + if (!has_lang && has_script && has_region) { + snprintf(key, sizeof(key), "und-%s-%s", script, region); + found = likely_subtags_lookup(key); + } + if (!found && has_script) { + snprintf(key, sizeof(key), "%s-%s", prefix, script); + found = likely_subtags_lookup(key); + } + if (!found && has_region) { + snprintf(key, sizeof(key), "%s-%s", prefix, region); + found = likely_subtags_lookup(key); + } + if (!found) { + snprintf(key, sizeof(key), "%s", prefix); + found = likely_subtags_lookup(key); + } + if (!found) + return -1; + pstrcpy(value, sizeof(value), found); + n = locale_split_subtags(value, vsubtags, 4); + if (n != 3) + return -1; + sc = has_script ? script : vsubtags[1]; + rg = has_region ? region : vsubtags[2]; + snprintf(buf, buf_size, "%s", has_lang ? lang : vsubtags[0]); + if (*sc) { + pstrcat(buf, buf_size, "-"); + pstrcat(buf, buf_size, sc); + } + if (*rg) { + pstrcat(buf, buf_size, "-"); + pstrcat(buf, buf_size, rg); } + return 0; } -static JSValue js_locale_getNumberingSystems(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) +/* A locale base name split into its language, script, region and variant + subtags. The subtag pointers point into storage. */ +typedef struct { + char storage[256]; + char *subtags[16]; + int count; + const char *lang; + const char *script; + const char *region; + int first_variant; +} LocaleNameParts; + +static int locale_parse_name(const char *name, LocaleNameParts *p) { - if (!JS_GetOpaque2(ctx, this_val, js_locale_class_id)) - return JS_EXCEPTION; - { - JSValue arr = JS_NewArray(ctx); - if (JS_IsException(arr)) - return JS_EXCEPTION; - JS_DefinePropertyValueUint32(ctx, arr, 0, JS_NewString(ctx, "latn"), - JS_PROP_C_W_E); - return arr; + memset(p, 0, sizeof(*p)); + pstrcpy(p->storage, sizeof(p->storage), name); + p->count = locale_split_subtags(p->storage, p->subtags, 16); + if (p->count == 0) + return -1; + p->lang = p->subtags[0]; + p->first_variant = 1; + if (p->count > 1 && is_script_subtag(p->subtags[1])) { + p->script = p->subtags[1]; + p->first_variant = 2; + } + if (p->count > p->first_variant && + is_region_subtag(p->subtags[p->first_variant])) { + p->region = p->subtags[p->first_variant]; + p->first_variant++; } + return 0; } -static JSValue js_locale_getWeekInfo(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) +/* Apply Add Likely Subtags to lang/script/region and append the variants of + name. Returns 0 on success, or -1 if an error is signaled. */ +static int locale_maximize_parts(const LocaleNameParts *name, const char *lang, + const char *script, const char *region, + char *out, int out_size) { - JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); - if (!s) - return JS_EXCEPTION; - { - JSValue obj = JS_NewObject(ctx); - int firstDay = 7; - if (JS_IsException(obj)) - return JS_EXCEPTION; - if (s->firstDayOfWeek) - firstDay = weekday_name_to_number(s->firstDayOfWeek); - JS_DefinePropertyValueStr(ctx, obj, "firstDay", - JS_NewInt32(ctx, firstDay), JS_PROP_C_W_E); - { - JSValue weekend = JS_NewArray(ctx); - if (JS_IsException(weekend)) - return JS_EXCEPTION; - JS_DefinePropertyValueUint32(ctx, weekend, 0, JS_NewInt32(ctx, 6), - JS_PROP_C_W_E); - JS_DefinePropertyValueUint32(ctx, weekend, 1, JS_NewInt32(ctx, 7), - JS_PROP_C_W_E); - JS_DefinePropertyValueStr(ctx, obj, "weekend", weekend, JS_PROP_C_W_E); - } - return obj; + char res[256]; + int i; + if (locale_add_likely_subtags(lang, script, region, res, sizeof(res)) < 0) + return -1; + pstrcpy(out, out_size, res); + for (i = name->first_variant; i < name->count; i++) { + pstrcat(out, out_size, "-"); + pstrcat(out, out_size, name->subtags[i]); } + return 0; } -/* Split locale into base (before first extension singleton) and suffix */ -static void locale_split_base_suffix(const char *locale, char *base, int base_size, char *suffix, int suffix_size) +/* Build a locale from the given subtags, appending the variants of name. */ +static void locale_join_parts(const LocaleNameParts *name, const char *lang, + const char *script, const char *region, + char *out, int out_size) { - int len = (int)strlen(locale); - int i = 0; - int ext_pos = -1; - base[0] = '\0'; - suffix[0] = '\0'; - while (i < len) { - int j = i; - while (j < len && locale[j] != '-') j++; - int slen = j - i; - if (slen == 1 && isalpha((unsigned char)locale[i]) && i > 0) { - ext_pos = i - 1; /* include leading dash */ - break; - } - i = j + 1; + int i; + pstrcpy(out, out_size, lang); + if (script && *script) { + pstrcat(out, out_size, "-"); + pstrcat(out, out_size, script); } - if (ext_pos >= 0) { - pstrcpy(base, base_size, locale); - base[ext_pos] = '\0'; - pstrcpy(suffix, suffix_size, locale + ext_pos); - } else { - pstrcpy(base, base_size, locale); + if (region && *region) { + pstrcat(out, out_size, "-"); + pstrcat(out, out_size, region); + } + for (i = name->first_variant; i < name->count; i++) { + pstrcat(out, out_size, "-"); + pstrcat(out, out_size, name->subtags[i]); } } -/* Hard-coded likely subtags for common locales */ -static const char *locale_get_likely_subtags(const char *lang, const char *script, const char *region) -{ - if (!lang[0]) return NULL; - if (!strcmp(lang, "und")) { - if (script && !strcmp(script, "Thai")) return "th-Thai-TH"; - if (region && !strcmp(region, "419")) return "es-Latn-419"; - if (region && !strcmp(region, "150")) return "en-Latn-150"; - if (region && !strcmp(region, "AT")) return "de-Latn-AT"; - if (region && !strcmp(region, "AQ")) return "en-Latn-AQ"; - if (script && !strcmp(script, "Cyrl") && region && !strcmp(region, "RO")) return "bg-Cyrl-RO"; - if (region && !strcmp(region, "CW")) return "pap"; - return "en-Latn-US"; - } - if (!strcmp(lang, "en")) { - if (script && !strcmp(script, "Shaw")) return "en-Shaw-GB"; - if (script && !strcmp(script, "Arab")) return "en-Arab-US"; - if (!script && region && !strcmp(region, "150")) return "en-Latn-150"; - if (script && !strcmp(script, "Latn") && region && !strcmp(region, "150")) return "en-Latn-150"; - if (!script && region && !strcmp(region, "AQ")) return "en-Latn-AQ"; - if (script && !strcmp(script, "Latn") && region && !strcmp(region, "AQ")) return "en-Latn-AQ"; - if (region && !strcmp(region, "GB")) return "en-Latn-GB"; - if (region && !strcmp(region, "FR")) return "en-Latn-FR"; - if (region && !strcmp(region, "US")) return "en-Latn-US"; - if (script && !strcmp(script, "Latn")) return "en-Latn-US"; - return "en-Latn-US"; - } - if (!strcmp(lang, "sr")) return "sr-Cyrl-RS"; - if (!strcmp(lang, "zh")) { - if (script && !strcmp(script, "Hant")) return "zh-Hant-TW"; - if (!script && region && !strcmp(region, "TW")) return "zh-Hant-TW"; - if (!script && region && !strcmp(region, "CN")) return "zh-Hans-CN"; - if (script && !strcmp(script, "Hans") && !region) return "zh-Hans-CN"; - if (!script && !region) return "zh-Hans-CN"; - } - if (!strcmp(lang, "ja")) return "ja-Jpan-JP"; - if (!strcmp(lang, "jbo")) { - if (!script && !region) return "jbo-Latn-001"; - if (script && !strcmp(script, "Latn") && !region) return "jbo-Latn-001"; - if (!script && region && !strcmp(region, "001")) return "jbo-Latn-001"; - } - if (!strcmp(lang, "ro")) return "ro-Latn-RO"; - if (!strcmp(lang, "de")) { - if (region && !strcmp(region, "AT")) return "de-Latn-AT"; - return "de-Latn-DE"; - } - if (!strcmp(lang, "it")) { - if (script && !strcmp(script, "Kana") && region && !strcmp(region, "CA")) return "it-Kana-CA"; - } - if (!strcmp(lang, "ar")) { - if (!script && !region) return "ar-Arab-EG"; - if (script && !strcmp(script, "Arab") && !region) return "ar-Arab-EG"; - if (!script && region && !strcmp(region, "EG")) return "ar-Arab-EG"; - } - if (!strcmp(lang, "th")) { - if (!script && !region) return "th-Thai-TH"; - if (!script && region && !strcmp(region, "TH")) return "th-Thai-TH"; - } - if (!strcmp(lang, "es")) { - if (!script && !region) return "es-Latn-ES"; - if (!script && region && !strcmp(region, "ES")) return "es-Latn-ES"; - if (!script && region && !strcmp(region, "419")) return "es-Latn-419"; - if (script && !strcmp(script, "Latn") && region && !strcmp(region, "419")) return "es-Latn-419"; - } - if (!strcmp(lang, "fr")) { - if (!script && !region) return "fr-Latn-FR"; - if (!script && region && !strcmp(region, "FR")) return "fr-Latn-FR"; - } - if (!strcmp(lang, "pt")) { - if (!script && !region) return "pt-Latn-PT"; - if (!script && region && !strcmp(region, "BR")) return "pt-Latn-BR"; - if (!script && region && !strcmp(region, "PT")) return "pt-Latn-PT"; - } - if (!strcmp(lang, "ru")) { - if (!script && !region) return "ru-Cyrl-RU"; - if (!script && region && !strcmp(region, "RU")) return "ru-Cyrl-RU"; - } - if (!strcmp(lang, "bg")) { - if (!script && !region) return "bg-Cyrl-BG"; - if (!script && region && !strcmp(region, "RO")) return "bg-Cyrl-RO"; - } - if (!strcmp(lang, "uz")) { - if (!script && !region) return "uz-Latn-UZ"; - if (!script && region && !strcmp(region, "UZ")) return "uz-Latn-UZ"; - } - if (!strcmp(lang, "hi")) { - if (!script && !region) return "hi-Deva-IN"; - } - if (!strcmp(lang, "aa")) { - if (!script && !region) return "aa-Latn-ET"; - } - if (!strcmp(lang, "he")) { - if (!script && !region) return "he-Hebr-IL"; - } - if (!strcmp(lang, "cs")) { - if (!script && !region) return "cs-Latn-CZ"; - } - if (!strcmp(lang, "hy")) { - if (!script && !region) return "hy-Armn-AM"; - } - if (!strcmp(lang, "hyw")) { - if (!script && !region) return "hyw-Armn-AM"; - } - if (!strcmp(lang, "hak")) { - if (!script && !region) return "hak-Hans-CN"; - if (script && !strcmp(script, "Hans") && !region) return "hak-Hans-CN"; - if (!script && region && !strcmp(region, "CN")) return "hak-Hans-CN"; - } - if (!strcmp(lang, "hsn")) { - if (!script && !region) return "hsn-Hans-CN"; - if (script && !strcmp(script, "Hans") && !region) return "hsn-Hans-CN"; - if (!script && region && !strcmp(region, "CN")) return "hsn-Hans-CN"; - } - if (!strcmp(lang, "aae")) { - if (!script && !region) return "aae-Latn-IT"; - if (script && !strcmp(script, "Latn") && !region) return "aae-Latn-IT"; - } - if (!strcmp(lang, "und")) { - if (region && !strcmp(region, "CW")) return "pap"; - } - if (!strcmp(lang, "pap")) { - return "pap"; - } - return NULL; +/* Maximize a locale base name. Returns 0 and stores the result in out, or + -1 if the Add Likely Subtags algorithm signaled an error. */ +static int locale_maximize_to(const char *base, char *out, int out_size) +{ + LocaleNameParts name; + if (locale_parse_name(base, &name) < 0) + return -1; + return locale_maximize_parts(&name, name.lang, name.script, name.region, + out, out_size); } static char *locale_maximize_base(JSContext *ctx, const char *base) { - char buf[256]; - char *subtags[16]; - int n = 0; - const char *likely; - int idx; - DynBuf db; - pstrcpy(buf, sizeof(buf), base); - n = locale_split_subtags(buf, subtags, 16); - if (n == 0) return NULL; - { - const char *lang = subtags[0]; - const char *script = NULL; - const char *region = NULL; - idx = 1; - if (idx < n && strlen(subtags[idx]) == 4 && - isalpha((unsigned char)subtags[idx][0])) { - script = subtags[idx++]; - } - if (idx < n && (strlen(subtags[idx]) == 2 || strlen(subtags[idx]) == 3)) { - int is_region = 1; - int j; - for (j = 0; j < (int)strlen(subtags[idx]); j++) { - if (strlen(subtags[idx]) == 2 && !isalpha((unsigned char)subtags[idx][j])) is_region = 0; - if (strlen(subtags[idx]) == 3 && !isdigit((unsigned char)subtags[idx][j])) is_region = 0; - } - if (is_region) region = subtags[idx++]; - } - likely = locale_get_likely_subtags(lang, script, region); - if (likely) { - js_intl_dbuf_init(ctx, &db); - dbuf_putstr(&db, likely); - /* append remaining variants */ - for (; idx < n; idx++) { - dbuf_putc(&db, (uint8_t)'-'); - dbuf_putstr(&db, subtags[idx]); - } - dbuf_putc(&db, '\0'); - if (dbuf_error(&db)) { - dbuf_free(&db); - return NULL; - } - return (char *)db.buf; - } - } + char res[256]; + if (locale_maximize_to(base, res, sizeof(res)) == 0) + return js_strdup(ctx, res); return js_strdup(ctx, base); } @@ -1761,104 +1660,42 @@ static JSValue js_locale_maximize(JSContext *ctx, JSValueConst this_val, static char *locale_minimize_base(JSContext *ctx, const char *base) { - char *max_full = locale_maximize_base(ctx, base); - char current[256]; - int changed; - const char *max_lang; - if (!max_full) return js_strdup(ctx, base); - pstrcpy(current, sizeof(current), base); - /* Hard-coded special cases for minimize */ - if (!strcmp(current, "zh-Hant")) { - js_free(ctx, max_full); - return js_strdup(ctx, "zh-TW"); - } - /* First, replace und with likely language */ - max_lang = max_full; - { - char *dash = strchr(max_full, '-'); - if (dash) { - static char mb[256]; - pstrcpy(mb, sizeof(mb), max_full); - mb[dash - max_full] = '\0'; - max_lang = mb; - } - } - if (!strncmp(current, "und", 3) && (current[3] == '\0' || current[3] == '-') && - strcmp(max_lang, "und")) { - char replaced[256]; - replaced[0] = '\0'; - pstrcpy(replaced, sizeof(replaced), max_lang); - if (current[3] == '-') { - pstrcat(replaced, sizeof(replaced), current + 3); - } - pstrcpy(current, sizeof(current), replaced); - } - /* Try removing region, then script, restarting from region after each success */ - do { - char tb[256]; - char *ts[16]; - int tn; - char without[256]; - char *max_without; - changed = 0; - pstrcpy(tb, sizeof(tb), current); - tn = locale_split_subtags(tb, ts, 16); - /* Try removing region */ - if (tn >= 2) { - int has_script = (strlen(ts[1]) == 4 && isalpha((unsigned char)ts[1][0])); - int is_region = 1; - int j; - int ridx = has_script ? 2 : 1; - if (ridx < tn) { - for (j = 0; j < (int)strlen(ts[ridx]); j++) { - if (strlen(ts[ridx]) == 2 && !isalpha((unsigned char)ts[ridx][j])) is_region = 0; - if (strlen(ts[ridx]) == 3 && !isdigit((unsigned char)ts[ridx][j])) is_region = 0; - } - if (is_region) { - without[0] = '\0'; - pstrcpy(without, sizeof(without), ts[0]); - if (has_script) { - pstrcat(without, sizeof(without), "-"); - pstrcat(without, sizeof(without), ts[1]); - } - { - int k = ridx + 1; - for (; k < tn; k++) { - pstrcat(without, sizeof(without), "-"); - pstrcat(without, sizeof(without), ts[k]); - } - } - max_without = locale_maximize_base(ctx, without); - if (max_without && !strcmp(max_without, max_full)) { - pstrcpy(current, sizeof(current), without); - changed = 1; - } - js_free(ctx, max_without); - } - } - } - if (changed) continue; - /* Try removing script */ - if (tn >= 2 && strlen(ts[1]) == 4 && isalpha((unsigned char)ts[1][0])) { - without[0] = '\0'; - pstrcpy(without, sizeof(without), ts[0]); - { - int k = 2; - for (; k < tn; k++) { - pstrcat(without, sizeof(without), "-"); - pstrcat(without, sizeof(without), ts[k]); - } - } - max_without = locale_maximize_base(ctx, without); - if (max_without && !strcmp(max_without, max_full)) { - pstrcpy(current, sizeof(current), without); - changed = 1; - } - js_free(ctx, max_without); - } - } while (changed); - js_free(ctx, max_full); - return js_strdup(ctx, current); + LocaleNameParts name, maximal; + char max[256], test[256], res[256]; + + if (locale_parse_name(base, &name) < 0) + return js_strdup(ctx, base); + if (locale_maximize_parts(&name, name.lang, name.script, name.region, + max, sizeof(max)) < 0) + return js_strdup(ctx, base); + if (locale_parse_name(max, &maximal) < 0) + return js_strdup(ctx, max); + /* Remove Likely Subtags: try to remove the script and the region first, + then the script only, then the region only. A subtag is removed only + if the result still maximizes back to the maximal form. */ + if (locale_maximize_parts(&maximal, maximal.lang, NULL, NULL, + test, sizeof(test)) == 0 && + !strcmp(test, max)) { + locale_join_parts(&maximal, maximal.lang, NULL, NULL, res, sizeof(res)); + return js_strdup(ctx, res); + } + if (maximal.region && + locale_maximize_parts(&maximal, maximal.lang, NULL, maximal.region, + test, sizeof(test)) == 0 && + !strcmp(test, max)) { + locale_join_parts(&maximal, maximal.lang, NULL, maximal.region, + res, sizeof(res)); + return js_strdup(ctx, res); + } + if (maximal.script && + locale_maximize_parts(&maximal, maximal.lang, maximal.script, NULL, + test, sizeof(test)) == 0 && + !strcmp(test, max)) { + locale_join_parts(&maximal, maximal.lang, maximal.script, NULL, + res, sizeof(res)); + return js_strdup(ctx, res); + } + return js_strdup(ctx, max); } static JSValue js_locale_minimize(JSContext *ctx, JSValueConst this_val, @@ -1897,6 +1734,503 @@ static JSValue js_locale_minimize(JSContext *ctx, JSValueConst this_val, return JS_DupValue(ctx, this_val); } +/* --------------------------------------------------------------------- */ +/* Intl.Locale info methods (ECMA-402) */ +/* --------------------------------------------------------------------- */ + +/* Create an Array holding the n first strings of items. */ +static JSValue locale_new_string_array(JSContext *ctx, const char *const *items, int n) +{ + JSValue arr = JS_NewArray(ctx); + int i; + if (JS_IsException(arr)) + return arr; + for (i = 0; i < n; i++) { + if (JS_DefinePropertyValueUint32(ctx, arr, (uint32_t)i, + JS_NewString(ctx, items[i]), + JS_PROP_C_W_E) < 0) { + JS_FreeValue(ctx, arr); + return JS_EXCEPTION; + } + } + return arr; +} + +/* Split a space separated list, modifying buf. */ +static int locale_split_list(char *buf, char **items, int max_items) +{ + int n = 0; + char *p = buf; + while (*p && n < max_items) { + char *start = p; + while (*p && *p != ' ') + p++; + items[n++] = start; + if (*p == ' ') { + *p = '\0'; + p++; + } + } + return n; +} + +static int cmp_string(const void *a, const void *b) +{ + return strcmp(*(const char *const *)a, *(const char *const *)b); +} + +/* Find the entry matching key in a table sorted by key. */ +static const IntlPrefData *locale_find_pref(const IntlPrefData *tab, int count, + const char *key) +{ + int lo = 0, hi = count - 1; + while (lo <= hi) { + int mid = lo + (hi - lo) / 2; + int c = strcmp(tab[mid].key, key); + if (c == 0) + return &tab[mid]; + if (c < 0) + lo = mid + 1; + else + hi = mid - 1; + } + return NULL; +} + +static const IntlWeekData *locale_find_week(const char *region) +{ + int lo = 0, hi = week_data_count - 1; + while (lo <= hi) { + int mid = lo + (hi - lo) / 2; + int c = strcmp(week_data_tab[mid].region, region); + if (c == 0) + return &week_data_tab[mid]; + if (c < 0) + lo = mid + 1; + else + hi = mid - 1; + } + return NULL; +} + +/* LookupMatchingLocaleByPrefix: return the locale data matching the + unicode_language_id of locale, or NULL if there is no match. */ +static const LocaleData *locale_match_data(const char *locale) +{ + char base[256], suffix[256]; + int i; + locale_split_base_suffix(locale, base, sizeof(base), suffix, sizeof(suffix)); + for (i = 0; i < locale_data_count; i++) { + if (!strcmp(locale_data_table[i].locale, base)) + return &locale_data_table[i]; + } + for (i = 0; i < locale_data_count; i++) { + const char *p = locale_data_table[i].locale; + int len = (int)strlen(p); + if (!strncmp(base, p, (size_t)len) && (base[len] == '\0' || base[len] == '-')) + return &locale_data_table[i]; + } + return NULL; +} + +/* CanonicalUnicodeSubdivision (ECMA-402): return the region carried by the + "sd" or "rg" keyword of the locale, or NULL. */ +static char *locale_canonical_subdivision(JSContext *ctx, const char *locale, + const char *key) +{ + char *value = js_intl_locale_get_unicode_key(ctx, locale, key); + char buf[64], *parts[3], rbuf[8]; + int n, i, len; + + if (!value) + return NULL; + pstrcpy(buf, sizeof(buf), value); + js_free(ctx, value); + /* unicode_subdivision_id = [unicode_region_subtag "-"] unicode_subdivision_subtag */ + n = locale_split_subtags(buf, parts, 3); + rbuf[0] = '\0'; + if (n == 2) { + if (is_region_subtag(parts[0]) && is_alphanum_len(parts[1], 4, 8)) + pstrcpy(rbuf, sizeof(rbuf), parts[0]); + } else if (n == 1 && is_alphanum_len(parts[0], 4, 8)) { + /* the region is the longest prefix matching unicode_region_subtag */ + len = (int)strlen(parts[0]); + for (i = 3; i >= 2; i--) { + if (len < i) + continue; + pstrcpy(rbuf, sizeof(rbuf), parts[0]); + rbuf[i] = '\0'; + if (is_region_subtag(rbuf)) + break; + rbuf[0] = '\0'; + } + } + if (!rbuf[0]) + return NULL; + for (i = 0; rbuf[i]; i++) + rbuf[i] = toupper((unsigned char)rbuf[i]); + return js_strdup(ctx, rbuf); +} + +/* RegionPreference (ECMA-402): compute the region used to look up the + calendar, time and week preference data, and the "rg" region override. + The override must be freed by the caller. */ +static void locale_region_preference(JSContext *ctx, JSLocaleData *s, + char *region, int region_size, char **override) +{ + char base[256], suffix[256], max[256]; + char *sd; + LocaleNameParts name; + + region[0] = '\0'; + *override = locale_canonical_subdivision(ctx, s->locale, "rg"); + if (s->region) + pstrcpy(region, region_size, s->region); + if (!region[0]) { + sd = locale_canonical_subdivision(ctx, s->locale, "sd"); + if (sd) { + pstrcpy(region, region_size, sd); + js_free(ctx, sd); + } + } + if (!region[0]) { + locale_split_base_suffix(s->locale, base, sizeof(base), suffix, sizeof(suffix)); + if (locale_maximize_to(base, max, sizeof(max)) == 0 && + locale_parse_name(max, &name) == 0 && name.region) + pstrcpy(region, region_size, name.region); + } + if (!region[0]) + pstrcpy(region, region_size, "001"); +} + +static BOOL calendar_is_available(const char *name) +{ + int i; + for (i = 0; i < CAL_COUNT; i++) { + const char *c = ti_calendar_enum_to_string(i); + if (c && !strcmp(c, name)) + return TRUE; + } + return FALSE; +} + +/* WeekdayUValueToNumber (ECMA-402): convert a Unicode First Day Identifier + to an ISO 8601 day of week, or -1. */ +static int weekday_u_value_to_number(const char *s) +{ + static const char *const names[7] = { + "mon", "tue", "wed", "thu", "fri", "sat", "sun" + }; + int i; + for (i = 0; i < 7; i++) { + if (!strcmp(s, names[i])) + return i + 1; + } + return -1; +} + +static JSValue js_locale_getCalendars(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + const char *language, *items[16]; + const IntlPrefData *entry = NULL; + const char *regions[2]; + char region[16], *override, key[64], list[128], id[32]; + char *parts[16], ids[16][32]; + int i, j, n = 0, nregions, nparts; + + if (!s) + return JS_EXCEPTION; + if (s->calendar) { + items[0] = s->calendar; + return locale_new_string_array(ctx, items, 1); + } + locale_region_preference(ctx, s, region, sizeof(region), &override); + language = s->language ? s->language : "und"; + nregions = 0; + if (override && locale_find_pref(cal_pref_tab, cal_pref_count, override)) + regions[nregions++] = override; + regions[nregions++] = region; + for (i = 0; i < nregions && !entry; i++) { + snprintf(key, sizeof(key), "%s-%s", language, regions[i]); + entry = locale_find_pref(cal_pref_tab, cal_pref_count, key); + if (!entry) + entry = locale_find_pref(cal_pref_tab, cal_pref_count, regions[i]); + } + js_free(ctx, override); + if (entry) { + pstrcpy(list, sizeof(list), entry->value); + nparts = locale_split_list(list, parts, 16); + for (i = 0; i < nparts; i++) { + const char *canon; + pstrcpy(id, sizeof(id), parts[i]); + to_lower_case(id); + canon = canonicalize_keyword_value("ca", id); + if (!calendar_is_available(canon)) + continue; + for (j = 0; j < n; j++) { + if (!strcmp(items[j], canon)) + break; + } + if (j == n && n < 16) { + pstrcpy(ids[n], sizeof(ids[0]), canon); + items[n] = ids[n]; + n++; + } + } + } + if (n == 0) + items[n++] = "gregory"; + return locale_new_string_array(ctx, items, n); +} + +/* The canonical zone identifiers commonly used in region, sorted. */ +static JSValue locale_region_time_zones(JSContext *ctx, const char *region) +{ + JSValue arr; + const char *p; + int lo = 0, hi = ti_tz_region_count - 1, idx = -1, n = 0; + + while (lo <= hi) { + int mid = lo + (hi - lo) / 2; + int c = strcmp(ti_tz_region_tab[mid].region, region); + if (c == 0) { + idx = mid; + break; + } + if (c < 0) + lo = mid + 1; + else + hi = mid - 1; + } + arr = JS_NewArray(ctx); + if (JS_IsException(arr)) + return arr; + if (idx >= 0) { + for (p = ti_tz_region_tab[idx].zones; *p; ) { + const char *end = p + strlen(p); + if (JS_DefinePropertyValueUint32(ctx, arr, (uint32_t)n, + JS_NewStringLen(ctx, p, end - p), + JS_PROP_C_W_E) < 0) { + JS_FreeValue(ctx, arr); + return JS_EXCEPTION; + } + n++; + if (!*end) + break; + p = end + 1; + } + } + return arr; +} + +static JSValue js_locale_getTimeZones(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + if (!s) + return JS_EXCEPTION; + /* TimeZonesOfLocale returns undefined if the locale has no region subtag */ + if (!s->region) + return JS_UNDEFINED; + return locale_region_time_zones(ctx, s->region); +} + +static JSValue js_locale_getTextInfo(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + const char *script; + char base[256], suffix[256], max[256]; + LocaleNameParts name; + JSValue obj; + int i; + + if (!s) + return JS_EXCEPTION; + script = s->script; + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) + return JS_EXCEPTION; + if (!script) { + /* the script comes from the Add Likely Subtags algorithm */ + locale_split_base_suffix(s->locale, base, sizeof(base), suffix, sizeof(suffix)); + if (locale_maximize_to(base, max, sizeof(max)) == 0 && + locale_parse_name(max, &name) == 0) + script = name.script; + } + for (i = 0; script && i < script_dir_count; i++) { + if (!strcmp(script_dir_tab[i].script, script)) { + JS_DefinePropertyValueStr(ctx, obj, "direction", + JS_NewString(ctx, script_dir_tab[i].dir ? "rtl" : "ltr"), + JS_PROP_C_W_E); + return obj; + } + } + /* the direction of an unknown script cannot be determined */ + JS_DefinePropertyValueStr(ctx, obj, "direction", JS_UNDEFINED, JS_PROP_C_W_E); + return obj; +} + +static JSValue js_locale_getCollations(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + const LocaleData *ld; + const char *items[8]; + int i, n = 0; + + if (!s) + return JS_EXCEPTION; + if (s->collation) { + items[0] = s->collation; + return locale_new_string_array(ctx, items, 1); + } + /* [[SortLocaleData]].[[co]] starts with the default collation, which is + null and not part of the returned list, followed by the collations + available for the locale. The root collations are inherited by every + locale; if the locale does not match any locale data, only the root + collations are returned. */ + ld = locale_match_data(s->locale); + items[n++] = "emoji"; + items[n++] = "eor"; + for (i = 0; ld && i < intl_supported_collations_count; i++) { + const char *c = intl_supported_collations[i]; + int j; + if (!js_intl_collation_is_supported(c, ld->locale)) + continue; + for (j = 0; j < n; j++) { + if (!strcmp(items[j], c)) + break; + } + if (j == n && n < 8) + items[n++] = c; + } + qsort(items, n, sizeof(items[0]), cmp_string); + return locale_new_string_array(ctx, items, n); +} + +static JSValue js_locale_getHourCycles(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + const IntlPrefData *entry = NULL; + const char *language, *regions[2], *items[8]; + char region[16], *override, key[64], list[64]; + char *parts[8]; + int i, n = 0, nregions, nparts; + + if (!s) + return JS_EXCEPTION; + if (s->hourCycle) { + items[0] = s->hourCycle; + return locale_new_string_array(ctx, items, 1); + } + locale_region_preference(ctx, s, region, sizeof(region), &override); + language = s->language ? s->language : "und"; + nregions = 0; + if (override && locale_find_pref(time_data_tab, time_data_count, override)) + regions[nregions++] = override; + regions[nregions++] = region; + for (i = 0; i < nregions && !entry; i++) { + snprintf(key, sizeof(key), "%s-%s", language, regions[i]); + entry = locale_find_pref(time_data_tab, time_data_count, key); + if (!entry) + entry = locale_find_pref(time_data_tab, time_data_count, regions[i]); + } + js_free(ctx, override); + if (!entry) { + items[n++] = "h23"; + } else { + pstrcpy(list, sizeof(list), entry->value); + nparts = locale_split_list(list, parts, 8); + for (i = 0; i < nparts && n < 8; i++) + items[n++] = parts[i]; + } + return locale_new_string_array(ctx, items, n); +} + +static JSValue js_locale_getNumberingSystems(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + const char *items[1]; + + if (!s) + return JS_EXCEPTION; + if (s->numberingSystem) { + items[0] = s->numberingSystem; + return locale_new_string_array(ctx, items, 1); + } + /* The first numbering system ([[nu]][0]) of the matched NumberFormat + locale data, or "latn" if there is no match. Our number formatter uses + "latn" as the default numbering system of every locale. */ + items[0] = "latn"; + return locale_new_string_array(ctx, items, 1); +} + +static JSValue js_locale_getWeekInfo(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + JSLocaleData *s = JS_GetOpaque2(ctx, this_val, js_locale_class_id); + const IntlWeekData *wd = NULL; + char region[16], *override; + int firstDay, weekendStart, weekendEnd, days[7], ndays; + int i; + JSValue obj, weekend; + + if (!s) + return JS_EXCEPTION; + locale_region_preference(ctx, s, region, sizeof(region), &override); + if (override) + wd = locale_find_week(override); + if (!wd) + wd = locale_find_week(region); + if (!wd) + wd = locale_find_week("001"); + js_free(ctx, override); + firstDay = wd ? wd->firstDay : 1; + weekendStart = wd ? wd->weekendStart : 6; + weekendEnd = wd ? wd->weekendEnd : 7; + if (s->firstDayOfWeek) { + int d = weekday_u_value_to_number(s->firstDayOfWeek); + if (d > 0) + firstDay = d; + } + obj = JS_NewObject(ctx); + if (JS_IsException(obj)) + return JS_EXCEPTION; + JS_DefinePropertyValueStr(ctx, obj, "firstDay", JS_NewInt32(ctx, firstDay), + JS_PROP_C_W_E); + /* the weekend runs from weekendStart to weekendEnd, wrapping around */ + ndays = 0; + for (;;) { + days[ndays++] = weekendStart; + if (weekendStart == weekendEnd) + break; + weekendStart = weekendStart % 7 + 1; + } + /* sorted in ascending numeric order */ + for (i = 0; i < ndays; i++) { + int j, v = days[i]; + for (j = i; j > 0 && days[j - 1] > v; j--) + days[j] = days[j - 1]; + days[j] = v; + } + weekend = JS_NewArray(ctx); + if (JS_IsException(weekend)) { + JS_FreeValue(ctx, obj); + return JS_EXCEPTION; + } + for (i = 0; i < ndays; i++) { + JS_DefinePropertyValueUint32(ctx, weekend, (uint32_t)i, + JS_NewInt32(ctx, days[i]), JS_PROP_C_W_E); + } + JS_DefinePropertyValueStr(ctx, obj, "weekend", weekend, JS_PROP_C_W_E); + return obj; +} + static JSValue js_locale_toString(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { diff --git a/temporal/timezone.h b/temporal/timezone.h index 633e72c..ccdcff2 100644 --- a/temporal/timezone.h +++ b/temporal/timezone.h @@ -28,6 +28,13 @@ extern const int ti_tz_alias_count; extern const char * const ti_tz_names[]; extern const int ti_tz_name_count; +typedef struct { + const char *region; + const char *zones; /* zone names, zero separated, sorted */ +} TiTzRegion; +extern const TiTzRegion ti_tz_region_tab[]; +extern const int ti_tz_region_count; + /* Lookup functions */ int ti_tz_find_id(const char *name); int ti_tz_offset_at_sec(int tz_id, int64_t epoch_sec); diff --git a/temporal/tzdata_generated.c b/temporal/tzdata_generated.c index b87079a..7941dbf 100644 --- a/temporal/tzdata_generated.c +++ b/temporal/tzdata_generated.c @@ -3837,3 +3837,255 @@ const char * const ti_tz_names[] = { "Zulu", }; const int ti_tz_name_count = countof(ti_tz_names); + +/* Zone identifiers commonly used in each region, sorted and zero separated */ +const TiTzRegion ti_tz_region_tab[] = { + { "AD", "Europe/Andorra" }, + { "AE", "Asia/Dubai" }, + { "AF", "Asia/Kabul" }, + { "AG", "America/Antigua" }, + { "AI", "America/Anguilla" }, + { "AL", "Europe/Tirane" }, + { "AM", "Asia/Yerevan" }, + { "AO", "Africa/Luanda" }, + { "AQ", "Antarctica/Casey\000Antarctica/Davis\000Antarctica/DumontDUrville\000Antarctica/Mawson\000Antarctica/McMurdo\000Antarctica/Palmer\000Antarctica/Rothera\000Antarctica/Syowa\000Antarctica/Troll\000Antarctica/Vostok" }, + { "AR", "America/Argentina/Buenos_Aires\000America/Argentina/Catamarca\000America/Argentina/Cordoba\000America/Argentina/Jujuy\000America/Argentina/La_Rioja\000America/Argentina/Mendoza\000America/Argentina/Rio_Gallegos\000America/Argentina/Salta\000America/Argentina/San_Juan\000America/Argentina/San_Luis\000America/Argentina/Tucuman\000America/Argentina/Ushuaia" }, + { "AS", "Pacific/Pago_Pago" }, + { "AT", "Europe/Vienna" }, + { "AU", "Antarctica/Macquarie\000Australia/Adelaide\000Australia/Brisbane\000Australia/Broken_Hill\000Australia/Darwin\000Australia/Eucla\000Australia/Hobart\000Australia/Lindeman\000Australia/Lord_Howe\000Australia/Melbourne\000Australia/Perth\000Australia/Sydney" }, + { "AW", "America/Aruba" }, + { "AX", "Europe/Mariehamn" }, + { "AZ", "Asia/Baku" }, + { "BA", "Europe/Sarajevo" }, + { "BB", "America/Barbados" }, + { "BD", "Asia/Dhaka" }, + { "BE", "Europe/Brussels" }, + { "BF", "Africa/Ouagadougou" }, + { "BG", "Europe/Sofia" }, + { "BH", "Asia/Bahrain" }, + { "BI", "Africa/Bujumbura" }, + { "BJ", "Africa/Porto-Novo" }, + { "BL", "America/St_Barthelemy" }, + { "BM", "Atlantic/Bermuda" }, + { "BN", "Asia/Brunei" }, + { "BO", "America/La_Paz" }, + { "BQ", "America/Kralendijk" }, + { "BR", "America/Araguaina\000America/Bahia\000America/Belem\000America/Boa_Vista\000America/Campo_Grande\000America/Cuiaba\000America/Eirunepe\000America/Fortaleza\000America/Maceio\000America/Manaus\000America/Noronha\000America/Porto_Velho\000America/Recife\000America/Rio_Branco\000America/Santarem\000America/Sao_Paulo" }, + { "BS", "America/Nassau" }, + { "BT", "Asia/Thimphu" }, + { "BW", "Africa/Gaborone" }, + { "BY", "Europe/Minsk" }, + { "BZ", "America/Belize" }, + { "CA", "America/Atikokan\000America/Blanc-Sablon\000America/Cambridge_Bay\000America/Creston\000America/Dawson\000America/Dawson_Creek\000America/Edmonton\000America/Fort_Nelson\000America/Glace_Bay\000America/Goose_Bay\000America/Halifax\000America/Inuvik\000America/Iqaluit\000America/Moncton\000America/Rankin_Inlet\000America/Regina\000America/Resolute\000America/St_Johns\000America/Swift_Current\000America/Toronto\000America/Vancouver\000America/Whitehorse\000America/Winnipeg" }, + { "CC", "Indian/Cocos" }, + { "CD", "Africa/Kinshasa\000Africa/Lubumbashi" }, + { "CF", "Africa/Bangui" }, + { "CG", "Africa/Brazzaville" }, + { "CH", "Europe/Zurich" }, + { "CI", "Africa/Abidjan" }, + { "CK", "Pacific/Rarotonga" }, + { "CL", "America/Coyhaique\000America/Punta_Arenas\000America/Santiago\000Pacific/Easter" }, + { "CM", "Africa/Douala" }, + { "CN", "Asia/Shanghai\000Asia/Urumqi" }, + { "CO", "America/Bogota" }, + { "CR", "America/Costa_Rica" }, + { "CU", "America/Havana" }, + { "CV", "Atlantic/Cape_Verde" }, + { "CW", "America/Curacao" }, + { "CX", "Indian/Christmas" }, + { "CY", "Asia/Famagusta\000Asia/Nicosia" }, + { "CZ", "Europe/Prague" }, + { "DE", "Europe/Berlin\000Europe/Busingen" }, + { "DJ", "Africa/Djibouti" }, + { "DK", "Europe/Copenhagen" }, + { "DM", "America/Dominica" }, + { "DO", "America/Santo_Domingo" }, + { "DZ", "Africa/Algiers" }, + { "EC", "America/Guayaquil\000Pacific/Galapagos" }, + { "EE", "Europe/Tallinn" }, + { "EG", "Africa/Cairo" }, + { "EH", "Africa/El_Aaiun" }, + { "ER", "Africa/Asmara" }, + { "ES", "Africa/Ceuta\000Atlantic/Canary\000Europe/Madrid" }, + { "ET", "Africa/Addis_Ababa" }, + { "FI", "Europe/Helsinki" }, + { "FJ", "Pacific/Fiji" }, + { "FK", "Atlantic/Stanley" }, + { "FM", "Pacific/Chuuk\000Pacific/Kosrae\000Pacific/Pohnpei" }, + { "FO", "Atlantic/Faroe" }, + { "FR", "Europe/Paris" }, + { "GA", "Africa/Libreville" }, + { "GB", "Europe/London" }, + { "GD", "America/Grenada" }, + { "GE", "Asia/Tbilisi" }, + { "GF", "America/Cayenne" }, + { "GG", "Europe/Guernsey" }, + { "GH", "Africa/Accra" }, + { "GI", "Europe/Gibraltar" }, + { "GL", "America/Danmarkshavn\000America/Nuuk\000America/Scoresbysund\000America/Thule" }, + { "GM", "Africa/Banjul" }, + { "GN", "Africa/Conakry" }, + { "GP", "America/Guadeloupe" }, + { "GQ", "Africa/Malabo" }, + { "GR", "Europe/Athens" }, + { "GS", "Atlantic/South_Georgia" }, + { "GT", "America/Guatemala" }, + { "GU", "Pacific/Guam" }, + { "GW", "Africa/Bissau" }, + { "GY", "America/Guyana" }, + { "HK", "Asia/Hong_Kong" }, + { "HN", "America/Tegucigalpa" }, + { "HR", "Europe/Zagreb" }, + { "HT", "America/Port-au-Prince" }, + { "HU", "Europe/Budapest" }, + { "ID", "Asia/Jakarta\000Asia/Jayapura\000Asia/Makassar\000Asia/Pontianak" }, + { "IE", "Europe/Dublin" }, + { "IL", "Asia/Jerusalem" }, + { "IM", "Europe/Isle_of_Man" }, + { "IN", "Asia/Kolkata" }, + { "IO", "Indian/Chagos" }, + { "IQ", "Asia/Baghdad" }, + { "IR", "Asia/Tehran" }, + { "IS", "Atlantic/Reykjavik" }, + { "IT", "Europe/Rome" }, + { "JE", "Europe/Jersey" }, + { "JM", "America/Jamaica" }, + { "JO", "Asia/Amman" }, + { "JP", "Asia/Tokyo" }, + { "KE", "Africa/Nairobi" }, + { "KG", "Asia/Bishkek" }, + { "KH", "Asia/Phnom_Penh" }, + { "KI", "Pacific/Kanton\000Pacific/Kiritimati\000Pacific/Tarawa" }, + { "KM", "Indian/Comoro" }, + { "KN", "America/St_Kitts" }, + { "KP", "Asia/Pyongyang" }, + { "KR", "Asia/Seoul" }, + { "KW", "Asia/Kuwait" }, + { "KY", "America/Cayman" }, + { "KZ", "Asia/Almaty\000Asia/Aqtau\000Asia/Aqtobe\000Asia/Atyrau\000Asia/Oral\000Asia/Qostanay\000Asia/Qyzylorda" }, + { "LA", "Asia/Vientiane" }, + { "LB", "Asia/Beirut" }, + { "LC", "America/St_Lucia" }, + { "LI", "Europe/Vaduz" }, + { "LK", "Asia/Colombo" }, + { "LR", "Africa/Monrovia" }, + { "LS", "Africa/Maseru" }, + { "LT", "Europe/Vilnius" }, + { "LU", "Europe/Luxembourg" }, + { "LV", "Europe/Riga" }, + { "LY", "Africa/Tripoli" }, + { "MA", "Africa/Casablanca" }, + { "MC", "Europe/Monaco" }, + { "MD", "Europe/Chisinau" }, + { "ME", "Europe/Podgorica" }, + { "MF", "America/Marigot" }, + { "MG", "Indian/Antananarivo" }, + { "MH", "Pacific/Kwajalein\000Pacific/Majuro" }, + { "MK", "Europe/Skopje" }, + { "ML", "Africa/Bamako" }, + { "MM", "Asia/Yangon" }, + { "MN", "Asia/Hovd\000Asia/Ulaanbaatar" }, + { "MO", "Asia/Macau" }, + { "MP", "Pacific/Saipan" }, + { "MQ", "America/Martinique" }, + { "MR", "Africa/Nouakchott" }, + { "MS", "America/Montserrat" }, + { "MT", "Europe/Malta" }, + { "MU", "Indian/Mauritius" }, + { "MV", "Indian/Maldives" }, + { "MW", "Africa/Blantyre" }, + { "MX", "America/Bahia_Banderas\000America/Cancun\000America/Chihuahua\000America/Ciudad_Juarez\000America/Hermosillo\000America/Matamoros\000America/Mazatlan\000America/Merida\000America/Mexico_City\000America/Monterrey\000America/Ojinaga\000America/Tijuana" }, + { "MY", "Asia/Kuala_Lumpur\000Asia/Kuching" }, + { "MZ", "Africa/Maputo" }, + { "NA", "Africa/Windhoek" }, + { "NC", "Pacific/Noumea" }, + { "NE", "Africa/Niamey" }, + { "NF", "Pacific/Norfolk" }, + { "NG", "Africa/Lagos" }, + { "NI", "America/Managua" }, + { "NL", "Europe/Amsterdam" }, + { "NO", "Europe/Oslo" }, + { "NP", "Asia/Kathmandu" }, + { "NR", "Pacific/Nauru" }, + { "NU", "Pacific/Niue" }, + { "NZ", "Pacific/Auckland\000Pacific/Chatham" }, + { "OM", "Asia/Muscat" }, + { "PA", "America/Panama" }, + { "PE", "America/Lima" }, + { "PF", "Pacific/Gambier\000Pacific/Marquesas\000Pacific/Tahiti" }, + { "PG", "Pacific/Bougainville\000Pacific/Port_Moresby" }, + { "PH", "Asia/Manila" }, + { "PK", "Asia/Karachi" }, + { "PL", "Europe/Warsaw" }, + { "PM", "America/Miquelon" }, + { "PN", "Pacific/Pitcairn" }, + { "PR", "America/Puerto_Rico" }, + { "PS", "Asia/Gaza\000Asia/Hebron" }, + { "PT", "Atlantic/Azores\000Atlantic/Madeira\000Europe/Lisbon" }, + { "PW", "Pacific/Palau" }, + { "PY", "America/Asuncion" }, + { "QA", "Asia/Qatar" }, + { "RE", "Indian/Reunion" }, + { "RO", "Europe/Bucharest" }, + { "RS", "Europe/Belgrade" }, + { "RU", "Asia/Anadyr\000Asia/Barnaul\000Asia/Chita\000Asia/Irkutsk\000Asia/Kamchatka\000Asia/Khandyga\000Asia/Krasnoyarsk\000Asia/Magadan\000Asia/Novokuznetsk\000Asia/Novosibirsk\000Asia/Omsk\000Asia/Sakhalin\000Asia/Srednekolymsk\000Asia/Tomsk\000Asia/Ust-Nera\000Asia/Vladivostok\000Asia/Yakutsk\000Asia/Yekaterinburg\000Europe/Astrakhan\000Europe/Kaliningrad\000Europe/Kirov\000Europe/Moscow\000Europe/Samara\000Europe/Saratov\000Europe/Ulyanovsk\000Europe/Volgograd" }, + { "RW", "Africa/Kigali" }, + { "SA", "Asia/Riyadh" }, + { "SB", "Pacific/Guadalcanal" }, + { "SC", "Indian/Mahe" }, + { "SD", "Africa/Khartoum" }, + { "SE", "Europe/Stockholm" }, + { "SG", "Asia/Singapore" }, + { "SH", "Atlantic/St_Helena" }, + { "SI", "Europe/Ljubljana" }, + { "SJ", "Arctic/Longyearbyen" }, + { "SK", "Europe/Bratislava" }, + { "SL", "Africa/Freetown" }, + { "SM", "Europe/San_Marino" }, + { "SN", "Africa/Dakar" }, + { "SO", "Africa/Mogadishu" }, + { "SR", "America/Paramaribo" }, + { "SS", "Africa/Juba" }, + { "ST", "Africa/Sao_Tome" }, + { "SV", "America/El_Salvador" }, + { "SX", "America/Lower_Princes" }, + { "SY", "Asia/Damascus" }, + { "SZ", "Africa/Mbabane" }, + { "TC", "America/Grand_Turk" }, + { "TD", "Africa/Ndjamena" }, + { "TF", "Indian/Kerguelen" }, + { "TG", "Africa/Lome" }, + { "TH", "Asia/Bangkok" }, + { "TJ", "Asia/Dushanbe" }, + { "TK", "Pacific/Fakaofo" }, + { "TL", "Asia/Dili" }, + { "TM", "Asia/Ashgabat" }, + { "TN", "Africa/Tunis" }, + { "TO", "Pacific/Tongatapu" }, + { "TR", "Europe/Istanbul" }, + { "TT", "America/Port_of_Spain" }, + { "TV", "Pacific/Funafuti" }, + { "TW", "Asia/Taipei" }, + { "TZ", "Africa/Dar_es_Salaam" }, + { "UA", "Europe/Kyiv\000Europe/Simferopol" }, + { "UG", "Africa/Kampala" }, + { "UM", "Pacific/Midway\000Pacific/Wake" }, + { "US", "America/Adak\000America/Anchorage\000America/Boise\000America/Chicago\000America/Denver\000America/Detroit\000America/Indiana/Indianapolis\000America/Indiana/Knox\000America/Indiana/Marengo\000America/Indiana/Petersburg\000America/Indiana/Tell_City\000America/Indiana/Vevay\000America/Indiana/Vincennes\000America/Indiana/Winamac\000America/Juneau\000America/Kentucky/Louisville\000America/Kentucky/Monticello\000America/Los_Angeles\000America/Menominee\000America/Metlakatla\000America/New_York\000America/Nome\000America/North_Dakota/Beulah\000America/North_Dakota/Center\000America/North_Dakota/New_Salem\000America/Phoenix\000America/Sitka\000America/Yakutat\000Pacific/Honolulu" }, + { "UY", "America/Montevideo" }, + { "UZ", "Asia/Samarkand\000Asia/Tashkent" }, + { "VA", "Europe/Vatican" }, + { "VC", "America/St_Vincent" }, + { "VE", "America/Caracas" }, + { "VG", "America/Tortola" }, + { "VI", "America/St_Thomas" }, + { "VN", "Asia/Ho_Chi_Minh" }, + { "VU", "Pacific/Efate" }, + { "WF", "Pacific/Wallis" }, + { "WS", "Pacific/Apia" }, + { "YE", "Asia/Aden" }, + { "YT", "Indian/Mayotte" }, + { "ZA", "Africa/Johannesburg" }, + { "ZM", "Africa/Lusaka" }, + { "ZW", "Africa/Harare" }, +}; +const int ti_tz_region_count = countof(ti_tz_region_tab); diff --git a/test262_errors.txt b/test262_errors.txt index 657b4d9..c5c32f7 100644 --- a/test262_errors.txt +++ b/test262_errors.txt @@ -1,18 +1,3 @@ -test262/test/intl402/Locale/prototype/getCalendars/likely-subtags-region.js:42: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getCalendars/region-override.js:41: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getCalendars/region-priority.js:60: Test262Error: Inconclusive: the "rg" region override and the region subtag select regions with identical calendars in this implementation. Consider updating the test data -test262/test/intl402/Locale/prototype/getCalendars/subdivision-region.js:35: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getCollations/collation-keyword.js:28: Test262Error: Actual [default] and expected [phonebk] should have the same contents. getCollations() for en-u-co-phonebk returns only phonebk -test262/test/intl402/Locale/prototype/getCollations/und-language.js:53: Test262Error: Actual [default] and expected [emoji, eor] should have the same contents. getCollations() for und must return the root collations -test262/test/intl402/Locale/prototype/getHourCycles/language-priority.js:47: Test262Error: Either the feature is not implemented correctly, or no suitable test data found in this implementation. If the latter, consider updating the candidate list -test262/test/intl402/Locale/prototype/getHourCycles/likely-subtags-region.js:42: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getHourCycles/region-override.js:41: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getHourCycles/region-priority.js:59: Test262Error: Inconclusive: the "rg" region override and the region subtag select regions with identical hour cycles in this implementation. Consider updating the test data -test262/test/intl402/Locale/prototype/getHourCycles/subdivision-region.js:35: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getWeekInfo/likely-subtags-region.js:46: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getWeekInfo/region-override.js:45: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list -test262/test/intl402/Locale/prototype/getWeekInfo/region-priority.js:59: Test262Error: Inconclusive: the "rg" region override and the region subtag selected regions with identical week info in this implementation. Consider updating the test data -test262/test/intl402/Locale/prototype/getWeekInfo/subdivision-region.js:39: Test262Error: No suitable test data found in this implementation. Consider updating the candidate list test262/test/language/statements/await-using/initializer-Symbol.asyncDispose-disposed-at-end-of-imported-module.js:11: SyntaxError: exported variable 'resource' does not exist test262/test/language/statements/await-using/initializer-Symbol.dispose-disposed-at-end-of-imported-module.js:11: SyntaxError: exported variable 'resource' does not exist test262/test/language/statements/using/initializer-disposed-at-end-of-imported-module.js:11: SyntaxError: exported variable 'resource' does not exist