diff --git a/COPYRIGHT b/COPYRIGHT
index cfff4675534..10a28002d8e 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -17,6 +17,7 @@ FPDF 1.53 Public domain Yes PDF gene
FPDF_TPL 1.1.2 Apache Software License 2.0 No GPL3 only PDF templates management
FPDI 1.2.1 Apache Software License 2.0 No GPL3 only PDF templates management
FPDI_Protection 1.0.2 Apache Software License 2.0 No GPL3 only PDF encryption (8 files)
+GeoIP x.x Yes GeoIP Maxmind conversion
MagPieRss 0.72 GPL 2.0 Yes Load RSS
NuSoap 0.6.5 LGPL 2.1 Yes Interfaces with third tools
PHP_WriteExcel 0.3.0 LGPL 2.1 Yes Excel files generation
diff --git a/ChangeLog b/ChangeLog
index 6b33f272ba2..6ce6b8391e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -176,6 +176,7 @@ For developers:
- Rewrite clone feature for supplier invoice to work like other clone features.
- First change to manage a future feature "stock PMP value".
- A module can add a new tab in third party view tabs.
+- First change for future geoip module.
***** Changelog for 2.5 compared to 2.4 *****
diff --git a/htdocs/admin/tools/listevents.php b/htdocs/admin/tools/listevents.php
index 9b5e22ce297..8d7dd5b284b 100644
--- a/htdocs/admin/tools/listevents.php
+++ b/htdocs/admin/tools/listevents.php
@@ -130,6 +130,7 @@ if ($result)
print ' ';
print '';
+ // IP
print '
';
print $langs->trans("TablesTarget");
print ' ';
$listtables=array();
@@ -1434,11 +1436,13 @@ if ($step == 6 && $datatoimport)
$maxnbofwarnings=empty($conf->global->IMPORT_MAX_NB_OF_WARNINGS)?100:$conf->global->IMPORT_MAX_NB_OF_WARNINGS;
$nboferrors=0;
$nbofwarnings=0;
-
+
+ $importid=dol_print_date(dol_now('tzserver'),'%Y%m%d%H%M%S');
+
$db->begin();
//var_dump($array_match_file_to_database);
-
+
// Open input file
$pathfile=$conf->import->dir_temp.'/'.$filetoimport;
$result=$obj->import_open_file($pathfile,$langs);
@@ -1449,14 +1453,14 @@ if ($step == 6 && $datatoimport)
while ($arrayrecord=$obj->import_read_record())
{
$sourcelinenb++;
- $result=$obj->import_insert($arrayrecord,$array_match_file_to_database,$objimport,sizeof($fieldssource));
+ $result=$obj->import_insert($arrayrecord,$array_match_file_to_database,$objimport,sizeof($fieldssource),$importid);
if (sizeof($obj->errors))
{
- $arrayoferrors[$sourcelinenb]=$obj->errors;
+ $arrayoferrors[$sourcelinenb]=$obj->errors;
}
if (sizeof($obj->warnings))
{
- $arrayofwarnings[$sourcelinenb]=$obj->warnings;
+ $arrayofwarnings[$sourcelinenb]=$obj->warnings;
}
}
// Close file
diff --git a/htdocs/includes/geoip/README.txt b/htdocs/includes/geoip/README.txt
new file mode 100644
index 00000000000..8456d2b0e35
--- /dev/null
+++ b/htdocs/includes/geoip/README.txt
@@ -0,0 +1,43 @@
+Requirements
+
+None (only the 'GeoIP.dat' file is needed). To download a free GeoIP Standard Country
+database, go to
+http://maxmind.com/download/geoip/database/
+
+Install
+
+Just place the 'geoip.inc' file somewhere according to the 'include_path' directive of
+your 'php.ini' file, or just place it in the same directory as your PHP scripts.
+
+Usage
+
+Gets country name by hostname :
+
+include("geoip.inc");
+
+$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);
+
+echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" .
+ geoip_country_name_by_addr($gi, "24.24.24.24") . "\n";
+echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" .
+ geoip_country_name_by_addr($gi, "80.24.24.24") . "\n";
+
+geoip_close($gi);
+
+Memory Caching:
+To enable memory caching, pass GEOIP_SHARED_MEMORY or
+GEOIP_MEMORY_CACHE to the second argument of geoip_open
+
+For GEOIP_SHARED_MEMORY, requires php >= 4.0.4,
+and --enable-shmop passed at configure time, see
+http://us2.php.net/manual/en/ref.shmop.php
+In addition, you should call geoip_load_shared_mem
+before calling geoip_open. See sample_city.php for an
+example of shared memory caching.
+
+Working with PHP5.
+geoip_country_code_by_addr should work
+with PHP. For help with the other
+routines, please contact support@maxmind.com
+
+Thanks to Jim Winstead.
diff --git a/htdocs/includes/geoip/geoip.inc b/htdocs/includes/geoip/geoip.inc
new file mode 100644
index 00000000000..6f1c45d135d
--- /dev/null
+++ b/htdocs/includes/geoip/geoip.inc
@@ -0,0 +1,501 @@
+ 0, "AP" => 1, "EU" => 2, "AD" => 3, "AE" => 4, "AF" => 5,
+"AG" => 6, "AI" => 7, "AL" => 8, "AM" => 9, "AN" => 10, "AO" => 11,
+"AQ" => 12, "AR" => 13, "AS" => 14, "AT" => 15, "AU" => 16, "AW" => 17,
+"AZ" => 18, "BA" => 19, "BB" => 20, "BD" => 21, "BE" => 22, "BF" => 23,
+"BG" => 24, "BH" => 25, "BI" => 26, "BJ" => 27, "BM" => 28, "BN" => 29,
+"BO" => 30, "BR" => 31, "BS" => 32, "BT" => 33, "BV" => 34, "BW" => 35,
+"BY" => 36, "BZ" => 37, "CA" => 38, "CC" => 39, "CD" => 40, "CF" => 41,
+"CG" => 42, "CH" => 43, "CI" => 44, "CK" => 45, "CL" => 46, "CM" => 47,
+"CN" => 48, "CO" => 49, "CR" => 50, "CU" => 51, "CV" => 52, "CX" => 53,
+"CY" => 54, "CZ" => 55, "DE" => 56, "DJ" => 57, "DK" => 58, "DM" => 59,
+"DO" => 60, "DZ" => 61, "EC" => 62, "EE" => 63, "EG" => 64, "EH" => 65,
+"ER" => 66, "ES" => 67, "ET" => 68, "FI" => 69, "FJ" => 70, "FK" => 71,
+"FM" => 72, "FO" => 73, "FR" => 74, "FX" => 75, "GA" => 76, "GB" => 77,
+"GD" => 78, "GE" => 79, "GF" => 80, "GH" => 81, "GI" => 82, "GL" => 83,
+"GM" => 84, "GN" => 85, "GP" => 86, "GQ" => 87, "GR" => 88, "GS" => 89,
+"GT" => 90, "GU" => 91, "GW" => 92, "GY" => 93, "HK" => 94, "HM" => 95,
+"HN" => 96, "HR" => 97, "HT" => 98, "HU" => 99, "ID" => 100, "IE" => 101,
+"IL" => 102, "IN" => 103, "IO" => 104, "IQ" => 105, "IR" => 106, "IS" => 107,
+"IT" => 108, "JM" => 109, "JO" => 110, "JP" => 111, "KE" => 112, "KG" => 113,
+"KH" => 114, "KI" => 115, "KM" => 116, "KN" => 117, "KP" => 118, "KR" => 119,
+"KW" => 120, "KY" => 121, "KZ" => 122, "LA" => 123, "LB" => 124, "LC" => 125,
+"LI" => 126, "LK" => 127, "LR" => 128, "LS" => 129, "LT" => 130, "LU" => 131,
+"LV" => 132, "LY" => 133, "MA" => 134, "MC" => 135, "MD" => 136, "MG" => 137,
+"MH" => 138, "MK" => 139, "ML" => 140, "MM" => 141, "MN" => 142, "MO" => 143,
+"MP" => 144, "MQ" => 145, "MR" => 146, "MS" => 147, "MT" => 148, "MU" => 149,
+"MV" => 150, "MW" => 151, "MX" => 152, "MY" => 153, "MZ" => 154, "NA" => 155,
+"NC" => 156, "NE" => 157, "NF" => 158, "NG" => 159, "NI" => 160, "NL" => 161,
+"NO" => 162, "NP" => 163, "NR" => 164, "NU" => 165, "NZ" => 166, "OM" => 167,
+"PA" => 168, "PE" => 169, "PF" => 170, "PG" => 171, "PH" => 172, "PK" => 173,
+"PL" => 174, "PM" => 175, "PN" => 176, "PR" => 177, "PS" => 178, "PT" => 179,
+"PW" => 180, "PY" => 181, "QA" => 182, "RE" => 183, "RO" => 184, "RU" => 185,
+"RW" => 186, "SA" => 187, "SB" => 188, "SC" => 189, "SD" => 190, "SE" => 191,
+"SG" => 192, "SH" => 193, "SI" => 194, "SJ" => 195, "SK" => 196, "SL" => 197,
+"SM" => 198, "SN" => 199, "SO" => 200, "SR" => 201, "ST" => 202, "SV" => 203,
+"SY" => 204, "SZ" => 205, "TC" => 206, "TD" => 207, "TF" => 208, "TG" => 209,
+"TH" => 210, "TJ" => 211, "TK" => 212, "TM" => 213, "TN" => 214, "TO" => 215,
+"TL" => 216, "TR" => 217, "TT" => 218, "TV" => 219, "TW" => 220, "TZ" => 221,
+"UA" => 222, "UG" => 223, "UM" => 224, "US" => 225, "UY" => 226, "UZ" => 227,
+"VA" => 228, "VC" => 229, "VE" => 230, "VG" => 231, "VI" => 232, "VN" => 233,
+"VU" => 234, "WF" => 235, "WS" => 236, "YE" => 237, "YT" => 238, "RS" => 239,
+"ZA" => 240, "ZM" => 241, "ME" => 242, "ZW" => 243, "A1" => 244, "A2" => 245,
+"O1" => 246, "AX" => 247, "GG" => 248, "IM" => 249, "JE" => 250, "BL" => 251,
+"MF" => 252
+);
+ var $GEOIP_COUNTRY_CODES = array(
+"", "AP", "EU", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ",
+"AR", "AS", "AT", "AU", "AW", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH",
+"BI", "BJ", "BM", "BN", "BO", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA",
+"CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU",
+"CV", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG",
+"EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "FX", "GA", "GB",
+"GD", "GE", "GF", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT",
+"GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IN",
+"IO", "IQ", "IR", "IS", "IT", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM",
+"KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS",
+"LT", "LU", "LV", "LY", "MA", "MC", "MD", "MG", "MH", "MK", "ML", "MM", "MN",
+"MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA",
+"NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA",
+"PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY",
+"QA", "RE", "RO", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI",
+"SJ", "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", "SY", "SZ", "TC", "TD",
+"TF", "TG", "TH", "TJ", "TK", "TM", "TN", "TO", "TL", "TR", "TT", "TV", "TW",
+"TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN",
+"VU", "WF", "WS", "YE", "YT", "RS", "ZA", "ZM", "ME", "ZW", "A1", "A2", "O1",
+"AX", "GG", "IM", "JE", "BL", "MF"
+);
+ var $GEOIP_COUNTRY_CODES3 = array(
+"","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","ANT","AGO","AQ","ARG",
+"ASM","AUT","AUS","ABW","AZE","BIH","BRB","BGD","BEL","BFA","BGR","BHR","BDI",
+"BEN","BMU","BRN","BOL","BRA","BHS","BTN","BV","BWA","BLR","BLZ","CAN","CC",
+"COD","CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI","CUB","CPV",
+"CX","CYP","CZE","DEU","DJI","DNK","DMA","DOM","DZA","ECU","EST","EGY","ESH",
+"ERI","ESP","ETH","FIN","FJI","FLK","FSM","FRO","FRA","FX","GAB","GBR","GRD",
+"GEO","GUF","GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","GS","GTM","GUM",
+"GNB","GUY","HKG","HM","HND","HRV","HTI","HUN","IDN","IRL","ISR","IND","IO",
+"IRQ","IRN","ISL","ITA","JAM","JOR","JPN","KEN","KGZ","KHM","KIR","COM","KNA",
+"PRK","KOR","KWT","CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU",
+"LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI","MMR","MNG","MAC",
+"MNP","MTQ","MRT","MSR","MLT","MUS","MDV","MWI","MEX","MYS","MOZ","NAM","NCL",
+"NER","NFK","NGA","NIC","NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER",
+"PYF","PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW","PRY","QAT",
+"REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN","SWE","SGP","SHN","SVN","SJM",
+"SVK","SLE","SMR","SEN","SOM","SUR","STP","SLV","SYR","SWZ","TCA","TCD","TF",
+"TGO","THA","TJK","TKL","TLS","TKM","TUN","TON","TUR","TTO","TUV","TWN","TZA",
+"UKR","UGA","UM","USA","URY","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT",
+"WLF","WSM","YEM","YT","SRB","ZAF","ZMB","MNE","ZWE","A1","A2","O1",
+"ALA","GGY","IMN","JEY","BLM","MAF"
+ );
+ var $GEOIP_COUNTRY_NAMES = array(
+"", "Asia/Pacific Region", "Europe", "Andorra", "United Arab Emirates",
+"Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", "Armenia",
+"Netherlands Antilles", "Angola", "Antarctica", "Argentina", "American Samoa",
+"Austria", "Australia", "Aruba", "Azerbaijan", "Bosnia and Herzegovina",
+"Barbados", "Bangladesh", "Belgium", "Burkina Faso", "Bulgaria", "Bahrain",
+"Burundi", "Benin", "Bermuda", "Brunei Darussalam", "Bolivia", "Brazil",
+"Bahamas", "Bhutan", "Bouvet Island", "Botswana", "Belarus", "Belize",
+"Canada", "Cocos (Keeling) Islands", "Congo, The Democratic Republic of the",
+"Central African Republic", "Congo", "Switzerland", "Cote D'Ivoire", "Cook Islands",
+"Chile", "Cameroon", "China", "Colombia", "Costa Rica", "Cuba", "Cape Verde",
+"Christmas Island", "Cyprus", "Czech Republic", "Germany", "Djibouti",
+"Denmark", "Dominica", "Dominican Republic", "Algeria", "Ecuador", "Estonia",
+"Egypt", "Western Sahara", "Eritrea", "Spain", "Ethiopia", "Finland", "Fiji",
+"Falkland Islands (Malvinas)", "Micronesia, Federated States of", "Faroe Islands",
+"France", "France, Metropolitan", "Gabon", "United Kingdom",
+"Grenada", "Georgia", "French Guiana", "Ghana", "Gibraltar", "Greenland",
+"Gambia", "Guinea", "Guadeloupe", "Equatorial Guinea", "Greece", "South Georgia and the South Sandwich Islands",
+"Guatemala", "Guam", "Guinea-Bissau",
+"Guyana", "Hong Kong", "Heard Island and McDonald Islands", "Honduras",
+"Croatia", "Haiti", "Hungary", "Indonesia", "Ireland", "Israel", "India",
+"British Indian Ocean Territory", "Iraq", "Iran, Islamic Republic of",
+"Iceland", "Italy", "Jamaica", "Jordan", "Japan", "Kenya", "Kyrgyzstan",
+"Cambodia", "Kiribati", "Comoros", "Saint Kitts and Nevis", "Korea, Democratic People's Republic of",
+"Korea, Republic of", "Kuwait", "Cayman Islands",
+"Kazakhstan", "Lao People's Democratic Republic", "Lebanon", "Saint Lucia",
+"Liechtenstein", "Sri Lanka", "Liberia", "Lesotho", "Lithuania", "Luxembourg",
+"Latvia", "Libyan Arab Jamahiriya", "Morocco", "Monaco", "Moldova, Republic of",
+"Madagascar", "Marshall Islands", "Macedonia",
+"Mali", "Myanmar", "Mongolia", "Macau", "Northern Mariana Islands",
+"Martinique", "Mauritania", "Montserrat", "Malta", "Mauritius", "Maldives",
+"Malawi", "Mexico", "Malaysia", "Mozambique", "Namibia", "New Caledonia",
+"Niger", "Norfolk Island", "Nigeria", "Nicaragua", "Netherlands", "Norway",
+"Nepal", "Nauru", "Niue", "New Zealand", "Oman", "Panama", "Peru", "French Polynesia",
+"Papua New Guinea", "Philippines", "Pakistan", "Poland", "Saint Pierre and Miquelon",
+"Pitcairn Islands", "Puerto Rico", "Palestinian Territory",
+"Portugal", "Palau", "Paraguay", "Qatar", "Reunion", "Romania",
+"Russian Federation", "Rwanda", "Saudi Arabia", "Solomon Islands",
+"Seychelles", "Sudan", "Sweden", "Singapore", "Saint Helena", "Slovenia",
+"Svalbard and Jan Mayen", "Slovakia", "Sierra Leone", "San Marino", "Senegal",
+"Somalia", "Suriname", "Sao Tome and Principe", "El Salvador", "Syrian Arab Republic",
+"Swaziland", "Turks and Caicos Islands", "Chad", "French Southern Territories",
+"Togo", "Thailand", "Tajikistan", "Tokelau", "Turkmenistan",
+"Tunisia", "Tonga", "Timor-Leste", "Turkey", "Trinidad and Tobago", "Tuvalu",
+"Taiwan", "Tanzania, United Republic of", "Ukraine",
+"Uganda", "United States Minor Outlying Islands", "United States", "Uruguay",
+"Uzbekistan", "Holy See (Vatican City State)", "Saint Vincent and the Grenadines",
+"Venezuela", "Virgin Islands, British", "Virgin Islands, U.S.",
+"Vietnam", "Vanuatu", "Wallis and Futuna", "Samoa", "Yemen", "Mayotte",
+"Serbia", "South Africa", "Zambia", "Montenegro", "Zimbabwe",
+"Anonymous Proxy","Satellite Provider","Other",
+"Aland Islands","Guernsey","Isle of Man","Jersey","Saint Barthelemy","Saint Martin"
+);
+}
+function geoip_load_shared_mem ($file) {
+
+ $fp = fopen($file, "rb");
+ if (!$fp) {
+ print "error opening $file: $php_errormsg\n";
+ exit;
+ }
+ $s_array = fstat($fp);
+ $size = $s_array['size'];
+ if ($shmid = @shmop_open (GEOIP_SHM_KEY, "w", 0, 0)) {
+ shmop_delete ($shmid);
+ shmop_close ($shmid);
+ }
+ $shmid = shmop_open (GEOIP_SHM_KEY, "c", 0644, $size);
+ shmop_write ($shmid, fread($fp, $size), 0);
+ shmop_close ($shmid);
+}
+
+function _setup_segments($gi){
+ $gi->databaseType = GEOIP_COUNTRY_EDITION;
+ $gi->record_length = STANDARD_RECORD_LENGTH;
+ if ($gi->flags & GEOIP_SHARED_MEMORY) {
+ $offset = @shmop_size ($gi->shmid) - 3;
+ for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) {
+ $delim = @shmop_read ($gi->shmid, $offset, 3);
+ $offset += 3;
+ if ($delim == (chr(255).chr(255).chr(255))) {
+ $gi->databaseType = ord(@shmop_read ($gi->shmid, $offset, 1));
+ $offset++;
+
+ if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
+ $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0;
+ } else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1){
+ $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1;
+ } else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)||
+ ($gi->databaseType == GEOIP_CITY_EDITION_REV1)
+ || ($gi->databaseType == GEOIP_ORG_EDITION)
+ || ($gi->databaseType == GEOIP_ISP_EDITION)
+ || ($gi->databaseType == GEOIP_ASNUM_EDITION)){
+ $gi->databaseSegments = 0;
+ $buf = @shmop_read ($gi->shmid, $offset, SEGMENT_RECORD_LENGTH);
+ for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
+ $gi->databaseSegments += (ord($buf[$j]) << ($j * 8));
+ }
+ if (($gi->databaseType == GEOIP_ORG_EDITION)||
+ ($gi->databaseType == GEOIP_ISP_EDITION)) {
+ $gi->record_length = ORG_RECORD_LENGTH;
+ }
+ }
+ break;
+ } else {
+ $offset -= 4;
+ }
+ }
+ if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
+ ($gi->databaseType == GEOIP_PROXY_EDITION)||
+ ($gi->databaseType == GEOIP_NETSPEED_EDITION)){
+ $gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
+ }
+ } else {
+ $filepos = ftell($gi->filehandle);
+ fseek($gi->filehandle, -3, SEEK_END);
+ for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) {
+ $delim = fread($gi->filehandle,3);
+ if ($delim == (chr(255).chr(255).chr(255))){
+ $gi->databaseType = ord(fread($gi->filehandle,1));
+ if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
+ $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0;
+ }
+ else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1){
+ $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1;
+ } else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0) ||
+ ($gi->databaseType == GEOIP_CITY_EDITION_REV1) ||
+ ($gi->databaseType == GEOIP_ORG_EDITION) ||
+ ($gi->databaseType == GEOIP_ISP_EDITION) ||
+ ($gi->databaseType == GEOIP_ASNUM_EDITION)){
+ $gi->databaseSegments = 0;
+ $buf = fread($gi->filehandle,SEGMENT_RECORD_LENGTH);
+ for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
+ $gi->databaseSegments += (ord($buf[$j]) << ($j * 8));
+ }
+ if ($gi->databaseType == GEOIP_ORG_EDITION ||
+ $gi->databaseType == GEOIP_ISP_EDITION) {
+ $gi->record_length = ORG_RECORD_LENGTH;
+ }
+ }
+ break;
+ } else {
+ fseek($gi->filehandle, -4, SEEK_CUR);
+ }
+ }
+ if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
+ ($gi->databaseType == GEOIP_PROXY_EDITION)||
+ ($gi->databaseType == GEOIP_NETSPEED_EDITION)){
+ $gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
+ }
+ fseek($gi->filehandle,$filepos,SEEK_SET);
+ }
+ return $gi;
+}
+
+function geoip_open($filename, $flags) {
+ $gi = new GeoIP;
+ $gi->flags = $flags;
+ if ($gi->flags & GEOIP_SHARED_MEMORY) {
+ $gi->shmid = @shmop_open (GEOIP_SHM_KEY, "a", 0, 0);
+ } else {
+ $gi->filehandle = fopen($filename,"rb") or die( "Can not open $filename\n" );
+ if ($gi->flags & GEOIP_MEMORY_CACHE) {
+ $s_array = fstat($gi->filehandle);
+ $gi->memory_buffer = fread($gi->filehandle, $s_array['size']);
+ }
+ }
+
+ $gi = _setup_segments($gi);
+ return $gi;
+}
+
+function geoip_close($gi) {
+ if ($gi->flags & GEOIP_SHARED_MEMORY) {
+ return true;
+ }
+
+ return fclose($gi->filehandle);
+}
+
+function geoip_country_id_by_name($gi, $name) {
+ $addr = gethostbyname($name);
+ if (!$addr || $addr == $name) {
+ return false;
+ }
+ return geoip_country_id_by_addr($gi, $addr);
+}
+
+function geoip_country_code_by_name($gi, $name) {
+ $country_id = geoip_country_id_by_name($gi,$name);
+ if ($country_id !== false) {
+ return $gi->GEOIP_COUNTRY_CODES[$country_id];
+ }
+ return false;
+}
+
+function geoip_country_name_by_name($gi, $name) {
+ $country_id = geoip_country_id_by_name($gi,$name);
+ if ($country_id !== false) {
+ return $gi->GEOIP_COUNTRY_NAMES[$country_id];
+ }
+ return false;
+}
+
+function geoip_country_id_by_addr($gi, $addr) {
+ $ipnum = ip2long($addr);
+ return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
+}
+
+function geoip_country_code_by_addr($gi, $addr) {
+ if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
+ $record = geoip_record_by_addr($gi,$addr);
+ if ( $record !== false ) {
+ return $record->country_code;
+ }
+ } else {
+ $country_id = geoip_country_id_by_addr($gi,$addr);
+ if ($country_id !== false) {
+ return $gi->GEOIP_COUNTRY_CODES[$country_id];
+ }
+ }
+ return false;
+}
+
+function geoip_country_name_by_addr($gi, $addr) {
+ if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
+ $record = geoip_record_by_addr($gi,$addr);
+ return $record->country_name;
+ } else {
+ $country_id = geoip_country_id_by_addr($gi,$addr);
+ if ($country_id !== false) {
+ return $gi->GEOIP_COUNTRY_NAMES[$country_id];
+ }
+ }
+ return false;
+}
+
+function _geoip_seek_country($gi, $ipnum) {
+ $offset = 0;
+ for ($depth = 31; $depth >= 0; --$depth) {
+ if ($gi->flags & GEOIP_MEMORY_CACHE) {
+ $buf = substr($gi->memory_buffer,
+ 2 * $gi->record_length * $offset,
+ 2 * $gi->record_length);
+ } elseif ($gi->flags & GEOIP_SHARED_MEMORY) {
+ $buf = @shmop_read ($gi->shmid,
+ 2 * $gi->record_length * $offset,
+ 2 * $gi->record_length );
+ } else {
+ fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0
+ or die("fseek failed");
+ $buf = fread($gi->filehandle, 2 * $gi->record_length);
+ }
+ $x = array(0,0);
+ for ($i = 0; $i < 2; ++$i) {
+ for ($j = 0; $j < $gi->record_length; ++$j) {
+ $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8);
+ }
+ }
+ if ($ipnum & (1 << $depth)) {
+ if ($x[1] >= $gi->databaseSegments) {
+ return $x[1];
+ }
+ $offset = $x[1];
+ } else {
+ if ($x[0] >= $gi->databaseSegments) {
+ return $x[0];
+ }
+ $offset = $x[0];
+ }
+ }
+ trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR);
+ return false;
+}
+
+function _get_org($gi,$ipnum){
+ $seek_org = _geoip_seek_country($gi,$ipnum);
+ if ($seek_org == $gi->databaseSegments) {
+ return NULL;
+ }
+ $record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments;
+ if ($gi->flags & GEOIP_SHARED_MEMORY) {
+ $org_buf = @shmop_read ($gi->shmid, $record_pointer, MAX_ORG_RECORD_LENGTH);
+ } else {
+ fseek($gi->filehandle, $record_pointer, SEEK_SET);
+ $org_buf = fread($gi->filehandle,MAX_ORG_RECORD_LENGTH);
+ }
+ $org_buf = substr($org_buf, 0, strpos($org_buf, 0));
+ return $org_buf;
+}
+
+function geoip_org_by_addr ($gi,$addr) {
+ if ($addr == NULL) {
+ return 0;
+ }
+ $ipnum = ip2long($addr);
+ return _get_org($gi, $ipnum);
+}
+
+function _get_region($gi,$ipnum){
+ if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
+ $seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0;
+ if ($seek_region >= 1000){
+ $country_code = "US";
+ $region = chr(($seek_region - 1000)/26 + 65) . chr(($seek_region - 1000)%26 + 65);
+ } else {
+ $country_code = $gi->GEOIP_COUNTRY_CODES[$seek_region];
+ $region = "";
+ }
+ return array ($country_code,$region);
+ } else if ($gi->databaseType == GEOIP_REGION_EDITION_REV1) {
+ $seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV1;
+ //print $seek_region;
+ if ($seek_region < US_OFFSET){
+ $country_code = "";
+ $region = "";
+ } else if ($seek_region < CANADA_OFFSET) {
+ $country_code = "US";
+ $region = chr(($seek_region - US_OFFSET)/26 + 65) . chr(($seek_region - US_OFFSET)%26 + 65);
+ } else if ($seek_region < WORLD_OFFSET) {
+ $country_code = "CA";
+ $region = chr(($seek_region - CANADA_OFFSET)/26 + 65) . chr(($seek_region - CANADA_OFFSET)%26 + 65);
+ } else {
+ $country_code = $gi->GEOIP_COUNTRY_CODES[($seek_region - WORLD_OFFSET) / FIPS_RANGE];
+ $region = "";
+ }
+ return array ($country_code,$region);
+ }
+}
+
+function geoip_region_by_addr ($gi,$addr) {
+ if ($addr == NULL) {
+ return 0;
+ }
+ $ipnum = ip2long($addr);
+ return _get_region($gi, $ipnum);
+}
+
+function getdnsattributes ($l,$ip){
+ $r = new Net_DNS_Resolver();
+ $r->nameservers = array("ws1.maxmind.com");
+ $p = $r->search($l."." . $ip .".s.maxmind.com","TXT","IN");
+ $str = is_object($p->answer[0])?$p->answer[0]->string():'';
+ ereg("\"(.*)\"",$str,$regs);
+ $str = $regs[1];
+ return $str;
+}
+
+?>
diff --git a/htdocs/includes/geoip/geoipcity.inc b/htdocs/includes/geoip/geoipcity.inc
new file mode 100644
index 00000000000..3c21c694cab
--- /dev/null
+++ b/htdocs/includes/geoip/geoipcity.inc
@@ -0,0 +1,208 @@
+country_code = $value;
+ }
+ if ($key == "ci"){
+ $record->city = $value;
+ }
+ if ($key == "re"){
+ $record->region = $value;
+ }
+ if ($key == "ac"){
+ $record->areacode = $value;
+ }
+ if ($key == "dm" || $key == "me" ){
+ $record->dmacode = $value;
+ $record->metrocode = $value;
+ }
+ if ($key == "is"){
+ $record->isp = $value;
+ }
+ if ($key == "or"){
+ $record->org = $value;
+ }
+ if ($key == "zi"){
+ $record->postal_code = $value;
+ }
+ if ($key == "la"){
+ $record->latitude = $value;
+ }
+ if ($key == "lo"){
+ $record->longitude = $value;
+ }
+ }
+ $number = $GLOBALS['GEOIP_COUNTRY_CODE_TO_NUMBER'][$record->country_code];
+ $record->country_code3 = $GLOBALS['GEOIP_COUNTRY_CODES3'][$number];
+ $record->country_name = $GLOBALS['GEOIP_COUNTRY_NAMES'][$number];
+ if ($record->region != "") {
+ if (($record->country_code == "US") || ($record->country_code == "CA")){
+ $record->regionname = $GLOBALS['ISO'][$record->country_code][$record->region];
+ } else {
+ $record->regionname = $GLOBALS['FIPS'][$record->country_code][$record->region];
+ }
+ }
+ return $record;
+}
+
+function _get_record($gi,$ipnum){
+ $seek_country = _geoip_seek_country($gi,$ipnum);
+ if ($seek_country == $gi->databaseSegments) {
+ return NULL;
+ }
+ $record_pointer = $seek_country + (2 * $gi->record_length - 1) * $gi->databaseSegments;
+
+ if ($gi->flags & GEOIP_MEMORY_CACHE) {
+ $record_buf = substr($gi->memory_buffer,$record_pointer,FULL_RECORD_LENGTH);
+ } elseif ($gi->flags & GEOIP_SHARED_MEMORY){
+ $record_buf = @shmop_read($gi->shmid,$record_pointer,FULL_RECORD_LENGTH);
+ } else {
+ fseek($gi->filehandle, $record_pointer, SEEK_SET);
+ $record_buf = fread($gi->filehandle,FULL_RECORD_LENGTH);
+ }
+ $record = new geoiprecord;
+ $record_buf_pos = 0;
+ $char = ord(substr($record_buf,$record_buf_pos,1));
+ $record->country_code = $gi->GEOIP_COUNTRY_CODES[$char];
+ $record->country_code3 = $gi->GEOIP_COUNTRY_CODES3[$char];
+ $record->country_name = $gi->GEOIP_COUNTRY_NAMES[$char];
+ $record_buf_pos++;
+ $str_length = 0;
+ // Get region
+ $char = ord(substr($record_buf,$record_buf_pos+$str_length,1));
+ while ($char != 0){
+ $str_length++;
+ $char = ord(substr($record_buf,$record_buf_pos+$str_length,1));
+ }
+ if ($str_length > 0){
+ $record->region = substr($record_buf,$record_buf_pos,$str_length);
+ }
+ $record_buf_pos += $str_length + 1;
+ $str_length = 0;
+ // Get city
+ $char = ord(substr($record_buf,$record_buf_pos+$str_length,1));
+ while ($char != 0){
+ $str_length++;
+ $char = ord(substr($record_buf,$record_buf_pos+$str_length,1));
+ }
+ if ($str_length > 0){
+ $record->city = substr($record_buf,$record_buf_pos,$str_length);
+ }
+ $record_buf_pos += $str_length + 1;
+ $str_length = 0;
+ // Get postal code
+ $char = ord(substr($record_buf,$record_buf_pos+$str_length,1));
+ while ($char != 0){
+ $str_length++;
+ $char = ord(substr($record_buf,$record_buf_pos+$str_length,1));
+ }
+ if ($str_length > 0){
+ $record->postal_code = substr($record_buf,$record_buf_pos,$str_length);
+ }
+ $record_buf_pos += $str_length + 1;
+ $str_length = 0;
+ // Get latitude and longitude
+ $latitude = 0;
+ $longitude = 0;
+ for ($j = 0;$j < 3; ++$j){
+ $char = ord(substr($record_buf,$record_buf_pos++,1));
+ $latitude += ($char << ($j * 8));
+ }
+ $record->latitude = ($latitude/10000) - 180;
+ for ($j = 0;$j < 3; ++$j){
+ $char = ord(substr($record_buf,$record_buf_pos++,1));
+ $longitude += ($char << ($j * 8));
+ }
+ $record->longitude = ($longitude/10000) - 180;
+ if (GEOIP_CITY_EDITION_REV1 == $gi->databaseType){
+ $metroarea_combo = 0;
+ if ($record->country_code == "US"){
+ for ($j = 0;$j < 3;++$j){
+ $char = ord(substr($record_buf,$record_buf_pos++,1));
+ $metroarea_combo += ($char << ($j * 8));
+ }
+ $record->metro_code = $record->dma_code = floor($metroarea_combo/1000);
+ $record->area_code = $metroarea_combo%1000;
+ }
+ }
+ return $record;
+}
+
+function GeoIP_record_by_addr ($gi,$addr){
+ if ($addr == NULL){
+ return 0;
+ }
+ $ipnum = ip2long($addr);
+ return _get_record($gi, $ipnum);
+}
+
+?>
diff --git a/htdocs/includes/geoip/geoipregionvars.php b/htdocs/includes/geoip/geoipregionvars.php
new file mode 100644
index 00000000000..7747c668af9
--- /dev/null
+++ b/htdocs/includes/geoip/geoipregionvars.php
@@ -0,0 +1,4456 @@
+ array(
+ "02" => "Canillo",
+ "03" => "Encamp",
+ "04" => "La Massana",
+ "05" => "Ordino",
+ "06" => "Sant Julia de Loria",
+ "07" => "Andorra la Vella",
+ "08" => "Escaldes-Engordany"),
+"AE" => array(
+ "01" => "Abu Dhabi",
+ "02" => "Ajman",
+ "03" => "Dubai",
+ "04" => "Fujairah",
+ "05" => "Ras Al Khaimah",
+ "06" => "Sharjah",
+ "07" => "Umm Al Quwain"),
+"AF" => array(
+ "01" => "Badakhshan",
+ "02" => "Badghis",
+ "03" => "Baghlan",
+ "05" => "Bamian",
+ "06" => "Farah",
+ "07" => "Faryab",
+ "08" => "Ghazni",
+ "09" => "Ghowr",
+ "10" => "Helmand",
+ "11" => "Herat",
+ "13" => "Kabol",
+ "14" => "Kapisa",
+ "15" => "Konar",
+ "16" => "Laghman",
+ "17" => "Lowgar",
+ "18" => "Nangarhar",
+ "19" => "Nimruz",
+ "21" => "Paktia",
+ "22" => "Parvan",
+ "23" => "Kandahar",
+ "24" => "Kondoz",
+ "26" => "Takhar",
+ "27" => "Vardak",
+ "28" => "Zabol",
+ "29" => "Paktika",
+ "30" => "Balkh",
+ "31" => "Jowzjan",
+ "32" => "Samangan",
+ "33" => "Sar-e Pol",
+ "34" => "Konar",
+ "35" => "Laghman",
+ "36" => "Paktia",
+ "37" => "Khowst",
+ "38" => "Nurestan",
+ "39" => "Oruzgan",
+ "40" => "Parvan",
+ "41" => "Daykondi",
+ "42" => "Panjshir"),
+"AG" => array(
+ "01" => "Barbuda",
+ "03" => "Saint George",
+ "04" => "Saint John",
+ "05" => "Saint Mary",
+ "06" => "Saint Paul",
+ "07" => "Saint Peter",
+ "08" => "Saint Philip"),
+"AL" => array(
+ "40" => "Berat",
+ "41" => "Diber",
+ "42" => "Durres",
+ "43" => "Elbasan",
+ "44" => "Fier",
+ "45" => "Gjirokaster",
+ "46" => "Korce",
+ "47" => "Kukes",
+ "48" => "Lezhe",
+ "49" => "Shkoder",
+ "50" => "Tirane",
+ "51" => "Vlore"),
+"AM" => array(
+ "01" => "Aragatsotn",
+ "02" => "Ararat",
+ "03" => "Armavir",
+ "04" => "Geghark'unik'",
+ "05" => "Kotayk'",
+ "06" => "Lorri",
+ "07" => "Shirak",
+ "08" => "Syunik'",
+ "09" => "Tavush",
+ "10" => "Vayots' Dzor",
+ "11" => "Yerevan"),
+"AO" => array(
+ "01" => "Benguela",
+ "02" => "Bie",
+ "03" => "Cabinda",
+ "04" => "Cuando Cubango",
+ "05" => "Cuanza Norte",
+ "06" => "Cuanza Sul",
+ "07" => "Cunene",
+ "08" => "Huambo",
+ "09" => "Huila",
+ "10" => "Luanda",
+ "12" => "Malanje",
+ "13" => "Namibe",
+ "14" => "Moxico",
+ "15" => "Uige",
+ "16" => "Zaire",
+ "17" => "Lunda Norte",
+ "18" => "Lunda Sul",
+ "19" => "Bengo",
+ "20" => "Luanda"),
+"AR" => array(
+ "01" => "Buenos Aires",
+ "02" => "Catamarca",
+ "03" => "Chaco",
+ "04" => "Chubut",
+ "05" => "Cordoba",
+ "06" => "Corrientes",
+ "07" => "Distrito Federal",
+ "08" => "Entre Rios",
+ "09" => "Formosa",
+ "10" => "Jujuy",
+ "11" => "La Pampa",
+ "12" => "La Rioja",
+ "13" => "Mendoza",
+ "14" => "Misiones",
+ "15" => "Neuquen",
+ "16" => "Rio Negro",
+ "17" => "Salta",
+ "18" => "San Juan",
+ "19" => "San Luis",
+ "20" => "Santa Cruz",
+ "21" => "Santa Fe",
+ "22" => "Santiago del Estero",
+ "23" => "Tierra del Fuego",
+ "24" => "Tucuman"),
+"AT" => array(
+ "01" => "Burgenland",
+ "02" => "Karnten",
+ "03" => "Niederosterreich",
+ "04" => "Oberosterreich",
+ "05" => "Salzburg",
+ "06" => "Steiermark",
+ "07" => "Tirol",
+ "08" => "Vorarlberg",
+ "09" => "Wien"),
+"AU" => array(
+ "01" => "Australian Capital Territory",
+ "02" => "New South Wales",
+ "03" => "Northern Territory",
+ "04" => "Queensland",
+ "05" => "South Australia",
+ "06" => "Tasmania",
+ "07" => "Victoria",
+ "08" => "Western Australia"),
+"AZ" => array(
+ "01" => "Abseron",
+ "02" => "Agcabadi",
+ "03" => "Agdam",
+ "04" => "Agdas",
+ "05" => "Agstafa",
+ "06" => "Agsu",
+ "07" => "Ali Bayramli",
+ "08" => "Astara",
+ "09" => "Baki",
+ "10" => "Balakan",
+ "11" => "Barda",
+ "12" => "Beylaqan",
+ "13" => "Bilasuvar",
+ "14" => "Cabrayil",
+ "15" => "Calilabad",
+ "16" => "Daskasan",
+ "17" => "Davaci",
+ "18" => "Fuzuli",
+ "19" => "Gadabay",
+ "20" => "Ganca",
+ "21" => "Goranboy",
+ "22" => "Goycay",
+ "23" => "Haciqabul",
+ "24" => "Imisli",
+ "25" => "Ismayilli",
+ "26" => "Kalbacar",
+ "27" => "Kurdamir",
+ "28" => "Lacin",
+ "29" => "Lankaran",
+ "30" => "Lankaran",
+ "31" => "Lerik",
+ "32" => "Masalli",
+ "33" => "Mingacevir",
+ "34" => "Naftalan",
+ "35" => "Naxcivan",
+ "36" => "Neftcala",
+ "37" => "Oguz",
+ "38" => "Qabala",
+ "39" => "Qax",
+ "40" => "Qazax",
+ "41" => "Qobustan",
+ "42" => "Quba",
+ "43" => "Qubadli",
+ "44" => "Qusar",
+ "45" => "Saatli",
+ "46" => "Sabirabad",
+ "47" => "Saki",
+ "48" => "Saki",
+ "49" => "Salyan",
+ "50" => "Samaxi",
+ "51" => "Samkir",
+ "52" => "Samux",
+ "53" => "Siyazan",
+ "54" => "Sumqayit",
+ "55" => "Susa",
+ "56" => "Susa",
+ "57" => "Tartar",
+ "58" => "Tovuz",
+ "59" => "Ucar",
+ "60" => "Xacmaz",
+ "61" => "Xankandi",
+ "62" => "Xanlar",
+ "63" => "Xizi",
+ "64" => "Xocali",
+ "65" => "Xocavand",
+ "66" => "Yardimli",
+ "67" => "Yevlax",
+ "68" => "Yevlax",
+ "69" => "Zangilan",
+ "70" => "Zaqatala",
+ "71" => "Zardab"),
+"BA" => array(
+ "01" => "Federation of Bosnia and Herzegovina",
+ "02" => "Republika Srpska"),
+"BB" => array(
+ "01" => "Christ Church",
+ "02" => "Saint Andrew",
+ "03" => "Saint George",
+ "04" => "Saint James",
+ "05" => "Saint John",
+ "06" => "Saint Joseph",
+ "07" => "Saint Lucy",
+ "08" => "Saint Michael",
+ "09" => "Saint Peter",
+ "10" => "Saint Philip",
+ "11" => "Saint Thomas"),
+"BD" => array(
+ "01" => "Barisal",
+ "04" => "Bandarban",
+ "05" => "Comilla",
+ "12" => "Mymensingh",
+ "13" => "Noakhali",
+ "15" => "Patuakhali",
+ "22" => "Bagerhat",
+ "23" => "Bhola",
+ "24" => "Bogra",
+ "25" => "Barguna",
+ "26" => "Brahmanbaria",
+ "27" => "Chandpur",
+ "28" => "Chapai Nawabganj",
+ "29" => "Chattagram",
+ "30" => "Chuadanga",
+ "31" => "Cox's Bazar",
+ "32" => "Dhaka",
+ "33" => "Dinajpur",
+ "34" => "Faridpur",
+ "35" => "Feni",
+ "36" => "Gaibandha",
+ "37" => "Gazipur",
+ "38" => "Gopalganj",
+ "39" => "Habiganj",
+ "40" => "Jaipurhat",
+ "41" => "Jamalpur",
+ "42" => "Jessore",
+ "43" => "Jhalakati",
+ "44" => "Jhenaidah",
+ "45" => "Khagrachari",
+ "46" => "Khulna",
+ "47" => "Kishorganj",
+ "48" => "Kurigram",
+ "49" => "Kushtia",
+ "50" => "Laksmipur",
+ "51" => "Lalmonirhat",
+ "52" => "Madaripur",
+ "53" => "Magura",
+ "54" => "Manikganj",
+ "55" => "Meherpur",
+ "56" => "Moulavibazar",
+ "57" => "Munshiganj",
+ "58" => "Naogaon",
+ "59" => "Narail",
+ "60" => "Narayanganj",
+ "61" => "Narsingdi",
+ "62" => "Nator",
+ "63" => "Netrakona",
+ "64" => "Nilphamari",
+ "65" => "Pabna",
+ "66" => "Panchagar",
+ "67" => "Parbattya Chattagram",
+ "68" => "Pirojpur",
+ "69" => "Rajbari",
+ "70" => "Rajshahi",
+ "71" => "Rangpur",
+ "72" => "Satkhira",
+ "73" => "Shariyatpur",
+ "74" => "Sherpur",
+ "75" => "Sirajganj",
+ "76" => "Sunamganj",
+ "77" => "Sylhet",
+ "78" => "Tangail",
+ "79" => "Thakurgaon",
+ "81" => "Dhaka",
+ "82" => "Khulna",
+ "83" => "Rajshahi",
+ "84" => "Chittagong",
+ "85" => "Barisal",
+ "86" => "Sylhet"),
+"BE" => array(
+ "01" => "Antwerpen",
+ "02" => "Brabant",
+ "03" => "Hainaut",
+ "04" => "Liege",
+ "05" => "Limburg",
+ "06" => "Luxembourg",
+ "07" => "Namur",
+ "08" => "Oost-Vlaanderen",
+ "09" => "West-Vlaanderen",
+ "10" => "Brabant Wallon",
+ "11" => "Brussels Hoofdstedelijk Gewest",
+ "12" => "Vlaams-Brabant"),
+"BF" => array(
+ "15" => "Bam",
+ "19" => "Boulkiemde",
+ "20" => "Ganzourgou",
+ "21" => "Gnagna",
+ "28" => "Kouritenga",
+ "33" => "Oudalan",
+ "34" => "Passore",
+ "36" => "Sanguie",
+ "40" => "Soum",
+ "42" => "Tapoa",
+ "44" => "Zoundweogo",
+ "45" => "Bale",
+ "46" => "Banwa",
+ "47" => "Bazega",
+ "48" => "Bougouriba",
+ "49" => "Boulgou",
+ "50" => "Gourma",
+ "51" => "Houet",
+ "52" => "Ioba",
+ "53" => "Kadiogo",
+ "54" => "Kenedougou",
+ "55" => "Komoe",
+ "56" => "Komondjari",
+ "57" => "Kompienga",
+ "58" => "Kossi",
+ "59" => "Koulpelogo",
+ "60" => "Kourweogo",
+ "61" => "Leraba",
+ "62" => "Loroum",
+ "63" => "Mouhoun",
+ "64" => "Namentenga",
+ "65" => "Naouri",
+ "66" => "Nayala",
+ "67" => "Noumbiel",
+ "68" => "Oubritenga",
+ "69" => "Poni",
+ "70" => "Sanmatenga",
+ "71" => "Seno",
+ "72" => "Sissili",
+ "73" => "Sourou",
+ "74" => "Tuy",
+ "75" => "Yagha",
+ "76" => "Yatenga",
+ "77" => "Ziro",
+ "78" => "Zondoma"),
+"BG" => array(
+ "33" => "Mikhaylovgrad",
+ "38" => "Blagoevgrad",
+ "39" => "Burgas",
+ "40" => "Dobrich",
+ "41" => "Gabrovo",
+ "42" => "Grad Sofiya",
+ "43" => "Khaskovo",
+ "44" => "Kurdzhali",
+ "45" => "Kyustendil",
+ "46" => "Lovech",
+ "47" => "Montana",
+ "48" => "Pazardzhik",
+ "49" => "Pernik",
+ "50" => "Pleven",
+ "51" => "Plovdiv",
+ "52" => "Razgrad",
+ "53" => "Ruse",
+ "54" => "Shumen",
+ "55" => "Silistra",
+ "56" => "Sliven",
+ "57" => "Smolyan",
+ "58" => "Sofiya",
+ "59" => "Stara Zagora",
+ "60" => "Turgovishte",
+ "61" => "Varna",
+ "62" => "Veliko Turnovo",
+ "63" => "Vidin",
+ "64" => "Vratsa",
+ "65" => "Yambol"),
+"BH" => array(
+ "01" => "Al Hadd",
+ "02" => "Al Manamah",
+ "03" => "Al Muharraq",
+ "05" => "Jidd Hafs",
+ "06" => "Sitrah",
+ "07" => "Ar Rifa' wa al Mintaqah al Janubiyah",
+ "08" => "Al Mintaqah al Gharbiyah",
+ "09" => "Mintaqat Juzur Hawar",
+ "10" => "Al Mintaqah ash Shamaliyah",
+ "11" => "Al Mintaqah al Wusta",
+ "12" => "Madinat",
+ "13" => "Ar Rifa",
+ "14" => "Madinat Hamad",
+ "15" => "Al Muharraq",
+ "16" => "Al Asimah",
+ "17" => "Al Janubiyah",
+ "18" => "Ash Shamaliyah",
+ "19" => "Al Wusta"),
+"BI" => array(
+ "02" => "Bujumbura",
+ "09" => "Bubanza",
+ "10" => "Bururi",
+ "11" => "Cankuzo",
+ "12" => "Cibitoke",
+ "13" => "Gitega",
+ "14" => "Karuzi",
+ "15" => "Kayanza",
+ "16" => "Kirundo",
+ "17" => "Makamba",
+ "18" => "Muyinga",
+ "19" => "Ngozi",
+ "20" => "Rutana",
+ "21" => "Ruyigi",
+ "22" => "Muramvya",
+ "23" => "Mwaro"),
+"BJ" => array(
+ "01" => "Atakora",
+ "02" => "Atlantique",
+ "03" => "Borgou",
+ "04" => "Mono",
+ "05" => "Oueme",
+ "06" => "Zou",
+ "07" => "Alibori",
+ "08" => "Atakora",
+ "09" => "Atlanyique",
+ "10" => "Borgou",
+ "11" => "Collines",
+ "12" => "Kouffo",
+ "13" => "Donga",
+ "14" => "Littoral",
+ "15" => "Mono",
+ "16" => "Oueme",
+ "17" => "Plateau",
+ "18" => "Zou"),
+"BM" => array(
+ "01" => "Devonshire",
+ "02" => "Hamilton",
+ "03" => "Hamilton",
+ "04" => "Paget",
+ "05" => "Pembroke",
+ "06" => "Saint George",
+ "07" => "Saint George's",
+ "08" => "Sandys",
+ "09" => "Smiths",
+ "10" => "Southampton",
+ "11" => "Warwick"),
+"BN" => array(
+ "07" => "Alibori",
+ "08" => "Belait",
+ "09" => "Brunei and Muara",
+ "10" => "Temburong",
+ "11" => "Collines",
+ "12" => "Kouffo",
+ "13" => "Donga",
+ "14" => "Littoral",
+ "15" => "Tutong",
+ "16" => "Oueme",
+ "17" => "Plateau",
+ "18" => "Zou"),
+"BO" => array(
+ "01" => "Chuquisaca",
+ "02" => "Cochabamba",
+ "03" => "El Beni",
+ "04" => "La Paz",
+ "05" => "Oruro",
+ "06" => "Pando",
+ "07" => "Potosi",
+ "08" => "Santa Cruz",
+ "09" => "Tarija"),
+"BR" => array(
+ "01" => "Acre",
+ "02" => "Alagoas",
+ "03" => "Amapa",
+ "04" => "Amazonas",
+ "05" => "Bahia",
+ "06" => "Ceara",
+ "07" => "Distrito Federal",
+ "08" => "Espirito Santo",
+ "11" => "Mato Grosso do Sul",
+ "13" => "Maranhao",
+ "14" => "Mato Grosso",
+ "15" => "Minas Gerais",
+ "16" => "Para",
+ "17" => "Paraiba",
+ "18" => "Parana",
+ "20" => "Piaui",
+ "21" => "Rio de Janeiro",
+ "22" => "Rio Grande do Norte",
+ "23" => "Rio Grande do Sul",
+ "24" => "Rondonia",
+ "25" => "Roraima",
+ "26" => "Santa Catarina",
+ "27" => "Sao Paulo",
+ "28" => "Sergipe",
+ "29" => "Goias",
+ "30" => "Pernambuco",
+ "31" => "Tocantins"),
+"BS" => array(
+ "05" => "Bimini",
+ "06" => "Cat Island",
+ "10" => "Exuma",
+ "13" => "Inagua",
+ "15" => "Long Island",
+ "16" => "Mayaguana",
+ "18" => "Ragged Island",
+ "22" => "Harbour Island",
+ "23" => "New Providence",
+ "24" => "Acklins and Crooked Islands",
+ "25" => "Freeport",
+ "26" => "Fresh Creek",
+ "27" => "Governor's Harbour",
+ "28" => "Green Turtle Cay",
+ "29" => "High Rock",
+ "30" => "Kemps Bay",
+ "31" => "Marsh Harbour",
+ "32" => "Nichollstown and Berry Islands",
+ "33" => "Rock Sound",
+ "34" => "Sandy Point",
+ "35" => "San Salvador and Rum Cay"),
+"BT" => array(
+ "05" => "Bumthang",
+ "06" => "Chhukha",
+ "07" => "Chirang",
+ "08" => "Daga",
+ "09" => "Geylegphug",
+ "10" => "Ha",
+ "11" => "Lhuntshi",
+ "12" => "Mongar",
+ "13" => "Paro",
+ "14" => "Pemagatsel",
+ "15" => "Punakha",
+ "16" => "Samchi",
+ "17" => "Samdrup",
+ "18" => "Shemgang",
+ "19" => "Tashigang",
+ "20" => "Thimphu",
+ "21" => "Tongsa",
+ "22" => "Wangdi Phodrang"),
+"BW" => array(
+ "01" => "Central",
+ "03" => "Ghanzi",
+ "04" => "Kgalagadi",
+ "05" => "Kgatleng",
+ "06" => "Kweneng",
+ "08" => "North-East",
+ "09" => "South-East",
+ "10" => "Southern",
+ "11" => "North-West"),
+"BY" => array(
+ "01" => "Brestskaya Voblasts'",
+ "02" => "Homyel'skaya Voblasts'",
+ "03" => "Hrodzyenskaya Voblasts'",
+ "04" => "Minsk",
+ "05" => "Minskaya Voblasts'",
+ "06" => "Mahilyowskaya Voblasts'",
+ "07" => "Vitsyebskaya Voblasts'"),
+"BZ" => array(
+ "01" => "Belize",
+ "02" => "Cayo",
+ "03" => "Corozal",
+ "04" => "Orange Walk",
+ "05" => "Stann Creek",
+ "06" => "Toledo"),
+"CA" => array(
+ "AB" => "Alberta",
+ "BC" => "British Columbia",
+ "MB" => "Manitoba",
+ "NB" => "New Brunswick",
+ "NL" => "Newfoundland",
+ "NS" => "Nova Scotia",
+ "NT" => "Northwest Territories",
+ "NU" => "Nunavut",
+ "ON" => "Ontario",
+ "PE" => "Prince Edward Island",
+ "QC" => "Quebec",
+ "SK" => "Saskatchewan",
+ "YT" => "Yukon Territory"),
+"CD" => array(
+ "01" => "Bandundu",
+ "02" => "Equateur",
+ "04" => "Kasai-Oriental",
+ "05" => "Katanga",
+ "06" => "Kinshasa",
+ "07" => "Kivu",
+ "08" => "Bas-Congo",
+ "09" => "Orientale",
+ "10" => "Maniema",
+ "11" => "Nord-Kivu",
+ "12" => "Sud-Kivu",
+ "13" => "Cuvette"),
+"CF" => array(
+ "01" => "Bamingui-Bangoran",
+ "02" => "Basse-Kotto",
+ "03" => "Haute-Kotto",
+ "04" => "Mambere-Kadei",
+ "05" => "Haut-Mbomou",
+ "06" => "Kemo",
+ "07" => "Lobaye",
+ "08" => "Mbomou",
+ "09" => "Nana-Mambere",
+ "11" => "Ouaka",
+ "12" => "Ouham",
+ "13" => "Ouham-Pende",
+ "14" => "Cuvette-Ouest",
+ "15" => "Nana-Grebizi",
+ "16" => "Sangha-Mbaere",
+ "17" => "Ombella-Mpoko",
+ "18" => "Bangui"),
+"CG" => array(
+ "01" => "Bouenza",
+ "03" => "Cuvette",
+ "04" => "Kouilou",
+ "05" => "Lekoumou",
+ "06" => "Likouala",
+ "07" => "Niari",
+ "08" => "Plateaux",
+ "10" => "Sangha",
+ "11" => "Pool",
+ "12" => "Brazzaville"),
+"CH" => array(
+ "01" => "Aargau",
+ "02" => "Ausser-Rhoden",
+ "03" => "Basel-Landschaft",
+ "04" => "Basel-Stadt",
+ "05" => "Bern",
+ "06" => "Fribourg",
+ "07" => "Geneve",
+ "08" => "Glarus",
+ "09" => "Graubunden",
+ "10" => "Inner-Rhoden",
+ "11" => "Luzern",
+ "12" => "Neuchatel",
+ "13" => "Nidwalden",
+ "14" => "Obwalden",
+ "15" => "Sankt Gallen",
+ "16" => "Schaffhausen",
+ "17" => "Schwyz",
+ "18" => "Solothurn",
+ "19" => "Thurgau",
+ "20" => "Ticino",
+ "21" => "Uri",
+ "22" => "Valais",
+ "23" => "Vaud",
+ "24" => "Zug",
+ "25" => "Zurich",
+ "26" => "Jura"),
+"CI" => array(
+ "05" => "Atacama",
+ "06" => "Biobio",
+ "51" => "Sassandra",
+ "61" => "Abidjan",
+ "74" => "Agneby",
+ "75" => "Bafing",
+ "76" => "Bas-Sassandra",
+ "77" => "Denguele",
+ "78" => "Dix-Huit Montagnes",
+ "79" => "Fromager",
+ "80" => "Haut-Sassandra",
+ "81" => "Lacs",
+ "82" => "Lagunes",
+ "83" => "Marahoue",
+ "84" => "Moyen-Cavally",
+ "85" => "Moyen-Comoe",
+ "86" => "N'zi-Comoe",
+ "87" => "Savanes",
+ "88" => "Sud-Bandama",
+ "89" => "Sud-Comoe",
+ "90" => "Vallee du Bandama",
+ "91" => "Worodougou",
+ "92" => "Zanzan"),
+"CL" => array(
+ "01" => "Valparaiso",
+ "02" => "Aisen del General Carlos Ibanez del Campo",
+ "03" => "Antofagasta",
+ "04" => "Araucania",
+ "05" => "Atacama",
+ "06" => "Bio-Bio",
+ "07" => "Coquimbo",
+ "08" => "Libertador General Bernardo O'Higgins",
+ "09" => "Los Lagos",
+ "10" => "Magallanes y de la Antartica Chilena",
+ "11" => "Maule",
+ "12" => "Region Metropolitana",
+ "13" => "Tarapaca"),
+"CM" => array(
+ "04" => "Est",
+ "05" => "Littoral",
+ "07" => "Nord-Ouest",
+ "08" => "Ouest",
+ "09" => "Sud-Ouest",
+ "10" => "Adamaoua",
+ "11" => "Centre",
+ "12" => "Extreme-Nord",
+ "13" => "Nord",
+ "14" => "Sud"),
+"CN" => array(
+ "01" => "Anhui",
+ "02" => "Zhejiang",
+ "03" => "Jiangxi",
+ "04" => "Jiangsu",
+ "05" => "Jilin",
+ "06" => "Qinghai",
+ "07" => "Fujian",
+ "08" => "Heilongjiang",
+ "09" => "Henan",
+ "10" => "Hebei",
+ "11" => "Hunan",
+ "12" => "Hubei",
+ "13" => "Xinjiang",
+ "14" => "Xizang",
+ "15" => "Gansu",
+ "16" => "Guangxi",
+ "18" => "Guizhou",
+ "19" => "Liaoning",
+ "20" => "Nei Mongol",
+ "21" => "Ningxia",
+ "22" => "Beijing",
+ "23" => "Shanghai",
+ "24" => "Shanxi",
+ "25" => "Shandong",
+ "26" => "Shaanxi",
+ "28" => "Tianjin",
+ "29" => "Yunnan",
+ "30" => "Guangdong",
+ "31" => "Hainan",
+ "32" => "Sichuan",
+ "33" => "Chongqing"),
+"CO" => array(
+ "01" => "Amazonas",
+ "02" => "Antioquia",
+ "03" => "Arauca",
+ "04" => "Atlantico",
+ "05" => "Bolivar Department",
+ "06" => "Boyaca Department",
+ "07" => "Caldas Department",
+ "08" => "Caqueta",
+ "09" => "Cauca",
+ "10" => "Cesar",
+ "11" => "Choco",
+ "12" => "Cordoba",
+ "14" => "Guaviare",
+ "15" => "Guainia",
+ "16" => "Huila",
+ "17" => "La Guajira",
+ "18" => "Magdalena Department",
+ "19" => "Meta",
+ "20" => "Narino",
+ "21" => "Norte de Santander",
+ "22" => "Putumayo",
+ "23" => "Quindio",
+ "24" => "Risaralda",
+ "25" => "San Andres y Providencia",
+ "26" => "Santander",
+ "27" => "Sucre",
+ "28" => "Tolima",
+ "29" => "Valle del Cauca",
+ "30" => "Vaupes",
+ "31" => "Vichada",
+ "32" => "Casanare",
+ "33" => "Cundinamarca",
+ "34" => "Distrito Especial",
+ "35" => "Bolivar",
+ "36" => "Boyaca",
+ "37" => "Caldas",
+ "38" => "Magdalena"),
+"CR" => array(
+ "01" => "Alajuela",
+ "02" => "Cartago",
+ "03" => "Guanacaste",
+ "04" => "Heredia",
+ "06" => "Limon",
+ "07" => "Puntarenas",
+ "08" => "San Jose"),
+"CU" => array(
+ "01" => "Pinar del Rio",
+ "02" => "Ciudad de la Habana",
+ "03" => "Matanzas",
+ "04" => "Isla de la Juventud",
+ "05" => "Camaguey",
+ "07" => "Ciego de Avila",
+ "08" => "Cienfuegos",
+ "09" => "Granma",
+ "10" => "Guantanamo",
+ "11" => "La Habana",
+ "12" => "Holguin",
+ "13" => "Las Tunas",
+ "14" => "Sancti Spiritus",
+ "15" => "Santiago de Cuba",
+ "16" => "Villa Clara"),
+"CV" => array(
+ "01" => "Boa Vista",
+ "02" => "Brava",
+ "04" => "Maio",
+ "05" => "Paul",
+ "07" => "Ribeira Grande",
+ "08" => "Sal",
+ "10" => "Sao Nicolau",
+ "11" => "Sao Vicente",
+ "13" => "Mosteiros",
+ "14" => "Praia",
+ "15" => "Santa Catarina",
+ "16" => "Santa Cruz",
+ "17" => "Sao Domingos",
+ "18" => "Sao Filipe",
+ "19" => "Sao Miguel",
+ "20" => "Tarrafal"),
+"CY" => array(
+ "01" => "Famagusta",
+ "02" => "Kyrenia",
+ "03" => "Larnaca",
+ "04" => "Nicosia",
+ "05" => "Limassol",
+ "06" => "Paphos"),
+"CZ" => array(
+ "03" => "Blansko",
+ "04" => "Breclav",
+ "20" => "Hradec Kralove",
+ "21" => "Jablonec nad Nisou",
+ "23" => "Jicin",
+ "24" => "Jihlava",
+ "30" => "Kolin",
+ "33" => "Liberec",
+ "36" => "Melnik",
+ "37" => "Mlada Boleslav",
+ "39" => "Nachod",
+ "41" => "Nymburk",
+ "45" => "Pardubice",
+ "52" => "Hlavni mesto Praha",
+ "61" => "Semily",
+ "70" => "Trutnov",
+ "78" => "Jihomoravsky kraj",
+ "79" => "Jihocesky kraj",
+ "80" => "Vysocina",
+ "81" => "Karlovarsky kraj",
+ "82" => "Kralovehradecky kraj",
+ "83" => "Liberecky kraj",
+ "84" => "Olomoucky kraj",
+ "85" => "Moravskoslezsky kraj",
+ "86" => "Pardubicky kraj",
+ "87" => "Plzensky kraj",
+ "88" => "Stredocesky kraj",
+ "89" => "Ustecky kraj",
+ "90" => "Zlinsky kraj"),
+"DE" => array(
+ "01" => "Baden-Wurttemberg",
+ "02" => "Bayern",
+ "03" => "Bremen",
+ "04" => "Hamburg",
+ "05" => "Hessen",
+ "06" => "Niedersachsen",
+ "07" => "Nordrhein-Westfalen",
+ "08" => "Rheinland-Pfalz",
+ "09" => "Saarland",
+ "10" => "Schleswig-Holstein",
+ "11" => "Brandenburg",
+ "12" => "Mecklenburg-Vorpommern",
+ "13" => "Sachsen",
+ "14" => "Sachsen-Anhalt",
+ "15" => "Thuringen",
+ "16" => "Berlin"),
+"DJ" => array(
+ "01" => "Ali Sabieh",
+ "04" => "Obock",
+ "05" => "Tadjoura",
+ "06" => "Dikhil",
+ "07" => "Djibouti",
+ "08" => "Arta"),
+"DK" => array(
+ "01" => "Arhus",
+ "02" => "Bornholm",
+ "03" => "Frederiksborg",
+ "04" => "Fyn",
+ "05" => "Kobenhavn",
+ "06" => "Staden Kobenhavn",
+ "07" => "Nordjylland",
+ "08" => "Ribe",
+ "09" => "Ringkobing",
+ "10" => "Roskilde",
+ "11" => "Sonderjylland",
+ "12" => "Storstrom",
+ "13" => "Vejle",
+ "14" => "Vestsjalland",
+ "15" => "Viborg",
+ "17" => "Hovedstaden",
+ "18" => "Midtjyllen",
+ "19" => "Nordjylland",
+ "20" => "Sjelland",
+ "21" => "Syddanmark"),
+"DM" => array(
+ "02" => "Saint Andrew",
+ "03" => "Saint David",
+ "04" => "Saint George",
+ "05" => "Saint John",
+ "06" => "Saint Joseph",
+ "07" => "Saint Luke",
+ "08" => "Saint Mark",
+ "09" => "Saint Patrick",
+ "10" => "Saint Paul",
+ "11" => "Saint Peter"),
+"DO" => array(
+ "01" => "Azua",
+ "02" => "Baoruco",
+ "03" => "Barahona",
+ "04" => "Dajabon",
+ "05" => "Distrito Nacional",
+ "06" => "Duarte",
+ "08" => "Espaillat",
+ "09" => "Independencia",
+ "10" => "La Altagracia",
+ "11" => "Elias Pina",
+ "12" => "La Romana",
+ "14" => "Maria Trinidad Sanchez",
+ "15" => "Monte Cristi",
+ "16" => "Pedernales",
+ "17" => "Peravia",
+ "18" => "Puerto Plata",
+ "19" => "Salcedo",
+ "20" => "Samana",
+ "21" => "Sanchez Ramirez",
+ "23" => "San Juan",
+ "24" => "San Pedro De Macoris",
+ "25" => "Santiago",
+ "26" => "Santiago Rodriguez",
+ "27" => "Valverde",
+ "28" => "El Seibo",
+ "29" => "Hato Mayor",
+ "30" => "La Vega",
+ "31" => "Monsenor Nouel",
+ "32" => "Monte Plata",
+ "33" => "San Cristobal",
+ "34" => "Distrito Nacional",
+ "35" => "Peravia",
+ "36" => "San Jose de Ocoa",
+ "37" => "Santo Domingo"),
+"DZ" => array(
+ "01" => "Alger",
+ "03" => "Batna",
+ "04" => "Constantine",
+ "06" => "Medea",
+ "07" => "Mostaganem",
+ "09" => "Oran",
+ "10" => "Saida",
+ "12" => "Setif",
+ "13" => "Tiaret",
+ "14" => "Tizi Ouzou",
+ "15" => "Tlemcen",
+ "18" => "Bejaia",
+ "19" => "Biskra",
+ "20" => "Blida",
+ "21" => "Bouira",
+ "22" => "Djelfa",
+ "23" => "Guelma",
+ "24" => "Jijel",
+ "25" => "Laghouat",
+ "26" => "Mascara",
+ "27" => "M'sila",
+ "29" => "Oum el Bouaghi",
+ "30" => "Sidi Bel Abbes",
+ "31" => "Skikda",
+ "33" => "Tebessa",
+ "34" => "Adrar",
+ "35" => "Ain Defla",
+ "36" => "Ain Temouchent",
+ "37" => "Annaba",
+ "38" => "Bechar",
+ "39" => "Bordj Bou Arreridj",
+ "40" => "Boumerdes",
+ "41" => "Chlef",
+ "42" => "El Bayadh",
+ "43" => "El Oued",
+ "44" => "El Tarf",
+ "45" => "Ghardaia",
+ "46" => "Illizi",
+ "47" => "Khenchela",
+ "48" => "Mila",
+ "49" => "Naama",
+ "50" => "Ouargla",
+ "51" => "Relizane",
+ "52" => "Souk Ahras",
+ "53" => "Tamanghasset",
+ "54" => "Tindouf",
+ "55" => "Tipaza",
+ "56" => "Tissemsilt"),
+"EC" => array(
+ "01" => "Galapagos",
+ "02" => "Azuay",
+ "03" => "Bolivar",
+ "04" => "Canar",
+ "05" => "Carchi",
+ "06" => "Chimborazo",
+ "07" => "Cotopaxi",
+ "08" => "El Oro",
+ "09" => "Esmeraldas",
+ "10" => "Guayas",
+ "11" => "Imbabura",
+ "12" => "Loja",
+ "13" => "Los Rios",
+ "14" => "Manabi",
+ "15" => "Morona-Santiago",
+ "17" => "Pastaza",
+ "18" => "Pichincha",
+ "19" => "Tungurahua",
+ "20" => "Zamora-Chinchipe",
+ "22" => "Sucumbios",
+ "23" => "Napo",
+ "24" => "Orellana"),
+"EE" => array(
+ "01" => "Harjumaa",
+ "02" => "Hiiumaa",
+ "03" => "Ida-Virumaa",
+ "04" => "Jarvamaa",
+ "05" => "Jogevamaa",
+ "06" => "Kohtla-Jarve",
+ "07" => "Laanemaa",
+ "08" => "Laane-Virumaa",
+ "09" => "Narva",
+ "10" => "Parnu",
+ "11" => "Parnumaa",
+ "12" => "Polvamaa",
+ "13" => "Raplamaa",
+ "14" => "Saaremaa",
+ "15" => "Sillamae",
+ "16" => "Tallinn",
+ "17" => "Tartu",
+ "18" => "Tartumaa",
+ "19" => "Valgamaa",
+ "20" => "Viljandimaa",
+ "21" => "Vorumaa"),
+"EG" => array(
+ "01" => "Ad Daqahliyah",
+ "02" => "Al Bahr al Ahmar",
+ "03" => "Al Buhayrah",
+ "04" => "Al Fayyum",
+ "05" => "Al Gharbiyah",
+ "06" => "Al Iskandariyah",
+ "07" => "Al Isma'iliyah",
+ "08" => "Al Jizah",
+ "09" => "Al Minufiyah",
+ "10" => "Al Minya",
+ "11" => "Al Qahirah",
+ "12" => "Al Qalyubiyah",
+ "13" => "Al Wadi al Jadid",
+ "14" => "Ash Sharqiyah",
+ "15" => "As Suways",
+ "16" => "Aswan",
+ "17" => "Asyut",
+ "18" => "Bani Suwayf",
+ "19" => "Bur Sa'id",
+ "20" => "Dumyat",
+ "21" => "Kafr ash Shaykh",
+ "22" => "Matruh",
+ "23" => "Qina",
+ "24" => "Suhaj",
+ "26" => "Janub Sina'",
+ "27" => "Shamal Sina'"),
+"ER" => array(
+ "01" => "Anseba",
+ "02" => "Debub",
+ "03" => "Debubawi K'eyih Bahri",
+ "04" => "Gash Barka",
+ "05" => "Ma'akel",
+ "06" => "Semenawi K'eyih Bahri"),
+"ES" => array(
+ "07" => "Islas Baleares",
+ "27" => "La Rioja",
+ "29" => "Madrid",
+ "31" => "Murcia",
+ "32" => "Navarra",
+ "34" => "Asturias",
+ "39" => "Cantabria",
+ "51" => "Andalucia",
+ "52" => "Aragon",
+ "53" => "Canarias",
+ "54" => "Castilla-La Mancha",
+ "55" => "Castilla y Leon",
+ "56" => "Catalonia",
+ "57" => "Extremadura",
+ "58" => "Galicia",
+ "59" => "Pais Vasco",
+ "60" => "Comunidad Valenciana"),
+"ET" => array(
+ "02" => "Amhara",
+ "07" => "Somali",
+ "08" => "Gambella",
+ "10" => "Addis Abeba",
+ "11" => "Southern",
+ "12" => "Tigray",
+ "13" => "Benishangul",
+ "14" => "Afar",
+ "44" => "Adis Abeba",
+ "45" => "Afar",
+ "46" => "Amara",
+ "47" => "Binshangul Gumuz",
+ "48" => "Dire Dawa",
+ "49" => "Gambela Hizboch",
+ "50" => "Hareri Hizb",
+ "51" => "Oromiya",
+ "52" => "Sumale",
+ "53" => "Tigray",
+ "54" => "YeDebub Biheroch Bihereseboch na Hizboch"),
+"FI" => array(
+ "01" => "Aland",
+ "06" => "Lapland",
+ "08" => "Oulu",
+ "13" => "Southern Finland",
+ "14" => "Eastern Finland",
+ "15" => "Western Finland"),
+"FJ" => array(
+ "01" => "Central",
+ "02" => "Eastern",
+ "03" => "Northern",
+ "04" => "Rotuma",
+ "05" => "Western"),
+"FM" => array(
+ "01" => "Kosrae",
+ "02" => "Pohnpei",
+ "03" => "Chuuk",
+ "04" => "Yap"),
+"FR" => array(
+ "97" => "Aquitaine",
+ "98" => "Auvergne",
+ "99" => "Basse-Normandie",
+ "A1" => "Bourgogne",
+ "A2" => "Bretagne",
+ "A3" => "Centre",
+ "A4" => "Champagne-Ardenne",
+ "A5" => "Corse",
+ "A6" => "Franche-Comte",
+ "A7" => "Haute-Normandie",
+ "A8" => "Ile-de-France",
+ "A9" => "Languedoc-Roussillon",
+ "B1" => "Limousin",
+ "B2" => "Lorraine",
+ "B3" => "Midi-Pyrenees",
+ "B4" => "Nord-Pas-de-Calais",
+ "B5" => "Pays de la Loire",
+ "B6" => "Picardie",
+ "B7" => "Poitou-Charentes",
+ "B8" => "Provence-Alpes-Cote d'Azur",
+ "B9" => "Rhone-Alpes",
+ "C1" => "Alsace"),
+"GA" => array(
+ "01" => "Estuaire",
+ "02" => "Haut-Ogooue",
+ "03" => "Moyen-Ogooue",
+ "04" => "Ngounie",
+ "05" => "Nyanga",
+ "06" => "Ogooue-Ivindo",
+ "07" => "Ogooue-Lolo",
+ "08" => "Ogooue-Maritime",
+ "09" => "Woleu-Ntem"),
+"GB" => array(
+ "01" => "Avon",
+ "03" => "Berkshire",
+ "07" => "Cleveland",
+ "17" => "Greater London",
+ "18" => "Greater Manchester",
+ "20" => "Hereford and Worcester",
+ "22" => "Humberside",
+ "28" => "Merseyside",
+ "37" => "South Yorkshire",
+ "41" => "Tyne and Wear",
+ "43" => "West Midlands",
+ "45" => "West Yorkshire",
+ "79" => "Central",
+ "82" => "Grampian",
+ "84" => "Lothian",
+ "87" => "Strathclyde",
+ "88" => "Tayside",
+ "90" => "Clwyd",
+ "91" => "Dyfed",
+ "92" => "Gwent",
+ "94" => "Mid Glamorgan",
+ "96" => "South Glamorgan",
+ "97" => "West Glamorgan",
+ "A1" => "Barking and Dagenham",
+ "A2" => "Barnet",
+ "A3" => "Barnsley",
+ "A4" => "Bath and North East Somerset",
+ "A5" => "Bedfordshire",
+ "A6" => "Bexley",
+ "A7" => "Birmingham",
+ "A8" => "Blackburn with Darwen",
+ "A9" => "Blackpool",
+ "B1" => "Bolton",
+ "B2" => "Bournemouth",
+ "B3" => "Bracknell Forest",
+ "B4" => "Bradford",
+ "B5" => "Brent",
+ "B6" => "Brighton and Hove",
+ "B7" => "Bristol, City of",
+ "B8" => "Bromley",
+ "B9" => "Buckinghamshire",
+ "C1" => "Bury",
+ "C2" => "Calderdale",
+ "C3" => "Cambridgeshire",
+ "C4" => "Camden",
+ "C5" => "Cheshire",
+ "C6" => "Cornwall",
+ "C7" => "Coventry",
+ "C8" => "Croydon",
+ "C9" => "Cumbria",
+ "D1" => "Darlington",
+ "D2" => "Derby",
+ "D3" => "Derbyshire",
+ "D4" => "Devon",
+ "D5" => "Doncaster",
+ "D6" => "Dorset",
+ "D7" => "Dudley",
+ "D8" => "Durham",
+ "D9" => "Ealing",
+ "E1" => "East Riding of Yorkshire",
+ "E2" => "East Sussex",
+ "E3" => "Enfield",
+ "E4" => "Essex",
+ "E5" => "Gateshead",
+ "E6" => "Gloucestershire",
+ "E7" => "Greenwich",
+ "E8" => "Hackney",
+ "E9" => "Halton",
+ "F1" => "Hammersmith and Fulham",
+ "F2" => "Hampshire",
+ "F3" => "Haringey",
+ "F4" => "Harrow",
+ "F5" => "Hartlepool",
+ "F6" => "Havering",
+ "F7" => "Herefordshire",
+ "F8" => "Hertford",
+ "F9" => "Hillingdon",
+ "G1" => "Hounslow",
+ "G2" => "Isle of Wight",
+ "G3" => "Islington",
+ "G4" => "Kensington and Chelsea",
+ "G5" => "Kent",
+ "G6" => "Kingston upon Hull, City of",
+ "G7" => "Kingston upon Thames",
+ "G8" => "Kirklees",
+ "G9" => "Knowsley",
+ "H1" => "Lambeth",
+ "H2" => "Lancashire",
+ "H3" => "Leeds",
+ "H4" => "Leicester",
+ "H5" => "Leicestershire",
+ "H6" => "Lewisham",
+ "H7" => "Lincolnshire",
+ "H8" => "Liverpool",
+ "H9" => "London, City of",
+ "I1" => "Luton",
+ "I2" => "Manchester",
+ "I3" => "Medway",
+ "I4" => "Merton",
+ "I5" => "Middlesbrough",
+ "I6" => "Milton Keynes",
+ "I7" => "Newcastle upon Tyne",
+ "I8" => "Newham",
+ "I9" => "Norfolk",
+ "J1" => "Northamptonshire",
+ "J2" => "North East Lincolnshire",
+ "J3" => "North Lincolnshire",
+ "J4" => "North Somerset",
+ "J5" => "North Tyneside",
+ "J6" => "Northumberland",
+ "J7" => "North Yorkshire",
+ "J8" => "Nottingham",
+ "J9" => "Nottinghamshire",
+ "K1" => "Oldham",
+ "K2" => "Oxfordshire",
+ "K3" => "Peterborough",
+ "K4" => "Plymouth",
+ "K5" => "Poole",
+ "K6" => "Portsmouth",
+ "K7" => "Reading",
+ "K8" => "Redbridge",
+ "K9" => "Redcar and Cleveland",
+ "L1" => "Richmond upon Thames",
+ "L2" => "Rochdale",
+ "L3" => "Rotherham",
+ "L4" => "Rutland",
+ "L5" => "Salford",
+ "L6" => "Shropshire",
+ "L7" => "Sandwell",
+ "L8" => "Sefton",
+ "L9" => "Sheffield",
+ "M1" => "Slough",
+ "M2" => "Solihull",
+ "M3" => "Somerset",
+ "M4" => "Southampton",
+ "M5" => "Southend-on-Sea",
+ "M6" => "South Gloucestershire",
+ "M7" => "South Tyneside",
+ "M8" => "Southwark",
+ "M9" => "Staffordshire",
+ "N1" => "St. Helens",
+ "N2" => "Stockport",
+ "N3" => "Stockton-on-Tees",
+ "N4" => "Stoke-on-Trent",
+ "N5" => "Suffolk",
+ "N6" => "Sunderland",
+ "N7" => "Surrey",
+ "N8" => "Sutton",
+ "N9" => "Swindon",
+ "O1" => "Tameside",
+ "O2" => "Telford and Wrekin",
+ "O3" => "Thurrock",
+ "O4" => "Torbay",
+ "O5" => "Tower Hamlets",
+ "O6" => "Trafford",
+ "O7" => "Wakefield",
+ "O8" => "Walsall",
+ "O9" => "Waltham Forest",
+ "P1" => "Wandsworth",
+ "P2" => "Warrington",
+ "P3" => "Warwickshire",
+ "P4" => "West Berkshire",
+ "P5" => "Westminster",
+ "P6" => "West Sussex",
+ "P7" => "Wigan",
+ "P8" => "Wiltshire",
+ "P9" => "Windsor and Maidenhead",
+ "Q1" => "Wirral",
+ "Q2" => "Wokingham",
+ "Q3" => "Wolverhampton",
+ "Q4" => "Worcestershire",
+ "Q5" => "York",
+ "Q6" => "Antrim",
+ "Q7" => "Ards",
+ "Q8" => "Armagh",
+ "Q9" => "Ballymena",
+ "R1" => "Ballymoney",
+ "R2" => "Banbridge",
+ "R3" => "Belfast",
+ "R4" => "Carrickfergus",
+ "R5" => "Castlereagh",
+ "R6" => "Coleraine",
+ "R7" => "Cookstown",
+ "R8" => "Craigavon",
+ "R9" => "Down",
+ "S1" => "Dungannon",
+ "S2" => "Fermanagh",
+ "S3" => "Larne",
+ "S4" => "Limavady",
+ "S5" => "Lisburn",
+ "S6" => "Derry",
+ "S7" => "Magherafelt",
+ "S8" => "Moyle",
+ "S9" => "Newry and Mourne",
+ "T1" => "Newtownabbey",
+ "T2" => "North Down",
+ "T3" => "Omagh",
+ "T4" => "Strabane",
+ "T5" => "Aberdeen City",
+ "T6" => "Aberdeenshire",
+ "T7" => "Angus",
+ "T8" => "Argyll and Bute",
+ "T9" => "Scottish Borders, The",
+ "U1" => "Clackmannanshire",
+ "U2" => "Dumfries and Galloway",
+ "U3" => "Dundee City",
+ "U4" => "East Ayrshire",
+ "U5" => "East Dunbartonshire",
+ "U6" => "East Lothian",
+ "U7" => "East Renfrewshire",
+ "U8" => "Edinburgh, City of",
+ "U9" => "Falkirk",
+ "V1" => "Fife",
+ "V2" => "Glasgow City",
+ "V3" => "Highland",
+ "V4" => "Inverclyde",
+ "V5" => "Midlothian",
+ "V6" => "Moray",
+ "V7" => "North Ayrshire",
+ "V8" => "North Lanarkshire",
+ "V9" => "Orkney",
+ "W1" => "Perth and Kinross",
+ "W2" => "Renfrewshire",
+ "W3" => "Shetland Islands",
+ "W4" => "South Ayrshire",
+ "W5" => "South Lanarkshire",
+ "W6" => "Stirling",
+ "W7" => "West Dunbartonshire",
+ "W8" => "Eilean Siar",
+ "W9" => "West Lothian",
+ "X1" => "Isle of Anglesey",
+ "X2" => "Blaenau Gwent",
+ "X3" => "Bridgend",
+ "X4" => "Caerphilly",
+ "X5" => "Cardiff",
+ "X6" => "Ceredigion",
+ "X7" => "Carmarthenshire",
+ "X8" => "Conwy",
+ "X9" => "Denbighshire",
+ "Y1" => "Flintshire",
+ "Y2" => "Gwynedd",
+ "Y3" => "Merthyr Tydfil",
+ "Y4" => "Monmouthshire",
+ "Y5" => "Neath Port Talbot",
+ "Y6" => "Newport",
+ "Y7" => "Pembrokeshire",
+ "Y8" => "Powys",
+ "Y9" => "Rhondda Cynon Taff",
+ "Z1" => "Swansea",
+ "Z2" => "Torfaen",
+ "Z3" => "Vale of Glamorgan, The",
+ "Z4" => "Wrexham"),
+"GD" => array(
+ "01" => "Saint Andrew",
+ "02" => "Saint David",
+ "03" => "Saint George",
+ "04" => "Saint John",
+ "05" => "Saint Mark",
+ "06" => "Saint Patrick"),
+"GE" => array(
+ "01" => "Abashis Raioni",
+ "02" => "Abkhazia",
+ "03" => "Adigenis Raioni",
+ "04" => "Ajaria",
+ "05" => "Akhalgoris Raioni",
+ "06" => "Akhalk'alak'is Raioni",
+ "07" => "Akhalts'ikhis Raioni",
+ "08" => "Akhmetis Raioni",
+ "09" => "Ambrolauris Raioni",
+ "10" => "Aspindzis Raioni",
+ "11" => "Baghdat'is Raioni",
+ "12" => "Bolnisis Raioni",
+ "13" => "Borjomis Raioni",
+ "14" => "Chiat'ura",
+ "15" => "Ch'khorotsqus Raioni",
+ "16" => "Ch'okhatauris Raioni",
+ "17" => "Dedop'listsqaros Raioni",
+ "18" => "Dmanisis Raioni",
+ "19" => "Dushet'is Raioni",
+ "20" => "Gardabanis Raioni",
+ "21" => "Gori",
+ "22" => "Goris Raioni",
+ "23" => "Gurjaanis Raioni",
+ "24" => "Javis Raioni",
+ "25" => "K'arelis Raioni",
+ "26" => "Kaspis Raioni",
+ "27" => "Kharagaulis Raioni",
+ "28" => "Khashuris Raioni",
+ "29" => "Khobis Raioni",
+ "30" => "Khonis Raioni",
+ "31" => "K'ut'aisi",
+ "32" => "Lagodekhis Raioni",
+ "33" => "Lanch'khut'is Raioni",
+ "34" => "Lentekhis Raioni",
+ "35" => "Marneulis Raioni",
+ "36" => "Martvilis Raioni",
+ "37" => "Mestiis Raioni",
+ "38" => "Mts'khet'is Raioni",
+ "39" => "Ninotsmindis Raioni",
+ "40" => "Onis Raioni",
+ "41" => "Ozurget'is Raioni",
+ "42" => "P'ot'i",
+ "43" => "Qazbegis Raioni",
+ "44" => "Qvarlis Raioni",
+ "45" => "Rust'avi",
+ "46" => "Sach'kheris Raioni",
+ "47" => "Sagarejos Raioni",
+ "48" => "Samtrediis Raioni",
+ "49" => "Senakis Raioni",
+ "50" => "Sighnaghis Raioni",
+ "51" => "T'bilisi",
+ "52" => "T'elavis Raioni",
+ "53" => "T'erjolis Raioni",
+ "54" => "T'et'ritsqaros Raioni",
+ "55" => "T'ianet'is Raioni",
+ "56" => "Tqibuli",
+ "57" => "Ts'ageris Raioni",
+ "58" => "Tsalenjikhis Raioni",
+ "59" => "Tsalkis Raioni",
+ "60" => "Tsqaltubo",
+ "61" => "Vanis Raioni",
+ "62" => "Zestap'onis Raioni",
+ "63" => "Zugdidi",
+ "64" => "Zugdidis Raioni"),
+"GH" => array(
+ "01" => "Greater Accra",
+ "02" => "Ashanti",
+ "03" => "Brong-Ahafo",
+ "04" => "Central",
+ "05" => "Eastern",
+ "06" => "Northern",
+ "08" => "Volta",
+ "09" => "Western",
+ "10" => "Upper East",
+ "11" => "Upper West"),
+"GL" => array(
+ "01" => "Nordgronland",
+ "02" => "Ostgronland",
+ "03" => "Vestgronland"),
+"GM" => array(
+ "01" => "Banjul",
+ "02" => "Lower River",
+ "03" => "Central River",
+ "04" => "Upper River",
+ "05" => "Western",
+ "07" => "North Bank"),
+"GN" => array(
+ "01" => "Beyla",
+ "02" => "Boffa",
+ "03" => "Boke",
+ "04" => "Conakry",
+ "05" => "Dabola",
+ "06" => "Dalaba",
+ "07" => "Dinguiraye",
+ "09" => "Faranah",
+ "10" => "Forecariah",
+ "11" => "Fria",
+ "12" => "Gaoual",
+ "13" => "Gueckedou",
+ "15" => "Kerouane",
+ "16" => "Kindia",
+ "17" => "Kissidougou",
+ "18" => "Koundara",
+ "19" => "Kouroussa",
+ "21" => "Macenta",
+ "22" => "Mali",
+ "23" => "Mamou",
+ "25" => "Pita",
+ "27" => "Telimele",
+ "28" => "Tougue",
+ "29" => "Yomou",
+ "30" => "Coyah",
+ "31" => "Dubreka",
+ "32" => "Kankan",
+ "33" => "Koubia",
+ "34" => "Labe",
+ "35" => "Lelouma",
+ "36" => "Lola",
+ "37" => "Mandiana",
+ "38" => "Nzerekore",
+ "39" => "Siguiri"),
+"GQ" => array(
+ "03" => "Annobon",
+ "04" => "Bioko Norte",
+ "05" => "Bioko Sur",
+ "06" => "Centro Sur",
+ "07" => "Kie-Ntem",
+ "08" => "Litoral",
+ "09" => "Wele-Nzas"),
+"GR" => array(
+ "01" => "Evros",
+ "02" => "Rodhopi",
+ "03" => "Xanthi",
+ "04" => "Drama",
+ "05" => "Serrai",
+ "06" => "Kilkis",
+ "07" => "Pella",
+ "08" => "Florina",
+ "09" => "Kastoria",
+ "10" => "Grevena",
+ "11" => "Kozani",
+ "12" => "Imathia",
+ "13" => "Thessaloniki",
+ "14" => "Kavala",
+ "15" => "Khalkidhiki",
+ "16" => "Pieria",
+ "17" => "Ioannina",
+ "18" => "Thesprotia",
+ "19" => "Preveza",
+ "20" => "Arta",
+ "21" => "Larisa",
+ "22" => "Trikala",
+ "23" => "Kardhitsa",
+ "24" => "Magnisia",
+ "25" => "Kerkira",
+ "26" => "Levkas",
+ "27" => "Kefallinia",
+ "28" => "Zakinthos",
+ "29" => "Fthiotis",
+ "30" => "Evritania",
+ "31" => "Aitolia kai Akarnania",
+ "32" => "Fokis",
+ "33" => "Voiotia",
+ "34" => "Evvoia",
+ "35" => "Attiki",
+ "36" => "Argolis",
+ "37" => "Korinthia",
+ "38" => "Akhaia",
+ "39" => "Ilia",
+ "40" => "Messinia",
+ "41" => "Arkadhia",
+ "42" => "Lakonia",
+ "43" => "Khania",
+ "44" => "Rethimni",
+ "45" => "Iraklion",
+ "46" => "Lasithi",
+ "47" => "Dhodhekanisos",
+ "48" => "Samos",
+ "49" => "Kikladhes",
+ "50" => "Khios",
+ "51" => "Lesvos"),
+"GT" => array(
+ "01" => "Alta Verapaz",
+ "02" => "Baja Verapaz",
+ "03" => "Chimaltenango",
+ "04" => "Chiquimula",
+ "05" => "El Progreso",
+ "06" => "Escuintla",
+ "07" => "Guatemala",
+ "08" => "Huehuetenango",
+ "09" => "Izabal",
+ "10" => "Jalapa",
+ "11" => "Jutiapa",
+ "12" => "Peten",
+ "13" => "Quetzaltenango",
+ "14" => "Quiche",
+ "15" => "Retalhuleu",
+ "16" => "Sacatepequez",
+ "17" => "San Marcos",
+ "18" => "Santa Rosa",
+ "19" => "Solola",
+ "20" => "Suchitepequez",
+ "21" => "Totonicapan",
+ "22" => "Zacapa"),
+"GW" => array(
+ "01" => "Bafata",
+ "02" => "Quinara",
+ "04" => "Oio",
+ "05" => "Bolama",
+ "06" => "Cacheu",
+ "07" => "Tombali",
+ "10" => "Gabu",
+ "11" => "Bissau",
+ "12" => "Biombo"),
+"GY" => array(
+ "10" => "Barima-Waini",
+ "11" => "Cuyuni-Mazaruni",
+ "12" => "Demerara-Mahaica",
+ "13" => "East Berbice-Corentyne",
+ "14" => "Essequibo Islands-West Demerara",
+ "15" => "Mahaica-Berbice",
+ "16" => "Pomeroon-Supenaam",
+ "17" => "Potaro-Siparuni",
+ "18" => "Upper Demerara-Berbice",
+ "19" => "Upper Takutu-Upper Essequibo"),
+"HN" => array(
+ "01" => "Atlantida",
+ "02" => "Choluteca",
+ "03" => "Colon",
+ "04" => "Comayagua",
+ "05" => "Copan",
+ "06" => "Cortes",
+ "07" => "El Paraiso",
+ "08" => "Francisco Morazan",
+ "09" => "Gracias a Dios",
+ "10" => "Intibuca",
+ "11" => "Islas de la Bahia",
+ "12" => "La Paz",
+ "13" => "Lempira",
+ "14" => "Ocotepeque",
+ "15" => "Olancho",
+ "16" => "Santa Barbara",
+ "17" => "Valle",
+ "18" => "Yoro"),
+"HR" => array(
+ "01" => "Bjelovarsko-Bilogorska",
+ "02" => "Brodsko-Posavska",
+ "03" => "Dubrovacko-Neretvanska",
+ "04" => "Istarska",
+ "05" => "Karlovacka",
+ "06" => "Koprivnicko-Krizevacka",
+ "07" => "Krapinsko-Zagorska",
+ "08" => "Licko-Senjska",
+ "09" => "Medimurska",
+ "10" => "Osjecko-Baranjska",
+ "11" => "Pozesko-Slavonska",
+ "12" => "Primorsko-Goranska",
+ "13" => "Sibensko-Kninska",
+ "14" => "Sisacko-Moslavacka",
+ "15" => "Splitsko-Dalmatinska",
+ "16" => "Varazdinska",
+ "17" => "Viroviticko-Podravska",
+ "18" => "Vukovarsko-Srijemska",
+ "19" => "Zadarska",
+ "20" => "Zagrebacka",
+ "21" => "Grad Zagreb"),
+"HT" => array(
+ "03" => "Nord-Ouest",
+ "06" => "Artibonite",
+ "07" => "Centre",
+ "09" => "Nord",
+ "10" => "Nord-Est",
+ "11" => "Ouest",
+ "12" => "Sud",
+ "13" => "Sud-Est",
+ "14" => "Grand' Anse",
+ "15" => "Nippes"),
+"HU" => array(
+ "01" => "Bacs-Kiskun",
+ "02" => "Baranya",
+ "03" => "Bekes",
+ "04" => "Borsod-Abauj-Zemplen",
+ "05" => "Budapest",
+ "06" => "Csongrad",
+ "07" => "Debrecen",
+ "08" => "Fejer",
+ "09" => "Gyor-Moson-Sopron",
+ "10" => "Hajdu-Bihar",
+ "11" => "Heves",
+ "12" => "Komarom-Esztergom",
+ "13" => "Miskolc",
+ "14" => "Nograd",
+ "15" => "Pecs",
+ "16" => "Pest",
+ "17" => "Somogy",
+ "18" => "Szabolcs-Szatmar-Bereg",
+ "19" => "Szeged",
+ "20" => "Jasz-Nagykun-Szolnok",
+ "21" => "Tolna",
+ "22" => "Vas",
+ "23" => "Veszprem",
+ "24" => "Zala",
+ "25" => "Gyor",
+ "26" => "Bekescsaba",
+ "27" => "Dunaujvaros",
+ "28" => "Eger",
+ "29" => "Hodmezovasarhely",
+ "30" => "Kaposvar",
+ "31" => "Kecskemet",
+ "32" => "Nagykanizsa",
+ "33" => "Nyiregyhaza",
+ "34" => "Sopron",
+ "35" => "Szekesfehervar",
+ "36" => "Szolnok",
+ "37" => "Szombathely",
+ "38" => "Tatabanya",
+ "39" => "Veszprem",
+ "40" => "Zalaegerszeg",
+ "41" => "Salgotarjan",
+ "42" => "Szekszard"),
+"ID" => array(
+ "01" => "Aceh",
+ "02" => "Bali",
+ "03" => "Bengkulu",
+ "04" => "Jakarta Raya",
+ "05" => "Jambi",
+ "06" => "Jawa Barat",
+ "07" => "Jawa Tengah",
+ "08" => "Jawa Timur",
+ "09" => "Papua",
+ "10" => "Yogyakarta",
+ "11" => "Kalimantan Barat",
+ "12" => "Kalimantan Selatan",
+ "13" => "Kalimantan Tengah",
+ "14" => "Kalimantan Timur",
+ "15" => "Lampung",
+ "16" => "Maluku",
+ "17" => "Nusa Tenggara Barat",
+ "18" => "Nusa Tenggara Timur",
+ "19" => "Riau",
+ "20" => "Sulawesi Selatan",
+ "21" => "Sulawesi Tengah",
+ "22" => "Sulawesi Tenggara",
+ "23" => "Sulawesi Utara",
+ "24" => "Sumatera Barat",
+ "25" => "Sumatera Selatan",
+ "26" => "Sumatera Utara",
+ "28" => "Maluku",
+ "29" => "Maluku Utara",
+ "30" => "Jawa Barat",
+ "31" => "Sulawesi Utara",
+ "32" => "Sumatera Selatan",
+ "33" => "Banten",
+ "34" => "Gorontalo",
+ "35" => "Kepulauan Bangka Belitung",
+ "36" => "Papua",
+ "37" => "Riau",
+ "38" => "Sulawesi Selatan",
+ "39" => "Irian Jaya Barat",
+ "40" => "Kepulauan Riau",
+ "41" => "Sulawesi Barat"),
+"IE" => array(
+ "01" => "Carlow",
+ "02" => "Cavan",
+ "03" => "Clare",
+ "04" => "Cork",
+ "06" => "Donegal",
+ "07" => "Dublin",
+ "10" => "Galway",
+ "11" => "Kerry",
+ "12" => "Kildare",
+ "13" => "Kilkenny",
+ "14" => "Leitrim",
+ "15" => "Laois",
+ "16" => "Limerick",
+ "18" => "Longford",
+ "19" => "Louth",
+ "20" => "Mayo",
+ "21" => "Meath",
+ "22" => "Monaghan",
+ "23" => "Offaly",
+ "24" => "Roscommon",
+ "25" => "Sligo",
+ "26" => "Tipperary",
+ "27" => "Waterford",
+ "29" => "Westmeath",
+ "30" => "Wexford",
+ "31" => "Wicklow"),
+"IL" => array(
+ "01" => "HaDarom",
+ "02" => "HaMerkaz",
+ "03" => "HaZafon",
+ "04" => "Hefa",
+ "05" => "Tel Aviv",
+ "06" => "Yerushalayim"),
+"IN" => array(
+ "01" => "Andaman and Nicobar Islands",
+ "02" => "Andhra Pradesh",
+ "03" => "Assam",
+ "05" => "Chandigarh",
+ "06" => "Dadra and Nagar Haveli",
+ "07" => "Delhi",
+ "09" => "Gujarat",
+ "10" => "Haryana",
+ "11" => "Himachal Pradesh",
+ "12" => "Jammu and Kashmir",
+ "13" => "Kerala",
+ "14" => "Lakshadweep",
+ "16" => "Maharashtra",
+ "17" => "Manipur",
+ "18" => "Meghalaya",
+ "19" => "Karnataka",
+ "20" => "Nagaland",
+ "21" => "Orissa",
+ "22" => "Puducherry",
+ "23" => "Punjab",
+ "24" => "Rajasthan",
+ "25" => "Tamil Nadu",
+ "26" => "Tripura",
+ "28" => "West Bengal",
+ "29" => "Sikkim",
+ "30" => "Arunachal Pradesh",
+ "31" => "Mizoram",
+ "32" => "Daman and Diu",
+ "33" => "Goa",
+ "34" => "Bihar",
+ "35" => "Madhya Pradesh",
+ "36" => "Uttar Pradesh",
+ "37" => "Chhattisgarh",
+ "38" => "Jharkhand",
+ "39" => "Uttarakhand"),
+"IQ" => array(
+ "01" => "Al Anbar",
+ "02" => "Al Basrah",
+ "03" => "Al Muthanna",
+ "04" => "Al Qadisiyah",
+ "05" => "As Sulaymaniyah",
+ "06" => "Babil",
+ "07" => "Baghdad",
+ "08" => "Dahuk",
+ "09" => "Dhi Qar",
+ "10" => "Diyala",
+ "11" => "Arbil",
+ "12" => "Karbala'",
+ "13" => "At Ta'mim",
+ "14" => "Maysan",
+ "15" => "Ninawa",
+ "16" => "Wasit",
+ "17" => "An Najaf",
+ "18" => "Salah ad Din"),
+"IR" => array(
+ "01" => "Azarbayjan-e Bakhtari",
+ "02" => "Azarbayjan-e Khavari",
+ "03" => "Chahar Mahall va Bakhtiari",
+ "04" => "Sistan va Baluchestan",
+ "05" => "Kohkiluyeh va Buyer Ahmadi",
+ "07" => "Fars",
+ "08" => "Gilan",
+ "09" => "Hamadan",
+ "10" => "Ilam",
+ "11" => "Hormozgan",
+ "12" => "Kerman",
+ "13" => "Bakhtaran",
+ "15" => "Khuzestan",
+ "16" => "Kordestan",
+ "17" => "Mazandaran",
+ "18" => "Semnan Province",
+ "19" => "Markazi",
+ "21" => "Zanjan",
+ "22" => "Bushehr",
+ "23" => "Lorestan",
+ "24" => "Markazi",
+ "25" => "Semnan",
+ "26" => "Tehran",
+ "27" => "Zanjan",
+ "28" => "Esfahan",
+ "29" => "Kerman",
+ "30" => "Khorasan",
+ "31" => "Yazd",
+ "32" => "Ardabil",
+ "33" => "East Azarbaijan",
+ "34" => "Markazi",
+ "35" => "Mazandaran",
+ "36" => "Zanjan",
+ "37" => "Golestan",
+ "38" => "Qazvin",
+ "39" => "Qom",
+ "40" => "Yazd",
+ "41" => "Khorasan-e Janubi",
+ "42" => "Khorasan-e Razavi",
+ "43" => "Khorasan-e Shemali"),
+"IS" => array(
+ "03" => "Arnessysla",
+ "05" => "Austur-Hunavatnssysla",
+ "06" => "Austur-Skaftafellssysla",
+ "07" => "Borgarfjardarsysla",
+ "09" => "Eyjafjardarsysla",
+ "10" => "Gullbringusysla",
+ "15" => "Kjosarsysla",
+ "17" => "Myrasysla",
+ "20" => "Nordur-Mulasysla",
+ "21" => "Nordur-Tingeyjarsysla",
+ "23" => "Rangarvallasysla",
+ "28" => "Skagafjardarsysla",
+ "29" => "Snafellsnes- og Hnappadalssysla",
+ "30" => "Strandasysla",
+ "31" => "Sudur-Mulasysla",
+ "32" => "Sudur-Tingeyjarsysla",
+ "34" => "Vestur-Bardastrandarsysla",
+ "35" => "Vestur-Hunavatnssysla",
+ "36" => "Vestur-Isafjardarsysla",
+ "37" => "Vestur-Skaftafellssysla",
+ "40" => "Norourland Eystra",
+ "41" => "Norourland Vestra",
+ "42" => "Suourland",
+ "43" => "Suournes",
+ "44" => "Vestfiroir",
+ "45" => "Vesturland"),
+"IT" => array(
+ "01" => "Abruzzi",
+ "02" => "Basilicata",
+ "03" => "Calabria",
+ "04" => "Campania",
+ "05" => "Emilia-Romagna",
+ "06" => "Friuli-Venezia Giulia",
+ "07" => "Lazio",
+ "08" => "Liguria",
+ "09" => "Lombardia",
+ "10" => "Marche",
+ "11" => "Molise",
+ "12" => "Piemonte",
+ "13" => "Puglia",
+ "14" => "Sardegna",
+ "15" => "Sicilia",
+ "16" => "Toscana",
+ "17" => "Trentino-Alto Adige",
+ "18" => "Umbria",
+ "19" => "Valle d'Aosta",
+ "20" => "Veneto"),
+"JM" => array(
+ "01" => "Clarendon",
+ "02" => "Hanover",
+ "04" => "Manchester",
+ "07" => "Portland",
+ "08" => "Saint Andrew",
+ "09" => "Saint Ann",
+ "10" => "Saint Catherine",
+ "11" => "Saint Elizabeth",
+ "12" => "Saint James",
+ "13" => "Saint Mary",
+ "14" => "Saint Thomas",
+ "15" => "Trelawny",
+ "16" => "Westmoreland",
+ "17" => "Kingston"),
+"JO" => array(
+ "02" => "Al Balqa'",
+ "07" => "Ma",
+ "09" => "Al Karak",
+ "10" => "Al Mafraq",
+ "11" => "Amman Governorate",
+ "12" => "At Tafilah",
+ "13" => "Az Zarqa",
+ "14" => "Irbid",
+ "16" => "Amman"),
+"JP" => array(
+ "01" => "Aichi",
+ "02" => "Akita",
+ "03" => "Aomori",
+ "04" => "Chiba",
+ "05" => "Ehime",
+ "06" => "Fukui",
+ "07" => "Fukuoka",
+ "08" => "Fukushima",
+ "09" => "Gifu",
+ "10" => "Gumma",
+ "11" => "Hiroshima",
+ "12" => "Hokkaido",
+ "13" => "Hyogo",
+ "14" => "Ibaraki",
+ "15" => "Ishikawa",
+ "16" => "Iwate",
+ "17" => "Kagawa",
+ "18" => "Kagoshima",
+ "19" => "Kanagawa",
+ "20" => "Kochi",
+ "21" => "Kumamoto",
+ "22" => "Kyoto",
+ "23" => "Mie",
+ "24" => "Miyagi",
+ "25" => "Miyazaki",
+ "26" => "Nagano",
+ "27" => "Nagasaki",
+ "28" => "Nara",
+ "29" => "Niigata",
+ "30" => "Oita",
+ "31" => "Okayama",
+ "32" => "Osaka",
+ "33" => "Saga",
+ "34" => "Saitama",
+ "35" => "Shiga",
+ "36" => "Shimane",
+ "37" => "Shizuoka",
+ "38" => "Tochigi",
+ "39" => "Tokushima",
+ "40" => "Tokyo",
+ "41" => "Tottori",
+ "42" => "Toyama",
+ "43" => "Wakayama",
+ "44" => "Yamagata",
+ "45" => "Yamaguchi",
+ "46" => "Yamanashi",
+ "47" => "Okinawa"),
+"KE" => array(
+ "01" => "Central",
+ "02" => "Coast",
+ "03" => "Eastern",
+ "05" => "Nairobi Area",
+ "06" => "North-Eastern",
+ "07" => "Nyanza",
+ "08" => "Rift Valley",
+ "09" => "Western"),
+"KG" => array(
+ "01" => "Bishkek",
+ "02" => "Chuy",
+ "03" => "Jalal-Abad",
+ "04" => "Naryn",
+ "05" => "Osh",
+ "06" => "Talas",
+ "07" => "Ysyk-Kol",
+ "08" => "Osh",
+ "09" => "Batken"),
+"KH" => array(
+ "00" => "Banteay Meanchey",
+ "01" => "Batdambang",
+ "02" => "Kampong Cham",
+ "03" => "Kampong Chhnang",
+ "04" => "Kampong Speu",
+ "05" => "Kampong Thum",
+ "06" => "Kampot",
+ "07" => "Kandal",
+ "08" => "Koh Kong",
+ "09" => "Kracheh",
+ "10" => "Mondulkiri",
+ "11" => "Phnum Penh",
+ "12" => "Pursat",
+ "13" => "Preah Vihear",
+ "14" => "Prey Veng",
+ "15" => "Ratanakiri Kiri",
+ "16" => "Siem Reap",
+ "17" => "Stung Treng",
+ "18" => "Svay Rieng",
+ "19" => "Takeo",
+ "29" => "Batdambang",
+ "30" => "Pailin"),
+"KI" => array(
+ "01" => "Gilbert Islands",
+ "02" => "Line Islands",
+ "03" => "Phoenix Islands"),
+"KM" => array(
+ "01" => "Anjouan",
+ "02" => "Grande Comore",
+ "03" => "Moheli"),
+"KN" => array(
+ "01" => "Christ Church Nichola Town",
+ "02" => "Saint Anne Sandy Point",
+ "03" => "Saint George Basseterre",
+ "04" => "Saint George Gingerland",
+ "05" => "Saint James Windward",
+ "06" => "Saint John Capisterre",
+ "07" => "Saint John Figtree",
+ "08" => "Saint Mary Cayon",
+ "09" => "Saint Paul Capisterre",
+ "10" => "Saint Paul Charlestown",
+ "11" => "Saint Peter Basseterre",
+ "12" => "Saint Thomas Lowland",
+ "13" => "Saint Thomas Middle Island",
+ "15" => "Trinity Palmetto Point"),
+"KP" => array(
+ "01" => "Chagang-do",
+ "03" => "Hamgyong-namdo",
+ "06" => "Hwanghae-namdo",
+ "07" => "Hwanghae-bukto",
+ "08" => "Kaesong-si",
+ "09" => "Kangwon-do",
+ "11" => "P'yongan-bukto",
+ "12" => "P'yongyang-si",
+ "13" => "Yanggang-do",
+ "14" => "Namp'o-si",
+ "15" => "P'yongan-namdo",
+ "17" => "Hamgyong-bukto",
+ "18" => "Najin Sonbong-si"),
+"KR" => array(
+ "01" => "Cheju-do",
+ "03" => "Cholla-bukto",
+ "05" => "Ch'ungch'ong-bukto",
+ "06" => "Kangwon-do",
+ "10" => "Pusan-jikhalsi",
+ "11" => "Seoul-t'ukpyolsi",
+ "12" => "Inch'on-jikhalsi",
+ "13" => "Kyonggi-do",
+ "14" => "Kyongsang-bukto",
+ "15" => "Taegu-jikhalsi",
+ "16" => "Cholla-namdo",
+ "17" => "Ch'ungch'ong-namdo",
+ "18" => "Kwangju-jikhalsi",
+ "19" => "Taejon-jikhalsi",
+ "20" => "Kyongsang-namdo",
+ "21" => "Ulsan-gwangyoksi"),
+"KW" => array(
+ "01" => "Al Ahmadi",
+ "02" => "Al Kuwayt",
+ "05" => "Al Jahra",
+ "07" => "Al Farwaniyah",
+ "08" => "Hawalli",
+ "09" => "Mubarak al Kabir"),
+"KY" => array(
+ "01" => "Creek",
+ "02" => "Eastern",
+ "03" => "Midland",
+ "04" => "South Town",
+ "05" => "Spot Bay",
+ "06" => "Stake Bay",
+ "07" => "West End",
+ "08" => "Western"),
+"KZ" => array(
+ "01" => "Almaty",
+ "02" => "Almaty City",
+ "03" => "Aqmola",
+ "04" => "Aqtobe",
+ "05" => "Astana",
+ "06" => "Atyrau",
+ "07" => "West Kazakhstan",
+ "08" => "Bayqonyr",
+ "09" => "Mangghystau",
+ "10" => "South Kazakhstan",
+ "11" => "Pavlodar",
+ "12" => "Qaraghandy",
+ "13" => "Qostanay",
+ "14" => "Qyzylorda",
+ "15" => "East Kazakhstan",
+ "16" => "North Kazakhstan",
+ "17" => "Zhambyl"),
+"LA" => array(
+ "01" => "Attapu",
+ "02" => "Champasak",
+ "03" => "Houaphan",
+ "04" => "Khammouan",
+ "05" => "Louang Namtha",
+ "07" => "Oudomxai",
+ "08" => "Phongsali",
+ "09" => "Saravan",
+ "10" => "Savannakhet",
+ "11" => "Vientiane",
+ "13" => "Xaignabouri",
+ "14" => "Xiangkhoang",
+ "17" => "Louangphrabang"),
+"LB" => array(
+ "01" => "Beqaa",
+ "02" => "Al Janub",
+ "03" => "Liban-Nord",
+ "04" => "Beyrouth",
+ "05" => "Mont-Liban",
+ "06" => "Liban-Sud",
+ "07" => "Nabatiye",
+ "08" => "Beqaa",
+ "09" => "Liban-Nord",
+ "10" => "Aakk,r",
+ "11" => "Baalbek-Hermel"),
+"LC" => array(
+ "01" => "Anse-la-Raye",
+ "02" => "Dauphin",
+ "03" => "Castries",
+ "04" => "Choiseul",
+ "05" => "Dennery",
+ "06" => "Gros-Islet",
+ "07" => "Laborie",
+ "08" => "Micoud",
+ "09" => "Soufriere",
+ "10" => "Vieux-Fort",
+ "11" => "Praslin"),
+"LI" => array(
+ "01" => "Balzers",
+ "02" => "Eschen",
+ "03" => "Gamprin",
+ "04" => "Mauren",
+ "05" => "Planken",
+ "06" => "Ruggell",
+ "07" => "Schaan",
+ "08" => "Schellenberg",
+ "09" => "Triesen",
+ "10" => "Triesenberg",
+ "11" => "Vaduz",
+ "21" => "Gbarpolu",
+ "22" => "River Gee"),
+"LK" => array(
+ "01" => "Amparai",
+ "02" => "Anuradhapura",
+ "03" => "Badulla",
+ "04" => "Batticaloa",
+ "06" => "Galle",
+ "07" => "Hambantota",
+ "09" => "Kalutara",
+ "10" => "Kandy",
+ "11" => "Kegalla",
+ "12" => "Kurunegala",
+ "14" => "Matale",
+ "15" => "Matara",
+ "16" => "Moneragala",
+ "17" => "Nuwara Eliya",
+ "18" => "Polonnaruwa",
+ "19" => "Puttalam",
+ "20" => "Ratnapura",
+ "21" => "Trincomalee",
+ "23" => "Colombo",
+ "24" => "Gampaha",
+ "25" => "Jaffna",
+ "26" => "Mannar",
+ "27" => "Mullaittivu",
+ "28" => "Vavuniya",
+ "29" => "Central",
+ "30" => "North Central",
+ "31" => "Northern",
+ "32" => "North Western",
+ "33" => "Sabaragamuwa",
+ "34" => "Southern",
+ "35" => "Uva",
+ "36" => "Western"),
+"LR" => array(
+ "01" => "Bong",
+ "04" => "Grand Cape Mount",
+ "05" => "Lofa",
+ "06" => "Maryland",
+ "07" => "Monrovia",
+ "09" => "Nimba",
+ "10" => "Sino",
+ "11" => "Grand Bassa",
+ "12" => "Grand Cape Mount",
+ "13" => "Maryland",
+ "14" => "Montserrado",
+ "17" => "Margibi",
+ "18" => "River Cess",
+ "19" => "Grand Gedeh",
+ "20" => "Lofa",
+ "21" => "Gbarpolu",
+ "22" => "River Gee"),
+"LS" => array(
+ "10" => "Berea",
+ "11" => "Butha-Buthe",
+ "12" => "Leribe",
+ "13" => "Mafeteng",
+ "14" => "Maseru",
+ "15" => "Mohales Hoek",
+ "16" => "Mokhotlong",
+ "17" => "Qachas Nek",
+ "18" => "Quthing",
+ "19" => "Thaba-Tseka"),
+"LT" => array(
+ "56" => "Alytaus Apskritis",
+ "57" => "Kauno Apskritis",
+ "58" => "Klaipedos Apskritis",
+ "59" => "Marijampoles Apskritis",
+ "60" => "Panevezio Apskritis",
+ "61" => "Siauliu Apskritis",
+ "62" => "Taurages Apskritis",
+ "63" => "Telsiu Apskritis",
+ "64" => "Utenos Apskritis",
+ "65" => "Vilniaus Apskritis"),
+"LU" => array(
+ "01" => "Diekirch",
+ "02" => "Grevenmacher",
+ "03" => "Luxembourg"),
+"LV" => array(
+ "01" => "Aizkraukles",
+ "02" => "Aluksnes",
+ "03" => "Balvu",
+ "04" => "Bauskas",
+ "05" => "Cesu",
+ "06" => "Daugavpils",
+ "07" => "Daugavpils",
+ "08" => "Dobeles",
+ "09" => "Gulbenes",
+ "10" => "Jekabpils",
+ "11" => "Jelgava",
+ "12" => "Jelgavas",
+ "13" => "Jurmala",
+ "14" => "Kraslavas",
+ "15" => "Kuldigas",
+ "16" => "Liepaja",
+ "17" => "Liepajas",
+ "18" => "Limbazu",
+ "19" => "Ludzas",
+ "20" => "Madonas",
+ "21" => "Ogres",
+ "22" => "Preilu",
+ "23" => "Rezekne",
+ "24" => "Rezeknes",
+ "25" => "Riga",
+ "26" => "Rigas",
+ "27" => "Saldus",
+ "28" => "Talsu",
+ "29" => "Tukuma",
+ "30" => "Valkas",
+ "31" => "Valmieras",
+ "32" => "Ventspils",
+ "33" => "Ventspils"),
+"LY" => array(
+ "03" => "Al Aziziyah",
+ "05" => "Al Jufrah",
+ "08" => "Al Kufrah",
+ "13" => "Ash Shati'",
+ "30" => "Murzuq",
+ "34" => "Sabha",
+ "41" => "Tarhunah",
+ "42" => "Tubruq",
+ "45" => "Zlitan",
+ "47" => "Ajdabiya",
+ "48" => "Al Fatih",
+ "49" => "Al Jabal al Akhdar",
+ "50" => "Al Khums",
+ "51" => "An Nuqat al Khams",
+ "52" => "Awbari",
+ "53" => "Az Zawiyah",
+ "54" => "Banghazi",
+ "55" => "Darnah",
+ "56" => "Ghadamis",
+ "57" => "Gharyan",
+ "58" => "Misratah",
+ "59" => "Sawfajjin",
+ "60" => "Surt",
+ "61" => "Tarabulus",
+ "62" => "Yafran"),
+"MA" => array(
+ "01" => "Agadir",
+ "02" => "Al Hoceima",
+ "03" => "Azilal",
+ "04" => "Ben Slimane",
+ "05" => "Beni Mellal",
+ "06" => "Boulemane",
+ "07" => "Casablanca",
+ "08" => "Chaouen",
+ "09" => "El Jadida",
+ "10" => "El Kelaa des Srarhna",
+ "11" => "Er Rachidia",
+ "12" => "Essaouira",
+ "13" => "Fes",
+ "14" => "Figuig",
+ "15" => "Kenitra",
+ "16" => "Khemisset",
+ "17" => "Khenifra",
+ "18" => "Khouribga",
+ "19" => "Marrakech",
+ "20" => "Meknes",
+ "21" => "Nador",
+ "22" => "Ouarzazate",
+ "23" => "Oujda",
+ "24" => "Rabat-Sale",
+ "25" => "Safi",
+ "26" => "Settat",
+ "27" => "Tanger",
+ "29" => "Tata",
+ "30" => "Taza",
+ "32" => "Tiznit",
+ "33" => "Guelmim",
+ "34" => "Ifrane",
+ "35" => "Laayoune",
+ "36" => "Tan-Tan",
+ "37" => "Taounate",
+ "38" => "Sidi Kacem",
+ "39" => "Taroudannt",
+ "40" => "Tetouan",
+ "41" => "Larache",
+ "45" => "Grand Casablanca",
+ "46" => "Fes-Boulemane",
+ "47" => "Marrakech-Tensift-Al Haouz",
+ "48" => "Meknes-Tafilalet",
+ "49" => "Rabat-Sale-Zemmour-Zaer",
+ "50" => "Chaouia-Ouardigha",
+ "51" => "Doukkala-Abda",
+ "52" => "Gharb-Chrarda-Beni Hssen",
+ "53" => "Guelmim-Es Smara",
+ "54" => "Oriental",
+ "55" => "Souss-Massa-Dr,a",
+ "56" => "Tadla-Azilal",
+ "57" => "Tanger-Tetouan",
+ "58" => "Taza-Al Hoceima-Taounate",
+ "59" => "La,youne-Boujdour-Sakia El Hamra"),
+"MC" => array(
+ "01" => "La Condamine",
+ "02" => "Monaco",
+ "03" => "Monte-Carlo"),
+"MD" => array(
+ "46" => "Balti",
+ "47" => "Cahul",
+ "48" => "Chisinau",
+ "49" => "Stinga Nistrului",
+ "50" => "Edinet",
+ "51" => "Gagauzia",
+ "52" => "Lapusna",
+ "53" => "Orhei",
+ "54" => "Soroca",
+ "55" => "Tighina",
+ "56" => "Ungheni",
+ "58" => "Stinga Nistrului",
+ "59" => "Anenii Noi",
+ "60" => "Balti",
+ "61" => "Basarabeasca",
+ "62" => "Bender",
+ "63" => "Briceni",
+ "64" => "Cahul",
+ "65" => "Cantemir",
+ "66" => "Calarasi",
+ "67" => "Causeni",
+ "68" => "Cimislia",
+ "69" => "Criuleni",
+ "70" => "Donduseni",
+ "71" => "Drochia",
+ "72" => "Dubasari",
+ "73" => "Edinet",
+ "74" => "Falesti",
+ "75" => "Floresti",
+ "76" => "Glodeni",
+ "77" => "Hincesti",
+ "78" => "Ialoveni",
+ "79" => "Leova",
+ "80" => "Nisporeni",
+ "81" => "Ocnita",
+ "83" => "Rezina",
+ "84" => "Riscani",
+ "85" => "Singerei",
+ "86" => "Soldanesti",
+ "87" => "Soroca",
+ "88" => "Stefan-Voda",
+ "89" => "Straseni",
+ "90" => "Taraclia",
+ "91" => "Telenesti",
+ "92" => "Ungheni"),
+"MG" => array(
+ "01" => "Antsiranana",
+ "02" => "Fianarantsoa",
+ "03" => "Mahajanga",
+ "04" => "Toamasina",
+ "05" => "Antananarivo",
+ "06" => "Toliara"),
+"MK" => array(
+ "01" => "Aracinovo",
+ "02" => "Bac",
+ "03" => "Belcista",
+ "04" => "Berovo",
+ "05" => "Bistrica",
+ "06" => "Bitola",
+ "07" => "Blatec",
+ "08" => "Bogdanci",
+ "09" => "Bogomila",
+ "10" => "Bogovinje",
+ "11" => "Bosilovo",
+ "12" => "Brvenica",
+ "13" => "Cair",
+ "14" => "Capari",
+ "15" => "Caska",
+ "16" => "Cegrane",
+ "17" => "Centar",
+ "18" => "Centar Zupa",
+ "19" => "Cesinovo",
+ "20" => "Cucer-Sandevo",
+ "21" => "Debar",
+ "22" => "Delcevo",
+ "23" => "Delogozdi",
+ "24" => "Demir Hisar",
+ "25" => "Demir Kapija",
+ "26" => "Dobrusevo",
+ "27" => "Dolna Banjica",
+ "28" => "Dolneni",
+ "29" => "Dorce Petrov",
+ "30" => "Drugovo",
+ "31" => "Dzepciste",
+ "32" => "Gazi Baba",
+ "33" => "Gevgelija",
+ "34" => "Gostivar",
+ "35" => "Gradsko",
+ "36" => "Ilinden",
+ "37" => "Izvor",
+ "38" => "Jegunovce",
+ "39" => "Kamenjane",
+ "40" => "Karbinci",
+ "41" => "Karpos",
+ "42" => "Kavadarci",
+ "43" => "Kicevo",
+ "44" => "Kisela Voda",
+ "45" => "Klecevce",
+ "46" => "Kocani",
+ "47" => "Konce",
+ "48" => "Kondovo",
+ "49" => "Konopiste",
+ "50" => "Kosel",
+ "51" => "Kratovo",
+ "52" => "Kriva Palanka",
+ "53" => "Krivogastani",
+ "54" => "Krusevo",
+ "55" => "Kuklis",
+ "56" => "Kukurecani",
+ "57" => "Kumanovo",
+ "58" => "Labunista",
+ "59" => "Lipkovo",
+ "60" => "Lozovo",
+ "61" => "Lukovo",
+ "62" => "Makedonska Kamenica",
+ "63" => "Makedonski Brod",
+ "64" => "Mavrovi Anovi",
+ "65" => "Meseista",
+ "66" => "Miravci",
+ "67" => "Mogila",
+ "68" => "Murtino",
+ "69" => "Negotino",
+ "70" => "Negotino-Polosko",
+ "71" => "Novaci",
+ "72" => "Novo Selo",
+ "73" => "Oblesevo",
+ "74" => "Ohrid",
+ "75" => "Orasac",
+ "76" => "Orizari",
+ "77" => "Oslomej",
+ "78" => "Pehcevo",
+ "79" => "Petrovec",
+ "80" => "Plasnica",
+ "81" => "Podares",
+ "82" => "Prilep",
+ "83" => "Probistip",
+ "84" => "Radovis",
+ "85" => "Rankovce",
+ "86" => "Resen",
+ "87" => "Rosoman",
+ "88" => "Rostusa",
+ "89" => "Samokov",
+ "90" => "Saraj",
+ "91" => "Sipkovica",
+ "92" => "Sopiste",
+ "93" => "Sopotnica",
+ "94" => "Srbinovo",
+ "95" => "Staravina",
+ "96" => "Star Dojran",
+ "97" => "Staro Nagoricane",
+ "98" => "Stip",
+ "99" => "Struga",
+ "A1" => "Strumica",
+ "A2" => "Studenicani",
+ "A3" => "Suto Orizari",
+ "A4" => "Sveti Nikole",
+ "A5" => "Tearce",
+ "A6" => "Tetovo",
+ "A7" => "Topolcani",
+ "A8" => "Valandovo",
+ "A9" => "Vasilevo",
+ "B1" => "Veles",
+ "B2" => "Velesta",
+ "B3" => "Vevcani",
+ "B4" => "Vinica",
+ "B5" => "Vitoliste",
+ "B6" => "Vranestica",
+ "B7" => "Vrapciste",
+ "B8" => "Vratnica",
+ "B9" => "Vrutok",
+ "C1" => "Zajas",
+ "C2" => "Zelenikovo",
+ "C3" => "Zelino",
+ "C4" => "Zitose",
+ "C5" => "Zletovo",
+ "C6" => "Zrnovci"),
+"ML" => array(
+ "01" => "Bamako",
+ "03" => "Kayes",
+ "04" => "Mopti",
+ "05" => "Segou",
+ "06" => "Sikasso",
+ "07" => "Koulikoro",
+ "08" => "Tombouctou",
+ "09" => "Gao",
+ "10" => "Kidal"),
+"MM" => array(
+ "01" => "Rakhine State",
+ "02" => "Chin State",
+ "03" => "Irrawaddy",
+ "04" => "Kachin State",
+ "05" => "Karan State",
+ "06" => "Kayah State",
+ "07" => "Magwe",
+ "08" => "Mandalay",
+ "09" => "Pegu",
+ "10" => "Sagaing",
+ "11" => "Shan State",
+ "12" => "Tenasserim",
+ "13" => "Mon State",
+ "14" => "Rangoon",
+ "17" => "Yangon"),
+"MN" => array(
+ "01" => "Arhangay",
+ "02" => "Bayanhongor",
+ "03" => "Bayan-Olgiy",
+ "05" => "Darhan",
+ "06" => "Dornod",
+ "07" => "Dornogovi",
+ "08" => "Dundgovi",
+ "09" => "Dzavhan",
+ "10" => "Govi-Altay",
+ "11" => "Hentiy",
+ "12" => "Hovd",
+ "13" => "Hovsgol",
+ "14" => "Omnogovi",
+ "15" => "Ovorhangay",
+ "16" => "Selenge",
+ "17" => "Suhbaatar",
+ "18" => "Tov",
+ "19" => "Uvs",
+ "20" => "Ulaanbaatar",
+ "21" => "Bulgan",
+ "22" => "Erdenet",
+ "23" => "Darhan-Uul",
+ "24" => "Govisumber",
+ "25" => "Orhon"),
+"MO" => array(
+ "01" => "Ilhas",
+ "02" => "Macau"),
+"MR" => array(
+ "01" => "Hodh Ech Chargui",
+ "02" => "Hodh El Gharbi",
+ "03" => "Assaba",
+ "04" => "Gorgol",
+ "05" => "Brakna",
+ "06" => "Trarza",
+ "07" => "Adrar",
+ "08" => "Dakhlet Nouadhibou",
+ "09" => "Tagant",
+ "10" => "Guidimaka",
+ "11" => "Tiris Zemmour",
+ "12" => "Inchiri"),
+"MS" => array(
+ "01" => "Saint Anthony",
+ "02" => "Saint Georges",
+ "03" => "Saint Peter"),
+"MU" => array(
+ "12" => "Black River",
+ "13" => "Flacq",
+ "14" => "Grand Port",
+ "15" => "Moka",
+ "16" => "Pamplemousses",
+ "17" => "Plaines Wilhems",
+ "18" => "Port Louis",
+ "19" => "Riviere du Rempart",
+ "20" => "Savanne",
+ "21" => "Agalega Islands",
+ "22" => "Cargados Carajos",
+ "23" => "Rodrigues"),
+"MV" => array(
+ "01" => "Seenu",
+ "02" => "Aliff",
+ "03" => "Laviyani",
+ "04" => "Waavu",
+ "05" => "Laamu",
+ "07" => "Haa Aliff",
+ "08" => "Thaa",
+ "12" => "Meemu",
+ "13" => "Raa",
+ "14" => "Faafu",
+ "17" => "Daalu",
+ "20" => "Baa",
+ "23" => "Haa Daalu",
+ "24" => "Shaviyani",
+ "25" => "Noonu",
+ "26" => "Kaafu",
+ "27" => "Gaafu Aliff",
+ "28" => "Gaafu Daalu",
+ "29" => "Naviyani",
+ "40" => "Male"),
+"MW" => array(
+ "02" => "Chikwawa",
+ "03" => "Chiradzulu",
+ "04" => "Chitipa",
+ "05" => "Thyolo",
+ "06" => "Dedza",
+ "07" => "Dowa",
+ "08" => "Karonga",
+ "09" => "Kasungu",
+ "11" => "Lilongwe",
+ "12" => "Mangochi",
+ "13" => "Mchinji",
+ "15" => "Mzimba",
+ "16" => "Ntcheu",
+ "17" => "Nkhata Bay",
+ "18" => "Nkhotakota",
+ "19" => "Nsanje",
+ "20" => "Ntchisi",
+ "21" => "Rumphi",
+ "22" => "Salima",
+ "23" => "Zomba",
+ "24" => "Blantyre",
+ "25" => "Mwanza",
+ "26" => "Balaka",
+ "27" => "Likoma",
+ "28" => "Machinga",
+ "29" => "Mulanje",
+ "30" => "Phalombe"),
+"MX" => array(
+ "01" => "Aguascalientes",
+ "02" => "Baja California",
+ "03" => "Baja California Sur",
+ "04" => "Campeche",
+ "05" => "Chiapas",
+ "06" => "Chihuahua",
+ "07" => "Coahuila de Zaragoza",
+ "08" => "Colima",
+ "09" => "Distrito Federal",
+ "10" => "Durango",
+ "11" => "Guanajuato",
+ "12" => "Guerrero",
+ "13" => "Hidalgo",
+ "14" => "Jalisco",
+ "15" => "Mexico",
+ "16" => "Michoacan de Ocampo",
+ "17" => "Morelos",
+ "18" => "Nayarit",
+ "19" => "Nuevo Leon",
+ "20" => "Oaxaca",
+ "21" => "Puebla",
+ "22" => "Queretaro de Arteaga",
+ "23" => "Quintana Roo",
+ "24" => "San Luis Potosi",
+ "25" => "Sinaloa",
+ "26" => "Sonora",
+ "27" => "Tabasco",
+ "28" => "Tamaulipas",
+ "29" => "Tlaxcala",
+ "30" => "Veracruz-Llave",
+ "31" => "Yucatan",
+ "32" => "Zacatecas"),
+"MY" => array(
+ "01" => "Johor",
+ "02" => "Kedah",
+ "03" => "Kelantan",
+ "04" => "Melaka",
+ "05" => "Negeri Sembilan",
+ "06" => "Pahang",
+ "07" => "Perak",
+ "08" => "Perlis",
+ "09" => "Pulau Pinang",
+ "11" => "Sarawak",
+ "12" => "Selangor",
+ "13" => "Terengganu",
+ "14" => "Kuala Lumpur",
+ "15" => "Labuan",
+ "16" => "Sabah",
+ "17" => "Putrajaya"),
+"MZ" => array(
+ "01" => "Cabo Delgado",
+ "02" => "Gaza",
+ "03" => "Inhambane",
+ "04" => "Maputo",
+ "05" => "Sofala",
+ "06" => "Nampula",
+ "07" => "Niassa",
+ "08" => "Tete",
+ "09" => "Zambezia",
+ "10" => "Manica",
+ "11" => "Maputo"),
+"NA" => array(
+ "01" => "Bethanien",
+ "02" => "Caprivi Oos",
+ "03" => "Boesmanland",
+ "04" => "Gobabis",
+ "05" => "Grootfontein",
+ "06" => "Kaokoland",
+ "07" => "Karibib",
+ "08" => "Keetmanshoop",
+ "09" => "Luderitz",
+ "10" => "Maltahohe",
+ "11" => "Okahandja",
+ "12" => "Omaruru",
+ "13" => "Otjiwarongo",
+ "14" => "Outjo",
+ "15" => "Owambo",
+ "16" => "Rehoboth",
+ "17" => "Swakopmund",
+ "18" => "Tsumeb",
+ "20" => "Karasburg",
+ "21" => "Windhoek",
+ "22" => "Damaraland",
+ "23" => "Hereroland Oos",
+ "24" => "Hereroland Wes",
+ "25" => "Kavango",
+ "26" => "Mariental",
+ "27" => "Namaland",
+ "28" => "Caprivi",
+ "29" => "Erongo",
+ "30" => "Hardap",
+ "31" => "Karas",
+ "32" => "Kunene",
+ "33" => "Ohangwena",
+ "34" => "Okavango",
+ "35" => "Omaheke",
+ "36" => "Omusati",
+ "37" => "Oshana",
+ "38" => "Oshikoto",
+ "39" => "Otjozondjupa"),
+"NE" => array(
+ "01" => "Agadez",
+ "02" => "Diffa",
+ "03" => "Dosso",
+ "04" => "Maradi",
+ "05" => "Niamey",
+ "06" => "Tahoua",
+ "07" => "Zinder",
+ "08" => "Niamey"),
+"NG" => array(
+ "05" => "Lagos",
+ "10" => "Rivers",
+ "11" => "Federal Capital Territory",
+ "12" => "Gongola",
+ "16" => "Ogun",
+ "17" => "Ondo",
+ "18" => "Oyo",
+ "21" => "Akwa Ibom",
+ "22" => "Cross River",
+ "23" => "Kaduna",
+ "24" => "Katsina",
+ "25" => "Anambra",
+ "26" => "Benue",
+ "27" => "Borno",
+ "28" => "Imo",
+ "29" => "Kano",
+ "30" => "Kwara",
+ "31" => "Niger",
+ "32" => "Oyo",
+ "35" => "Adamawa",
+ "36" => "Delta",
+ "37" => "Edo",
+ "39" => "Jigawa",
+ "40" => "Kebbi",
+ "41" => "Kogi",
+ "42" => "Osun",
+ "43" => "Taraba",
+ "44" => "Yobe",
+ "45" => "Abia",
+ "46" => "Bauchi",
+ "47" => "Enugu",
+ "48" => "Ondo",
+ "49" => "Plateau",
+ "50" => "Rivers",
+ "51" => "Sokoto",
+ "52" => "Bayelsa",
+ "53" => "Ebonyi",
+ "54" => "Ekiti",
+ "55" => "Gombe",
+ "56" => "Nassarawa",
+ "57" => "Zamfara"),
+"NI" => array(
+ "01" => "Boaco",
+ "02" => "Carazo",
+ "03" => "Chinandega",
+ "04" => "Chontales",
+ "05" => "Esteli",
+ "06" => "Granada",
+ "07" => "Jinotega",
+ "08" => "Leon",
+ "09" => "Madriz",
+ "10" => "Managua",
+ "11" => "Masaya",
+ "12" => "Matagalpa",
+ "13" => "Nueva Segovia",
+ "14" => "Rio San Juan",
+ "15" => "Rivas",
+ "16" => "Zelaya",
+ "17" => "Autonoma Atlantico Norte",
+ "18" => "Region Autonoma Atlantico Sur"),
+"NL" => array(
+ "01" => "Drenthe",
+ "02" => "Friesland",
+ "03" => "Gelderland",
+ "04" => "Groningen",
+ "05" => "Limburg",
+ "06" => "Noord-Brabant",
+ "07" => "Noord-Holland",
+ "08" => "Overijssel",
+ "09" => "Utrecht",
+ "10" => "Zeeland",
+ "11" => "Zuid-Holland",
+ "12" => "Dronten",
+ "13" => "Zuidelijke IJsselmeerpolders",
+ "14" => "Lelystad",
+ "15" => "Overijssel",
+ "16" => "Flevoland"),
+"NO" => array(
+ "01" => "Akershus",
+ "02" => "Aust-Agder",
+ "04" => "Buskerud",
+ "05" => "Finnmark",
+ "06" => "Hedmark",
+ "07" => "Hordaland",
+ "08" => "More og Romsdal",
+ "09" => "Nordland",
+ "10" => "Nord-Trondelag",
+ "11" => "Oppland",
+ "12" => "Oslo",
+ "13" => "Ostfold",
+ "14" => "Rogaland",
+ "15" => "Sogn og Fjordane",
+ "16" => "Sor-Trondelag",
+ "17" => "Telemark",
+ "18" => "Troms",
+ "19" => "Vest-Agder",
+ "20" => "Vestfold"),
+"NP" => array(
+ "01" => "Bagmati",
+ "02" => "Bheri",
+ "03" => "Dhawalagiri",
+ "04" => "Gandaki",
+ "05" => "Janakpur",
+ "06" => "Karnali",
+ "07" => "Kosi",
+ "08" => "Lumbini",
+ "09" => "Mahakali",
+ "10" => "Mechi",
+ "11" => "Narayani",
+ "12" => "Rapti",
+ "13" => "Sagarmatha",
+ "14" => "Seti"),
+"NR" => array(
+ "01" => "Aiwo",
+ "02" => "Anabar",
+ "03" => "Anetan",
+ "04" => "Anibare",
+ "05" => "Baiti",
+ "06" => "Boe",
+ "07" => "Buada",
+ "08" => "Denigomodu",
+ "09" => "Ewa",
+ "10" => "Ijuw",
+ "11" => "Meneng",
+ "12" => "Nibok",
+ "13" => "Uaboe",
+ "14" => "Yaren"),
+"NZ" => array(
+ "10" => "Chatham Islands",
+ "85" => "Waikato",
+ "E7" => "Auckland",
+ "E8" => "Bay of Plenty",
+ "E9" => "Canterbury",
+ "F1" => "Gisborne",
+ "F2" => "Hawke's Bay",
+ "F3" => "Manawatu-Wanganui",
+ "F4" => "Marlborough",
+ "F5" => "Nelson",
+ "F6" => "Northland",
+ "F7" => "Otago",
+ "F8" => "Southland",
+ "F9" => "Taranaki",
+ "G1" => "Waikato",
+ "G2" => "Wellington",
+ "G3" => "West Coast"),
+"OM" => array(
+ "01" => "Ad Dakhiliyah",
+ "02" => "Al Batinah",
+ "03" => "Al Wusta",
+ "04" => "Ash Sharqiyah",
+ "05" => "Az Zahirah",
+ "06" => "Masqat",
+ "07" => "Musandam",
+ "08" => "Zufar"),
+"PA" => array(
+ "01" => "Bocas del Toro",
+ "02" => "Chiriqui",
+ "03" => "Cocle",
+ "04" => "Colon",
+ "05" => "Darien",
+ "06" => "Herrera",
+ "07" => "Los Santos",
+ "08" => "Panama",
+ "09" => "San Blas",
+ "10" => "Veraguas"),
+"PE" => array(
+ "01" => "Amazonas",
+ "02" => "Ancash",
+ "03" => "Apurimac",
+ "04" => "Arequipa",
+ "05" => "Ayacucho",
+ "06" => "Cajamarca",
+ "07" => "Callao",
+ "08" => "Cusco",
+ "09" => "Huancavelica",
+ "10" => "Huanuco",
+ "11" => "Ica",
+ "12" => "Junin",
+ "13" => "La Libertad",
+ "14" => "Lambayeque",
+ "15" => "Lima",
+ "16" => "Loreto",
+ "17" => "Madre de Dios",
+ "18" => "Moquegua",
+ "19" => "Pasco",
+ "20" => "Piura",
+ "21" => "Puno",
+ "22" => "San Martin",
+ "23" => "Tacna",
+ "24" => "Tumbes",
+ "25" => "Ucayali"),
+"PG" => array(
+ "01" => "Central",
+ "02" => "Gulf",
+ "03" => "Milne Bay",
+ "04" => "Northern",
+ "05" => "Southern Highlands",
+ "06" => "Western",
+ "07" => "North Solomons",
+ "08" => "Chimbu",
+ "09" => "Eastern Highlands",
+ "10" => "East New Britain",
+ "11" => "East Sepik",
+ "12" => "Madang",
+ "13" => "Manus",
+ "14" => "Morobe",
+ "15" => "New Ireland",
+ "16" => "Western Highlands",
+ "17" => "West New Britain",
+ "18" => "Sandaun",
+ "19" => "Enga",
+ "20" => "National Capital"),
+"PH" => array(
+ "01" => "Abra",
+ "02" => "Agusan del Norte",
+ "03" => "Agusan del Sur",
+ "04" => "Aklan",
+ "05" => "Albay",
+ "06" => "Antique",
+ "07" => "Bataan",
+ "08" => "Batanes",
+ "09" => "Batangas",
+ "10" => "Benguet",
+ "11" => "Bohol",
+ "12" => "Bukidnon",
+ "13" => "Bulacan",
+ "14" => "Cagayan",
+ "15" => "Camarines Norte",
+ "16" => "Camarines Sur",
+ "17" => "Camiguin",
+ "18" => "Capiz",
+ "19" => "Catanduanes",
+ "20" => "Cavite",
+ "21" => "Cebu",
+ "22" => "Basilan",
+ "23" => "Eastern Samar",
+ "24" => "Davao",
+ "25" => "Davao del Sur",
+ "26" => "Davao Oriental",
+ "27" => "Ifugao",
+ "28" => "Ilocos Norte",
+ "29" => "Ilocos Sur",
+ "30" => "Iloilo",
+ "31" => "Isabela",
+ "32" => "Kalinga-Apayao",
+ "33" => "Laguna",
+ "34" => "Lanao del Norte",
+ "35" => "Lanao del Sur",
+ "36" => "La Union",
+ "37" => "Leyte",
+ "38" => "Marinduque",
+ "39" => "Masbate",
+ "40" => "Mindoro Occidental",
+ "41" => "Mindoro Oriental",
+ "42" => "Misamis Occidental",
+ "43" => "Misamis Oriental",
+ "44" => "Mountain",
+ "45" => "Negros Occidental",
+ "46" => "Negros Oriental",
+ "47" => "Nueva Ecija",
+ "48" => "Nueva Vizcaya",
+ "49" => "Palawan",
+ "50" => "Pampanga",
+ "51" => "Pangasinan",
+ "53" => "Rizal",
+ "54" => "Romblon",
+ "55" => "Samar",
+ "56" => "Maguindanao",
+ "57" => "North Cotabato",
+ "58" => "Sorsogon",
+ "59" => "Southern Leyte",
+ "60" => "Sulu",
+ "61" => "Surigao del Norte",
+ "62" => "Surigao del Sur",
+ "63" => "Tarlac",
+ "64" => "Zambales",
+ "65" => "Zamboanga del Norte",
+ "66" => "Zamboanga del Sur",
+ "67" => "Northern Samar",
+ "68" => "Quirino",
+ "69" => "Siquijor",
+ "70" => "South Cotabato",
+ "71" => "Sultan Kudarat",
+ "72" => "Tawitawi",
+ "A1" => "Angeles",
+ "A2" => "Bacolod",
+ "A3" => "Bago",
+ "A4" => "Baguio",
+ "A5" => "Bais",
+ "A6" => "Basilan City",
+ "A7" => "Batangas City",
+ "A8" => "Butuan",
+ "A9" => "Cabanatuan",
+ "B1" => "Cadiz",
+ "B2" => "Cagayan de Oro",
+ "B3" => "Calbayog",
+ "B4" => "Caloocan",
+ "B5" => "Canlaon",
+ "B6" => "Cavite City",
+ "B7" => "Cebu City",
+ "B8" => "Cotabato",
+ "B9" => "Dagupan",
+ "C1" => "Danao",
+ "C2" => "Dapitan",
+ "C3" => "Davao City",
+ "C4" => "Dipolog",
+ "C5" => "Dumaguete",
+ "C6" => "General Santos",
+ "C7" => "Gingoog",
+ "C8" => "Iligan",
+ "C9" => "Iloilo City",
+ "D1" => "Iriga",
+ "D2" => "La Carlota",
+ "D3" => "Laoag",
+ "D4" => "Lapu-Lapu",
+ "D5" => "Legaspi",
+ "D6" => "Lipa",
+ "D7" => "Lucena",
+ "D8" => "Mandaue",
+ "D9" => "Manila",
+ "E1" => "Marawi",
+ "E2" => "Naga",
+ "E3" => "Olongapo",
+ "E4" => "Ormoc",
+ "E5" => "Oroquieta",
+ "E6" => "Ozamis",
+ "E7" => "Pagadian",
+ "E8" => "Palayan",
+ "E9" => "Pasay",
+ "F1" => "Puerto Princesa",
+ "F2" => "Quezon City",
+ "F3" => "Roxas",
+ "F4" => "San Carlos",
+ "F5" => "San Carlos",
+ "F6" => "San Jose",
+ "F7" => "San Pablo",
+ "F8" => "Silay",
+ "F9" => "Surigao",
+ "G1" => "Tacloban",
+ "G2" => "Tagaytay",
+ "G3" => "Tagbilaran",
+ "G4" => "Tangub",
+ "G5" => "Toledo",
+ "G6" => "Trece Martires",
+ "G7" => "Zamboanga",
+ "G8" => "Aurora",
+ "H2" => "Quezon",
+ "H3" => "Negros Occidental"),
+"PK" => array(
+ "01" => "Federally Administered Tribal Areas",
+ "02" => "Balochistan",
+ "03" => "North-West Frontier",
+ "04" => "Punjab",
+ "05" => "Sindh",
+ "06" => "Azad Kashmir",
+ "07" => "Northern Areas",
+ "08" => "Islamabad"),
+"PL" => array(
+ "23" => "Biala Podlaska",
+ "24" => "Bialystok",
+ "25" => "Bielsko",
+ "26" => "Bydgoszcz",
+ "27" => "Chelm",
+ "28" => "Ciechanow",
+ "29" => "Czestochowa",
+ "30" => "Elblag",
+ "31" => "Gdansk",
+ "32" => "Gorzow",
+ "33" => "Jelenia Gora",
+ "34" => "Kalisz",
+ "35" => "Katowice",
+ "36" => "Kielce",
+ "37" => "Konin",
+ "38" => "Koszalin",
+ "39" => "Krakow",
+ "40" => "Krosno",
+ "41" => "Legnica",
+ "42" => "Leszno",
+ "43" => "Lodz",
+ "44" => "Lomza",
+ "45" => "Lublin",
+ "46" => "Nowy Sacz",
+ "47" => "Olsztyn",
+ "48" => "Opole",
+ "49" => "Ostroleka",
+ "50" => "Pila",
+ "51" => "Piotrkow",
+ "52" => "Plock",
+ "53" => "Poznan",
+ "54" => "Przemysl",
+ "55" => "Radom",
+ "56" => "Rzeszow",
+ "57" => "Siedlce",
+ "58" => "Sieradz",
+ "59" => "Skierniewice",
+ "60" => "Slupsk",
+ "61" => "Suwalki",
+ "62" => "Szczecin",
+ "63" => "Tarnobrzeg",
+ "64" => "Tarnow",
+ "65" => "Torun",
+ "66" => "Walbrzych",
+ "67" => "Warszawa",
+ "68" => "Wloclawek",
+ "69" => "Wroclaw",
+ "70" => "Zamosc",
+ "71" => "Zielona Gora",
+ "72" => "Dolnoslaskie",
+ "73" => "Kujawsko-Pomorskie",
+ "74" => "Lodzkie",
+ "75" => "Lubelskie",
+ "76" => "Lubuskie",
+ "77" => "Malopolskie",
+ "78" => "Mazowieckie",
+ "79" => "Opolskie",
+ "80" => "Podkarpackie",
+ "81" => "Podlaskie",
+ "82" => "Pomorskie",
+ "83" => "Slaskie",
+ "84" => "Swietokrzyskie",
+ "85" => "Warminsko-Mazurskie",
+ "86" => "Wielkopolskie",
+ "87" => "Zachodniopomorskie"),
+"PS" => array(
+ "GZ" => "Gaza",
+ "WE" => "West Bank"),
+"PT" => array(
+ "02" => "Aveiro",
+ "03" => "Beja",
+ "04" => "Braga",
+ "05" => "Braganca",
+ "06" => "Castelo Branco",
+ "07" => "Coimbra",
+ "08" => "Evora",
+ "09" => "Faro",
+ "10" => "Madeira",
+ "11" => "Guarda",
+ "13" => "Leiria",
+ "14" => "Lisboa",
+ "16" => "Portalegre",
+ "17" => "Porto",
+ "18" => "Santarem",
+ "19" => "Setubal",
+ "20" => "Viana do Castelo",
+ "21" => "Vila Real",
+ "22" => "Viseu",
+ "23" => "Azores"),
+"PY" => array(
+ "01" => "Alto Parana",
+ "02" => "Amambay",
+ "03" => "Boqueron",
+ "04" => "Caaguazu",
+ "05" => "Caazapa",
+ "06" => "Central",
+ "07" => "Concepcion",
+ "08" => "Cordillera",
+ "10" => "Guaira",
+ "11" => "Itapua",
+ "12" => "Misiones",
+ "13" => "Neembucu",
+ "15" => "Paraguari",
+ "16" => "Presidente Hayes",
+ "17" => "San Pedro",
+ "19" => "Canindeyu",
+ "20" => "Chaco",
+ "21" => "Nueva Asuncion",
+ "23" => "Alto Paraguay"),
+"QA" => array(
+ "01" => "Ad Dawhah",
+ "02" => "Al Ghuwariyah",
+ "03" => "Al Jumaliyah",
+ "04" => "Al Khawr",
+ "05" => "Al Wakrah Municipality",
+ "06" => "Ar Rayyan",
+ "08" => "Madinat ach Shamal",
+ "09" => "Umm Salal",
+ "10" => "Al Wakrah",
+ "11" => "Jariyan al Batnah",
+ "12" => "Umm Sa'id"),
+"RO" => array(
+ "01" => "Alba",
+ "02" => "Arad",
+ "03" => "Arges",
+ "04" => "Bacau",
+ "05" => "Bihor",
+ "06" => "Bistrita-Nasaud",
+ "07" => "Botosani",
+ "08" => "Braila",
+ "09" => "Brasov",
+ "10" => "Bucuresti",
+ "11" => "Buzau",
+ "12" => "Caras-Severin",
+ "13" => "Cluj",
+ "14" => "Constanta",
+ "15" => "Covasna",
+ "16" => "Dambovita",
+ "17" => "Dolj",
+ "18" => "Galati",
+ "19" => "Gorj",
+ "20" => "Harghita",
+ "21" => "Hunedoara",
+ "22" => "Ialomita",
+ "23" => "Iasi",
+ "25" => "Maramures",
+ "26" => "Mehedinti",
+ "27" => "Mures",
+ "28" => "Neamt",
+ "29" => "Olt",
+ "30" => "Prahova",
+ "31" => "Salaj",
+ "32" => "Satu Mare",
+ "33" => "Sibiu",
+ "34" => "Suceava",
+ "35" => "Teleorman",
+ "36" => "Timis",
+ "37" => "Tulcea",
+ "38" => "Vaslui",
+ "39" => "Valcea",
+ "40" => "Vrancea",
+ "41" => "Calarasi",
+ "42" => "Giurgiu",
+ "43" => "Ilfov"),
+"RS" => array(
+ "01" => "Kosovo",
+ "02" => "Vojvodina"),
+"RU" => array(
+ "01" => "Adygeya, Republic of",
+ "02" => "Aginsky Buryatsky AO",
+ "03" => "Gorno-Altay",
+ "04" => "Altaisky krai",
+ "05" => "Amur",
+ "06" => "Arkhangel'sk",
+ "07" => "Astrakhan'",
+ "08" => "Bashkortostan",
+ "09" => "Belgorod",
+ "10" => "Bryansk",
+ "11" => "Buryat",
+ "12" => "Chechnya",
+ "13" => "Chelyabinsk",
+ "14" => "Chita",
+ "15" => "Chukot",
+ "16" => "Chuvashia",
+ "17" => "Dagestan",
+ "18" => "Evenk",
+ "19" => "Ingush",
+ "20" => "Irkutsk",
+ "21" => "Ivanovo",
+ "22" => "Kabardin-Balkar",
+ "23" => "Kaliningrad",
+ "24" => "Kalmyk",
+ "25" => "Kaluga",
+ "26" => "Kamchatka",
+ "27" => "Karachay-Cherkess",
+ "28" => "Karelia",
+ "29" => "Kemerovo",
+ "30" => "Khabarovsk",
+ "31" => "Khakass",
+ "32" => "Khanty-Mansiy",
+ "33" => "Kirov",
+ "34" => "Komi",
+ "35" => "Komi-Permyak",
+ "36" => "Koryak",
+ "37" => "Kostroma",
+ "38" => "Krasnodar",
+ "39" => "Krasnoyarsk",
+ "40" => "Kurgan",
+ "41" => "Kursk",
+ "42" => "Leningrad",
+ "43" => "Lipetsk",
+ "44" => "Magadan",
+ "45" => "Mariy-El",
+ "46" => "Mordovia",
+ "47" => "Moskva",
+ "48" => "Moscow City",
+ "49" => "Murmansk",
+ "50" => "Nenets",
+ "51" => "Nizhegorod",
+ "52" => "Novgorod",
+ "53" => "Novosibirsk",
+ "54" => "Omsk",
+ "55" => "Orenburg",
+ "56" => "Orel",
+ "57" => "Penza",
+ "58" => "Perm'",
+ "59" => "Primor'ye",
+ "60" => "Pskov",
+ "61" => "Rostov",
+ "62" => "Ryazan'",
+ "63" => "Sakha",
+ "64" => "Sakhalin",
+ "65" => "Samara",
+ "66" => "Saint Petersburg City",
+ "67" => "Saratov",
+ "68" => "North Ossetia",
+ "69" => "Smolensk",
+ "70" => "Stavropol'",
+ "71" => "Sverdlovsk",
+ "72" => "Tambovskaya oblast",
+ "73" => "Tatarstan",
+ "74" => "Taymyr",
+ "75" => "Tomsk",
+ "76" => "Tula",
+ "77" => "Tver'",
+ "78" => "Tyumen'",
+ "79" => "Tuva",
+ "80" => "Udmurt",
+ "81" => "Ul'yanovsk",
+ "82" => "Ust-Orda Buryat",
+ "83" => "Vladimir",
+ "84" => "Volgograd",
+ "85" => "Vologda",
+ "86" => "Voronezh",
+ "87" => "Yamal-Nenets",
+ "88" => "Yaroslavl'",
+ "89" => "Yevrey",
+ "90" => "Permskiy Kray",
+ "91" => "Krasnoyarskiy Kray",
+ "CI" => "Chechnya Republic"),
+"RW" => array(
+ "01" => "Butare",
+ "06" => "Gitarama",
+ "07" => "Kibungo",
+ "09" => "Kigali",
+ "11" => "Est",
+ "12" => "Kigali",
+ "13" => "Nord",
+ "14" => "Ouest",
+ "15" => "Sud"),
+"SA" => array(
+ "02" => "Al Bahah",
+ "03" => "Al Jawf",
+ "05" => "Al Madinah",
+ "06" => "Ash Sharqiyah",
+ "08" => "Al Qasim",
+ "09" => "Al Qurayyat",
+ "10" => "Ar Riyad",
+ "13" => "Ha'il",
+ "14" => "Makkah",
+ "15" => "Al Hudud ash Shamaliyah",
+ "16" => "Najran",
+ "17" => "Jizan",
+ "19" => "Tabuk",
+ "20" => "Al Jawf"),
+"SB" => array(
+ "03" => "Malaita",
+ "06" => "Guadalcanal",
+ "07" => "Isabel",
+ "08" => "Makira",
+ "09" => "Temotu",
+ "10" => "Central",
+ "11" => "Western",
+ "12" => "Choiseul",
+ "13" => "Rennell and Bellona"),
+"SC" => array(
+ "01" => "Anse aux Pins",
+ "02" => "Anse Boileau",
+ "03" => "Anse Etoile",
+ "04" => "Anse Louis",
+ "05" => "Anse Royale",
+ "06" => "Baie Lazare",
+ "07" => "Baie Sainte Anne",
+ "08" => "Beau Vallon",
+ "09" => "Bel Air",
+ "10" => "Bel Ombre",
+ "11" => "Cascade",
+ "12" => "Glacis",
+ "13" => "Grand' Anse",
+ "14" => "Grand' Anse",
+ "15" => "La Digue",
+ "16" => "La Riviere Anglaise",
+ "17" => "Mont Buxton",
+ "18" => "Mont Fleuri",
+ "19" => "Plaisance",
+ "20" => "Pointe La Rue",
+ "21" => "Port Glaud",
+ "22" => "Saint Louis",
+ "23" => "Takamaka"),
+"SD" => array(
+ "27" => "Al Wusta",
+ "28" => "Al Istiwa'iyah",
+ "29" => "Al Khartum",
+ "30" => "Ash Shamaliyah",
+ "31" => "Ash Sharqiyah",
+ "32" => "Bahr al Ghazal",
+ "33" => "Darfur",
+ "34" => "Kurdufan",
+ "35" => "Upper Nile",
+ "40" => "Al Wahadah State",
+ "44" => "Central Equatoria State"),
+"SE" => array(
+ "01" => "Alvsborgs Lan",
+ "02" => "Blekinge Lan",
+ "03" => "Gavleborgs Lan",
+ "04" => "Goteborgs och Bohus Lan",
+ "05" => "Gotlands Lan",
+ "06" => "Hallands Lan",
+ "07" => "Jamtlands Lan",
+ "08" => "Jonkopings Lan",
+ "09" => "Kalmar Lan",
+ "10" => "Dalarnas Lan",
+ "11" => "Kristianstads Lan",
+ "12" => "Kronobergs Lan",
+ "13" => "Malmohus Lan",
+ "14" => "Norrbottens Lan",
+ "15" => "Orebro Lan",
+ "16" => "Ostergotlands Lan",
+ "17" => "Skaraborgs Lan",
+ "18" => "Sodermanlands Lan",
+ "21" => "Uppsala Lan",
+ "22" => "Varmlands Lan",
+ "23" => "Vasterbottens Lan",
+ "24" => "Vasternorrlands Lan",
+ "25" => "Vastmanlands Lan",
+ "26" => "Stockholms Lan",
+ "27" => "Skane Lan",
+ "28" => "Vastra Gotaland"),
+"SH" => array(
+ "01" => "Ascension",
+ "02" => "Saint Helena",
+ "03" => "Tristan da Cunha"),
+"SI" => array(
+ "01" => "Ajdovscina",
+ "02" => "Beltinci",
+ "03" => "Bled",
+ "04" => "Bohinj",
+ "05" => "Borovnica",
+ "06" => "Bovec",
+ "07" => "Brda",
+ "08" => "Brezice",
+ "09" => "Brezovica",
+ "11" => "Celje",
+ "12" => "Cerklje na Gorenjskem",
+ "13" => "Cerknica",
+ "14" => "Cerkno",
+ "15" => "Crensovci",
+ "16" => "Crna na Koroskem",
+ "17" => "Crnomelj",
+ "19" => "Divaca",
+ "20" => "Dobrepolje",
+ "22" => "Dol pri Ljubljani",
+ "24" => "Dornava",
+ "25" => "Dravograd",
+ "26" => "Duplek",
+ "27" => "Gorenja Vas-Poljane",
+ "28" => "Gorisnica",
+ "29" => "Gornja Radgona",
+ "30" => "Gornji Grad",
+ "31" => "Gornji Petrovci",
+ "32" => "Grosuplje",
+ "34" => "Hrastnik",
+ "35" => "Hrpelje-Kozina",
+ "36" => "Idrija",
+ "37" => "Ig",
+ "38" => "Ilirska Bistrica",
+ "39" => "Ivancna Gorica",
+ "40" => "Izola-Isola",
+ "42" => "Jursinci",
+ "44" => "Kanal",
+ "45" => "Kidricevo",
+ "46" => "Kobarid",
+ "47" => "Kobilje",
+ "49" => "Komen",
+ "50" => "Koper-Capodistria",
+ "51" => "Kozje",
+ "52" => "Kranj",
+ "53" => "Kranjska Gora",
+ "54" => "Krsko",
+ "55" => "Kungota",
+ "57" => "Lasko",
+ "61" => "Ljubljana",
+ "62" => "Ljubno",
+ "64" => "Logatec",
+ "66" => "Loski Potok",
+ "68" => "Lukovica",
+ "71" => "Medvode",
+ "72" => "Menges",
+ "73" => "Metlika",
+ "74" => "Mezica",
+ "76" => "Mislinja",
+ "77" => "Moravce",
+ "78" => "Moravske Toplice",
+ "79" => "Mozirje",
+ "80" => "Murska Sobota",
+ "81" => "Muta",
+ "82" => "Naklo",
+ "83" => "Nazarje",
+ "84" => "Nova Gorica",
+ "86" => "Odranci",
+ "87" => "Ormoz",
+ "88" => "Osilnica",
+ "89" => "Pesnica",
+ "91" => "Pivka",
+ "92" => "Podcetrtek",
+ "94" => "Postojna",
+ "97" => "Puconci",
+ "98" => "Racam",
+ "99" => "Radece",
+ "A1" => "Radenci",
+ "A2" => "Radlje ob Dravi",
+ "A3" => "Radovljica",
+ "A6" => "Rogasovci",
+ "A7" => "Rogaska Slatina",
+ "A8" => "Rogatec",
+ "B1" => "Semic",
+ "B2" => "Sencur",
+ "B3" => "Sentilj",
+ "B4" => "Sentjernej",
+ "B6" => "Sevnica",
+ "B7" => "Sezana",
+ "B8" => "Skocjan",
+ "B9" => "Skofja Loka",
+ "C1" => "Skofljica",
+ "C2" => "Slovenj Gradec",
+ "C4" => "Slovenske Konjice",
+ "C5" => "Smarje pri Jelsah",
+ "C6" => "Smartno ob Paki",
+ "C7" => "Sostanj",
+ "C8" => "Starse",
+ "C9" => "Store",
+ "D1" => "Sveti Jurij",
+ "D2" => "Tolmin",
+ "D3" => "Trbovlje",
+ "D4" => "Trebnje",
+ "D5" => "Trzic",
+ "D6" => "Turnisce",
+ "D7" => "Velenje",
+ "D8" => "Velike Lasce",
+ "E1" => "Vipava",
+ "E2" => "Vitanje",
+ "E3" => "Vodice",
+ "E5" => "Vrhnika",
+ "E6" => "Vuzenica",
+ "E7" => "Zagorje ob Savi",
+ "E9" => "Zavrc",
+ "F1" => "Zelezniki",
+ "F2" => "Ziri",
+ "F3" => "Zrece",
+ "G4" => "Dobrova-Horjul-Polhov Gradec",
+ "G7" => "Domzale",
+ "H4" => "Jesenice",
+ "H6" => "Kamnik",
+ "H7" => "Kocevje",
+ "I2" => "Kuzma",
+ "I3" => "Lenart",
+ "I5" => "Litija",
+ "I6" => "Ljutomer",
+ "I7" => "Loska Dolina",
+ "I9" => "Luce",
+ "J1" => "Majsperk",
+ "J2" => "Maribor",
+ "J5" => "Miren-Kostanjevica",
+ "J7" => "Novo Mesto",
+ "J9" => "Piran",
+ "K5" => "Preddvor",
+ "K7" => "Ptuj",
+ "L1" => "Ribnica",
+ "L3" => "Ruse",
+ "L7" => "Sentjur pri Celju",
+ "L8" => "Slovenska Bistrica",
+ "N2" => "Videm",
+ "N3" => "Vojnik",
+ "N5" => "Zalec"),
+"SK" => array(
+ "01" => "Banska Bystrica",
+ "02" => "Bratislava",
+ "03" => "Kosice",
+ "04" => "Nitra",
+ "05" => "Presov",
+ "06" => "Trencin",
+ "07" => "Trnava",
+ "08" => "Zilina"),
+"SL" => array(
+ "01" => "Eastern",
+ "02" => "Northern",
+ "03" => "Southern",
+ "04" => "Western Area"),
+"SM" => array(
+ "01" => "Acquaviva",
+ "02" => "Chiesanuova",
+ "03" => "Domagnano",
+ "04" => "Faetano",
+ "05" => "Fiorentino",
+ "06" => "Borgo Maggiore",
+ "07" => "San Marino",
+ "08" => "Monte Giardino",
+ "09" => "Serravalle"),
+"SN" => array(
+ "01" => "Dakar",
+ "03" => "Diourbel",
+ "04" => "Saint-Louis",
+ "05" => "Tambacounda",
+ "07" => "Thies",
+ "08" => "Louga",
+ "09" => "Fatick",
+ "10" => "Kaolack",
+ "11" => "Kolda",
+ "12" => "Ziguinchor",
+ "13" => "Louga",
+ "14" => "Saint-Louis",
+ "15" => "Matam"),
+"SO" => array(
+ "01" => "Bakool",
+ "02" => "Banaadir",
+ "03" => "Bari",
+ "04" => "Bay",
+ "05" => "Galguduud",
+ "06" => "Gedo",
+ "07" => "Hiiraan",
+ "08" => "Jubbada Dhexe",
+ "09" => "Jubbada Hoose",
+ "10" => "Mudug",
+ "11" => "Nugaal",
+ "12" => "Sanaag",
+ "13" => "Shabeellaha Dhexe",
+ "14" => "Shabeellaha Hoose",
+ "16" => "Woqooyi Galbeed",
+ "18" => "Nugaal",
+ "19" => "Togdheer",
+ "20" => "Woqooyi Galbeed",
+ "21" => "Awdal",
+ "22" => "Sool"),
+"SR" => array(
+ "10" => "Brokopondo",
+ "11" => "Commewijne",
+ "12" => "Coronie",
+ "13" => "Marowijne",
+ "14" => "Nickerie",
+ "15" => "Para",
+ "16" => "Paramaribo",
+ "17" => "Saramacca",
+ "18" => "Sipaliwini",
+ "19" => "Wanica"),
+"ST" => array(
+ "01" => "Principe",
+ "02" => "Sao Tome"),
+"SV" => array(
+ "01" => "Ahuachapan",
+ "02" => "Cabanas",
+ "03" => "Chalatenango",
+ "04" => "Cuscatlan",
+ "05" => "La Libertad",
+ "06" => "La Paz",
+ "07" => "La Union",
+ "08" => "Morazan",
+ "09" => "San Miguel",
+ "10" => "San Salvador",
+ "11" => "Santa Ana",
+ "12" => "San Vicente",
+ "13" => "Sonsonate",
+ "14" => "Usulutan"),
+"SY" => array(
+ "01" => "Al Hasakah",
+ "02" => "Al Ladhiqiyah",
+ "03" => "Al Qunaytirah",
+ "04" => "Ar Raqqah",
+ "05" => "As Suwayda'",
+ "06" => "Dar",
+ "07" => "Dayr az Zawr",
+ "08" => "Rif Dimashq",
+ "09" => "Halab",
+ "10" => "Hamah",
+ "11" => "Hims",
+ "12" => "Idlib",
+ "13" => "Dimashq",
+ "14" => "Tartus"),
+"SZ" => array(
+ "01" => "Hhohho",
+ "02" => "Lubombo",
+ "03" => "Manzini",
+ "04" => "Shiselweni",
+ "05" => "Praslin"),
+"TD" => array(
+ "01" => "Batha",
+ "02" => "Biltine",
+ "03" => "Borkou-Ennedi-Tibesti",
+ "04" => "Chari-Baguirmi",
+ "05" => "Guera",
+ "06" => "Kanem",
+ "07" => "Lac",
+ "08" => "Logone Occidental",
+ "09" => "Logone Oriental",
+ "10" => "Mayo-Kebbi",
+ "11" => "Moyen-Chari",
+ "12" => "Ouaddai",
+ "13" => "Salamat",
+ "14" => "Tandjile"),
+"TG" => array(
+ "09" => "Lama-Kara",
+ "18" => "Tsevie",
+ "22" => "Centrale",
+ "23" => "Kara",
+ "24" => "Maritime",
+ "25" => "Plateaux",
+ "26" => "Savanes"),
+"TH" => array(
+ "01" => "Mae Hong Son",
+ "02" => "Chiang Mai",
+ "03" => "Chiang Rai",
+ "04" => "Nan",
+ "05" => "Lamphun",
+ "06" => "Lampang",
+ "07" => "Phrae",
+ "08" => "Tak",
+ "09" => "Sukhothai",
+ "10" => "Uttaradit",
+ "11" => "Kamphaeng Phet",
+ "12" => "Phitsanulok",
+ "13" => "Phichit",
+ "14" => "Phetchabun",
+ "15" => "Uthai Thani",
+ "16" => "Nakhon Sawan",
+ "17" => "Nong Khai",
+ "18" => "Loei",
+ "20" => "Sakon Nakhon",
+ "21" => "Nakhon Phanom",
+ "22" => "Khon Kaen",
+ "23" => "Kalasin",
+ "24" => "Maha Sarakham",
+ "25" => "Roi Et",
+ "26" => "Chaiyaphum",
+ "27" => "Nakhon Ratchasima",
+ "28" => "Buriram",
+ "29" => "Surin",
+ "30" => "Sisaket",
+ "31" => "Narathiwat",
+ "32" => "Chai Nat",
+ "33" => "Sing Buri",
+ "34" => "Lop Buri",
+ "35" => "Ang Thong",
+ "36" => "Phra Nakhon Si Ayutthaya",
+ "37" => "Saraburi",
+ "38" => "Nonthaburi",
+ "39" => "Pathum Thani",
+ "40" => "Krung Thep",
+ "41" => "Phayao",
+ "42" => "Samut Prakan",
+ "43" => "Nakhon Nayok",
+ "44" => "Chachoengsao",
+ "45" => "Prachin Buri",
+ "46" => "Chon Buri",
+ "47" => "Rayong",
+ "48" => "Chanthaburi",
+ "49" => "Trat",
+ "50" => "Kanchanaburi",
+ "51" => "Suphan Buri",
+ "52" => "Ratchaburi",
+ "53" => "Nakhon Pathom",
+ "54" => "Samut Songkhram",
+ "55" => "Samut Sakhon",
+ "56" => "Phetchaburi",
+ "57" => "Prachuap Khiri Khan",
+ "58" => "Chumphon",
+ "59" => "Ranong",
+ "60" => "Surat Thani",
+ "61" => "Phangnga",
+ "62" => "Phuket",
+ "63" => "Krabi",
+ "64" => "Nakhon Si Thammarat",
+ "65" => "Trang",
+ "66" => "Phatthalung",
+ "67" => "Satun",
+ "68" => "Songkhla",
+ "69" => "Pattani",
+ "70" => "Yala",
+ "71" => "Ubon Ratchathani",
+ "72" => "Yasothon",
+ "73" => "Nakhon Phanom",
+ "75" => "Ubon Ratchathani",
+ "76" => "Udon Thani",
+ "77" => "Amnat Charoen",
+ "78" => "Mukdahan",
+ "79" => "Nong Bua Lamphu",
+ "80" => "Sa Kaeo"),
+"TJ" => array(
+ "01" => "Kuhistoni Badakhshon",
+ "02" => "Khatlon",
+ "03" => "Sughd"),
+"TM" => array(
+ "01" => "Ahal",
+ "02" => "Balkan",
+ "03" => "Dashoguz",
+ "04" => "Lebap",
+ "05" => "Mary"),
+"TN" => array(
+ "02" => "Kasserine",
+ "03" => "Kairouan",
+ "06" => "Jendouba",
+ "14" => "El Kef",
+ "15" => "Al Mahdia",
+ "16" => "Al Munastir",
+ "17" => "Bajah",
+ "18" => "Bizerte",
+ "19" => "Nabeul",
+ "22" => "Siliana",
+ "23" => "Sousse",
+ "26" => "Ariana",
+ "27" => "Ben Arous",
+ "28" => "Madanin",
+ "29" => "Gabes",
+ "30" => "Gafsa",
+ "31" => "Kebili",
+ "32" => "Sfax",
+ "33" => "Sidi Bou Zid",
+ "34" => "Tataouine",
+ "35" => "Tozeur",
+ "36" => "Tunis",
+ "37" => "Zaghouan"),
+"TO" => array(
+ "01" => "Ha",
+ "02" => "Tongatapu",
+ "03" => "Vava"),
+"TR" => array(
+ "02" => "Adiyaman",
+ "03" => "Afyonkarahisar",
+ "04" => "Agri",
+ "05" => "Amasya",
+ "07" => "Antalya",
+ "08" => "Artvin",
+ "09" => "Aydin",
+ "10" => "Balikesir",
+ "11" => "Bilecik",
+ "12" => "Bingol",
+ "13" => "Bitlis",
+ "14" => "Bolu",
+ "15" => "Burdur",
+ "16" => "Bursa",
+ "17" => "Canakkale",
+ "19" => "Corum",
+ "20" => "Denizli",
+ "21" => "Diyarbakir",
+ "22" => "Edirne",
+ "23" => "Elazig",
+ "24" => "Erzincan",
+ "25" => "Erzurum",
+ "26" => "Eskisehir",
+ "28" => "Giresun",
+ "31" => "Hatay",
+ "32" => "Icel",
+ "33" => "Isparta",
+ "34" => "Istanbul",
+ "35" => "Izmir",
+ "37" => "Kastamonu",
+ "38" => "Kayseri",
+ "39" => "Kirklareli",
+ "40" => "Kirsehir",
+ "41" => "Kocaeli",
+ "43" => "Kutahya",
+ "44" => "Malatya",
+ "45" => "Manisa",
+ "46" => "Kahramanmaras",
+ "48" => "Mugla",
+ "49" => "Mus",
+ "50" => "Nevsehir",
+ "52" => "Ordu",
+ "53" => "Rize",
+ "54" => "Sakarya",
+ "55" => "Samsun",
+ "57" => "Sinop",
+ "58" => "Sivas",
+ "59" => "Tekirdag",
+ "60" => "Tokat",
+ "61" => "Trabzon",
+ "62" => "Tunceli",
+ "63" => "Sanliurfa",
+ "64" => "Usak",
+ "65" => "Van",
+ "66" => "Yozgat",
+ "68" => "Ankara",
+ "69" => "Gumushane",
+ "70" => "Hakkari",
+ "71" => "Konya",
+ "72" => "Mardin",
+ "73" => "Nigde",
+ "74" => "Siirt",
+ "75" => "Aksaray",
+ "76" => "Batman",
+ "77" => "Bayburt",
+ "78" => "Karaman",
+ "79" => "Kirikkale",
+ "80" => "Sirnak",
+ "81" => "Adana",
+ "82" => "Cankiri",
+ "83" => "Gaziantep",
+ "84" => "Kars",
+ "85" => "Zonguldak",
+ "86" => "Ardahan",
+ "87" => "Bartin",
+ "88" => "Igdir",
+ "89" => "Karabuk",
+ "90" => "Kilis",
+ "91" => "Osmaniye",
+ "92" => "Yalova",
+ "93" => "Duzce"),
+"TT" => array(
+ "01" => "Arima",
+ "02" => "Caroni",
+ "03" => "Mayaro",
+ "04" => "Nariva",
+ "05" => "Port-of-Spain",
+ "06" => "Saint Andrew",
+ "07" => "Saint David",
+ "08" => "Saint George",
+ "09" => "Saint Patrick",
+ "10" => "San Fernando",
+ "11" => "Tobago",
+ "12" => "Victoria"),
+"TW" => array(
+ "01" => "Fu-chien",
+ "02" => "Kao-hsiung",
+ "03" => "T'ai-pei",
+ "04" => "T'ai-wan"),
+"TZ" => array(
+ "02" => "Pwani",
+ "03" => "Dodoma",
+ "04" => "Iringa",
+ "05" => "Kigoma",
+ "06" => "Kilimanjaro",
+ "07" => "Lindi",
+ "08" => "Mara",
+ "09" => "Mbeya",
+ "10" => "Morogoro",
+ "11" => "Mtwara",
+ "12" => "Mwanza",
+ "13" => "Pemba North",
+ "14" => "Ruvuma",
+ "15" => "Shinyanga",
+ "16" => "Singida",
+ "17" => "Tabora",
+ "18" => "Tanga",
+ "19" => "Kagera",
+ "20" => "Pemba South",
+ "21" => "Zanzibar Central",
+ "22" => "Zanzibar North",
+ "23" => "Dar es Salaam",
+ "24" => "Rukwa",
+ "25" => "Zanzibar Urban",
+ "26" => "Arusha",
+ "27" => "Manyara"),
+"UA" => array(
+ "01" => "Cherkas'ka Oblast'",
+ "02" => "Chernihivs'ka Oblast'",
+ "03" => "Chernivets'ka Oblast'",
+ "04" => "Dnipropetrovs'ka Oblast'",
+ "05" => "Donets'ka Oblast'",
+ "06" => "Ivano-Frankivs'ka Oblast'",
+ "07" => "Kharkivs'ka Oblast'",
+ "08" => "Khersons'ka Oblast'",
+ "09" => "Khmel'nyts'ka Oblast'",
+ "10" => "Kirovohrads'ka Oblast'",
+ "11" => "Krym",
+ "12" => "Kyyiv",
+ "13" => "Kyyivs'ka Oblast'",
+ "14" => "Luhans'ka Oblast'",
+ "15" => "L'vivs'ka Oblast'",
+ "16" => "Mykolayivs'ka Oblast'",
+ "17" => "Odes'ka Oblast'",
+ "18" => "Poltavs'ka Oblast'",
+ "19" => "Rivnens'ka Oblast'",
+ "20" => "Sevastopol'",
+ "21" => "Sums'ka Oblast'",
+ "22" => "Ternopil's'ka Oblast'",
+ "23" => "Vinnyts'ka Oblast'",
+ "24" => "Volyns'ka Oblast'",
+ "25" => "Zakarpats'ka Oblast'",
+ "26" => "Zaporiz'ka Oblast'",
+ "27" => "Zhytomyrs'ka Oblast'"),
+"UG" => array(
+ "05" => "Busoga",
+ "08" => "Karamoja",
+ "12" => "South Buganda",
+ "18" => "Central",
+ "20" => "Eastern",
+ "21" => "Nile",
+ "22" => "North Buganda",
+ "23" => "Northern",
+ "24" => "Southern",
+ "25" => "Western",
+ "33" => "Jinja",
+ "36" => "Kalangala",
+ "37" => "Kampala",
+ "42" => "Kiboga",
+ "52" => "Mbarara",
+ "56" => "Mubende",
+ "65" => "Adjumani",
+ "66" => "Bugiri",
+ "67" => "Busia",
+ "69" => "Katakwi",
+ "71" => "Masaka",
+ "73" => "Nakasongola",
+ "74" => "Sembabule",
+ "77" => "Arua",
+ "78" => "Iganga",
+ "79" => "Kabarole",
+ "80" => "Kaberamaido",
+ "81" => "Kamwenge",
+ "82" => "Kanungu",
+ "83" => "Kayunga",
+ "84" => "Kitgum",
+ "85" => "Kyenjojo",
+ "86" => "Mayuge",
+ "87" => "Mbale",
+ "88" => "Moroto",
+ "89" => "Mpigi",
+ "90" => "Mukono",
+ "91" => "Nakapiripirit",
+ "92" => "Pader",
+ "93" => "Rukungiri",
+ "94" => "Sironko",
+ "95" => "Soroti",
+ "96" => "Wakiso",
+ "97" => "Yumbe"),
+"US" => array(
+ "AA" => "Armed Forces Americas",
+ "AE" => "Armed Forces Europe, Middle East, & Canada",
+ "AK" => "Alaska",
+ "AL" => "Alabama",
+ "AP" => "Armed Forces Pacific",
+ "AR" => "Arkansas",
+ "AS" => "American Samoa",
+ "AZ" => "Arizona",
+ "CA" => "California",
+ "CO" => "Colorado",
+ "CT" => "Connecticut",
+ "DC" => "District of Columbia",
+ "DE" => "Delaware",
+ "FL" => "Florida",
+ "FM" => "Federated States of Micronesia",
+ "GA" => "Georgia",
+ "GU" => "Guam",
+ "HI" => "Hawaii",
+ "IA" => "Iowa",
+ "ID" => "Idaho",
+ "IL" => "Illinois",
+ "IN" => "Indiana",
+ "KS" => "Kansas",
+ "KY" => "Kentucky",
+ "LA" => "Louisiana",
+ "MA" => "Massachusetts",
+ "MD" => "Maryland",
+ "ME" => "Maine",
+ "MH" => "Marshall Islands",
+ "MI" => "Michigan",
+ "MN" => "Minnesota",
+ "MO" => "Missouri",
+ "MP" => "Northern Mariana Islands",
+ "MS" => "Mississippi",
+ "MT" => "Montana",
+ "NC" => "North Carolina",
+ "ND" => "North Dakota",
+ "NE" => "Nebraska",
+ "NH" => "New Hampshire",
+ "NJ" => "New Jersey",
+ "NM" => "New Mexico",
+ "NV" => "Nevada",
+ "NY" => "New York",
+ "OH" => "Ohio",
+ "OK" => "Oklahoma",
+ "OR" => "Oregon",
+ "PA" => "Pennsylvania",
+ "PR" => "Puerto Rico",
+ "PW" => "Palau",
+ "RI" => "Rhode Island",
+ "SC" => "South Carolina",
+ "SD" => "South Dakota",
+ "TN" => "Tennessee",
+ "TX" => "Texas",
+ "UT" => "Utah",
+ "VA" => "Virginia",
+ "VI" => "Virgin Islands",
+ "VT" => "Vermont",
+ "WA" => "Washington",
+ "WI" => "Wisconsin",
+ "WV" => "West Virginia",
+ "WY" => "Wyoming"),
+"UY" => array(
+ "01" => "Artigas",
+ "02" => "Canelones",
+ "03" => "Cerro Largo",
+ "04" => "Colonia",
+ "05" => "Durazno",
+ "06" => "Flores",
+ "07" => "Florida",
+ "08" => "Lavalleja",
+ "09" => "Maldonado",
+ "10" => "Montevideo",
+ "11" => "Paysandu",
+ "12" => "Rio Negro",
+ "13" => "Rivera",
+ "14" => "Rocha",
+ "15" => "Salto",
+ "16" => "San Jose",
+ "17" => "Soriano",
+ "18" => "Tacuarembo",
+ "19" => "Treinta y Tres"),
+"UZ" => array(
+ "01" => "Andijon",
+ "02" => "Bukhoro",
+ "03" => "Farghona",
+ "04" => "Jizzakh",
+ "05" => "Khorazm",
+ "06" => "Namangan",
+ "07" => "Nawoiy",
+ "08" => "Qashqadaryo",
+ "09" => "Qoraqalpoghiston",
+ "10" => "Samarqand",
+ "11" => "Sirdaryo",
+ "12" => "Surkhondaryo",
+ "13" => "Toshkent",
+ "14" => "Toshkent"),
+"VC" => array(
+ "01" => "Charlotte",
+ "02" => "Saint Andrew",
+ "03" => "Saint David",
+ "04" => "Saint George",
+ "05" => "Saint Patrick",
+ "06" => "Grenadines"),
+"VE" => array(
+ "01" => "Amazonas",
+ "02" => "Anzoategui",
+ "03" => "Apure",
+ "04" => "Aragua",
+ "05" => "Barinas",
+ "06" => "Bolivar",
+ "07" => "Carabobo",
+ "08" => "Cojedes",
+ "09" => "Delta Amacuro",
+ "11" => "Falcon",
+ "12" => "Guarico",
+ "13" => "Lara",
+ "14" => "Merida",
+ "15" => "Miranda",
+ "16" => "Monagas",
+ "17" => "Nueva Esparta",
+ "18" => "Portuguesa",
+ "19" => "Sucre",
+ "20" => "Tachira",
+ "21" => "Trujillo",
+ "22" => "Yaracuy",
+ "23" => "Zulia",
+ "24" => "Dependencias Federales",
+ "25" => "Distrito Federal",
+ "26" => "Vargas"),
+"VN" => array(
+ "01" => "An Giang",
+ "02" => "Bac Thai",
+ "03" => "Ben Tre",
+ "04" => "Binh Tri Thien",
+ "05" => "Cao Bang",
+ "06" => "Cuu Long",
+ "07" => "Dac Lac",
+ "09" => "Dong Thap",
+ "11" => "Ha Bac",
+ "12" => "Hai Hung",
+ "13" => "Hai Phong",
+ "14" => "Ha Nam Ninh",
+ "15" => "Ha Noi",
+ "16" => "Ha Son Binh",
+ "17" => "Ha Tuyen",
+ "19" => "Hoang Lien Son",
+ "20" => "Ho Chi Minh",
+ "21" => "Kien Giang",
+ "22" => "Lai Chau",
+ "23" => "Lam Dong",
+ "24" => "Long An",
+ "25" => "Minh Hai",
+ "26" => "Nghe Tinh",
+ "27" => "Nghia Binh",
+ "28" => "Phu Khanh",
+ "29" => "Quang Nam-Da Nang",
+ "30" => "Quang Ninh",
+ "31" => "Song Be",
+ "32" => "Son La",
+ "33" => "Tay Ninh",
+ "34" => "Thanh Hoa",
+ "35" => "Thai Binh",
+ "36" => "Thuan Hai",
+ "37" => "Tien Giang",
+ "38" => "Vinh Phu",
+ "39" => "Lang Son",
+ "40" => "Dong Nai",
+ "43" => "An Giang",
+ "44" => "Dac Lac",
+ "45" => "Dong Nai",
+ "46" => "Dong Thap",
+ "47" => "Kien Giang",
+ "48" => "Minh Hai",
+ "49" => "Song Be",
+ "50" => "Vinh Phu",
+ "51" => "Ha Noi",
+ "52" => "Ho Chi Minh",
+ "53" => "Ba Ria-Vung Tau",
+ "54" => "Binh Dinh",
+ "55" => "Binh Thuan",
+ "56" => "Can Tho",
+ "57" => "Gia Lai",
+ "58" => "Ha Giang",
+ "59" => "Ha Tay",
+ "60" => "Ha Tinh",
+ "61" => "Hoa Binh",
+ "62" => "Khanh Hoa",
+ "63" => "Kon Tum",
+ "64" => "Quang Tri",
+ "65" => "Nam Ha",
+ "66" => "Nghe An",
+ "67" => "Ninh Binh",
+ "68" => "Ninh Thuan",
+ "69" => "Phu Yen",
+ "70" => "Quang Binh",
+ "71" => "Quang Ngai",
+ "72" => "Quang Tri",
+ "73" => "Soc Trang",
+ "74" => "Thua Thien",
+ "75" => "Tra Vinh",
+ "76" => "Tuyen Quang",
+ "77" => "Vinh Long",
+ "78" => "Da Nang",
+ "79" => "Hai Duong",
+ "80" => "Ha Nam",
+ "81" => "Hung Yen",
+ "82" => "Nam Dinh",
+ "83" => "Phu Tho",
+ "84" => "Quang Nam",
+ "85" => "Thai Nguyen",
+ "86" => "Vinh Puc Province",
+ "87" => "Can Tho",
+ "88" => "Dak Lak",
+ "89" => "Lai Chau",
+ "90" => "Lao Cai",
+ "91" => "Dak Nong",
+ "92" => "Dien Bien",
+ "93" => "Hau Giang"),
+"VU" => array(
+ "05" => "Ambrym",
+ "06" => "Aoba",
+ "07" => "Torba",
+ "08" => "Efate",
+ "09" => "Epi",
+ "10" => "Malakula",
+ "11" => "Paama",
+ "12" => "Pentecote",
+ "13" => "Sanma",
+ "14" => "Shepherd",
+ "15" => "Tafea",
+ "16" => "Malampa",
+ "17" => "Penama",
+ "18" => "Shefa"),
+"WS" => array(
+ "02" => "Aiga-i-le-Tai",
+ "03" => "Atua",
+ "04" => "Fa",
+ "05" => "Gaga",
+ "06" => "Va",
+ "07" => "Gagaifomauga",
+ "08" => "Palauli",
+ "09" => "Satupa",
+ "10" => "Tuamasaga",
+ "11" => "Vaisigano"),
+"YE" => array(
+ "01" => "Abyan",
+ "02" => "Adan",
+ "03" => "Al Mahrah",
+ "04" => "Hadramawt",
+ "05" => "Shabwah",
+ "06" => "Al Ghaydah",
+ "08" => "Al Hudaydah",
+ "10" => "Al Mahwit",
+ "11" => "Dhamar",
+ "14" => "Ma'rib",
+ "15" => "Sa",
+ "16" => "San",
+ "20" => "Al Bayda'",
+ "21" => "Al Jawf",
+ "22" => "Hajjah",
+ "23" => "Ibb",
+ "24" => "Lahij",
+ "25" => "Ta"),
+"ZA" => array(
+ "01" => "North-Western Province",
+ "02" => "KwaZulu-Natal",
+ "03" => "Free State",
+ "05" => "Eastern Cape",
+ "06" => "Gauteng",
+ "07" => "Mpumalanga",
+ "08" => "Northern Cape",
+ "09" => "Limpopo",
+ "10" => "North-West",
+ "11" => "Western Cape"),
+"ZM" => array(
+ "01" => "Western",
+ "02" => "Central",
+ "03" => "Eastern",
+ "04" => "Luapula",
+ "05" => "Northern",
+ "06" => "North-Western",
+ "07" => "Southern",
+ "08" => "Copperbelt",
+ "09" => "Lusaka"),
+"ZW" => array(
+ "01" => "Manicaland",
+ "02" => "Midlands",
+ "03" => "Mashonaland Central",
+ "04" => "Mashonaland East",
+ "05" => "Mashonaland West",
+ "06" => "Matabeleland North",
+ "07" => "Matabeleland South",
+ "08" => "Masvingo",
+ "09" => "Bulawayo",
+ "10" => "Harare")
+);
+?>
diff --git a/htdocs/includes/geoip/sample.php b/htdocs/includes/geoip/sample.php
new file mode 100644
index 00000000000..75a36c0e5c5
--- /dev/null
+++ b/htdocs/includes/geoip/sample.php
@@ -0,0 +1,20 @@
+#!/usr/bin/php -q
+
diff --git a/htdocs/includes/geoip/sample_city.php b/htdocs/includes/geoip/sample_city.php
new file mode 100644
index 00000000000..38a9f4b9b2b
--- /dev/null
+++ b/htdocs/includes/geoip/sample_city.php
@@ -0,0 +1,32 @@
+#!/usr/bin/php -q
+country_code . " " . $record->country_code3 . " " . $record->country_name . "\n";
+print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n";
+print $record->city . "\n";
+print $record->postal_code . "\n";
+print $record->latitude . "\n";
+print $record->longitude . "\n";
+print $record->metro_code . "\n";
+print $record->area_code . "\n";
+
+geoip_close($gi);
+
+?>
diff --git a/htdocs/includes/geoip/sample_distributed.php b/htdocs/includes/geoip/sample_distributed.php
new file mode 100644
index 00000000000..d139be51d51
--- /dev/null
+++ b/htdocs/includes/geoip/sample_distributed.php
@@ -0,0 +1,31 @@
+#!/usr/bin/php -q
+country_code . "\n";
+print "country code3: " . $r->country_code3 . "\n";
+print "country name: " . $r->country_name . "\n";
+print "city: " . $r->city . "\n";
+print "region: " . $r->region . "\n";
+print "region name: " . $r->regionname . "\n";
+print "postal_code: " . $r->postal_code . "\n";
+print "latitude: " . $r->latitude . "\n";
+print "longitude: " . $r->longitude . "\n";
+print "area code: " . $r->areacode . "\n";
+print "dma code: " . $r->dmacode . "\n";
+print "isp: " . $r->isp . "\n";
+print "org: " . $r->org . "\n";
+?>
diff --git a/htdocs/includes/geoip/sample_netspeed.php b/htdocs/includes/geoip/sample_netspeed.php
new file mode 100644
index 00000000000..d8ec83714ab
--- /dev/null
+++ b/htdocs/includes/geoip/sample_netspeed.php
@@ -0,0 +1,23 @@
+#!/usr/bin/php -q
+
diff --git a/htdocs/includes/geoip/sample_org.php b/htdocs/includes/geoip/sample_org.php
new file mode 100644
index 00000000000..009a5bd0f49
--- /dev/null
+++ b/htdocs/includes/geoip/sample_org.php
@@ -0,0 +1,23 @@
+#!/usr/bin/php -q
+
+
diff --git a/htdocs/includes/geoip/sample_region.php b/htdocs/includes/geoip/sample_region.php
new file mode 100644
index 00000000000..9669c9c2df9
--- /dev/null
+++ b/htdocs/includes/geoip/sample_region.php
@@ -0,0 +1,20 @@
+#!/usr/bin/php -q
+
diff --git a/htdocs/includes/modules/import/import_csv.modules.php b/htdocs/includes/modules/import/import_csv.modules.php
index fa482c093db..52359f3a6b5 100644
--- a/htdocs/includes/modules/import/import_csv.modules.php
+++ b/htdocs/includes/modules/import/import_csv.modules.php
@@ -37,7 +37,7 @@ class ImportCsv extends ModeleImports
var $id;
var $error;
var $errors=array();
-
+
var $label;
var $extension;
var $version;
@@ -220,7 +220,7 @@ class ImportCsv extends ModeleImports
{
if (! empty($conf->global->IMPORT_CSV_FORCE_CHARSET)) // Forced charset
{
- if (strtolower($conf->global->IMPORT_CSV_FORCE_CHARSET) == 'utf8')
+ if (strtolower($conf->global->IMPORT_CSV_FORCE_CHARSET) == 'utf8')
{
$newarrayres[$key]['val']=$val;
$newarrayres[$key]['type']=1;
@@ -233,12 +233,12 @@ class ImportCsv extends ModeleImports
}
else // Autodetect format (UTF8 or ISO)
{
- if (utf8_check($val))
+ if (utf8_check($val))
{
$newarrayres[$key]['val']=$val;
$newarrayres[$key]['type']=1;
}
- else
+ else
{
$newarrayres[$key]['val']=utf8_encode($val);
$newarrayres[$key]['type']=1;
@@ -270,18 +270,17 @@ class ImportCsv extends ModeleImports
* @param maxfields Max number of fiels to use
* @return int <0 if KO, >0 if OK
*/
- function import_insert($arrayrecord,$array_match_file_to_database,$objimport,$maxfields)
+ function import_insert($arrayrecord,$array_match_file_to_database,$objimport,$maxfields,$importid)
{
$error=0;
$warning=0;
$this->errors=array();
$this->warnings=array();
-
- dol_syslog("import_csv.modules maxfields=".$maxfields);
- //print "X".$maxfields;
-
- var_dump($array_match_file_to_database);
- var_dump($arrayrecord);
+
+ //dol_syslog("import_csv.modules maxfields=".$maxfields." importid=".$importid);
+
+ //var_dump($array_match_file_to_database);
+ //var_dump($arrayrecord);
$sort_array_match_file_to_database=$array_match_file_to_database;
ksort($sort_array_match_file_to_database);
//var_dump($sort_array_match_file_to_database);
@@ -290,7 +289,7 @@ class ImportCsv extends ModeleImports
(sizeof($arrayrecord) == 1 && empty($arrayrecord[0]['val'])))
{
print 'W';
- $this->warnings[$warning]['lib']='Empty line';
+ $this->warnings[$warning]['lib']='Empty line';
$this->warnings[$warning]['type']='EMPTY';
$warning++;
}
@@ -305,6 +304,7 @@ class ImportCsv extends ModeleImports
$listvalues='';
$i=0;
$errorforthistable=0;
+ // Loop on each fields in the match array
foreach($sort_array_match_file_to_database as $key => $val)
{
if ($key <= $maxfields)
@@ -325,22 +325,23 @@ class ImportCsv extends ModeleImports
$newval=$arrayrecord[($key-1)]['val'];
$listvalues.="'".$arrayrecord[($key-1)]['val']."'";
}
-
+
// Make some tests
-
+
// Required field is ok
if (eregi('\*',$objimport->array_import_fields[0][$val]) && empty($newval))
{
- $this->errors[$error]['lib']='ErrorMissingMandatoryValue field nb '.$key.' target='.$val;
+ $this->errors[$error]['lib']='ErrorMissingMandatoryValue field nb '.$key.' target='.$val;
$this->errors[$error]['type']='NOTNULL';
$errorforthistable++;
$error++;
}
// Test format
-
+ // TODO
+
// Other tests
- // ...
-
+ // TODO...
+
}
$i++;
}
@@ -350,11 +351,11 @@ class ImportCsv extends ModeleImports
{
$sql='INSERT INTO '.$tablename.'('.$listfields.') VALUES('.$listvalues.')';
dol_syslog("import_csv.modules sql=".$sql);
-
+
//print '> '.join(',',$arrayrecord);
//print 'sql='.$sql;
//print ' '."\n";
-
+
// Run insert request
if ($sql)
{
@@ -366,7 +367,7 @@ class ImportCsv extends ModeleImports
else
{
print 'E';
- $this->errors[$error]['lib']='ErrorSQL '.$this->db->lasterror();
+ $this->errors[$error]['lib']='ErrorSQL '.$this->db->lasterror();
$this->errors[$error]['type']='SQL';
$error++;
}
@@ -379,7 +380,7 @@ class ImportCsv extends ModeleImports
}
}
}
-
+
return 1;
}
diff --git a/htdocs/lib/doleditor.class.php b/htdocs/lib/doleditor.class.php
index 7f6bca8dc8e..1c3e737bf8e 100644
--- a/htdocs/lib/doleditor.class.php
+++ b/htdocs/lib/doleditor.class.php
@@ -19,14 +19,14 @@
/**
* \file htdocs/lib/doleditor.class.php
- * \brief Classe permettant de gérer FCKEditor
+ * \brief Classe permettant de g�rer FCKEditor
* \version $Id$
*/
/**
- * \class DolEditor
- * \brief Classe de gestion de FCKEditor
- * \remarks Usage:
+ * \class DolEditor
+ * \brief Classe de gestion de FCKEditor
+ * \remarks Usage:
* \remarks $doleditor=new DolEditor('body',$message,320,'toolbar_mailing');
* \remarks $doleditor->Create();
*/
@@ -38,13 +38,13 @@ class DolEditor
/**
\brief DolEditor
\param htmlname Nom formulaire html WYSIWIG
- \param content Contenu édition WYSIWIG
- \param height Hauteur en pixel de la zone édition
- \param toolbarname Nom barre de menu éditeur
+ \param content Contenu �dition WYSIWIG
+ \param height Hauteur en pixel de la zone �dition
+ \param toolbarname Nom barre de menu �diteur
\param toolbarlocation Emplacement de la barre de menu :
- 'In' chaque fenêtre d'édition a ça propre barre d'outils
- 'Out:nom' partage de la barre d'outils où 'nom' est le nom du DIV qui affiche la barre
- \param toolbarstartexpanded visible ou non au démarrage
+ 'In' chaque fen�tre d'�dition a �a propre barre d'outils
+ 'Out:nom' partage de la barre d'outils o� 'nom' est le nom du DIV qui affiche la barre
+ \param toolbarstartexpanded visible ou non au d�marrage
\param modulepart modulepart pour protection wrapper download viewimage
*/
function DolEditor($htmlname,$content,$height=200,$toolbarname='Basic',$toolbarlocation='In',$toolbarstartexpanded=false,$uselocalbrowser=true)
diff --git a/htdocs/lib/dolgeoip.class.php b/htdocs/lib/dolgeoip.class.php
new file mode 100644
index 00000000000..73072578699
--- /dev/null
+++ b/htdocs/lib/dolgeoip.class.php
@@ -0,0 +1,100 @@
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ * \file htdocs/lib/dolgeoip.class.php
+ * \ingroup geoip
+ * \brief Library for managing module geoip
+ * \version $Id$
+ */
+
+
+/**
+ * \class DolGeoIp
+ * \brief Classe to manage GeoIP
+ * \remarks Usage:
+ * \remarks $geoip=new GeoIP('country',$datfile);
+ * \remarks $geoip->getCountryCodeFromIP($ip);
+ * \remarks $geoip->close();
+ */
+class DolGeoIP
+{
+ var $gi;
+
+ /**
+ * Constructor
+ *
+ * @param $type 'country' or 'city'
+ * @param $datfile Data file
+ * @return GeoIP
+ */
+ function DolGeoIP($type,$datfile)
+ {
+ if ($type == 'country') require_once(DOL_DOCUMENT_ROOT."/includes/geoip/geoip.inc");
+ else if ($type == 'city') require_once(DOL_DOCUMENT_ROOT."/includes/geoip/geoipcity.inc");
+ else { print 'ErrorBadParameterInConstructor'; return 0; }
+
+ if (empty($type) || empty($datfile))
+ {
+ dol_syslog("DolGeoIP::DolGeoIP parameter datafile not defined", LOG_ERR);
+ dol_print_error('DolGeoIP constructor was called with no datafile parameter');
+ return 0;
+ }
+ if (! file_exists($datfile))
+ {
+ dol_syslog("DolGeoIP::DolGeoIP datafile ".$datfile." can not be read", LOG_ERR);
+ $this->error='ErrorGeoIPClassNotInitialized';
+ $this->errorlabel="Datafile ".$datfile." not found";
+ print $this->errorlabel;
+ return 0;
+ }
+
+ $this->gi = geoip_open($datfile,GEOIP_STANDARD);
+ }
+
+ /**
+ * Return in lower cas the country code
+ * @param $ip IP to scan
+ * @return string Country code (two letters)
+ */
+ function getCountryCodeFromIP($ip)
+ {
+ if (empty($this->gi))
+ {
+ return '';
+ }
+ return strtolower(geoip_country_code_by_addr($this->gi, $ip));
+ }
+
+ function getCountryCodeFromName($ip)
+ {
+ if (empty($this->gi))
+ {
+ return '';
+ }
+ return geoip_country_code_by_name($this->gi, $ip);
+ }
+
+ function close()
+ {
+ geoip_close($this->gi);
+ }
+
+}
+?>
diff --git a/htdocs/lib/files.lib.php b/htdocs/lib/files.lib.php
index 6a7f71a2fe1..20a12f00071 100644
--- a/htdocs/lib/files.lib.php
+++ b/htdocs/lib/files.lib.php
@@ -256,7 +256,7 @@ function dol_count_nb_of_line($file)
function dol_filesize($pathoffile)
{
$newpathoffile=utf8_check($pathoffile)?utf8_decode($pathoffile):$pathoffile;
- return filesize($pathoffile);
+ return filesize($newpathoffile);
}
/**