/*
 * Copyright 2012 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.i18n.client.impl.cldr;

import com.google.gwt.core.client.JavaScriptObject;

// DO NOT EDIT - GENERATED FROM CLDR DATA

/**
 * Localized names for the "zh_Hant_MO" locale.
 */
public class LocalizedNamesImpl_zh_Hant_MO extends LocalizedNamesImpl_zh_Hant {

  @Override
  public String[] loadSortedRegionCodes() {
    return new String[] {
        "AF",
        "AR",
        "AE",
        "OM",
        "AZ",
        "AC",
        "AL",
        "DZ",
        "AW",
        "EG",
        "ET",
        "AD",
        "AO",
        "AI",
        "AG",
        "AU",
        "BB",
        "PG",
        "BS",
        "PK",
        "PY",
        "PS",
        "BH",
        "PA",
        "BR",
        "BY",
        "BM",
        "BG",
        "KP",
        "MP",
        "BE",
        "IS",
        "BO",
        "PR",
        "BA",
        "PL",
        "BW",
        "BZ",
        "PW",
        "BT",
        "BF",
        "BI",
        "GQ",
        "QO",
        "DK",
        "DE",
        "DG",
        "TG",
        "DM",
        "DO",
        "RU",
        "EC",
        "ER",
        "FR",
        "PF",
        "GF",
        "TF",
        "MF",
        "FO",
        "PH",
        "FI",
        "CV",
        "FK",
        "CR",
        "CO",
        "GD",
        "GL",
        "GE",
        "GG",
        "CU",
        "GP",
        "GY",
        "KZ",
        "HT",
        "SX",
        "NL",
        "BQ",
        "HM",
        "ME",
        "HN",
        "DJ",
        "KI",
        "KG",
        "CA",
        "IC",
        "GA",
        "GH",
        "KH",
        "CZ",
        "ZW",
        "CM",
        "QA",
        "KM",
        "XK",
        "CI",
        "KW",
        "CC",
        "CP",
        "HR",
        "KE",
        "LV",
        "LA",
        "LB",
        "LR",
        "LY",
        "LT",
        "LI",
        "RE",
        "MR",
        "MU",
        "US",
        "UM",
        "VI",
        "AS",
        "MN",
        "MS",
        "BD",
        "PE",
        "FM",
        "MA",
        "MD",
        "MC",
        "MZ",
        "MX",
        "ZA",
        "GS",
        "AQ",
        "SS",
        "KR",
        "NP",
        "NI",
        "NG",
        "NE",
        "NO",
        "PN",
        "PT",
        "TT",
        "JP",
        "SE",
        "CH",
        "SL",
        "CY",
        "SC",
        "SN",
        "RS",
        "SA",
        "LK",
        "SK",
        "SI",
        "SJ",
        "SZ",
        "SO",
        "SB",
        "TJ",
        "TW",
        "TH",
        "TZ",
        "TC",
        "TA",
        "TN",
        "TR",
        "TM",
        "TK",
        "WF",
        "VU",
        "GT",
        "VE",
        "ES",
        "EH",
        "GR",
        "SG",
        "NC",
        "HU",
        "EA",
        "JM",
        "YE",
        "IQ",
        "IR",
        "IL",
        "IT",
        "IN",
        "ID",
        "GB",
        "IO",
        "VG",
        "VN",
        "TD",
        "GI",
        "CL",
        "CF",
        "CN",
        "MO",
        "HK",
        "BN",
        "NR",
        "VA",
        "FJ",
        "AM",
        "CG",
        "CD",
        "TV",
        "AT",
        "AX",
        "GM",
        "GN",
        "GW",
        "CK",
        "CW",
        "EE",
        "IE",
        "SY",
        "TL",
        "EU",
        "EZ",
        "TO",
        "JE",
        "UG",
        "UA",
        "UY",
        "UZ",
        "LU",
        "RW",
        "JO",
        "NA",
        "NU",
        "NZ",
        "MM",
        "RO",
        "BL",
        "ST",
        "SH",
        "KN",
        "PM",
        "VC",
        "LC",
        "CX",
        "SM",
        "UN",
        "WS",
        "SV",
        "SD",
        "SR",
        "NF",
        "BJ",
        "LS",
        "ZM",
        "KY",
        "GU",
        "MQ",
        "IM",
        "MT",
        "MW",
        "ML",
        "MK",
        "MY",
        "MV",
        "YT",
        "MH",
        "MG",
        "BV",
    };
  }

  @Override
  protected void loadNameMapJava() {
    super.loadNameMapJava();
    namesMap.put("013", "中美洲");
    namesMap.put("029", "加勒比");
    namesMap.put("053", "澳大拉西亞");
    namesMap.put("061", "波利尼西亞");
    namesMap.put("AE", "阿拉伯聯合酋長國");
    namesMap.put("AG", "安提瓜和巴布達");
    namesMap.put("AW", "阿魯巴");
    namesMap.put("AZ", "阿塞拜疆");
    namesMap.put("BA", "波斯尼亞和黑塞哥維那");
    namesMap.put("BB", "巴巴多斯");
    namesMap.put("BF", "布基納法索");
    namesMap.put("BI", "布隆迪");
    namesMap.put("BJ", "貝寧");
    namesMap.put("BL", "聖巴泰勒米");
    namesMap.put("BV", "鮑威特島");
    namesMap.put("BW", "博茨瓦納");
    namesMap.put("BZ", "伯利茲");
    namesMap.put("CC", "可可斯群島");
    namesMap.put("CI", "科特迪瓦");
    namesMap.put("CP", "克里珀頓島");
    namesMap.put("CR", "哥斯達黎加");
    namesMap.put("CV", "佛得角");
    namesMap.put("CY", "塞浦路斯");
    namesMap.put("DJ", "吉布提");
    namesMap.put("EC", "厄瓜多爾");
    namesMap.put("ER", "厄立特里亞");
    namesMap.put("ET", "埃塞俄比亞");
    namesMap.put("GA", "加蓬");
    namesMap.put("GD", "格林納達");
    namesMap.put("GE", "格魯吉亞");
    namesMap.put("GH", "加納");
    namesMap.put("GM", "岡比亞");
    namesMap.put("GS", "南佐治亞島與南桑威奇群島");
    namesMap.put("GT", "危地馬拉");
    namesMap.put("GW", "幾內亞比紹");
    namesMap.put("GY", "圭亞那");
    namesMap.put("HN", "洪都拉斯");
    namesMap.put("HR", "克羅地亞");
    namesMap.put("IM", "馬恩島");
    namesMap.put("IT", "意大利");
    namesMap.put("KE", "肯雅");
    namesMap.put("KM", "科摩羅");
    namesMap.put("KN", "聖基茨和尼維斯");
    namesMap.put("LA", "老撾");
    namesMap.put("LC", "聖盧西亞");
    namesMap.put("LI", "列支敦士登");
    namesMap.put("LR", "利比里亞");
    namesMap.put("LV", "拉脱維亞");
    namesMap.put("ME", "黑山");
    namesMap.put("ML", "馬里");
    namesMap.put("MR", "毛里塔尼亞");
    namesMap.put("MS", "蒙特塞拉特");
    namesMap.put("MT", "馬耳他");
    namesMap.put("MU", "毛里裘斯");
    namesMap.put("MV", "馬爾代夫");
    namesMap.put("MW", "馬拉維");
    namesMap.put("MZ", "莫桑比克");
    namesMap.put("NE", "尼日爾");
    namesMap.put("NG", "尼日利亞");
    namesMap.put("NR", "瑙魯");
    namesMap.put("PF", "法屬波利尼西亞");
    namesMap.put("PG", "巴布亞新幾內亞");
    namesMap.put("PN", "皮特凱恩島");
    namesMap.put("PS", "巴勒斯坦領土");
    namesMap.put("QA", "卡塔爾");
    namesMap.put("RW", "盧旺達");
    namesMap.put("SA", "沙地阿拉伯");
    namesMap.put("SB", "所羅門群島");
    namesMap.put("SC", "塞舌爾");
    namesMap.put("SI", "斯洛文尼亞");
    namesMap.put("SJ", "斯瓦爾巴特群島及揚馬延島");
    namesMap.put("SL", "塞拉利昂");
    namesMap.put("SO", "索馬里");
    namesMap.put("SR", "蘇里南");
    namesMap.put("ST", "聖多美和普林西比");
    namesMap.put("SZ", "斯威士蘭");
    namesMap.put("TC", "特克斯和凱科斯群島");
    namesMap.put("TD", "乍得");
    namesMap.put("TF", "法屬南部領地");
    namesMap.put("TG", "多哥共和國");
    namesMap.put("TO", "湯加");
    namesMap.put("TT", "千里達和多巴哥");
    namesMap.put("TV", "圖瓦盧");
    namesMap.put("TZ", "坦桑尼亞");
    namesMap.put("VC", "聖文森特和格林納丁斯");
    namesMap.put("VG", "英屬維爾京群島");
    namesMap.put("VI", "美屬維爾京群島");
    namesMap.put("VU", "瓦努阿圖");
    namesMap.put("YE", "也門");
    namesMap.put("YT", "馬約特");
    namesMap.put("ZM", "贊比亞");
    namesMap.put("ZW", "津巴布韋");
  }

  @Override
  protected JavaScriptObject loadNameMapNative() {
    return overrideMap(super.loadNameMapNative(), loadMyNameMap());
  }

  private native JavaScriptObject loadMyNameMap() /*-{
    return {
        "013": "中美洲",
        "029": "加勒比",
        "053": "澳大拉西亞",
        "061": "波利尼西亞",
        "AE": "阿拉伯聯合酋長國",
        "AG": "安提瓜和巴布達",
        "AW": "阿魯巴",
        "AZ": "阿塞拜疆",
        "BA": "波斯尼亞和黑塞哥維那",
        "BB": "巴巴多斯",
        "BF": "布基納法索",
        "BI": "布隆迪",
        "BJ": "貝寧",
        "BL": "聖巴泰勒米",
        "BV": "鮑威特島",
        "BW": "博茨瓦納",
        "BZ": "伯利茲",
        "CC": "可可斯群島",
        "CI": "科特迪瓦",
        "CP": "克里珀頓島",
        "CR": "哥斯達黎加",
        "CV": "佛得角",
        "CY": "塞浦路斯",
        "DJ": "吉布提",
        "EC": "厄瓜多爾",
        "ER": "厄立特里亞",
        "ET": "埃塞俄比亞",
        "GA": "加蓬",
        "GD": "格林納達",
        "GE": "格魯吉亞",
        "GH": "加納",
        "GM": "岡比亞",
        "GS": "南佐治亞島與南桑威奇群島",
        "GT": "危地馬拉",
        "GW": "幾內亞比紹",
        "GY": "圭亞那",
        "HN": "洪都拉斯",
        "HR": "克羅地亞",
        "IM": "馬恩島",
        "IT": "意大利",
        "KE": "肯雅",
        "KM": "科摩羅",
        "KN": "聖基茨和尼維斯",
        "LA": "老撾",
        "LC": "聖盧西亞",
        "LI": "列支敦士登",
        "LR": "利比里亞",
        "LV": "拉脱維亞",
        "ME": "黑山",
        "ML": "馬里",
        "MR": "毛里塔尼亞",
        "MS": "蒙特塞拉特",
        "MT": "馬耳他",
        "MU": "毛里裘斯",
        "MV": "馬爾代夫",
        "MW": "馬拉維",
        "MZ": "莫桑比克",
        "NE": "尼日爾",
        "NG": "尼日利亞",
        "NR": "瑙魯",
        "PF": "法屬波利尼西亞",
        "PG": "巴布亞新幾內亞",
        "PN": "皮特凱恩島",
        "PS": "巴勒斯坦領土",
        "QA": "卡塔爾",
        "RW": "盧旺達",
        "SA": "沙地阿拉伯",
        "SB": "所羅門群島",
        "SC": "塞舌爾",
        "SI": "斯洛文尼亞",
        "SJ": "斯瓦爾巴特群島及揚馬延島",
        "SL": "塞拉利昂",
        "SO": "索馬里",
        "SR": "蘇里南",
        "ST": "聖多美和普林西比",
        "SZ": "斯威士蘭",
        "TC": "特克斯和凱科斯群島",
        "TD": "乍得",
        "TF": "法屬南部領地",
        "TG": "多哥共和國",
        "TO": "湯加",
        "TT": "千里達和多巴哥",
        "TV": "圖瓦盧",
        "TZ": "坦桑尼亞",
        "VC": "聖文森特和格林納丁斯",
        "VG": "英屬維爾京群島",
        "VI": "美屬維爾京群島",
        "VU": "瓦努阿圖",
        "YE": "也門",
        "YT": "馬約特",
        "ZM": "贊比亞",
        "ZW": "津巴布韋"
    };
  }-*/;
}
