From e0db4a25a0a9d50b2f39740602e7246902633a72 Mon Sep 17 00:00:00 2001 From: femsci Date: Sun, 24 Dec 2023 00:47:53 +0100 Subject: [PATCH] Add dataset, create populating script --- .gitignore | 1 + countrydata.csv | 250 ++++++++++++++++++++++++ populate.sh | 23 +++ src/Nyanbyte.Countries/Country.cs | 27 +++ src/Nyanbyte.Countries/CountryCode.cs | 8 + src/Nyanbyte.Countries/CountryData.cs | 263 ++++++++++++++++++++++++++ 6 files changed, 572 insertions(+) create mode 100644 countrydata.csv create mode 100755 populate.sh create mode 100644 src/Nyanbyte.Countries/Country.cs create mode 100644 src/Nyanbyte.Countries/CountryData.cs diff --git a/.gitignore b/.gitignore index afec7c2..dcc8580 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ **/obj/ **/bin/ +tmp-data.txt diff --git a/countrydata.csv b/countrydata.csv new file mode 100644 index 0000000..f43f437 --- /dev/null +++ b/countrydata.csv @@ -0,0 +1,250 @@ +ISO3166-1-numeric,ISO3166-1-alpha2,ISO3166-1-alpha3,ITU,currency_code,currency_name,currency_numeric,official_name,customary_name,TLD,continent,capital +004,AF,AFG,93,AFN,Afghani,971,Afghanistan,Afghanistan,af,AS,Kabul +008,AL,ALB,355,ALL,Lek,008,Albania,Albania,al,EU,Tirana +012,DZ,DZA,213,DZD,Algerian Dinar,012,Algeria,Algeria,dz,AF,Algiers +016,AS,ASM,1-684,USD,US Dollar,840,American Samoa,American Samoa,as,OC,Pago Pago +020,AD,AND,376,EUR,Euro,978,Andorra,Andorra,ad,EU,Andorra la Vella +024,AO,AGO,244,AOA,Kwanza,973,Angola,Angola,ao,AF,Luanda +660,AI,AIA,1-264,XCD,East Caribbean Dollar,951,Anguilla,Anguilla,ai,NA,The Valley +010,AQ,ATA,672,,,,Antarctica,Antarctica,aq,AN, +028,AG,ATG,1-268,XCD,East Caribbean Dollar,951,Antigua and Barbuda,Antigua & Barbuda,ag,NA,St. John's +032,AR,ARG,54,ARS,Argentine Peso,032,Argentina,Argentina,ar,SA,Buenos Aires +051,AM,ARM,374,AMD,Armenian Dram,051,Armenia,Armenia,am,AS,Yerevan +533,AW,ABW,297,AWG,Aruban Florin,533,Aruba,Aruba,aw,NA,Oranjestad +036,AU,AUS,61,AUD,Australian Dollar,036,Australia,Australia,au,OC,Canberra +040,AT,AUT,43,EUR,Euro,978,Austria,Austria,at,EU,Vienna +031,AZ,AZE,994,AZN,Azerbaijan Manat,944,Azerbaijan,Azerbaijan,az,AS,Baku +044,BS,BHS,1-242,BSD,Bahamian Dollar,044,Bahamas,Bahamas,bs,NA,Nassau +048,BH,BHR,973,BHD,Bahraini Dinar,048,Bahrain,Bahrain,bh,AS,Manama +050,BD,BGD,880,BDT,Taka,050,Bangladesh,Bangladesh,bd,AS,Dhaka +052,BB,BRB,1-246,BBD,Barbados Dollar,052,Barbados,Barbados,bb,NA,Bridgetown +112,BY,BLR,375,BYN,Belarusian Ruble,933,Belarus,Belarus,by,EU,Minsk +056,BE,BEL,32,EUR,Euro,978,Belgium,Belgium,be,EU,Brussels +084,BZ,BLZ,501,BZD,Belize Dollar,084,Belize,Belize,bz,NA,Belmopan +204,BJ,BEN,229,XOF,CFA Franc BCEAO,952,Benin,Benin,bj,AF,Porto-Novo +060,BM,BMU,1-441,BMD,Bermudian Dollar,060,Bermuda,Bermuda,bm,NA,Hamilton +064,BT,BTN,975,BTN,Ngultrum,064,Bhutan,Bhutan,bt,AS,Thimphu +068,BO,BOL,591,BOB,Boliviano,068,Bolivia (Plurinational State of),Bolivia,bo,SA,Sucre +535,BQ,BES,599,USD,US Dollar,840,Bonaire Sint Eustatius and Saba,Caribbean Netherlands,bq,NA, +070,BA,BIH,387,BAM,Convertible Mark,977,Bosnia and Herzegovina,Bosnia,ba,EU,Sarajevo +072,BW,BWA,267,BWP,Pula,072,Botswana,Botswana,bw,AF,Gaborone +074,BV,BVT,47,NOK,Norwegian Krone,578,Bouvet Island,Bouvet Island,bv,AN, +076,BR,BRA,55,BRL,Brazilian Real,986,Brazil,Brazil,br,SA,Brasilia +086,IO,IOT,246,USD,US Dollar,840,British Indian Ocean Territory,British Indian Ocean Territory,io,AS,Diego Garcia +092,VG,VGB,1-284,USD,US Dollar,840,British Virgin Islands,British Virgin Islands,vg,NA,Road Town +096,BN,BRN,673,BND,Brunei Dollar,096,Brunei Darussalam,Brunei,bn,AS,Bandar Seri Begawan +100,BG,BGR,359,BGN,Bulgarian Lev,975,Bulgaria,Bulgaria,bg,EU,Sofia +854,BF,BFA,226,XOF,CFA Franc BCEAO,952,Burkina Faso,Burkina Faso,bf,AF,Ouagadougou +108,BI,BDI,257,BIF,Burundi Franc,108,Burundi,Burundi,bi,AF,Bujumbura +132,CV,CPV,238,CVE,Cabo Verde Escudo,132,Cabo Verde,Cape Verde,cv,AF,Praia +116,KH,KHM,855,KHR,Riel,116,Cambodia,Cambodia,kh,AS,Phnom Penh +120,CM,CMR,237,XAF,CFA Franc BEAC,950,Cameroon,Cameroon,cm,AF,Yaounde +124,CA,CAN,1,CAD,Canadian Dollar,124,Canada,Canada,ca,NA,Ottawa +136,KY,CYM,1-345,KYD,Cayman Islands Dollar,136,Cayman Islands,Cayman Islands,ky,NA,George Town +140,CF,CAF,236,XAF,CFA Franc BEAC,950,Central African Republic,Central African Republic,cf,AF,Bangui +148,TD,TCD,235,XAF,CFA Franc BEAC,950,Chad,Chad,td,AF,N'Djamena +152,CL,CHL,56,CLP,Chilean Peso,152,Chile,Chile,cl,SA,Santiago +156,CN,CHN,86,CNY,Yuan Renminbi,156,China,China,cn,AS,Beijing +344,HK,HKG,852,HKD,Hong Kong Dollar,344,China Hong Kong Special Administrative Region,Hong Kong,hk,AS,Hong Kong +446,MO,MAC,853,MOP,Pataca,446,China Macao Special Administrative Region,Macau,mo,AS,Macao +162,CX,CXR,61,AUD,Australian Dollar,036,Christmas Island,Christmas Island,cx,OC,Flying Fish Cove +166,CC,CCK,61,AUD,Australian Dollar,036,Cocos (Keeling) Islands,Cocos (Keeling) Islands,cc,AS,West Island +170,CO,COL,57,COP,Colombian Peso,170,Colombia,Colombia,co,SA,Bogota +174,KM,COM,269,KMF,Comorian Franc,174,Comoros,Comoros,km,AF,Moroni +178,CG,COG,242,XAF,CFA Franc BEAC,950,Congo,Congo - Brazzaville,cg,AF,Brazzaville +184,CK,COK,682,NZD,New Zealand Dollar,554,Cook Islands,Cook Islands,ck,OC,Avarua +188,CR,CRI,506,CRC,Costa Rican Colon,188,Costa Rica,Costa Rica,cr,NA,San Jose +191,HR,HRV,385,HRK,Kuna,191,Croatia,Croatia,hr,EU,Zagreb +192,CU,CUB,53,CUP,Cuban Peso,192,Cuba,Cuba,cu,NA,Havana +531,CW,CUW,599,ANG,Netherlands Antillean Guilder,532,Curaçao,Curaçao,cw,NA,Willemstad +196,CY,CYP,357,EUR,Euro,978,Cyprus,Cyprus,cy,EU,Nicosia +203,CZ,CZE,420,CZK,Czech Koruna,203,Czechia,Czechia,cz,EU,Prague +384,CI,CIV,225,XOF,CFA Franc BCEAO,952,Côte d'Ivoire,Côte d’Ivoire,ci,AF,Yamoussoukro +408,KP,PRK,850,KPW,North Korean Won,408,Democratic People's Republic of Korea,North Korea,kp,AS,Pyongyang +180,CD,COD,243,CDF,Congolese Franc,976,Democratic Republic of the Congo,Congo - Kinshasa,cd,AF,Kinshasa +208,DK,DNK,45,DKK,Danish Krone,208,Denmark,Denmark,dk,EU,Copenhagen +262,DJ,DJI,253,DJF,Djibouti Franc,262,Djibouti,Djibouti,dj,AF,Djibouti +212,DM,DMA,1-767,XCD,East Caribbean Dollar,951,Dominica,Dominica,dm,NA,Roseau +214,DO,DOM,1-809,DOP,Dominican Peso,214,Dominican Republic,Dominican Republic,do,NA,Santo Domingo +218,EC,ECU,593,USD,US Dollar,840,Ecuador,Ecuador,ec,SA,Quito +818,EG,EGY,20,EGP,Egyptian Pound,818,Egypt,Egypt,eg,AF,Cairo +222,SV,SLV,503,SVC,El Salvador Colon,222,El Salvador,El Salvador,sv,NA,San Salvador +226,GQ,GNQ,240,XAF,CFA Franc BEAC,950,Equatorial Guinea,Equatorial Guinea,gq,AF,Malabo +232,ER,ERI,291,ERN,Nakfa,232,Eritrea,Eritrea,er,AF,Asmara +233,EE,EST,372,EUR,Euro,978,Estonia,Estonia,ee,EU,Tallinn +748,SZ,SWZ,268,SZL,Lilangeni,748,Eswatini,Eswatini,sz,AF,Mbabane +231,ET,ETH,251,ETB,Ethiopian Birr,230,Ethiopia,Ethiopia,et,AF,Addis Ababa +238,FK,FLK,500,FKP,Falkland Islands pound,238,Falkland Islands (Malvinas),Falkland Islands,fk,SA,Stanley +234,FO,FRO,298,DKK,Danish Krone,208,Faroe Islands,Faroe Islands,fo,EU,Torshavn +242,FJ,FJI,679,FJD,Fiji Dollar,242,Fiji,Fiji,fj,OC,Suva +246,FI,FIN,358,EUR,Euro,978,Finland,Finland,fi,EU,Helsinki +250,FR,FRA,33,EUR,Euro,978,France,France,fr,EU,Paris +254,GF,GUF,594,EUR,Euro,978,French Guiana,French Guiana,gf,SA,Cayenne +258,PF,PYF,689,XPF,CFP Franc,953,French Polynesia,French Polynesia,pf,OC,Papeete +260,TF,ATF,262,EUR,Euro,978,French Southern Territories,French Southern Territories,tf,AN,Port-aux-Francais +266,GA,GAB,241,XAF,CFA Franc BEAC,950,Gabon,Gabon,ga,AF,Libreville +270,GM,GMB,220,GMD,Dalasi,270,Gambia,Gambia,gm,AF,Banjul +268,GE,GEO,995,GEL,Lari,981,Georgia,Georgia,ge,AS,Tbilisi +276,DE,DEU,49,EUR,Euro,978,Germany,Germany,de,EU,Berlin +288,GH,GHA,233,GHS,Ghana Cedi,936,Ghana,Ghana,gh,AF,Accra +292,GI,GIB,350,GIP,Gibraltar Pound,292,Gibraltar,Gibraltar,gi,EU,Gibraltar +300,GR,GRC,30,EUR,Euro,978,Greece,Greece,gr,EU,Athens +304,GL,GRL,299,DKK,Danish Krone,208,Greenland,Greenland,gl,NA,Nuuk +308,GD,GRD,1-473,XCD,East Caribbean Dollar,951,Grenada,Grenada,gd,NA,St. George's +312,GP,GLP,590,EUR,Euro,978,Guadeloupe,Guadeloupe,gp,NA,Basse-Terre +316,GU,GUM,1-671,USD,US Dollar,840,Guam,Guam,gu,OC,Hagatna +320,GT,GTM,502,GTQ,Quetzal,320,Guatemala,Guatemala,gt,NA,Guatemala City +831,GG,GGY,44,GBP,Pound Sterling,826,Guernsey,Guernsey,gg,EU,St Peter Port +324,GN,GIN,224,GNF,Guinean Franc,324,Guinea,Guinea,gn,AF,Conakry +624,GW,GNB,245,XOF,CFA Franc BCEAO,952,Guinea-Bissau,Guinea-Bissau,gw,AF,Bissau +328,GY,GUY,592,GYD,Guyana Dollar,328,Guyana,Guyana,gy,SA,Georgetown +332,HT,HTI,509,HTG,Gourde,332,Haiti,Haiti,ht,NA,Port-au-Prince +334,HM,HMD,672,AUD,Australian Dollar,036,Heard Island and McDonald Islands,Heard & McDonald Islands,hm,AN, +336,VA,VAT,39-06,EUR,Euro,978,Holy See,Vatican City,va,EU,Vatican City +340,HN,HND,504,HNL,Lempira,340,Honduras,Honduras,hn,NA,Tegucigalpa +348,HU,HUN,36,HUF,Forint,348,Hungary,Hungary,hu,EU,Budapest +352,IS,ISL,354,ISK,Iceland Krona,352,Iceland,Iceland,is,EU,Reykjavik +356,IN,IND,91,INR,Indian Rupee,356,India,India,in,AS,New Delhi +360,ID,IDN,62,IDR,Rupiah,360,Indonesia,Indonesia,id,AS,Jakarta +364,IR,IRN,98,IRR,Iranian Rial,364,Iran (Islamic Republic of),Iran,ir,AS,Tehran +368,IQ,IRQ,964,IQD,Iraqi Dinar,368,Iraq,Iraq,iq,AS,Baghdad +372,IE,IRL,353,EUR,Euro,978,Ireland,Ireland,ie,EU,Dublin +833,IM,IMN,44,GBP,Pound Sterling,826,Isle of Man,Isle of Man,im,EU,Douglas +376,IL,ISR,972,ILS,New Israeli Sheqel,376,Israel,Israel,il,AS,Jerusalem +380,IT,ITA,39,EUR,Euro,978,Italy,Italy,it,EU,Rome +388,JM,JAM,1-876,JMD,Jamaican Dollar,388,Jamaica,Jamaica,jm,NA,Kingston +392,JP,JPN,81,JPY,Yen,392,Japan,Japan,jp,AS,Tokyo +832,JE,JEY,44,GBP,Pound Sterling,826,Jersey,Jersey,je,EU,Saint Helier +400,JO,JOR,962,JOD,Jordanian Dinar,400,Jordan,Jordan,jo,AS,Amman +398,KZ,KAZ,7,KZT,Tenge,398,Kazakhstan,Kazakhstan,kz,AS,Astana +404,KE,KEN,254,KES,Kenyan Shilling,404,Kenya,Kenya,ke,AF,Nairobi +296,KI,KIR,686,AUD,Australian Dollar,036,Kiribati,Kiribati,ki,OC,Tarawa +414,KW,KWT,965,KWD,Kuwaiti Dinar,414,Kuwait,Kuwait,kw,AS,Kuwait City +417,KG,KGZ,996,KGS,Som,417,Kyrgyzstan,Kyrgyzstan,kg,AS,Bishkek +418,LA,LAO,856,LAK,Lao Kip,418,Lao People's Democratic Republic,Laos,la,AS,Vientiane +428,LV,LVA,371,EUR,Euro,978,Latvia,Latvia,lv,EU,Riga +422,LB,LBN,961,LBP,Lebanese Pound,422,Lebanon,Lebanon,lb,AS,Beirut +426,LS,LSO,266,LSL,Loti,426,Lesotho,Lesotho,ls,AF,Maseru +430,LR,LBR,231,LRD,Liberian Dollar,430,Liberia,Liberia,lr,AF,Monrovia +434,LY,LBY,218,LYD,Libyan Dinar,434,Libya,Libya,ly,AF,Tripoli +438,LI,LIE,423,CHF,Swiss Franc,756,Liechtenstein,Liechtenstein,li,EU,Vaduz +440,LT,LTU,370,EUR,Euro,978,Lithuania,Lithuania,lt,EU,Vilnius +442,LU,LUX,352,EUR,Euro,978,Luxembourg,Luxembourg,lu,EU,Luxembourg +450,MG,MDG,261,MGA,Malagasy Ariary,969,Madagascar,Madagascar,mg,AF,Antananarivo +454,MW,MWI,265,MWK,Malawi Kwacha,454,Malawi,Malawi,mw,AF,Lilongwe +458,MY,MYS,60,MYR,Malaysian Ringgit,458,Malaysia,Malaysia,my,AS,Kuala Lumpur +462,MV,MDV,960,MVR,Rufiyaa,462,Maldives,Maldives,mv,AS,Male +466,ML,MLI,223,XOF,CFA Franc BCEAO,952,Mali,Mali,ml,AF,Bamako +470,MT,MLT,356,EUR,Euro,978,Malta,Malta,mt,EU,Valletta +584,MH,MHL,692,USD,US Dollar,840,Marshall Islands,Marshall Islands,mh,OC,Majuro +474,MQ,MTQ,596,EUR,Euro,978,Martinique,Martinique,mq,NA,Fort-de-France +478,MR,MRT,222,MRU,Ouguiya,929,Mauritania,Mauritania,mr,AF,Nouakchott +480,MU,MUS,230,MUR,Mauritius Rupee,480,Mauritius,Mauritius,mu,AF,Port Louis +175,YT,MYT,262,EUR,Euro,978,Mayotte,Mayotte,yt,AF,Mamoudzou +484,MX,MEX,52,MXN,Mexican Peso,484,Mexico,Mexico,mx,NA,Mexico City +583,FM,FSM,691,USD,US Dollar,840,Micronesia (Federated States of),Micronesia,fm,OC,Palikir +492,MC,MCO,377,EUR,Euro,978,Monaco,Monaco,mc,EU,Monaco +496,MN,MNG,976,MNT,Tugrik,496,Mongolia,Mongolia,mn,AS,Ulan Bator +499,ME,MNE,382,EUR,Euro,978,Montenegro,Montenegro,me,EU,Podgorica +500,MS,MSR,1-664,XCD,East Caribbean Dollar,951,Montserrat,Montserrat,ms,NA,Plymouth +504,MA,MAR,212,MAD,Moroccan Dirham,504,Morocco,Morocco,ma,AF,Rabat +508,MZ,MOZ,258,MZN,Mozambique Metical,943,Mozambique,Mozambique,mz,AF,Maputo +104,MM,MMR,95,MMK,Kyat,104,Myanmar,Myanmar,mm,AS,Nay Pyi Taw +516,NA,NAM,264,NAD,Namibia Dollar,516,Namibia,Namibia,na,AF,Windhoek +520,NR,NRU,674,AUD,Australian Dollar,036,Nauru,Nauru,nr,OC,Yaren +524,NP,NPL,977,NPR,Nepalese Rupee,524,Nepal,Nepal,np,AS,Kathmandu +528,NL,NLD,31,EUR,Euro,978,Netherlands,Netherlands,nl,EU,Amsterdam +540,NC,NCL,687,XPF,CFP Franc,953,New Caledonia,New Caledonia,nc,OC,Noumea +554,NZ,NZL,64,NZD,New Zealand Dollar,554,New Zealand,New Zealand,nz,OC,Wellington +558,NI,NIC,505,NIO,Cordoba Oro,558,Nicaragua,Nicaragua,ni,NA,Managua +562,NE,NER,227,XOF,CFA Franc BCEAO,952,Niger,Niger,ne,AF,Niamey +566,NG,NGA,234,NGN,Naira,566,Nigeria,Nigeria,ng,AF,Abuja +570,NU,NIU,683,NZD,New Zealand Dollar,554,Niue,Niue,nu,OC,Alofi +574,NF,NFK,672,AUD,Australian Dollar,036,Norfolk Island,Norfolk Island,nf,OC,Kingston +580,MP,MNP,1-670,USD,US Dollar,840,Northern Mariana Islands,Northern Mariana Islands,mp,OC,Saipan +578,NO,NOR,47,NOK,Norwegian Krone,578,Norway,Norway,no,EU,Oslo +512,OM,OMN,968,OMR,Rial Omani,512,Oman,Oman,om,AS,Muscat +586,PK,PAK,92,PKR,Pakistan Rupee,586,Pakistan,Pakistan,pk,AS,Islamabad +585,PW,PLW,680,USD,US Dollar,840,Palau,Palau,pw,OC,Melekeok +591,PA,PAN,507,PAB,Balboa,590,Panama,Panama,pa,NA,Panama City +598,PG,PNG,675,PGK,Kina,598,Papua New Guinea,Papua New Guinea,pg,OC,Port Moresby +600,PY,PRY,595,PYG,Guarani,600,Paraguay,Paraguay,py,SA,Asuncion +604,PE,PER,51,PEN,Sol,604,Peru,Peru,pe,SA,Lima +608,PH,PHL,63,PHP,Philippine Peso,608,Philippines,Philippines,ph,AS,Manila +612,PN,PCN,870,NZD,New Zealand Dollar,554,Pitcairn,Pitcairn Islands,pn,OC,Adamstown +616,PL,POL,48,PLN,Zloty,985,Poland,Poland,pl,EU,Warsaw +620,PT,PRT,351,EUR,Euro,978,Portugal,Portugal,pt,EU,Lisbon +630,PR,PRI,1,USD,US Dollar,840,Puerto Rico,Puerto Rico,pr,NA,San Juan +634,QA,QAT,974,QAR,Qatari Rial,634,Qatar,Qatar,qa,AS,Doha +410,KR,KOR,82,KRW,Won,410,Republic of Korea,South Korea,kr,AS,Seoul +498,MD,MDA,373,MDL,Moldovan Leu,498,Republic of Moldova,Moldova,md,EU,Chisinau +642,RO,ROU,40,RON,Romanian Leu,946,Romania,Romania,ro,EU,Bucharest +643,RU,RUS,7,RUB,Russian Ruble,643,Russian Federation,Russia,ru,EU,Moscow +646,RW,RWA,250,RWF,Rwanda Franc,646,Rwanda,Rwanda,rw,AF,Kigali +638,RE,REU,262,EUR,Euro,978,Réunion,Réunion,re,AF,Saint-Denis +652,BL,BLM,590,EUR,Euro,978,Saint Barthélemy,St. Barthélemy,gp,NA,Gustavia +654,SH,SHN,290,SHP,Saint Helena Pound,654,Saint Helena,St. Helena,sh,AF,Jamestown +659,KN,KNA,1-869,XCD,East Caribbean Dollar,951,Saint Kitts and Nevis,St. Kitts & Nevis,kn,NA,Basseterre +662,LC,LCA,1-758,XCD,East Caribbean Dollar,951,Saint Lucia,St. Lucia,lc,NA,Castries +663,MF,MAF,590,EUR,Euro,978,Saint Martin (French Part),St. Martin,gp,NA,Marigot +666,PM,SPM,508,EUR,Euro,978,Saint Pierre and Miquelon,St. Pierre & Miquelon,pm,NA,Saint-Pierre +670,VC,VCT,1-784,XCD,East Caribbean Dollar,951,Saint Vincent and the Grenadines,St. Vincent & Grenadines,vc,NA,Kingstown +882,WS,WSM,685,WST,Tala,882,Samoa,Samoa,ws,OC,Apia +674,SM,SMR,378,EUR,Euro,978,San Marino,San Marino,sm,EU,San Marino +678,ST,STP,239,STN,Dobra,930,Sao Tome and Principe,São Tomé & Príncipe,st,AF,Sao Tome +682,SA,SAU,966,SAR,Saudi Riyal,682,Saudi Arabia,Saudi Arabia,sa,AS,Riyadh +686,SN,SEN,221,XOF,CFA Franc BCEAO,952,Senegal,Senegal,sn,AF,Dakar +688,RS,SRB,381,RSD,Serbian Dinar,941,Serbia,Serbia,rs,EU,Belgrade +690,SC,SYC,248,SCR,Seychelles Rupee,690,Seychelles,Seychelles,sc,AF,Victoria +694,SL,SLE,232,SLL,Leone,694,Sierra Leone,Sierra Leone,sl,AF,Freetown +702,SG,SGP,65,SGD,Singapore Dollar,702,Singapore,Singapore,sg,AS,Singapore +534,SX,SXM,1-721,ANG,Netherlands Antillean Guilder,532,Sint Maarten (Dutch part),Sint Maarten,sx,NA,Philipsburg +703,SK,SVK,421,EUR,Euro,978,Slovakia,Slovakia,sk,EU,Bratislava +705,SI,SVN,386,EUR,Euro,978,Slovenia,Slovenia,si,EU,Ljubljana +090,SB,SLB,677,SBD,Solomon Islands Dollar,090,Solomon Islands,Solomon Islands,sb,OC,Honiara +706,SO,SOM,252,SOS,Somali Shilling,706,Somalia,Somalia,so,AF,Mogadishu +710,ZA,ZAF,27,ZAR,Rand,710,South Africa,South Africa,za,AF,Pretoria +239,GS,SGS,500,,No universal currency,,South Georgia and the South Sandwich Islands,South Georgia & South Sandwich Islands,gs,AN,Grytviken +728,SS,SSD,211,SSP,South Sudanese Pound,728,South Sudan,South Sudan,,AF,Juba +724,ES,ESP,34,EUR,Euro,978,Spain,Spain,es,EU,Madrid +144,LK,LKA,94,LKR,Sri Lanka Rupee,144,Sri Lanka,Sri Lanka,lk,AS,Colombo +275,PS,PSE,970,,No universal currency,,State of Palestine,Palestine,ps,AS,East Jerusalem +729,SD,SDN,249,SDG,Sudanese Pound,938,Sudan,Sudan,sd,AF,Khartoum +740,SR,SUR,597,SRD,Surinam Dollar,968,Suriname,Suriname,sr,SA,Paramaribo +744,SJ,SJM,47,NOK,Norwegian Krone,578,Svalbard and Jan Mayen Islands,Svalbard & Jan Mayen,sj,EU,Longyearbyen +752,SE,SWE,46,SEK,Swedish Krona,752,Sweden,Sweden,se,EU,Stockholm +756,CH,CHE,41,CHF,Swiss Franc,756,Switzerland,Switzerland,ch,EU,Bern +760,SY,SYR,963,SYP,Syrian Pound,760,Syrian Arab Republic,Syria,sy,AS,Damascus +762,TJ,TJK,992,TJS,Somoni,972,Tajikistan,Tajikistan,tj,AS,Dushanbe +764,TH,THA,66,THB,Baht,764,Thailand,Thailand,th,AS,Bangkok +807,MK,MKD,389,MKD,Denar,807,The former Yugoslav Republic of Macedonia,North Macedonia,mk,EU,Skopje +626,TL,TLS,670,USD,US Dollar,840,Timor-Leste,Timor-Leste,tl,OC,Dili +768,TG,TGO,228,XOF,CFA Franc BCEAO,952,Togo,Togo,tg,AF,Lome +772,TK,TKL,690,NZD,New Zealand Dollar,554,Tokelau,Tokelau,tk,OC, +776,TO,TON,676,TOP,Pa’anga,776,Tonga,Tonga,to,OC,Nuku'alofa +780,TT,TTO,1-868,TTD,Trinidad and Tobago Dollar,780,Trinidad and Tobago,Trinidad & Tobago,tt,NA,Port of Spain +788,TN,TUN,216,TND,Tunisian Dinar,788,Tunisia,Tunisia,tn,AF,Tunis +792,TR,TUR,90,TRY,Turkish Lira,949,Turkey,Turkey,tr,AS,Ankara +795,TM,TKM,993,TMT,Turkmenistan New Manat,934,Turkmenistan,Turkmenistan,tm,AS,Ashgabat +796,TC,TCA,1-649,USD,US Dollar,840,Turks and Caicos Islands,Turks & Caicos Islands,tc,NA,Cockburn Town +798,TV,TUV,688,AUD,Australian Dollar,036,Tuvalu,Tuvalu,tv,OC,Funafuti +800,UG,UGA,256,UGX,Uganda Shilling,800,Uganda,Uganda,ug,AF,Kampala +804,UA,UKR,380,UAH,Hryvnia,980,Ukraine,Ukraine,ua,EU,Kyiv +784,AE,ARE,971,AED,UAE Dirham,784,United Arab Emirates,United Arab Emirates,ae,AS,Abu Dhabi +826,GB,GBR,44,GBP,Pound Sterling,826,United Kingdom of Great Britain and Northern Ireland,UK,uk,EU,London +834,TZ,TZA,255,TZS,Tanzanian Shilling,834,United Republic of Tanzania,Tanzania,tz,AF,Dodoma +581,UM,UMI,,USD,US Dollar,840,United States Minor Outlying Islands,U.S. Outlying Islands,um,OC, +840,US,USA,1,USD,US Dollar,840,United States of America,US,us,NA,Washington +850,VI,VIR,1-340,USD,US Dollar,840,United States Virgin Islands,U.S. Virgin Islands,vi,NA,Charlotte Amalie +858,UY,URY,598,UYU,Peso Uruguayo,858,Uruguay,Uruguay,uy,SA,Montevideo +860,UZ,UZB,998,UZS,Uzbekistan Sum,860,Uzbekistan,Uzbekistan,uz,AS,Tashkent +548,VU,VUT,678,VUV,Vatu,548,Vanuatu,Vanuatu,vu,OC,Port Vila +862,VE,VEN,58,VES,Bolívar,937,Venezuela (Bolivarian Republic of),Venezuela,ve,SA,Caracas +704,VN,VNM,84,VND,Dong,704,Viet Nam,Vietnam,vn,AS,Hanoi +876,WF,WLF,681,XPF,CFP Franc,953,Wallis and Futuna Islands,Wallis & Futuna,wf,OC,Mata Utu +732,EH,ESH,212,MAD,Moroccan Dirham,504,Western Sahara,Western Sahara,eh,AF,El-Aaiun +887,YE,YEM,967,YER,Yemeni Rial,886,Yemen,Yemen,ye,AS,Sanaa +894,ZM,ZMB,260,ZMW,Zambian Kwacha,967,Zambia,Zambia,zm,AF,Lusaka +716,ZW,ZWE,263,ZWL,Zimbabwe Dollar,932,Zimbabwe,Zimbabwe,zw,AF,Harare +248,AX,ALA,358,EUR,Euro,978,Åland Islands,Åland Islands,ax,EU,Mariehamn +158,TW,TWN,886,TWD,New Taiwan Dollar,901,Taiwan,Taiwan,tw,AS,Taipei diff --git a/populate.sh b/populate.sh new file mode 100755 index 0000000..161b575 --- /dev/null +++ b/populate.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +echo -n '' >tmp-data.txt + +# Parse CSV +while read -r line; do + echo $line | + while IFS="," read code_numeric code_alpha2 code_alpha3 itu currency_code currency_name currency_numeric official_name customary_name tld continent capital; do + echo " { $code_alpha2, new($code_alpha2, \"$official_name\", \"$customary_name\", ${itu:-null}, $([[ -z $currency_code ]] && echo null || echo "\"$currency_code\""), ${currency_numeric:-null}, \"$capital\", \"$tld\") }," >>tmp-data.txt + done +done < <(tail -n +2 countrydata.csv) + +# Clear current contents +perl -i -0777 -pe 's/^\s+\/\/%SCRIPT START%\n(.*\n)*\s+\/\/%SCRIPT END%$/ \/\/%SCRIPT START%\n \/\/%CONT%\n \/\/%SCRIPT END%/gm;t' src/Nyanbyte.Countries/CountryData.cs + +cont=$(cat tmp-data.txt) + +sed -i '/\/\/%CONT%/{ +s/\/\/%CONT%/\r/g +r tmp-data.txt +}' src/Nyanbyte.Countries/CountryData.cs + +rm tmp-data.txt diff --git a/src/Nyanbyte.Countries/Country.cs b/src/Nyanbyte.Countries/Country.cs new file mode 100644 index 0000000..87a26ce --- /dev/null +++ b/src/Nyanbyte.Countries/Country.cs @@ -0,0 +1,27 @@ +namespace Nyanbyte.Countries; + +public readonly partial struct Country +{ + internal Country(CountryCode code, string officialName, string customaryName, int? phone, string? currencyCode, int? currencyNumeric, string capital, string tld) + { + Code = code; + CallingCode = phone; + OfficialName = officialName; + CustomaryName = customaryName; + CurrencyCode = currencyCode; + CurrencyCodeNumeric = currencyNumeric; + Capital = capital; + CcTld = tld; + } + + public readonly CountryCode Code { get; private init; } + public readonly int IsoNumeric => (int)Code; + public readonly string OfficialName { get; private init; } + public readonly string CustomaryName { get; private init; } + public readonly int? CallingCode { get; private init; } + //ISO 4217 currency code + public readonly string? CurrencyCode { get; private init; } + public readonly int? CurrencyCodeNumeric { get; private init; } + public readonly string Capital { get; private init; } + public readonly string CcTld { get; private init; } +} diff --git a/src/Nyanbyte.Countries/CountryCode.cs b/src/Nyanbyte.Countries/CountryCode.cs index 29f2783..331b0b1 100644 --- a/src/Nyanbyte.Countries/CountryCode.cs +++ b/src/Nyanbyte.Countries/CountryCode.cs @@ -252,3 +252,11 @@ public enum CountryCode : short ZM = 894, ZW = 716 } + +public static class CountryCodeUtils +{ + public static Country GetCountry(this CountryCode code) + { + return Country._countries[code]; + } +} diff --git a/src/Nyanbyte.Countries/CountryData.cs b/src/Nyanbyte.Countries/CountryData.cs new file mode 100644 index 0000000..05967eb --- /dev/null +++ b/src/Nyanbyte.Countries/CountryData.cs @@ -0,0 +1,263 @@ +using System.Collections.ObjectModel; +using static Nyanbyte.Countries.CountryCode; + +namespace Nyanbyte.Countries; + +public readonly partial struct Country +{ + internal static readonly ReadOnlyDictionary _countries = new Dictionary() + { + //%SCRIPT START% + + { AF, new(AF, "Afghanistan", "Afghanistan", 93, "AFN", 971, "Kabul", "af") }, + { AL, new(AL, "Albania", "Albania", 355, "ALL", 008, "Tirana", "al") }, + { DZ, new(DZ, "Algeria", "Algeria", 213, "DZD", 012, "Algiers", "dz") }, + { AS, new(AS, "American Samoa", "American Samoa", 1-684, "USD", 840, "Pago Pago", "as") }, + { AD, new(AD, "Andorra", "Andorra", 376, "EUR", 978, "Andorra la Vella", "ad") }, + { AO, new(AO, "Angola", "Angola", 244, "AOA", 973, "Luanda", "ao") }, + { AI, new(AI, "Anguilla", "Anguilla", 1-264, "XCD", 951, "The Valley", "ai") }, + { AQ, new(AQ, "Antarctica", "Antarctica", 672, null, null, "", "aq") }, + { AG, new(AG, "Antigua and Barbuda", "Antigua & Barbuda", 1-268, "XCD", 951, "St. John's", "ag") }, + { AR, new(AR, "Argentina", "Argentina", 54, "ARS", 032, "Buenos Aires", "ar") }, + { AM, new(AM, "Armenia", "Armenia", 374, "AMD", 051, "Yerevan", "am") }, + { AW, new(AW, "Aruba", "Aruba", 297, "AWG", 533, "Oranjestad", "aw") }, + { AU, new(AU, "Australia", "Australia", 61, "AUD", 036, "Canberra", "au") }, + { AT, new(AT, "Austria", "Austria", 43, "EUR", 978, "Vienna", "at") }, + { AZ, new(AZ, "Azerbaijan", "Azerbaijan", 994, "AZN", 944, "Baku", "az") }, + { BS, new(BS, "Bahamas", "Bahamas", 1-242, "BSD", 044, "Nassau", "bs") }, + { BH, new(BH, "Bahrain", "Bahrain", 973, "BHD", 048, "Manama", "bh") }, + { BD, new(BD, "Bangladesh", "Bangladesh", 880, "BDT", 050, "Dhaka", "bd") }, + { BB, new(BB, "Barbados", "Barbados", 1-246, "BBD", 052, "Bridgetown", "bb") }, + { BY, new(BY, "Belarus", "Belarus", 375, "BYN", 933, "Minsk", "by") }, + { BE, new(BE, "Belgium", "Belgium", 32, "EUR", 978, "Brussels", "be") }, + { BZ, new(BZ, "Belize", "Belize", 501, "BZD", 084, "Belmopan", "bz") }, + { BJ, new(BJ, "Benin", "Benin", 229, "XOF", 952, "Porto-Novo", "bj") }, + { BM, new(BM, "Bermuda", "Bermuda", 1-441, "BMD", 060, "Hamilton", "bm") }, + { BT, new(BT, "Bhutan", "Bhutan", 975, "BTN", 064, "Thimphu", "bt") }, + { BO, new(BO, "Bolivia (Plurinational State of)", "Bolivia", 591, "BOB", 068, "Sucre", "bo") }, + { BQ, new(BQ, "Bonaire Sint Eustatius and Saba", "Caribbean Netherlands", 599, "USD", 840, "", "bq") }, + { BA, new(BA, "Bosnia and Herzegovina", "Bosnia", 387, "BAM", 977, "Sarajevo", "ba") }, + { BW, new(BW, "Botswana", "Botswana", 267, "BWP", 072, "Gaborone", "bw") }, + { BV, new(BV, "Bouvet Island", "Bouvet Island", 47, "NOK", 578, "", "bv") }, + { BR, new(BR, "Brazil", "Brazil", 55, "BRL", 986, "Brasilia", "br") }, + { IO, new(IO, "British Indian Ocean Territory", "British Indian Ocean Territory", 246, "USD", 840, "Diego Garcia", "io") }, + { VG, new(VG, "British Virgin Islands", "British Virgin Islands", 1-284, "USD", 840, "Road Town", "vg") }, + { BN, new(BN, "Brunei Darussalam", "Brunei", 673, "BND", 096, "Bandar Seri Begawan", "bn") }, + { BG, new(BG, "Bulgaria", "Bulgaria", 359, "BGN", 975, "Sofia", "bg") }, + { BF, new(BF, "Burkina Faso", "Burkina Faso", 226, "XOF", 952, "Ouagadougou", "bf") }, + { BI, new(BI, "Burundi", "Burundi", 257, "BIF", 108, "Bujumbura", "bi") }, + { CV, new(CV, "Cabo Verde", "Cape Verde", 238, "CVE", 132, "Praia", "cv") }, + { KH, new(KH, "Cambodia", "Cambodia", 855, "KHR", 116, "Phnom Penh", "kh") }, + { CM, new(CM, "Cameroon", "Cameroon", 237, "XAF", 950, "Yaounde", "cm") }, + { CA, new(CA, "Canada", "Canada", 1, "CAD", 124, "Ottawa", "ca") }, + { KY, new(KY, "Cayman Islands", "Cayman Islands", 1-345, "KYD", 136, "George Town", "ky") }, + { CF, new(CF, "Central African Republic", "Central African Republic", 236, "XAF", 950, "Bangui", "cf") }, + { TD, new(TD, "Chad", "Chad", 235, "XAF", 950, "N'Djamena", "td") }, + { CL, new(CL, "Chile", "Chile", 56, "CLP", 152, "Santiago", "cl") }, + { CN, new(CN, "China", "China", 86, "CNY", 156, "Beijing", "cn") }, + { HK, new(HK, "China Hong Kong Special Administrative Region", "Hong Kong", 852, "HKD", 344, "Hong Kong", "hk") }, + { MO, new(MO, "China Macao Special Administrative Region", "Macau", 853, "MOP", 446, "Macao", "mo") }, + { CX, new(CX, "Christmas Island", "Christmas Island", 61, "AUD", 036, "Flying Fish Cove", "cx") }, + { CC, new(CC, "Cocos (Keeling) Islands", "Cocos (Keeling) Islands", 61, "AUD", 036, "West Island", "cc") }, + { CO, new(CO, "Colombia", "Colombia", 57, "COP", 170, "Bogota", "co") }, + { KM, new(KM, "Comoros", "Comoros", 269, "KMF", 174, "Moroni", "km") }, + { CG, new(CG, "Congo", "Congo - Brazzaville", 242, "XAF", 950, "Brazzaville", "cg") }, + { CK, new(CK, "Cook Islands", "Cook Islands", 682, "NZD", 554, "Avarua", "ck") }, + { CR, new(CR, "Costa Rica", "Costa Rica", 506, "CRC", 188, "San Jose", "cr") }, + { HR, new(HR, "Croatia", "Croatia", 385, "HRK", 191, "Zagreb", "hr") }, + { CU, new(CU, "Cuba", "Cuba", 53, "CUP", 192, "Havana", "cu") }, + { CW, new(CW, "Curaçao", "Curaçao", 599, "ANG", 532, "Willemstad", "cw") }, + { CY, new(CY, "Cyprus", "Cyprus", 357, "EUR", 978, "Nicosia", "cy") }, + { CZ, new(CZ, "Czechia", "Czechia", 420, "CZK", 203, "Prague", "cz") }, + { CI, new(CI, "Côte d'Ivoire", "Côte d’Ivoire", 225, "XOF", 952, "Yamoussoukro", "ci") }, + { KP, new(KP, "Democratic People's Republic of Korea", "North Korea", 850, "KPW", 408, "Pyongyang", "kp") }, + { CD, new(CD, "Democratic Republic of the Congo", "Congo - Kinshasa", 243, "CDF", 976, "Kinshasa", "cd") }, + { DK, new(DK, "Denmark", "Denmark", 45, "DKK", 208, "Copenhagen", "dk") }, + { DJ, new(DJ, "Djibouti", "Djibouti", 253, "DJF", 262, "Djibouti", "dj") }, + { DM, new(DM, "Dominica", "Dominica", 1-767, "XCD", 951, "Roseau", "dm") }, + { DO, new(DO, "Dominican Republic", "Dominican Republic", 1-809, "DOP", 214, "Santo Domingo", "do") }, + { EC, new(EC, "Ecuador", "Ecuador", 593, "USD", 840, "Quito", "ec") }, + { EG, new(EG, "Egypt", "Egypt", 20, "EGP", 818, "Cairo", "eg") }, + { SV, new(SV, "El Salvador", "El Salvador", 503, "SVC", 222, "San Salvador", "sv") }, + { GQ, new(GQ, "Equatorial Guinea", "Equatorial Guinea", 240, "XAF", 950, "Malabo", "gq") }, + { ER, new(ER, "Eritrea", "Eritrea", 291, "ERN", 232, "Asmara", "er") }, + { EE, new(EE, "Estonia", "Estonia", 372, "EUR", 978, "Tallinn", "ee") }, + { SZ, new(SZ, "Eswatini", "Eswatini", 268, "SZL", 748, "Mbabane", "sz") }, + { ET, new(ET, "Ethiopia", "Ethiopia", 251, "ETB", 230, "Addis Ababa", "et") }, + { FK, new(FK, "Falkland Islands (Malvinas)", "Falkland Islands", 500, "FKP", 238, "Stanley", "fk") }, + { FO, new(FO, "Faroe Islands", "Faroe Islands", 298, "DKK", 208, "Torshavn", "fo") }, + { FJ, new(FJ, "Fiji", "Fiji", 679, "FJD", 242, "Suva", "fj") }, + { FI, new(FI, "Finland", "Finland", 358, "EUR", 978, "Helsinki", "fi") }, + { FR, new(FR, "France", "France", 33, "EUR", 978, "Paris", "fr") }, + { GF, new(GF, "French Guiana", "French Guiana", 594, "EUR", 978, "Cayenne", "gf") }, + { PF, new(PF, "French Polynesia", "French Polynesia", 689, "XPF", 953, "Papeete", "pf") }, + { TF, new(TF, "French Southern Territories", "French Southern Territories", 262, "EUR", 978, "Port-aux-Francais", "tf") }, + { GA, new(GA, "Gabon", "Gabon", 241, "XAF", 950, "Libreville", "ga") }, + { GM, new(GM, "Gambia", "Gambia", 220, "GMD", 270, "Banjul", "gm") }, + { GE, new(GE, "Georgia", "Georgia", 995, "GEL", 981, "Tbilisi", "ge") }, + { DE, new(DE, "Germany", "Germany", 49, "EUR", 978, "Berlin", "de") }, + { GH, new(GH, "Ghana", "Ghana", 233, "GHS", 936, "Accra", "gh") }, + { GI, new(GI, "Gibraltar", "Gibraltar", 350, "GIP", 292, "Gibraltar", "gi") }, + { GR, new(GR, "Greece", "Greece", 30, "EUR", 978, "Athens", "gr") }, + { GL, new(GL, "Greenland", "Greenland", 299, "DKK", 208, "Nuuk", "gl") }, + { GD, new(GD, "Grenada", "Grenada", 1-473, "XCD", 951, "St. George's", "gd") }, + { GP, new(GP, "Guadeloupe", "Guadeloupe", 590, "EUR", 978, "Basse-Terre", "gp") }, + { GU, new(GU, "Guam", "Guam", 1-671, "USD", 840, "Hagatna", "gu") }, + { GT, new(GT, "Guatemala", "Guatemala", 502, "GTQ", 320, "Guatemala City", "gt") }, + { GG, new(GG, "Guernsey", "Guernsey", 44, "GBP", 826, "St Peter Port", "gg") }, + { GN, new(GN, "Guinea", "Guinea", 224, "GNF", 324, "Conakry", "gn") }, + { GW, new(GW, "Guinea-Bissau", "Guinea-Bissau", 245, "XOF", 952, "Bissau", "gw") }, + { GY, new(GY, "Guyana", "Guyana", 592, "GYD", 328, "Georgetown", "gy") }, + { HT, new(HT, "Haiti", "Haiti", 509, "HTG", 332, "Port-au-Prince", "ht") }, + { HM, new(HM, "Heard Island and McDonald Islands", "Heard & McDonald Islands", 672, "AUD", 036, "", "hm") }, + { VA, new(VA, "Holy See", "Vatican City", 39-06, "EUR", 978, "Vatican City", "va") }, + { HN, new(HN, "Honduras", "Honduras", 504, "HNL", 340, "Tegucigalpa", "hn") }, + { HU, new(HU, "Hungary", "Hungary", 36, "HUF", 348, "Budapest", "hu") }, + { IS, new(IS, "Iceland", "Iceland", 354, "ISK", 352, "Reykjavik", "is") }, + { IN, new(IN, "India", "India", 91, "INR", 356, "New Delhi", "in") }, + { ID, new(ID, "Indonesia", "Indonesia", 62, "IDR", 360, "Jakarta", "id") }, + { IR, new(IR, "Iran (Islamic Republic of)", "Iran", 98, "IRR", 364, "Tehran", "ir") }, + { IQ, new(IQ, "Iraq", "Iraq", 964, "IQD", 368, "Baghdad", "iq") }, + { IE, new(IE, "Ireland", "Ireland", 353, "EUR", 978, "Dublin", "ie") }, + { IM, new(IM, "Isle of Man", "Isle of Man", 44, "GBP", 826, "Douglas", "im") }, + { IL, new(IL, "Israel", "Israel", 972, "ILS", 376, "Jerusalem", "il") }, + { IT, new(IT, "Italy", "Italy", 39, "EUR", 978, "Rome", "it") }, + { JM, new(JM, "Jamaica", "Jamaica", 1-876, "JMD", 388, "Kingston", "jm") }, + { JP, new(JP, "Japan", "Japan", 81, "JPY", 392, "Tokyo", "jp") }, + { JE, new(JE, "Jersey", "Jersey", 44, "GBP", 826, "Saint Helier", "je") }, + { JO, new(JO, "Jordan", "Jordan", 962, "JOD", 400, "Amman", "jo") }, + { KZ, new(KZ, "Kazakhstan", "Kazakhstan", 7, "KZT", 398, "Astana", "kz") }, + { KE, new(KE, "Kenya", "Kenya", 254, "KES", 404, "Nairobi", "ke") }, + { KI, new(KI, "Kiribati", "Kiribati", 686, "AUD", 036, "Tarawa", "ki") }, + { KW, new(KW, "Kuwait", "Kuwait", 965, "KWD", 414, "Kuwait City", "kw") }, + { KG, new(KG, "Kyrgyzstan", "Kyrgyzstan", 996, "KGS", 417, "Bishkek", "kg") }, + { LA, new(LA, "Lao People's Democratic Republic", "Laos", 856, "LAK", 418, "Vientiane", "la") }, + { LV, new(LV, "Latvia", "Latvia", 371, "EUR", 978, "Riga", "lv") }, + { LB, new(LB, "Lebanon", "Lebanon", 961, "LBP", 422, "Beirut", "lb") }, + { LS, new(LS, "Lesotho", "Lesotho", 266, "LSL", 426, "Maseru", "ls") }, + { LR, new(LR, "Liberia", "Liberia", 231, "LRD", 430, "Monrovia", "lr") }, + { LY, new(LY, "Libya", "Libya", 218, "LYD", 434, "Tripoli", "ly") }, + { LI, new(LI, "Liechtenstein", "Liechtenstein", 423, "CHF", 756, "Vaduz", "li") }, + { LT, new(LT, "Lithuania", "Lithuania", 370, "EUR", 978, "Vilnius", "lt") }, + { LU, new(LU, "Luxembourg", "Luxembourg", 352, "EUR", 978, "Luxembourg", "lu") }, + { MG, new(MG, "Madagascar", "Madagascar", 261, "MGA", 969, "Antananarivo", "mg") }, + { MW, new(MW, "Malawi", "Malawi", 265, "MWK", 454, "Lilongwe", "mw") }, + { MY, new(MY, "Malaysia", "Malaysia", 60, "MYR", 458, "Kuala Lumpur", "my") }, + { MV, new(MV, "Maldives", "Maldives", 960, "MVR", 462, "Male", "mv") }, + { ML, new(ML, "Mali", "Mali", 223, "XOF", 952, "Bamako", "ml") }, + { MT, new(MT, "Malta", "Malta", 356, "EUR", 978, "Valletta", "mt") }, + { MH, new(MH, "Marshall Islands", "Marshall Islands", 692, "USD", 840, "Majuro", "mh") }, + { MQ, new(MQ, "Martinique", "Martinique", 596, "EUR", 978, "Fort-de-France", "mq") }, + { MR, new(MR, "Mauritania", "Mauritania", 222, "MRU", 929, "Nouakchott", "mr") }, + { MU, new(MU, "Mauritius", "Mauritius", 230, "MUR", 480, "Port Louis", "mu") }, + { YT, new(YT, "Mayotte", "Mayotte", 262, "EUR", 978, "Mamoudzou", "yt") }, + { MX, new(MX, "Mexico", "Mexico", 52, "MXN", 484, "Mexico City", "mx") }, + { FM, new(FM, "Micronesia (Federated States of)", "Micronesia", 691, "USD", 840, "Palikir", "fm") }, + { MC, new(MC, "Monaco", "Monaco", 377, "EUR", 978, "Monaco", "mc") }, + { MN, new(MN, "Mongolia", "Mongolia", 976, "MNT", 496, "Ulan Bator", "mn") }, + { ME, new(ME, "Montenegro", "Montenegro", 382, "EUR", 978, "Podgorica", "me") }, + { MS, new(MS, "Montserrat", "Montserrat", 1-664, "XCD", 951, "Plymouth", "ms") }, + { MA, new(MA, "Morocco", "Morocco", 212, "MAD", 504, "Rabat", "ma") }, + { MZ, new(MZ, "Mozambique", "Mozambique", 258, "MZN", 943, "Maputo", "mz") }, + { MM, new(MM, "Myanmar", "Myanmar", 95, "MMK", 104, "Nay Pyi Taw", "mm") }, + { NA, new(NA, "Namibia", "Namibia", 264, "NAD", 516, "Windhoek", "na") }, + { NR, new(NR, "Nauru", "Nauru", 674, "AUD", 036, "Yaren", "nr") }, + { NP, new(NP, "Nepal", "Nepal", 977, "NPR", 524, "Kathmandu", "np") }, + { NL, new(NL, "Netherlands", "Netherlands", 31, "EUR", 978, "Amsterdam", "nl") }, + { NC, new(NC, "New Caledonia", "New Caledonia", 687, "XPF", 953, "Noumea", "nc") }, + { NZ, new(NZ, "New Zealand", "New Zealand", 64, "NZD", 554, "Wellington", "nz") }, + { NI, new(NI, "Nicaragua", "Nicaragua", 505, "NIO", 558, "Managua", "ni") }, + { NE, new(NE, "Niger", "Niger", 227, "XOF", 952, "Niamey", "ne") }, + { NG, new(NG, "Nigeria", "Nigeria", 234, "NGN", 566, "Abuja", "ng") }, + { NU, new(NU, "Niue", "Niue", 683, "NZD", 554, "Alofi", "nu") }, + { NF, new(NF, "Norfolk Island", "Norfolk Island", 672, "AUD", 036, "Kingston", "nf") }, + { MP, new(MP, "Northern Mariana Islands", "Northern Mariana Islands", 1-670, "USD", 840, "Saipan", "mp") }, + { NO, new(NO, "Norway", "Norway", 47, "NOK", 578, "Oslo", "no") }, + { OM, new(OM, "Oman", "Oman", 968, "OMR", 512, "Muscat", "om") }, + { PK, new(PK, "Pakistan", "Pakistan", 92, "PKR", 586, "Islamabad", "pk") }, + { PW, new(PW, "Palau", "Palau", 680, "USD", 840, "Melekeok", "pw") }, + { PA, new(PA, "Panama", "Panama", 507, "PAB", 590, "Panama City", "pa") }, + { PG, new(PG, "Papua New Guinea", "Papua New Guinea", 675, "PGK", 598, "Port Moresby", "pg") }, + { PY, new(PY, "Paraguay", "Paraguay", 595, "PYG", 600, "Asuncion", "py") }, + { PE, new(PE, "Peru", "Peru", 51, "PEN", 604, "Lima", "pe") }, + { PH, new(PH, "Philippines", "Philippines", 63, "PHP", 608, "Manila", "ph") }, + { PN, new(PN, "Pitcairn", "Pitcairn Islands", 870, "NZD", 554, "Adamstown", "pn") }, + { PL, new(PL, "Poland", "Poland", 48, "PLN", 985, "Warsaw", "pl") }, + { PT, new(PT, "Portugal", "Portugal", 351, "EUR", 978, "Lisbon", "pt") }, + { PR, new(PR, "Puerto Rico", "Puerto Rico", 1, "USD", 840, "San Juan", "pr") }, + { QA, new(QA, "Qatar", "Qatar", 974, "QAR", 634, "Doha", "qa") }, + { KR, new(KR, "Republic of Korea", "South Korea", 82, "KRW", 410, "Seoul", "kr") }, + { MD, new(MD, "Republic of Moldova", "Moldova", 373, "MDL", 498, "Chisinau", "md") }, + { RO, new(RO, "Romania", "Romania", 40, "RON", 946, "Bucharest", "ro") }, + { RU, new(RU, "Russian Federation", "Russia", 7, "RUB", 643, "Moscow", "ru") }, + { RW, new(RW, "Rwanda", "Rwanda", 250, "RWF", 646, "Kigali", "rw") }, + { RE, new(RE, "Réunion", "Réunion", 262, "EUR", 978, "Saint-Denis", "re") }, + { BL, new(BL, "Saint Barthélemy", "St. Barthélemy", 590, "EUR", 978, "Gustavia", "gp") }, + { SH, new(SH, "Saint Helena", "St. Helena", 290, "SHP", 654, "Jamestown", "sh") }, + { KN, new(KN, "Saint Kitts and Nevis", "St. Kitts & Nevis", 1-869, "XCD", 951, "Basseterre", "kn") }, + { LC, new(LC, "Saint Lucia", "St. Lucia", 1-758, "XCD", 951, "Castries", "lc") }, + { MF, new(MF, "Saint Martin (French Part)", "St. Martin", 590, "EUR", 978, "Marigot", "gp") }, + { PM, new(PM, "Saint Pierre and Miquelon", "St. Pierre & Miquelon", 508, "EUR", 978, "Saint-Pierre", "pm") }, + { VC, new(VC, "Saint Vincent and the Grenadines", "St. Vincent & Grenadines", 1-784, "XCD", 951, "Kingstown", "vc") }, + { WS, new(WS, "Samoa", "Samoa", 685, "WST", 882, "Apia", "ws") }, + { SM, new(SM, "San Marino", "San Marino", 378, "EUR", 978, "San Marino", "sm") }, + { ST, new(ST, "Sao Tome and Principe", "São Tomé & Príncipe", 239, "STN", 930, "Sao Tome", "st") }, + { SA, new(SA, "Saudi Arabia", "Saudi Arabia", 966, "SAR", 682, "Riyadh", "sa") }, + { SN, new(SN, "Senegal", "Senegal", 221, "XOF", 952, "Dakar", "sn") }, + { RS, new(RS, "Serbia", "Serbia", 381, "RSD", 941, "Belgrade", "rs") }, + { SC, new(SC, "Seychelles", "Seychelles", 248, "SCR", 690, "Victoria", "sc") }, + { SL, new(SL, "Sierra Leone", "Sierra Leone", 232, "SLL", 694, "Freetown", "sl") }, + { SG, new(SG, "Singapore", "Singapore", 65, "SGD", 702, "Singapore", "sg") }, + { SX, new(SX, "Sint Maarten (Dutch part)", "Sint Maarten", 1-721, "ANG", 532, "Philipsburg", "sx") }, + { SK, new(SK, "Slovakia", "Slovakia", 421, "EUR", 978, "Bratislava", "sk") }, + { SI, new(SI, "Slovenia", "Slovenia", 386, "EUR", 978, "Ljubljana", "si") }, + { SB, new(SB, "Solomon Islands", "Solomon Islands", 677, "SBD", 090, "Honiara", "sb") }, + { SO, new(SO, "Somalia", "Somalia", 252, "SOS", 706, "Mogadishu", "so") }, + { ZA, new(ZA, "South Africa", "South Africa", 27, "ZAR", 710, "Pretoria", "za") }, + { GS, new(GS, "South Georgia and the South Sandwich Islands", "South Georgia & South Sandwich Islands", 500, null, null, "Grytviken", "gs") }, + { SS, new(SS, "South Sudan", "South Sudan", 211, "SSP", 728, "Juba", "") }, + { ES, new(ES, "Spain", "Spain", 34, "EUR", 978, "Madrid", "es") }, + { LK, new(LK, "Sri Lanka", "Sri Lanka", 94, "LKR", 144, "Colombo", "lk") }, + { PS, new(PS, "State of Palestine", "Palestine", 970, null, null, "East Jerusalem", "ps") }, + { SD, new(SD, "Sudan", "Sudan", 249, "SDG", 938, "Khartoum", "sd") }, + { SR, new(SR, "Suriname", "Suriname", 597, "SRD", 968, "Paramaribo", "sr") }, + { SJ, new(SJ, "Svalbard and Jan Mayen Islands", "Svalbard & Jan Mayen", 47, "NOK", 578, "Longyearbyen", "sj") }, + { SE, new(SE, "Sweden", "Sweden", 46, "SEK", 752, "Stockholm", "se") }, + { CH, new(CH, "Switzerland", "Switzerland", 41, "CHF", 756, "Bern", "ch") }, + { SY, new(SY, "Syrian Arab Republic", "Syria", 963, "SYP", 760, "Damascus", "sy") }, + { TJ, new(TJ, "Tajikistan", "Tajikistan", 992, "TJS", 972, "Dushanbe", "tj") }, + { TH, new(TH, "Thailand", "Thailand", 66, "THB", 764, "Bangkok", "th") }, + { MK, new(MK, "The former Yugoslav Republic of Macedonia", "North Macedonia", 389, "MKD", 807, "Skopje", "mk") }, + { TL, new(TL, "Timor-Leste", "Timor-Leste", 670, "USD", 840, "Dili", "tl") }, + { TG, new(TG, "Togo", "Togo", 228, "XOF", 952, "Lome", "tg") }, + { TK, new(TK, "Tokelau", "Tokelau", 690, "NZD", 554, "", "tk") }, + { TO, new(TO, "Tonga", "Tonga", 676, "TOP", 776, "Nuku'alofa", "to") }, + { TT, new(TT, "Trinidad and Tobago", "Trinidad & Tobago", 1-868, "TTD", 780, "Port of Spain", "tt") }, + { TN, new(TN, "Tunisia", "Tunisia", 216, "TND", 788, "Tunis", "tn") }, + { TR, new(TR, "Turkey", "Turkey", 90, "TRY", 949, "Ankara", "tr") }, + { TM, new(TM, "Turkmenistan", "Turkmenistan", 993, "TMT", 934, "Ashgabat", "tm") }, + { TC, new(TC, "Turks and Caicos Islands", "Turks & Caicos Islands", 1-649, "USD", 840, "Cockburn Town", "tc") }, + { TV, new(TV, "Tuvalu", "Tuvalu", 688, "AUD", 036, "Funafuti", "tv") }, + { UG, new(UG, "Uganda", "Uganda", 256, "UGX", 800, "Kampala", "ug") }, + { UA, new(UA, "Ukraine", "Ukraine", 380, "UAH", 980, "Kyiv", "ua") }, + { AE, new(AE, "United Arab Emirates", "United Arab Emirates", 971, "AED", 784, "Abu Dhabi", "ae") }, + { GB, new(GB, "United Kingdom of Great Britain and Northern Ireland", "UK", 44, "GBP", 826, "London", "uk") }, + { TZ, new(TZ, "United Republic of Tanzania", "Tanzania", 255, "TZS", 834, "Dodoma", "tz") }, + { UM, new(UM, "United States Minor Outlying Islands", "U.S. Outlying Islands", null, "USD", 840, "", "um") }, + { US, new(US, "United States of America", "US", 1, "USD", 840, "Washington", "us") }, + { VI, new(VI, "United States Virgin Islands", "U.S. Virgin Islands", 1-340, "USD", 840, "Charlotte Amalie", "vi") }, + { UY, new(UY, "Uruguay", "Uruguay", 598, "UYU", 858, "Montevideo", "uy") }, + { UZ, new(UZ, "Uzbekistan", "Uzbekistan", 998, "UZS", 860, "Tashkent", "uz") }, + { VU, new(VU, "Vanuatu", "Vanuatu", 678, "VUV", 548, "Port Vila", "vu") }, + { VE, new(VE, "Venezuela (Bolivarian Republic of)", "Venezuela", 58, "VES", 937, "Caracas", "ve") }, + { VN, new(VN, "Viet Nam", "Vietnam", 84, "VND", 704, "Hanoi", "vn") }, + { WF, new(WF, "Wallis and Futuna Islands", "Wallis & Futuna", 681, "XPF", 953, "Mata Utu", "wf") }, + { EH, new(EH, "Western Sahara", "Western Sahara", 212, "MAD", 504, "El-Aaiun", "eh") }, + { YE, new(YE, "Yemen", "Yemen", 967, "YER", 886, "Sanaa", "ye") }, + { ZM, new(ZM, "Zambia", "Zambia", 260, "ZMW", 967, "Lusaka", "zm") }, + { ZW, new(ZW, "Zimbabwe", "Zimbabwe", 263, "ZWL", 932, "Harare", "zw") }, + { AX, new(AX, "Åland Islands", "Åland Islands", 358, "EUR", 978, "Mariehamn", "ax") }, + { TW, new(TW, "Taiwan", "Taiwan", 886, "TWD", 901, "Taipei", "tw") }, + //%SCRIPT END% + }.AsReadOnly(); +}