/*
 * 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;

// DO NOT EDIT - GENERATED FROM CLDR DATA

/**
 * Default LocalizedNames implementation.
 */
public class DefaultLocalizedNames extends DefaultLocalizedNamesBase {
  @Override
  protected void loadNameMap() {
    super.loadNameMap();
    namesMap.put("001", "World");
    namesMap.put("002", "Africa");
    namesMap.put("003", "North America");
    namesMap.put("005", "South America");
    namesMap.put("009", "Oceania");
    namesMap.put("011", "Western Africa");
    namesMap.put("013", "Central America");
    namesMap.put("014", "Eastern Africa");
    namesMap.put("015", "Northern Africa");
    namesMap.put("017", "Middle Africa");
    namesMap.put("018", "Southern Africa");
    namesMap.put("019", "Americas");
    namesMap.put("021", "Northern America");
    namesMap.put("029", "Caribbean");
    namesMap.put("030", "Eastern Asia");
    namesMap.put("034", "Southern Asia");
    namesMap.put("035", "Southeast Asia");
    namesMap.put("039", "Southern Europe");
    namesMap.put("053", "Australasia");
    namesMap.put("054", "Melanesia");
    namesMap.put("057", "Micronesian Region");
    namesMap.put("061", "Polynesia");
    namesMap.put("142", "Asia");
    namesMap.put("143", "Central Asia");
    namesMap.put("145", "Western Asia");
    namesMap.put("150", "Europe");
    namesMap.put("151", "Eastern Europe");
    namesMap.put("154", "Northern Europe");
    namesMap.put("155", "Western Europe");
    namesMap.put("202", "Sub-Saharan Africa");
    namesMap.put("419", "Latin America");
    namesMap.put("AC", "Ascension Island");
    namesMap.put("AD", "Andorra");
    namesMap.put("AE", "United Arab Emirates");
    namesMap.put("AF", "Afghanistan");
    namesMap.put("AG", "Antigua & Barbuda");
    namesMap.put("AI", "Anguilla");
    namesMap.put("AL", "Albania");
    namesMap.put("AM", "Armenia");
    namesMap.put("AO", "Angola");
    namesMap.put("AQ", "Antarctica");
    namesMap.put("AR", "Argentina");
    namesMap.put("AS", "American Samoa");
    namesMap.put("AT", "Austria");
    namesMap.put("AU", "Australia");
    namesMap.put("AW", "Aruba");
    namesMap.put("AX", "Åland Islands");
    namesMap.put("AZ", "Azerbaijan");
    namesMap.put("BA", "Bosnia & Herzegovina");
    namesMap.put("BB", "Barbados");
    namesMap.put("BD", "Bangladesh");
    namesMap.put("BE", "Belgium");
    namesMap.put("BF", "Burkina Faso");
    namesMap.put("BG", "Bulgaria");
    namesMap.put("BH", "Bahrain");
    namesMap.put("BI", "Burundi");
    namesMap.put("BJ", "Benin");
    namesMap.put("BL", "St. Barthélemy");
    namesMap.put("BM", "Bermuda");
    namesMap.put("BN", "Brunei");
    namesMap.put("BO", "Bolivia");
    namesMap.put("BQ", "Caribbean Netherlands");
    namesMap.put("BR", "Brazil");
    namesMap.put("BS", "Bahamas");
    namesMap.put("BT", "Bhutan");
    namesMap.put("BV", "Bouvet Island");
    namesMap.put("BW", "Botswana");
    namesMap.put("BY", "Belarus");
    namesMap.put("BZ", "Belize");
    namesMap.put("CA", "Canada");
    namesMap.put("CC", "Cocos (Keeling) Islands");
    namesMap.put("CD", "Congo - Kinshasa");
    namesMap.put("CF", "Central African Republic");
    namesMap.put("CG", "Congo - Brazzaville");
    namesMap.put("CH", "Switzerland");
    namesMap.put("CI", "Côte d’Ivoire");
    namesMap.put("CK", "Cook Islands");
    namesMap.put("CL", "Chile");
    namesMap.put("CM", "Cameroon");
    namesMap.put("CN", "China");
    namesMap.put("CO", "Colombia");
    namesMap.put("CP", "Clipperton Island");
    namesMap.put("CR", "Costa Rica");
    namesMap.put("CU", "Cuba");
    namesMap.put("CV", "Cape Verde");
    namesMap.put("CW", "Curaçao");
    namesMap.put("CX", "Christmas Island");
    namesMap.put("CY", "Cyprus");
    namesMap.put("CZ", "Czechia");
    namesMap.put("DE", "Germany");
    namesMap.put("DG", "Diego Garcia");
    namesMap.put("DJ", "Djibouti");
    namesMap.put("DK", "Denmark");
    namesMap.put("DM", "Dominica");
    namesMap.put("DO", "Dominican Republic");
    namesMap.put("DZ", "Algeria");
    namesMap.put("EA", "Ceuta & Melilla");
    namesMap.put("EC", "Ecuador");
    namesMap.put("EE", "Estonia");
    namesMap.put("EG", "Egypt");
    namesMap.put("EH", "Western Sahara");
    namesMap.put("ER", "Eritrea");
    namesMap.put("ES", "Spain");
    namesMap.put("ET", "Ethiopia");
    namesMap.put("EU", "European Union");
    namesMap.put("EZ", "Eurozone");
    namesMap.put("FI", "Finland");
    namesMap.put("FJ", "Fiji");
    namesMap.put("FK", "Falkland Islands");
    namesMap.put("FM", "Micronesia");
    namesMap.put("FO", "Faroe Islands");
    namesMap.put("FR", "France");
    namesMap.put("GA", "Gabon");
    namesMap.put("GB", "United Kingdom");
    namesMap.put("GD", "Grenada");
    namesMap.put("GE", "Georgia");
    namesMap.put("GF", "French Guiana");
    namesMap.put("GG", "Guernsey");
    namesMap.put("GH", "Ghana");
    namesMap.put("GI", "Gibraltar");
    namesMap.put("GL", "Greenland");
    namesMap.put("GM", "Gambia");
    namesMap.put("GN", "Guinea");
    namesMap.put("GP", "Guadeloupe");
    namesMap.put("GQ", "Equatorial Guinea");
    namesMap.put("GR", "Greece");
    namesMap.put("GS", "South Georgia & South Sandwich Islands");
    namesMap.put("GT", "Guatemala");
    namesMap.put("GU", "Guam");
    namesMap.put("GW", "Guinea-Bissau");
    namesMap.put("GY", "Guyana");
    namesMap.put("HK", "Hong Kong SAR China");
    namesMap.put("HM", "Heard & McDonald Islands");
    namesMap.put("HN", "Honduras");
    namesMap.put("HR", "Croatia");
    namesMap.put("HT", "Haiti");
    namesMap.put("HU", "Hungary");
    namesMap.put("IC", "Canary Islands");
    namesMap.put("ID", "Indonesia");
    namesMap.put("IE", "Ireland");
    namesMap.put("IL", "Israel");
    namesMap.put("IM", "Isle of Man");
    namesMap.put("IN", "India");
    namesMap.put("IO", "British Indian Ocean Territory");
    namesMap.put("IQ", "Iraq");
    namesMap.put("IR", "Iran");
    namesMap.put("IS", "Iceland");
    namesMap.put("IT", "Italy");
    namesMap.put("JE", "Jersey");
    namesMap.put("JM", "Jamaica");
    namesMap.put("JO", "Jordan");
    namesMap.put("JP", "Japan");
    namesMap.put("KE", "Kenya");
    namesMap.put("KG", "Kyrgyzstan");
    namesMap.put("KH", "Cambodia");
    namesMap.put("KI", "Kiribati");
    namesMap.put("KM", "Comoros");
    namesMap.put("KN", "St. Kitts & Nevis");
    namesMap.put("KP", "North Korea");
    namesMap.put("KR", "South Korea");
    namesMap.put("KW", "Kuwait");
    namesMap.put("KY", "Cayman Islands");
    namesMap.put("KZ", "Kazakhstan");
    namesMap.put("LA", "Laos");
    namesMap.put("LB", "Lebanon");
    namesMap.put("LC", "St. Lucia");
    namesMap.put("LI", "Liechtenstein");
    namesMap.put("LK", "Sri Lanka");
    namesMap.put("LR", "Liberia");
    namesMap.put("LS", "Lesotho");
    namesMap.put("LT", "Lithuania");
    namesMap.put("LU", "Luxembourg");
    namesMap.put("LV", "Latvia");
    namesMap.put("LY", "Libya");
    namesMap.put("MA", "Morocco");
    namesMap.put("MC", "Monaco");
    namesMap.put("MD", "Moldova");
    namesMap.put("ME", "Montenegro");
    namesMap.put("MF", "St. Martin");
    namesMap.put("MG", "Madagascar");
    namesMap.put("MH", "Marshall Islands");
    namesMap.put("MK", "Macedonia");
    namesMap.put("ML", "Mali");
    namesMap.put("MM", "Myanmar (Burma)");
    namesMap.put("MN", "Mongolia");
    namesMap.put("MO", "Macau SAR China");
    namesMap.put("MP", "Northern Mariana Islands");
    namesMap.put("MQ", "Martinique");
    namesMap.put("MR", "Mauritania");
    namesMap.put("MS", "Montserrat");
    namesMap.put("MT", "Malta");
    namesMap.put("MU", "Mauritius");
    namesMap.put("MV", "Maldives");
    namesMap.put("MW", "Malawi");
    namesMap.put("MX", "Mexico");
    namesMap.put("MY", "Malaysia");
    namesMap.put("MZ", "Mozambique");
    namesMap.put("NA", "Namibia");
    namesMap.put("NC", "New Caledonia");
    namesMap.put("NE", "Niger");
    namesMap.put("NF", "Norfolk Island");
    namesMap.put("NG", "Nigeria");
    namesMap.put("NI", "Nicaragua");
    namesMap.put("NL", "Netherlands");
    namesMap.put("NO", "Norway");
    namesMap.put("NP", "Nepal");
    namesMap.put("NR", "Nauru");
    namesMap.put("NU", "Niue");
    namesMap.put("NZ", "New Zealand");
    namesMap.put("OM", "Oman");
    namesMap.put("PA", "Panama");
    namesMap.put("PE", "Peru");
    namesMap.put("PF", "French Polynesia");
    namesMap.put("PG", "Papua New Guinea");
    namesMap.put("PH", "Philippines");
    namesMap.put("PK", "Pakistan");
    namesMap.put("PL", "Poland");
    namesMap.put("PM", "St. Pierre & Miquelon");
    namesMap.put("PN", "Pitcairn Islands");
    namesMap.put("PR", "Puerto Rico");
    namesMap.put("PS", "Palestinian Territories");
    namesMap.put("PT", "Portugal");
    namesMap.put("PW", "Palau");
    namesMap.put("PY", "Paraguay");
    namesMap.put("QA", "Qatar");
    namesMap.put("QO", "Outlying Oceania");
    namesMap.put("RE", "Réunion");
    namesMap.put("RO", "Romania");
    namesMap.put("RS", "Serbia");
    namesMap.put("RU", "Russia");
    namesMap.put("RW", "Rwanda");
    namesMap.put("SA", "Saudi Arabia");
    namesMap.put("SB", "Solomon Islands");
    namesMap.put("SC", "Seychelles");
    namesMap.put("SD", "Sudan");
    namesMap.put("SE", "Sweden");
    namesMap.put("SG", "Singapore");
    namesMap.put("SH", "St. Helena");
    namesMap.put("SI", "Slovenia");
    namesMap.put("SJ", "Svalbard & Jan Mayen");
    namesMap.put("SK", "Slovakia");
    namesMap.put("SL", "Sierra Leone");
    namesMap.put("SM", "San Marino");
    namesMap.put("SN", "Senegal");
    namesMap.put("SO", "Somalia");
    namesMap.put("SR", "Suriname");
    namesMap.put("SS", "South Sudan");
    namesMap.put("ST", "São Tomé & Príncipe");
    namesMap.put("SV", "El Salvador");
    namesMap.put("SX", "Sint Maarten");
    namesMap.put("SY", "Syria");
    namesMap.put("SZ", "Swaziland");
    namesMap.put("TA", "Tristan da Cunha");
    namesMap.put("TC", "Turks & Caicos Islands");
    namesMap.put("TD", "Chad");
    namesMap.put("TF", "French Southern Territories");
    namesMap.put("TG", "Togo");
    namesMap.put("TH", "Thailand");
    namesMap.put("TJ", "Tajikistan");
    namesMap.put("TK", "Tokelau");
    namesMap.put("TL", "Timor-Leste");
    namesMap.put("TM", "Turkmenistan");
    namesMap.put("TN", "Tunisia");
    namesMap.put("TO", "Tonga");
    namesMap.put("TR", "Turkey");
    namesMap.put("TT", "Trinidad & Tobago");
    namesMap.put("TV", "Tuvalu");
    namesMap.put("TW", "Taiwan");
    namesMap.put("TZ", "Tanzania");
    namesMap.put("UA", "Ukraine");
    namesMap.put("UG", "Uganda");
    namesMap.put("UM", "U.S. Outlying Islands");
    namesMap.put("UN", "United Nations");
    namesMap.put("US", "United States");
    namesMap.put("UY", "Uruguay");
    namesMap.put("UZ", "Uzbekistan");
    namesMap.put("VA", "Vatican City");
    namesMap.put("VC", "St. Vincent & Grenadines");
    namesMap.put("VE", "Venezuela");
    namesMap.put("VG", "British Virgin Islands");
    namesMap.put("VI", "U.S. Virgin Islands");
    namesMap.put("VN", "Vietnam");
    namesMap.put("VU", "Vanuatu");
    namesMap.put("WF", "Wallis & Futuna");
    namesMap.put("WS", "Samoa");
    namesMap.put("XK", "Kosovo");
    namesMap.put("YE", "Yemen");
    namesMap.put("YT", "Mayotte");
    namesMap.put("ZA", "South Africa");
    namesMap.put("ZM", "Zambia");
    namesMap.put("ZW", "Zimbabwe");
    namesMap.put("ZZ", "Unknown Region");
  }

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