diff --git a/AUTHORS b/AUTHORS index 4e351af1d0..c0d41ebd34 100644 --- a/AUTHORS +++ b/AUTHORS @@ -65,6 +65,9 @@ Also thanks to: * Vladimir Komarov (VrKomarov) * Wuschel +Using GeoLite data created by MaxMind and +distributed under the CC BY-SA 3.0 license. + Finally, special thanks goes to the original teams at Westwood Studios and EA for creating the classic games that inspired the creation of OpenRA. diff --git a/GeoIP.dat b/GeoIP.dat new file mode 100644 index 0000000000..bc239cfb35 Binary files /dev/null and b/GeoIP.dat differ diff --git a/GeoIP/COPYING b/GeoIP/COPYING new file mode 100644 index 0000000000..65c5ca88a6 --- /dev/null +++ b/GeoIP/COPYING @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/GeoIP/Country.cs b/GeoIP/Country.cs new file mode 100644 index 0000000000..3e16daaa5b --- /dev/null +++ b/GeoIP/Country.cs @@ -0,0 +1,63 @@ +#region Copyright & License Information +/* + * Copyright (C) 2008 MaxMind Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#endregion + +using System; +using System.IO; + +namespace GeoIP +{ + public class Country + { + String code; + String name; + + /* + * Creates a new Country. + * + * @param code the country code. + * @param name the country name. + */ + public Country(String code, String name) + { + this.code = code; + this.name = name; + } + + /* + * Returns the ISO two-letter country code of this country. + * + * @return the country code. + */ + public String getCode() + { + return code; + } + + /* + * Returns the name of this country. + * + * @return the country name. + */ + public String getName() + { + return name; + } + } +} \ No newline at end of file diff --git a/GeoIP/DatabaseInfo.cs b/GeoIP/DatabaseInfo.cs new file mode 100644 index 0000000000..54f9c77ba4 --- /dev/null +++ b/GeoIP/DatabaseInfo.cs @@ -0,0 +1,106 @@ +#region Copyright & License Information +/* + * Copyright (C) 2008 MaxMind Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#endregion + +using System; +using System.IO; + +namespace GeoIP +{ + public class DatabaseInfo + { + public static int COUNTRY_EDITION = 1; + public static int REGION_EDITION_REV0 = 7; + public static int REGION_EDITION_REV1 = 3; + public static int CITY_EDITION_REV0 = 6; + public static int CITY_EDITION_REV1 = 2; + public static int ORG_EDITION = 5; + public static int ISP_EDITION = 4; + public static int PROXY_EDITION = 8; + public static int ASNUM_EDITION = 9; + public static int NETSPEED_EDITION = 10; + public static int DOMAIN_EDITION = 11; + public static int COUNTRY_EDITION_V6 = 12; + public static int ASNUM_EDITION_V6 = 21; + public static int ISP_EDITION_V6 = 22; + public static int ORG_EDITION_V6 = 23; + public static int DOMAIN_EDITION_V6 = 24; + public static int CITY_EDITION_REV1_V6 = 30; + public static int CITY_EDITION_REV0_V6 = 31; + public static int NETSPEED_EDITION_REV1 = 32; + public static int NETSPEED_EDITION_REV1_V6 = 33; + + private String info; + /** + * Creates a new DatabaseInfo object given the database info String. + * @param info + */ + + public DatabaseInfo(String info) + { + this.info = info; + } + + public int getType() + { + if ((info == null) | (info == "")) + { + return COUNTRY_EDITION; + } + else + { + // Get the type code from the database info string and then + // subtract 105 from the value to preserve compatability with + // databases from April 2003 and earlier. + return Convert.ToInt32(info.Substring(4, 3)) - 105; + } + } + + /** + * Returns the date of the database. + * + * @return the date of the database. + */ + public DateTime getDate() + { + for (int i=0; i + + + Debug + AnyCPU + 10.0.0 + 2.0 + {021DDD6A-A608-424C-9A9A-252D8A9989E0} + Library + GeoIP + GeoIP + v3.5 + + + true + full + false + .. + DEBUG; + prompt + 4 + false + + + full + true + .. + prompt + 4 + false + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GeoIP/Location.cs b/GeoIP/Location.cs new file mode 100644 index 0000000000..1eb6997ff8 --- /dev/null +++ b/GeoIP/Location.cs @@ -0,0 +1,67 @@ +#region Copyright & License Information +/* + * Copyright (C) 2008 MaxMind Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#endregion + +using System; +using System.IO; + +namespace GeoIP +{ + public class Location + { + public String countryCode; + public String countryName; + public String region; + public String city; + public String postalCode; + public double latitude; + public double longitude; + public int dma_code; + public int area_code; + public String regionName; + public int metro_code; + + private static double EARTH_DIAMETER = 2 * 6378.2; + private static double PI = 3.14159265; + private static double RAD_CONVERT = PI / 180; + + public double distance (Location loc) + { + double delta_lat, delta_lon; + double temp; + + double lat1 = latitude; + double lon1 = longitude; + double lat2 = loc.latitude; + double lon2 = loc.longitude; + + // convert degrees to radians + lat1 *= RAD_CONVERT; + lat2 *= RAD_CONVERT; + + // find the deltas + delta_lat = lat2 - lat1; + delta_lon = (lon2 - lon1) * RAD_CONVERT; + + // Find the great circle distance + temp = Math.Pow(Math.Sin(delta_lat/2), 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Pow(Math.Sin(delta_lon/2), 2); + return EARTH_DIAMETER * Math.Atan2(Math.Sqrt(temp), Math.Sqrt(1-temp)); + } + } +} \ No newline at end of file diff --git a/GeoIP/LookupService.cs b/GeoIP/LookupService.cs new file mode 100644 index 0000000000..3907fb6ba5 --- /dev/null +++ b/GeoIP/LookupService.cs @@ -0,0 +1,1000 @@ +#region Copyright & License Information +/* + * Copyright (C) 2008 MaxMind Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#endregion + +using System; +using System.IO; +using System.Net; +using System.Runtime.CompilerServices; + +namespace GeoIP +{ + public class LookupService + { + private FileStream file = null; + private DatabaseInfo databaseInfo = null; + private Object ioLock = new Object(); + byte databaseType = Convert.ToByte(DatabaseInfo.COUNTRY_EDITION); + int[] databaseSegments; + int recordLength; + int dboptions; + byte[] dbbuffer; + + private static Country UNKNOWN_COUNTRY = new Country("--", "N/A"); + private static int COUNTRY_BEGIN = 16776960; + private static int STRUCTURE_INFO_MAX_SIZE = 20; + private static int DATABASE_INFO_MAX_SIZE = 100; + private static int FULL_RECORD_LENGTH = 100;//??? + private static int SEGMENT_RECORD_LENGTH = 3; + private static int STANDARD_RECORD_LENGTH = 3; + private static int ORG_RECORD_LENGTH = 4; + private static int MAX_RECORD_LENGTH = 4; + private static int MAX_ORG_RECORD_LENGTH = 1000;//??? + private static int FIPS_RANGE = 360; + private static int STATE_BEGIN_REV0 = 16700000; + private static int STATE_BEGIN_REV1 = 16000000; + private static int US_OFFSET = 1; + private static int CANADA_OFFSET = 677; + private static int WORLD_OFFSET = 1353; + public static int GEOIP_STANDARD = 0; + public static int GEOIP_MEMORY_CACHE = 1; + public static int GEOIP_UNKNOWN_SPEED = 0; + public static int GEOIP_DIALUP_SPEED = 1; + public static int GEOIP_CABLEDSL_SPEED = 2; + public static int GEOIP_CORPORATE_SPEED = 3; + + private static String[] countryCode = + { + "--", "AP", "EU", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "CW", + "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", "SX", "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", "BQ", "SS", "O1" + }; + + private static String[] countryName = + { + "N/A", "Asia/Pacific Region", "Europe", "Andorra", "United Arab Emirates", "Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", "Armenia", "Curacao", + "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", "Sint Maarten (Dutch part)", "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", "Libya", "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", "Bonaire, Saint Eustatius and Saba", "South Sudan", "Other"}; + + public LookupService(String databaseFile, int options) + { + try + { + lock (ioLock) + this.file = new FileStream(databaseFile, FileMode.Open, FileAccess.Read); + dboptions = options; + init(); + } + catch(System.SystemException) + { + Console.WriteLine("cannot open file " + databaseFile); + } + } + + public LookupService(String databaseFile):this(databaseFile, GEOIP_STANDARD) { } + + private void init() + { + int i, j; + byte[] delim = new byte[3]; + byte[] buf = new byte[SEGMENT_RECORD_LENGTH]; + databaseType = (byte)DatabaseInfo.COUNTRY_EDITION; + recordLength = STANDARD_RECORD_LENGTH; + + lock (ioLock) + { + file.Seek(-3,SeekOrigin.End); + for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) + { + file.Read(delim,0,3); + if (delim[0] == 255 && delim[1] == 255 && delim[2] == 255) + { + databaseType = Convert.ToByte(file.ReadByte()); + if (databaseType >= 106) + { + // Backward compatibility with databases from April 2003 and earlier + databaseType -= 105; + } + // Determine the database type. + if (databaseType == DatabaseInfo.REGION_EDITION_REV0) + { + databaseSegments = new int[1]; + databaseSegments[0] = STATE_BEGIN_REV0; + recordLength = STANDARD_RECORD_LENGTH; + } + else if (databaseType == DatabaseInfo.REGION_EDITION_REV1) + { + databaseSegments = new int[1]; + databaseSegments[0] = STATE_BEGIN_REV1; + recordLength = STANDARD_RECORD_LENGTH; + } + else if (databaseType == DatabaseInfo.CITY_EDITION_REV0 || + databaseType == DatabaseInfo.CITY_EDITION_REV1 || + databaseType == DatabaseInfo.ORG_EDITION || + databaseType == DatabaseInfo.ORG_EDITION_V6 || + databaseType == DatabaseInfo.ISP_EDITION || + databaseType == DatabaseInfo.ISP_EDITION_V6 || + databaseType == DatabaseInfo.ASNUM_EDITION || + databaseType == DatabaseInfo.ASNUM_EDITION_V6 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV0_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV1_V6) + { + databaseSegments = new int[1]; + databaseSegments[0] = 0; + if (databaseType == DatabaseInfo.CITY_EDITION_REV0 || + databaseType == DatabaseInfo.CITY_EDITION_REV1 || + databaseType == DatabaseInfo.ASNUM_EDITION_V6 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV0_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV1_V6 || + databaseType == DatabaseInfo.ASNUM_EDITION) + { + recordLength = STANDARD_RECORD_LENGTH; + } + else + { + recordLength = ORG_RECORD_LENGTH; + } + file.Read(buf,0,SEGMENT_RECORD_LENGTH); + for (j = 0; j < SEGMENT_RECORD_LENGTH; j++) + databaseSegments[0] += (unsignedByteToInt(buf[j]) << (j * 8)); + } + break; + } + else + { + file.Seek(-4,SeekOrigin.Current); + } + } + if ((databaseType == DatabaseInfo.COUNTRY_EDITION) || + (databaseType == DatabaseInfo.COUNTRY_EDITION_V6) || + (databaseType == DatabaseInfo.PROXY_EDITION) || + (databaseType == DatabaseInfo.NETSPEED_EDITION)) + { + databaseSegments = new int[1]; + databaseSegments[0] = COUNTRY_BEGIN; + recordLength = STANDARD_RECORD_LENGTH; + } + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + { + int l = (int) file.Length; + dbbuffer = new byte[l]; + file.Seek(0,SeekOrigin.Begin); + file.Read(dbbuffer,0,l); + } + } + } + + public void close() + { + try + { + lock (ioLock) { file.Close(); } + file = null; + } + catch (Exception) { } + } + + public Country getCountry(IPAddress ipAddress) + { + return getCountry(bytestoLong(ipAddress.GetAddressBytes())); + } + + public Country getCountryV6(String ipAddress) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(ipAddress); + } + + catch (Exception e) + { + Console.WriteLine(e.Message); + return UNKNOWN_COUNTRY; + } + return getCountryV6(addr); + } + + public Country getCountry(String ipAddress) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(ipAddress); + } + + catch (Exception e) + { + Console.WriteLine(e.Message); + return UNKNOWN_COUNTRY; + } + return getCountry(bytestoLong(addr.GetAddressBytes())); + } + + public Country getCountryV6(IPAddress ipAddress) + { + if (file == null) + { + throw new Exception("Database has been closed."); + } + if ((databaseType == DatabaseInfo.CITY_EDITION_REV1) | + (databaseType == DatabaseInfo.CITY_EDITION_REV0)) + { + var l = getLocation(ipAddress); + if (l == null) + return UNKNOWN_COUNTRY; + else + return new Country(l.countryCode, l.countryName); + } + else + { + int ret = SeekCountryV6(ipAddress) - COUNTRY_BEGIN; + if (ret == 0) + return UNKNOWN_COUNTRY; + else + return new Country(countryCode[ret], countryName[ret]); + } + } + + public Country getCountry(long ipAddress) + { + if (file == null) + throw new Exception("Database has been closed."); + if ((databaseType == DatabaseInfo.CITY_EDITION_REV1) | + (databaseType == DatabaseInfo.CITY_EDITION_REV0)) + { + var l = getLocation(ipAddress); + if (l == null) + return UNKNOWN_COUNTRY; + else + return new Country(l.countryCode, l.countryName); + } + else + { + var ret = SeekCountry(ipAddress) - COUNTRY_BEGIN; + if (ret == 0) + return UNKNOWN_COUNTRY; + else + return new Country(countryCode[ret], countryName[ret]); + } + } + + public int getID(String ipAddress) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(ipAddress); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + return 0; + } + return getID(bytestoLong(addr.GetAddressBytes())); + } + + public int getID(IPAddress ipAddress) + { + + return getID(bytestoLong(ipAddress.GetAddressBytes())); + } + + public int getID(long ipAddress) + { + if (file == null) + throw new Exception("Database has been closed."); + int ret = SeekCountry(ipAddress) - databaseSegments[0]; + return ret; + } + + public DatabaseInfo getDatabaseInfo() + { + if (databaseInfo != null) + return databaseInfo; + try + { + // Synchronize since we're accessing the database file. + lock (ioLock) + { + bool hasStructureInfo = false; + byte [] delim = new byte[3]; + // Advance to part of file where database info is stored. + file.Seek(-3,SeekOrigin.End); + for (int i=0; i= 1000) + { + record.countryCode = "US"; + record.countryName = "United States"; + ch[0] = (char)(((seek_region - 1000)/26) + 65); + ch[1] = (char)(((seek_region - 1000)%26) + 65); + record.region = new String(ch); + } + else + { + record.countryCode = countryCode[seek_region]; + record.countryName = countryName[seek_region]; + record.region = ""; + } + } + else if (databaseType == DatabaseInfo.REGION_EDITION_REV1) + { + seek_region = SeekCountry(ipnum) - STATE_BEGIN_REV1; + char [] ch = new char[2]; + if (seek_region < US_OFFSET) + { + record.countryCode = ""; + record.countryName = ""; + record.region = ""; + } else if (seek_region < CANADA_OFFSET) + { + record.countryCode = "US"; + record.countryName = "United States"; + ch[0] = (char)(((seek_region - US_OFFSET)/26) + 65); + ch[1] = (char)(((seek_region - US_OFFSET)%26) + 65); + record.region = new String(ch); + } else if (seek_region < WORLD_OFFSET) + { + record.countryCode = "CA"; + record.countryName = "Canada"; + ch[0] = (char)(((seek_region - CANADA_OFFSET)/26) + 65); + ch[1] = (char)(((seek_region - CANADA_OFFSET)%26) + 65); + record.region = new String(ch); + } + else + { + record.countryCode = countryCode[(seek_region - WORLD_OFFSET) / FIPS_RANGE]; + record.countryName = countryName[(seek_region - WORLD_OFFSET) / FIPS_RANGE]; + record.region = ""; + } + } + return record; + } + + public Location getLocation(IPAddress addr) + { + return getLocation(bytestoLong(addr.GetAddressBytes())); + } + + public Location getLocationV6(String str) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(str); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + return null; + } + + return getLocationV6(addr); + } + + public Location getLocation(String str) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(str); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + return null; + } + + return getLocation(bytestoLong(addr.GetAddressBytes())); + } + + [MethodImpl(MethodImplOptions.Synchronized)] + public Location getLocationV6(IPAddress addr) + { + int record_pointer; + byte[] record_buf = new byte[FULL_RECORD_LENGTH]; + char[] record_buf2 = new char[FULL_RECORD_LENGTH]; + int record_buf_offset = 0; + Location record = new Location(); + int str_length = 0; + int j, Seek_country; + double latitude = 0, longitude = 0; + + try + { + Seek_country = SeekCountryV6(addr); + if (Seek_country == databaseSegments[0]) + return null; + + record_pointer = Seek_country + ((2 * recordLength - 1) * databaseSegments[0]); + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + Array.Copy(dbbuffer, record_pointer, record_buf, 0, Math.Min(dbbuffer.Length - record_pointer, FULL_RECORD_LENGTH)); + else + { + lock (ioLock) + { + file.Seek(record_pointer,SeekOrigin.Begin); + file.Read(record_buf,0,FULL_RECORD_LENGTH); + } + } + for (int a0 = 0;a0 < FULL_RECORD_LENGTH;a0++) + record_buf2[a0] = Convert.ToChar(record_buf[a0]); + + // get country + record.countryCode = countryCode[unsignedByteToInt(record_buf[0])]; + record.countryName = countryName[unsignedByteToInt(record_buf[0])]; + record_buf_offset++; + + // get region + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) + record.region = new String(record_buf2, record_buf_offset, str_length); + record_buf_offset += str_length + 1; + str_length = 0; + + // get region_name + record.regionName = RegionName.getRegionName( record.countryCode, record.region ); + + // get city + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) + record.city = new String(record_buf2, record_buf_offset, str_length); + record_buf_offset += (str_length + 1); + str_length = 0; + + // get postal code + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) + record.postalCode = new String(record_buf2, record_buf_offset, str_length); + record_buf_offset += (str_length + 1); + + // get latitude + for (j = 0; j < 3; j++) + latitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.latitude = (float)latitude/10000 - 180; + record_buf_offset += 3; + + // get longitude + for (j = 0; j < 3; j++) + longitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.longitude = (float)longitude/10000 - 180; + + record.metro_code = record.dma_code = 0; + record.area_code = 0; + if (databaseType == DatabaseInfo.CITY_EDITION_REV1 + ||databaseType == DatabaseInfo.CITY_EDITION_REV1_V6) + { + // get metro_code + int metroarea_combo = 0; + if (record.countryCode == "US") + { + record_buf_offset += 3; + for (j = 0; j < 3; j++) + metroarea_combo += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.metro_code = record.dma_code = metroarea_combo/1000; + record.area_code = metroarea_combo % 1000; + } + } + } + catch (IOException) + { + Console.WriteLine("IO Exception while seting up segments"); + } + return record; + } + + [MethodImpl(MethodImplOptions.Synchronized)] + public Location getLocation(long ipnum) + { + int record_pointer; + byte[] record_buf = new byte[FULL_RECORD_LENGTH]; + char[] record_buf2 = new char[FULL_RECORD_LENGTH]; + int record_buf_offset = 0; + Location record = new Location(); + int str_length = 0; + int j, Seek_country; + double latitude = 0, longitude = 0; + + try + { + Seek_country = SeekCountry(ipnum); + if (Seek_country == databaseSegments[0]) + return null; + + record_pointer = Seek_country + ((2 * recordLength - 1) * databaseSegments[0]); + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + Array.Copy(dbbuffer, record_pointer, record_buf, 0, Math.Min(dbbuffer.Length - record_pointer, FULL_RECORD_LENGTH)); + else + { + lock (ioLock) + { + file.Seek(record_pointer,SeekOrigin.Begin); + file.Read(record_buf,0,FULL_RECORD_LENGTH); + } + } + + for (int a0 = 0;a0 < FULL_RECORD_LENGTH;a0++) + record_buf2[a0] = Convert.ToChar(record_buf[a0]); + + // get country + record.countryCode = countryCode[unsignedByteToInt(record_buf[0])]; + record.countryName = countryName[unsignedByteToInt(record_buf[0])]; + record_buf_offset++; + + // get region + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) + record.region = new String(record_buf2, record_buf_offset, str_length); + record_buf_offset += str_length + 1; + str_length = 0; + + // get region_name + record.regionName = RegionName.getRegionName(record.countryCode, record.region); + + // get city + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) + record.city = new String(record_buf2, record_buf_offset, str_length); + + record_buf_offset += (str_length + 1); + str_length = 0; + + // get postal code + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) + record.postalCode = new String(record_buf2, record_buf_offset, str_length); + record_buf_offset += (str_length + 1); + + // get latitude + for (j = 0; j < 3; j++) + latitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.latitude = (float) latitude/10000 - 180; + record_buf_offset += 3; + + // get longitude + for (j = 0; j < 3; j++) + longitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.longitude = (float) longitude/10000 - 180; + + record.metro_code = record.dma_code = 0; + record.area_code = 0; + if (databaseType == DatabaseInfo.CITY_EDITION_REV1) + { + // get metro_code + int metroarea_combo = 0; + if (record.countryCode == "US"){ + record_buf_offset += 3; + for (j = 0; j < 3; j++) + metroarea_combo += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.metro_code = record.dma_code = metroarea_combo/1000; + record.area_code = metroarea_combo % 1000; + } + } + } + catch (IOException) + { + Console.WriteLine("IO Exception while seting up segments"); + } + return record; + } + + public String getOrg(IPAddress addr) + { + return getOrg(bytestoLong(addr.GetAddressBytes())); + } + + public String getOrgV6(String str) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(str); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + return null; + } + return getOrgV6(addr); + } + + public String getOrg(String str) + { + IPAddress addr; + try + { + addr = IPAddress.Parse(str); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + return null; + } + return getOrg(bytestoLong(addr.GetAddressBytes())); + } + + [MethodImpl(MethodImplOptions.Synchronized)] + public String getOrgV6( IPAddress addr) + { + int Seek_org; + int record_pointer; + int str_length = 0; + byte[] buf = new byte[MAX_ORG_RECORD_LENGTH]; + char[] buf2 = new char[MAX_ORG_RECORD_LENGTH]; + String org_buf; + + try + { + Seek_org = SeekCountryV6(addr); + if (Seek_org == databaseSegments[0]) + return null; + + record_pointer = Seek_org + (2 * recordLength - 1) * databaseSegments[0]; + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + Array.Copy(dbbuffer, record_pointer, buf, 0, Math.Min(dbbuffer.Length - record_pointer, MAX_ORG_RECORD_LENGTH)); + else + { + lock (ioLock) + { + file.Seek(record_pointer,SeekOrigin.Begin); + file.Read(buf,0,MAX_ORG_RECORD_LENGTH); + } + } + while (buf[str_length] != 0) + { + buf2[str_length] = Convert.ToChar(buf[str_length]); + str_length++; + } + buf2[str_length] = '\0'; + org_buf = new String(buf2,0,str_length); + return org_buf; + } + catch (IOException) + { + Console.WriteLine("IO Exception"); + return null; + } + } + + [MethodImpl(MethodImplOptions.Synchronized)] + public String getOrg(long ipnum) + { + int Seek_org; + int record_pointer; + int str_length = 0; + byte [] buf = new byte[MAX_ORG_RECORD_LENGTH]; + char [] buf2 = new char[MAX_ORG_RECORD_LENGTH]; + String org_buf; + + try + { + Seek_org = SeekCountry(ipnum); + if (Seek_org == databaseSegments[0]) + return null; + + record_pointer = Seek_org + (2 * recordLength - 1) * databaseSegments[0]; + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + Array.Copy(dbbuffer, record_pointer, buf, 0, Math.Min(dbbuffer.Length - record_pointer, MAX_ORG_RECORD_LENGTH)); + else + { + lock (ioLock) + { + file.Seek(record_pointer,SeekOrigin.Begin); + file.Read(buf,0,MAX_ORG_RECORD_LENGTH); + } + } + while (buf[str_length] != 0) + { + buf2[str_length] = Convert.ToChar(buf[str_length]); + str_length++; + } + buf2[str_length] = '\0'; + org_buf = new String(buf2, 0, str_length); + return org_buf; + } + catch (IOException) + { + Console.WriteLine("IO Exception"); + return null; + } + } + + [MethodImpl(MethodImplOptions.Synchronized)] + int SeekCountryV6(IPAddress ipAddress) + { + byte [] v6vec = ipAddress.GetAddressBytes(); + byte [] buf = new byte[2 * MAX_RECORD_LENGTH]; + int [] x = new int[2]; + int offset = 0; + + for (int depth = 127; depth >= 0; depth--) + { + try + { + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + { + for (int i = 0;i < (2 * MAX_RECORD_LENGTH);i++) + buf[i] = dbbuffer[i+(2 * recordLength * offset)]; + } + else + { + lock (ioLock) + { + file.Seek(2 * recordLength * offset,SeekOrigin.Begin); + file.Read(buf,0,2 * MAX_RECORD_LENGTH); + } + } + } + catch (IOException) + { + Console.WriteLine("IO Exception"); + } + for (int i = 0; i<2; i++) + { + x[i] = 0; + for (int j = 0; j> 3; + int b_mask = 1 << ( bnum & 7 ^ 7 ); + if ((v6vec[idx] & b_mask) > 0) + { + if (x[1] >= databaseSegments[0]) + { + return x[1]; + } + offset = x[1]; + } + else + { + if (x[0] >= databaseSegments[0]) + { + return x[0]; + } + offset = x[0]; + } + } + + // shouldn't reach here + Console.WriteLine("Error Seeking country while Seeking " + ipAddress); + return 0; + } + + [MethodImpl(MethodImplOptions.Synchronized)] + int SeekCountry(long ipAddress) + { + byte [] buf = new byte[2 * MAX_RECORD_LENGTH]; + int [] x = new int[2]; + int offset = 0; + for (int depth = 31; depth >= 0; depth--) + { + try + { + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) + { + for (int i = 0;i < (2 * MAX_RECORD_LENGTH);i++) + { + buf[i] = dbbuffer[i+(2 * recordLength * offset)]; + } + } + else + { + lock (ioLock) + { + file.Seek(2 * recordLength * offset,SeekOrigin.Begin); + file.Read(buf, 0, 2 * MAX_RECORD_LENGTH); + } + } + } + catch (IOException) + { + Console.WriteLine("IO Exception"); + } + for (int i = 0; i<2; i++) + { + x[i] = 0; + for (int j = 0; j 0) + { + if (x[1] >= databaseSegments[0]) + return x[1]; + offset = x[1]; + } + else + { + if (x[0] >= databaseSegments[0]) + return x[0]; + offset = x[0]; + } + } + + // shouldn't reach here + Console.WriteLine("Error Seeking country while Seeking " + ipAddress); + return 0; + } + + static long swapbytes(long ipAddress) + { + return (((ipAddress>>0) & 255) << 24) | (((ipAddress>>8) & 255) << 16) + | (((ipAddress>>16) & 255) << 8) | (((ipAddress>>24) & 255) << 0); + } + + static long bytestoLong(byte [] address) + { + long ipnum = 0; + for (int i = 0; i < 4; ++i) + { + long y = address[i]; + if (y < 0) + y += 256; + ipnum += y << ((3-i)*8); + } + return ipnum; + } + + static int unsignedByteToInt(byte b) + { + return (int) b & 0xFF; + } + } +} \ No newline at end of file diff --git a/GeoIP/Region.cs b/GeoIP/Region.cs new file mode 100644 index 0000000000..6954981dd7 --- /dev/null +++ b/GeoIP/Region.cs @@ -0,0 +1,53 @@ +#region Copyright & License Information +/* + * Copyright (C) 2008 MaxMind Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#endregion + +using System; +using System.IO; + +public class Region +{ + public String countryCode; + public String countryName; + public String region; + + public Region() { } + + public Region(String countryCode,String countryName,String region) + { + this.countryCode = countryCode; + this.countryName = countryName; + this.region = region; + } + + public String getcountryCode() + { + return countryCode; + } + + public String getcountryName() + { + return countryName; + } + + public String getregion() + { + return region; + } +} \ No newline at end of file diff --git a/GeoIP/RegionName.cs b/GeoIP/RegionName.cs new file mode 100644 index 0000000000..bae13c17e3 --- /dev/null +++ b/GeoIP/RegionName.cs @@ -0,0 +1,4489 @@ +#region Copyright & License Information +/* + * Copyright (C) 2008 MaxMind Inc. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#endregion + +using System; +using System.Collections; + +public static class RegionName +{ + static Hashtable GEOIP_REGION_NAME; + + public static String getRegionName(String ccode, String region) + { + if (GEOIP_REGION_NAME == null) + init_region_names(); + + if (region == null || region == "00") + return null; + + if (!GEOIP_REGION_NAME.ContainsKey(ccode)) + return null; + + return (String)((Hashtable)GEOIP_REGION_NAME[ccode])[region]; + } + + static void init_region_names() + { + GEOIP_REGION_NAME = new Hashtable(); + Hashtable cc_reg_AD = new Hashtable(); + cc_reg_AD.Add("02", "Canillo"); + cc_reg_AD.Add("03", "Encamp"); + cc_reg_AD.Add("04", "La Massana"); + cc_reg_AD.Add("05", "Ordino"); + cc_reg_AD.Add("06", "Sant Julia de Loria"); + cc_reg_AD.Add("07", "Andorra la Vella"); + cc_reg_AD.Add("08", "Escaldes-Engordany"); + GEOIP_REGION_NAME.Add("AD", cc_reg_AD ); + Hashtable cc_reg_AE = new Hashtable(); + cc_reg_AE.Add("01", "Abu Dhabi"); + cc_reg_AE.Add("02", "Ajman"); + cc_reg_AE.Add("03", "Dubai"); + cc_reg_AE.Add("04", "Fujairah"); + cc_reg_AE.Add("05", "Ras Al Khaimah"); + cc_reg_AE.Add("06", "Sharjah"); + cc_reg_AE.Add("07", "Umm Al Quwain"); + GEOIP_REGION_NAME.Add("AE", cc_reg_AE ); + Hashtable cc_reg_AF = new Hashtable(); + cc_reg_AF.Add("01", "Badakhshan"); + cc_reg_AF.Add("02", "Badghis"); + cc_reg_AF.Add("03", "Baghlan"); + cc_reg_AF.Add("05", "Bamian"); + cc_reg_AF.Add("06", "Farah"); + cc_reg_AF.Add("07", "Faryab"); + cc_reg_AF.Add("08", "Ghazni"); + cc_reg_AF.Add("09", "Ghowr"); + cc_reg_AF.Add("10", "Helmand"); + cc_reg_AF.Add("11", "Herat"); + cc_reg_AF.Add("13", "Kabol"); + cc_reg_AF.Add("14", "Kapisa"); + cc_reg_AF.Add("17", "Lowgar"); + cc_reg_AF.Add("18", "Nangarhar"); + cc_reg_AF.Add("19", "Nimruz"); + cc_reg_AF.Add("23", "Kandahar"); + cc_reg_AF.Add("24", "Kondoz"); + cc_reg_AF.Add("26", "Takhar"); + cc_reg_AF.Add("27", "Vardak"); + cc_reg_AF.Add("28", "Zabol"); + cc_reg_AF.Add("29", "Paktika"); + cc_reg_AF.Add("30", "Balkh"); + cc_reg_AF.Add("31", "Jowzjan"); + cc_reg_AF.Add("32", "Samangan"); + cc_reg_AF.Add("33", "Sar-e Pol"); + cc_reg_AF.Add("34", "Konar"); + cc_reg_AF.Add("35", "Laghman"); + cc_reg_AF.Add("36", "Paktia"); + cc_reg_AF.Add("37", "Khowst"); + cc_reg_AF.Add("38", "Nurestan"); + cc_reg_AF.Add("39", "Oruzgan"); + cc_reg_AF.Add("40", "Parvan"); + cc_reg_AF.Add("41", "Daykondi"); + cc_reg_AF.Add("42", "Panjshir"); + GEOIP_REGION_NAME.Add("AF", cc_reg_AF ); + Hashtable cc_reg_AG = new Hashtable(); + cc_reg_AG.Add("01", "Barbuda"); + cc_reg_AG.Add("03", "Saint George"); + cc_reg_AG.Add("04", "Saint John"); + cc_reg_AG.Add("05", "Saint Mary"); + cc_reg_AG.Add("06", "Saint Paul"); + cc_reg_AG.Add("07", "Saint Peter"); + cc_reg_AG.Add("08", "Saint Philip"); + cc_reg_AG.Add("09", "Redonda"); + GEOIP_REGION_NAME.Add("AG", cc_reg_AG ); + Hashtable cc_reg_AL = new Hashtable(); + cc_reg_AL.Add("40", "Berat"); + cc_reg_AL.Add("41", "Diber"); + cc_reg_AL.Add("42", "Durres"); + cc_reg_AL.Add("43", "Elbasan"); + cc_reg_AL.Add("44", "Fier"); + cc_reg_AL.Add("45", "Gjirokaster"); + cc_reg_AL.Add("46", "Korce"); + cc_reg_AL.Add("47", "Kukes"); + cc_reg_AL.Add("48", "Lezhe"); + cc_reg_AL.Add("49", "Shkoder"); + cc_reg_AL.Add("50", "Tirane"); + cc_reg_AL.Add("51", "Vlore"); + GEOIP_REGION_NAME.Add("AL", cc_reg_AL ); + Hashtable cc_reg_AM = new Hashtable(); + cc_reg_AM.Add("01", "Aragatsotn"); + cc_reg_AM.Add("02", "Ararat"); + cc_reg_AM.Add("03", "Armavir"); + cc_reg_AM.Add("04", "Geghark'unik'"); + cc_reg_AM.Add("05", "Kotayk'"); + cc_reg_AM.Add("06", "Lorri"); + cc_reg_AM.Add("07", "Shirak"); + cc_reg_AM.Add("08", "Syunik'"); + cc_reg_AM.Add("09", "Tavush"); + cc_reg_AM.Add("10", "Vayots' Dzor"); + cc_reg_AM.Add("11", "Yerevan"); + GEOIP_REGION_NAME.Add("AM", cc_reg_AM ); + Hashtable cc_reg_AO = new Hashtable(); + cc_reg_AO.Add("01", "Benguela"); + cc_reg_AO.Add("02", "Bie"); + cc_reg_AO.Add("03", "Cabinda"); + cc_reg_AO.Add("04", "Cuando Cubango"); + cc_reg_AO.Add("05", "Cuanza Norte"); + cc_reg_AO.Add("06", "Cuanza Sul"); + cc_reg_AO.Add("07", "Cunene"); + cc_reg_AO.Add("08", "Huambo"); + cc_reg_AO.Add("09", "Huila"); + cc_reg_AO.Add("12", "Malanje"); + cc_reg_AO.Add("13", "Namibe"); + cc_reg_AO.Add("14", "Moxico"); + cc_reg_AO.Add("15", "Uige"); + cc_reg_AO.Add("16", "Zaire"); + cc_reg_AO.Add("17", "Lunda Norte"); + cc_reg_AO.Add("18", "Lunda Sul"); + cc_reg_AO.Add("19", "Bengo"); + cc_reg_AO.Add("20", "Luanda"); + GEOIP_REGION_NAME.Add("AO", cc_reg_AO ); + Hashtable cc_reg_AR = new Hashtable(); + cc_reg_AR.Add("01", "Buenos Aires"); + cc_reg_AR.Add("02", "Catamarca"); + cc_reg_AR.Add("03", "Chaco"); + cc_reg_AR.Add("04", "Chubut"); + cc_reg_AR.Add("05", "Cordoba"); + cc_reg_AR.Add("06", "Corrientes"); + cc_reg_AR.Add("07", "Distrito Federal"); + cc_reg_AR.Add("08", "Entre Rios"); + cc_reg_AR.Add("09", "Formosa"); + cc_reg_AR.Add("10", "Jujuy"); + cc_reg_AR.Add("11", "La Pampa"); + cc_reg_AR.Add("12", "La Rioja"); + cc_reg_AR.Add("13", "Mendoza"); + cc_reg_AR.Add("14", "Misiones"); + cc_reg_AR.Add("15", "Neuquen"); + cc_reg_AR.Add("16", "Rio Negro"); + cc_reg_AR.Add("17", "Salta"); + cc_reg_AR.Add("18", "San Juan"); + cc_reg_AR.Add("19", "San Luis"); + cc_reg_AR.Add("20", "Santa Cruz"); + cc_reg_AR.Add("21", "Santa Fe"); + cc_reg_AR.Add("22", "Santiago del Estero"); + cc_reg_AR.Add("23", "Tierra del Fuego"); + cc_reg_AR.Add("24", "Tucuman"); + GEOIP_REGION_NAME.Add("AR", cc_reg_AR ); + Hashtable cc_reg_AT = new Hashtable(); + cc_reg_AT.Add("01", "Burgenland"); + cc_reg_AT.Add("02", "Karnten"); + cc_reg_AT.Add("03", "Niederosterreich"); + cc_reg_AT.Add("04", "Oberosterreich"); + cc_reg_AT.Add("05", "Salzburg"); + cc_reg_AT.Add("06", "Steiermark"); + cc_reg_AT.Add("07", "Tirol"); + cc_reg_AT.Add("08", "Vorarlberg"); + cc_reg_AT.Add("09", "Wien"); + GEOIP_REGION_NAME.Add("AT", cc_reg_AT ); + Hashtable cc_reg_AU = new Hashtable(); + cc_reg_AU.Add("01", "Australian Capital Territory"); + cc_reg_AU.Add("02", "New South Wales"); + cc_reg_AU.Add("03", "Northern Territory"); + cc_reg_AU.Add("04", "Queensland"); + cc_reg_AU.Add("05", "South Australia"); + cc_reg_AU.Add("06", "Tasmania"); + cc_reg_AU.Add("07", "Victoria"); + cc_reg_AU.Add("08", "Western Australia"); + GEOIP_REGION_NAME.Add("AU", cc_reg_AU ); + Hashtable cc_reg_AZ = new Hashtable(); + cc_reg_AZ.Add("01", "Abseron"); + cc_reg_AZ.Add("02", "Agcabadi"); + cc_reg_AZ.Add("03", "Agdam"); + cc_reg_AZ.Add("04", "Agdas"); + cc_reg_AZ.Add("05", "Agstafa"); + cc_reg_AZ.Add("06", "Agsu"); + cc_reg_AZ.Add("07", "Ali Bayramli"); + cc_reg_AZ.Add("08", "Astara"); + cc_reg_AZ.Add("09", "Baki"); + cc_reg_AZ.Add("10", "Balakan"); + cc_reg_AZ.Add("11", "Barda"); + cc_reg_AZ.Add("12", "Beylaqan"); + cc_reg_AZ.Add("13", "Bilasuvar"); + cc_reg_AZ.Add("14", "Cabrayil"); + cc_reg_AZ.Add("15", "Calilabad"); + cc_reg_AZ.Add("16", "Daskasan"); + cc_reg_AZ.Add("17", "Davaci"); + cc_reg_AZ.Add("18", "Fuzuli"); + cc_reg_AZ.Add("19", "Gadabay"); + cc_reg_AZ.Add("20", "Ganca"); + cc_reg_AZ.Add("21", "Goranboy"); + cc_reg_AZ.Add("22", "Goycay"); + cc_reg_AZ.Add("23", "Haciqabul"); + cc_reg_AZ.Add("24", "Imisli"); + cc_reg_AZ.Add("25", "Ismayilli"); + cc_reg_AZ.Add("26", "Kalbacar"); + cc_reg_AZ.Add("27", "Kurdamir"); + cc_reg_AZ.Add("28", "Lacin"); + cc_reg_AZ.Add("29", "Lankaran"); + cc_reg_AZ.Add("30", "Lankaran"); + cc_reg_AZ.Add("31", "Lerik"); + cc_reg_AZ.Add("32", "Masalli"); + cc_reg_AZ.Add("33", "Mingacevir"); + cc_reg_AZ.Add("34", "Naftalan"); + cc_reg_AZ.Add("35", "Naxcivan"); + cc_reg_AZ.Add("36", "Neftcala"); + cc_reg_AZ.Add("37", "Oguz"); + cc_reg_AZ.Add("38", "Qabala"); + cc_reg_AZ.Add("39", "Qax"); + cc_reg_AZ.Add("40", "Qazax"); + cc_reg_AZ.Add("41", "Qobustan"); + cc_reg_AZ.Add("42", "Quba"); + cc_reg_AZ.Add("43", "Qubadli"); + cc_reg_AZ.Add("44", "Qusar"); + cc_reg_AZ.Add("45", "Saatli"); + cc_reg_AZ.Add("46", "Sabirabad"); + cc_reg_AZ.Add("47", "Saki"); + cc_reg_AZ.Add("48", "Saki"); + cc_reg_AZ.Add("49", "Salyan"); + cc_reg_AZ.Add("50", "Samaxi"); + cc_reg_AZ.Add("51", "Samkir"); + cc_reg_AZ.Add("52", "Samux"); + cc_reg_AZ.Add("53", "Siyazan"); + cc_reg_AZ.Add("54", "Sumqayit"); + cc_reg_AZ.Add("55", "Susa"); + cc_reg_AZ.Add("56", "Susa"); + cc_reg_AZ.Add("57", "Tartar"); + cc_reg_AZ.Add("58", "Tovuz"); + cc_reg_AZ.Add("59", "Ucar"); + cc_reg_AZ.Add("60", "Xacmaz"); + cc_reg_AZ.Add("61", "Xankandi"); + cc_reg_AZ.Add("62", "Xanlar"); + cc_reg_AZ.Add("63", "Xizi"); + cc_reg_AZ.Add("64", "Xocali"); + cc_reg_AZ.Add("65", "Xocavand"); + cc_reg_AZ.Add("66", "Yardimli"); + cc_reg_AZ.Add("67", "Yevlax"); + cc_reg_AZ.Add("68", "Yevlax"); + cc_reg_AZ.Add("69", "Zangilan"); + cc_reg_AZ.Add("70", "Zaqatala"); + cc_reg_AZ.Add("71", "Zardab"); + GEOIP_REGION_NAME.Add("AZ", cc_reg_AZ ); + Hashtable cc_reg_BA = new Hashtable(); + cc_reg_BA.Add("01", "Federation of Bosnia and Herzegovina"); + cc_reg_BA.Add("02", "Republika Srpska"); + GEOIP_REGION_NAME.Add("BA", cc_reg_BA ); + Hashtable cc_reg_BB = new Hashtable(); + cc_reg_BB.Add("01", "Christ Church"); + cc_reg_BB.Add("02", "Saint Andrew"); + cc_reg_BB.Add("03", "Saint George"); + cc_reg_BB.Add("04", "Saint James"); + cc_reg_BB.Add("05", "Saint John"); + cc_reg_BB.Add("06", "Saint Joseph"); + cc_reg_BB.Add("07", "Saint Lucy"); + cc_reg_BB.Add("08", "Saint Michael"); + cc_reg_BB.Add("09", "Saint Peter"); + cc_reg_BB.Add("10", "Saint Philip"); + cc_reg_BB.Add("11", "Saint Thomas"); + GEOIP_REGION_NAME.Add("BB", cc_reg_BB ); + Hashtable cc_reg_BD = new Hashtable(); + cc_reg_BD.Add("81", "Dhaka"); + cc_reg_BD.Add("82", "Khulna"); + cc_reg_BD.Add("83", "Rajshahi"); + cc_reg_BD.Add("84", "Chittagong"); + cc_reg_BD.Add("85", "Barisal"); + cc_reg_BD.Add("86", "Sylhet"); + GEOIP_REGION_NAME.Add("BD", cc_reg_BD ); + Hashtable cc_reg_BE = new Hashtable(); + cc_reg_BE.Add("01", "Antwerpen"); + cc_reg_BE.Add("03", "Hainaut"); + cc_reg_BE.Add("04", "Liege"); + cc_reg_BE.Add("05", "Limburg"); + cc_reg_BE.Add("06", "Luxembourg"); + cc_reg_BE.Add("07", "Namur"); + cc_reg_BE.Add("08", "Oost-Vlaanderen"); + cc_reg_BE.Add("09", "West-Vlaanderen"); + cc_reg_BE.Add("10", "Brabant Wallon"); + cc_reg_BE.Add("11", "Brussels Hoofdstedelijk Gewest"); + cc_reg_BE.Add("12", "Vlaams-Brabant"); + cc_reg_BE.Add("13", "Flanders"); + cc_reg_BE.Add("14", "Wallonia"); + GEOIP_REGION_NAME.Add("BE", cc_reg_BE ); + Hashtable cc_reg_BF = new Hashtable(); + cc_reg_BF.Add("15", "Bam"); + cc_reg_BF.Add("19", "Boulkiemde"); + cc_reg_BF.Add("20", "Ganzourgou"); + cc_reg_BF.Add("21", "Gnagna"); + cc_reg_BF.Add("28", "Kouritenga"); + cc_reg_BF.Add("33", "Oudalan"); + cc_reg_BF.Add("34", "Passore"); + cc_reg_BF.Add("36", "Sanguie"); + cc_reg_BF.Add("40", "Soum"); + cc_reg_BF.Add("42", "Tapoa"); + cc_reg_BF.Add("44", "Zoundweogo"); + cc_reg_BF.Add("45", "Bale"); + cc_reg_BF.Add("46", "Banwa"); + cc_reg_BF.Add("47", "Bazega"); + cc_reg_BF.Add("48", "Bougouriba"); + cc_reg_BF.Add("49", "Boulgou"); + cc_reg_BF.Add("50", "Gourma"); + cc_reg_BF.Add("51", "Houet"); + cc_reg_BF.Add("52", "Ioba"); + cc_reg_BF.Add("53", "Kadiogo"); + cc_reg_BF.Add("54", "Kenedougou"); + cc_reg_BF.Add("55", "Komoe"); + cc_reg_BF.Add("56", "Komondjari"); + cc_reg_BF.Add("57", "Kompienga"); + cc_reg_BF.Add("58", "Kossi"); + cc_reg_BF.Add("59", "Koulpelogo"); + cc_reg_BF.Add("60", "Kourweogo"); + cc_reg_BF.Add("61", "Leraba"); + cc_reg_BF.Add("62", "Loroum"); + cc_reg_BF.Add("63", "Mouhoun"); + cc_reg_BF.Add("64", "Namentenga"); + cc_reg_BF.Add("65", "Naouri"); + cc_reg_BF.Add("66", "Nayala"); + cc_reg_BF.Add("67", "Noumbiel"); + cc_reg_BF.Add("68", "Oubritenga"); + cc_reg_BF.Add("69", "Poni"); + cc_reg_BF.Add("70", "Sanmatenga"); + cc_reg_BF.Add("71", "Seno"); + cc_reg_BF.Add("72", "Sissili"); + cc_reg_BF.Add("73", "Sourou"); + cc_reg_BF.Add("74", "Tuy"); + cc_reg_BF.Add("75", "Yagha"); + cc_reg_BF.Add("76", "Yatenga"); + cc_reg_BF.Add("77", "Ziro"); + cc_reg_BF.Add("78", "Zondoma"); + GEOIP_REGION_NAME.Add("BF", cc_reg_BF ); + Hashtable cc_reg_BG = new Hashtable(); + cc_reg_BG.Add("33", "Mikhaylovgrad"); + cc_reg_BG.Add("38", "Blagoevgrad"); + cc_reg_BG.Add("39", "Burgas"); + cc_reg_BG.Add("40", "Dobrich"); + cc_reg_BG.Add("41", "Gabrovo"); + cc_reg_BG.Add("42", "Grad Sofiya"); + cc_reg_BG.Add("43", "Khaskovo"); + cc_reg_BG.Add("44", "Kurdzhali"); + cc_reg_BG.Add("45", "Kyustendil"); + cc_reg_BG.Add("46", "Lovech"); + cc_reg_BG.Add("47", "Montana"); + cc_reg_BG.Add("48", "Pazardzhik"); + cc_reg_BG.Add("49", "Pernik"); + cc_reg_BG.Add("50", "Pleven"); + cc_reg_BG.Add("51", "Plovdiv"); + cc_reg_BG.Add("52", "Razgrad"); + cc_reg_BG.Add("53", "Ruse"); + cc_reg_BG.Add("54", "Shumen"); + cc_reg_BG.Add("55", "Silistra"); + cc_reg_BG.Add("56", "Sliven"); + cc_reg_BG.Add("57", "Smolyan"); + cc_reg_BG.Add("58", "Sofiya"); + cc_reg_BG.Add("59", "Stara Zagora"); + cc_reg_BG.Add("60", "Turgovishte"); + cc_reg_BG.Add("61", "Varna"); + cc_reg_BG.Add("62", "Veliko Turnovo"); + cc_reg_BG.Add("63", "Vidin"); + cc_reg_BG.Add("64", "Vratsa"); + cc_reg_BG.Add("65", "Yambol"); + GEOIP_REGION_NAME.Add("BG", cc_reg_BG ); + Hashtable cc_reg_BH = new Hashtable(); + cc_reg_BH.Add("01", "Al Hadd"); + cc_reg_BH.Add("02", "Al Manamah"); + cc_reg_BH.Add("05", "Jidd Hafs"); + cc_reg_BH.Add("06", "Sitrah"); + cc_reg_BH.Add("08", "Al Mintaqah al Gharbiyah"); + cc_reg_BH.Add("09", "Mintaqat Juzur Hawar"); + cc_reg_BH.Add("10", "Al Mintaqah ash Shamaliyah"); + cc_reg_BH.Add("11", "Al Mintaqah al Wusta"); + cc_reg_BH.Add("12", "Madinat"); + cc_reg_BH.Add("13", "Ar Rifa"); + cc_reg_BH.Add("14", "Madinat Hamad"); + cc_reg_BH.Add("15", "Al Muharraq"); + cc_reg_BH.Add("16", "Al Asimah"); + cc_reg_BH.Add("17", "Al Janubiyah"); + cc_reg_BH.Add("18", "Ash Shamaliyah"); + cc_reg_BH.Add("19", "Al Wusta"); + GEOIP_REGION_NAME.Add("BH", cc_reg_BH ); + Hashtable cc_reg_BI = new Hashtable(); + cc_reg_BI.Add("02", "Bujumbura"); + cc_reg_BI.Add("09", "Bubanza"); + cc_reg_BI.Add("10", "Bururi"); + cc_reg_BI.Add("11", "Cankuzo"); + cc_reg_BI.Add("12", "Cibitoke"); + cc_reg_BI.Add("13", "Gitega"); + cc_reg_BI.Add("14", "Karuzi"); + cc_reg_BI.Add("15", "Kayanza"); + cc_reg_BI.Add("16", "Kirundo"); + cc_reg_BI.Add("17", "Makamba"); + cc_reg_BI.Add("18", "Muyinga"); + cc_reg_BI.Add("19", "Ngozi"); + cc_reg_BI.Add("20", "Rutana"); + cc_reg_BI.Add("21", "Ruyigi"); + cc_reg_BI.Add("22", "Muramvya"); + cc_reg_BI.Add("23", "Mwaro"); + GEOIP_REGION_NAME.Add("BI", cc_reg_BI ); + Hashtable cc_reg_BJ = new Hashtable(); + cc_reg_BJ.Add("07", "Alibori"); + cc_reg_BJ.Add("08", "Atakora"); + cc_reg_BJ.Add("09", "Atlanyique"); + cc_reg_BJ.Add("10", "Borgou"); + cc_reg_BJ.Add("11", "Collines"); + cc_reg_BJ.Add("12", "Kouffo"); + cc_reg_BJ.Add("13", "Donga"); + cc_reg_BJ.Add("14", "Littoral"); + cc_reg_BJ.Add("15", "Mono"); + cc_reg_BJ.Add("16", "Oueme"); + cc_reg_BJ.Add("17", "Plateau"); + cc_reg_BJ.Add("18", "Zou"); + GEOIP_REGION_NAME.Add("BJ", cc_reg_BJ ); + Hashtable cc_reg_BM = new Hashtable(); + cc_reg_BM.Add("01", "Devonshire"); + cc_reg_BM.Add("02", "Hamilton"); + cc_reg_BM.Add("03", "Hamilton"); + cc_reg_BM.Add("04", "Paget"); + cc_reg_BM.Add("05", "Pembroke"); + cc_reg_BM.Add("06", "Saint George"); + cc_reg_BM.Add("07", "Saint George's"); + cc_reg_BM.Add("08", "Sandys"); + cc_reg_BM.Add("09", "Smiths"); + cc_reg_BM.Add("10", "Southampton"); + cc_reg_BM.Add("11", "Warwick"); + GEOIP_REGION_NAME.Add("BM", cc_reg_BM ); + Hashtable cc_reg_BN = new Hashtable(); + cc_reg_BN.Add("07", "Alibori"); + cc_reg_BN.Add("08", "Belait"); + cc_reg_BN.Add("09", "Brunei and Muara"); + cc_reg_BN.Add("10", "Temburong"); + cc_reg_BN.Add("11", "Collines"); + cc_reg_BN.Add("12", "Kouffo"); + cc_reg_BN.Add("13", "Donga"); + cc_reg_BN.Add("14", "Littoral"); + cc_reg_BN.Add("15", "Tutong"); + cc_reg_BN.Add("16", "Oueme"); + cc_reg_BN.Add("17", "Plateau"); + cc_reg_BN.Add("18", "Zou"); + GEOIP_REGION_NAME.Add("BN", cc_reg_BN ); + Hashtable cc_reg_BO = new Hashtable(); + cc_reg_BO.Add("01", "Chuquisaca"); + cc_reg_BO.Add("02", "Cochabamba"); + cc_reg_BO.Add("03", "El Beni"); + cc_reg_BO.Add("04", "La Paz"); + cc_reg_BO.Add("05", "Oruro"); + cc_reg_BO.Add("06", "Pando"); + cc_reg_BO.Add("07", "Potosi"); + cc_reg_BO.Add("08", "Santa Cruz"); + cc_reg_BO.Add("09", "Tarija"); + GEOIP_REGION_NAME.Add("BO", cc_reg_BO ); + Hashtable cc_reg_BR = new Hashtable(); + cc_reg_BR.Add("01", "Acre"); + cc_reg_BR.Add("02", "Alagoas"); + cc_reg_BR.Add("03", "Amapa"); + cc_reg_BR.Add("04", "Amazonas"); + cc_reg_BR.Add("05", "Bahia"); + cc_reg_BR.Add("06", "Ceara"); + cc_reg_BR.Add("07", "Distrito Federal"); + cc_reg_BR.Add("08", "Espirito Santo"); + cc_reg_BR.Add("11", "Mato Grosso do Sul"); + cc_reg_BR.Add("13", "Maranhao"); + cc_reg_BR.Add("14", "Mato Grosso"); + cc_reg_BR.Add("15", "Minas Gerais"); + cc_reg_BR.Add("16", "Para"); + cc_reg_BR.Add("17", "Paraiba"); + cc_reg_BR.Add("18", "Parana"); + cc_reg_BR.Add("20", "Piaui"); + cc_reg_BR.Add("21", "Rio de Janeiro"); + cc_reg_BR.Add("22", "Rio Grande do Norte"); + cc_reg_BR.Add("23", "Rio Grande do Sul"); + cc_reg_BR.Add("24", "Rondonia"); + cc_reg_BR.Add("25", "Roraima"); + cc_reg_BR.Add("26", "Santa Catarina"); + cc_reg_BR.Add("27", "Sao Paulo"); + cc_reg_BR.Add("28", "Sergipe"); + cc_reg_BR.Add("29", "Goias"); + cc_reg_BR.Add("30", "Pernambuco"); + cc_reg_BR.Add("31", "Tocantins"); + GEOIP_REGION_NAME.Add("BR", cc_reg_BR ); + Hashtable cc_reg_BS = new Hashtable(); + cc_reg_BS.Add("05", "Bimini"); + cc_reg_BS.Add("06", "Cat Island"); + cc_reg_BS.Add("10", "Exuma"); + cc_reg_BS.Add("13", "Inagua"); + cc_reg_BS.Add("15", "Long Island"); + cc_reg_BS.Add("16", "Mayaguana"); + cc_reg_BS.Add("18", "Ragged Island"); + cc_reg_BS.Add("22", "Harbour Island"); + cc_reg_BS.Add("23", "New Providence"); + cc_reg_BS.Add("24", "Acklins and Crooked Islands"); + cc_reg_BS.Add("25", "Freeport"); + cc_reg_BS.Add("26", "Fresh Creek"); + cc_reg_BS.Add("27", "Governor's Harbour"); + cc_reg_BS.Add("28", "Green Turtle Cay"); + cc_reg_BS.Add("29", "High Rock"); + cc_reg_BS.Add("30", "Kemps Bay"); + cc_reg_BS.Add("31", "Marsh Harbour"); + cc_reg_BS.Add("32", "Nichollstown and Berry Islands"); + cc_reg_BS.Add("33", "Rock Sound"); + cc_reg_BS.Add("34", "Sandy Point"); + cc_reg_BS.Add("35", "San Salvador and Rum Cay"); + GEOIP_REGION_NAME.Add("BS", cc_reg_BS ); + Hashtable cc_reg_BT = new Hashtable(); + cc_reg_BT.Add("05", "Bumthang"); + cc_reg_BT.Add("06", "Chhukha"); + cc_reg_BT.Add("07", "Chirang"); + cc_reg_BT.Add("08", "Daga"); + cc_reg_BT.Add("09", "Geylegphug"); + cc_reg_BT.Add("10", "Ha"); + cc_reg_BT.Add("11", "Lhuntshi"); + cc_reg_BT.Add("12", "Mongar"); + cc_reg_BT.Add("13", "Paro"); + cc_reg_BT.Add("14", "Pemagatsel"); + cc_reg_BT.Add("15", "Punakha"); + cc_reg_BT.Add("16", "Samchi"); + cc_reg_BT.Add("17", "Samdrup"); + cc_reg_BT.Add("18", "Shemgang"); + cc_reg_BT.Add("19", "Tashigang"); + cc_reg_BT.Add("20", "Thimphu"); + cc_reg_BT.Add("21", "Tongsa"); + cc_reg_BT.Add("22", "Wangdi Phodrang"); + GEOIP_REGION_NAME.Add("BT", cc_reg_BT ); + Hashtable cc_reg_BW = new Hashtable(); + cc_reg_BW.Add("01", "Central"); + cc_reg_BW.Add("03", "Ghanzi"); + cc_reg_BW.Add("04", "Kgalagadi"); + cc_reg_BW.Add("05", "Kgatleng"); + cc_reg_BW.Add("06", "Kweneng"); + cc_reg_BW.Add("08", "North-East"); + cc_reg_BW.Add("09", "South-East"); + cc_reg_BW.Add("10", "Southern"); + cc_reg_BW.Add("11", "North-West"); + GEOIP_REGION_NAME.Add("BW", cc_reg_BW ); + Hashtable cc_reg_BY = new Hashtable(); + cc_reg_BY.Add("01", "Brestskaya Voblasts'"); + cc_reg_BY.Add("02", "Homyel'skaya Voblasts'"); + cc_reg_BY.Add("03", "Hrodzyenskaya Voblasts'"); + cc_reg_BY.Add("04", "Minsk"); + cc_reg_BY.Add("05", "Minskaya Voblasts'"); + cc_reg_BY.Add("06", "Mahilyowskaya Voblasts'"); + cc_reg_BY.Add("07", "Vitsyebskaya Voblasts'"); + GEOIP_REGION_NAME.Add("BY", cc_reg_BY ); + Hashtable cc_reg_BZ = new Hashtable(); + cc_reg_BZ.Add("01", "Belize"); + cc_reg_BZ.Add("02", "Cayo"); + cc_reg_BZ.Add("03", "Corozal"); + cc_reg_BZ.Add("04", "Orange Walk"); + cc_reg_BZ.Add("05", "Stann Creek"); + cc_reg_BZ.Add("06", "Toledo"); + GEOIP_REGION_NAME.Add("BZ", cc_reg_BZ ); + Hashtable cc_reg_CA = new Hashtable(); + cc_reg_CA.Add("AB", "Alberta"); + cc_reg_CA.Add("BC", "British Columbia"); + cc_reg_CA.Add("MB", "Manitoba"); + cc_reg_CA.Add("NB", "New Brunswick"); + cc_reg_CA.Add("NL", "Newfoundland"); + cc_reg_CA.Add("NS", "Nova Scotia"); + cc_reg_CA.Add("NT", "Northwest Territories"); + cc_reg_CA.Add("NU", "Nunavut"); + cc_reg_CA.Add("ON", "Ontario"); + cc_reg_CA.Add("PE", "Prince Edward Island"); + cc_reg_CA.Add("QC", "Quebec"); + cc_reg_CA.Add("SK", "Saskatchewan"); + cc_reg_CA.Add("YT", "Yukon Territory"); + GEOIP_REGION_NAME.Add("CA", cc_reg_CA ); + Hashtable cc_reg_CD = new Hashtable(); + cc_reg_CD.Add("01", "Bandundu"); + cc_reg_CD.Add("02", "Equateur"); + cc_reg_CD.Add("04", "Kasai-Oriental"); + cc_reg_CD.Add("05", "Katanga"); + cc_reg_CD.Add("06", "Kinshasa"); + cc_reg_CD.Add("08", "Bas-Congo"); + cc_reg_CD.Add("09", "Orientale"); + cc_reg_CD.Add("10", "Maniema"); + cc_reg_CD.Add("11", "Nord-Kivu"); + cc_reg_CD.Add("12", "Sud-Kivu"); + GEOIP_REGION_NAME.Add("CD", cc_reg_CD ); + Hashtable cc_reg_CF = new Hashtable(); + cc_reg_CF.Add("01", "Bamingui-Bangoran"); + cc_reg_CF.Add("02", "Basse-Kotto"); + cc_reg_CF.Add("03", "Haute-Kotto"); + cc_reg_CF.Add("04", "Mambere-Kadei"); + cc_reg_CF.Add("05", "Haut-Mbomou"); + cc_reg_CF.Add("06", "Kemo"); + cc_reg_CF.Add("07", "Lobaye"); + cc_reg_CF.Add("08", "Mbomou"); + cc_reg_CF.Add("09", "Nana-Mambere"); + cc_reg_CF.Add("11", "Ouaka"); + cc_reg_CF.Add("12", "Ouham"); + cc_reg_CF.Add("13", "Ouham-Pende"); + cc_reg_CF.Add("14", "Cuvette-Ouest"); + cc_reg_CF.Add("15", "Nana-Grebizi"); + cc_reg_CF.Add("16", "Sangha-Mbaere"); + cc_reg_CF.Add("17", "Ombella-Mpoko"); + cc_reg_CF.Add("18", "Bangui"); + GEOIP_REGION_NAME.Add("CF", cc_reg_CF ); + Hashtable cc_reg_CG = new Hashtable(); + cc_reg_CG.Add("01", "Bouenza"); + cc_reg_CG.Add("04", "Kouilou"); + cc_reg_CG.Add("05", "Lekoumou"); + cc_reg_CG.Add("06", "Likouala"); + cc_reg_CG.Add("07", "Niari"); + cc_reg_CG.Add("08", "Plateaux"); + cc_reg_CG.Add("10", "Sangha"); + cc_reg_CG.Add("11", "Pool"); + cc_reg_CG.Add("12", "Brazzaville"); + cc_reg_CG.Add("13", "Cuvette"); + cc_reg_CG.Add("14", "Cuvette-Ouest"); + GEOIP_REGION_NAME.Add("CG", cc_reg_CG ); + Hashtable cc_reg_CH = new Hashtable(); + cc_reg_CH.Add("01", "Aargau"); + cc_reg_CH.Add("02", "Ausser-Rhoden"); + cc_reg_CH.Add("03", "Basel-Landschaft"); + cc_reg_CH.Add("04", "Basel-Stadt"); + cc_reg_CH.Add("05", "Bern"); + cc_reg_CH.Add("06", "Fribourg"); + cc_reg_CH.Add("07", "Geneve"); + cc_reg_CH.Add("08", "Glarus"); + cc_reg_CH.Add("09", "Graubunden"); + cc_reg_CH.Add("10", "Inner-Rhoden"); + cc_reg_CH.Add("11", "Luzern"); + cc_reg_CH.Add("12", "Neuchatel"); + cc_reg_CH.Add("13", "Nidwalden"); + cc_reg_CH.Add("14", "Obwalden"); + cc_reg_CH.Add("15", "Sankt Gallen"); + cc_reg_CH.Add("16", "Schaffhausen"); + cc_reg_CH.Add("17", "Schwyz"); + cc_reg_CH.Add("18", "Solothurn"); + cc_reg_CH.Add("19", "Thurgau"); + cc_reg_CH.Add("20", "Ticino"); + cc_reg_CH.Add("21", "Uri"); + cc_reg_CH.Add("22", "Valais"); + cc_reg_CH.Add("23", "Vaud"); + cc_reg_CH.Add("24", "Zug"); + cc_reg_CH.Add("25", "Zurich"); + cc_reg_CH.Add("26", "Jura"); + GEOIP_REGION_NAME.Add("CH", cc_reg_CH ); + Hashtable cc_reg_CI = new Hashtable(); + cc_reg_CI.Add("74", "Agneby"); + cc_reg_CI.Add("75", "Bafing"); + cc_reg_CI.Add("76", "Bas-Sassandra"); + cc_reg_CI.Add("77", "Denguele"); + cc_reg_CI.Add("78", "Dix-Huit Montagnes"); + cc_reg_CI.Add("79", "Fromager"); + cc_reg_CI.Add("80", "Haut-Sassandra"); + cc_reg_CI.Add("81", "Lacs"); + cc_reg_CI.Add("82", "Lagunes"); + cc_reg_CI.Add("83", "Marahoue"); + cc_reg_CI.Add("84", "Moyen-Cavally"); + cc_reg_CI.Add("85", "Moyen-Comoe"); + cc_reg_CI.Add("86", "N'zi-Comoe"); + cc_reg_CI.Add("87", "Savanes"); + cc_reg_CI.Add("88", "Sud-Bandama"); + cc_reg_CI.Add("89", "Sud-Comoe"); + cc_reg_CI.Add("90", "Vallee du Bandama"); + cc_reg_CI.Add("91", "Worodougou"); + cc_reg_CI.Add("92", "Zanzan"); + GEOIP_REGION_NAME.Add("CI", cc_reg_CI ); + Hashtable cc_reg_CL = new Hashtable(); + cc_reg_CL.Add("01", "Valparaiso"); + cc_reg_CL.Add("02", "Aisen del General Carlos Ibanez del Campo"); + cc_reg_CL.Add("03", "Antofagasta"); + cc_reg_CL.Add("04", "Araucania"); + cc_reg_CL.Add("05", "Atacama"); + cc_reg_CL.Add("06", "Bio-Bio"); + cc_reg_CL.Add("07", "Coquimbo"); + cc_reg_CL.Add("08", "Libertador General Bernardo O'Higgins"); + cc_reg_CL.Add("09", "Los Lagos"); + cc_reg_CL.Add("10", "Magallanes y de la Antartica Chilena"); + cc_reg_CL.Add("11", "Maule"); + cc_reg_CL.Add("12", "Region Metropolitana"); + cc_reg_CL.Add("13", "Tarapaca"); + cc_reg_CL.Add("14", "Los Lagos"); + cc_reg_CL.Add("15", "Tarapaca"); + cc_reg_CL.Add("16", "Arica y Parinacota"); + cc_reg_CL.Add("17", "Los Rios"); + GEOIP_REGION_NAME.Add("CL", cc_reg_CL ); + Hashtable cc_reg_CM = new Hashtable(); + cc_reg_CM.Add("04", "Est"); + cc_reg_CM.Add("05", "Littoral"); + cc_reg_CM.Add("07", "Nord-Ouest"); + cc_reg_CM.Add("08", "Ouest"); + cc_reg_CM.Add("09", "Sud-Ouest"); + cc_reg_CM.Add("10", "Adamaoua"); + cc_reg_CM.Add("11", "Centre"); + cc_reg_CM.Add("12", "Extreme-Nord"); + cc_reg_CM.Add("13", "Nord"); + cc_reg_CM.Add("14", "Sud"); + GEOIP_REGION_NAME.Add("CM", cc_reg_CM ); + Hashtable cc_reg_CN = new Hashtable(); + cc_reg_CN.Add("01", "Anhui"); + cc_reg_CN.Add("02", "Zhejiang"); + cc_reg_CN.Add("03", "Jiangxi"); + cc_reg_CN.Add("04", "Jiangsu"); + cc_reg_CN.Add("05", "Jilin"); + cc_reg_CN.Add("06", "Qinghai"); + cc_reg_CN.Add("07", "Fujian"); + cc_reg_CN.Add("08", "Heilongjiang"); + cc_reg_CN.Add("09", "Henan"); + cc_reg_CN.Add("10", "Hebei"); + cc_reg_CN.Add("11", "Hunan"); + cc_reg_CN.Add("12", "Hubei"); + cc_reg_CN.Add("13", "Xinjiang"); + cc_reg_CN.Add("14", "Xizang"); + cc_reg_CN.Add("15", "Gansu"); + cc_reg_CN.Add("16", "Guangxi"); + cc_reg_CN.Add("18", "Guizhou"); + cc_reg_CN.Add("19", "Liaoning"); + cc_reg_CN.Add("20", "Nei Mongol"); + cc_reg_CN.Add("21", "Ningxia"); + cc_reg_CN.Add("22", "Beijing"); + cc_reg_CN.Add("23", "Shanghai"); + cc_reg_CN.Add("24", "Shanxi"); + cc_reg_CN.Add("25", "Shandong"); + cc_reg_CN.Add("26", "Shaanxi"); + cc_reg_CN.Add("28", "Tianjin"); + cc_reg_CN.Add("29", "Yunnan"); + cc_reg_CN.Add("30", "Guangdong"); + cc_reg_CN.Add("31", "Hainan"); + cc_reg_CN.Add("32", "Sichuan"); + cc_reg_CN.Add("33", "Chongqing"); + GEOIP_REGION_NAME.Add("CN", cc_reg_CN ); + Hashtable cc_reg_CO = new Hashtable(); + cc_reg_CO.Add("01", "Amazonas"); + cc_reg_CO.Add("02", "Antioquia"); + cc_reg_CO.Add("03", "Arauca"); + cc_reg_CO.Add("04", "Atlantico"); + cc_reg_CO.Add("08", "Caqueta"); + cc_reg_CO.Add("09", "Cauca"); + cc_reg_CO.Add("10", "Cesar"); + cc_reg_CO.Add("11", "Choco"); + cc_reg_CO.Add("12", "Cordoba"); + cc_reg_CO.Add("14", "Guaviare"); + cc_reg_CO.Add("15", "Guainia"); + cc_reg_CO.Add("16", "Huila"); + cc_reg_CO.Add("17", "La Guajira"); + cc_reg_CO.Add("19", "Meta"); + cc_reg_CO.Add("20", "Narino"); + cc_reg_CO.Add("21", "Norte de Santander"); + cc_reg_CO.Add("22", "Putumayo"); + cc_reg_CO.Add("23", "Quindio"); + cc_reg_CO.Add("24", "Risaralda"); + cc_reg_CO.Add("25", "San Andres y Providencia"); + cc_reg_CO.Add("26", "Santander"); + cc_reg_CO.Add("27", "Sucre"); + cc_reg_CO.Add("28", "Tolima"); + cc_reg_CO.Add("29", "Valle del Cauca"); + cc_reg_CO.Add("30", "Vaupes"); + cc_reg_CO.Add("31", "Vichada"); + cc_reg_CO.Add("32", "Casanare"); + cc_reg_CO.Add("33", "Cundinamarca"); + cc_reg_CO.Add("34", "Distrito Especial"); + cc_reg_CO.Add("35", "Bolivar"); + cc_reg_CO.Add("36", "Boyaca"); + cc_reg_CO.Add("37", "Caldas"); + cc_reg_CO.Add("38", "Magdalena"); + GEOIP_REGION_NAME.Add("CO", cc_reg_CO ); + Hashtable cc_reg_CR = new Hashtable(); + cc_reg_CR.Add("01", "Alajuela"); + cc_reg_CR.Add("02", "Cartago"); + cc_reg_CR.Add("03", "Guanacaste"); + cc_reg_CR.Add("04", "Heredia"); + cc_reg_CR.Add("06", "Limon"); + cc_reg_CR.Add("07", "Puntarenas"); + cc_reg_CR.Add("08", "San Jose"); + GEOIP_REGION_NAME.Add("CR", cc_reg_CR ); + Hashtable cc_reg_CU = new Hashtable(); + cc_reg_CU.Add("01", "Pinar del Rio"); + cc_reg_CU.Add("02", "Ciudad de la Habana"); + cc_reg_CU.Add("03", "Matanzas"); + cc_reg_CU.Add("04", "Isla de la Juventud"); + cc_reg_CU.Add("05", "Camaguey"); + cc_reg_CU.Add("07", "Ciego de Avila"); + cc_reg_CU.Add("08", "Cienfuegos"); + cc_reg_CU.Add("09", "Granma"); + cc_reg_CU.Add("10", "Guantanamo"); + cc_reg_CU.Add("11", "La Habana"); + cc_reg_CU.Add("12", "Holguin"); + cc_reg_CU.Add("13", "Las Tunas"); + cc_reg_CU.Add("14", "Sancti Spiritus"); + cc_reg_CU.Add("15", "Santiago de Cuba"); + cc_reg_CU.Add("16", "Villa Clara"); + GEOIP_REGION_NAME.Add("CU", cc_reg_CU ); + Hashtable cc_reg_CV = new Hashtable(); + cc_reg_CV.Add("01", "Boa Vista"); + cc_reg_CV.Add("02", "Brava"); + cc_reg_CV.Add("04", "Maio"); + cc_reg_CV.Add("05", "Paul"); + cc_reg_CV.Add("07", "Ribeira Grande"); + cc_reg_CV.Add("08", "Sal"); + cc_reg_CV.Add("10", "Sao Nicolau"); + cc_reg_CV.Add("11", "Sao Vicente"); + cc_reg_CV.Add("13", "Mosteiros"); + cc_reg_CV.Add("14", "Praia"); + cc_reg_CV.Add("15", "Santa Catarina"); + cc_reg_CV.Add("16", "Santa Cruz"); + cc_reg_CV.Add("17", "Sao Domingos"); + cc_reg_CV.Add("18", "Sao Filipe"); + cc_reg_CV.Add("19", "Sao Miguel"); + cc_reg_CV.Add("20", "Tarrafal"); + GEOIP_REGION_NAME.Add("CV", cc_reg_CV ); + Hashtable cc_reg_CY = new Hashtable(); + cc_reg_CY.Add("01", "Famagusta"); + cc_reg_CY.Add("02", "Kyrenia"); + cc_reg_CY.Add("03", "Larnaca"); + cc_reg_CY.Add("04", "Nicosia"); + cc_reg_CY.Add("05", "Limassol"); + cc_reg_CY.Add("06", "Paphos"); + GEOIP_REGION_NAME.Add("CY", cc_reg_CY ); + Hashtable cc_reg_CZ = new Hashtable(); + cc_reg_CZ.Add("52", "Hlavni mesto Praha"); + cc_reg_CZ.Add("78", "Jihomoravsky kraj"); + cc_reg_CZ.Add("79", "Jihocesky kraj"); + cc_reg_CZ.Add("80", "Vysocina"); + cc_reg_CZ.Add("81", "Karlovarsky kraj"); + cc_reg_CZ.Add("82", "Kralovehradecky kraj"); + cc_reg_CZ.Add("83", "Liberecky kraj"); + cc_reg_CZ.Add("84", "Olomoucky kraj"); + cc_reg_CZ.Add("85", "Moravskoslezsky kraj"); + cc_reg_CZ.Add("86", "Pardubicky kraj"); + cc_reg_CZ.Add("87", "Plzensky kraj"); + cc_reg_CZ.Add("88", "Stredocesky kraj"); + cc_reg_CZ.Add("89", "Ustecky kraj"); + cc_reg_CZ.Add("90", "Zlinsky kraj"); + GEOIP_REGION_NAME.Add("CZ", cc_reg_CZ ); + Hashtable cc_reg_DE = new Hashtable(); + cc_reg_DE.Add("01", "Baden-Wurttemberg"); + cc_reg_DE.Add("02", "Bayern"); + cc_reg_DE.Add("03", "Bremen"); + cc_reg_DE.Add("04", "Hamburg"); + cc_reg_DE.Add("05", "Hessen"); + cc_reg_DE.Add("06", "Niedersachsen"); + cc_reg_DE.Add("07", "Nordrhein-Westfalen"); + cc_reg_DE.Add("08", "Rheinland-Pfalz"); + cc_reg_DE.Add("09", "Saarland"); + cc_reg_DE.Add("10", "Schleswig-Holstein"); + cc_reg_DE.Add("11", "Brandenburg"); + cc_reg_DE.Add("12", "Mecklenburg-Vorpommern"); + cc_reg_DE.Add("13", "Sachsen"); + cc_reg_DE.Add("14", "Sachsen-Anhalt"); + cc_reg_DE.Add("15", "Thuringen"); + cc_reg_DE.Add("16", "Berlin"); + GEOIP_REGION_NAME.Add("DE", cc_reg_DE ); + Hashtable cc_reg_DJ = new Hashtable(); + cc_reg_DJ.Add("01", "Ali Sabieh"); + cc_reg_DJ.Add("04", "Obock"); + cc_reg_DJ.Add("05", "Tadjoura"); + cc_reg_DJ.Add("06", "Dikhil"); + cc_reg_DJ.Add("07", "Djibouti"); + cc_reg_DJ.Add("08", "Arta"); + GEOIP_REGION_NAME.Add("DJ", cc_reg_DJ ); + Hashtable cc_reg_DK = new Hashtable(); + cc_reg_DK.Add("17", "Hovedstaden"); + cc_reg_DK.Add("18", "Midtjylland"); + cc_reg_DK.Add("19", "Nordjylland"); + cc_reg_DK.Add("20", "Sjelland"); + cc_reg_DK.Add("21", "Syddanmark"); + GEOIP_REGION_NAME.Add("DK", cc_reg_DK ); + Hashtable cc_reg_DM = new Hashtable(); + cc_reg_DM.Add("02", "Saint Andrew"); + cc_reg_DM.Add("03", "Saint David"); + cc_reg_DM.Add("04", "Saint George"); + cc_reg_DM.Add("05", "Saint John"); + cc_reg_DM.Add("06", "Saint Joseph"); + cc_reg_DM.Add("07", "Saint Luke"); + cc_reg_DM.Add("08", "Saint Mark"); + cc_reg_DM.Add("09", "Saint Patrick"); + cc_reg_DM.Add("10", "Saint Paul"); + cc_reg_DM.Add("11", "Saint Peter"); + GEOIP_REGION_NAME.Add("DM", cc_reg_DM ); + Hashtable cc_reg_DO = new Hashtable(); + cc_reg_DO.Add("01", "Azua"); + cc_reg_DO.Add("02", "Baoruco"); + cc_reg_DO.Add("03", "Barahona"); + cc_reg_DO.Add("04", "Dajabon"); + cc_reg_DO.Add("05", "Distrito Nacional"); + cc_reg_DO.Add("06", "Duarte"); + cc_reg_DO.Add("08", "Espaillat"); + cc_reg_DO.Add("09", "Independencia"); + cc_reg_DO.Add("10", "La Altagracia"); + cc_reg_DO.Add("11", "Elias Pina"); + cc_reg_DO.Add("12", "La Romana"); + cc_reg_DO.Add("14", "Maria Trinidad Sanchez"); + cc_reg_DO.Add("15", "Monte Cristi"); + cc_reg_DO.Add("16", "Pedernales"); + cc_reg_DO.Add("17", "Peravia"); + cc_reg_DO.Add("18", "Puerto Plata"); + cc_reg_DO.Add("19", "Salcedo"); + cc_reg_DO.Add("20", "Samana"); + cc_reg_DO.Add("21", "Sanchez Ramirez"); + cc_reg_DO.Add("23", "San Juan"); + cc_reg_DO.Add("24", "San Pedro De Macoris"); + cc_reg_DO.Add("25", "Santiago"); + cc_reg_DO.Add("26", "Santiago Rodriguez"); + cc_reg_DO.Add("27", "Valverde"); + cc_reg_DO.Add("28", "El Seibo"); + cc_reg_DO.Add("29", "Hato Mayor"); + cc_reg_DO.Add("30", "La Vega"); + cc_reg_DO.Add("31", "Monsenor Nouel"); + cc_reg_DO.Add("32", "Monte Plata"); + cc_reg_DO.Add("33", "San Cristobal"); + cc_reg_DO.Add("34", "Distrito Nacional"); + cc_reg_DO.Add("35", "Peravia"); + cc_reg_DO.Add("36", "San Jose de Ocoa"); + cc_reg_DO.Add("37", "Santo Domingo"); + GEOIP_REGION_NAME.Add("DO", cc_reg_DO ); + Hashtable cc_reg_DZ = new Hashtable(); + cc_reg_DZ.Add("01", "Alger"); + cc_reg_DZ.Add("03", "Batna"); + cc_reg_DZ.Add("04", "Constantine"); + cc_reg_DZ.Add("06", "Medea"); + cc_reg_DZ.Add("07", "Mostaganem"); + cc_reg_DZ.Add("09", "Oran"); + cc_reg_DZ.Add("10", "Saida"); + cc_reg_DZ.Add("12", "Setif"); + cc_reg_DZ.Add("13", "Tiaret"); + cc_reg_DZ.Add("14", "Tizi Ouzou"); + cc_reg_DZ.Add("15", "Tlemcen"); + cc_reg_DZ.Add("18", "Bejaia"); + cc_reg_DZ.Add("19", "Biskra"); + cc_reg_DZ.Add("20", "Blida"); + cc_reg_DZ.Add("21", "Bouira"); + cc_reg_DZ.Add("22", "Djelfa"); + cc_reg_DZ.Add("23", "Guelma"); + cc_reg_DZ.Add("24", "Jijel"); + cc_reg_DZ.Add("25", "Laghouat"); + cc_reg_DZ.Add("26", "Mascara"); + cc_reg_DZ.Add("27", "M'sila"); + cc_reg_DZ.Add("29", "Oum el Bouaghi"); + cc_reg_DZ.Add("30", "Sidi Bel Abbes"); + cc_reg_DZ.Add("31", "Skikda"); + cc_reg_DZ.Add("33", "Tebessa"); + cc_reg_DZ.Add("34", "Adrar"); + cc_reg_DZ.Add("35", "Ain Defla"); + cc_reg_DZ.Add("36", "Ain Temouchent"); + cc_reg_DZ.Add("37", "Annaba"); + cc_reg_DZ.Add("38", "Bechar"); + cc_reg_DZ.Add("39", "Bordj Bou Arreridj"); + cc_reg_DZ.Add("40", "Boumerdes"); + cc_reg_DZ.Add("41", "Chlef"); + cc_reg_DZ.Add("42", "El Bayadh"); + cc_reg_DZ.Add("43", "El Oued"); + cc_reg_DZ.Add("44", "El Tarf"); + cc_reg_DZ.Add("45", "Ghardaia"); + cc_reg_DZ.Add("46", "Illizi"); + cc_reg_DZ.Add("47", "Khenchela"); + cc_reg_DZ.Add("48", "Mila"); + cc_reg_DZ.Add("49", "Naama"); + cc_reg_DZ.Add("50", "Ouargla"); + cc_reg_DZ.Add("51", "Relizane"); + cc_reg_DZ.Add("52", "Souk Ahras"); + cc_reg_DZ.Add("53", "Tamanghasset"); + cc_reg_DZ.Add("54", "Tindouf"); + cc_reg_DZ.Add("55", "Tipaza"); + cc_reg_DZ.Add("56", "Tissemsilt"); + GEOIP_REGION_NAME.Add("DZ", cc_reg_DZ ); + Hashtable cc_reg_EC = new Hashtable(); + cc_reg_EC.Add("01", "Galapagos"); + cc_reg_EC.Add("02", "Azuay"); + cc_reg_EC.Add("03", "Bolivar"); + cc_reg_EC.Add("04", "Canar"); + cc_reg_EC.Add("05", "Carchi"); + cc_reg_EC.Add("06", "Chimborazo"); + cc_reg_EC.Add("07", "Cotopaxi"); + cc_reg_EC.Add("08", "El Oro"); + cc_reg_EC.Add("09", "Esmeraldas"); + cc_reg_EC.Add("10", "Guayas"); + cc_reg_EC.Add("11", "Imbabura"); + cc_reg_EC.Add("12", "Loja"); + cc_reg_EC.Add("13", "Los Rios"); + cc_reg_EC.Add("14", "Manabi"); + cc_reg_EC.Add("15", "Morona-Santiago"); + cc_reg_EC.Add("17", "Pastaza"); + cc_reg_EC.Add("18", "Pichincha"); + cc_reg_EC.Add("19", "Tungurahua"); + cc_reg_EC.Add("20", "Zamora-Chinchipe"); + cc_reg_EC.Add("22", "Sucumbios"); + cc_reg_EC.Add("23", "Napo"); + cc_reg_EC.Add("24", "Orellana"); + GEOIP_REGION_NAME.Add("EC", cc_reg_EC ); + Hashtable cc_reg_EE = new Hashtable(); + cc_reg_EE.Add("01", "Harjumaa"); + cc_reg_EE.Add("02", "Hiiumaa"); + cc_reg_EE.Add("03", "Ida-Virumaa"); + cc_reg_EE.Add("04", "Jarvamaa"); + cc_reg_EE.Add("05", "Jogevamaa"); + cc_reg_EE.Add("06", "Kohtla-Jarve"); + cc_reg_EE.Add("07", "Laanemaa"); + cc_reg_EE.Add("08", "Laane-Virumaa"); + cc_reg_EE.Add("09", "Narva"); + cc_reg_EE.Add("10", "Parnu"); + cc_reg_EE.Add("11", "Parnumaa"); + cc_reg_EE.Add("12", "Polvamaa"); + cc_reg_EE.Add("13", "Raplamaa"); + cc_reg_EE.Add("14", "Saaremaa"); + cc_reg_EE.Add("15", "Sillamae"); + cc_reg_EE.Add("16", "Tallinn"); + cc_reg_EE.Add("17", "Tartu"); + cc_reg_EE.Add("18", "Tartumaa"); + cc_reg_EE.Add("19", "Valgamaa"); + cc_reg_EE.Add("20", "Viljandimaa"); + cc_reg_EE.Add("21", "Vorumaa"); + GEOIP_REGION_NAME.Add("EE", cc_reg_EE ); + Hashtable cc_reg_EG = new Hashtable(); + cc_reg_EG.Add("01", "Ad Daqahliyah"); + cc_reg_EG.Add("02", "Al Bahr al Ahmar"); + cc_reg_EG.Add("03", "Al Buhayrah"); + cc_reg_EG.Add("04", "Al Fayyum"); + cc_reg_EG.Add("05", "Al Gharbiyah"); + cc_reg_EG.Add("06", "Al Iskandariyah"); + cc_reg_EG.Add("07", "Al Isma'iliyah"); + cc_reg_EG.Add("08", "Al Jizah"); + cc_reg_EG.Add("09", "Al Minufiyah"); + cc_reg_EG.Add("10", "Al Minya"); + cc_reg_EG.Add("11", "Al Qahirah"); + cc_reg_EG.Add("12", "Al Qalyubiyah"); + cc_reg_EG.Add("13", "Al Wadi al Jadid"); + cc_reg_EG.Add("14", "Ash Sharqiyah"); + cc_reg_EG.Add("15", "As Suways"); + cc_reg_EG.Add("16", "Aswan"); + cc_reg_EG.Add("17", "Asyut"); + cc_reg_EG.Add("18", "Bani Suwayf"); + cc_reg_EG.Add("19", "Bur Sa'id"); + cc_reg_EG.Add("20", "Dumyat"); + cc_reg_EG.Add("21", "Kafr ash Shaykh"); + cc_reg_EG.Add("22", "Matruh"); + cc_reg_EG.Add("23", "Qina"); + cc_reg_EG.Add("24", "Suhaj"); + cc_reg_EG.Add("26", "Janub Sina'"); + cc_reg_EG.Add("27", "Shamal Sina'"); + GEOIP_REGION_NAME.Add("EG", cc_reg_EG ); + Hashtable cc_reg_ER = new Hashtable(); + cc_reg_ER.Add("01", "Anseba"); + cc_reg_ER.Add("02", "Debub"); + cc_reg_ER.Add("03", "Debubawi K'eyih Bahri"); + cc_reg_ER.Add("04", "Gash Barka"); + cc_reg_ER.Add("05", "Ma'akel"); + cc_reg_ER.Add("06", "Semenawi K'eyih Bahri"); + GEOIP_REGION_NAME.Add("ER", cc_reg_ER ); + Hashtable cc_reg_ES = new Hashtable(); + cc_reg_ES.Add("07", "Islas Baleares"); + cc_reg_ES.Add("27", "La Rioja"); + cc_reg_ES.Add("29", "Madrid"); + cc_reg_ES.Add("31", "Murcia"); + cc_reg_ES.Add("32", "Navarra"); + cc_reg_ES.Add("34", "Asturias"); + cc_reg_ES.Add("39", "Cantabria"); + cc_reg_ES.Add("51", "Andalucia"); + cc_reg_ES.Add("52", "Aragon"); + cc_reg_ES.Add("53", "Canarias"); + cc_reg_ES.Add("54", "Castilla-La Mancha"); + cc_reg_ES.Add("55", "Castilla y Leon"); + cc_reg_ES.Add("56", "Catalonia"); + cc_reg_ES.Add("57", "Extremadura"); + cc_reg_ES.Add("58", "Galicia"); + cc_reg_ES.Add("59", "Pais Vasco"); + cc_reg_ES.Add("60", "Comunidad Valenciana"); + GEOIP_REGION_NAME.Add("ES", cc_reg_ES ); + Hashtable cc_reg_ET = new Hashtable(); + cc_reg_ET.Add("44", "Adis Abeba"); + cc_reg_ET.Add("45", "Afar"); + cc_reg_ET.Add("46", "Amara"); + cc_reg_ET.Add("47", "Binshangul Gumuz"); + cc_reg_ET.Add("48", "Dire Dawa"); + cc_reg_ET.Add("49", "Gambela Hizboch"); + cc_reg_ET.Add("50", "Hareri Hizb"); + cc_reg_ET.Add("51", "Oromiya"); + cc_reg_ET.Add("52", "Sumale"); + cc_reg_ET.Add("53", "Tigray"); + cc_reg_ET.Add("54", "YeDebub Biheroch Bihereseboch na Hizboch"); + GEOIP_REGION_NAME.Add("ET", cc_reg_ET ); + Hashtable cc_reg_FI = new Hashtable(); + cc_reg_FI.Add("01", "Aland"); + cc_reg_FI.Add("06", "Lapland"); + cc_reg_FI.Add("08", "Oulu"); + cc_reg_FI.Add("13", "Southern Finland"); + cc_reg_FI.Add("14", "Eastern Finland"); + cc_reg_FI.Add("15", "Western Finland"); + GEOIP_REGION_NAME.Add("FI", cc_reg_FI ); + Hashtable cc_reg_FJ = new Hashtable(); + cc_reg_FJ.Add("01", "Central"); + cc_reg_FJ.Add("02", "Eastern"); + cc_reg_FJ.Add("03", "Northern"); + cc_reg_FJ.Add("04", "Rotuma"); + cc_reg_FJ.Add("05", "Western"); + GEOIP_REGION_NAME.Add("FJ", cc_reg_FJ ); + Hashtable cc_reg_FM = new Hashtable(); + cc_reg_FM.Add("01", "Kosrae"); + cc_reg_FM.Add("02", "Pohnpei"); + cc_reg_FM.Add("03", "Chuuk"); + cc_reg_FM.Add("04", "Yap"); + GEOIP_REGION_NAME.Add("FM", cc_reg_FM ); + Hashtable cc_reg_FR = new Hashtable(); + cc_reg_FR.Add("97", "Aquitaine"); + cc_reg_FR.Add("98", "Auvergne"); + cc_reg_FR.Add("99", "Basse-Normandie"); + cc_reg_FR.Add("A1", "Bourgogne"); + cc_reg_FR.Add("A2", "Bretagne"); + cc_reg_FR.Add("A3", "Centre"); + cc_reg_FR.Add("A4", "Champagne-Ardenne"); + cc_reg_FR.Add("A5", "Corse"); + cc_reg_FR.Add("A6", "Franche-Comte"); + cc_reg_FR.Add("A7", "Haute-Normandie"); + cc_reg_FR.Add("A8", "Ile-de-France"); + cc_reg_FR.Add("A9", "Languedoc-Roussillon"); + cc_reg_FR.Add("B1", "Limousin"); + cc_reg_FR.Add("B2", "Lorraine"); + cc_reg_FR.Add("B3", "Midi-Pyrenees"); + cc_reg_FR.Add("B4", "Nord-Pas-de-Calais"); + cc_reg_FR.Add("B5", "Pays de la Loire"); + cc_reg_FR.Add("B6", "Picardie"); + cc_reg_FR.Add("B7", "Poitou-Charentes"); + cc_reg_FR.Add("B8", "Provence-Alpes-Cote d'Azur"); + cc_reg_FR.Add("B9", "Rhone-Alpes"); + cc_reg_FR.Add("C1", "Alsace"); + GEOIP_REGION_NAME.Add("FR", cc_reg_FR ); + Hashtable cc_reg_GA = new Hashtable(); + cc_reg_GA.Add("01", "Estuaire"); + cc_reg_GA.Add("02", "Haut-Ogooue"); + cc_reg_GA.Add("03", "Moyen-Ogooue"); + cc_reg_GA.Add("04", "Ngounie"); + cc_reg_GA.Add("05", "Nyanga"); + cc_reg_GA.Add("06", "Ogooue-Ivindo"); + cc_reg_GA.Add("07", "Ogooue-Lolo"); + cc_reg_GA.Add("08", "Ogooue-Maritime"); + cc_reg_GA.Add("09", "Woleu-Ntem"); + GEOIP_REGION_NAME.Add("GA", cc_reg_GA ); + Hashtable cc_reg_GB = new Hashtable(); + cc_reg_GB.Add("A1", "Barking and Dagenham"); + cc_reg_GB.Add("A2", "Barnet"); + cc_reg_GB.Add("A3", "Barnsley"); + cc_reg_GB.Add("A4", "Bath and North East Somerset"); + cc_reg_GB.Add("A5", "Bedfordshire"); + cc_reg_GB.Add("A6", "Bexley"); + cc_reg_GB.Add("A7", "Birmingham"); + cc_reg_GB.Add("A8", "Blackburn with Darwen"); + cc_reg_GB.Add("A9", "Blackpool"); + cc_reg_GB.Add("B1", "Bolton"); + cc_reg_GB.Add("B2", "Bournemouth"); + cc_reg_GB.Add("B3", "Bracknell Forest"); + cc_reg_GB.Add("B4", "Bradford"); + cc_reg_GB.Add("B5", "Brent"); + cc_reg_GB.Add("B6", "Brighton and Hove"); + cc_reg_GB.Add("B7", "Bristol, City of"); + cc_reg_GB.Add("B8", "Bromley"); + cc_reg_GB.Add("B9", "Buckinghamshire"); + cc_reg_GB.Add("C1", "Bury"); + cc_reg_GB.Add("C2", "Calderdale"); + cc_reg_GB.Add("C3", "Cambridgeshire"); + cc_reg_GB.Add("C4", "Camden"); + cc_reg_GB.Add("C5", "Cheshire"); + cc_reg_GB.Add("C6", "Cornwall"); + cc_reg_GB.Add("C7", "Coventry"); + cc_reg_GB.Add("C8", "Croydon"); + cc_reg_GB.Add("C9", "Cumbria"); + cc_reg_GB.Add("D1", "Darlington"); + cc_reg_GB.Add("D2", "Derby"); + cc_reg_GB.Add("D3", "Derbyshire"); + cc_reg_GB.Add("D4", "Devon"); + cc_reg_GB.Add("D5", "Doncaster"); + cc_reg_GB.Add("D6", "Dorset"); + cc_reg_GB.Add("D7", "Dudley"); + cc_reg_GB.Add("D8", "Durham"); + cc_reg_GB.Add("D9", "Ealing"); + cc_reg_GB.Add("E1", "East Riding of Yorkshire"); + cc_reg_GB.Add("E2", "East Sussex"); + cc_reg_GB.Add("E3", "Enfield"); + cc_reg_GB.Add("E4", "Essex"); + cc_reg_GB.Add("E5", "Gateshead"); + cc_reg_GB.Add("E6", "Gloucestershire"); + cc_reg_GB.Add("E7", "Greenwich"); + cc_reg_GB.Add("E8", "Hackney"); + cc_reg_GB.Add("E9", "Halton"); + cc_reg_GB.Add("F1", "Hammersmith and Fulham"); + cc_reg_GB.Add("F2", "Hampshire"); + cc_reg_GB.Add("F3", "Haringey"); + cc_reg_GB.Add("F4", "Harrow"); + cc_reg_GB.Add("F5", "Hartlepool"); + cc_reg_GB.Add("F6", "Havering"); + cc_reg_GB.Add("F7", "Herefordshire"); + cc_reg_GB.Add("F8", "Hertford"); + cc_reg_GB.Add("F9", "Hillingdon"); + cc_reg_GB.Add("G1", "Hounslow"); + cc_reg_GB.Add("G2", "Isle of Wight"); + cc_reg_GB.Add("G3", "Islington"); + cc_reg_GB.Add("G4", "Kensington and Chelsea"); + cc_reg_GB.Add("G5", "Kent"); + cc_reg_GB.Add("G6", "Kingston upon Hull, City of"); + cc_reg_GB.Add("G7", "Kingston upon Thames"); + cc_reg_GB.Add("G8", "Kirklees"); + cc_reg_GB.Add("G9", "Knowsley"); + cc_reg_GB.Add("H1", "Lambeth"); + cc_reg_GB.Add("H2", "Lancashire"); + cc_reg_GB.Add("H3", "Leeds"); + cc_reg_GB.Add("H4", "Leicester"); + cc_reg_GB.Add("H5", "Leicestershire"); + cc_reg_GB.Add("H6", "Lewisham"); + cc_reg_GB.Add("H7", "Lincolnshire"); + cc_reg_GB.Add("H8", "Liverpool"); + cc_reg_GB.Add("H9", "London, City of"); + cc_reg_GB.Add("I1", "Luton"); + cc_reg_GB.Add("I2", "Manchester"); + cc_reg_GB.Add("I3", "Medway"); + cc_reg_GB.Add("I4", "Merton"); + cc_reg_GB.Add("I5", "Middlesbrough"); + cc_reg_GB.Add("I6", "Milton Keynes"); + cc_reg_GB.Add("I7", "Newcastle upon Tyne"); + cc_reg_GB.Add("I8", "Newham"); + cc_reg_GB.Add("I9", "Norfolk"); + cc_reg_GB.Add("J1", "Northamptonshire"); + cc_reg_GB.Add("J2", "North East Lincolnshire"); + cc_reg_GB.Add("J3", "North Lincolnshire"); + cc_reg_GB.Add("J4", "North Somerset"); + cc_reg_GB.Add("J5", "North Tyneside"); + cc_reg_GB.Add("J6", "Northumberland"); + cc_reg_GB.Add("J7", "North Yorkshire"); + cc_reg_GB.Add("J8", "Nottingham"); + cc_reg_GB.Add("J9", "Nottinghamshire"); + cc_reg_GB.Add("K1", "Oldham"); + cc_reg_GB.Add("K2", "Oxfordshire"); + cc_reg_GB.Add("K3", "Peterborough"); + cc_reg_GB.Add("K4", "Plymouth"); + cc_reg_GB.Add("K5", "Poole"); + cc_reg_GB.Add("K6", "Portsmouth"); + cc_reg_GB.Add("K7", "Reading"); + cc_reg_GB.Add("K8", "Redbridge"); + cc_reg_GB.Add("K9", "Redcar and Cleveland"); + cc_reg_GB.Add("L1", "Richmond upon Thames"); + cc_reg_GB.Add("L2", "Rochdale"); + cc_reg_GB.Add("L3", "Rotherham"); + cc_reg_GB.Add("L4", "Rutland"); + cc_reg_GB.Add("L5", "Salford"); + cc_reg_GB.Add("L6", "Shropshire"); + cc_reg_GB.Add("L7", "Sandwell"); + cc_reg_GB.Add("L8", "Sefton"); + cc_reg_GB.Add("L9", "Sheffield"); + cc_reg_GB.Add("M1", "Slough"); + cc_reg_GB.Add("M2", "Solihull"); + cc_reg_GB.Add("M3", "Somerset"); + cc_reg_GB.Add("M4", "Southampton"); + cc_reg_GB.Add("M5", "Southend-on-Sea"); + cc_reg_GB.Add("M6", "South Gloucestershire"); + cc_reg_GB.Add("M7", "South Tyneside"); + cc_reg_GB.Add("M8", "Southwark"); + cc_reg_GB.Add("M9", "Staffordshire"); + cc_reg_GB.Add("N1", "St. Helens"); + cc_reg_GB.Add("N2", "Stockport"); + cc_reg_GB.Add("N3", "Stockton-on-Tees"); + cc_reg_GB.Add("N4", "Stoke-on-Trent"); + cc_reg_GB.Add("N5", "Suffolk"); + cc_reg_GB.Add("N6", "Sunderland"); + cc_reg_GB.Add("N7", "Surrey"); + cc_reg_GB.Add("N8", "Sutton"); + cc_reg_GB.Add("N9", "Swindon"); + cc_reg_GB.Add("O1", "Tameside"); + cc_reg_GB.Add("O2", "Telford and Wrekin"); + cc_reg_GB.Add("O3", "Thurrock"); + cc_reg_GB.Add("O4", "Torbay"); + cc_reg_GB.Add("O5", "Tower Hamlets"); + cc_reg_GB.Add("O6", "Trafford"); + cc_reg_GB.Add("O7", "Wakefield"); + cc_reg_GB.Add("O8", "Walsall"); + cc_reg_GB.Add("O9", "Waltham Forest"); + cc_reg_GB.Add("P1", "Wandsworth"); + cc_reg_GB.Add("P2", "Warrington"); + cc_reg_GB.Add("P3", "Warwickshire"); + cc_reg_GB.Add("P4", "West Berkshire"); + cc_reg_GB.Add("P5", "Westminster"); + cc_reg_GB.Add("P6", "West Sussex"); + cc_reg_GB.Add("P7", "Wigan"); + cc_reg_GB.Add("P8", "Wiltshire"); + cc_reg_GB.Add("P9", "Windsor and Maidenhead"); + cc_reg_GB.Add("Q1", "Wirral"); + cc_reg_GB.Add("Q2", "Wokingham"); + cc_reg_GB.Add("Q3", "Wolverhampton"); + cc_reg_GB.Add("Q4", "Worcestershire"); + cc_reg_GB.Add("Q5", "York"); + cc_reg_GB.Add("Q6", "Antrim"); + cc_reg_GB.Add("Q7", "Ards"); + cc_reg_GB.Add("Q8", "Armagh"); + cc_reg_GB.Add("Q9", "Ballymena"); + cc_reg_GB.Add("R1", "Ballymoney"); + cc_reg_GB.Add("R2", "Banbridge"); + cc_reg_GB.Add("R3", "Belfast"); + cc_reg_GB.Add("R4", "Carrickfergus"); + cc_reg_GB.Add("R5", "Castlereagh"); + cc_reg_GB.Add("R6", "Coleraine"); + cc_reg_GB.Add("R7", "Cookstown"); + cc_reg_GB.Add("R8", "Craigavon"); + cc_reg_GB.Add("R9", "Down"); + cc_reg_GB.Add("S1", "Dungannon"); + cc_reg_GB.Add("S2", "Fermanagh"); + cc_reg_GB.Add("S3", "Larne"); + cc_reg_GB.Add("S4", "Limavady"); + cc_reg_GB.Add("S5", "Lisburn"); + cc_reg_GB.Add("S6", "Derry"); + cc_reg_GB.Add("S7", "Magherafelt"); + cc_reg_GB.Add("S8", "Moyle"); + cc_reg_GB.Add("S9", "Newry and Mourne"); + cc_reg_GB.Add("T1", "Newtownabbey"); + cc_reg_GB.Add("T2", "North Down"); + cc_reg_GB.Add("T3", "Omagh"); + cc_reg_GB.Add("T4", "Strabane"); + cc_reg_GB.Add("T5", "Aberdeen City"); + cc_reg_GB.Add("T6", "Aberdeenshire"); + cc_reg_GB.Add("T7", "Angus"); + cc_reg_GB.Add("T8", "Argyll and Bute"); + cc_reg_GB.Add("T9", "Scottish Borders, The"); + cc_reg_GB.Add("U1", "Clackmannanshire"); + cc_reg_GB.Add("U2", "Dumfries and Galloway"); + cc_reg_GB.Add("U3", "Dundee City"); + cc_reg_GB.Add("U4", "East Ayrshire"); + cc_reg_GB.Add("U5", "East Dunbartonshire"); + cc_reg_GB.Add("U6", "East Lothian"); + cc_reg_GB.Add("U7", "East Renfrewshire"); + cc_reg_GB.Add("U8", "Edinburgh, City of"); + cc_reg_GB.Add("U9", "Falkirk"); + cc_reg_GB.Add("V1", "Fife"); + cc_reg_GB.Add("V2", "Glasgow City"); + cc_reg_GB.Add("V3", "Highland"); + cc_reg_GB.Add("V4", "Inverclyde"); + cc_reg_GB.Add("V5", "Midlothian"); + cc_reg_GB.Add("V6", "Moray"); + cc_reg_GB.Add("V7", "North Ayrshire"); + cc_reg_GB.Add("V8", "North Lanarkshire"); + cc_reg_GB.Add("V9", "Orkney"); + cc_reg_GB.Add("W1", "Perth and Kinross"); + cc_reg_GB.Add("W2", "Renfrewshire"); + cc_reg_GB.Add("W3", "Shetland Islands"); + cc_reg_GB.Add("W4", "South Ayrshire"); + cc_reg_GB.Add("W5", "South Lanarkshire"); + cc_reg_GB.Add("W6", "Stirling"); + cc_reg_GB.Add("W7", "West Dunbartonshire"); + cc_reg_GB.Add("W8", "Eilean Siar"); + cc_reg_GB.Add("W9", "West Lothian"); + cc_reg_GB.Add("X1", "Isle of Anglesey"); + cc_reg_GB.Add("X2", "Blaenau Gwent"); + cc_reg_GB.Add("X3", "Bridgend"); + cc_reg_GB.Add("X4", "Caerphilly"); + cc_reg_GB.Add("X5", "Cardiff"); + cc_reg_GB.Add("X6", "Ceredigion"); + cc_reg_GB.Add("X7", "Carmarthenshire"); + cc_reg_GB.Add("X8", "Conwy"); + cc_reg_GB.Add("X9", "Denbighshire"); + cc_reg_GB.Add("Y1", "Flintshire"); + cc_reg_GB.Add("Y2", "Gwynedd"); + cc_reg_GB.Add("Y3", "Merthyr Tydfil"); + cc_reg_GB.Add("Y4", "Monmouthshire"); + cc_reg_GB.Add("Y5", "Neath Port Talbot"); + cc_reg_GB.Add("Y6", "Newport"); + cc_reg_GB.Add("Y7", "Pembrokeshire"); + cc_reg_GB.Add("Y8", "Powys"); + cc_reg_GB.Add("Y9", "Rhondda Cynon Taff"); + cc_reg_GB.Add("Z1", "Swansea"); + cc_reg_GB.Add("Z2", "Torfaen"); + cc_reg_GB.Add("Z3", "Vale of Glamorgan, The"); + cc_reg_GB.Add("Z4", "Wrexham"); + cc_reg_GB.Add("Z5", "Bedfordshire"); + cc_reg_GB.Add("Z6", "Central Bedfordshire"); + cc_reg_GB.Add("Z7", "Cheshire East"); + cc_reg_GB.Add("Z8", "Cheshire West and Chester"); + cc_reg_GB.Add("Z9", "Isles of Scilly"); + GEOIP_REGION_NAME.Add("GB", cc_reg_GB ); + Hashtable cc_reg_GD = new Hashtable(); + cc_reg_GD.Add("01", "Saint Andrew"); + cc_reg_GD.Add("02", "Saint David"); + cc_reg_GD.Add("03", "Saint George"); + cc_reg_GD.Add("04", "Saint John"); + cc_reg_GD.Add("05", "Saint Mark"); + cc_reg_GD.Add("06", "Saint Patrick"); + GEOIP_REGION_NAME.Add("GD", cc_reg_GD ); + Hashtable cc_reg_GE = new Hashtable(); + cc_reg_GE.Add("01", "Abashis Raioni"); + cc_reg_GE.Add("02", "Abkhazia"); + cc_reg_GE.Add("03", "Adigenis Raioni"); + cc_reg_GE.Add("04", "Ajaria"); + cc_reg_GE.Add("05", "Akhalgoris Raioni"); + cc_reg_GE.Add("06", "Akhalk'alak'is Raioni"); + cc_reg_GE.Add("07", "Akhalts'ikhis Raioni"); + cc_reg_GE.Add("08", "Akhmetis Raioni"); + cc_reg_GE.Add("09", "Ambrolauris Raioni"); + cc_reg_GE.Add("10", "Aspindzis Raioni"); + cc_reg_GE.Add("11", "Baghdat'is Raioni"); + cc_reg_GE.Add("12", "Bolnisis Raioni"); + cc_reg_GE.Add("13", "Borjomis Raioni"); + cc_reg_GE.Add("14", "Chiat'ura"); + cc_reg_GE.Add("15", "Ch'khorotsqus Raioni"); + cc_reg_GE.Add("16", "Ch'okhatauris Raioni"); + cc_reg_GE.Add("17", "Dedop'listsqaros Raioni"); + cc_reg_GE.Add("18", "Dmanisis Raioni"); + cc_reg_GE.Add("19", "Dushet'is Raioni"); + cc_reg_GE.Add("20", "Gardabanis Raioni"); + cc_reg_GE.Add("21", "Gori"); + cc_reg_GE.Add("22", "Goris Raioni"); + cc_reg_GE.Add("23", "Gurjaanis Raioni"); + cc_reg_GE.Add("24", "Javis Raioni"); + cc_reg_GE.Add("25", "K'arelis Raioni"); + cc_reg_GE.Add("26", "Kaspis Raioni"); + cc_reg_GE.Add("27", "Kharagaulis Raioni"); + cc_reg_GE.Add("28", "Khashuris Raioni"); + cc_reg_GE.Add("29", "Khobis Raioni"); + cc_reg_GE.Add("30", "Khonis Raioni"); + cc_reg_GE.Add("31", "K'ut'aisi"); + cc_reg_GE.Add("32", "Lagodekhis Raioni"); + cc_reg_GE.Add("33", "Lanch'khut'is Raioni"); + cc_reg_GE.Add("34", "Lentekhis Raioni"); + cc_reg_GE.Add("35", "Marneulis Raioni"); + cc_reg_GE.Add("36", "Martvilis Raioni"); + cc_reg_GE.Add("37", "Mestiis Raioni"); + cc_reg_GE.Add("38", "Mts'khet'is Raioni"); + cc_reg_GE.Add("39", "Ninotsmindis Raioni"); + cc_reg_GE.Add("40", "Onis Raioni"); + cc_reg_GE.Add("41", "Ozurget'is Raioni"); + cc_reg_GE.Add("42", "P'ot'i"); + cc_reg_GE.Add("43", "Qazbegis Raioni"); + cc_reg_GE.Add("44", "Qvarlis Raioni"); + cc_reg_GE.Add("45", "Rust'avi"); + cc_reg_GE.Add("46", "Sach'kheris Raioni"); + cc_reg_GE.Add("47", "Sagarejos Raioni"); + cc_reg_GE.Add("48", "Samtrediis Raioni"); + cc_reg_GE.Add("49", "Senakis Raioni"); + cc_reg_GE.Add("50", "Sighnaghis Raioni"); + cc_reg_GE.Add("51", "T'bilisi"); + cc_reg_GE.Add("52", "T'elavis Raioni"); + cc_reg_GE.Add("53", "T'erjolis Raioni"); + cc_reg_GE.Add("54", "T'et'ritsqaros Raioni"); + cc_reg_GE.Add("55", "T'ianet'is Raioni"); + cc_reg_GE.Add("56", "Tqibuli"); + cc_reg_GE.Add("57", "Ts'ageris Raioni"); + cc_reg_GE.Add("58", "Tsalenjikhis Raioni"); + cc_reg_GE.Add("59", "Tsalkis Raioni"); + cc_reg_GE.Add("60", "Tsqaltubo"); + cc_reg_GE.Add("61", "Vanis Raioni"); + cc_reg_GE.Add("62", "Zestap'onis Raioni"); + cc_reg_GE.Add("63", "Zugdidi"); + cc_reg_GE.Add("64", "Zugdidis Raioni"); + GEOIP_REGION_NAME.Add("GE", cc_reg_GE ); + Hashtable cc_reg_GH = new Hashtable(); + cc_reg_GH.Add("01", "Greater Accra"); + cc_reg_GH.Add("02", "Ashanti"); + cc_reg_GH.Add("03", "Brong-Ahafo"); + cc_reg_GH.Add("04", "Central"); + cc_reg_GH.Add("05", "Eastern"); + cc_reg_GH.Add("06", "Northern"); + cc_reg_GH.Add("08", "Volta"); + cc_reg_GH.Add("09", "Western"); + cc_reg_GH.Add("10", "Upper East"); + cc_reg_GH.Add("11", "Upper West"); + GEOIP_REGION_NAME.Add("GH", cc_reg_GH ); + Hashtable cc_reg_GL = new Hashtable(); + cc_reg_GL.Add("01", "Nordgronland"); + cc_reg_GL.Add("02", "Ostgronland"); + cc_reg_GL.Add("03", "Vestgronland"); + GEOIP_REGION_NAME.Add("GL", cc_reg_GL ); + Hashtable cc_reg_GM = new Hashtable(); + cc_reg_GM.Add("01", "Banjul"); + cc_reg_GM.Add("02", "Lower River"); + cc_reg_GM.Add("03", "Central River"); + cc_reg_GM.Add("04", "Upper River"); + cc_reg_GM.Add("05", "Western"); + cc_reg_GM.Add("07", "North Bank"); + GEOIP_REGION_NAME.Add("GM", cc_reg_GM ); + Hashtable cc_reg_GN = new Hashtable(); + cc_reg_GN.Add("01", "Beyla"); + cc_reg_GN.Add("02", "Boffa"); + cc_reg_GN.Add("03", "Boke"); + cc_reg_GN.Add("04", "Conakry"); + cc_reg_GN.Add("05", "Dabola"); + cc_reg_GN.Add("06", "Dalaba"); + cc_reg_GN.Add("07", "Dinguiraye"); + cc_reg_GN.Add("09", "Faranah"); + cc_reg_GN.Add("10", "Forecariah"); + cc_reg_GN.Add("11", "Fria"); + cc_reg_GN.Add("12", "Gaoual"); + cc_reg_GN.Add("13", "Gueckedou"); + cc_reg_GN.Add("15", "Kerouane"); + cc_reg_GN.Add("16", "Kindia"); + cc_reg_GN.Add("17", "Kissidougou"); + cc_reg_GN.Add("18", "Koundara"); + cc_reg_GN.Add("19", "Kouroussa"); + cc_reg_GN.Add("21", "Macenta"); + cc_reg_GN.Add("22", "Mali"); + cc_reg_GN.Add("23", "Mamou"); + cc_reg_GN.Add("25", "Pita"); + cc_reg_GN.Add("27", "Telimele"); + cc_reg_GN.Add("28", "Tougue"); + cc_reg_GN.Add("29", "Yomou"); + cc_reg_GN.Add("30", "Coyah"); + cc_reg_GN.Add("31", "Dubreka"); + cc_reg_GN.Add("32", "Kankan"); + cc_reg_GN.Add("33", "Koubia"); + cc_reg_GN.Add("34", "Labe"); + cc_reg_GN.Add("35", "Lelouma"); + cc_reg_GN.Add("36", "Lola"); + cc_reg_GN.Add("37", "Mandiana"); + cc_reg_GN.Add("38", "Nzerekore"); + cc_reg_GN.Add("39", "Siguiri"); + GEOIP_REGION_NAME.Add("GN", cc_reg_GN ); + Hashtable cc_reg_GQ = new Hashtable(); + cc_reg_GQ.Add("03", "Annobon"); + cc_reg_GQ.Add("04", "Bioko Norte"); + cc_reg_GQ.Add("05", "Bioko Sur"); + cc_reg_GQ.Add("06", "Centro Sur"); + cc_reg_GQ.Add("07", "Kie-Ntem"); + cc_reg_GQ.Add("08", "Litoral"); + cc_reg_GQ.Add("09", "Wele-Nzas"); + GEOIP_REGION_NAME.Add("GQ", cc_reg_GQ ); + Hashtable cc_reg_GR = new Hashtable(); + cc_reg_GR.Add("01", "Evros"); + cc_reg_GR.Add("02", "Rodhopi"); + cc_reg_GR.Add("03", "Xanthi"); + cc_reg_GR.Add("04", "Drama"); + cc_reg_GR.Add("05", "Serrai"); + cc_reg_GR.Add("06", "Kilkis"); + cc_reg_GR.Add("07", "Pella"); + cc_reg_GR.Add("08", "Florina"); + cc_reg_GR.Add("09", "Kastoria"); + cc_reg_GR.Add("10", "Grevena"); + cc_reg_GR.Add("11", "Kozani"); + cc_reg_GR.Add("12", "Imathia"); + cc_reg_GR.Add("13", "Thessaloniki"); + cc_reg_GR.Add("14", "Kavala"); + cc_reg_GR.Add("15", "Khalkidhiki"); + cc_reg_GR.Add("16", "Pieria"); + cc_reg_GR.Add("17", "Ioannina"); + cc_reg_GR.Add("18", "Thesprotia"); + cc_reg_GR.Add("19", "Preveza"); + cc_reg_GR.Add("20", "Arta"); + cc_reg_GR.Add("21", "Larisa"); + cc_reg_GR.Add("22", "Trikala"); + cc_reg_GR.Add("23", "Kardhitsa"); + cc_reg_GR.Add("24", "Magnisia"); + cc_reg_GR.Add("25", "Kerkira"); + cc_reg_GR.Add("26", "Levkas"); + cc_reg_GR.Add("27", "Kefallinia"); + cc_reg_GR.Add("28", "Zakinthos"); + cc_reg_GR.Add("29", "Fthiotis"); + cc_reg_GR.Add("30", "Evritania"); + cc_reg_GR.Add("31", "Aitolia kai Akarnania"); + cc_reg_GR.Add("32", "Fokis"); + cc_reg_GR.Add("33", "Voiotia"); + cc_reg_GR.Add("34", "Evvoia"); + cc_reg_GR.Add("35", "Attiki"); + cc_reg_GR.Add("36", "Argolis"); + cc_reg_GR.Add("37", "Korinthia"); + cc_reg_GR.Add("38", "Akhaia"); + cc_reg_GR.Add("39", "Ilia"); + cc_reg_GR.Add("40", "Messinia"); + cc_reg_GR.Add("41", "Arkadhia"); + cc_reg_GR.Add("42", "Lakonia"); + cc_reg_GR.Add("43", "Khania"); + cc_reg_GR.Add("44", "Rethimni"); + cc_reg_GR.Add("45", "Iraklion"); + cc_reg_GR.Add("46", "Lasithi"); + cc_reg_GR.Add("47", "Dhodhekanisos"); + cc_reg_GR.Add("48", "Samos"); + cc_reg_GR.Add("49", "Kikladhes"); + cc_reg_GR.Add("50", "Khios"); + cc_reg_GR.Add("51", "Lesvos"); + GEOIP_REGION_NAME.Add("GR", cc_reg_GR ); + Hashtable cc_reg_GT = new Hashtable(); + cc_reg_GT.Add("01", "Alta Verapaz"); + cc_reg_GT.Add("02", "Baja Verapaz"); + cc_reg_GT.Add("03", "Chimaltenango"); + cc_reg_GT.Add("04", "Chiquimula"); + cc_reg_GT.Add("05", "El Progreso"); + cc_reg_GT.Add("06", "Escuintla"); + cc_reg_GT.Add("07", "Guatemala"); + cc_reg_GT.Add("08", "Huehuetenango"); + cc_reg_GT.Add("09", "Izabal"); + cc_reg_GT.Add("10", "Jalapa"); + cc_reg_GT.Add("11", "Jutiapa"); + cc_reg_GT.Add("12", "Peten"); + cc_reg_GT.Add("13", "Quetzaltenango"); + cc_reg_GT.Add("14", "Quiche"); + cc_reg_GT.Add("15", "Retalhuleu"); + cc_reg_GT.Add("16", "Sacatepequez"); + cc_reg_GT.Add("17", "San Marcos"); + cc_reg_GT.Add("18", "Santa Rosa"); + cc_reg_GT.Add("19", "Solola"); + cc_reg_GT.Add("20", "Suchitepequez"); + cc_reg_GT.Add("21", "Totonicapan"); + cc_reg_GT.Add("22", "Zacapa"); + GEOIP_REGION_NAME.Add("GT", cc_reg_GT ); + Hashtable cc_reg_GW = new Hashtable(); + cc_reg_GW.Add("01", "Bafata"); + cc_reg_GW.Add("02", "Quinara"); + cc_reg_GW.Add("04", "Oio"); + cc_reg_GW.Add("05", "Bolama"); + cc_reg_GW.Add("06", "Cacheu"); + cc_reg_GW.Add("07", "Tombali"); + cc_reg_GW.Add("10", "Gabu"); + cc_reg_GW.Add("11", "Bissau"); + cc_reg_GW.Add("12", "Biombo"); + GEOIP_REGION_NAME.Add("GW", cc_reg_GW ); + Hashtable cc_reg_GY = new Hashtable(); + cc_reg_GY.Add("10", "Barima-Waini"); + cc_reg_GY.Add("11", "Cuyuni-Mazaruni"); + cc_reg_GY.Add("12", "Demerara-Mahaica"); + cc_reg_GY.Add("13", "East Berbice-Corentyne"); + cc_reg_GY.Add("14", "Essequibo Islands-West Demerara"); + cc_reg_GY.Add("15", "Mahaica-Berbice"); + cc_reg_GY.Add("16", "Pomeroon-Supenaam"); + cc_reg_GY.Add("17", "Potaro-Siparuni"); + cc_reg_GY.Add("18", "Upper Demerara-Berbice"); + cc_reg_GY.Add("19", "Upper Takutu-Upper Essequibo"); + GEOIP_REGION_NAME.Add("GY", cc_reg_GY ); + Hashtable cc_reg_HN = new Hashtable(); + cc_reg_HN.Add("01", "Atlantida"); + cc_reg_HN.Add("02", "Choluteca"); + cc_reg_HN.Add("03", "Colon"); + cc_reg_HN.Add("04", "Comayagua"); + cc_reg_HN.Add("05", "Copan"); + cc_reg_HN.Add("06", "Cortes"); + cc_reg_HN.Add("07", "El Paraiso"); + cc_reg_HN.Add("08", "Francisco Morazan"); + cc_reg_HN.Add("09", "Gracias a Dios"); + cc_reg_HN.Add("10", "Intibuca"); + cc_reg_HN.Add("11", "Islas de la Bahia"); + cc_reg_HN.Add("12", "La Paz"); + cc_reg_HN.Add("13", "Lempira"); + cc_reg_HN.Add("14", "Ocotepeque"); + cc_reg_HN.Add("15", "Olancho"); + cc_reg_HN.Add("16", "Santa Barbara"); + cc_reg_HN.Add("17", "Valle"); + cc_reg_HN.Add("18", "Yoro"); + GEOIP_REGION_NAME.Add("HN", cc_reg_HN ); + Hashtable cc_reg_HR = new Hashtable(); + cc_reg_HR.Add("01", "Bjelovarsko-Bilogorska"); + cc_reg_HR.Add("02", "Brodsko-Posavska"); + cc_reg_HR.Add("03", "Dubrovacko-Neretvanska"); + cc_reg_HR.Add("04", "Istarska"); + cc_reg_HR.Add("05", "Karlovacka"); + cc_reg_HR.Add("06", "Koprivnicko-Krizevacka"); + cc_reg_HR.Add("07", "Krapinsko-Zagorska"); + cc_reg_HR.Add("08", "Licko-Senjska"); + cc_reg_HR.Add("09", "Medimurska"); + cc_reg_HR.Add("10", "Osjecko-Baranjska"); + cc_reg_HR.Add("11", "Pozesko-Slavonska"); + cc_reg_HR.Add("12", "Primorsko-Goranska"); + cc_reg_HR.Add("13", "Sibensko-Kninska"); + cc_reg_HR.Add("14", "Sisacko-Moslavacka"); + cc_reg_HR.Add("15", "Splitsko-Dalmatinska"); + cc_reg_HR.Add("16", "Varazdinska"); + cc_reg_HR.Add("17", "Viroviticko-Podravska"); + cc_reg_HR.Add("18", "Vukovarsko-Srijemska"); + cc_reg_HR.Add("19", "Zadarska"); + cc_reg_HR.Add("20", "Zagrebacka"); + cc_reg_HR.Add("21", "Grad Zagreb"); + GEOIP_REGION_NAME.Add("HR", cc_reg_HR ); + Hashtable cc_reg_HT = new Hashtable(); + cc_reg_HT.Add("03", "Nord-Ouest"); + cc_reg_HT.Add("06", "Artibonite"); + cc_reg_HT.Add("07", "Centre"); + cc_reg_HT.Add("09", "Nord"); + cc_reg_HT.Add("10", "Nord-Est"); + cc_reg_HT.Add("11", "Ouest"); + cc_reg_HT.Add("12", "Sud"); + cc_reg_HT.Add("13", "Sud-Est"); + cc_reg_HT.Add("14", "Grand' Anse"); + cc_reg_HT.Add("15", "Nippes"); + GEOIP_REGION_NAME.Add("HT", cc_reg_HT ); + Hashtable cc_reg_HU = new Hashtable(); + cc_reg_HU.Add("01", "Bacs-Kiskun"); + cc_reg_HU.Add("02", "Baranya"); + cc_reg_HU.Add("03", "Bekes"); + cc_reg_HU.Add("04", "Borsod-Abauj-Zemplen"); + cc_reg_HU.Add("05", "Budapest"); + cc_reg_HU.Add("06", "Csongrad"); + cc_reg_HU.Add("07", "Debrecen"); + cc_reg_HU.Add("08", "Fejer"); + cc_reg_HU.Add("09", "Gyor-Moson-Sopron"); + cc_reg_HU.Add("10", "Hajdu-Bihar"); + cc_reg_HU.Add("11", "Heves"); + cc_reg_HU.Add("12", "Komarom-Esztergom"); + cc_reg_HU.Add("13", "Miskolc"); + cc_reg_HU.Add("14", "Nograd"); + cc_reg_HU.Add("15", "Pecs"); + cc_reg_HU.Add("16", "Pest"); + cc_reg_HU.Add("17", "Somogy"); + cc_reg_HU.Add("18", "Szabolcs-Szatmar-Bereg"); + cc_reg_HU.Add("19", "Szeged"); + cc_reg_HU.Add("20", "Jasz-Nagykun-Szolnok"); + cc_reg_HU.Add("21", "Tolna"); + cc_reg_HU.Add("22", "Vas"); + cc_reg_HU.Add("23", "Veszprem"); + cc_reg_HU.Add("24", "Zala"); + cc_reg_HU.Add("25", "Gyor"); + cc_reg_HU.Add("26", "Bekescsaba"); + cc_reg_HU.Add("27", "Dunaujvaros"); + cc_reg_HU.Add("28", "Eger"); + cc_reg_HU.Add("29", "Hodmezovasarhely"); + cc_reg_HU.Add("30", "Kaposvar"); + cc_reg_HU.Add("31", "Kecskemet"); + cc_reg_HU.Add("32", "Nagykanizsa"); + cc_reg_HU.Add("33", "Nyiregyhaza"); + cc_reg_HU.Add("34", "Sopron"); + cc_reg_HU.Add("35", "Szekesfehervar"); + cc_reg_HU.Add("36", "Szolnok"); + cc_reg_HU.Add("37", "Szombathely"); + cc_reg_HU.Add("38", "Tatabanya"); + cc_reg_HU.Add("39", "Veszprem"); + cc_reg_HU.Add("40", "Zalaegerszeg"); + cc_reg_HU.Add("41", "Salgotarjan"); + cc_reg_HU.Add("42", "Szekszard"); + cc_reg_HU.Add("43", "Erd"); + GEOIP_REGION_NAME.Add("HU", cc_reg_HU ); + Hashtable cc_reg_ID = new Hashtable(); + cc_reg_ID.Add("01", "Aceh"); + cc_reg_ID.Add("02", "Bali"); + cc_reg_ID.Add("03", "Bengkulu"); + cc_reg_ID.Add("04", "Jakarta Raya"); + cc_reg_ID.Add("05", "Jambi"); + cc_reg_ID.Add("07", "Jawa Tengah"); + cc_reg_ID.Add("08", "Jawa Timur"); + cc_reg_ID.Add("10", "Yogyakarta"); + cc_reg_ID.Add("11", "Kalimantan Barat"); + cc_reg_ID.Add("12", "Kalimantan Selatan"); + cc_reg_ID.Add("13", "Kalimantan Tengah"); + cc_reg_ID.Add("14", "Kalimantan Timur"); + cc_reg_ID.Add("15", "Lampung"); + cc_reg_ID.Add("17", "Nusa Tenggara Barat"); + cc_reg_ID.Add("18", "Nusa Tenggara Timur"); + cc_reg_ID.Add("21", "Sulawesi Tengah"); + cc_reg_ID.Add("22", "Sulawesi Tenggara"); + cc_reg_ID.Add("24", "Sumatera Barat"); + cc_reg_ID.Add("26", "Sumatera Utara"); + cc_reg_ID.Add("28", "Maluku"); + cc_reg_ID.Add("29", "Maluku Utara"); + cc_reg_ID.Add("30", "Jawa Barat"); + cc_reg_ID.Add("31", "Sulawesi Utara"); + cc_reg_ID.Add("32", "Sumatera Selatan"); + cc_reg_ID.Add("33", "Banten"); + cc_reg_ID.Add("34", "Gorontalo"); + cc_reg_ID.Add("35", "Kepulauan Bangka Belitung"); + cc_reg_ID.Add("36", "Papua"); + cc_reg_ID.Add("37", "Riau"); + cc_reg_ID.Add("38", "Sulawesi Selatan"); + cc_reg_ID.Add("39", "Irian Jaya Barat"); + cc_reg_ID.Add("40", "Kepulauan Riau"); + cc_reg_ID.Add("41", "Sulawesi Barat"); + GEOIP_REGION_NAME.Add("ID", cc_reg_ID ); + Hashtable cc_reg_IE = new Hashtable(); + cc_reg_IE.Add("01", "Carlow"); + cc_reg_IE.Add("02", "Cavan"); + cc_reg_IE.Add("03", "Clare"); + cc_reg_IE.Add("04", "Cork"); + cc_reg_IE.Add("06", "Donegal"); + cc_reg_IE.Add("07", "Dublin"); + cc_reg_IE.Add("10", "Galway"); + cc_reg_IE.Add("11", "Kerry"); + cc_reg_IE.Add("12", "Kildare"); + cc_reg_IE.Add("13", "Kilkenny"); + cc_reg_IE.Add("14", "Leitrim"); + cc_reg_IE.Add("15", "Laois"); + cc_reg_IE.Add("16", "Limerick"); + cc_reg_IE.Add("18", "Longford"); + cc_reg_IE.Add("19", "Louth"); + cc_reg_IE.Add("20", "Mayo"); + cc_reg_IE.Add("21", "Meath"); + cc_reg_IE.Add("22", "Monaghan"); + cc_reg_IE.Add("23", "Offaly"); + cc_reg_IE.Add("24", "Roscommon"); + cc_reg_IE.Add("25", "Sligo"); + cc_reg_IE.Add("26", "Tipperary"); + cc_reg_IE.Add("27", "Waterford"); + cc_reg_IE.Add("29", "Westmeath"); + cc_reg_IE.Add("30", "Wexford"); + cc_reg_IE.Add("31", "Wicklow"); + GEOIP_REGION_NAME.Add("IE", cc_reg_IE ); + Hashtable cc_reg_IL = new Hashtable(); + cc_reg_IL.Add("01", "HaDarom"); + cc_reg_IL.Add("02", "HaMerkaz"); + cc_reg_IL.Add("03", "HaZafon"); + cc_reg_IL.Add("04", "Hefa"); + cc_reg_IL.Add("05", "Tel Aviv"); + cc_reg_IL.Add("06", "Yerushalayim"); + GEOIP_REGION_NAME.Add("IL", cc_reg_IL ); + Hashtable cc_reg_IN = new Hashtable(); + cc_reg_IN.Add("01", "Andaman and Nicobar Islands"); + cc_reg_IN.Add("02", "Andhra Pradesh"); + cc_reg_IN.Add("03", "Assam"); + cc_reg_IN.Add("05", "Chandigarh"); + cc_reg_IN.Add("06", "Dadra and Nagar Haveli"); + cc_reg_IN.Add("07", "Delhi"); + cc_reg_IN.Add("09", "Gujarat"); + cc_reg_IN.Add("10", "Haryana"); + cc_reg_IN.Add("11", "Himachal Pradesh"); + cc_reg_IN.Add("12", "Jammu and Kashmir"); + cc_reg_IN.Add("13", "Kerala"); + cc_reg_IN.Add("14", "Lakshadweep"); + cc_reg_IN.Add("16", "Maharashtra"); + cc_reg_IN.Add("17", "Manipur"); + cc_reg_IN.Add("18", "Meghalaya"); + cc_reg_IN.Add("19", "Karnataka"); + cc_reg_IN.Add("20", "Nagaland"); + cc_reg_IN.Add("21", "Orissa"); + cc_reg_IN.Add("22", "Puducherry"); + cc_reg_IN.Add("23", "Punjab"); + cc_reg_IN.Add("24", "Rajasthan"); + cc_reg_IN.Add("25", "Tamil Nadu"); + cc_reg_IN.Add("26", "Tripura"); + cc_reg_IN.Add("28", "West Bengal"); + cc_reg_IN.Add("29", "Sikkim"); + cc_reg_IN.Add("30", "Arunachal Pradesh"); + cc_reg_IN.Add("31", "Mizoram"); + cc_reg_IN.Add("32", "Daman and Diu"); + cc_reg_IN.Add("33", "Goa"); + cc_reg_IN.Add("34", "Bihar"); + cc_reg_IN.Add("35", "Madhya Pradesh"); + cc_reg_IN.Add("36", "Uttar Pradesh"); + cc_reg_IN.Add("37", "Chhattisgarh"); + cc_reg_IN.Add("38", "Jharkhand"); + cc_reg_IN.Add("39", "Uttarakhand"); + GEOIP_REGION_NAME.Add("IN", cc_reg_IN ); + Hashtable cc_reg_IQ = new Hashtable(); + cc_reg_IQ.Add("01", "Al Anbar"); + cc_reg_IQ.Add("02", "Al Basrah"); + cc_reg_IQ.Add("03", "Al Muthanna"); + cc_reg_IQ.Add("04", "Al Qadisiyah"); + cc_reg_IQ.Add("05", "As Sulaymaniyah"); + cc_reg_IQ.Add("06", "Babil"); + cc_reg_IQ.Add("07", "Baghdad"); + cc_reg_IQ.Add("08", "Dahuk"); + cc_reg_IQ.Add("09", "Dhi Qar"); + cc_reg_IQ.Add("10", "Diyala"); + cc_reg_IQ.Add("11", "Arbil"); + cc_reg_IQ.Add("12", "Karbala'"); + cc_reg_IQ.Add("13", "At Ta'mim"); + cc_reg_IQ.Add("14", "Maysan"); + cc_reg_IQ.Add("15", "Ninawa"); + cc_reg_IQ.Add("16", "Wasit"); + cc_reg_IQ.Add("17", "An Najaf"); + cc_reg_IQ.Add("18", "Salah ad Din"); + GEOIP_REGION_NAME.Add("IQ", cc_reg_IQ ); + Hashtable cc_reg_IR = new Hashtable(); + cc_reg_IR.Add("01", "Azarbayjan-e Bakhtari"); + cc_reg_IR.Add("03", "Chahar Mahall va Bakhtiari"); + cc_reg_IR.Add("04", "Sistan va Baluchestan"); + cc_reg_IR.Add("05", "Kohkiluyeh va Buyer Ahmadi"); + cc_reg_IR.Add("07", "Fars"); + cc_reg_IR.Add("08", "Gilan"); + cc_reg_IR.Add("09", "Hamadan"); + cc_reg_IR.Add("10", "Ilam"); + cc_reg_IR.Add("11", "Hormozgan"); + cc_reg_IR.Add("12", "Kerman"); + cc_reg_IR.Add("13", "Bakhtaran"); + cc_reg_IR.Add("15", "Khuzestan"); + cc_reg_IR.Add("16", "Kordestan"); + cc_reg_IR.Add("17", "Mazandaran"); + cc_reg_IR.Add("18", "Semnan Province"); + cc_reg_IR.Add("19", "Markazi"); + cc_reg_IR.Add("21", "Zanjan"); + cc_reg_IR.Add("22", "Bushehr"); + cc_reg_IR.Add("23", "Lorestan"); + cc_reg_IR.Add("24", "Markazi"); + cc_reg_IR.Add("25", "Semnan"); + cc_reg_IR.Add("26", "Tehran"); + cc_reg_IR.Add("27", "Zanjan"); + cc_reg_IR.Add("28", "Esfahan"); + cc_reg_IR.Add("29", "Kerman"); + cc_reg_IR.Add("30", "Khorasan"); + cc_reg_IR.Add("31", "Yazd"); + cc_reg_IR.Add("32", "Ardabil"); + cc_reg_IR.Add("33", "East Azarbaijan"); + cc_reg_IR.Add("34", "Markazi"); + cc_reg_IR.Add("35", "Mazandaran"); + cc_reg_IR.Add("36", "Zanjan"); + cc_reg_IR.Add("37", "Golestan"); + cc_reg_IR.Add("38", "Qazvin"); + cc_reg_IR.Add("39", "Qom"); + cc_reg_IR.Add("40", "Yazd"); + cc_reg_IR.Add("41", "Khorasan-e Janubi"); + cc_reg_IR.Add("42", "Khorasan-e Razavi"); + cc_reg_IR.Add("43", "Khorasan-e Shemali"); + cc_reg_IR.Add("44", "Alborz"); + GEOIP_REGION_NAME.Add("IR", cc_reg_IR ); + Hashtable cc_reg_IS = new Hashtable(); + cc_reg_IS.Add("03", "Arnessysla"); + cc_reg_IS.Add("05", "Austur-Hunavatnssysla"); + cc_reg_IS.Add("06", "Austur-Skaftafellssysla"); + cc_reg_IS.Add("07", "Borgarfjardarsysla"); + cc_reg_IS.Add("09", "Eyjafjardarsysla"); + cc_reg_IS.Add("10", "Gullbringusysla"); + cc_reg_IS.Add("15", "Kjosarsysla"); + cc_reg_IS.Add("17", "Myrasysla"); + cc_reg_IS.Add("20", "Nordur-Mulasysla"); + cc_reg_IS.Add("21", "Nordur-Tingeyjarsysla"); + cc_reg_IS.Add("23", "Rangarvallasysla"); + cc_reg_IS.Add("28", "Skagafjardarsysla"); + cc_reg_IS.Add("29", "Snafellsnes- og Hnappadalssysla"); + cc_reg_IS.Add("30", "Strandasysla"); + cc_reg_IS.Add("31", "Sudur-Mulasysla"); + cc_reg_IS.Add("32", "Sudur-Tingeyjarsysla"); + cc_reg_IS.Add("34", "Vestur-Bardastrandarsysla"); + cc_reg_IS.Add("35", "Vestur-Hunavatnssysla"); + cc_reg_IS.Add("36", "Vestur-Isafjardarsysla"); + cc_reg_IS.Add("37", "Vestur-Skaftafellssysla"); + cc_reg_IS.Add("38", "Austurland"); + cc_reg_IS.Add("39", "Hofuoborgarsvaoio"); + cc_reg_IS.Add("40", "Norourland Eystra"); + cc_reg_IS.Add("41", "Norourland Vestra"); + cc_reg_IS.Add("42", "Suourland"); + cc_reg_IS.Add("43", "Suournes"); + cc_reg_IS.Add("44", "Vestfiroir"); + cc_reg_IS.Add("45", "Vesturland"); + GEOIP_REGION_NAME.Add("IS", cc_reg_IS ); + Hashtable cc_reg_IT = new Hashtable(); + cc_reg_IT.Add("01", "Abruzzi"); + cc_reg_IT.Add("02", "Basilicata"); + cc_reg_IT.Add("03", "Calabria"); + cc_reg_IT.Add("04", "Campania"); + cc_reg_IT.Add("05", "Emilia-Romagna"); + cc_reg_IT.Add("06", "Friuli-Venezia Giulia"); + cc_reg_IT.Add("07", "Lazio"); + cc_reg_IT.Add("08", "Liguria"); + cc_reg_IT.Add("09", "Lombardia"); + cc_reg_IT.Add("10", "Marche"); + cc_reg_IT.Add("11", "Molise"); + cc_reg_IT.Add("12", "Piemonte"); + cc_reg_IT.Add("13", "Puglia"); + cc_reg_IT.Add("14", "Sardegna"); + cc_reg_IT.Add("15", "Sicilia"); + cc_reg_IT.Add("16", "Toscana"); + cc_reg_IT.Add("17", "Trentino-Alto Adige"); + cc_reg_IT.Add("18", "Umbria"); + cc_reg_IT.Add("19", "Valle d'Aosta"); + cc_reg_IT.Add("20", "Veneto"); + GEOIP_REGION_NAME.Add("IT", cc_reg_IT ); + Hashtable cc_reg_JM = new Hashtable(); + cc_reg_JM.Add("01", "Clarendon"); + cc_reg_JM.Add("02", "Hanover"); + cc_reg_JM.Add("04", "Manchester"); + cc_reg_JM.Add("07", "Portland"); + cc_reg_JM.Add("08", "Saint Andrew"); + cc_reg_JM.Add("09", "Saint Ann"); + cc_reg_JM.Add("10", "Saint Catherine"); + cc_reg_JM.Add("11", "Saint Elizabeth"); + cc_reg_JM.Add("12", "Saint James"); + cc_reg_JM.Add("13", "Saint Mary"); + cc_reg_JM.Add("14", "Saint Thomas"); + cc_reg_JM.Add("15", "Trelawny"); + cc_reg_JM.Add("16", "Westmoreland"); + cc_reg_JM.Add("17", "Kingston"); + GEOIP_REGION_NAME.Add("JM", cc_reg_JM ); + Hashtable cc_reg_JO = new Hashtable(); + cc_reg_JO.Add("02", "Al Balqa'"); + cc_reg_JO.Add("09", "Al Karak"); + cc_reg_JO.Add("12", "At Tafilah"); + cc_reg_JO.Add("15", "Al Mafraq"); + cc_reg_JO.Add("16", "Amman"); + cc_reg_JO.Add("17", "Az Zaraqa"); + cc_reg_JO.Add("18", "Irbid"); + cc_reg_JO.Add("19", "Ma'an"); + cc_reg_JO.Add("20", "Ajlun"); + cc_reg_JO.Add("21", "Al Aqabah"); + cc_reg_JO.Add("22", "Jarash"); + cc_reg_JO.Add("23", "Madaba"); + GEOIP_REGION_NAME.Add("JO", cc_reg_JO ); + Hashtable cc_reg_JP = new Hashtable(); + cc_reg_JP.Add("01", "Aichi"); + cc_reg_JP.Add("02", "Akita"); + cc_reg_JP.Add("03", "Aomori"); + cc_reg_JP.Add("04", "Chiba"); + cc_reg_JP.Add("05", "Ehime"); + cc_reg_JP.Add("06", "Fukui"); + cc_reg_JP.Add("07", "Fukuoka"); + cc_reg_JP.Add("08", "Fukushima"); + cc_reg_JP.Add("09", "Gifu"); + cc_reg_JP.Add("10", "Gumma"); + cc_reg_JP.Add("11", "Hiroshima"); + cc_reg_JP.Add("12", "Hokkaido"); + cc_reg_JP.Add("13", "Hyogo"); + cc_reg_JP.Add("14", "Ibaraki"); + cc_reg_JP.Add("15", "Ishikawa"); + cc_reg_JP.Add("16", "Iwate"); + cc_reg_JP.Add("17", "Kagawa"); + cc_reg_JP.Add("18", "Kagoshima"); + cc_reg_JP.Add("19", "Kanagawa"); + cc_reg_JP.Add("20", "Kochi"); + cc_reg_JP.Add("21", "Kumamoto"); + cc_reg_JP.Add("22", "Kyoto"); + cc_reg_JP.Add("23", "Mie"); + cc_reg_JP.Add("24", "Miyagi"); + cc_reg_JP.Add("25", "Miyazaki"); + cc_reg_JP.Add("26", "Nagano"); + cc_reg_JP.Add("27", "Nagasaki"); + cc_reg_JP.Add("28", "Nara"); + cc_reg_JP.Add("29", "Niigata"); + cc_reg_JP.Add("30", "Oita"); + cc_reg_JP.Add("31", "Okayama"); + cc_reg_JP.Add("32", "Osaka"); + cc_reg_JP.Add("33", "Saga"); + cc_reg_JP.Add("34", "Saitama"); + cc_reg_JP.Add("35", "Shiga"); + cc_reg_JP.Add("36", "Shimane"); + cc_reg_JP.Add("37", "Shizuoka"); + cc_reg_JP.Add("38", "Tochigi"); + cc_reg_JP.Add("39", "Tokushima"); + cc_reg_JP.Add("40", "Tokyo"); + cc_reg_JP.Add("41", "Tottori"); + cc_reg_JP.Add("42", "Toyama"); + cc_reg_JP.Add("43", "Wakayama"); + cc_reg_JP.Add("44", "Yamagata"); + cc_reg_JP.Add("45", "Yamaguchi"); + cc_reg_JP.Add("46", "Yamanashi"); + cc_reg_JP.Add("47", "Okinawa"); + GEOIP_REGION_NAME.Add("JP", cc_reg_JP ); + Hashtable cc_reg_KE = new Hashtable(); + cc_reg_KE.Add("01", "Central"); + cc_reg_KE.Add("02", "Coast"); + cc_reg_KE.Add("03", "Eastern"); + cc_reg_KE.Add("05", "Nairobi Area"); + cc_reg_KE.Add("06", "North-Eastern"); + cc_reg_KE.Add("07", "Nyanza"); + cc_reg_KE.Add("08", "Rift Valley"); + cc_reg_KE.Add("09", "Western"); + GEOIP_REGION_NAME.Add("KE", cc_reg_KE ); + Hashtable cc_reg_KG = new Hashtable(); + cc_reg_KG.Add("01", "Bishkek"); + cc_reg_KG.Add("02", "Chuy"); + cc_reg_KG.Add("03", "Jalal-Abad"); + cc_reg_KG.Add("04", "Naryn"); + cc_reg_KG.Add("05", "Osh"); + cc_reg_KG.Add("06", "Talas"); + cc_reg_KG.Add("07", "Ysyk-Kol"); + cc_reg_KG.Add("08", "Osh"); + cc_reg_KG.Add("09", "Batken"); + GEOIP_REGION_NAME.Add("KG", cc_reg_KG ); + Hashtable cc_reg_KH = new Hashtable(); + cc_reg_KH.Add("01", "Batdambang"); + cc_reg_KH.Add("02", "Kampong Cham"); + cc_reg_KH.Add("03", "Kampong Chhnang"); + cc_reg_KH.Add("04", "Kampong Speu"); + cc_reg_KH.Add("05", "Kampong Thum"); + cc_reg_KH.Add("06", "Kampot"); + cc_reg_KH.Add("07", "Kandal"); + cc_reg_KH.Add("08", "Koh Kong"); + cc_reg_KH.Add("09", "Kracheh"); + cc_reg_KH.Add("10", "Mondulkiri"); + cc_reg_KH.Add("11", "Phnum Penh"); + cc_reg_KH.Add("12", "Pursat"); + cc_reg_KH.Add("13", "Preah Vihear"); + cc_reg_KH.Add("14", "Prey Veng"); + cc_reg_KH.Add("15", "Ratanakiri Kiri"); + cc_reg_KH.Add("16", "Siem Reap"); + cc_reg_KH.Add("17", "Stung Treng"); + cc_reg_KH.Add("18", "Svay Rieng"); + cc_reg_KH.Add("19", "Takeo"); + cc_reg_KH.Add("25", "Banteay Meanchey"); + cc_reg_KH.Add("29", "Batdambang"); + cc_reg_KH.Add("30", "Pailin"); + GEOIP_REGION_NAME.Add("KH", cc_reg_KH ); + Hashtable cc_reg_KI = new Hashtable(); + cc_reg_KI.Add("01", "Gilbert Islands"); + cc_reg_KI.Add("02", "Line Islands"); + cc_reg_KI.Add("03", "Phoenix Islands"); + GEOIP_REGION_NAME.Add("KI", cc_reg_KI ); + Hashtable cc_reg_KM = new Hashtable(); + cc_reg_KM.Add("01", "Anjouan"); + cc_reg_KM.Add("02", "Grande Comore"); + cc_reg_KM.Add("03", "Moheli"); + GEOIP_REGION_NAME.Add("KM", cc_reg_KM ); + Hashtable cc_reg_KN = new Hashtable(); + cc_reg_KN.Add("01", "Christ Church Nichola Town"); + cc_reg_KN.Add("02", "Saint Anne Sandy Point"); + cc_reg_KN.Add("03", "Saint George Basseterre"); + cc_reg_KN.Add("04", "Saint George Gingerland"); + cc_reg_KN.Add("05", "Saint James Windward"); + cc_reg_KN.Add("06", "Saint John Capisterre"); + cc_reg_KN.Add("07", "Saint John Figtree"); + cc_reg_KN.Add("08", "Saint Mary Cayon"); + cc_reg_KN.Add("09", "Saint Paul Capisterre"); + cc_reg_KN.Add("10", "Saint Paul Charlestown"); + cc_reg_KN.Add("11", "Saint Peter Basseterre"); + cc_reg_KN.Add("12", "Saint Thomas Lowland"); + cc_reg_KN.Add("13", "Saint Thomas Middle Island"); + cc_reg_KN.Add("15", "Trinity Palmetto Point"); + GEOIP_REGION_NAME.Add("KN", cc_reg_KN ); + Hashtable cc_reg_KP = new Hashtable(); + cc_reg_KP.Add("01", "Chagang-do"); + cc_reg_KP.Add("03", "Hamgyong-namdo"); + cc_reg_KP.Add("06", "Hwanghae-namdo"); + cc_reg_KP.Add("07", "Hwanghae-bukto"); + cc_reg_KP.Add("08", "Kaesong-si"); + cc_reg_KP.Add("09", "Kangwon-do"); + cc_reg_KP.Add("11", "P'yongan-bukto"); + cc_reg_KP.Add("12", "P'yongyang-si"); + cc_reg_KP.Add("13", "Yanggang-do"); + cc_reg_KP.Add("14", "Namp'o-si"); + cc_reg_KP.Add("15", "P'yongan-namdo"); + cc_reg_KP.Add("17", "Hamgyong-bukto"); + cc_reg_KP.Add("18", "Najin Sonbong-si"); + GEOIP_REGION_NAME.Add("KP", cc_reg_KP ); + Hashtable cc_reg_KR = new Hashtable(); + cc_reg_KR.Add("01", "Cheju-do"); + cc_reg_KR.Add("03", "Cholla-bukto"); + cc_reg_KR.Add("05", "Ch'ungch'ong-bukto"); + cc_reg_KR.Add("06", "Kangwon-do"); + cc_reg_KR.Add("10", "Pusan-jikhalsi"); + cc_reg_KR.Add("11", "Seoul-t'ukpyolsi"); + cc_reg_KR.Add("12", "Inch'on-jikhalsi"); + cc_reg_KR.Add("13", "Kyonggi-do"); + cc_reg_KR.Add("14", "Kyongsang-bukto"); + cc_reg_KR.Add("15", "Taegu-jikhalsi"); + cc_reg_KR.Add("16", "Cholla-namdo"); + cc_reg_KR.Add("17", "Ch'ungch'ong-namdo"); + cc_reg_KR.Add("18", "Kwangju-jikhalsi"); + cc_reg_KR.Add("19", "Taejon-jikhalsi"); + cc_reg_KR.Add("20", "Kyongsang-namdo"); + cc_reg_KR.Add("21", "Ulsan-gwangyoksi"); + GEOIP_REGION_NAME.Add("KR", cc_reg_KR ); + Hashtable cc_reg_KW = new Hashtable(); + cc_reg_KW.Add("01", "Al Ahmadi"); + cc_reg_KW.Add("02", "Al Kuwayt"); + cc_reg_KW.Add("05", "Al Jahra"); + cc_reg_KW.Add("07", "Al Farwaniyah"); + cc_reg_KW.Add("08", "Hawalli"); + cc_reg_KW.Add("09", "Mubarak al Kabir"); + GEOIP_REGION_NAME.Add("KW", cc_reg_KW ); + Hashtable cc_reg_KY = new Hashtable(); + cc_reg_KY.Add("01", "Creek"); + cc_reg_KY.Add("02", "Eastern"); + cc_reg_KY.Add("03", "Midland"); + cc_reg_KY.Add("04", "South Town"); + cc_reg_KY.Add("05", "Spot Bay"); + cc_reg_KY.Add("06", "Stake Bay"); + cc_reg_KY.Add("07", "West End"); + cc_reg_KY.Add("08", "Western"); + GEOIP_REGION_NAME.Add("KY", cc_reg_KY ); + Hashtable cc_reg_KZ = new Hashtable(); + cc_reg_KZ.Add("01", "Almaty"); + cc_reg_KZ.Add("02", "Almaty City"); + cc_reg_KZ.Add("03", "Aqmola"); + cc_reg_KZ.Add("04", "Aqtobe"); + cc_reg_KZ.Add("05", "Astana"); + cc_reg_KZ.Add("06", "Atyrau"); + cc_reg_KZ.Add("07", "West Kazakhstan"); + cc_reg_KZ.Add("08", "Bayqonyr"); + cc_reg_KZ.Add("09", "Mangghystau"); + cc_reg_KZ.Add("10", "South Kazakhstan"); + cc_reg_KZ.Add("11", "Pavlodar"); + cc_reg_KZ.Add("12", "Qaraghandy"); + cc_reg_KZ.Add("13", "Qostanay"); + cc_reg_KZ.Add("14", "Qyzylorda"); + cc_reg_KZ.Add("15", "East Kazakhstan"); + cc_reg_KZ.Add("16", "North Kazakhstan"); + cc_reg_KZ.Add("17", "Zhambyl"); + GEOIP_REGION_NAME.Add("KZ", cc_reg_KZ ); + Hashtable cc_reg_LA = new Hashtable(); + cc_reg_LA.Add("01", "Attapu"); + cc_reg_LA.Add("02", "Champasak"); + cc_reg_LA.Add("03", "Houaphan"); + cc_reg_LA.Add("04", "Khammouan"); + cc_reg_LA.Add("05", "Louang Namtha"); + cc_reg_LA.Add("07", "Oudomxai"); + cc_reg_LA.Add("08", "Phongsali"); + cc_reg_LA.Add("09", "Saravan"); + cc_reg_LA.Add("10", "Savannakhet"); + cc_reg_LA.Add("11", "Vientiane"); + cc_reg_LA.Add("13", "Xaignabouri"); + cc_reg_LA.Add("14", "Xiangkhoang"); + cc_reg_LA.Add("17", "Louangphrabang"); + GEOIP_REGION_NAME.Add("LA", cc_reg_LA ); + Hashtable cc_reg_LB = new Hashtable(); + cc_reg_LB.Add("01", "Beqaa"); + cc_reg_LB.Add("02", "Al Janub"); + cc_reg_LB.Add("03", "Liban-Nord"); + cc_reg_LB.Add("04", "Beyrouth"); + cc_reg_LB.Add("05", "Mont-Liban"); + cc_reg_LB.Add("06", "Liban-Sud"); + cc_reg_LB.Add("07", "Nabatiye"); + cc_reg_LB.Add("08", "Beqaa"); + cc_reg_LB.Add("09", "Liban-Nord"); + cc_reg_LB.Add("10", "Aakk,r"); + cc_reg_LB.Add("11", "Baalbek-Hermel"); + GEOIP_REGION_NAME.Add("LB", cc_reg_LB ); + Hashtable cc_reg_LC = new Hashtable(); + cc_reg_LC.Add("01", "Anse-la-Raye"); + cc_reg_LC.Add("02", "Dauphin"); + cc_reg_LC.Add("03", "Castries"); + cc_reg_LC.Add("04", "Choiseul"); + cc_reg_LC.Add("05", "Dennery"); + cc_reg_LC.Add("06", "Gros-Islet"); + cc_reg_LC.Add("07", "Laborie"); + cc_reg_LC.Add("08", "Micoud"); + cc_reg_LC.Add("09", "Soufriere"); + cc_reg_LC.Add("10", "Vieux-Fort"); + cc_reg_LC.Add("11", "Praslin"); + GEOIP_REGION_NAME.Add("LC", cc_reg_LC ); + Hashtable cc_reg_LI = new Hashtable(); + cc_reg_LI.Add("01", "Balzers"); + cc_reg_LI.Add("02", "Eschen"); + cc_reg_LI.Add("03", "Gamprin"); + cc_reg_LI.Add("04", "Mauren"); + cc_reg_LI.Add("05", "Planken"); + cc_reg_LI.Add("06", "Ruggell"); + cc_reg_LI.Add("07", "Schaan"); + cc_reg_LI.Add("08", "Schellenberg"); + cc_reg_LI.Add("09", "Triesen"); + cc_reg_LI.Add("10", "Triesenberg"); + cc_reg_LI.Add("11", "Vaduz"); + cc_reg_LI.Add("21", "Gbarpolu"); + cc_reg_LI.Add("22", "River Gee"); + GEOIP_REGION_NAME.Add("LI", cc_reg_LI ); + Hashtable cc_reg_LK = new Hashtable(); + cc_reg_LK.Add("29", "Central"); + cc_reg_LK.Add("30", "North Central"); + cc_reg_LK.Add("32", "North Western"); + cc_reg_LK.Add("33", "Sabaragamuwa"); + cc_reg_LK.Add("34", "Southern"); + cc_reg_LK.Add("35", "Uva"); + cc_reg_LK.Add("36", "Western"); + cc_reg_LK.Add("37", "Eastern"); + cc_reg_LK.Add("38", "Northern"); + GEOIP_REGION_NAME.Add("LK", cc_reg_LK ); + Hashtable cc_reg_LR = new Hashtable(); + cc_reg_LR.Add("01", "Bong"); + cc_reg_LR.Add("04", "Grand Cape Mount"); + cc_reg_LR.Add("05", "Lofa"); + cc_reg_LR.Add("06", "Maryland"); + cc_reg_LR.Add("07", "Monrovia"); + cc_reg_LR.Add("09", "Nimba"); + cc_reg_LR.Add("10", "Sino"); + cc_reg_LR.Add("11", "Grand Bassa"); + cc_reg_LR.Add("12", "Grand Cape Mount"); + cc_reg_LR.Add("13", "Maryland"); + cc_reg_LR.Add("14", "Montserrado"); + cc_reg_LR.Add("17", "Margibi"); + cc_reg_LR.Add("18", "River Cess"); + cc_reg_LR.Add("19", "Grand Gedeh"); + cc_reg_LR.Add("20", "Lofa"); + cc_reg_LR.Add("21", "Gbarpolu"); + cc_reg_LR.Add("22", "River Gee"); + GEOIP_REGION_NAME.Add("LR", cc_reg_LR ); + Hashtable cc_reg_LS = new Hashtable(); + cc_reg_LS.Add("10", "Berea"); + cc_reg_LS.Add("11", "Butha-Buthe"); + cc_reg_LS.Add("12", "Leribe"); + cc_reg_LS.Add("13", "Mafeteng"); + cc_reg_LS.Add("14", "Maseru"); + cc_reg_LS.Add("15", "Mohales Hoek"); + cc_reg_LS.Add("16", "Mokhotlong"); + cc_reg_LS.Add("17", "Qachas Nek"); + cc_reg_LS.Add("18", "Quthing"); + cc_reg_LS.Add("19", "Thaba-Tseka"); + GEOIP_REGION_NAME.Add("LS", cc_reg_LS ); + Hashtable cc_reg_LT = new Hashtable(); + cc_reg_LT.Add("56", "Alytaus Apskritis"); + cc_reg_LT.Add("57", "Kauno Apskritis"); + cc_reg_LT.Add("58", "Klaipedos Apskritis"); + cc_reg_LT.Add("59", "Marijampoles Apskritis"); + cc_reg_LT.Add("60", "Panevezio Apskritis"); + cc_reg_LT.Add("61", "Siauliu Apskritis"); + cc_reg_LT.Add("62", "Taurages Apskritis"); + cc_reg_LT.Add("63", "Telsiu Apskritis"); + cc_reg_LT.Add("64", "Utenos Apskritis"); + cc_reg_LT.Add("65", "Vilniaus Apskritis"); + GEOIP_REGION_NAME.Add("LT", cc_reg_LT ); + Hashtable cc_reg_LU = new Hashtable(); + cc_reg_LU.Add("01", "Diekirch"); + cc_reg_LU.Add("02", "Grevenmacher"); + cc_reg_LU.Add("03", "Luxembourg"); + GEOIP_REGION_NAME.Add("LU", cc_reg_LU ); + Hashtable cc_reg_LV = new Hashtable(); + cc_reg_LV.Add("01", "Aizkraukles"); + cc_reg_LV.Add("02", "Aluksnes"); + cc_reg_LV.Add("03", "Balvu"); + cc_reg_LV.Add("04", "Bauskas"); + cc_reg_LV.Add("05", "Cesu"); + cc_reg_LV.Add("06", "Daugavpils"); + cc_reg_LV.Add("07", "Daugavpils"); + cc_reg_LV.Add("08", "Dobeles"); + cc_reg_LV.Add("09", "Gulbenes"); + cc_reg_LV.Add("10", "Jekabpils"); + cc_reg_LV.Add("11", "Jelgava"); + cc_reg_LV.Add("12", "Jelgavas"); + cc_reg_LV.Add("13", "Jurmala"); + cc_reg_LV.Add("14", "Kraslavas"); + cc_reg_LV.Add("15", "Kuldigas"); + cc_reg_LV.Add("16", "Liepaja"); + cc_reg_LV.Add("17", "Liepajas"); + cc_reg_LV.Add("18", "Limbazu"); + cc_reg_LV.Add("19", "Ludzas"); + cc_reg_LV.Add("20", "Madonas"); + cc_reg_LV.Add("21", "Ogres"); + cc_reg_LV.Add("22", "Preilu"); + cc_reg_LV.Add("23", "Rezekne"); + cc_reg_LV.Add("24", "Rezeknes"); + cc_reg_LV.Add("25", "Riga"); + cc_reg_LV.Add("26", "Rigas"); + cc_reg_LV.Add("27", "Saldus"); + cc_reg_LV.Add("28", "Talsu"); + cc_reg_LV.Add("29", "Tukuma"); + cc_reg_LV.Add("30", "Valkas"); + cc_reg_LV.Add("31", "Valmieras"); + cc_reg_LV.Add("32", "Ventspils"); + cc_reg_LV.Add("33", "Ventspils"); + GEOIP_REGION_NAME.Add("LV", cc_reg_LV ); + Hashtable cc_reg_LY = new Hashtable(); + cc_reg_LY.Add("03", "Al Aziziyah"); + cc_reg_LY.Add("05", "Al Jufrah"); + cc_reg_LY.Add("08", "Al Kufrah"); + cc_reg_LY.Add("13", "Ash Shati'"); + cc_reg_LY.Add("30", "Murzuq"); + cc_reg_LY.Add("34", "Sabha"); + cc_reg_LY.Add("41", "Tarhunah"); + cc_reg_LY.Add("42", "Tubruq"); + cc_reg_LY.Add("45", "Zlitan"); + cc_reg_LY.Add("47", "Ajdabiya"); + cc_reg_LY.Add("48", "Al Fatih"); + cc_reg_LY.Add("49", "Al Jabal al Akhdar"); + cc_reg_LY.Add("50", "Al Khums"); + cc_reg_LY.Add("51", "An Nuqat al Khams"); + cc_reg_LY.Add("52", "Awbari"); + cc_reg_LY.Add("53", "Az Zawiyah"); + cc_reg_LY.Add("54", "Banghazi"); + cc_reg_LY.Add("55", "Darnah"); + cc_reg_LY.Add("56", "Ghadamis"); + cc_reg_LY.Add("57", "Gharyan"); + cc_reg_LY.Add("58", "Misratah"); + cc_reg_LY.Add("59", "Sawfajjin"); + cc_reg_LY.Add("60", "Surt"); + cc_reg_LY.Add("61", "Tarabulus"); + cc_reg_LY.Add("62", "Yafran"); + GEOIP_REGION_NAME.Add("LY", cc_reg_LY ); + Hashtable cc_reg_MA = new Hashtable(); + cc_reg_MA.Add("45", "Grand Casablanca"); + cc_reg_MA.Add("46", "Fes-Boulemane"); + cc_reg_MA.Add("47", "Marrakech-Tensift-Al Haouz"); + cc_reg_MA.Add("48", "Meknes-Tafilalet"); + cc_reg_MA.Add("49", "Rabat-Sale-Zemmour-Zaer"); + cc_reg_MA.Add("50", "Chaouia-Ouardigha"); + cc_reg_MA.Add("51", "Doukkala-Abda"); + cc_reg_MA.Add("52", "Gharb-Chrarda-Beni Hssen"); + cc_reg_MA.Add("53", "Guelmim-Es Smara"); + cc_reg_MA.Add("54", "Oriental"); + cc_reg_MA.Add("55", "Souss-Massa-Dr,a"); + cc_reg_MA.Add("56", "Tadla-Azilal"); + cc_reg_MA.Add("57", "Tanger-Tetouan"); + cc_reg_MA.Add("58", "Taza-Al Hoceima-Taounate"); + cc_reg_MA.Add("59", "La,youne-Boujdour-Sakia El Hamra"); + GEOIP_REGION_NAME.Add("MA", cc_reg_MA ); + Hashtable cc_reg_MC = new Hashtable(); + cc_reg_MC.Add("01", "La Condamine"); + cc_reg_MC.Add("02", "Monaco"); + cc_reg_MC.Add("03", "Monte-Carlo"); + GEOIP_REGION_NAME.Add("MC", cc_reg_MC ); + Hashtable cc_reg_MD = new Hashtable(); + cc_reg_MD.Add("51", "Gagauzia"); + cc_reg_MD.Add("57", "Chisinau"); + cc_reg_MD.Add("58", "Stinga Nistrului"); + cc_reg_MD.Add("59", "Anenii Noi"); + cc_reg_MD.Add("60", "Balti"); + cc_reg_MD.Add("61", "Basarabeasca"); + cc_reg_MD.Add("62", "Bender"); + cc_reg_MD.Add("63", "Briceni"); + cc_reg_MD.Add("64", "Cahul"); + cc_reg_MD.Add("65", "Cantemir"); + cc_reg_MD.Add("66", "Calarasi"); + cc_reg_MD.Add("67", "Causeni"); + cc_reg_MD.Add("68", "Cimislia"); + cc_reg_MD.Add("69", "Criuleni"); + cc_reg_MD.Add("70", "Donduseni"); + cc_reg_MD.Add("71", "Drochia"); + cc_reg_MD.Add("72", "Dubasari"); + cc_reg_MD.Add("73", "Edinet"); + cc_reg_MD.Add("74", "Falesti"); + cc_reg_MD.Add("75", "Floresti"); + cc_reg_MD.Add("76", "Glodeni"); + cc_reg_MD.Add("77", "Hincesti"); + cc_reg_MD.Add("78", "Ialoveni"); + cc_reg_MD.Add("79", "Leova"); + cc_reg_MD.Add("80", "Nisporeni"); + cc_reg_MD.Add("81", "Ocnita"); + cc_reg_MD.Add("82", "Orhei"); + cc_reg_MD.Add("83", "Rezina"); + cc_reg_MD.Add("84", "Riscani"); + cc_reg_MD.Add("85", "Singerei"); + cc_reg_MD.Add("86", "Soldanesti"); + cc_reg_MD.Add("87", "Soroca"); + cc_reg_MD.Add("88", "Stefan-Voda"); + cc_reg_MD.Add("89", "Straseni"); + cc_reg_MD.Add("90", "Taraclia"); + cc_reg_MD.Add("91", "Telenesti"); + cc_reg_MD.Add("92", "Ungheni"); + GEOIP_REGION_NAME.Add("MD", cc_reg_MD ); + Hashtable cc_reg_MG = new Hashtable(); + cc_reg_MG.Add("01", "Antsiranana"); + cc_reg_MG.Add("02", "Fianarantsoa"); + cc_reg_MG.Add("03", "Mahajanga"); + cc_reg_MG.Add("04", "Toamasina"); + cc_reg_MG.Add("05", "Antananarivo"); + cc_reg_MG.Add("06", "Toliara"); + GEOIP_REGION_NAME.Add("MG", cc_reg_MG ); + Hashtable cc_reg_MK = new Hashtable(); + cc_reg_MK.Add("01", "Aracinovo"); + cc_reg_MK.Add("02", "Bac"); + cc_reg_MK.Add("03", "Belcista"); + cc_reg_MK.Add("04", "Berovo"); + cc_reg_MK.Add("05", "Bistrica"); + cc_reg_MK.Add("06", "Bitola"); + cc_reg_MK.Add("07", "Blatec"); + cc_reg_MK.Add("08", "Bogdanci"); + cc_reg_MK.Add("09", "Bogomila"); + cc_reg_MK.Add("10", "Bogovinje"); + cc_reg_MK.Add("11", "Bosilovo"); + cc_reg_MK.Add("12", "Brvenica"); + cc_reg_MK.Add("13", "Cair"); + cc_reg_MK.Add("14", "Capari"); + cc_reg_MK.Add("15", "Caska"); + cc_reg_MK.Add("16", "Cegrane"); + cc_reg_MK.Add("17", "Centar"); + cc_reg_MK.Add("18", "Centar Zupa"); + cc_reg_MK.Add("19", "Cesinovo"); + cc_reg_MK.Add("20", "Cucer-Sandevo"); + cc_reg_MK.Add("21", "Debar"); + cc_reg_MK.Add("22", "Delcevo"); + cc_reg_MK.Add("23", "Delogozdi"); + cc_reg_MK.Add("24", "Demir Hisar"); + cc_reg_MK.Add("25", "Demir Kapija"); + cc_reg_MK.Add("26", "Dobrusevo"); + cc_reg_MK.Add("27", "Dolna Banjica"); + cc_reg_MK.Add("28", "Dolneni"); + cc_reg_MK.Add("29", "Dorce Petrov"); + cc_reg_MK.Add("30", "Drugovo"); + cc_reg_MK.Add("31", "Dzepciste"); + cc_reg_MK.Add("32", "Gazi Baba"); + cc_reg_MK.Add("33", "Gevgelija"); + cc_reg_MK.Add("34", "Gostivar"); + cc_reg_MK.Add("35", "Gradsko"); + cc_reg_MK.Add("36", "Ilinden"); + cc_reg_MK.Add("37", "Izvor"); + cc_reg_MK.Add("38", "Jegunovce"); + cc_reg_MK.Add("39", "Kamenjane"); + cc_reg_MK.Add("40", "Karbinci"); + cc_reg_MK.Add("41", "Karpos"); + cc_reg_MK.Add("42", "Kavadarci"); + cc_reg_MK.Add("43", "Kicevo"); + cc_reg_MK.Add("44", "Kisela Voda"); + cc_reg_MK.Add("45", "Klecevce"); + cc_reg_MK.Add("46", "Kocani"); + cc_reg_MK.Add("47", "Konce"); + cc_reg_MK.Add("48", "Kondovo"); + cc_reg_MK.Add("49", "Konopiste"); + cc_reg_MK.Add("50", "Kosel"); + cc_reg_MK.Add("51", "Kratovo"); + cc_reg_MK.Add("52", "Kriva Palanka"); + cc_reg_MK.Add("53", "Krivogastani"); + cc_reg_MK.Add("54", "Krusevo"); + cc_reg_MK.Add("55", "Kuklis"); + cc_reg_MK.Add("56", "Kukurecani"); + cc_reg_MK.Add("57", "Kumanovo"); + cc_reg_MK.Add("58", "Labunista"); + cc_reg_MK.Add("59", "Lipkovo"); + cc_reg_MK.Add("60", "Lozovo"); + cc_reg_MK.Add("61", "Lukovo"); + cc_reg_MK.Add("62", "Makedonska Kamenica"); + cc_reg_MK.Add("63", "Makedonski Brod"); + cc_reg_MK.Add("64", "Mavrovi Anovi"); + cc_reg_MK.Add("65", "Meseista"); + cc_reg_MK.Add("66", "Miravci"); + cc_reg_MK.Add("67", "Mogila"); + cc_reg_MK.Add("68", "Murtino"); + cc_reg_MK.Add("69", "Negotino"); + cc_reg_MK.Add("70", "Negotino-Polosko"); + cc_reg_MK.Add("71", "Novaci"); + cc_reg_MK.Add("72", "Novo Selo"); + cc_reg_MK.Add("73", "Oblesevo"); + cc_reg_MK.Add("74", "Ohrid"); + cc_reg_MK.Add("75", "Orasac"); + cc_reg_MK.Add("76", "Orizari"); + cc_reg_MK.Add("77", "Oslomej"); + cc_reg_MK.Add("78", "Pehcevo"); + cc_reg_MK.Add("79", "Petrovec"); + cc_reg_MK.Add("80", "Plasnica"); + cc_reg_MK.Add("81", "Podares"); + cc_reg_MK.Add("82", "Prilep"); + cc_reg_MK.Add("83", "Probistip"); + cc_reg_MK.Add("84", "Radovis"); + cc_reg_MK.Add("85", "Rankovce"); + cc_reg_MK.Add("86", "Resen"); + cc_reg_MK.Add("87", "Rosoman"); + cc_reg_MK.Add("88", "Rostusa"); + cc_reg_MK.Add("89", "Samokov"); + cc_reg_MK.Add("90", "Saraj"); + cc_reg_MK.Add("91", "Sipkovica"); + cc_reg_MK.Add("92", "Sopiste"); + cc_reg_MK.Add("93", "Sopotnica"); + cc_reg_MK.Add("94", "Srbinovo"); + cc_reg_MK.Add("95", "Staravina"); + cc_reg_MK.Add("96", "Star Dojran"); + cc_reg_MK.Add("97", "Staro Nagoricane"); + cc_reg_MK.Add("98", "Stip"); + cc_reg_MK.Add("99", "Struga"); + cc_reg_MK.Add("A1", "Strumica"); + cc_reg_MK.Add("A2", "Studenicani"); + cc_reg_MK.Add("A3", "Suto Orizari"); + cc_reg_MK.Add("A4", "Sveti Nikole"); + cc_reg_MK.Add("A5", "Tearce"); + cc_reg_MK.Add("A6", "Tetovo"); + cc_reg_MK.Add("A7", "Topolcani"); + cc_reg_MK.Add("A8", "Valandovo"); + cc_reg_MK.Add("A9", "Vasilevo"); + cc_reg_MK.Add("B1", "Veles"); + cc_reg_MK.Add("B2", "Velesta"); + cc_reg_MK.Add("B3", "Vevcani"); + cc_reg_MK.Add("B4", "Vinica"); + cc_reg_MK.Add("B5", "Vitoliste"); + cc_reg_MK.Add("B6", "Vranestica"); + cc_reg_MK.Add("B7", "Vrapciste"); + cc_reg_MK.Add("B8", "Vratnica"); + cc_reg_MK.Add("B9", "Vrutok"); + cc_reg_MK.Add("C1", "Zajas"); + cc_reg_MK.Add("C2", "Zelenikovo"); + cc_reg_MK.Add("C3", "Zelino"); + cc_reg_MK.Add("C4", "Zitose"); + cc_reg_MK.Add("C5", "Zletovo"); + cc_reg_MK.Add("C6", "Zrnovci"); + GEOIP_REGION_NAME.Add("MK", cc_reg_MK ); + Hashtable cc_reg_ML = new Hashtable(); + cc_reg_ML.Add("01", "Bamako"); + cc_reg_ML.Add("03", "Kayes"); + cc_reg_ML.Add("04", "Mopti"); + cc_reg_ML.Add("05", "Segou"); + cc_reg_ML.Add("06", "Sikasso"); + cc_reg_ML.Add("07", "Koulikoro"); + cc_reg_ML.Add("08", "Tombouctou"); + cc_reg_ML.Add("09", "Gao"); + cc_reg_ML.Add("10", "Kidal"); + GEOIP_REGION_NAME.Add("ML", cc_reg_ML ); + Hashtable cc_reg_MM = new Hashtable(); + cc_reg_MM.Add("01", "Rakhine State"); + cc_reg_MM.Add("02", "Chin State"); + cc_reg_MM.Add("03", "Irrawaddy"); + cc_reg_MM.Add("04", "Kachin State"); + cc_reg_MM.Add("05", "Karan State"); + cc_reg_MM.Add("06", "Kayah State"); + cc_reg_MM.Add("07", "Magwe"); + cc_reg_MM.Add("08", "Mandalay"); + cc_reg_MM.Add("09", "Pegu"); + cc_reg_MM.Add("10", "Sagaing"); + cc_reg_MM.Add("11", "Shan State"); + cc_reg_MM.Add("12", "Tenasserim"); + cc_reg_MM.Add("13", "Mon State"); + cc_reg_MM.Add("14", "Rangoon"); + cc_reg_MM.Add("17", "Yangon"); + GEOIP_REGION_NAME.Add("MM", cc_reg_MM ); + Hashtable cc_reg_MN = new Hashtable(); + cc_reg_MN.Add("01", "Arhangay"); + cc_reg_MN.Add("02", "Bayanhongor"); + cc_reg_MN.Add("03", "Bayan-Olgiy"); + cc_reg_MN.Add("05", "Darhan"); + cc_reg_MN.Add("06", "Dornod"); + cc_reg_MN.Add("07", "Dornogovi"); + cc_reg_MN.Add("08", "Dundgovi"); + cc_reg_MN.Add("09", "Dzavhan"); + cc_reg_MN.Add("10", "Govi-Altay"); + cc_reg_MN.Add("11", "Hentiy"); + cc_reg_MN.Add("12", "Hovd"); + cc_reg_MN.Add("13", "Hovsgol"); + cc_reg_MN.Add("14", "Omnogovi"); + cc_reg_MN.Add("15", "Ovorhangay"); + cc_reg_MN.Add("16", "Selenge"); + cc_reg_MN.Add("17", "Suhbaatar"); + cc_reg_MN.Add("18", "Tov"); + cc_reg_MN.Add("19", "Uvs"); + cc_reg_MN.Add("20", "Ulaanbaatar"); + cc_reg_MN.Add("21", "Bulgan"); + cc_reg_MN.Add("22", "Erdenet"); + cc_reg_MN.Add("23", "Darhan-Uul"); + cc_reg_MN.Add("24", "Govisumber"); + cc_reg_MN.Add("25", "Orhon"); + GEOIP_REGION_NAME.Add("MN", cc_reg_MN ); + Hashtable cc_reg_MO = new Hashtable(); + cc_reg_MO.Add("01", "Ilhas"); + cc_reg_MO.Add("02", "Macau"); + GEOIP_REGION_NAME.Add("MO", cc_reg_MO ); + Hashtable cc_reg_MR = new Hashtable(); + cc_reg_MR.Add("01", "Hodh Ech Chargui"); + cc_reg_MR.Add("02", "Hodh El Gharbi"); + cc_reg_MR.Add("03", "Assaba"); + cc_reg_MR.Add("04", "Gorgol"); + cc_reg_MR.Add("05", "Brakna"); + cc_reg_MR.Add("06", "Trarza"); + cc_reg_MR.Add("07", "Adrar"); + cc_reg_MR.Add("08", "Dakhlet Nouadhibou"); + cc_reg_MR.Add("09", "Tagant"); + cc_reg_MR.Add("10", "Guidimaka"); + cc_reg_MR.Add("11", "Tiris Zemmour"); + cc_reg_MR.Add("12", "Inchiri"); + GEOIP_REGION_NAME.Add("MR", cc_reg_MR ); + Hashtable cc_reg_MS = new Hashtable(); + cc_reg_MS.Add("01", "Saint Anthony"); + cc_reg_MS.Add("02", "Saint Georges"); + cc_reg_MS.Add("03", "Saint Peter"); + GEOIP_REGION_NAME.Add("MS", cc_reg_MS ); + Hashtable cc_reg_MU = new Hashtable(); + cc_reg_MU.Add("12", "Black River"); + cc_reg_MU.Add("13", "Flacq"); + cc_reg_MU.Add("14", "Grand Port"); + cc_reg_MU.Add("15", "Moka"); + cc_reg_MU.Add("16", "Pamplemousses"); + cc_reg_MU.Add("17", "Plaines Wilhems"); + cc_reg_MU.Add("18", "Port Louis"); + cc_reg_MU.Add("19", "Riviere du Rempart"); + cc_reg_MU.Add("20", "Savanne"); + cc_reg_MU.Add("21", "Agalega Islands"); + cc_reg_MU.Add("22", "Cargados Carajos"); + cc_reg_MU.Add("23", "Rodrigues"); + GEOIP_REGION_NAME.Add("MU", cc_reg_MU ); + Hashtable cc_reg_MV = new Hashtable(); + cc_reg_MV.Add("01", "Seenu"); + cc_reg_MV.Add("05", "Laamu"); + cc_reg_MV.Add("30", "Alifu"); + cc_reg_MV.Add("31", "Baa"); + cc_reg_MV.Add("32", "Dhaalu"); + cc_reg_MV.Add("33", "Faafu "); + cc_reg_MV.Add("34", "Gaafu Alifu"); + cc_reg_MV.Add("35", "Gaafu Dhaalu"); + cc_reg_MV.Add("36", "Haa Alifu"); + cc_reg_MV.Add("37", "Haa Dhaalu"); + cc_reg_MV.Add("38", "Kaafu"); + cc_reg_MV.Add("39", "Lhaviyani"); + cc_reg_MV.Add("40", "Maale"); + cc_reg_MV.Add("41", "Meemu"); + cc_reg_MV.Add("42", "Gnaviyani"); + cc_reg_MV.Add("43", "Noonu"); + cc_reg_MV.Add("44", "Raa"); + cc_reg_MV.Add("45", "Shaviyani"); + cc_reg_MV.Add("46", "Thaa"); + cc_reg_MV.Add("47", "Vaavu"); + GEOIP_REGION_NAME.Add("MV", cc_reg_MV ); + Hashtable cc_reg_MW = new Hashtable(); + cc_reg_MW.Add("02", "Chikwawa"); + cc_reg_MW.Add("03", "Chiradzulu"); + cc_reg_MW.Add("04", "Chitipa"); + cc_reg_MW.Add("05", "Thyolo"); + cc_reg_MW.Add("06", "Dedza"); + cc_reg_MW.Add("07", "Dowa"); + cc_reg_MW.Add("08", "Karonga"); + cc_reg_MW.Add("09", "Kasungu"); + cc_reg_MW.Add("11", "Lilongwe"); + cc_reg_MW.Add("12", "Mangochi"); + cc_reg_MW.Add("13", "Mchinji"); + cc_reg_MW.Add("15", "Mzimba"); + cc_reg_MW.Add("16", "Ntcheu"); + cc_reg_MW.Add("17", "Nkhata Bay"); + cc_reg_MW.Add("18", "Nkhotakota"); + cc_reg_MW.Add("19", "Nsanje"); + cc_reg_MW.Add("20", "Ntchisi"); + cc_reg_MW.Add("21", "Rumphi"); + cc_reg_MW.Add("22", "Salima"); + cc_reg_MW.Add("23", "Zomba"); + cc_reg_MW.Add("24", "Blantyre"); + cc_reg_MW.Add("25", "Mwanza"); + cc_reg_MW.Add("26", "Balaka"); + cc_reg_MW.Add("27", "Likoma"); + cc_reg_MW.Add("28", "Machinga"); + cc_reg_MW.Add("29", "Mulanje"); + cc_reg_MW.Add("30", "Phalombe"); + GEOIP_REGION_NAME.Add("MW", cc_reg_MW ); + Hashtable cc_reg_MX = new Hashtable(); + cc_reg_MX.Add("01", "Aguascalientes"); + cc_reg_MX.Add("02", "Baja California"); + cc_reg_MX.Add("03", "Baja California Sur"); + cc_reg_MX.Add("04", "Campeche"); + cc_reg_MX.Add("05", "Chiapas"); + cc_reg_MX.Add("06", "Chihuahua"); + cc_reg_MX.Add("07", "Coahuila de Zaragoza"); + cc_reg_MX.Add("08", "Colima"); + cc_reg_MX.Add("09", "Distrito Federal"); + cc_reg_MX.Add("10", "Durango"); + cc_reg_MX.Add("11", "Guanajuato"); + cc_reg_MX.Add("12", "Guerrero"); + cc_reg_MX.Add("13", "Hidalgo"); + cc_reg_MX.Add("14", "Jalisco"); + cc_reg_MX.Add("15", "Mexico"); + cc_reg_MX.Add("16", "Michoacan de Ocampo"); + cc_reg_MX.Add("17", "Morelos"); + cc_reg_MX.Add("18", "Nayarit"); + cc_reg_MX.Add("19", "Nuevo Leon"); + cc_reg_MX.Add("20", "Oaxaca"); + cc_reg_MX.Add("21", "Puebla"); + cc_reg_MX.Add("22", "Queretaro de Arteaga"); + cc_reg_MX.Add("23", "Quintana Roo"); + cc_reg_MX.Add("24", "San Luis Potosi"); + cc_reg_MX.Add("25", "Sinaloa"); + cc_reg_MX.Add("26", "Sonora"); + cc_reg_MX.Add("27", "Tabasco"); + cc_reg_MX.Add("28", "Tamaulipas"); + cc_reg_MX.Add("29", "Tlaxcala"); + cc_reg_MX.Add("30", "Veracruz-Llave"); + cc_reg_MX.Add("31", "Yucatan"); + cc_reg_MX.Add("32", "Zacatecas"); + GEOIP_REGION_NAME.Add("MX", cc_reg_MX ); + Hashtable cc_reg_MY = new Hashtable(); + cc_reg_MY.Add("01", "Johor"); + cc_reg_MY.Add("02", "Kedah"); + cc_reg_MY.Add("03", "Kelantan"); + cc_reg_MY.Add("04", "Melaka"); + cc_reg_MY.Add("05", "Negeri Sembilan"); + cc_reg_MY.Add("06", "Pahang"); + cc_reg_MY.Add("07", "Perak"); + cc_reg_MY.Add("08", "Perlis"); + cc_reg_MY.Add("09", "Pulau Pinang"); + cc_reg_MY.Add("11", "Sarawak"); + cc_reg_MY.Add("12", "Selangor"); + cc_reg_MY.Add("13", "Terengganu"); + cc_reg_MY.Add("14", "Kuala Lumpur"); + cc_reg_MY.Add("15", "Labuan"); + cc_reg_MY.Add("16", "Sabah"); + cc_reg_MY.Add("17", "Putrajaya"); + GEOIP_REGION_NAME.Add("MY", cc_reg_MY ); + Hashtable cc_reg_MZ = new Hashtable(); + cc_reg_MZ.Add("01", "Cabo Delgado"); + cc_reg_MZ.Add("02", "Gaza"); + cc_reg_MZ.Add("03", "Inhambane"); + cc_reg_MZ.Add("04", "Maputo"); + cc_reg_MZ.Add("05", "Sofala"); + cc_reg_MZ.Add("06", "Nampula"); + cc_reg_MZ.Add("07", "Niassa"); + cc_reg_MZ.Add("08", "Tete"); + cc_reg_MZ.Add("09", "Zambezia"); + cc_reg_MZ.Add("10", "Manica"); + cc_reg_MZ.Add("11", "Maputo"); + GEOIP_REGION_NAME.Add("MZ", cc_reg_MZ ); + Hashtable cc_reg_NA = new Hashtable(); + cc_reg_NA.Add("01", "Bethanien"); + cc_reg_NA.Add("02", "Caprivi Oos"); + cc_reg_NA.Add("03", "Boesmanland"); + cc_reg_NA.Add("04", "Gobabis"); + cc_reg_NA.Add("05", "Grootfontein"); + cc_reg_NA.Add("06", "Kaokoland"); + cc_reg_NA.Add("07", "Karibib"); + cc_reg_NA.Add("08", "Keetmanshoop"); + cc_reg_NA.Add("09", "Luderitz"); + cc_reg_NA.Add("10", "Maltahohe"); + cc_reg_NA.Add("11", "Okahandja"); + cc_reg_NA.Add("12", "Omaruru"); + cc_reg_NA.Add("13", "Otjiwarongo"); + cc_reg_NA.Add("14", "Outjo"); + cc_reg_NA.Add("15", "Owambo"); + cc_reg_NA.Add("16", "Rehoboth"); + cc_reg_NA.Add("17", "Swakopmund"); + cc_reg_NA.Add("18", "Tsumeb"); + cc_reg_NA.Add("20", "Karasburg"); + cc_reg_NA.Add("21", "Windhoek"); + cc_reg_NA.Add("22", "Damaraland"); + cc_reg_NA.Add("23", "Hereroland Oos"); + cc_reg_NA.Add("24", "Hereroland Wes"); + cc_reg_NA.Add("25", "Kavango"); + cc_reg_NA.Add("26", "Mariental"); + cc_reg_NA.Add("27", "Namaland"); + cc_reg_NA.Add("28", "Caprivi"); + cc_reg_NA.Add("29", "Erongo"); + cc_reg_NA.Add("30", "Hardap"); + cc_reg_NA.Add("31", "Karas"); + cc_reg_NA.Add("32", "Kunene"); + cc_reg_NA.Add("33", "Ohangwena"); + cc_reg_NA.Add("34", "Okavango"); + cc_reg_NA.Add("35", "Omaheke"); + cc_reg_NA.Add("36", "Omusati"); + cc_reg_NA.Add("37", "Oshana"); + cc_reg_NA.Add("38", "Oshikoto"); + cc_reg_NA.Add("39", "Otjozondjupa"); + GEOIP_REGION_NAME.Add("NA", cc_reg_NA ); + Hashtable cc_reg_NE = new Hashtable(); + cc_reg_NE.Add("01", "Agadez"); + cc_reg_NE.Add("02", "Diffa"); + cc_reg_NE.Add("03", "Dosso"); + cc_reg_NE.Add("04", "Maradi"); + cc_reg_NE.Add("05", "Niamey"); + cc_reg_NE.Add("06", "Tahoua"); + cc_reg_NE.Add("07", "Zinder"); + cc_reg_NE.Add("08", "Niamey"); + GEOIP_REGION_NAME.Add("NE", cc_reg_NE ); + Hashtable cc_reg_NG = new Hashtable(); + cc_reg_NG.Add("05", "Lagos"); + cc_reg_NG.Add("11", "Federal Capital Territory"); + cc_reg_NG.Add("16", "Ogun"); + cc_reg_NG.Add("21", "Akwa Ibom"); + cc_reg_NG.Add("22", "Cross River"); + cc_reg_NG.Add("23", "Kaduna"); + cc_reg_NG.Add("24", "Katsina"); + cc_reg_NG.Add("25", "Anambra"); + cc_reg_NG.Add("26", "Benue"); + cc_reg_NG.Add("27", "Borno"); + cc_reg_NG.Add("28", "Imo"); + cc_reg_NG.Add("29", "Kano"); + cc_reg_NG.Add("30", "Kwara"); + cc_reg_NG.Add("31", "Niger"); + cc_reg_NG.Add("32", "Oyo"); + cc_reg_NG.Add("35", "Adamawa"); + cc_reg_NG.Add("36", "Delta"); + cc_reg_NG.Add("37", "Edo"); + cc_reg_NG.Add("39", "Jigawa"); + cc_reg_NG.Add("40", "Kebbi"); + cc_reg_NG.Add("41", "Kogi"); + cc_reg_NG.Add("42", "Osun"); + cc_reg_NG.Add("43", "Taraba"); + cc_reg_NG.Add("44", "Yobe"); + cc_reg_NG.Add("45", "Abia"); + cc_reg_NG.Add("46", "Bauchi"); + cc_reg_NG.Add("47", "Enugu"); + cc_reg_NG.Add("48", "Ondo"); + cc_reg_NG.Add("49", "Plateau"); + cc_reg_NG.Add("50", "Rivers"); + cc_reg_NG.Add("51", "Sokoto"); + cc_reg_NG.Add("52", "Bayelsa"); + cc_reg_NG.Add("53", "Ebonyi"); + cc_reg_NG.Add("54", "Ekiti"); + cc_reg_NG.Add("55", "Gombe"); + cc_reg_NG.Add("56", "Nassarawa"); + cc_reg_NG.Add("57", "Zamfara"); + GEOIP_REGION_NAME.Add("NG", cc_reg_NG ); + Hashtable cc_reg_NI = new Hashtable(); + cc_reg_NI.Add("01", "Boaco"); + cc_reg_NI.Add("02", "Carazo"); + cc_reg_NI.Add("03", "Chinandega"); + cc_reg_NI.Add("04", "Chontales"); + cc_reg_NI.Add("05", "Esteli"); + cc_reg_NI.Add("06", "Granada"); + cc_reg_NI.Add("07", "Jinotega"); + cc_reg_NI.Add("08", "Leon"); + cc_reg_NI.Add("09", "Madriz"); + cc_reg_NI.Add("10", "Managua"); + cc_reg_NI.Add("11", "Masaya"); + cc_reg_NI.Add("12", "Matagalpa"); + cc_reg_NI.Add("13", "Nueva Segovia"); + cc_reg_NI.Add("14", "Rio San Juan"); + cc_reg_NI.Add("15", "Rivas"); + cc_reg_NI.Add("16", "Zelaya"); + cc_reg_NI.Add("17", "Autonoma Atlantico Norte"); + cc_reg_NI.Add("18", "Region Autonoma Atlantico Sur"); + GEOIP_REGION_NAME.Add("NI", cc_reg_NI ); + Hashtable cc_reg_NL = new Hashtable(); + cc_reg_NL.Add("01", "Drenthe"); + cc_reg_NL.Add("02", "Friesland"); + cc_reg_NL.Add("03", "Gelderland"); + cc_reg_NL.Add("04", "Groningen"); + cc_reg_NL.Add("05", "Limburg"); + cc_reg_NL.Add("06", "Noord-Brabant"); + cc_reg_NL.Add("07", "Noord-Holland"); + cc_reg_NL.Add("09", "Utrecht"); + cc_reg_NL.Add("10", "Zeeland"); + cc_reg_NL.Add("11", "Zuid-Holland"); + cc_reg_NL.Add("15", "Overijssel"); + cc_reg_NL.Add("16", "Flevoland"); + GEOIP_REGION_NAME.Add("NL", cc_reg_NL ); + Hashtable cc_reg_NO = new Hashtable(); + cc_reg_NO.Add("01", "Akershus"); + cc_reg_NO.Add("02", "Aust-Agder"); + cc_reg_NO.Add("04", "Buskerud"); + cc_reg_NO.Add("05", "Finnmark"); + cc_reg_NO.Add("06", "Hedmark"); + cc_reg_NO.Add("07", "Hordaland"); + cc_reg_NO.Add("08", "More og Romsdal"); + cc_reg_NO.Add("09", "Nordland"); + cc_reg_NO.Add("10", "Nord-Trondelag"); + cc_reg_NO.Add("11", "Oppland"); + cc_reg_NO.Add("12", "Oslo"); + cc_reg_NO.Add("13", "Ostfold"); + cc_reg_NO.Add("14", "Rogaland"); + cc_reg_NO.Add("15", "Sogn og Fjordane"); + cc_reg_NO.Add("16", "Sor-Trondelag"); + cc_reg_NO.Add("17", "Telemark"); + cc_reg_NO.Add("18", "Troms"); + cc_reg_NO.Add("19", "Vest-Agder"); + cc_reg_NO.Add("20", "Vestfold"); + GEOIP_REGION_NAME.Add("NO", cc_reg_NO ); + Hashtable cc_reg_NP = new Hashtable(); + cc_reg_NP.Add("01", "Bagmati"); + cc_reg_NP.Add("02", "Bheri"); + cc_reg_NP.Add("03", "Dhawalagiri"); + cc_reg_NP.Add("04", "Gandaki"); + cc_reg_NP.Add("05", "Janakpur"); + cc_reg_NP.Add("06", "Karnali"); + cc_reg_NP.Add("07", "Kosi"); + cc_reg_NP.Add("08", "Lumbini"); + cc_reg_NP.Add("09", "Mahakali"); + cc_reg_NP.Add("10", "Mechi"); + cc_reg_NP.Add("11", "Narayani"); + cc_reg_NP.Add("12", "Rapti"); + cc_reg_NP.Add("13", "Sagarmatha"); + cc_reg_NP.Add("14", "Seti"); + GEOIP_REGION_NAME.Add("NP", cc_reg_NP ); + Hashtable cc_reg_NR = new Hashtable(); + cc_reg_NR.Add("01", "Aiwo"); + cc_reg_NR.Add("02", "Anabar"); + cc_reg_NR.Add("03", "Anetan"); + cc_reg_NR.Add("04", "Anibare"); + cc_reg_NR.Add("05", "Baiti"); + cc_reg_NR.Add("06", "Boe"); + cc_reg_NR.Add("07", "Buada"); + cc_reg_NR.Add("08", "Denigomodu"); + cc_reg_NR.Add("09", "Ewa"); + cc_reg_NR.Add("10", "Ijuw"); + cc_reg_NR.Add("11", "Meneng"); + cc_reg_NR.Add("12", "Nibok"); + cc_reg_NR.Add("13", "Uaboe"); + cc_reg_NR.Add("14", "Yaren"); + GEOIP_REGION_NAME.Add("NR", cc_reg_NR ); + Hashtable cc_reg_NZ = new Hashtable(); + cc_reg_NZ.Add("10", "Chatham Islands"); + cc_reg_NZ.Add("E7", "Auckland"); + cc_reg_NZ.Add("E8", "Bay of Plenty"); + cc_reg_NZ.Add("E9", "Canterbury"); + cc_reg_NZ.Add("F1", "Gisborne"); + cc_reg_NZ.Add("F2", "Hawke's Bay"); + cc_reg_NZ.Add("F3", "Manawatu-Wanganui"); + cc_reg_NZ.Add("F4", "Marlborough"); + cc_reg_NZ.Add("F5", "Nelson"); + cc_reg_NZ.Add("F6", "Northland"); + cc_reg_NZ.Add("F7", "Otago"); + cc_reg_NZ.Add("F8", "Southland"); + cc_reg_NZ.Add("F9", "Taranaki"); + cc_reg_NZ.Add("G1", "Waikato"); + cc_reg_NZ.Add("G2", "Wellington"); + cc_reg_NZ.Add("G3", "West Coast"); + GEOIP_REGION_NAME.Add("NZ", cc_reg_NZ ); + Hashtable cc_reg_OM = new Hashtable(); + cc_reg_OM.Add("01", "Ad Dakhiliyah"); + cc_reg_OM.Add("02", "Al Batinah"); + cc_reg_OM.Add("03", "Al Wusta"); + cc_reg_OM.Add("04", "Ash Sharqiyah"); + cc_reg_OM.Add("05", "Az Zahirah"); + cc_reg_OM.Add("06", "Masqat"); + cc_reg_OM.Add("07", "Musandam"); + cc_reg_OM.Add("08", "Zufar"); + GEOIP_REGION_NAME.Add("OM", cc_reg_OM ); + Hashtable cc_reg_PA = new Hashtable(); + cc_reg_PA.Add("01", "Bocas del Toro"); + cc_reg_PA.Add("02", "Chiriqui"); + cc_reg_PA.Add("03", "Cocle"); + cc_reg_PA.Add("04", "Colon"); + cc_reg_PA.Add("05", "Darien"); + cc_reg_PA.Add("06", "Herrera"); + cc_reg_PA.Add("07", "Los Santos"); + cc_reg_PA.Add("08", "Panama"); + cc_reg_PA.Add("09", "San Blas"); + cc_reg_PA.Add("10", "Veraguas"); + GEOIP_REGION_NAME.Add("PA", cc_reg_PA ); + Hashtable cc_reg_PE = new Hashtable(); + cc_reg_PE.Add("01", "Amazonas"); + cc_reg_PE.Add("02", "Ancash"); + cc_reg_PE.Add("03", "Apurimac"); + cc_reg_PE.Add("04", "Arequipa"); + cc_reg_PE.Add("05", "Ayacucho"); + cc_reg_PE.Add("06", "Cajamarca"); + cc_reg_PE.Add("07", "Callao"); + cc_reg_PE.Add("08", "Cusco"); + cc_reg_PE.Add("09", "Huancavelica"); + cc_reg_PE.Add("10", "Huanuco"); + cc_reg_PE.Add("11", "Ica"); + cc_reg_PE.Add("12", "Junin"); + cc_reg_PE.Add("13", "La Libertad"); + cc_reg_PE.Add("14", "Lambayeque"); + cc_reg_PE.Add("15", "Lima"); + cc_reg_PE.Add("16", "Loreto"); + cc_reg_PE.Add("17", "Madre de Dios"); + cc_reg_PE.Add("18", "Moquegua"); + cc_reg_PE.Add("19", "Pasco"); + cc_reg_PE.Add("20", "Piura"); + cc_reg_PE.Add("21", "Puno"); + cc_reg_PE.Add("22", "San Martin"); + cc_reg_PE.Add("23", "Tacna"); + cc_reg_PE.Add("24", "Tumbes"); + cc_reg_PE.Add("25", "Ucayali"); + GEOIP_REGION_NAME.Add("PE", cc_reg_PE ); + Hashtable cc_reg_PG = new Hashtable(); + cc_reg_PG.Add("01", "Central"); + cc_reg_PG.Add("02", "Gulf"); + cc_reg_PG.Add("03", "Milne Bay"); + cc_reg_PG.Add("04", "Northern"); + cc_reg_PG.Add("05", "Southern Highlands"); + cc_reg_PG.Add("06", "Western"); + cc_reg_PG.Add("07", "North Solomons"); + cc_reg_PG.Add("08", "Chimbu"); + cc_reg_PG.Add("09", "Eastern Highlands"); + cc_reg_PG.Add("10", "East New Britain"); + cc_reg_PG.Add("11", "East Sepik"); + cc_reg_PG.Add("12", "Madang"); + cc_reg_PG.Add("13", "Manus"); + cc_reg_PG.Add("14", "Morobe"); + cc_reg_PG.Add("15", "New Ireland"); + cc_reg_PG.Add("16", "Western Highlands"); + cc_reg_PG.Add("17", "West New Britain"); + cc_reg_PG.Add("18", "Sandaun"); + cc_reg_PG.Add("19", "Enga"); + cc_reg_PG.Add("20", "National Capital"); + GEOIP_REGION_NAME.Add("PG", cc_reg_PG ); + Hashtable cc_reg_PH = new Hashtable(); + cc_reg_PH.Add("01", "Abra"); + cc_reg_PH.Add("02", "Agusan del Norte"); + cc_reg_PH.Add("03", "Agusan del Sur"); + cc_reg_PH.Add("04", "Aklan"); + cc_reg_PH.Add("05", "Albay"); + cc_reg_PH.Add("06", "Antique"); + cc_reg_PH.Add("07", "Bataan"); + cc_reg_PH.Add("08", "Batanes"); + cc_reg_PH.Add("09", "Batangas"); + cc_reg_PH.Add("10", "Benguet"); + cc_reg_PH.Add("11", "Bohol"); + cc_reg_PH.Add("12", "Bukidnon"); + cc_reg_PH.Add("13", "Bulacan"); + cc_reg_PH.Add("14", "Cagayan"); + cc_reg_PH.Add("15", "Camarines Norte"); + cc_reg_PH.Add("16", "Camarines Sur"); + cc_reg_PH.Add("17", "Camiguin"); + cc_reg_PH.Add("18", "Capiz"); + cc_reg_PH.Add("19", "Catanduanes"); + cc_reg_PH.Add("20", "Cavite"); + cc_reg_PH.Add("21", "Cebu"); + cc_reg_PH.Add("22", "Basilan"); + cc_reg_PH.Add("23", "Eastern Samar"); + cc_reg_PH.Add("24", "Davao"); + cc_reg_PH.Add("25", "Davao del Sur"); + cc_reg_PH.Add("26", "Davao Oriental"); + cc_reg_PH.Add("27", "Ifugao"); + cc_reg_PH.Add("28", "Ilocos Norte"); + cc_reg_PH.Add("29", "Ilocos Sur"); + cc_reg_PH.Add("30", "Iloilo"); + cc_reg_PH.Add("31", "Isabela"); + cc_reg_PH.Add("32", "Kalinga-Apayao"); + cc_reg_PH.Add("33", "Laguna"); + cc_reg_PH.Add("34", "Lanao del Norte"); + cc_reg_PH.Add("35", "Lanao del Sur"); + cc_reg_PH.Add("36", "La Union"); + cc_reg_PH.Add("37", "Leyte"); + cc_reg_PH.Add("38", "Marinduque"); + cc_reg_PH.Add("39", "Masbate"); + cc_reg_PH.Add("40", "Mindoro Occidental"); + cc_reg_PH.Add("41", "Mindoro Oriental"); + cc_reg_PH.Add("42", "Misamis Occidental"); + cc_reg_PH.Add("43", "Misamis Oriental"); + cc_reg_PH.Add("44", "Mountain"); + cc_reg_PH.Add("45", "Negros Occidental"); + cc_reg_PH.Add("46", "Negros Oriental"); + cc_reg_PH.Add("47", "Nueva Ecija"); + cc_reg_PH.Add("48", "Nueva Vizcaya"); + cc_reg_PH.Add("49", "Palawan"); + cc_reg_PH.Add("50", "Pampanga"); + cc_reg_PH.Add("51", "Pangasinan"); + cc_reg_PH.Add("53", "Rizal"); + cc_reg_PH.Add("54", "Romblon"); + cc_reg_PH.Add("55", "Samar"); + cc_reg_PH.Add("56", "Maguindanao"); + cc_reg_PH.Add("57", "North Cotabato"); + cc_reg_PH.Add("58", "Sorsogon"); + cc_reg_PH.Add("59", "Southern Leyte"); + cc_reg_PH.Add("60", "Sulu"); + cc_reg_PH.Add("61", "Surigao del Norte"); + cc_reg_PH.Add("62", "Surigao del Sur"); + cc_reg_PH.Add("63", "Tarlac"); + cc_reg_PH.Add("64", "Zambales"); + cc_reg_PH.Add("65", "Zamboanga del Norte"); + cc_reg_PH.Add("66", "Zamboanga del Sur"); + cc_reg_PH.Add("67", "Northern Samar"); + cc_reg_PH.Add("68", "Quirino"); + cc_reg_PH.Add("69", "Siquijor"); + cc_reg_PH.Add("70", "South Cotabato"); + cc_reg_PH.Add("71", "Sultan Kudarat"); + cc_reg_PH.Add("72", "Tawitawi"); + cc_reg_PH.Add("A1", "Angeles"); + cc_reg_PH.Add("A2", "Bacolod"); + cc_reg_PH.Add("A3", "Bago"); + cc_reg_PH.Add("A4", "Baguio"); + cc_reg_PH.Add("A5", "Bais"); + cc_reg_PH.Add("A6", "Basilan City"); + cc_reg_PH.Add("A7", "Batangas City"); + cc_reg_PH.Add("A8", "Butuan"); + cc_reg_PH.Add("A9", "Cabanatuan"); + cc_reg_PH.Add("B1", "Cadiz"); + cc_reg_PH.Add("B2", "Cagayan de Oro"); + cc_reg_PH.Add("B3", "Calbayog"); + cc_reg_PH.Add("B4", "Caloocan"); + cc_reg_PH.Add("B5", "Canlaon"); + cc_reg_PH.Add("B6", "Cavite City"); + cc_reg_PH.Add("B7", "Cebu City"); + cc_reg_PH.Add("B8", "Cotabato"); + cc_reg_PH.Add("B9", "Dagupan"); + cc_reg_PH.Add("C1", "Danao"); + cc_reg_PH.Add("C2", "Dapitan"); + cc_reg_PH.Add("C3", "Davao City"); + cc_reg_PH.Add("C4", "Dipolog"); + cc_reg_PH.Add("C5", "Dumaguete"); + cc_reg_PH.Add("C6", "General Santos"); + cc_reg_PH.Add("C7", "Gingoog"); + cc_reg_PH.Add("C8", "Iligan"); + cc_reg_PH.Add("C9", "Iloilo City"); + cc_reg_PH.Add("D1", "Iriga"); + cc_reg_PH.Add("D2", "La Carlota"); + cc_reg_PH.Add("D3", "Laoag"); + cc_reg_PH.Add("D4", "Lapu-Lapu"); + cc_reg_PH.Add("D5", "Legaspi"); + cc_reg_PH.Add("D6", "Lipa"); + cc_reg_PH.Add("D7", "Lucena"); + cc_reg_PH.Add("D8", "Mandaue"); + cc_reg_PH.Add("D9", "Manila"); + cc_reg_PH.Add("E1", "Marawi"); + cc_reg_PH.Add("E2", "Naga"); + cc_reg_PH.Add("E3", "Olongapo"); + cc_reg_PH.Add("E4", "Ormoc"); + cc_reg_PH.Add("E5", "Oroquieta"); + cc_reg_PH.Add("E6", "Ozamis"); + cc_reg_PH.Add("E7", "Pagadian"); + cc_reg_PH.Add("E8", "Palayan"); + cc_reg_PH.Add("E9", "Pasay"); + cc_reg_PH.Add("F1", "Puerto Princesa"); + cc_reg_PH.Add("F2", "Quezon City"); + cc_reg_PH.Add("F3", "Roxas"); + cc_reg_PH.Add("F4", "San Carlos"); + cc_reg_PH.Add("F5", "San Carlos"); + cc_reg_PH.Add("F6", "San Jose"); + cc_reg_PH.Add("F7", "San Pablo"); + cc_reg_PH.Add("F8", "Silay"); + cc_reg_PH.Add("F9", "Surigao"); + cc_reg_PH.Add("G1", "Tacloban"); + cc_reg_PH.Add("G2", "Tagaytay"); + cc_reg_PH.Add("G3", "Tagbilaran"); + cc_reg_PH.Add("G4", "Tangub"); + cc_reg_PH.Add("G5", "Toledo"); + cc_reg_PH.Add("G6", "Trece Martires"); + cc_reg_PH.Add("G7", "Zamboanga"); + cc_reg_PH.Add("G8", "Aurora"); + cc_reg_PH.Add("H2", "Quezon"); + cc_reg_PH.Add("H3", "Negros Occidental"); + cc_reg_PH.Add("I6", "Compostela Valley"); + cc_reg_PH.Add("I7", "Davao del Norte"); + cc_reg_PH.Add("J7", "Kalinga"); + cc_reg_PH.Add("K6", "Malaybalay"); + cc_reg_PH.Add("M5", "San Jose del Monte"); + cc_reg_PH.Add("M6", "San Juan"); + cc_reg_PH.Add("M8", "Santiago"); + cc_reg_PH.Add("M9", "Sarangani"); + cc_reg_PH.Add("N1", "Sipalay"); + cc_reg_PH.Add("N3", "Surigao del Norte"); + cc_reg_PH.Add("P1", "Zambales"); + cc_reg_PH.Add("P2", "Zamboanga"); + GEOIP_REGION_NAME.Add("PH", cc_reg_PH ); + Hashtable cc_reg_PK = new Hashtable(); + cc_reg_PK.Add("01", "Federally Administered Tribal Areas"); + cc_reg_PK.Add("02", "Balochistan"); + cc_reg_PK.Add("03", "North-West Frontier"); + cc_reg_PK.Add("04", "Punjab"); + cc_reg_PK.Add("05", "Sindh"); + cc_reg_PK.Add("06", "Azad Kashmir"); + cc_reg_PK.Add("07", "Northern Areas"); + cc_reg_PK.Add("08", "Islamabad"); + GEOIP_REGION_NAME.Add("PK", cc_reg_PK ); + Hashtable cc_reg_PL = new Hashtable(); + cc_reg_PL.Add("72", "Dolnoslaskie"); + cc_reg_PL.Add("73", "Kujawsko-Pomorskie"); + cc_reg_PL.Add("74", "Lodzkie"); + cc_reg_PL.Add("75", "Lubelskie"); + cc_reg_PL.Add("76", "Lubuskie"); + cc_reg_PL.Add("77", "Malopolskie"); + cc_reg_PL.Add("78", "Mazowieckie"); + cc_reg_PL.Add("79", "Opolskie"); + cc_reg_PL.Add("80", "Podkarpackie"); + cc_reg_PL.Add("81", "Podlaskie"); + cc_reg_PL.Add("82", "Pomorskie"); + cc_reg_PL.Add("83", "Slaskie"); + cc_reg_PL.Add("84", "Swietokrzyskie"); + cc_reg_PL.Add("85", "Warminsko-Mazurskie"); + cc_reg_PL.Add("86", "Wielkopolskie"); + cc_reg_PL.Add("87", "Zachodniopomorskie"); + GEOIP_REGION_NAME.Add("PL", cc_reg_PL ); + Hashtable cc_reg_PS = new Hashtable(); + cc_reg_PS.Add("GZ", "Gaza"); + cc_reg_PS.Add("WE", "West Bank"); + GEOIP_REGION_NAME.Add("PS", cc_reg_PS ); + Hashtable cc_reg_PT = new Hashtable(); + cc_reg_PT.Add("02", "Aveiro"); + cc_reg_PT.Add("03", "Beja"); + cc_reg_PT.Add("04", "Braga"); + cc_reg_PT.Add("05", "Braganca"); + cc_reg_PT.Add("06", "Castelo Branco"); + cc_reg_PT.Add("07", "Coimbra"); + cc_reg_PT.Add("08", "Evora"); + cc_reg_PT.Add("09", "Faro"); + cc_reg_PT.Add("10", "Madeira"); + cc_reg_PT.Add("11", "Guarda"); + cc_reg_PT.Add("13", "Leiria"); + cc_reg_PT.Add("14", "Lisboa"); + cc_reg_PT.Add("16", "Portalegre"); + cc_reg_PT.Add("17", "Porto"); + cc_reg_PT.Add("18", "Santarem"); + cc_reg_PT.Add("19", "Setubal"); + cc_reg_PT.Add("20", "Viana do Castelo"); + cc_reg_PT.Add("21", "Vila Real"); + cc_reg_PT.Add("22", "Viseu"); + cc_reg_PT.Add("23", "Azores"); + GEOIP_REGION_NAME.Add("PT", cc_reg_PT ); + Hashtable cc_reg_PY = new Hashtable(); + cc_reg_PY.Add("01", "Alto Parana"); + cc_reg_PY.Add("02", "Amambay"); + cc_reg_PY.Add("03", "Boqueron"); + cc_reg_PY.Add("04", "Caaguazu"); + cc_reg_PY.Add("05", "Caazapa"); + cc_reg_PY.Add("06", "Central"); + cc_reg_PY.Add("07", "Concepcion"); + cc_reg_PY.Add("08", "Cordillera"); + cc_reg_PY.Add("10", "Guaira"); + cc_reg_PY.Add("11", "Itapua"); + cc_reg_PY.Add("12", "Misiones"); + cc_reg_PY.Add("13", "Neembucu"); + cc_reg_PY.Add("15", "Paraguari"); + cc_reg_PY.Add("16", "Presidente Hayes"); + cc_reg_PY.Add("17", "San Pedro"); + cc_reg_PY.Add("19", "Canindeyu"); + cc_reg_PY.Add("20", "Chaco"); + cc_reg_PY.Add("21", "Nueva Asuncion"); + cc_reg_PY.Add("23", "Alto Paraguay"); + GEOIP_REGION_NAME.Add("PY", cc_reg_PY ); + Hashtable cc_reg_QA = new Hashtable(); + cc_reg_QA.Add("01", "Ad Dawhah"); + cc_reg_QA.Add("02", "Al Ghuwariyah"); + cc_reg_QA.Add("03", "Al Jumaliyah"); + cc_reg_QA.Add("04", "Al Khawr"); + cc_reg_QA.Add("05", "Al Wakrah Municipality"); + cc_reg_QA.Add("06", "Ar Rayyan"); + cc_reg_QA.Add("08", "Madinat ach Shamal"); + cc_reg_QA.Add("09", "Umm Salal"); + cc_reg_QA.Add("10", "Al Wakrah"); + cc_reg_QA.Add("11", "Jariyan al Batnah"); + cc_reg_QA.Add("12", "Umm Sa'id"); + GEOIP_REGION_NAME.Add("QA", cc_reg_QA ); + Hashtable cc_reg_RO = new Hashtable(); + cc_reg_RO.Add("01", "Alba"); + cc_reg_RO.Add("02", "Arad"); + cc_reg_RO.Add("03", "Arges"); + cc_reg_RO.Add("04", "Bacau"); + cc_reg_RO.Add("05", "Bihor"); + cc_reg_RO.Add("06", "Bistrita-Nasaud"); + cc_reg_RO.Add("07", "Botosani"); + cc_reg_RO.Add("08", "Braila"); + cc_reg_RO.Add("09", "Brasov"); + cc_reg_RO.Add("10", "Bucuresti"); + cc_reg_RO.Add("11", "Buzau"); + cc_reg_RO.Add("12", "Caras-Severin"); + cc_reg_RO.Add("13", "Cluj"); + cc_reg_RO.Add("14", "Constanta"); + cc_reg_RO.Add("15", "Covasna"); + cc_reg_RO.Add("16", "Dambovita"); + cc_reg_RO.Add("17", "Dolj"); + cc_reg_RO.Add("18", "Galati"); + cc_reg_RO.Add("19", "Gorj"); + cc_reg_RO.Add("20", "Harghita"); + cc_reg_RO.Add("21", "Hunedoara"); + cc_reg_RO.Add("22", "Ialomita"); + cc_reg_RO.Add("23", "Iasi"); + cc_reg_RO.Add("25", "Maramures"); + cc_reg_RO.Add("26", "Mehedinti"); + cc_reg_RO.Add("27", "Mures"); + cc_reg_RO.Add("28", "Neamt"); + cc_reg_RO.Add("29", "Olt"); + cc_reg_RO.Add("30", "Prahova"); + cc_reg_RO.Add("31", "Salaj"); + cc_reg_RO.Add("32", "Satu Mare"); + cc_reg_RO.Add("33", "Sibiu"); + cc_reg_RO.Add("34", "Suceava"); + cc_reg_RO.Add("35", "Teleorman"); + cc_reg_RO.Add("36", "Timis"); + cc_reg_RO.Add("37", "Tulcea"); + cc_reg_RO.Add("38", "Vaslui"); + cc_reg_RO.Add("39", "Valcea"); + cc_reg_RO.Add("40", "Vrancea"); + cc_reg_RO.Add("41", "Calarasi"); + cc_reg_RO.Add("42", "Giurgiu"); + cc_reg_RO.Add("43", "Ilfov"); + GEOIP_REGION_NAME.Add("RO", cc_reg_RO ); + Hashtable cc_reg_RS = new Hashtable(); + cc_reg_RS.Add("01", "Kosovo"); + cc_reg_RS.Add("02", "Vojvodina"); + GEOIP_REGION_NAME.Add("RS", cc_reg_RS ); + Hashtable cc_reg_RU = new Hashtable(); + cc_reg_RU.Add("01", "Adygeya, Republic of"); + cc_reg_RU.Add("02", "Aginsky Buryatsky AO"); + cc_reg_RU.Add("03", "Gorno-Altay"); + cc_reg_RU.Add("04", "Altaisky krai"); + cc_reg_RU.Add("05", "Amur"); + cc_reg_RU.Add("06", "Arkhangel'sk"); + cc_reg_RU.Add("07", "Astrakhan'"); + cc_reg_RU.Add("08", "Bashkortostan"); + cc_reg_RU.Add("09", "Belgorod"); + cc_reg_RU.Add("10", "Bryansk"); + cc_reg_RU.Add("11", "Buryat"); + cc_reg_RU.Add("12", "Chechnya"); + cc_reg_RU.Add("13", "Chelyabinsk"); + cc_reg_RU.Add("14", "Chita"); + cc_reg_RU.Add("15", "Chukot"); + cc_reg_RU.Add("16", "Chuvashia"); + cc_reg_RU.Add("17", "Dagestan"); + cc_reg_RU.Add("18", "Evenk"); + cc_reg_RU.Add("19", "Ingush"); + cc_reg_RU.Add("20", "Irkutsk"); + cc_reg_RU.Add("21", "Ivanovo"); + cc_reg_RU.Add("22", "Kabardin-Balkar"); + cc_reg_RU.Add("23", "Kaliningrad"); + cc_reg_RU.Add("24", "Kalmyk"); + cc_reg_RU.Add("25", "Kaluga"); + cc_reg_RU.Add("26", "Kamchatka"); + cc_reg_RU.Add("27", "Karachay-Cherkess"); + cc_reg_RU.Add("28", "Karelia"); + cc_reg_RU.Add("29", "Kemerovo"); + cc_reg_RU.Add("30", "Khabarovsk"); + cc_reg_RU.Add("31", "Khakass"); + cc_reg_RU.Add("32", "Khanty-Mansiy"); + cc_reg_RU.Add("33", "Kirov"); + cc_reg_RU.Add("34", "Komi"); + cc_reg_RU.Add("35", "Komi-Permyak"); + cc_reg_RU.Add("36", "Koryak"); + cc_reg_RU.Add("37", "Kostroma"); + cc_reg_RU.Add("38", "Krasnodar"); + cc_reg_RU.Add("39", "Krasnoyarsk"); + cc_reg_RU.Add("40", "Kurgan"); + cc_reg_RU.Add("41", "Kursk"); + cc_reg_RU.Add("42", "Leningrad"); + cc_reg_RU.Add("43", "Lipetsk"); + cc_reg_RU.Add("44", "Magadan"); + cc_reg_RU.Add("45", "Mariy-El"); + cc_reg_RU.Add("46", "Mordovia"); + cc_reg_RU.Add("47", "Moskva"); + cc_reg_RU.Add("48", "Moscow City"); + cc_reg_RU.Add("49", "Murmansk"); + cc_reg_RU.Add("50", "Nenets"); + cc_reg_RU.Add("51", "Nizhegorod"); + cc_reg_RU.Add("52", "Novgorod"); + cc_reg_RU.Add("53", "Novosibirsk"); + cc_reg_RU.Add("54", "Omsk"); + cc_reg_RU.Add("55", "Orenburg"); + cc_reg_RU.Add("56", "Orel"); + cc_reg_RU.Add("57", "Penza"); + cc_reg_RU.Add("58", "Perm'"); + cc_reg_RU.Add("59", "Primor'ye"); + cc_reg_RU.Add("60", "Pskov"); + cc_reg_RU.Add("61", "Rostov"); + cc_reg_RU.Add("62", "Ryazan'"); + cc_reg_RU.Add("63", "Sakha"); + cc_reg_RU.Add("64", "Sakhalin"); + cc_reg_RU.Add("65", "Samara"); + cc_reg_RU.Add("66", "Saint Petersburg City"); + cc_reg_RU.Add("67", "Saratov"); + cc_reg_RU.Add("68", "North Ossetia"); + cc_reg_RU.Add("69", "Smolensk"); + cc_reg_RU.Add("70", "Stavropol'"); + cc_reg_RU.Add("71", "Sverdlovsk"); + cc_reg_RU.Add("72", "Tambovskaya oblast"); + cc_reg_RU.Add("73", "Tatarstan"); + cc_reg_RU.Add("74", "Taymyr"); + cc_reg_RU.Add("75", "Tomsk"); + cc_reg_RU.Add("76", "Tula"); + cc_reg_RU.Add("77", "Tver'"); + cc_reg_RU.Add("78", "Tyumen'"); + cc_reg_RU.Add("79", "Tuva"); + cc_reg_RU.Add("80", "Udmurt"); + cc_reg_RU.Add("81", "Ul'yanovsk"); + cc_reg_RU.Add("82", "Ust-Orda Buryat"); + cc_reg_RU.Add("83", "Vladimir"); + cc_reg_RU.Add("84", "Volgograd"); + cc_reg_RU.Add("85", "Vologda"); + cc_reg_RU.Add("86", "Voronezh"); + cc_reg_RU.Add("87", "Yamal-Nenets"); + cc_reg_RU.Add("88", "Yaroslavl'"); + cc_reg_RU.Add("89", "Yevrey"); + cc_reg_RU.Add("90", "Permskiy Kray"); + cc_reg_RU.Add("91", "Krasnoyarskiy Kray"); + cc_reg_RU.Add("92", "Kamchatskiy Kray"); + cc_reg_RU.Add("93", "Zabaykal'skiy Kray"); + GEOIP_REGION_NAME.Add("RU", cc_reg_RU ); + Hashtable cc_reg_RW = new Hashtable(); + cc_reg_RW.Add("01", "Butare"); + cc_reg_RW.Add("06", "Gitarama"); + cc_reg_RW.Add("07", "Kibungo"); + cc_reg_RW.Add("09", "Kigali"); + cc_reg_RW.Add("11", "Est"); + cc_reg_RW.Add("12", "Kigali"); + cc_reg_RW.Add("13", "Nord"); + cc_reg_RW.Add("14", "Ouest"); + cc_reg_RW.Add("15", "Sud"); + GEOIP_REGION_NAME.Add("RW", cc_reg_RW ); + Hashtable cc_reg_SA = new Hashtable(); + cc_reg_SA.Add("02", "Al Bahah"); + cc_reg_SA.Add("05", "Al Madinah"); + cc_reg_SA.Add("06", "Ash Sharqiyah"); + cc_reg_SA.Add("08", "Al Qasim"); + cc_reg_SA.Add("10", "Ar Riyad"); + cc_reg_SA.Add("11", "Asir Province"); + cc_reg_SA.Add("13", "Ha'il"); + cc_reg_SA.Add("14", "Makkah"); + cc_reg_SA.Add("15", "Al Hudud ash Shamaliyah"); + cc_reg_SA.Add("16", "Najran"); + cc_reg_SA.Add("17", "Jizan"); + cc_reg_SA.Add("19", "Tabuk"); + cc_reg_SA.Add("20", "Al Jawf"); + GEOIP_REGION_NAME.Add("SA", cc_reg_SA ); + Hashtable cc_reg_SB = new Hashtable(); + cc_reg_SB.Add("03", "Malaita"); + cc_reg_SB.Add("06", "Guadalcanal"); + cc_reg_SB.Add("07", "Isabel"); + cc_reg_SB.Add("08", "Makira"); + cc_reg_SB.Add("09", "Temotu"); + cc_reg_SB.Add("10", "Central"); + cc_reg_SB.Add("11", "Western"); + cc_reg_SB.Add("12", "Choiseul"); + cc_reg_SB.Add("13", "Rennell and Bellona"); + GEOIP_REGION_NAME.Add("SB", cc_reg_SB ); + Hashtable cc_reg_SC = new Hashtable(); + cc_reg_SC.Add("01", "Anse aux Pins"); + cc_reg_SC.Add("02", "Anse Boileau"); + cc_reg_SC.Add("03", "Anse Etoile"); + cc_reg_SC.Add("04", "Anse Louis"); + cc_reg_SC.Add("05", "Anse Royale"); + cc_reg_SC.Add("06", "Baie Lazare"); + cc_reg_SC.Add("07", "Baie Sainte Anne"); + cc_reg_SC.Add("08", "Beau Vallon"); + cc_reg_SC.Add("09", "Bel Air"); + cc_reg_SC.Add("10", "Bel Ombre"); + cc_reg_SC.Add("11", "Cascade"); + cc_reg_SC.Add("12", "Glacis"); + cc_reg_SC.Add("13", "Grand' Anse"); + cc_reg_SC.Add("14", "Grand' Anse"); + cc_reg_SC.Add("15", "La Digue"); + cc_reg_SC.Add("16", "La Riviere Anglaise"); + cc_reg_SC.Add("17", "Mont Buxton"); + cc_reg_SC.Add("18", "Mont Fleuri"); + cc_reg_SC.Add("19", "Plaisance"); + cc_reg_SC.Add("20", "Pointe La Rue"); + cc_reg_SC.Add("21", "Port Glaud"); + cc_reg_SC.Add("22", "Saint Louis"); + cc_reg_SC.Add("23", "Takamaka"); + GEOIP_REGION_NAME.Add("SC", cc_reg_SC ); + Hashtable cc_reg_SD = new Hashtable(); + cc_reg_SD.Add("27", "Al Wusta"); + cc_reg_SD.Add("28", "Al Istiwa'iyah"); + cc_reg_SD.Add("29", "Al Khartum"); + cc_reg_SD.Add("30", "Ash Shamaliyah"); + cc_reg_SD.Add("31", "Ash Sharqiyah"); + cc_reg_SD.Add("32", "Bahr al Ghazal"); + cc_reg_SD.Add("33", "Darfur"); + cc_reg_SD.Add("34", "Kurdufan"); + cc_reg_SD.Add("35", "Upper Nile"); + cc_reg_SD.Add("40", "Al Wahadah State"); + cc_reg_SD.Add("44", "Central Equatoria State"); + GEOIP_REGION_NAME.Add("SD", cc_reg_SD ); + Hashtable cc_reg_SE = new Hashtable(); + cc_reg_SE.Add("02", "Blekinge Lan"); + cc_reg_SE.Add("03", "Gavleborgs Lan"); + cc_reg_SE.Add("05", "Gotlands Lan"); + cc_reg_SE.Add("06", "Hallands Lan"); + cc_reg_SE.Add("07", "Jamtlands Lan"); + cc_reg_SE.Add("08", "Jonkopings Lan"); + cc_reg_SE.Add("09", "Kalmar Lan"); + cc_reg_SE.Add("10", "Dalarnas Lan"); + cc_reg_SE.Add("12", "Kronobergs Lan"); + cc_reg_SE.Add("14", "Norrbottens Lan"); + cc_reg_SE.Add("15", "Orebro Lan"); + cc_reg_SE.Add("16", "Ostergotlands Lan"); + cc_reg_SE.Add("18", "Sodermanlands Lan"); + cc_reg_SE.Add("21", "Uppsala Lan"); + cc_reg_SE.Add("22", "Varmlands Lan"); + cc_reg_SE.Add("23", "Vasterbottens Lan"); + cc_reg_SE.Add("24", "Vasternorrlands Lan"); + cc_reg_SE.Add("25", "Vastmanlands Lan"); + cc_reg_SE.Add("26", "Stockholms Lan"); + cc_reg_SE.Add("27", "Skane Lan"); + cc_reg_SE.Add("28", "Vastra Gotaland"); + GEOIP_REGION_NAME.Add("SE", cc_reg_SE ); + Hashtable cc_reg_SH = new Hashtable(); + cc_reg_SH.Add("01", "Ascension"); + cc_reg_SH.Add("02", "Saint Helena"); + cc_reg_SH.Add("03", "Tristan da Cunha"); + GEOIP_REGION_NAME.Add("SH", cc_reg_SH ); + Hashtable cc_reg_SI = new Hashtable(); + cc_reg_SI.Add("01", "Ajdovscina Commune"); + cc_reg_SI.Add("02", "Beltinci Commune"); + cc_reg_SI.Add("03", "Bled Commune"); + cc_reg_SI.Add("04", "Bohinj Commune"); + cc_reg_SI.Add("05", "Borovnica Commune"); + cc_reg_SI.Add("06", "Bovec Commune"); + cc_reg_SI.Add("07", "Brda Commune"); + cc_reg_SI.Add("08", "Brezice Commune"); + cc_reg_SI.Add("09", "Brezovica Commune"); + cc_reg_SI.Add("11", "Celje Commune"); + cc_reg_SI.Add("12", "Cerklje na Gorenjskem Commune"); + cc_reg_SI.Add("13", "Cerknica Commune"); + cc_reg_SI.Add("14", "Cerkno Commune"); + cc_reg_SI.Add("15", "Crensovci Commune"); + cc_reg_SI.Add("16", "Crna na Koroskem Commune"); + cc_reg_SI.Add("17", "Crnomelj Commune"); + cc_reg_SI.Add("19", "Divaca Commune"); + cc_reg_SI.Add("20", "Dobrepolje Commune"); + cc_reg_SI.Add("22", "Dol pri Ljubljani Commune"); + cc_reg_SI.Add("24", "Dornava Commune"); + cc_reg_SI.Add("25", "Dravograd Commune"); + cc_reg_SI.Add("26", "Duplek Commune"); + cc_reg_SI.Add("27", "Gorenja vas-Poljane Commune"); + cc_reg_SI.Add("28", "Gorisnica Commune"); + cc_reg_SI.Add("29", "Gornja Radgona Commune"); + cc_reg_SI.Add("30", "Gornji Grad Commune"); + cc_reg_SI.Add("31", "Gornji Petrovci Commune"); + cc_reg_SI.Add("32", "Grosuplje Commune"); + cc_reg_SI.Add("34", "Hrastnik Commune"); + cc_reg_SI.Add("35", "Hrpelje-Kozina Commune"); + cc_reg_SI.Add("36", "Idrija Commune"); + cc_reg_SI.Add("37", "Ig Commune"); + cc_reg_SI.Add("38", "Ilirska Bistrica Commune"); + cc_reg_SI.Add("39", "Ivancna Gorica Commune"); + cc_reg_SI.Add("40", "Izola-Isola Commune"); + cc_reg_SI.Add("42", "Jursinci Commune"); + cc_reg_SI.Add("44", "Kanal Commune"); + cc_reg_SI.Add("45", "Kidricevo Commune"); + cc_reg_SI.Add("46", "Kobarid Commune"); + cc_reg_SI.Add("47", "Kobilje Commune"); + cc_reg_SI.Add("49", "Komen Commune"); + cc_reg_SI.Add("50", "Koper-Capodistria Urban Commune"); + cc_reg_SI.Add("51", "Kozje Commune"); + cc_reg_SI.Add("52", "Kranj Commune"); + cc_reg_SI.Add("53", "Kranjska Gora Commune"); + cc_reg_SI.Add("54", "Krsko Commune"); + cc_reg_SI.Add("55", "Kungota Commune"); + cc_reg_SI.Add("57", "Lasko Commune"); + cc_reg_SI.Add("61", "Ljubljana Urban Commune"); + cc_reg_SI.Add("62", "Ljubno Commune"); + cc_reg_SI.Add("64", "Logatec Commune"); + cc_reg_SI.Add("66", "Loski Potok Commune"); + cc_reg_SI.Add("68", "Lukovica Commune"); + cc_reg_SI.Add("71", "Medvode Commune"); + cc_reg_SI.Add("72", "Menges Commune"); + cc_reg_SI.Add("73", "Metlika Commune"); + cc_reg_SI.Add("74", "Mezica Commune"); + cc_reg_SI.Add("76", "Mislinja Commune"); + cc_reg_SI.Add("77", "Moravce Commune"); + cc_reg_SI.Add("78", "Moravske Toplice Commune"); + cc_reg_SI.Add("79", "Mozirje Commune"); + cc_reg_SI.Add("80", "Murska Sobota Urban Commune"); + cc_reg_SI.Add("81", "Muta Commune"); + cc_reg_SI.Add("82", "Naklo Commune"); + cc_reg_SI.Add("83", "Nazarje Commune"); + cc_reg_SI.Add("84", "Nova Gorica Urban Commune"); + cc_reg_SI.Add("86", "Odranci Commune"); + cc_reg_SI.Add("87", "Ormoz Commune"); + cc_reg_SI.Add("88", "Osilnica Commune"); + cc_reg_SI.Add("89", "Pesnica Commune"); + cc_reg_SI.Add("91", "Pivka Commune"); + cc_reg_SI.Add("92", "Podcetrtek Commune"); + cc_reg_SI.Add("94", "Postojna Commune"); + cc_reg_SI.Add("97", "Puconci Commune"); + cc_reg_SI.Add("98", "Race-Fram Commune"); + cc_reg_SI.Add("99", "Radece Commune"); + cc_reg_SI.Add("A1", "Radenci Commune"); + cc_reg_SI.Add("A2", "Radlje ob Dravi Commune"); + cc_reg_SI.Add("A3", "Radovljica Commune"); + cc_reg_SI.Add("A6", "Rogasovci Commune"); + cc_reg_SI.Add("A7", "Rogaska Slatina Commune"); + cc_reg_SI.Add("A8", "Rogatec Commune"); + cc_reg_SI.Add("B1", "Semic Commune"); + cc_reg_SI.Add("B2", "Sencur Commune"); + cc_reg_SI.Add("B3", "Sentilj Commune"); + cc_reg_SI.Add("B4", "Sentjernej Commune"); + cc_reg_SI.Add("B6", "Sevnica Commune"); + cc_reg_SI.Add("B7", "Sezana Commune"); + cc_reg_SI.Add("B8", "Skocjan Commune"); + cc_reg_SI.Add("B9", "Skofja Loka Commune"); + cc_reg_SI.Add("C1", "Skofljica Commune"); + cc_reg_SI.Add("C2", "Slovenj Gradec Urban Commune"); + cc_reg_SI.Add("C4", "Slovenske Konjice Commune"); + cc_reg_SI.Add("C5", "Smarje pri Jelsah Commune"); + cc_reg_SI.Add("C6", "Smartno ob Paki Commune"); + cc_reg_SI.Add("C7", "Sostanj Commune"); + cc_reg_SI.Add("C8", "Starse Commune"); + cc_reg_SI.Add("C9", "Store Commune"); + cc_reg_SI.Add("D1", "Sveti Jurij Commune"); + cc_reg_SI.Add("D2", "Tolmin Commune"); + cc_reg_SI.Add("D3", "Trbovlje Commune"); + cc_reg_SI.Add("D4", "Trebnje Commune"); + cc_reg_SI.Add("D5", "Trzic Commune"); + cc_reg_SI.Add("D6", "Turnisce Commune"); + cc_reg_SI.Add("D7", "Velenje Urban Commune"); + cc_reg_SI.Add("D8", "Velike Lasce Commune"); + cc_reg_SI.Add("E1", "Vipava Commune"); + cc_reg_SI.Add("E2", "Vitanje Commune"); + cc_reg_SI.Add("E3", "Vodice Commune"); + cc_reg_SI.Add("E5", "Vrhnika Commune"); + cc_reg_SI.Add("E6", "Vuzenica Commune"); + cc_reg_SI.Add("E7", "Zagorje ob Savi Commune"); + cc_reg_SI.Add("E9", "Zavrc Commune"); + cc_reg_SI.Add("F1", "Zelezniki Commune"); + cc_reg_SI.Add("F2", "Ziri Commune"); + cc_reg_SI.Add("F3", "Zrece Commune"); + cc_reg_SI.Add("F4", "Benedikt Commune"); + cc_reg_SI.Add("F5", "Bistrica ob Sotli Commune"); + cc_reg_SI.Add("F6", "Bloke Commune"); + cc_reg_SI.Add("F7", "Braslovce Commune"); + cc_reg_SI.Add("F8", "Cankova Commune"); + cc_reg_SI.Add("F9", "Cerkvenjak Commune"); + cc_reg_SI.Add("G1", "Destrnik Commune"); + cc_reg_SI.Add("G2", "Dobje Commune"); + cc_reg_SI.Add("G3", "Dobrna Commune"); + cc_reg_SI.Add("G4", "Dobrova-Horjul-Polhov Gradec Commune"); + cc_reg_SI.Add("G5", "Dobrovnik-Dobronak Commune"); + cc_reg_SI.Add("G6", "Dolenjske Toplice Commune"); + cc_reg_SI.Add("G7", "Domzale Commune"); + cc_reg_SI.Add("G8", "Grad Commune"); + cc_reg_SI.Add("G9", "Hajdina Commune"); + cc_reg_SI.Add("H1", "Hoce-Slivnica Commune"); + cc_reg_SI.Add("H2", "Hodos-Hodos Commune"); + cc_reg_SI.Add("H3", "Horjul Commune"); + cc_reg_SI.Add("H4", "Jesenice Commune"); + cc_reg_SI.Add("H5", "Jezersko Commune"); + cc_reg_SI.Add("H6", "Kamnik Commune"); + cc_reg_SI.Add("H7", "Kocevje Commune"); + cc_reg_SI.Add("H8", "Komenda Commune"); + cc_reg_SI.Add("H9", "Kostel Commune"); + cc_reg_SI.Add("I1", "Krizevci Commune"); + cc_reg_SI.Add("I2", "Kuzma Commune"); + cc_reg_SI.Add("I3", "Lenart Commune"); + cc_reg_SI.Add("I4", "Lendava-Lendva Commune"); + cc_reg_SI.Add("I5", "Litija Commune"); + cc_reg_SI.Add("I6", "Ljutomer Commune"); + cc_reg_SI.Add("I7", "Loska Dolina Commune"); + cc_reg_SI.Add("I8", "Lovrenc na Pohorju Commune"); + cc_reg_SI.Add("I9", "Luce Commune"); + cc_reg_SI.Add("J1", "Majsperk Commune"); + cc_reg_SI.Add("J2", "Maribor Commune"); + cc_reg_SI.Add("J3", "Markovci Commune"); + cc_reg_SI.Add("J4", "Miklavz na Dravskem polju Commune"); + cc_reg_SI.Add("J5", "Miren-Kostanjevica Commune"); + cc_reg_SI.Add("J6", "Mirna Pec Commune"); + cc_reg_SI.Add("J7", "Novo mesto Urban Commune"); + cc_reg_SI.Add("J8", "Oplotnica Commune"); + cc_reg_SI.Add("J9", "Piran-Pirano Commune"); + cc_reg_SI.Add("K1", "Podlehnik Commune"); + cc_reg_SI.Add("K2", "Podvelka Commune"); + cc_reg_SI.Add("K3", "Polzela Commune"); + cc_reg_SI.Add("K4", "Prebold Commune"); + cc_reg_SI.Add("K5", "Preddvor Commune"); + cc_reg_SI.Add("K6", "Prevalje Commune"); + cc_reg_SI.Add("K7", "Ptuj Urban Commune"); + cc_reg_SI.Add("K8", "Ravne na Koroskem Commune"); + cc_reg_SI.Add("K9", "Razkrizje Commune"); + cc_reg_SI.Add("L1", "Ribnica Commune"); + cc_reg_SI.Add("L2", "Ribnica na Pohorju Commune"); + cc_reg_SI.Add("L3", "Ruse Commune"); + cc_reg_SI.Add("L4", "Salovci Commune"); + cc_reg_SI.Add("L5", "Selnica ob Dravi Commune"); + cc_reg_SI.Add("L6", "Sempeter-Vrtojba Commune"); + cc_reg_SI.Add("L7", "Sentjur pri Celju Commune"); + cc_reg_SI.Add("L8", "Slovenska Bistrica Commune"); + cc_reg_SI.Add("L9", "Smartno pri Litiji Commune"); + cc_reg_SI.Add("M1", "Sodrazica Commune"); + cc_reg_SI.Add("M2", "Solcava Commune"); + cc_reg_SI.Add("M3", "Sveta Ana Commune"); + cc_reg_SI.Add("M4", "Sveti Andraz v Slovenskih goricah Commune"); + cc_reg_SI.Add("M5", "Tabor Commune"); + cc_reg_SI.Add("M6", "Tisina Commune"); + cc_reg_SI.Add("M7", "Trnovska vas Commune"); + cc_reg_SI.Add("M8", "Trzin Commune"); + cc_reg_SI.Add("M9", "Velika Polana Commune"); + cc_reg_SI.Add("N1", "Verzej Commune"); + cc_reg_SI.Add("N2", "Videm Commune"); + cc_reg_SI.Add("N3", "Vojnik Commune"); + cc_reg_SI.Add("N4", "Vransko Commune"); + cc_reg_SI.Add("N5", "Zalec Commune"); + cc_reg_SI.Add("N6", "Zetale Commune"); + cc_reg_SI.Add("N7", "Zirovnica Commune"); + cc_reg_SI.Add("N8", "Zuzemberk Commune"); + cc_reg_SI.Add("N9", "Apace Commune"); + cc_reg_SI.Add("O1", "Cirkulane Commune"); + GEOIP_REGION_NAME.Add("SI", cc_reg_SI ); + Hashtable cc_reg_SK = new Hashtable(); + cc_reg_SK.Add("01", "Banska Bystrica"); + cc_reg_SK.Add("02", "Bratislava"); + cc_reg_SK.Add("03", "Kosice"); + cc_reg_SK.Add("04", "Nitra"); + cc_reg_SK.Add("05", "Presov"); + cc_reg_SK.Add("06", "Trencin"); + cc_reg_SK.Add("07", "Trnava"); + cc_reg_SK.Add("08", "Zilina"); + GEOIP_REGION_NAME.Add("SK", cc_reg_SK ); + Hashtable cc_reg_SL = new Hashtable(); + cc_reg_SL.Add("01", "Eastern"); + cc_reg_SL.Add("02", "Northern"); + cc_reg_SL.Add("03", "Southern"); + cc_reg_SL.Add("04", "Western Area"); + GEOIP_REGION_NAME.Add("SL", cc_reg_SL ); + Hashtable cc_reg_SM = new Hashtable(); + cc_reg_SM.Add("01", "Acquaviva"); + cc_reg_SM.Add("02", "Chiesanuova"); + cc_reg_SM.Add("03", "Domagnano"); + cc_reg_SM.Add("04", "Faetano"); + cc_reg_SM.Add("05", "Fiorentino"); + cc_reg_SM.Add("06", "Borgo Maggiore"); + cc_reg_SM.Add("07", "San Marino"); + cc_reg_SM.Add("08", "Monte Giardino"); + cc_reg_SM.Add("09", "Serravalle"); + GEOIP_REGION_NAME.Add("SM", cc_reg_SM ); + Hashtable cc_reg_SN = new Hashtable(); + cc_reg_SN.Add("01", "Dakar"); + cc_reg_SN.Add("03", "Diourbel"); + cc_reg_SN.Add("05", "Tambacounda"); + cc_reg_SN.Add("07", "Thies"); + cc_reg_SN.Add("09", "Fatick"); + cc_reg_SN.Add("10", "Kaolack"); + cc_reg_SN.Add("11", "Kolda"); + cc_reg_SN.Add("12", "Ziguinchor"); + cc_reg_SN.Add("13", "Louga"); + cc_reg_SN.Add("14", "Saint-Louis"); + cc_reg_SN.Add("15", "Matam"); + GEOIP_REGION_NAME.Add("SN", cc_reg_SN ); + Hashtable cc_reg_SO = new Hashtable(); + cc_reg_SO.Add("01", "Bakool"); + cc_reg_SO.Add("02", "Banaadir"); + cc_reg_SO.Add("03", "Bari"); + cc_reg_SO.Add("04", "Bay"); + cc_reg_SO.Add("05", "Galguduud"); + cc_reg_SO.Add("06", "Gedo"); + cc_reg_SO.Add("07", "Hiiraan"); + cc_reg_SO.Add("08", "Jubbada Dhexe"); + cc_reg_SO.Add("09", "Jubbada Hoose"); + cc_reg_SO.Add("10", "Mudug"); + cc_reg_SO.Add("11", "Nugaal"); + cc_reg_SO.Add("12", "Sanaag"); + cc_reg_SO.Add("13", "Shabeellaha Dhexe"); + cc_reg_SO.Add("14", "Shabeellaha Hoose"); + cc_reg_SO.Add("16", "Woqooyi Galbeed"); + cc_reg_SO.Add("18", "Nugaal"); + cc_reg_SO.Add("19", "Togdheer"); + cc_reg_SO.Add("20", "Woqooyi Galbeed"); + cc_reg_SO.Add("21", "Awdal"); + cc_reg_SO.Add("22", "Sool"); + GEOIP_REGION_NAME.Add("SO", cc_reg_SO ); + Hashtable cc_reg_SR = new Hashtable(); + cc_reg_SR.Add("10", "Brokopondo"); + cc_reg_SR.Add("11", "Commewijne"); + cc_reg_SR.Add("12", "Coronie"); + cc_reg_SR.Add("13", "Marowijne"); + cc_reg_SR.Add("14", "Nickerie"); + cc_reg_SR.Add("15", "Para"); + cc_reg_SR.Add("16", "Paramaribo"); + cc_reg_SR.Add("17", "Saramacca"); + cc_reg_SR.Add("18", "Sipaliwini"); + cc_reg_SR.Add("19", "Wanica"); + GEOIP_REGION_NAME.Add("SR", cc_reg_SR ); + Hashtable cc_reg_SS = new Hashtable(); + cc_reg_SS.Add("01", "Central Equatoria"); + cc_reg_SS.Add("02", "Eastern Equatoria"); + cc_reg_SS.Add("03", "Jonglei"); + cc_reg_SS.Add("04", "Lakes"); + cc_reg_SS.Add("05", "Northern Bahr el Ghazal"); + cc_reg_SS.Add("06", "Unity"); + cc_reg_SS.Add("07", "Upper Nile"); + cc_reg_SS.Add("08", "Warrap"); + cc_reg_SS.Add("09", "Western Bahr el Ghazal"); + cc_reg_SS.Add("10", "Western Equatoria"); + GEOIP_REGION_NAME.Add("SS", cc_reg_SS ); + Hashtable cc_reg_ST = new Hashtable(); + cc_reg_ST.Add("01", "Principe"); + cc_reg_ST.Add("02", "Sao Tome"); + GEOIP_REGION_NAME.Add("ST", cc_reg_ST ); + Hashtable cc_reg_SV = new Hashtable(); + cc_reg_SV.Add("01", "Ahuachapan"); + cc_reg_SV.Add("02", "Cabanas"); + cc_reg_SV.Add("03", "Chalatenango"); + cc_reg_SV.Add("04", "Cuscatlan"); + cc_reg_SV.Add("05", "La Libertad"); + cc_reg_SV.Add("06", "La Paz"); + cc_reg_SV.Add("07", "La Union"); + cc_reg_SV.Add("08", "Morazan"); + cc_reg_SV.Add("09", "San Miguel"); + cc_reg_SV.Add("10", "San Salvador"); + cc_reg_SV.Add("11", "Santa Ana"); + cc_reg_SV.Add("12", "San Vicente"); + cc_reg_SV.Add("13", "Sonsonate"); + cc_reg_SV.Add("14", "Usulutan"); + GEOIP_REGION_NAME.Add("SV", cc_reg_SV ); + Hashtable cc_reg_SY = new Hashtable(); + cc_reg_SY.Add("01", "Al Hasakah"); + cc_reg_SY.Add("02", "Al Ladhiqiyah"); + cc_reg_SY.Add("03", "Al Qunaytirah"); + cc_reg_SY.Add("04", "Ar Raqqah"); + cc_reg_SY.Add("05", "As Suwayda'"); + cc_reg_SY.Add("06", "Dar"); + cc_reg_SY.Add("07", "Dayr az Zawr"); + cc_reg_SY.Add("08", "Rif Dimashq"); + cc_reg_SY.Add("09", "Halab"); + cc_reg_SY.Add("10", "Hamah"); + cc_reg_SY.Add("11", "Hims"); + cc_reg_SY.Add("12", "Idlib"); + cc_reg_SY.Add("13", "Dimashq"); + cc_reg_SY.Add("14", "Tartus"); + GEOIP_REGION_NAME.Add("SY", cc_reg_SY ); + Hashtable cc_reg_SZ = new Hashtable(); + cc_reg_SZ.Add("01", "Hhohho"); + cc_reg_SZ.Add("02", "Lubombo"); + cc_reg_SZ.Add("03", "Manzini"); + cc_reg_SZ.Add("04", "Shiselweni"); + cc_reg_SZ.Add("05", "Praslin"); + GEOIP_REGION_NAME.Add("SZ", cc_reg_SZ ); + Hashtable cc_reg_TD = new Hashtable(); + cc_reg_TD.Add("01", "Batha"); + cc_reg_TD.Add("02", "Biltine"); + cc_reg_TD.Add("03", "Borkou-Ennedi-Tibesti"); + cc_reg_TD.Add("04", "Chari-Baguirmi"); + cc_reg_TD.Add("05", "Guera"); + cc_reg_TD.Add("06", "Kanem"); + cc_reg_TD.Add("07", "Lac"); + cc_reg_TD.Add("08", "Logone Occidental"); + cc_reg_TD.Add("09", "Logone Oriental"); + cc_reg_TD.Add("10", "Mayo-Kebbi"); + cc_reg_TD.Add("11", "Moyen-Chari"); + cc_reg_TD.Add("12", "Ouaddai"); + cc_reg_TD.Add("13", "Salamat"); + cc_reg_TD.Add("14", "Tandjile"); + GEOIP_REGION_NAME.Add("TD", cc_reg_TD ); + Hashtable cc_reg_TG = new Hashtable(); + cc_reg_TG.Add("22", "Centrale"); + cc_reg_TG.Add("23", "Kara"); + cc_reg_TG.Add("24", "Maritime"); + cc_reg_TG.Add("25", "Plateaux"); + cc_reg_TG.Add("26", "Savanes"); + GEOIP_REGION_NAME.Add("TG", cc_reg_TG ); + Hashtable cc_reg_TH = new Hashtable(); + cc_reg_TH.Add("01", "Mae Hong Son"); + cc_reg_TH.Add("02", "Chiang Mai"); + cc_reg_TH.Add("03", "Chiang Rai"); + cc_reg_TH.Add("04", "Nan"); + cc_reg_TH.Add("05", "Lamphun"); + cc_reg_TH.Add("06", "Lampang"); + cc_reg_TH.Add("07", "Phrae"); + cc_reg_TH.Add("08", "Tak"); + cc_reg_TH.Add("09", "Sukhothai"); + cc_reg_TH.Add("10", "Uttaradit"); + cc_reg_TH.Add("11", "Kamphaeng Phet"); + cc_reg_TH.Add("12", "Phitsanulok"); + cc_reg_TH.Add("13", "Phichit"); + cc_reg_TH.Add("14", "Phetchabun"); + cc_reg_TH.Add("15", "Uthai Thani"); + cc_reg_TH.Add("16", "Nakhon Sawan"); + cc_reg_TH.Add("17", "Nong Khai"); + cc_reg_TH.Add("18", "Loei"); + cc_reg_TH.Add("20", "Sakon Nakhon"); + cc_reg_TH.Add("21", "Nakhon Phanom"); + cc_reg_TH.Add("22", "Khon Kaen"); + cc_reg_TH.Add("23", "Kalasin"); + cc_reg_TH.Add("24", "Maha Sarakham"); + cc_reg_TH.Add("25", "Roi Et"); + cc_reg_TH.Add("26", "Chaiyaphum"); + cc_reg_TH.Add("27", "Nakhon Ratchasima"); + cc_reg_TH.Add("28", "Buriram"); + cc_reg_TH.Add("29", "Surin"); + cc_reg_TH.Add("30", "Sisaket"); + cc_reg_TH.Add("31", "Narathiwat"); + cc_reg_TH.Add("32", "Chai Nat"); + cc_reg_TH.Add("33", "Sing Buri"); + cc_reg_TH.Add("34", "Lop Buri"); + cc_reg_TH.Add("35", "Ang Thong"); + cc_reg_TH.Add("36", "Phra Nakhon Si Ayutthaya"); + cc_reg_TH.Add("37", "Saraburi"); + cc_reg_TH.Add("38", "Nonthaburi"); + cc_reg_TH.Add("39", "Pathum Thani"); + cc_reg_TH.Add("40", "Krung Thep"); + cc_reg_TH.Add("41", "Phayao"); + cc_reg_TH.Add("42", "Samut Prakan"); + cc_reg_TH.Add("43", "Nakhon Nayok"); + cc_reg_TH.Add("44", "Chachoengsao"); + cc_reg_TH.Add("45", "Prachin Buri"); + cc_reg_TH.Add("46", "Chon Buri"); + cc_reg_TH.Add("47", "Rayong"); + cc_reg_TH.Add("48", "Chanthaburi"); + cc_reg_TH.Add("49", "Trat"); + cc_reg_TH.Add("50", "Kanchanaburi"); + cc_reg_TH.Add("51", "Suphan Buri"); + cc_reg_TH.Add("52", "Ratchaburi"); + cc_reg_TH.Add("53", "Nakhon Pathom"); + cc_reg_TH.Add("54", "Samut Songkhram"); + cc_reg_TH.Add("55", "Samut Sakhon"); + cc_reg_TH.Add("56", "Phetchaburi"); + cc_reg_TH.Add("57", "Prachuap Khiri Khan"); + cc_reg_TH.Add("58", "Chumphon"); + cc_reg_TH.Add("59", "Ranong"); + cc_reg_TH.Add("60", "Surat Thani"); + cc_reg_TH.Add("61", "Phangnga"); + cc_reg_TH.Add("62", "Phuket"); + cc_reg_TH.Add("63", "Krabi"); + cc_reg_TH.Add("64", "Nakhon Si Thammarat"); + cc_reg_TH.Add("65", "Trang"); + cc_reg_TH.Add("66", "Phatthalung"); + cc_reg_TH.Add("67", "Satun"); + cc_reg_TH.Add("68", "Songkhla"); + cc_reg_TH.Add("69", "Pattani"); + cc_reg_TH.Add("70", "Yala"); + cc_reg_TH.Add("71", "Ubon Ratchathani"); + cc_reg_TH.Add("72", "Yasothon"); + cc_reg_TH.Add("73", "Nakhon Phanom"); + cc_reg_TH.Add("74", "Prachin Buri"); + cc_reg_TH.Add("75", "Ubon Ratchathani"); + cc_reg_TH.Add("76", "Udon Thani"); + cc_reg_TH.Add("77", "Amnat Charoen"); + cc_reg_TH.Add("78", "Mukdahan"); + cc_reg_TH.Add("79", "Nong Bua Lamphu"); + cc_reg_TH.Add("80", "Sa Kaeo"); + GEOIP_REGION_NAME.Add("TH", cc_reg_TH ); + Hashtable cc_reg_TJ = new Hashtable(); + cc_reg_TJ.Add("01", "Kuhistoni Badakhshon"); + cc_reg_TJ.Add("02", "Khatlon"); + cc_reg_TJ.Add("03", "Sughd"); + GEOIP_REGION_NAME.Add("TJ", cc_reg_TJ ); + Hashtable cc_reg_TM = new Hashtable(); + cc_reg_TM.Add("01", "Ahal"); + cc_reg_TM.Add("02", "Balkan"); + cc_reg_TM.Add("03", "Dashoguz"); + cc_reg_TM.Add("04", "Lebap"); + cc_reg_TM.Add("05", "Mary"); + GEOIP_REGION_NAME.Add("TM", cc_reg_TM ); + Hashtable cc_reg_TN = new Hashtable(); + cc_reg_TN.Add("02", "Kasserine"); + cc_reg_TN.Add("03", "Kairouan"); + cc_reg_TN.Add("06", "Jendouba"); + cc_reg_TN.Add("10", "Qafsah"); + cc_reg_TN.Add("14", "El Kef"); + cc_reg_TN.Add("15", "Al Mahdia"); + cc_reg_TN.Add("16", "Al Munastir"); + cc_reg_TN.Add("17", "Bajah"); + cc_reg_TN.Add("18", "Bizerte"); + cc_reg_TN.Add("19", "Nabeul"); + cc_reg_TN.Add("22", "Siliana"); + cc_reg_TN.Add("23", "Sousse"); + cc_reg_TN.Add("27", "Ben Arous"); + cc_reg_TN.Add("28", "Madanin"); + cc_reg_TN.Add("29", "Gabes"); + cc_reg_TN.Add("31", "Kebili"); + cc_reg_TN.Add("32", "Sfax"); + cc_reg_TN.Add("33", "Sidi Bou Zid"); + cc_reg_TN.Add("34", "Tataouine"); + cc_reg_TN.Add("35", "Tozeur"); + cc_reg_TN.Add("36", "Tunis"); + cc_reg_TN.Add("37", "Zaghouan"); + cc_reg_TN.Add("38", "Aiana"); + cc_reg_TN.Add("39", "Manouba"); + GEOIP_REGION_NAME.Add("TN", cc_reg_TN ); + Hashtable cc_reg_TO = new Hashtable(); + cc_reg_TO.Add("01", "Ha"); + cc_reg_TO.Add("02", "Tongatapu"); + cc_reg_TO.Add("03", "Vava"); + GEOIP_REGION_NAME.Add("TO", cc_reg_TO ); + Hashtable cc_reg_TR = new Hashtable(); + cc_reg_TR.Add("02", "Adiyaman"); + cc_reg_TR.Add("03", "Afyonkarahisar"); + cc_reg_TR.Add("04", "Agri"); + cc_reg_TR.Add("05", "Amasya"); + cc_reg_TR.Add("07", "Antalya"); + cc_reg_TR.Add("08", "Artvin"); + cc_reg_TR.Add("09", "Aydin"); + cc_reg_TR.Add("10", "Balikesir"); + cc_reg_TR.Add("11", "Bilecik"); + cc_reg_TR.Add("12", "Bingol"); + cc_reg_TR.Add("13", "Bitlis"); + cc_reg_TR.Add("14", "Bolu"); + cc_reg_TR.Add("15", "Burdur"); + cc_reg_TR.Add("16", "Bursa"); + cc_reg_TR.Add("17", "Canakkale"); + cc_reg_TR.Add("19", "Corum"); + cc_reg_TR.Add("20", "Denizli"); + cc_reg_TR.Add("21", "Diyarbakir"); + cc_reg_TR.Add("22", "Edirne"); + cc_reg_TR.Add("23", "Elazig"); + cc_reg_TR.Add("24", "Erzincan"); + cc_reg_TR.Add("25", "Erzurum"); + cc_reg_TR.Add("26", "Eskisehir"); + cc_reg_TR.Add("28", "Giresun"); + cc_reg_TR.Add("31", "Hatay"); + cc_reg_TR.Add("32", "Mersin"); + cc_reg_TR.Add("33", "Isparta"); + cc_reg_TR.Add("34", "Istanbul"); + cc_reg_TR.Add("35", "Izmir"); + cc_reg_TR.Add("37", "Kastamonu"); + cc_reg_TR.Add("38", "Kayseri"); + cc_reg_TR.Add("39", "Kirklareli"); + cc_reg_TR.Add("40", "Kirsehir"); + cc_reg_TR.Add("41", "Kocaeli"); + cc_reg_TR.Add("43", "Kutahya"); + cc_reg_TR.Add("44", "Malatya"); + cc_reg_TR.Add("45", "Manisa"); + cc_reg_TR.Add("46", "Kahramanmaras"); + cc_reg_TR.Add("48", "Mugla"); + cc_reg_TR.Add("49", "Mus"); + cc_reg_TR.Add("50", "Nevsehir"); + cc_reg_TR.Add("52", "Ordu"); + cc_reg_TR.Add("53", "Rize"); + cc_reg_TR.Add("54", "Sakarya"); + cc_reg_TR.Add("55", "Samsun"); + cc_reg_TR.Add("57", "Sinop"); + cc_reg_TR.Add("58", "Sivas"); + cc_reg_TR.Add("59", "Tekirdag"); + cc_reg_TR.Add("60", "Tokat"); + cc_reg_TR.Add("61", "Trabzon"); + cc_reg_TR.Add("62", "Tunceli"); + cc_reg_TR.Add("63", "Sanliurfa"); + cc_reg_TR.Add("64", "Usak"); + cc_reg_TR.Add("65", "Van"); + cc_reg_TR.Add("66", "Yozgat"); + cc_reg_TR.Add("68", "Ankara"); + cc_reg_TR.Add("69", "Gumushane"); + cc_reg_TR.Add("70", "Hakkari"); + cc_reg_TR.Add("71", "Konya"); + cc_reg_TR.Add("72", "Mardin"); + cc_reg_TR.Add("73", "Nigde"); + cc_reg_TR.Add("74", "Siirt"); + cc_reg_TR.Add("75", "Aksaray"); + cc_reg_TR.Add("76", "Batman"); + cc_reg_TR.Add("77", "Bayburt"); + cc_reg_TR.Add("78", "Karaman"); + cc_reg_TR.Add("79", "Kirikkale"); + cc_reg_TR.Add("80", "Sirnak"); + cc_reg_TR.Add("81", "Adana"); + cc_reg_TR.Add("82", "Cankiri"); + cc_reg_TR.Add("83", "Gaziantep"); + cc_reg_TR.Add("84", "Kars"); + cc_reg_TR.Add("85", "Zonguldak"); + cc_reg_TR.Add("86", "Ardahan"); + cc_reg_TR.Add("87", "Bartin"); + cc_reg_TR.Add("88", "Igdir"); + cc_reg_TR.Add("89", "Karabuk"); + cc_reg_TR.Add("90", "Kilis"); + cc_reg_TR.Add("91", "Osmaniye"); + cc_reg_TR.Add("92", "Yalova"); + cc_reg_TR.Add("93", "Duzce"); + GEOIP_REGION_NAME.Add("TR", cc_reg_TR ); + Hashtable cc_reg_TT = new Hashtable(); + cc_reg_TT.Add("01", "Arima"); + cc_reg_TT.Add("02", "Caroni"); + cc_reg_TT.Add("03", "Mayaro"); + cc_reg_TT.Add("04", "Nariva"); + cc_reg_TT.Add("05", "Port-of-Spain"); + cc_reg_TT.Add("06", "Saint Andrew"); + cc_reg_TT.Add("07", "Saint David"); + cc_reg_TT.Add("08", "Saint George"); + cc_reg_TT.Add("09", "Saint Patrick"); + cc_reg_TT.Add("10", "San Fernando"); + cc_reg_TT.Add("11", "Tobago"); + cc_reg_TT.Add("12", "Victoria"); + GEOIP_REGION_NAME.Add("TT", cc_reg_TT ); + Hashtable cc_reg_TW = new Hashtable(); + cc_reg_TW.Add("01", "Fu-chien"); + cc_reg_TW.Add("02", "Kao-hsiung"); + cc_reg_TW.Add("03", "T'ai-pei"); + cc_reg_TW.Add("04", "T'ai-wan"); + GEOIP_REGION_NAME.Add("TW", cc_reg_TW ); + Hashtable cc_reg_TZ = new Hashtable(); + cc_reg_TZ.Add("02", "Pwani"); + cc_reg_TZ.Add("03", "Dodoma"); + cc_reg_TZ.Add("04", "Iringa"); + cc_reg_TZ.Add("05", "Kigoma"); + cc_reg_TZ.Add("06", "Kilimanjaro"); + cc_reg_TZ.Add("07", "Lindi"); + cc_reg_TZ.Add("08", "Mara"); + cc_reg_TZ.Add("09", "Mbeya"); + cc_reg_TZ.Add("10", "Morogoro"); + cc_reg_TZ.Add("11", "Mtwara"); + cc_reg_TZ.Add("12", "Mwanza"); + cc_reg_TZ.Add("13", "Pemba North"); + cc_reg_TZ.Add("14", "Ruvuma"); + cc_reg_TZ.Add("15", "Shinyanga"); + cc_reg_TZ.Add("16", "Singida"); + cc_reg_TZ.Add("17", "Tabora"); + cc_reg_TZ.Add("18", "Tanga"); + cc_reg_TZ.Add("19", "Kagera"); + cc_reg_TZ.Add("20", "Pemba South"); + cc_reg_TZ.Add("21", "Zanzibar Central"); + cc_reg_TZ.Add("22", "Zanzibar North"); + cc_reg_TZ.Add("23", "Dar es Salaam"); + cc_reg_TZ.Add("24", "Rukwa"); + cc_reg_TZ.Add("25", "Zanzibar Urban"); + cc_reg_TZ.Add("26", "Arusha"); + cc_reg_TZ.Add("27", "Manyara"); + GEOIP_REGION_NAME.Add("TZ", cc_reg_TZ ); + Hashtable cc_reg_UA = new Hashtable(); + cc_reg_UA.Add("01", "Cherkas'ka Oblast'"); + cc_reg_UA.Add("02", "Chernihivs'ka Oblast'"); + cc_reg_UA.Add("03", "Chernivets'ka Oblast'"); + cc_reg_UA.Add("04", "Dnipropetrovs'ka Oblast'"); + cc_reg_UA.Add("05", "Donets'ka Oblast'"); + cc_reg_UA.Add("06", "Ivano-Frankivs'ka Oblast'"); + cc_reg_UA.Add("07", "Kharkivs'ka Oblast'"); + cc_reg_UA.Add("08", "Khersons'ka Oblast'"); + cc_reg_UA.Add("09", "Khmel'nyts'ka Oblast'"); + cc_reg_UA.Add("10", "Kirovohrads'ka Oblast'"); + cc_reg_UA.Add("11", "Krym"); + cc_reg_UA.Add("12", "Kyyiv"); + cc_reg_UA.Add("13", "Kyyivs'ka Oblast'"); + cc_reg_UA.Add("14", "Luhans'ka Oblast'"); + cc_reg_UA.Add("15", "L'vivs'ka Oblast'"); + cc_reg_UA.Add("16", "Mykolayivs'ka Oblast'"); + cc_reg_UA.Add("17", "Odes'ka Oblast'"); + cc_reg_UA.Add("18", "Poltavs'ka Oblast'"); + cc_reg_UA.Add("19", "Rivnens'ka Oblast'"); + cc_reg_UA.Add("20", "Sevastopol'"); + cc_reg_UA.Add("21", "Sums'ka Oblast'"); + cc_reg_UA.Add("22", "Ternopil's'ka Oblast'"); + cc_reg_UA.Add("23", "Vinnyts'ka Oblast'"); + cc_reg_UA.Add("24", "Volyns'ka Oblast'"); + cc_reg_UA.Add("25", "Zakarpats'ka Oblast'"); + cc_reg_UA.Add("26", "Zaporiz'ka Oblast'"); + cc_reg_UA.Add("27", "Zhytomyrs'ka Oblast'"); + GEOIP_REGION_NAME.Add("UA", cc_reg_UA ); + Hashtable cc_reg_UG = new Hashtable(); + cc_reg_UG.Add("26", "Apac"); + cc_reg_UG.Add("28", "Bundibugyo"); + cc_reg_UG.Add("29", "Bushenyi"); + cc_reg_UG.Add("30", "Gulu"); + cc_reg_UG.Add("31", "Hoima"); + cc_reg_UG.Add("33", "Jinja"); + cc_reg_UG.Add("36", "Kalangala"); + cc_reg_UG.Add("37", "Kampala"); + cc_reg_UG.Add("38", "Kamuli"); + cc_reg_UG.Add("39", "Kapchorwa"); + cc_reg_UG.Add("40", "Kasese"); + cc_reg_UG.Add("41", "Kibale"); + cc_reg_UG.Add("42", "Kiboga"); + cc_reg_UG.Add("43", "Kisoro"); + cc_reg_UG.Add("45", "Kotido"); + cc_reg_UG.Add("46", "Kumi"); + cc_reg_UG.Add("47", "Lira"); + cc_reg_UG.Add("50", "Masindi"); + cc_reg_UG.Add("52", "Mbarara"); + cc_reg_UG.Add("56", "Mubende"); + cc_reg_UG.Add("58", "Nebbi"); + cc_reg_UG.Add("59", "Ntungamo"); + cc_reg_UG.Add("60", "Pallisa"); + cc_reg_UG.Add("61", "Rakai"); + cc_reg_UG.Add("65", "Adjumani"); + cc_reg_UG.Add("66", "Bugiri"); + cc_reg_UG.Add("67", "Busia"); + cc_reg_UG.Add("69", "Katakwi"); + cc_reg_UG.Add("70", "Luwero"); + cc_reg_UG.Add("71", "Masaka"); + cc_reg_UG.Add("72", "Moyo"); + cc_reg_UG.Add("73", "Nakasongola"); + cc_reg_UG.Add("74", "Sembabule"); + cc_reg_UG.Add("76", "Tororo"); + cc_reg_UG.Add("77", "Arua"); + cc_reg_UG.Add("78", "Iganga"); + cc_reg_UG.Add("79", "Kabarole"); + cc_reg_UG.Add("80", "Kaberamaido"); + cc_reg_UG.Add("81", "Kamwenge"); + cc_reg_UG.Add("82", "Kanungu"); + cc_reg_UG.Add("83", "Kayunga"); + cc_reg_UG.Add("84", "Kitgum"); + cc_reg_UG.Add("85", "Kyenjojo"); + cc_reg_UG.Add("86", "Mayuge"); + cc_reg_UG.Add("87", "Mbale"); + cc_reg_UG.Add("88", "Moroto"); + cc_reg_UG.Add("89", "Mpigi"); + cc_reg_UG.Add("90", "Mukono"); + cc_reg_UG.Add("91", "Nakapiripirit"); + cc_reg_UG.Add("92", "Pader"); + cc_reg_UG.Add("93", "Rukungiri"); + cc_reg_UG.Add("94", "Sironko"); + cc_reg_UG.Add("95", "Soroti"); + cc_reg_UG.Add("96", "Wakiso"); + cc_reg_UG.Add("97", "Yumbe"); + GEOIP_REGION_NAME.Add("UG", cc_reg_UG ); + Hashtable cc_reg_US = new Hashtable(); + cc_reg_US.Add("AA", "Armed Forces Americas"); + cc_reg_US.Add("AE", "Armed Forces Europe, Middle East, & Canada"); + cc_reg_US.Add("AK", "Alaska"); + cc_reg_US.Add("AL", "Alabama"); + cc_reg_US.Add("AP", "Armed Forces Pacific"); + cc_reg_US.Add("AR", "Arkansas"); + cc_reg_US.Add("AS", "American Samoa"); + cc_reg_US.Add("AZ", "Arizona"); + cc_reg_US.Add("CA", "California"); + cc_reg_US.Add("CO", "Colorado"); + cc_reg_US.Add("CT", "Connecticut"); + cc_reg_US.Add("DC", "District of Columbia"); + cc_reg_US.Add("DE", "Delaware"); + cc_reg_US.Add("FL", "Florida"); + cc_reg_US.Add("FM", "Federated States of Micronesia"); + cc_reg_US.Add("GA", "Georgia"); + cc_reg_US.Add("GU", "Guam"); + cc_reg_US.Add("HI", "Hawaii"); + cc_reg_US.Add("IA", "Iowa"); + cc_reg_US.Add("ID", "Idaho"); + cc_reg_US.Add("IL", "Illinois"); + cc_reg_US.Add("IN", "Indiana"); + cc_reg_US.Add("KS", "Kansas"); + cc_reg_US.Add("KY", "Kentucky"); + cc_reg_US.Add("LA", "Louisiana"); + cc_reg_US.Add("MA", "Massachusetts"); + cc_reg_US.Add("MD", "Maryland"); + cc_reg_US.Add("ME", "Maine"); + cc_reg_US.Add("MH", "Marshall Islands"); + cc_reg_US.Add("MI", "Michigan"); + cc_reg_US.Add("MN", "Minnesota"); + cc_reg_US.Add("MO", "Missouri"); + cc_reg_US.Add("MP", "Northern Mariana Islands"); + cc_reg_US.Add("MS", "Mississippi"); + cc_reg_US.Add("MT", "Montana"); + cc_reg_US.Add("NC", "North Carolina"); + cc_reg_US.Add("ND", "North Dakota"); + cc_reg_US.Add("NE", "Nebraska"); + cc_reg_US.Add("NH", "New Hampshire"); + cc_reg_US.Add("NJ", "New Jersey"); + cc_reg_US.Add("NM", "New Mexico"); + cc_reg_US.Add("NV", "Nevada"); + cc_reg_US.Add("NY", "New York"); + cc_reg_US.Add("OH", "Ohio"); + cc_reg_US.Add("OK", "Oklahoma"); + cc_reg_US.Add("OR", "Oregon"); + cc_reg_US.Add("PA", "Pennsylvania"); + cc_reg_US.Add("PR", "Puerto Rico"); + cc_reg_US.Add("PW", "Palau"); + cc_reg_US.Add("RI", "Rhode Island"); + cc_reg_US.Add("SC", "South Carolina"); + cc_reg_US.Add("SD", "South Dakota"); + cc_reg_US.Add("TN", "Tennessee"); + cc_reg_US.Add("TX", "Texas"); + cc_reg_US.Add("UT", "Utah"); + cc_reg_US.Add("VA", "Virginia"); + cc_reg_US.Add("VI", "Virgin Islands"); + cc_reg_US.Add("VT", "Vermont"); + cc_reg_US.Add("WA", "Washington"); + cc_reg_US.Add("WI", "Wisconsin"); + cc_reg_US.Add("WV", "West Virginia"); + cc_reg_US.Add("WY", "Wyoming"); + GEOIP_REGION_NAME.Add("US", cc_reg_US ); + Hashtable cc_reg_UY = new Hashtable(); + cc_reg_UY.Add("01", "Artigas"); + cc_reg_UY.Add("02", "Canelones"); + cc_reg_UY.Add("03", "Cerro Largo"); + cc_reg_UY.Add("04", "Colonia"); + cc_reg_UY.Add("05", "Durazno"); + cc_reg_UY.Add("06", "Flores"); + cc_reg_UY.Add("07", "Florida"); + cc_reg_UY.Add("08", "Lavalleja"); + cc_reg_UY.Add("09", "Maldonado"); + cc_reg_UY.Add("10", "Montevideo"); + cc_reg_UY.Add("11", "Paysandu"); + cc_reg_UY.Add("12", "Rio Negro"); + cc_reg_UY.Add("13", "Rivera"); + cc_reg_UY.Add("14", "Rocha"); + cc_reg_UY.Add("15", "Salto"); + cc_reg_UY.Add("16", "San Jose"); + cc_reg_UY.Add("17", "Soriano"); + cc_reg_UY.Add("18", "Tacuarembo"); + cc_reg_UY.Add("19", "Treinta y Tres"); + GEOIP_REGION_NAME.Add("UY", cc_reg_UY ); + Hashtable cc_reg_UZ = new Hashtable(); + cc_reg_UZ.Add("01", "Andijon"); + cc_reg_UZ.Add("02", "Bukhoro"); + cc_reg_UZ.Add("03", "Farghona"); + cc_reg_UZ.Add("04", "Jizzakh"); + cc_reg_UZ.Add("05", "Khorazm"); + cc_reg_UZ.Add("06", "Namangan"); + cc_reg_UZ.Add("07", "Nawoiy"); + cc_reg_UZ.Add("08", "Qashqadaryo"); + cc_reg_UZ.Add("09", "Qoraqalpoghiston"); + cc_reg_UZ.Add("10", "Samarqand"); + cc_reg_UZ.Add("11", "Sirdaryo"); + cc_reg_UZ.Add("12", "Surkhondaryo"); + cc_reg_UZ.Add("13", "Toshkent"); + cc_reg_UZ.Add("14", "Toshkent"); + GEOIP_REGION_NAME.Add("UZ", cc_reg_UZ ); + Hashtable cc_reg_VC = new Hashtable(); + cc_reg_VC.Add("01", "Charlotte"); + cc_reg_VC.Add("02", "Saint Andrew"); + cc_reg_VC.Add("03", "Saint David"); + cc_reg_VC.Add("04", "Saint George"); + cc_reg_VC.Add("05", "Saint Patrick"); + cc_reg_VC.Add("06", "Grenadines"); + GEOIP_REGION_NAME.Add("VC", cc_reg_VC ); + Hashtable cc_reg_VE = new Hashtable(); + cc_reg_VE.Add("01", "Amazonas"); + cc_reg_VE.Add("02", "Anzoategui"); + cc_reg_VE.Add("03", "Apure"); + cc_reg_VE.Add("04", "Aragua"); + cc_reg_VE.Add("05", "Barinas"); + cc_reg_VE.Add("06", "Bolivar"); + cc_reg_VE.Add("07", "Carabobo"); + cc_reg_VE.Add("08", "Cojedes"); + cc_reg_VE.Add("09", "Delta Amacuro"); + cc_reg_VE.Add("11", "Falcon"); + cc_reg_VE.Add("12", "Guarico"); + cc_reg_VE.Add("13", "Lara"); + cc_reg_VE.Add("14", "Merida"); + cc_reg_VE.Add("15", "Miranda"); + cc_reg_VE.Add("16", "Monagas"); + cc_reg_VE.Add("17", "Nueva Esparta"); + cc_reg_VE.Add("18", "Portuguesa"); + cc_reg_VE.Add("19", "Sucre"); + cc_reg_VE.Add("20", "Tachira"); + cc_reg_VE.Add("21", "Trujillo"); + cc_reg_VE.Add("22", "Yaracuy"); + cc_reg_VE.Add("23", "Zulia"); + cc_reg_VE.Add("24", "Dependencias Federales"); + cc_reg_VE.Add("25", "Distrito Federal"); + cc_reg_VE.Add("26", "Vargas"); + GEOIP_REGION_NAME.Add("VE", cc_reg_VE ); + Hashtable cc_reg_VN = new Hashtable(); + cc_reg_VN.Add("01", "An Giang"); + cc_reg_VN.Add("03", "Ben Tre"); + cc_reg_VN.Add("05", "Cao Bang"); + cc_reg_VN.Add("09", "Dong Thap"); + cc_reg_VN.Add("13", "Hai Phong"); + cc_reg_VN.Add("20", "Ho Chi Minh"); + cc_reg_VN.Add("21", "Kien Giang"); + cc_reg_VN.Add("23", "Lam Dong"); + cc_reg_VN.Add("24", "Long An"); + cc_reg_VN.Add("30", "Quang Ninh"); + cc_reg_VN.Add("32", "Son La"); + cc_reg_VN.Add("33", "Tay Ninh"); + cc_reg_VN.Add("34", "Thanh Hoa"); + cc_reg_VN.Add("35", "Thai Binh"); + cc_reg_VN.Add("37", "Tien Giang"); + cc_reg_VN.Add("39", "Lang Son"); + cc_reg_VN.Add("43", "Dong Nai"); + cc_reg_VN.Add("44", "Ha Noi"); + cc_reg_VN.Add("45", "Ba Ria-Vung Tau"); + cc_reg_VN.Add("46", "Binh Dinh"); + cc_reg_VN.Add("47", "Binh Thuan"); + cc_reg_VN.Add("49", "Gia Lai"); + cc_reg_VN.Add("50", "Ha Giang"); + cc_reg_VN.Add("52", "Ha Tinh"); + cc_reg_VN.Add("53", "Hoa Binh"); + cc_reg_VN.Add("54", "Khanh Hoa"); + cc_reg_VN.Add("55", "Kon Tum"); + cc_reg_VN.Add("58", "Nghe An"); + cc_reg_VN.Add("59", "Ninh Binh"); + cc_reg_VN.Add("60", "Ninh Thuan"); + cc_reg_VN.Add("61", "Phu Yen"); + cc_reg_VN.Add("62", "Quang Binh"); + cc_reg_VN.Add("63", "Quang Ngai"); + cc_reg_VN.Add("64", "Quang Tri"); + cc_reg_VN.Add("65", "Soc Trang"); + cc_reg_VN.Add("66", "Thua Thien-Hue"); + cc_reg_VN.Add("67", "Tra Vinh"); + cc_reg_VN.Add("68", "Tuyen Quang"); + cc_reg_VN.Add("69", "Vinh Long"); + cc_reg_VN.Add("70", "Yen Bai"); + cc_reg_VN.Add("71", "Bac Giang"); + cc_reg_VN.Add("72", "Bac Kan"); + cc_reg_VN.Add("73", "Bac Lieu"); + cc_reg_VN.Add("74", "Bac Ninh"); + cc_reg_VN.Add("75", "Binh Duong"); + cc_reg_VN.Add("76", "Binh Phuoc"); + cc_reg_VN.Add("77", "Ca Mau"); + cc_reg_VN.Add("78", "Da Nang"); + cc_reg_VN.Add("79", "Hai Duong"); + cc_reg_VN.Add("80", "Ha Nam"); + cc_reg_VN.Add("81", "Hung Yen"); + cc_reg_VN.Add("82", "Nam Dinh"); + cc_reg_VN.Add("83", "Phu Tho"); + cc_reg_VN.Add("84", "Quang Nam"); + cc_reg_VN.Add("85", "Thai Nguyen"); + cc_reg_VN.Add("86", "Vinh Phuc"); + cc_reg_VN.Add("87", "Can Tho"); + cc_reg_VN.Add("88", "Dac Lak"); + cc_reg_VN.Add("89", "Lai Chau"); + cc_reg_VN.Add("90", "Lao Cai"); + cc_reg_VN.Add("91", "Dak Nong"); + cc_reg_VN.Add("92", "Dien Bien"); + cc_reg_VN.Add("93", "Hau Giang"); + GEOIP_REGION_NAME.Add("VN", cc_reg_VN ); + Hashtable cc_reg_VU = new Hashtable(); + cc_reg_VU.Add("05", "Ambrym"); + cc_reg_VU.Add("06", "Aoba"); + cc_reg_VU.Add("07", "Torba"); + cc_reg_VU.Add("08", "Efate"); + cc_reg_VU.Add("09", "Epi"); + cc_reg_VU.Add("10", "Malakula"); + cc_reg_VU.Add("11", "Paama"); + cc_reg_VU.Add("12", "Pentecote"); + cc_reg_VU.Add("13", "Sanma"); + cc_reg_VU.Add("14", "Shepherd"); + cc_reg_VU.Add("15", "Tafea"); + cc_reg_VU.Add("16", "Malampa"); + cc_reg_VU.Add("17", "Penama"); + cc_reg_VU.Add("18", "Shefa"); + GEOIP_REGION_NAME.Add("VU", cc_reg_VU ); + Hashtable cc_reg_WS = new Hashtable(); + cc_reg_WS.Add("02", "Aiga-i-le-Tai"); + cc_reg_WS.Add("03", "Atua"); + cc_reg_WS.Add("04", "Fa"); + cc_reg_WS.Add("05", "Gaga"); + cc_reg_WS.Add("06", "Va"); + cc_reg_WS.Add("07", "Gagaifomauga"); + cc_reg_WS.Add("08", "Palauli"); + cc_reg_WS.Add("09", "Satupa"); + cc_reg_WS.Add("10", "Tuamasaga"); + cc_reg_WS.Add("11", "Vaisigano"); + GEOIP_REGION_NAME.Add("WS", cc_reg_WS ); + Hashtable cc_reg_YE = new Hashtable(); + cc_reg_YE.Add("01", "Abyan"); + cc_reg_YE.Add("02", "Adan"); + cc_reg_YE.Add("03", "Al Mahrah"); + cc_reg_YE.Add("04", "Hadramawt"); + cc_reg_YE.Add("05", "Shabwah"); + cc_reg_YE.Add("06", "Lahij"); + cc_reg_YE.Add("07", "Al Bayda'"); + cc_reg_YE.Add("08", "Al Hudaydah"); + cc_reg_YE.Add("09", "Al Jawf"); + cc_reg_YE.Add("10", "Al Mahwit"); + cc_reg_YE.Add("11", "Dhamar"); + cc_reg_YE.Add("12", "Hajjah"); + cc_reg_YE.Add("13", "Ibb"); + cc_reg_YE.Add("14", "Ma'rib"); + cc_reg_YE.Add("15", "Sa'dah"); + cc_reg_YE.Add("16", "San'a'"); + cc_reg_YE.Add("17", "Taizz"); + cc_reg_YE.Add("18", "Ad Dali"); + cc_reg_YE.Add("19", "Amran"); + cc_reg_YE.Add("20", "Al Bayda'"); + cc_reg_YE.Add("21", "Al Jawf"); + cc_reg_YE.Add("22", "Hajjah"); + cc_reg_YE.Add("23", "Ibb"); + cc_reg_YE.Add("24", "Lahij"); + cc_reg_YE.Add("25", "Taizz"); + GEOIP_REGION_NAME.Add("YE", cc_reg_YE ); + Hashtable cc_reg_ZA = new Hashtable(); + cc_reg_ZA.Add("01", "North-Western Province"); + cc_reg_ZA.Add("02", "KwaZulu-Natal"); + cc_reg_ZA.Add("03", "Free State"); + cc_reg_ZA.Add("05", "Eastern Cape"); + cc_reg_ZA.Add("06", "Gauteng"); + cc_reg_ZA.Add("07", "Mpumalanga"); + cc_reg_ZA.Add("08", "Northern Cape"); + cc_reg_ZA.Add("09", "Limpopo"); + cc_reg_ZA.Add("10", "North-West"); + cc_reg_ZA.Add("11", "Western Cape"); + GEOIP_REGION_NAME.Add("ZA", cc_reg_ZA ); + Hashtable cc_reg_ZM = new Hashtable(); + cc_reg_ZM.Add("01", "Western"); + cc_reg_ZM.Add("02", "Central"); + cc_reg_ZM.Add("03", "Eastern"); + cc_reg_ZM.Add("04", "Luapula"); + cc_reg_ZM.Add("05", "Northern"); + cc_reg_ZM.Add("06", "North-Western"); + cc_reg_ZM.Add("07", "Southern"); + cc_reg_ZM.Add("08", "Copperbelt"); + cc_reg_ZM.Add("09", "Lusaka"); + GEOIP_REGION_NAME.Add("ZM", cc_reg_ZM ); + Hashtable cc_reg_ZW = new Hashtable(); + cc_reg_ZW.Add("01", "Manicaland"); + cc_reg_ZW.Add("02", "Midlands"); + cc_reg_ZW.Add("03", "Mashonaland Central"); + cc_reg_ZW.Add("04", "Mashonaland East"); + cc_reg_ZW.Add("05", "Mashonaland West"); + cc_reg_ZW.Add("06", "Matabeleland North"); + cc_reg_ZW.Add("07", "Matabeleland South"); + cc_reg_ZW.Add("08", "Masvingo"); + cc_reg_ZW.Add("09", "Bulawayo"); + cc_reg_ZW.Add("10", "Harare"); + GEOIP_REGION_NAME.Add("ZW", cc_reg_ZW ); + } +} \ No newline at end of file diff --git a/Makefile b/Makefile index 2cdf2b4f75..9f399552de 100644 --- a/Makefile +++ b/Makefile @@ -71,6 +71,13 @@ fileformats_LIBS = $(COMMON_LIBS) thirdparty/Tao/Tao.Sdl.dll System.Windows.Form PROGRAMS = fileformats fileformats: $(fileformats_TARGET) +geoip_SRCS := $(shell find GeoIP/ -iname '*.cs') +geoip_TARGET = GeoIP.dll +geoip_KIND = library +geoip_LIBS = $(COMMON_LIBS) +PROGRAMS += geoip +geoip: $(geoip_TARGET) + game_SRCS := $(shell find OpenRA.Game/ -iname '*.cs') game_TARGET = OpenRA.Game.exe game_KIND = winexe @@ -125,8 +132,8 @@ STD_MOD_DEPS = $(STD_MOD_LIBS) $(ralint_TARGET) mod_ra_SRCS := $(shell find OpenRA.Mods.RA/ -iname '*.cs') mod_ra_TARGET = mods/ra/OpenRA.Mods.RA.dll mod_ra_KIND = library -mod_ra_DEPS = $(STD_MOD_DEPS) $(utility_TARGET) -mod_ra_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(utility_TARGET) +mod_ra_DEPS = $(STD_MOD_DEPS) $(utility_TARGET) $(geoip_TARGET) +mod_ra_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(utility_TARGET) $(geoip_TARGET) mod_ra_EXTRA_CMDS = mono --debug RALint.exe ra PROGRAMS += mod_ra mod_ra: $(mod_ra_TARGET) @@ -292,6 +299,7 @@ install-core: default @$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k" @$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat" + @$(INSTALL_DATA) "GeoIP.dat" "$(DATA_INSTALL_DIR)/GeoIP.dat" @$(INSTALL_DATA) AUTHORS "$(DATA_INSTALL_DIR)/AUTHORS" @$(CP_R) glsl "$(DATA_INSTALL_DIR)" diff --git a/OpenRA.sln b/OpenRA.sln index 761550a6dc..97e078699f 100644 --- a/OpenRA.sln +++ b/OpenRA.sln @@ -35,6 +35,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.D2k", "OpenRA.M EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GeoIP", "GeoIP\GeoIP.csproj", "{021DDD6A-A608-424C-9A9A-252D8A9989E0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -51,6 +53,14 @@ Global {00038B75-405B-44F5-8691-BD2546DBE224}.Release|Any CPU.Build.0 = Release|Any CPU {00038B75-405B-44F5-8691-BD2546DBE224}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {00038B75-405B-44F5-8691-BD2546DBE224}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Release|Any CPU.Build.0 = Release|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {021DDD6A-A608-424C-9A9A-252D8A9989E0}.Release|Mixed Platforms.Build.0 = Release|Any CPU {0C4AEC1A-E7D5-4114-8CCD-3EEC82872981}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0C4AEC1A-E7D5-4114-8CCD-3EEC82872981}.Debug|Any CPU.Build.0 = Debug|Any CPU {0C4AEC1A-E7D5-4114-8CCD-3EEC82872981}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -157,6 +167,188 @@ Global EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution StartupItem = OpenRA.Game\OpenRA.Game.csproj + Policies = $0 + $0.DotNetNamingPolicy = $1 + $1.DirectoryNamespaceAssociation = None + $1.ResourceNamePolicy = FileFormatDefault + $0.TextStylePolicy = $2 + $2.TabsToSpaces = False + $2.NoTabsAfterNonTabs = True + $2.inheritsSet = VisualStudio + $2.inheritsScope = text/plain + $2.scope = text/x-csharp + $0.CSharpFormattingPolicy = $3 + $3.IndentSwitchBody = True + $3.AnonymousMethodBraceStyle = NextLine + $3.PropertyBraceStyle = NextLine + $3.PropertyGetBraceStyle = NextLine + $3.PropertySetBraceStyle = NextLine + $3.EventBraceStyle = NextLine + $3.EventAddBraceStyle = NextLine + $3.EventRemoveBraceStyle = NextLine + $3.StatementBraceStyle = NextLine + $3.ArrayInitializerBraceStyle = NextLine + $3.BeforeMethodDeclarationParentheses = False + $3.BeforeMethodCallParentheses = False + $3.BeforeConstructorDeclarationParentheses = False + $3.BeforeDelegateDeclarationParentheses = False + $3.NewParentheses = False + $3.inheritsSet = Mono + $3.inheritsScope = text/x-csharp + $3.scope = text/x-csharp + $0.TextStylePolicy = $4 + $4.inheritsSet = VisualStudio + $4.inheritsScope = text/plain + $4.scope = text/plain + $0.TextStylePolicy = $5 + $5.inheritsSet = null + $5.scope = text/microsoft-resx + $0.XmlFormattingPolicy = $6 + $6.inheritsSet = null + $6.scope = text/microsoft-resx + $0.TextStylePolicy = $7 + $7.inheritsSet = Mono + $7.inheritsScope = text/plain + $7.scope = application/xml + $0.XmlFormattingPolicy = $8 + $8.inheritsSet = Mono + $8.inheritsScope = application/xml + $8.scope = application/xml + $0.StandardHeader = $9 + $9.Text = @#region Copyright & License Information\n/*\n * Copyright 2007-${Year} The OpenRA Developers (see AUTHORS)\n * This file is part of OpenRA, which is free software. It is made\n * available to you under the terms of the GNU General Public License\n * as published by the Free Software Foundation. For more information,\n * see COPYING.\n */\n#endregion + $9.IncludeInNewFiles = True + $0.NameConventionPolicy = $10 + $10.Rules = $11 + $11.NamingRule = $12 + $12.Name = Namespaces + $12.AffectedEntity = Namespace + $12.VisibilityMask = VisibilityMask + $12.NamingStyle = PascalCase + $12.IncludeInstanceMembers = True + $12.IncludeStaticEntities = True + $11.NamingRule = $13 + $13.Name = Types + $13.AffectedEntity = Class, Struct, Enum, Delegate + $13.VisibilityMask = Public + $13.NamingStyle = PascalCase + $13.IncludeInstanceMembers = True + $13.IncludeStaticEntities = True + $11.NamingRule = $14 + $14.Name = Interfaces + $14.RequiredPrefixes = $15 + $15.String = I + $14.AffectedEntity = Interface + $14.VisibilityMask = Public + $14.NamingStyle = PascalCase + $14.IncludeInstanceMembers = True + $14.IncludeStaticEntities = True + $11.NamingRule = $16 + $16.Name = Attributes + $16.RequiredSuffixes = $17 + $17.String = Attribute + $16.AffectedEntity = CustomAttributes + $16.VisibilityMask = Public + $16.NamingStyle = PascalCase + $16.IncludeInstanceMembers = True + $16.IncludeStaticEntities = True + $11.NamingRule = $18 + $18.Name = Event Arguments + $18.RequiredSuffixes = $19 + $19.String = EventArgs + $18.AffectedEntity = CustomEventArgs + $18.VisibilityMask = Public + $18.NamingStyle = PascalCase + $18.IncludeInstanceMembers = True + $18.IncludeStaticEntities = True + $11.NamingRule = $20 + $20.Name = Exceptions + $20.RequiredSuffixes = $21 + $21.String = Exception + $20.AffectedEntity = CustomExceptions + $20.VisibilityMask = VisibilityMask + $20.NamingStyle = PascalCase + $20.IncludeInstanceMembers = True + $20.IncludeStaticEntities = True + $11.NamingRule = $22 + $22.Name = Methods + $22.AffectedEntity = Methods + $22.VisibilityMask = Protected, Public + $22.NamingStyle = PascalCase + $22.IncludeInstanceMembers = True + $22.IncludeStaticEntities = True + $11.NamingRule = $23 + $23.Name = Static Readonly Fields + $23.AffectedEntity = ReadonlyField + $23.VisibilityMask = Protected, Public + $23.NamingStyle = PascalCase + $23.IncludeInstanceMembers = False + $23.IncludeStaticEntities = True + $11.NamingRule = $24 + $24.Name = Fields + $24.AffectedEntity = Field + $24.VisibilityMask = Protected, Public + $24.NamingStyle = PascalCase + $24.IncludeInstanceMembers = True + $24.IncludeStaticEntities = True + $11.NamingRule = $25 + $25.Name = ReadOnly Fields + $25.AffectedEntity = ReadonlyField + $25.VisibilityMask = Protected, Public + $25.NamingStyle = PascalCase + $25.IncludeInstanceMembers = True + $25.IncludeStaticEntities = False + $11.NamingRule = $26 + $26.Name = Constant Fields + $26.AffectedEntity = ConstantField + $26.VisibilityMask = Protected, Public + $26.NamingStyle = PascalCase + $26.IncludeInstanceMembers = True + $26.IncludeStaticEntities = True + $11.NamingRule = $27 + $27.Name = Properties + $27.AffectedEntity = Property + $27.VisibilityMask = Protected, Public + $27.NamingStyle = PascalCase + $27.IncludeInstanceMembers = True + $27.IncludeStaticEntities = True + $11.NamingRule = $28 + $28.Name = Events + $28.AffectedEntity = Event + $28.VisibilityMask = Protected, Public + $28.NamingStyle = PascalCase + $28.IncludeInstanceMembers = True + $28.IncludeStaticEntities = True + $11.NamingRule = $29 + $29.Name = Enum Members + $29.AffectedEntity = EnumMember + $29.VisibilityMask = VisibilityMask + $29.NamingStyle = PascalCase + $29.IncludeInstanceMembers = True + $29.IncludeStaticEntities = True + $11.NamingRule = $30 + $30.Name = Parameters + $30.AffectedEntity = Parameter + $30.VisibilityMask = VisibilityMask + $30.NamingStyle = CamelCase + $30.IncludeInstanceMembers = True + $30.IncludeStaticEntities = True + $11.NamingRule = $31 + $31.Name = Type Parameters + $31.RequiredPrefixes = $32 + $32.String = T + $31.AffectedEntity = TypeParameter + $31.VisibilityMask = VisibilityMask + $31.NamingStyle = PascalCase + $31.IncludeInstanceMembers = True + $31.IncludeStaticEntities = True + $0.VersionControlPolicy = $33 + $33.inheritsSet = Mono + $0.ChangeLogPolicy = $34 + $34.UpdateMode = None + $34.MessageStyle = $35 + $35.LineAlign = 0 + $34.inheritsSet = Mono + outputpath = . EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/packaging/package-all.sh b/packaging/package-all.sh index 93c62b66b1..b0e4b3a92e 100755 --- a/packaging/package-all.sh +++ b/packaging/package-all.sh @@ -34,7 +34,7 @@ FILES=('OpenRA.Game.exe' 'OpenRA.Editor.exe' 'OpenRA.Utility.exe' \ 'cg' 'glsl' 'mods/ra' 'mods/cnc' 'mods/d2k' \ 'AUTHORS' 'COPYING' 'HACKING' 'INSTALL' 'CHANGELOG' \ 'README.html' 'CONTRIBUTING.html' 'DOCUMENTATION.html' \ -'global mix database.dat') +'global mix database.dat' 'GeoIP.dll' 'GeoIP.dat') echo "Copying files..." for i in "${FILES[@]}"; do diff --git a/packaging/windows/OpenRA.nsi b/packaging/windows/OpenRA.nsi index 43755c768b..f40db81a23 100644 --- a/packaging/windows/OpenRA.nsi +++ b/packaging/windows/OpenRA.nsi @@ -94,6 +94,8 @@ Section "Client" Client File "${SRCDIR}\Tao.*.dll" File "${SRCDIR}\SharpFont.dll" File "${SRCDIR}\global mix database.dat" + File "${SRCDIR}\GeoIP.dll + File "${SRCDIR}\GeoIP.dat" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$StartMenuFolder" @@ -280,6 +282,8 @@ Function ${UN}Clean Delete $INSTDIR\cgGL.dll Delete $INSTDIR\zlib1.dll Delete "$INSTDIR\global mix database.dat" + Delete $INSTDIR\GeoIP.dat + Delete $INSTDIR\GeoIP.dll DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenRA" Delete $INSTDIR\uninstaller.exe RMDir $INSTDIR