diff --git a/Cargo.lock b/Cargo.lock index ebe5dd0..5b9f93d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2009,6 +2009,40 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rust-embed" +version = "8.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a" +dependencies = [ + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "8.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c" +dependencies = [ + "proc-macro2", + "quote", + "rust-embed-utils", + "syn 2.0.106", + "walkdir", +] + +[[package]] +name = "rust-embed-utils" +version = "8.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594" +dependencies = [ + "sha2", + "walkdir", +] + [[package]] name = "rust_decimal" version = "1.38.0" @@ -2027,7 +2061,7 @@ dependencies = [ [[package]] name = "rust_rest_api" -version = "0.1.4" +version = "0.1.5" dependencies = [ "axum", "chrono", @@ -2035,6 +2069,8 @@ dependencies = [ "dotenvy", "http", "migration", + "once_cell", + "rust-embed", "sea-orm", "serde", "serde_json", @@ -2106,6 +2142,15 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -3079,6 +3124,16 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -3201,6 +3256,15 @@ dependencies = [ "wasite", ] +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.1", +] + [[package]] name = "windows-core" version = "0.62.1" diff --git a/Cargo.toml b/Cargo.toml index c1566d6..0493286 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust_rest_api" -version = "0.1.4" +version = "0.1.5" edition = "2024" license = "MIT" authors = ["Habibi-Dev"] @@ -20,6 +20,8 @@ serde = { version = "1.0.228", features = ["derive"] } chrono = "0.4.42" chrono-tz = "0.10.4" sea-orm = { version = "1.1.16", features = ["sqlx-sqlite", "runtime-tokio-rustls"] } +once_cell = "1.21.3" +rust-embed = "8.7.2" [dependencies.migration] path = "./migration" \ No newline at end of file diff --git a/data/countries.json b/data/countries.json new file mode 100644 index 0000000..d8053c2 --- /dev/null +++ b/data/countries.json @@ -0,0 +1,2558 @@ +{ + "AF": { + "code": "AF", + "name": "Afghanistan", + "currency": "AFN", + "language": [ + "ps", + "fa" + ], + "flag": "🇦🇫", + "flag_svg": "af.svg" + }, + "AX": { + "code": "AX", + "name": "Aland Islands", + "currency": "EUR", + "language": [ + "sv" + ], + "flag": "🇦🇽", + "flag_svg": "ax.svg" + }, + "AL": { + "code": "AL", + "name": "Albania", + "currency": "ALL", + "language": [ + "sq" + ], + "flag": "🇦🇱", + "flag_svg": "al.svg" + }, + "DZ": { + "code": "DZ", + "name": "Algeria", + "currency": "DZD", + "language": [ + "ar" + ], + "flag": "🇩🇿", + "flag_svg": "dz.svg" + }, + "AS": { + "code": "AS", + "name": "American Samoa", + "currency": "USD", + "language": [ + "en", + "sm" + ], + "flag": "🇦🇸", + "flag_svg": "as.svg" + }, + "AD": { + "code": "AD", + "name": "Andorra", + "currency": "EUR", + "language": [ + "ca" + ], + "flag": "🇦🇩", + "flag_svg": "ad.svg" + }, + "AO": { + "code": "AO", + "name": "Angola", + "currency": "AOA", + "language": [ + "pt" + ], + "flag": "🇦🇴", + "flag_svg": "ao.svg" + }, + "AI": { + "code": "AI", + "name": "Anguilla", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇦🇮", + "flag_svg": "ai.svg" + }, + "AQ": { + "code": "AQ", + "name": "Antarctica", + "currency": null, + "language": [], + "flag": "🇦🇶", + "flag_svg": "aq.svg" + }, + "AG": { + "code": "AG", + "name": "Antigua And Barbuda", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇦🇬", + "flag_svg": "ag.svg" + }, + "AR": { + "code": "AR", + "name": "Argentina", + "currency": "ARS", + "language": [ + "es" + ], + "flag": "🇦🇷", + "flag_svg": "ar.svg" + }, + "AM": { + "code": "AM", + "name": "Armenia", + "currency": "AMD", + "language": [ + "hy" + ], + "flag": "🇦🇲", + "flag_svg": "am.svg" + }, + "AW": { + "code": "AW", + "name": "Aruba", + "currency": "AWG", + "language": [ + "nl", + "pap" + ], + "flag": "🇦🇼", + "flag_svg": "aw.svg" + }, + "AU": { + "code": "AU", + "name": "Australia", + "currency": "AUD", + "language": [ + "en" + ], + "flag": "🇦🇺", + "flag_svg": "au.svg" + }, + "AT": { + "code": "AT", + "name": "Austria", + "currency": "EUR", + "language": [ + "de" + ], + "flag": "🇦🇹", + "flag_svg": "at.svg" + }, + "AZ": { + "code": "AZ", + "name": "Azerbaijan", + "currency": "AZN", + "language": [ + "az" + ], + "flag": "🇦🇿", + "flag_svg": "az.svg" + }, + "BS": { + "code": "BS", + "name": "Bahamas", + "currency": "BSD", + "language": [ + "en" + ], + "flag": "🇧🇸", + "flag_svg": "bs.svg" + }, + "BH": { + "code": "BH", + "name": "Bahrain", + "currency": "BHD", + "language": [ + "ar" + ], + "flag": "🇧🇭", + "flag_svg": "bh.svg" + }, + "BD": { + "code": "BD", + "name": "Bangladesh", + "currency": "BDT", + "language": [ + "bn" + ], + "flag": "🇧🇩", + "flag_svg": "bd.svg" + }, + "BB": { + "code": "BB", + "name": "Barbados", + "currency": "BBD", + "language": [ + "en" + ], + "flag": "🇧🇧", + "flag_svg": "bb.svg" + }, + "BY": { + "code": "BY", + "name": "Belarus", + "currency": "BYN", + "language": [ + "be", + "ru" + ], + "flag": "🇧🇾", + "flag_svg": "by.svg" + }, + "BE": { + "code": "BE", + "name": "Belgium", + "currency": "EUR", + "language": [ + "nl", + "fr", + "de" + ], + "flag": "🇧🇪", + "flag_svg": "be.svg" + }, + "BZ": { + "code": "BZ", + "name": "Belize", + "currency": "BZD", + "language": [ + "en" + ], + "flag": "🇧🇿", + "flag_svg": "bz.svg" + }, + "BJ": { + "code": "BJ", + "name": "Benin", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇧🇯", + "flag_svg": "bj.svg" + }, + "BM": { + "code": "BM", + "name": "Bermuda", + "currency": "BMD", + "language": [ + "en" + ], + "flag": "🇧🇲", + "flag_svg": "bm.svg" + }, + "BT": { + "code": "BT", + "name": "Bhutan", + "currency": "BTN", + "language": [ + "dz" + ], + "flag": "🇧🇹", + "flag_svg": "bt.svg" + }, + "BO": { + "code": "BO", + "name": "Bolivia", + "currency": "BOB", + "language": [ + "es", + "qu", + "ay" + ], + "flag": "🇧🇴", + "flag_svg": "bo.svg" + }, + "BA": { + "code": "BA", + "name": "Bosnia And Herzegovina", + "currency": "BAM", + "language": [ + "bs", + "hr", + "sr" + ], + "flag": "🇧🇦", + "flag_svg": "ba.svg" + }, + "BW": { + "code": "BW", + "name": "Botswana", + "currency": "BWP", + "language": [ + "en", + "tn" + ], + "flag": "🇧🇼", + "flag_svg": "bw.svg" + }, + "BV": { + "code": "BV", + "name": "Bouvet Island", + "currency": "NOK", + "language": [], + "flag": "🇧🇻", + "flag_svg": "bv.svg" + }, + "BR": { + "code": "BR", + "name": "Brazil", + "currency": "BRL", + "language": [ + "pt" + ], + "flag": "🇧🇷", + "flag_svg": "br.svg" + }, + "IO": { + "code": "IO", + "name": "British Indian Ocean Territory", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇮🇴", + "flag_svg": "io.svg" + }, + "BN": { + "code": "BN", + "name": "Brunei Darussalam", + "currency": "BND", + "language": [ + "ms" + ], + "flag": "🇧🇳", + "flag_svg": "bn.svg" + }, + "BG": { + "code": "BG", + "name": "Bulgaria", + "currency": "BGN", + "language": [ + "bg" + ], + "flag": "🇧🇬", + "flag_svg": "bg.svg" + }, + "BF": { + "code": "BF", + "name": "Burkina Faso", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇧🇫", + "flag_svg": "bf.svg" + }, + "BI": { + "code": "BI", + "name": "Burundi", + "currency": "BIF", + "language": [ + "rn", + "fr" + ], + "flag": "🇧🇮", + "flag_svg": "bi.svg" + }, + "KH": { + "code": "KH", + "name": "Cambodia", + "currency": "KHR", + "language": [ + "km" + ], + "flag": "🇰🇭", + "flag_svg": "kh.svg" + }, + "CM": { + "code": "CM", + "name": "Cameroon", + "currency": "XAF", + "language": [ + "fr", + "en" + ], + "flag": "🇨🇲", + "flag_svg": "cm.svg" + }, + "CA": { + "code": "CA", + "name": "Canada", + "currency": "CAD", + "language": [ + "en", + "fr" + ], + "flag": "🇨🇦", + "flag_svg": "ca.svg" + }, + "CV": { + "code": "CV", + "name": "Cape Verde", + "currency": "CVE", + "language": [ + "pt" + ], + "flag": "🇨🇻", + "flag_svg": "cv.svg" + }, + "KY": { + "code": "KY", + "name": "Cayman Islands", + "currency": "KYD", + "language": [ + "en" + ], + "flag": "🇰🇾", + "flag_svg": "ky.svg" + }, + "CF": { + "code": "CF", + "name": "Central African Republic", + "currency": "XAF", + "language": [ + "fr", + "sg" + ], + "flag": "🇨🇫", + "flag_svg": "cf.svg" + }, + "TD": { + "code": "TD", + "name": "Chad", + "currency": "XAF", + "language": [ + "fr", + "ar" + ], + "flag": "🇹🇩", + "flag_svg": "td.svg" + }, + "CL": { + "code": "CL", + "name": "Chile", + "currency": "CLP", + "language": [ + "es" + ], + "flag": "🇨🇱", + "flag_svg": "cl.svg" + }, + "CN": { + "code": "CN", + "name": "China", + "currency": "CNY", + "language": [ + "zh" + ], + "flag": "🇨🇳", + "flag_svg": "cn.svg" + }, + "CX": { + "code": "CX", + "name": "Christmas Island", + "currency": "AUD", + "language": [ + "en" + ], + "flag": "🇨🇽", + "flag_svg": "cx.svg" + }, + "CC": { + "code": "CC", + "name": "Cocos (Keeling) Islands", + "currency": "AUD", + "language": [ + "en" + ], + "flag": "🇨🇨", + "flag_svg": "cc.svg" + }, + "CO": { + "code": "CO", + "name": "Colombia", + "currency": "COP", + "language": [ + "es" + ], + "flag": "🇨🇴", + "flag_svg": "co.svg" + }, + "KM": { + "code": "KM", + "name": "Comoros", + "currency": "KMF", + "language": [ + "ar", + "fr" + ], + "flag": "🇰🇲", + "flag_svg": "km.svg" + }, + "CG": { + "code": "CG", + "name": "Congo", + "currency": "XAF", + "language": [ + "fr" + ], + "flag": "🇨🇬", + "flag_svg": "cg.svg" + }, + "CD": { + "code": "CD", + "name": "Congo, Democratic Republic", + "currency": "CDF", + "language": [ + "fr" + ], + "flag": "🇨🇩", + "flag_svg": "cd.svg" + }, + "CK": { + "code": "CK", + "name": "Cook Islands", + "currency": "NZD", + "language": [ + "en", + "mi" + ], + "flag": "🇨🇰", + "flag_svg": "ck.svg" + }, + "CR": { + "code": "CR", + "name": "Costa Rica", + "currency": "CRC", + "language": [ + "es" + ], + "flag": "🇨🇷", + "flag_svg": "cr.svg" + }, + "CI": { + "code": "CI", + "name": "Cote D\"Ivoire", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇨🇮", + "flag_svg": "ci.svg" + }, + "HR": { + "code": "HR", + "name": "Croatia", + "currency": "EUR", + "language": [ + "hr" + ], + "flag": "🇭🇷", + "flag_svg": "hr.svg" + }, + "CU": { + "code": "CU", + "name": "Cuba", + "currency": "CUP", + "language": [ + "es" + ], + "flag": "🇨🇺", + "flag_svg": "cu.svg" + }, + "CY": { + "code": "CY", + "name": "Cyprus", + "currency": "EUR", + "language": [ + "el", + "tr" + ], + "flag": "🇨🇾", + "flag_svg": "cy.svg" + }, + "CZ": { + "code": "CZ", + "name": "Czech Republic", + "currency": "CZK", + "language": [ + "cs" + ], + "flag": "🇨🇿", + "flag_svg": "cz.svg" + }, + "DK": { + "code": "DK", + "name": "Denmark", + "currency": "DKK", + "language": [ + "da" + ], + "flag": "🇩🇰", + "flag_svg": "dk.svg" + }, + "DJ": { + "code": "DJ", + "name": "Djibouti", + "currency": "DJF", + "language": [ + "fr", + "ar", + "so" + ], + "flag": "🇩🇯", + "flag_svg": "dj.svg" + }, + "DM": { + "code": "DM", + "name": "Dominica", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇩🇲", + "flag_svg": "dm.svg" + }, + "DO": { + "code": "DO", + "name": "Dominican Republic", + "currency": "DOP", + "language": [ + "es" + ], + "flag": "🇩🇴", + "flag_svg": "do.svg" + }, + "EC": { + "code": "EC", + "name": "Ecuador", + "currency": "USD", + "language": [ + "es", + "qu" + ], + "flag": "🇪🇨", + "flag_svg": "ec.svg" + }, + "EG": { + "code": "EG", + "name": "Egypt", + "currency": "EGP", + "language": [ + "ar" + ], + "flag": "🇪🇬", + "flag_svg": "eg.svg" + }, + "SV": { + "code": "SV", + "name": "El Salvador", + "currency": "USD", + "language": [ + "es" + ], + "flag": "🇸🇻", + "flag_svg": "sv.svg" + }, + "GQ": { + "code": "GQ", + "name": "Equatorial Guinea", + "currency": "XAF", + "language": [ + "es", + "fr" + ], + "flag": "🇬🇶", + "flag_svg": "gq.svg" + }, + "ER": { + "code": "ER", + "name": "Eritrea", + "currency": "ERN", + "language": [ + "ti", + "ar" + ], + "flag": "🇪🇷", + "flag_svg": "er.svg" + }, + "EE": { + "code": "EE", + "name": "Estonia", + "currency": "EUR", + "language": [ + "et" + ], + "flag": "🇪🇪", + "flag_svg": "ee.svg" + }, + "ET": { + "code": "ET", + "name": "Ethiopia", + "currency": "ETB", + "language": [ + "am" + ], + "flag": "🇪🇹", + "flag_svg": "et.svg" + }, + "FK": { + "code": "FK", + "name": "Falkland Islands (Malvinas)", + "currency": "FKP", + "language": [ + "en" + ], + "flag": "🇫🇰", + "flag_svg": "fk.svg" + }, + "FO": { + "code": "FO", + "name": "Faroe Islands", + "currency": "DKK", + "language": [ + "fo" + ], + "flag": "🇫🇴", + "flag_svg": "fo.svg" + }, + "FJ": { + "code": "FJ", + "name": "Fiji", + "currency": "FJD", + "language": [ + "en", + "fj", + "hi" + ], + "flag": "🇫🇯", + "flag_svg": "fj.svg" + }, + "FI": { + "code": "FI", + "name": "Finland", + "currency": "EUR", + "language": [ + "fi", + "sv" + ], + "flag": "🇫🇮", + "flag_svg": "fi.svg" + }, + "FR": { + "code": "FR", + "name": "France", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇫🇷", + "flag_svg": "fr.svg" + }, + "GF": { + "code": "GF", + "name": "French Guiana", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇬🇫", + "flag_svg": "gf.svg" + }, + "PF": { + "code": "PF", + "name": "French Polynesia", + "currency": "XPF", + "language": [ + "fr" + ], + "flag": "🇵🇫", + "flag_svg": "pf.svg" + }, + "TF": { + "code": "TF", + "name": "French Southern Territories", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇹🇫", + "flag_svg": "tf.svg" + }, + "GA": { + "code": "GA", + "name": "Gabon", + "currency": "XAF", + "language": [ + "fr" + ], + "flag": "🇬🇦", + "flag_svg": "ga.svg" + }, + "GM": { + "code": "GM", + "name": "Gambia", + "currency": "GMD", + "language": [ + "en" + ], + "flag": "🇬🇲", + "flag_svg": "gm.svg" + }, + "GE": { + "code": "GE", + "name": "Georgia", + "currency": "GEL", + "language": [ + "ka" + ], + "flag": "🇬🇪", + "flag_svg": "ge.svg" + }, + "DE": { + "code": "DE", + "name": "Germany", + "currency": "EUR", + "language": [ + "de" + ], + "flag": "🇩🇪", + "flag_svg": "de.svg" + }, + "GH": { + "code": "GH", + "name": "Ghana", + "currency": "GHS", + "language": [ + "en" + ], + "flag": "🇬🇭", + "flag_svg": "gh.svg" + }, + "GI": { + "code": "GI", + "name": "Gibraltar", + "currency": "GIP", + "language": [ + "en" + ], + "flag": "🇬🇮", + "flag_svg": "gi.svg" + }, + "GR": { + "code": "GR", + "name": "Greece", + "currency": "EUR", + "language": [ + "el" + ], + "flag": "🇬🇷", + "flag_svg": "gr.svg" + }, + "GL": { + "code": "GL", + "name": "Greenland", + "currency": "DKK", + "language": [ + "kl", + "da" + ], + "flag": "🇬🇱", + "flag_svg": "gl.svg" + }, + "GD": { + "code": "GD", + "name": "Grenada", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇬🇩", + "flag_svg": "gd.svg" + }, + "GP": { + "code": "GP", + "name": "Guadeloupe", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇬🇵", + "flag_svg": "gp.svg" + }, + "GU": { + "code": "GU", + "name": "Guam", + "currency": "USD", + "language": [ + "en", + "ch" + ], + "flag": "🇬🇺", + "flag_svg": "gu.svg" + }, + "GT": { + "code": "GT", + "name": "Guatemala", + "currency": "GTQ", + "language": [ + "es" + ], + "flag": "🇬🇹", + "flag_svg": "gt.svg" + }, + "GG": { + "code": "GG", + "name": "Guernsey", + "currency": "GBP", + "language": [ + "en" + ], + "flag": "🇬🇬", + "flag_svg": "gg.svg" + }, + "GN": { + "code": "GN", + "name": "Guinea", + "currency": "GNF", + "language": [ + "fr" + ], + "flag": "🇬🇳", + "flag_svg": "gn.svg" + }, + "GW": { + "code": "GW", + "name": "Guinea-Bissau", + "currency": "XOF", + "language": [ + "pt" + ], + "flag": "🇬🇼", + "flag_svg": "gw.svg" + }, + "GY": { + "code": "GY", + "name": "Guyana", + "currency": "GYD", + "language": [ + "en" + ], + "flag": "🇬🇾", + "flag_svg": "gy.svg" + }, + "HT": { + "code": "HT", + "name": "Haiti", + "currency": "HTG", + "language": [ + "ht", + "fr" + ], + "flag": "🇭🇹", + "flag_svg": "ht.svg" + }, + "HM": { + "code": "HM", + "name": "Heard Island & Mcdonald Islands", + "currency": "AUD", + "language": [ + "en" + ], + "flag": "🇭🇲", + "flag_svg": "hm.svg" + }, + "VA": { + "code": "VA", + "name": "Holy See (Vatican City State)", + "currency": "EUR", + "language": [ + "it", + "la" + ], + "flag": "🇻🇦", + "flag_svg": "va.svg" + }, + "HN": { + "code": "HN", + "name": "Honduras", + "currency": "HNL", + "language": [ + "es" + ], + "flag": "🇭🇳", + "flag_svg": "hn.svg" + }, + "HK": { + "code": "HK", + "name": "Hong Kong", + "currency": "HKD", + "language": [ + "zh", + "en" + ], + "flag": "🇭🇰", + "flag_svg": "hk.svg" + }, + "HU": { + "code": "HU", + "name": "Hungary", + "currency": "HUF", + "language": [ + "hu" + ], + "flag": "🇭🇺", + "flag_svg": "hu.svg" + }, + "IS": { + "code": "IS", + "name": "Iceland", + "currency": "ISK", + "language": [ + "is" + ], + "flag": "🇮🇸", + "flag_svg": "is.svg" + }, + "IN": { + "code": "IN", + "name": "India", + "currency": "INR", + "language": [ + "hi", + "en" + ], + "flag": "🇮🇳", + "flag_svg": "in.svg" + }, + "ID": { + "code": "ID", + "name": "Indonesia", + "currency": "IDR", + "language": [ + "id" + ], + "flag": "🇮🇩", + "flag_svg": "id.svg" + }, + "IR": { + "code": "IR", + "name": "Iran, Islamic Republic Of", + "currency": "IRR", + "language": [ + "fa" + ], + "flag": "🇮🇷", + "flag_svg": "ir.svg" + }, + "IQ": { + "code": "IQ", + "name": "Iraq", + "currency": "IQD", + "language": [ + "ar", + "ku" + ], + "flag": "🇮🇶", + "flag_svg": "iq.svg" + }, + "IE": { + "code": "IE", + "name": "Ireland", + "currency": "EUR", + "language": [ + "en", + "ga" + ], + "flag": "🇮🇪", + "flag_svg": "ie.svg" + }, + "IM": { + "code": "IM", + "name": "Isle Of Man", + "currency": "GBP", + "language": [ + "en" + ], + "flag": "🇮🇲", + "flag_svg": "im.svg" + }, + "IL": { + "code": "IL", + "name": "Israel", + "currency": "ILS", + "language": [ + "he", + "ar" + ], + "flag": "🇮🇱", + "flag_svg": "il.svg" + }, + "IT": { + "code": "IT", + "name": "Italy", + "currency": "EUR", + "language": [ + "it" + ], + "flag": "🇮🇹", + "flag_svg": "it.svg" + }, + "JM": { + "code": "JM", + "name": "Jamaica", + "currency": "JMD", + "language": [ + "en" + ], + "flag": "🇯🇲", + "flag_svg": "jm.svg" + }, + "JP": { + "code": "JP", + "name": "Japan", + "currency": "JPY", + "language": [ + "ja" + ], + "flag": "🇯🇵", + "flag_svg": "jp.svg" + }, + "JE": { + "code": "JE", + "name": "Jersey", + "currency": "GBP", + "language": [ + "en" + ], + "flag": "🇯🇪", + "flag_svg": "je.svg" + }, + "JO": { + "code": "JO", + "name": "Jordan", + "currency": "JOD", + "language": [ + "ar" + ], + "flag": "🇯🇴", + "flag_svg": "jo.svg" + }, + "KZ": { + "code": "KZ", + "name": "Kazakhstan", + "currency": "KZT", + "language": [ + "kk", + "ru" + ], + "flag": "🇰🇿", + "flag_svg": "kz.svg" + }, + "KE": { + "code": "KE", + "name": "Kenya", + "currency": "KES", + "language": [ + "sw", + "en" + ], + "flag": "🇰🇪", + "flag_svg": "ke.svg" + }, + "KI": { + "code": "KI", + "name": "Kiribati", + "currency": "AUD", + "language": [ + "en" + ], + "flag": "🇰🇮", + "flag_svg": "ki.svg" + }, + "KR": { + "code": "KR", + "name": "Korea", + "currency": "KRW", + "language": [ + "ko" + ], + "flag": "🇰🇷", + "flag_svg": "kr.svg" + }, + "KP": { + "code": "KP", + "name": "North Korea", + "currency": "KPW", + "language": [ + "ko" + ], + "flag": "🇰🇵", + "flag_svg": "kp.svg" + }, + "KW": { + "code": "KW", + "name": "Kuwait", + "currency": "KWD", + "language": [ + "ar" + ], + "flag": "🇰🇼", + "flag_svg": "kw.svg" + }, + "KG": { + "code": "KG", + "name": "Kyrgyzstan", + "currency": "KGS", + "language": [ + "ky", + "ru" + ], + "flag": "🇰🇬", + "flag_svg": "kg.svg" + }, + "LA": { + "code": "LA", + "name": "Lao People\"s Democratic Republic", + "currency": "LAK", + "language": [ + "lo" + ], + "flag": "🇱🇦", + "flag_svg": "la.svg" + }, + "LV": { + "code": "LV", + "name": "Latvia", + "currency": "EUR", + "language": [ + "lv" + ], + "flag": "🇱🇻", + "flag_svg": "lv.svg" + }, + "LB": { + "code": "LB", + "name": "Lebanon", + "currency": "LBP", + "language": [ + "ar" + ], + "flag": "🇱🇧", + "flag_svg": "lb.svg" + }, + "LS": { + "code": "LS", + "name": "Lesotho", + "currency": "LSL", + "language": [ + "st", + "en" + ], + "flag": "🇱🇸", + "flag_svg": "ls.svg" + }, + "LR": { + "code": "LR", + "name": "Liberia", + "currency": "LRD", + "language": [ + "en" + ], + "flag": "🇱🇷", + "flag_svg": "lr.svg" + }, + "LY": { + "code": "LY", + "name": "Libyan Arab Jamahiriya", + "currency": "LYD", + "language": [ + "ar" + ], + "flag": "🇱🇾", + "flag_svg": "ly.svg" + }, + "LI": { + "code": "LI", + "name": "Liechtenstein", + "currency": "CHF", + "language": [ + "de" + ], + "flag": "🇱🇮", + "flag_svg": "li.svg" + }, + "LT": { + "code": "LT", + "name": "Lithuania", + "currency": "EUR", + "language": [ + "lt" + ], + "flag": "🇱🇹", + "flag_svg": "lt.svg" + }, + "LU": { + "code": "LU", + "name": "Luxembourg", + "currency": "EUR", + "language": [ + "lb", + "fr", + "de" + ], + "flag": "🇱🇺", + "flag_svg": "lu.svg" + }, + "MO": { + "code": "MO", + "name": "Macao", + "currency": "MOP", + "language": [ + "zh", + "pt" + ], + "flag": "🇲🇴", + "flag_svg": "mo.svg" + }, + "MK": { + "code": "MK", + "name": "Macedonia", + "currency": "MKD", + "language": [ + "mk" + ], + "flag": "🇲🇰", + "flag_svg": "mk.svg" + }, + "MG": { + "code": "MG", + "name": "Madagascar", + "currency": "MGA", + "language": [ + "mg", + "fr" + ], + "flag": "🇲🇬", + "flag_svg": "mg.svg" + }, + "MW": { + "code": "MW", + "name": "Malawi", + "currency": "MWK", + "language": [ + "en", + "ny" + ], + "flag": "🇲🇼", + "flag_svg": "mw.svg" + }, + "MY": { + "code": "MY", + "name": "Malaysia", + "currency": "MYR", + "language": [ + "ms" + ], + "flag": "🇲🇾", + "flag_svg": "my.svg" + }, + "MV": { + "code": "MV", + "name": "Maldives", + "currency": "MVR", + "language": [ + "dv" + ], + "flag": "🇲🇻", + "flag_svg": "mv.svg" + }, + "ML": { + "code": "ML", + "name": "Mali", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇲🇱", + "flag_svg": "ml.svg" + }, + "MT": { + "code": "MT", + "name": "Malta", + "currency": "EUR", + "language": [ + "mt", + "en" + ], + "flag": "🇲🇹", + "flag_svg": "mt.svg" + }, + "MH": { + "code": "MH", + "name": "Marshall Islands", + "currency": "USD", + "language": [ + "mh", + "en" + ], + "flag": "🇲🇭", + "flag_svg": "mh.svg" + }, + "MQ": { + "code": "MQ", + "name": "Martinique", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇲🇶", + "flag_svg": "mq.svg" + }, + "MR": { + "code": "MR", + "name": "Mauritania", + "currency": "MRU", + "language": [ + "ar" + ], + "flag": "🇲🇷", + "flag_svg": "mr.svg" + }, + "MU": { + "code": "MU", + "name": "Mauritius", + "currency": "MUR", + "language": [ + "en", + "fr", + "mfe" + ], + "flag": "🇲🇺", + "flag_svg": "mu.svg" + }, + "YT": { + "code": "YT", + "name": "Mayotte", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇾🇹", + "flag_svg": "yt.svg" + }, + "MX": { + "code": "MX", + "name": "Mexico", + "currency": "MXN", + "language": [ + "es" + ], + "flag": "🇲🇽", + "flag_svg": "mx.svg" + }, + "FM": { + "code": "FM", + "name": "Micronesia, Federated States Of", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇫🇲", + "flag_svg": "fm.svg" + }, + "MD": { + "code": "MD", + "name": "Moldova", + "currency": "MDL", + "language": [ + "ro" + ], + "flag": "🇲🇩", + "flag_svg": "md.svg" + }, + "MC": { + "code": "MC", + "name": "Monaco", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇲🇨", + "flag_svg": "mc.svg" + }, + "MN": { + "code": "MN", + "name": "Mongolia", + "currency": "MNT", + "language": [ + "mn" + ], + "flag": "🇲🇳", + "flag_svg": "mn.svg" + }, + "ME": { + "code": "ME", + "name": "Montenegro", + "currency": "EUR", + "language": [ + "srp", + "sr", + "me" + ], + "flag": "🇲🇪", + "flag_svg": "me.svg" + }, + "MS": { + "code": "MS", + "name": "Montserrat", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇲🇸", + "flag_svg": "ms.svg" + }, + "MA": { + "code": "MA", + "name": "Morocco", + "currency": "MAD", + "language": [ + "ar", + "fr", + "ber" + ], + "flag": "🇲🇦", + "flag_svg": "ma.svg" + }, + "MZ": { + "code": "MZ", + "name": "Mozambique", + "currency": "MZN", + "language": [ + "pt" + ], + "flag": "🇲🇿", + "flag_svg": "mz.svg" + }, + "MM": { + "code": "MM", + "name": "Myanmar", + "currency": "MMK", + "language": [ + "my" + ], + "flag": "🇲🇲", + "flag_svg": "mm.svg" + }, + "NA": { + "code": "NA", + "name": "Namibia", + "currency": "NAD", + "language": [ + "en" + ], + "flag": "🇳🇦", + "flag_svg": "na.svg" + }, + "NR": { + "code": "NR", + "name": "Nauru", + "currency": "AUD", + "language": [ + "na", + "en" + ], + "flag": "🇳🇷", + "flag_svg": "nr.svg" + }, + "NP": { + "code": "NP", + "name": "Nepal", + "currency": "NPR", + "language": [ + "ne" + ], + "flag": "🇳🇵", + "flag_svg": "np.svg" + }, + "NL": { + "code": "NL", + "name": "Netherlands", + "currency": "EUR", + "language": [ + "nl" + ], + "flag": "🇳🇱", + "flag_svg": "nl.svg" + }, + "AN": { + "code": "AN", + "name": "Netherlands Antilles", + "currency": "ANG", + "language": [ + "nl", + "pap" + ], + "flag": "🇦🇳", + "flag_svg": "an.svg" + }, + "NC": { + "code": "NC", + "name": "New Caledonia", + "currency": "XPF", + "language": [ + "fr" + ], + "flag": "🇳🇨", + "flag_svg": "nc.svg" + }, + "NZ": { + "code": "NZ", + "name": "New Zealand", + "currency": "NZD", + "language": [ + "en", + "mi" + ], + "flag": "🇳🇿", + "flag_svg": "nz.svg" + }, + "NI": { + "code": "NI", + "name": "Nicaragua", + "currency": "NIO", + "language": [ + "es" + ], + "flag": "🇳🇮", + "flag_svg": "ni.svg" + }, + "NE": { + "code": "NE", + "name": "Niger", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇳🇪", + "flag_svg": "ne.svg" + }, + "NG": { + "code": "NG", + "name": "Nigeria", + "currency": "NGN", + "language": [ + "en" + ], + "flag": "🇳🇬", + "flag_svg": "ng.svg" + }, + "NU": { + "code": "NU", + "name": "Niue", + "currency": "NZD", + "language": [ + "en", + "niu" + ], + "flag": "🇳🇺", + "flag_svg": "nu.svg" + }, + "NF": { + "code": "NF", + "name": "Norfolk Island", + "currency": "AUD", + "language": [ + "en" + ], + "flag": "🇳🇫", + "flag_svg": "nf.svg" + }, + "MP": { + "code": "MP", + "name": "Northern Mariana Islands", + "currency": "USD", + "language": [ + "en", + "ch" + ], + "flag": "🇲🇵", + "flag_svg": "mp.svg" + }, + "NO": { + "code": "NO", + "name": "Norway", + "currency": "NOK", + "language": [ + "nb", + "nn" + ], + "flag": "🇳🇴", + "flag_svg": "no.svg" + }, + "OM": { + "code": "OM", + "name": "Oman", + "currency": "OMR", + "language": [ + "ar" + ], + "flag": "🇴🇲", + "flag_svg": "om.svg" + }, + "PK": { + "code": "PK", + "name": "Pakistan", + "currency": "PKR", + "language": [ + "ur", + "en" + ], + "flag": "🇵🇰", + "flag_svg": "pk.svg" + }, + "PW": { + "code": "PW", + "name": "Palau", + "currency": "USD", + "language": [ + "en", + "pau" + ], + "flag": "🇵🇼", + "flag_svg": "pw.svg" + }, + "PS": { + "code": "PS", + "name": "Palestinian Territory, Occupied", + "currency": "ILS", + "language": [ + "ar" + ], + "flag": "🇵🇸", + "flag_svg": "ps.svg" + }, + "PA": { + "code": "PA", + "name": "Panama", + "currency": "PAB", + "language": [ + "es" + ], + "flag": "🇵🇦", + "flag_svg": "pa.svg" + }, + "PG": { + "code": "PG", + "name": "Papua New Guinea", + "currency": "PGK", + "language": [ + "en", + "tpi", + "ho" + ], + "flag": "🇵🇬", + "flag_svg": "pg.svg" + }, + "PY": { + "code": "PY", + "name": "Paraguay", + "currency": "PYG", + "language": [ + "es", + "gn" + ], + "flag": "🇵🇾", + "flag_svg": "py.svg" + }, + "PE": { + "code": "PE", + "name": "Peru", + "currency": "PEN", + "language": [ + "es", + "qu", + "ay" + ], + "flag": "🇵🇪", + "flag_svg": "pe.svg" + }, + "PH": { + "code": "PH", + "name": "Philippines", + "currency": "PHP", + "language": [ + "fil", + "en" + ], + "flag": "🇵🇭", + "flag_svg": "ph.svg" + }, + "PN": { + "code": "PN", + "name": "Pitcairn", + "currency": "NZD", + "language": [ + "en" + ], + "flag": "🇵🇳", + "flag_svg": "pn.svg" + }, + "PL": { + "code": "PL", + "name": "Poland", + "currency": "PLN", + "language": [ + "pl" + ], + "flag": "🇵🇱", + "flag_svg": "pl.svg" + }, + "PT": { + "code": "PT", + "name": "Portugal", + "currency": "EUR", + "language": [ + "pt" + ], + "flag": "🇵🇹", + "flag_svg": "pt.svg" + }, + "PR": { + "code": "PR", + "name": "Puerto Rico", + "currency": "USD", + "language": [ + "es", + "en" + ], + "flag": "🇵🇷", + "flag_svg": "pr.svg" + }, + "QA": { + "code": "QA", + "name": "Qatar", + "currency": "QAR", + "language": [ + "ar" + ], + "flag": "🇶🇦", + "flag_svg": "qa.svg" + }, + "RE": { + "code": "RE", + "name": "Reunion", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇷🇪", + "flag_svg": "re.svg" + }, + "RO": { + "code": "RO", + "name": "Romania", + "currency": "RON", + "language": [ + "ro" + ], + "flag": "🇷🇴", + "flag_svg": "ro.svg" + }, + "RU": { + "code": "RU", + "name": "Russian Federation", + "currency": "RUB", + "language": [ + "ru" + ], + "flag": "🇷🇺", + "flag_svg": "ru.svg" + }, + "RW": { + "code": "RW", + "name": "Rwanda", + "currency": "RWF", + "language": [ + "rw", + "fr", + "en" + ], + "flag": "🇷🇼", + "flag_svg": "rw.svg" + }, + "BL": { + "code": "BL", + "name": "Saint Barthelemy", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇧🇱", + "flag_svg": "bl.svg" + }, + "SH": { + "code": "SH", + "name": "Saint Helena", + "currency": "SHP", + "language": [ + "en" + ], + "flag": "🇸🇭", + "flag_svg": "sh.svg" + }, + "KN": { + "code": "KN", + "name": "Saint Kitts And Nevis", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇰🇳", + "flag_svg": "kn.svg" + }, + "LC": { + "code": "LC", + "name": "Saint Lucia", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇱🇨", + "flag_svg": "lc.svg" + }, + "MF": { + "code": "MF", + "name": "Saint Martin", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇲🇫", + "flag_svg": "mf.svg" + }, + "PM": { + "code": "PM", + "name": "Saint Pierre And Miquelon", + "currency": "EUR", + "language": [ + "fr" + ], + "flag": "🇵🇲", + "flag_svg": "pm.svg" + }, + "VC": { + "code": "VC", + "name": "Saint Vincent And Grenadines", + "currency": "XCD", + "language": [ + "en" + ], + "flag": "🇻🇨", + "flag_svg": "vc.svg" + }, + "WS": { + "code": "WS", + "name": "Samoa", + "currency": "WST", + "language": [ + "sm", + "en" + ], + "flag": "🇼🇸", + "flag_svg": "ws.svg" + }, + "SM": { + "code": "SM", + "name": "San Marino", + "currency": "EUR", + "language": [ + "it" + ], + "flag": "🇸🇲", + "flag_svg": "sm.svg" + }, + "ST": { + "code": "ST", + "name": "Sao Tome And Principe", + "currency": "STN", + "language": [ + "pt" + ], + "flag": "🇸🇹", + "flag_svg": "st.svg" + }, + "SA": { + "code": "SA", + "name": "Saudi Arabia", + "currency": "SAR", + "language": [ + "ar" + ], + "flag": "🇸🇦", + "flag_svg": "sa.svg" + }, + "SN": { + "code": "SN", + "name": "Senegal", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇸🇳", + "flag_svg": "sn.svg" + }, + "RS": { + "code": "RS", + "name": "Serbia", + "currency": "RSD", + "language": [ + "sr" + ], + "flag": "🇷🇸", + "flag_svg": "rs.svg" + }, + "SC": { + "code": "SC", + "name": "Seychelles", + "currency": "SCR", + "language": [ + "fr", + "en", + "crs" + ], + "flag": "🇸🇨", + "flag_svg": "sc.svg" + }, + "SL": { + "code": "SL", + "name": "Sierra Leone", + "currency": "SLL", + "language": [ + "en" + ], + "flag": "🇸🇱", + "flag_svg": "sl.svg" + }, + "SG": { + "code": "SG", + "name": "Singapore", + "currency": "SGD", + "language": [ + "en", + "ms", + "zh", + "ta" + ], + "flag": "🇸🇬", + "flag_svg": "sg.svg" + }, + "SK": { + "code": "SK", + "name": "Slovakia", + "currency": "EUR", + "language": [ + "sk" + ], + "flag": "🇸🇰", + "flag_svg": "sk.svg" + }, + "SI": { + "code": "SI", + "name": "Slovenia", + "currency": "EUR", + "language": [ + "sl" + ], + "flag": "🇸🇮", + "flag_svg": "si.svg" + }, + "SB": { + "code": "SB", + "name": "Solomon Islands", + "currency": "SBD", + "language": [ + "en" + ], + "flag": "🇸🇧", + "flag_svg": "sb.svg" + }, + "SO": { + "code": "SO", + "name": "Somalia", + "currency": "SOS", + "language": [ + "so" + ], + "flag": "🇸🇴", + "flag_svg": "so.svg" + }, + "ZA": { + "code": "ZA", + "name": "South Africa", + "currency": "ZAR", + "language": [ + "en", + "zu", + "xh", + "af", + "nso", + "st", + "tn", + "ts", + "ss", + "ve", + "nr" + ], + "flag": "🇿🇦", + "flag_svg": "za.svg" + }, + "GS": { + "code": "GS", + "name": "South Georgia And Sandwich Isl.", + "currency": "GBP", + "language": [ + "en" + ], + "flag": "🇬🇸", + "flag_svg": "gs.svg" + }, + "ES": { + "code": "ES", + "name": "Spain", + "currency": "EUR", + "language": [ + "es" + ], + "flag": "🇪🇸", + "flag_svg": "es.svg" + }, + "LK": { + "code": "LK", + "name": "Sri Lanka", + "currency": "LKR", + "language": [ + "si", + "ta" + ], + "flag": "🇱🇰", + "flag_svg": "lk.svg" + }, + "SD": { + "code": "SD", + "name": "Sudan", + "currency": "SDG", + "language": [ + "ar" + ], + "flag": "🇸🇩", + "flag_svg": "sd.svg" + }, + "SR": { + "code": "SR", + "name": "Suriname", + "currency": "SRD", + "language": [ + "nl" + ], + "flag": "🇸🇷", + "flag_svg": "sr.svg" + }, + "SJ": { + "code": "SJ", + "name": "Svalbard And Jan Mayen", + "currency": "NOK", + "language": [ + "no" + ], + "flag": "🇸🇯", + "flag_svg": "sj.svg" + }, + "SZ": { + "code": "SZ", + "name": "Swaziland", + "currency": "SZL", + "language": [ + "en", + "ss" + ], + "flag": "🇸🇿", + "flag_svg": "sz.svg" + }, + "SE": { + "code": "SE", + "name": "Sweden", + "currency": "SEK", + "language": [ + "sv" + ], + "flag": "🇸🇪", + "flag_svg": "se.svg" + }, + "CH": { + "code": "CH", + "name": "Switzerland", + "currency": "CHF", + "language": [ + "de", + "fr", + "it", + "rm" + ], + "flag": "🇨🇭", + "flag_svg": "ch.svg" + }, + "SY": { + "code": "SY", + "name": "Syrian Arab Republic", + "currency": "SYP", + "language": [ + "ar" + ], + "flag": "🇸🇾", + "flag_svg": "sy.svg" + }, + "TW": { + "code": "TW", + "name": "Taiwan", + "currency": "TWD", + "language": [ + "zh" + ], + "flag": "🇹🇼", + "flag_svg": "tw.svg" + }, + "TJ": { + "code": "TJ", + "name": "Tajikistan", + "currency": "TJS", + "language": [ + "tg" + ], + "flag": "🇹🇯", + "flag_svg": "tj.svg" + }, + "TZ": { + "code": "TZ", + "name": "Tanzania", + "currency": "TZS", + "language": [ + "sw", + "en" + ], + "flag": "🇹🇿", + "flag_svg": "tz.svg" + }, + "TH": { + "code": "TH", + "name": "Thailand", + "currency": "THB", + "language": [ + "th" + ], + "flag": "🇹🇭", + "flag_svg": "th.svg" + }, + "TL": { + "code": "TL", + "name": "Timor-Leste", + "currency": "USD", + "language": [ + "pt", + "tet" + ], + "flag": "🇹🇱", + "flag_svg": "tl.svg" + }, + "TG": { + "code": "TG", + "name": "Togo", + "currency": "XOF", + "language": [ + "fr" + ], + "flag": "🇹🇬", + "flag_svg": "tg.svg" + }, + "TK": { + "code": "TK", + "name": "Tokelau", + "currency": "NZD", + "language": [ + "en" + ], + "flag": "🇹🇰", + "flag_svg": "tk.svg" + }, + "TO": { + "code": "TO", + "name": "Tonga", + "currency": "TOP", + "language": [ + "to", + "en" + ], + "flag": "🇹🇴", + "flag_svg": "to.svg" + }, + "TT": { + "code": "TT", + "name": "Trinidad And Tobago", + "currency": "TTD", + "language": [ + "en" + ], + "flag": "🇹🇹", + "flag_svg": "tt.svg" + }, + "TN": { + "code": "TN", + "name": "Tunisia", + "currency": "TND", + "language": [ + "ar" + ], + "flag": "🇹🇳", + "flag_svg": "tn.svg" + }, + "TR": { + "code": "TR", + "name": "Turkey", + "currency": "TRY", + "language": [ + "tr" + ], + "flag": "🇹🇷", + "flag_svg": "tr.svg" + }, + "TM": { + "code": "TM", + "name": "Turkmenistan", + "currency": "TMT", + "language": [ + "tk" + ], + "flag": "🇹🇲", + "flag_svg": "tm.svg" + }, + "TC": { + "code": "TC", + "name": "Turks And Caicos Islands", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇹🇨", + "flag_svg": "tc.svg" + }, + "TV": { + "code": "TV", + "name": "Tuvalu", + "currency": "AUD", + "language": [ + "tvl", + "en" + ], + "flag": "🇹🇻", + "flag_svg": "tv.svg" + }, + "UG": { + "code": "UG", + "name": "Uganda", + "currency": "UGX", + "language": [ + "en", + "sw" + ], + "flag": "🇺🇬", + "flag_svg": "ug.svg" + }, + "UA": { + "code": "UA", + "name": "Ukraine", + "currency": "UAH", + "language": [ + "uk" + ], + "flag": "🇺🇦", + "flag_svg": "ua.svg" + }, + "AE": { + "code": "AE", + "name": "United Arab Emirates", + "currency": "AED", + "language": [ + "ar" + ], + "flag": "🇦🇪", + "flag_svg": "ae.svg" + }, + "GB": { + "code": "GB", + "name": "United Kingdom", + "currency": "GBP", + "language": [ + "en" + ], + "flag": "🇬🇧", + "flag_svg": "gb.svg" + }, + "US": { + "code": "US", + "name": "United States", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇺🇸", + "flag_svg": "us.svg" + }, + "UM": { + "code": "UM", + "name": "United States Outlying Islands", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇺🇲", + "flag_svg": "um.svg" + }, + "UY": { + "code": "UY", + "name": "Uruguay", + "currency": "UYU", + "language": [ + "es" + ], + "flag": "🇺🇾", + "flag_svg": "uy.svg" + }, + "UZ": { + "code": "UZ", + "name": "Uzbekistan", + "currency": "UZS", + "language": [ + "uz" + ], + "flag": "🇺🇿", + "flag_svg": "uz.svg" + }, + "VU": { + "code": "VU", + "name": "Vanuatu", + "currency": "VUV", + "language": [ + "bi", + "en", + "fr" + ], + "flag": "🇻🇺", + "flag_svg": "vu.svg" + }, + "VE": { + "code": "VE", + "name": "Venezuela", + "currency": "VES", + "language": [ + "es" + ], + "flag": "🇻🇪", + "flag_svg": "ve.svg" + }, + "VN": { + "code": "VN", + "name": "Vietnam", + "currency": "VND", + "language": [ + "vi" + ], + "flag": "🇻🇳", + "flag_svg": "vn.svg" + }, + "VG": { + "code": "VG", + "name": "Virgin Islands, British", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇻🇬", + "flag_svg": "vg.svg" + }, + "VI": { + "code": "VI", + "name": "Virgin Islands, U.S.", + "currency": "USD", + "language": [ + "en" + ], + "flag": "🇻🇮", + "flag_svg": "vi.svg" + }, + "WF": { + "code": "WF", + "name": "Wallis And Futuna", + "currency": "XPF", + "language": [ + "fr" + ], + "flag": "🇼🇫", + "flag_svg": "wf.svg" + }, + "EH": { + "code": "EH", + "name": "Western Sahara", + "currency": "MAD", + "language": [ + "ar" + ], + "flag": "🇪🇭", + "flag_svg": "eh.svg" + }, + "YE": { + "code": "YE", + "name": "Yemen", + "currency": "YER", + "language": [ + "ar" + ], + "flag": "🇾🇪", + "flag_svg": "ye.svg" + }, + "ZM": { + "code": "ZM", + "name": "Zambia", + "currency": "ZMW", + "language": [ + "en" + ], + "flag": "🇿🇲", + "flag_svg": "zm.svg" + }, + "ZW": { + "code": "ZW", + "name": "Zimbabwe", + "currency": "ZWL", + "language": [ + "en", + "sn", + "nd" + ], + "flag": "🇿🇼", + "flag_svg": "zw.svg" + } +} \ No newline at end of file diff --git a/data/countries_min.json b/data/countries_min.json new file mode 100644 index 0000000..02ce257 --- /dev/null +++ b/data/countries_min.json @@ -0,0 +1,986 @@ +{ + "AF": { + "code": "AF", + "name": "Afghanistan" + }, + "AX": { + "code": "AX", + "name": "Aland Islands" + }, + "AL": { + "code": "AL", + "name": "Albania" + }, + "DZ": { + "code": "DZ", + "name": "Algeria" + }, + "AS": { + "code": "AS", + "name": "American Samoa" + }, + "AD": { + "code": "AD", + "name": "Andorra" + }, + "AO": { + "code": "AO", + "name": "Angola" + }, + "AI": { + "code": "AI", + "name": "Anguilla" + }, + "AQ": { + "code": "AQ", + "name": "Antarctica" + }, + "AG": { + "code": "AG", + "name": "Antigua And Barbuda" + }, + "AR": { + "code": "AR", + "name": "Argentina" + }, + "AM": { + "code": "AM", + "name": "Armenia" + }, + "AW": { + "code": "AW", + "name": "Aruba" + }, + "AU": { + "code": "AU", + "name": "Australia" + }, + "AT": { + "code": "AT", + "name": "Austria" + }, + "AZ": { + "code": "AZ", + "name": "Azerbaijan" + }, + "BS": { + "code": "BS", + "name": "Bahamas" + }, + "BH": { + "code": "BH", + "name": "Bahrain" + }, + "BD": { + "code": "BD", + "name": "Bangladesh" + }, + "BB": { + "code": "BB", + "name": "Barbados" + }, + "BY": { + "code": "BY", + "name": "Belarus" + }, + "BE": { + "code": "BE", + "name": "Belgium" + }, + "BZ": { + "code": "BZ", + "name": "Belize" + }, + "BJ": { + "code": "BJ", + "name": "Benin" + }, + "BM": { + "code": "BM", + "name": "Bermuda" + }, + "BT": { + "code": "BT", + "name": "Bhutan" + }, + "BO": { + "code": "BO", + "name": "Bolivia" + }, + "BA": { + "code": "BA", + "name": "Bosnia And Herzegovina" + }, + "BW": { + "code": "BW", + "name": "Botswana" + }, + "BV": { + "code": "BV", + "name": "Bouvet Island" + }, + "BR": { + "code": "BR", + "name": "Brazil" + }, + "IO": { + "code": "IO", + "name": "British Indian Ocean Territory" + }, + "BN": { + "code": "BN", + "name": "Brunei Darussalam" + }, + "BG": { + "code": "BG", + "name": "Bulgaria" + }, + "BF": { + "code": "BF", + "name": "Burkina Faso" + }, + "BI": { + "code": "BI", + "name": "Burundi" + }, + "KH": { + "code": "KH", + "name": "Cambodia" + }, + "CM": { + "code": "CM", + "name": "Cameroon" + }, + "CA": { + "code": "CA", + "name": "Canada" + }, + "CV": { + "code": "CV", + "name": "Cape Verde" + }, + "KY": { + "code": "KY", + "name": "Cayman Islands" + }, + "CF": { + "code": "CF", + "name": "Central African Republic" + }, + "TD": { + "code": "TD", + "name": "Chad" + }, + "CL": { + "code": "CL", + "name": "Chile" + }, + "CN": { + "code": "CN", + "name": "China" + }, + "CX": { + "code": "CX", + "name": "Christmas Island" + }, + "CC": { + "code": "CC", + "name": "Cocos (Keeling) Islands" + }, + "CO": { + "code": "CO", + "name": "Colombia" + }, + "KM": { + "code": "KM", + "name": "Comoros" + }, + "CG": { + "code": "CG", + "name": "Congo" + }, + "CD": { + "code": "CD", + "name": "Congo, Democratic Republic" + }, + "CK": { + "code": "CK", + "name": "Cook Islands" + }, + "CR": { + "code": "CR", + "name": "Costa Rica" + }, + "CI": { + "code": "CI", + "name": "Cote D\"Ivoire" + }, + "HR": { + "code": "HR", + "name": "Croatia" + }, + "CU": { + "code": "CU", + "name": "Cuba" + }, + "CY": { + "code": "CY", + "name": "Cyprus" + }, + "CZ": { + "code": "CZ", + "name": "Czech Republic" + }, + "DK": { + "code": "DK", + "name": "Denmark" + }, + "DJ": { + "code": "DJ", + "name": "Djibouti" + }, + "DM": { + "code": "DM", + "name": "Dominica" + }, + "DO": { + "code": "DO", + "name": "Dominican Republic" + }, + "EC": { + "code": "EC", + "name": "Ecuador" + }, + "EG": { + "code": "EG", + "name": "Egypt" + }, + "SV": { + "code": "SV", + "name": "El Salvador" + }, + "GQ": { + "code": "GQ", + "name": "Equatorial Guinea" + }, + "ER": { + "code": "ER", + "name": "Eritrea" + }, + "EE": { + "code": "EE", + "name": "Estonia" + }, + "ET": { + "code": "ET", + "name": "Ethiopia" + }, + "FK": { + "code": "FK", + "name": "Falkland Islands (Malvinas)" + }, + "FO": { + "code": "FO", + "name": "Faroe Islands" + }, + "FJ": { + "code": "FJ", + "name": "Fiji" + }, + "FI": { + "code": "FI", + "name": "Finland" + }, + "FR": { + "code": "FR", + "name": "France" + }, + "GF": { + "code": "GF", + "name": "French Guiana" + }, + "PF": { + "code": "PF", + "name": "French Polynesia" + }, + "TF": { + "code": "TF", + "name": "French Southern Territories" + }, + "GA": { + "code": "GA", + "name": "Gabon" + }, + "GM": { + "code": "GM", + "name": "Gambia" + }, + "GE": { + "code": "GE", + "name": "Georgia" + }, + "DE": { + "code": "DE", + "name": "Germany" + }, + "GH": { + "code": "GH", + "name": "Ghana" + }, + "GI": { + "code": "GI", + "name": "Gibraltar" + }, + "GR": { + "code": "GR", + "name": "Greece" + }, + "GL": { + "code": "GL", + "name": "Greenland" + }, + "GD": { + "code": "GD", + "name": "Grenada" + }, + "GP": { + "code": "GP", + "name": "Guadeloupe" + }, + "GU": { + "code": "GU", + "name": "Guam" + }, + "GT": { + "code": "GT", + "name": "Guatemala" + }, + "GG": { + "code": "GG", + "name": "Guernsey" + }, + "GN": { + "code": "GN", + "name": "Guinea" + }, + "GW": { + "code": "GW", + "name": "Guinea-Bissau" + }, + "GY": { + "code": "GY", + "name": "Guyana" + }, + "HT": { + "code": "HT", + "name": "Haiti" + }, + "HM": { + "code": "HM", + "name": "Heard Island & Mcdonald Islands" + }, + "VA": { + "code": "VA", + "name": "Holy See (Vatican City State)" + }, + "HN": { + "code": "HN", + "name": "Honduras" + }, + "HK": { + "code": "HK", + "name": "Hong Kong" + }, + "HU": { + "code": "HU", + "name": "Hungary" + }, + "IS": { + "code": "IS", + "name": "Iceland" + }, + "IN": { + "code": "IN", + "name": "India" + }, + "ID": { + "code": "ID", + "name": "Indonesia" + }, + "IR": { + "code": "IR", + "name": "Iran, Islamic Republic Of" + }, + "IQ": { + "code": "IQ", + "name": "Iraq" + }, + "IE": { + "code": "IE", + "name": "Ireland" + }, + "IM": { + "code": "IM", + "name": "Isle Of Man" + }, + "IL": { + "code": "IL", + "name": "Israel" + }, + "IT": { + "code": "IT", + "name": "Italy" + }, + "JM": { + "code": "JM", + "name": "Jamaica" + }, + "JP": { + "code": "JP", + "name": "Japan" + }, + "JE": { + "code": "JE", + "name": "Jersey" + }, + "JO": { + "code": "JO", + "name": "Jordan" + }, + "KZ": { + "code": "KZ", + "name": "Kazakhstan" + }, + "KE": { + "code": "KE", + "name": "Kenya" + }, + "KI": { + "code": "KI", + "name": "Kiribati" + }, + "KR": { + "code": "KR", + "name": "Korea" + }, + "KP": { + "code": "KP", + "name": "North Korea" + }, + "KW": { + "code": "KW", + "name": "Kuwait" + }, + "KG": { + "code": "KG", + "name": "Kyrgyzstan" + }, + "LA": { + "code": "LA", + "name": "Lao People\"s Democratic Republic" + }, + "LV": { + "code": "LV", + "name": "Latvia" + }, + "LB": { + "code": "LB", + "name": "Lebanon" + }, + "LS": { + "code": "LS", + "name": "Lesotho" + }, + "LR": { + "code": "LR", + "name": "Liberia" + }, + "LY": { + "code": "LY", + "name": "Libyan Arab Jamahiriya" + }, + "LI": { + "code": "LI", + "name": "Liechtenstein" + }, + "LT": { + "code": "LT", + "name": "Lithuania" + }, + "LU": { + "code": "LU", + "name": "Luxembourg" + }, + "MO": { + "code": "MO", + "name": "Macao" + }, + "MK": { + "code": "MK", + "name": "Macedonia" + }, + "MG": { + "code": "MG", + "name": "Madagascar" + }, + "MW": { + "code": "MW", + "name": "Malawi" + }, + "MY": { + "code": "MY", + "name": "Malaysia" + }, + "MV": { + "code": "MV", + "name": "Maldives" + }, + "ML": { + "code": "ML", + "name": "Mali" + }, + "MT": { + "code": "MT", + "name": "Malta" + }, + "MH": { + "code": "MH", + "name": "Marshall Islands" + }, + "MQ": { + "code": "MQ", + "name": "Martinique" + }, + "MR": { + "code": "MR", + "name": "Mauritania" + }, + "MU": { + "code": "MU", + "name": "Mauritius" + }, + "YT": { + "code": "YT", + "name": "Mayotte" + }, + "MX": { + "code": "MX", + "name": "Mexico" + }, + "FM": { + "code": "FM", + "name": "Micronesia, Federated States Of" + }, + "MD": { + "code": "MD", + "name": "Moldova" + }, + "MC": { + "code": "MC", + "name": "Monaco" + }, + "MN": { + "code": "MN", + "name": "Mongolia" + }, + "ME": { + "code": "ME", + "name": "Montenegro" + }, + "MS": { + "code": "MS", + "name": "Montserrat" + }, + "MA": { + "code": "MA", + "name": "Morocco" + }, + "MZ": { + "code": "MZ", + "name": "Mozambique" + }, + "MM": { + "code": "MM", + "name": "Myanmar" + }, + "NA": { + "code": "NA", + "name": "Namibia" + }, + "NR": { + "code": "NR", + "name": "Nauru" + }, + "NP": { + "code": "NP", + "name": "Nepal" + }, + "NL": { + "code": "NL", + "name": "Netherlands" + }, + "AN": { + "code": "AN", + "name": "Netherlands Antilles" + }, + "NC": { + "code": "NC", + "name": "New Caledonia" + }, + "NZ": { + "code": "NZ", + "name": "New Zealand" + }, + "NI": { + "code": "NI", + "name": "Nicaragua" + }, + "NE": { + "code": "NE", + "name": "Niger" + }, + "NG": { + "code": "NG", + "name": "Nigeria" + }, + "NU": { + "code": "NU", + "name": "Niue" + }, + "NF": { + "code": "NF", + "name": "Norfolk Island" + }, + "MP": { + "code": "MP", + "name": "Northern Mariana Islands" + }, + "NO": { + "code": "NO", + "name": "Norway" + }, + "OM": { + "code": "OM", + "name": "Oman" + }, + "PK": { + "code": "PK", + "name": "Pakistan" + }, + "PW": { + "code": "PW", + "name": "Palau" + }, + "PS": { + "code": "PS", + "name": "Palestinian Territory, Occupied" + }, + "PA": { + "code": "PA", + "name": "Panama" + }, + "PG": { + "code": "PG", + "name": "Papua New Guinea" + }, + "PY": { + "code": "PY", + "name": "Paraguay" + }, + "PE": { + "code": "PE", + "name": "Peru" + }, + "PH": { + "code": "PH", + "name": "Philippines" + }, + "PN": { + "code": "PN", + "name": "Pitcairn" + }, + "PL": { + "code": "PL", + "name": "Poland" + }, + "PT": { + "code": "PT", + "name": "Portugal" + }, + "PR": { + "code": "PR", + "name": "Puerto Rico" + }, + "QA": { + "code": "QA", + "name": "Qatar" + }, + "RE": { + "code": "RE", + "name": "Reunion" + }, + "RO": { + "code": "RO", + "name": "Romania" + }, + "RU": { + "code": "RU", + "name": "Russian Federation" + }, + "RW": { + "code": "RW", + "name": "Rwanda" + }, + "BL": { + "code": "BL", + "name": "Saint Barthelemy" + }, + "SH": { + "code": "SH", + "name": "Saint Helena" + }, + "KN": { + "code": "KN", + "name": "Saint Kitts And Nevis" + }, + "LC": { + "code": "LC", + "name": "Saint Lucia" + }, + "MF": { + "code": "MF", + "name": "Saint Martin" + }, + "PM": { + "code": "PM", + "name": "Saint Pierre And Miquelon" + }, + "VC": { + "code": "VC", + "name": "Saint Vincent And Grenadines" + }, + "WS": { + "code": "WS", + "name": "Samoa" + }, + "SM": { + "code": "SM", + "name": "San Marino" + }, + "ST": { + "code": "ST", + "name": "Sao Tome And Principe" + }, + "SA": { + "code": "SA", + "name": "Saudi Arabia" + }, + "SN": { + "code": "SN", + "name": "Senegal" + }, + "RS": { + "code": "RS", + "name": "Serbia" + }, + "SC": { + "code": "SC", + "name": "Seychelles" + }, + "SL": { + "code": "SL", + "name": "Sierra Leone" + }, + "SG": { + "code": "SG", + "name": "Singapore" + }, + "SK": { + "code": "SK", + "name": "Slovakia" + }, + "SI": { + "code": "SI", + "name": "Slovenia" + }, + "SB": { + "code": "SB", + "name": "Solomon Islands" + }, + "SO": { + "code": "SO", + "name": "Somalia" + }, + "ZA": { + "code": "ZA", + "name": "South Africa" + }, + "GS": { + "code": "GS", + "name": "South Georgia And Sandwich Isl." + }, + "ES": { + "code": "ES", + "name": "Spain" + }, + "LK": { + "code": "LK", + "name": "Sri Lanka" + }, + "SD": { + "code": "SD", + "name": "Sudan" + }, + "SR": { + "code": "SR", + "name": "Suriname" + }, + "SJ": { + "code": "SJ", + "name": "Svalbard And Jan Mayen" + }, + "SZ": { + "code": "SZ", + "name": "Swaziland" + }, + "SE": { + "code": "SE", + "name": "Sweden" + }, + "CH": { + "code": "CH", + "name": "Switzerland" + }, + "SY": { + "code": "SY", + "name": "Syrian Arab Republic" + }, + "TW": { + "code": "TW", + "name": "Taiwan" + }, + "TJ": { + "code": "TJ", + "name": "Tajikistan" + }, + "TZ": { + "code": "TZ", + "name": "Tanzania" + }, + "TH": { + "code": "TH", + "name": "Thailand" + }, + "TL": { + "code": "TL", + "name": "Timor-Leste" + }, + "TG": { + "code": "TG", + "name": "Togo" + }, + "TK": { + "code": "TK", + "name": "Tokelau" + }, + "TO": { + "code": "TO", + "name": "Tonga" + }, + "TT": { + "code": "TT", + "name": "Trinidad And Tobago" + }, + "TN": { + "code": "TN", + "name": "Tunisia" + }, + "TR": { + "code": "TR", + "name": "Turkey" + }, + "TM": { + "code": "TM", + "name": "Turkmenistan" + }, + "TC": { + "code": "TC", + "name": "Turks And Caicos Islands" + }, + "TV": { + "code": "TV", + "name": "Tuvalu" + }, + "UG": { + "code": "UG", + "name": "Uganda" + }, + "UA": { + "code": "UA", + "name": "Ukraine" + }, + "AE": { + "code": "AE", + "name": "United Arab Emirates" + }, + "GB": { + "code": "GB", + "name": "United Kingdom" + }, + "US": { + "code": "US", + "name": "United States" + }, + "UM": { + "code": "UM", + "name": "United States Outlying Islands" + }, + "UY": { + "code": "UY", + "name": "Uruguay" + }, + "UZ": { + "code": "UZ", + "name": "Uzbekistan" + }, + "VU": { + "code": "VU", + "name": "Vanuatu" + }, + "VE": { + "code": "VE", + "name": "Venezuela" + }, + "VN": { + "code": "VN", + "name": "Vietnam" + }, + "VG": { + "code": "VG", + "name": "Virgin Islands, British" + }, + "VI": { + "code": "VI", + "name": "Virgin Islands, U.S." + }, + "WF": { + "code": "WF", + "name": "Wallis And Futuna" + }, + "EH": { + "code": "EH", + "name": "Western Sahara" + }, + "YE": { + "code": "YE", + "name": "Yemen" + }, + "ZM": { + "code": "ZM", + "name": "Zambia" + }, + "ZW": { + "code": "ZW", + "name": "Zimbabwe" + } +} diff --git a/data/flags/ad.svg b/data/flags/ad.svg new file mode 100644 index 0000000..655fc8a --- /dev/null +++ b/data/flags/ad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ae.svg b/data/flags/ae.svg new file mode 100644 index 0000000..92be1eb --- /dev/null +++ b/data/flags/ae.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/af.svg b/data/flags/af.svg new file mode 100644 index 0000000..d9e49f9 --- /dev/null +++ b/data/flags/af.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ag.svg b/data/flags/ag.svg new file mode 100644 index 0000000..f60599e --- /dev/null +++ b/data/flags/ag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ai.svg b/data/flags/ai.svg new file mode 100644 index 0000000..429ce3b --- /dev/null +++ b/data/flags/ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/al.svg b/data/flags/al.svg new file mode 100644 index 0000000..f8d5550 --- /dev/null +++ b/data/flags/al.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/am.svg b/data/flags/am.svg new file mode 100644 index 0000000..1e74af0 --- /dev/null +++ b/data/flags/am.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ao.svg b/data/flags/ao.svg new file mode 100644 index 0000000..6384b44 --- /dev/null +++ b/data/flags/ao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/aq.svg b/data/flags/aq.svg new file mode 100644 index 0000000..cef722d --- /dev/null +++ b/data/flags/aq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ar.svg b/data/flags/ar.svg new file mode 100644 index 0000000..db54af5 --- /dev/null +++ b/data/flags/ar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/as.svg b/data/flags/as.svg new file mode 100644 index 0000000..4d66615 --- /dev/null +++ b/data/flags/as.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/at.svg b/data/flags/at.svg new file mode 100644 index 0000000..1229a26 --- /dev/null +++ b/data/flags/at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/au.svg b/data/flags/au.svg new file mode 100644 index 0000000..38a47de --- /dev/null +++ b/data/flags/au.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/aw.svg b/data/flags/aw.svg new file mode 100644 index 0000000..a80f4e7 --- /dev/null +++ b/data/flags/aw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ax.svg b/data/flags/ax.svg new file mode 100644 index 0000000..3af6b6e --- /dev/null +++ b/data/flags/ax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/az.svg b/data/flags/az.svg new file mode 100644 index 0000000..f88d080 --- /dev/null +++ b/data/flags/az.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ba.svg b/data/flags/ba.svg new file mode 100644 index 0000000..177c78d --- /dev/null +++ b/data/flags/ba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bb.svg b/data/flags/bb.svg new file mode 100644 index 0000000..820297a --- /dev/null +++ b/data/flags/bb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bd.svg b/data/flags/bd.svg new file mode 100644 index 0000000..8cf230b --- /dev/null +++ b/data/flags/bd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/be.svg b/data/flags/be.svg new file mode 100644 index 0000000..107b639 --- /dev/null +++ b/data/flags/be.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bf.svg b/data/flags/bf.svg new file mode 100644 index 0000000..3a649ae --- /dev/null +++ b/data/flags/bf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bg.svg b/data/flags/bg.svg new file mode 100644 index 0000000..541c9e5 --- /dev/null +++ b/data/flags/bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bh.svg b/data/flags/bh.svg new file mode 100644 index 0000000..5ec7560 --- /dev/null +++ b/data/flags/bh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bi.svg b/data/flags/bi.svg new file mode 100644 index 0000000..2b796ab --- /dev/null +++ b/data/flags/bi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bj.svg b/data/flags/bj.svg new file mode 100644 index 0000000..b8d1bd2 --- /dev/null +++ b/data/flags/bj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bl.svg b/data/flags/bl.svg new file mode 100644 index 0000000..64cc17f --- /dev/null +++ b/data/flags/bl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bm.svg b/data/flags/bm.svg new file mode 100644 index 0000000..1059eae --- /dev/null +++ b/data/flags/bm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bn.svg b/data/flags/bn.svg new file mode 100644 index 0000000..98ce7f8 --- /dev/null +++ b/data/flags/bn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bo.svg b/data/flags/bo.svg new file mode 100644 index 0000000..3bf24b0 --- /dev/null +++ b/data/flags/bo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/br.svg b/data/flags/br.svg new file mode 100644 index 0000000..203e64d --- /dev/null +++ b/data/flags/br.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bs.svg b/data/flags/bs.svg new file mode 100644 index 0000000..852306a --- /dev/null +++ b/data/flags/bs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bt.svg b/data/flags/bt.svg new file mode 100644 index 0000000..16045d0 --- /dev/null +++ b/data/flags/bt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bv.svg b/data/flags/bv.svg new file mode 100644 index 0000000..ebb8fbd --- /dev/null +++ b/data/flags/bv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bw.svg b/data/flags/bw.svg new file mode 100644 index 0000000..4c60233 --- /dev/null +++ b/data/flags/bw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/by.svg b/data/flags/by.svg new file mode 100644 index 0000000..b5afd5b --- /dev/null +++ b/data/flags/by.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/bz.svg b/data/flags/bz.svg new file mode 100644 index 0000000..0f53853 --- /dev/null +++ b/data/flags/bz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ca.svg b/data/flags/ca.svg new file mode 100644 index 0000000..154cb19 --- /dev/null +++ b/data/flags/ca.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cc.svg b/data/flags/cc.svg new file mode 100644 index 0000000..0e35450 --- /dev/null +++ b/data/flags/cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cd.svg b/data/flags/cd.svg new file mode 100644 index 0000000..5892af0 --- /dev/null +++ b/data/flags/cd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cf.svg b/data/flags/cf.svg new file mode 100644 index 0000000..e23b567 --- /dev/null +++ b/data/flags/cf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cg.svg b/data/flags/cg.svg new file mode 100644 index 0000000..c383ee8 --- /dev/null +++ b/data/flags/cg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ch.svg b/data/flags/ch.svg new file mode 100644 index 0000000..f7833a5 --- /dev/null +++ b/data/flags/ch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ci.svg b/data/flags/ci.svg new file mode 100644 index 0000000..4448319 --- /dev/null +++ b/data/flags/ci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ck.svg b/data/flags/ck.svg new file mode 100644 index 0000000..237aa87 --- /dev/null +++ b/data/flags/ck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cl.svg b/data/flags/cl.svg new file mode 100644 index 0000000..1cbed43 --- /dev/null +++ b/data/flags/cl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cm.svg b/data/flags/cm.svg new file mode 100644 index 0000000..04a5c7f --- /dev/null +++ b/data/flags/cm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cn.svg b/data/flags/cn.svg new file mode 100644 index 0000000..3227c3d --- /dev/null +++ b/data/flags/cn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/co.svg b/data/flags/co.svg new file mode 100644 index 0000000..2f3901d --- /dev/null +++ b/data/flags/co.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cr.svg b/data/flags/cr.svg new file mode 100644 index 0000000..d0b9fb1 --- /dev/null +++ b/data/flags/cr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cu.svg b/data/flags/cu.svg new file mode 100644 index 0000000..6777e9c --- /dev/null +++ b/data/flags/cu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cv.svg b/data/flags/cv.svg new file mode 100644 index 0000000..0fd3001 --- /dev/null +++ b/data/flags/cv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cx.svg b/data/flags/cx.svg new file mode 100644 index 0000000..8c79df8 --- /dev/null +++ b/data/flags/cx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cy.svg b/data/flags/cy.svg new file mode 100644 index 0000000..c81cc8f --- /dev/null +++ b/data/flags/cy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/cz.svg b/data/flags/cz.svg new file mode 100644 index 0000000..3915399 --- /dev/null +++ b/data/flags/cz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/de.svg b/data/flags/de.svg new file mode 100644 index 0000000..60e5efc --- /dev/null +++ b/data/flags/de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/dj.svg b/data/flags/dj.svg new file mode 100644 index 0000000..6b96f37 --- /dev/null +++ b/data/flags/dj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/dk.svg b/data/flags/dk.svg new file mode 100644 index 0000000..1ecf992 --- /dev/null +++ b/data/flags/dk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/dm.svg b/data/flags/dm.svg new file mode 100644 index 0000000..b11ebe5 --- /dev/null +++ b/data/flags/dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/do.svg b/data/flags/do.svg new file mode 100644 index 0000000..3ed50b6 --- /dev/null +++ b/data/flags/do.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/dz.svg b/data/flags/dz.svg new file mode 100644 index 0000000..2b23ca4 --- /dev/null +++ b/data/flags/dz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ec.svg b/data/flags/ec.svg new file mode 100644 index 0000000..61979d7 --- /dev/null +++ b/data/flags/ec.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ee.svg b/data/flags/ee.svg new file mode 100644 index 0000000..2b64555 --- /dev/null +++ b/data/flags/ee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/eg.svg b/data/flags/eg.svg new file mode 100644 index 0000000..95fdd19 --- /dev/null +++ b/data/flags/eg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/eh.svg b/data/flags/eh.svg new file mode 100644 index 0000000..de9ede4 --- /dev/null +++ b/data/flags/eh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/er.svg b/data/flags/er.svg new file mode 100644 index 0000000..8cb5783 --- /dev/null +++ b/data/flags/er.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/es.svg b/data/flags/es.svg new file mode 100644 index 0000000..8e6e4c2 --- /dev/null +++ b/data/flags/es.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/et.svg b/data/flags/et.svg new file mode 100644 index 0000000..53e79aa --- /dev/null +++ b/data/flags/et.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/fi.svg b/data/flags/fi.svg new file mode 100644 index 0000000..cc3510e --- /dev/null +++ b/data/flags/fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/fj.svg b/data/flags/fj.svg new file mode 100644 index 0000000..6eebe60 --- /dev/null +++ b/data/flags/fj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/fk.svg b/data/flags/fk.svg new file mode 100644 index 0000000..08209e8 --- /dev/null +++ b/data/flags/fk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/fm.svg b/data/flags/fm.svg new file mode 100644 index 0000000..09532fa --- /dev/null +++ b/data/flags/fm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/fo.svg b/data/flags/fo.svg new file mode 100644 index 0000000..1e962c5 --- /dev/null +++ b/data/flags/fo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/fr.svg b/data/flags/fr.svg new file mode 100644 index 0000000..6eb0e18 --- /dev/null +++ b/data/flags/fr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ga.svg b/data/flags/ga.svg new file mode 100644 index 0000000..3fd1d25 --- /dev/null +++ b/data/flags/ga.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gb.svg b/data/flags/gb.svg new file mode 100644 index 0000000..82b1fad --- /dev/null +++ b/data/flags/gb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gd.svg b/data/flags/gd.svg new file mode 100644 index 0000000..bc51894 --- /dev/null +++ b/data/flags/gd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ge.svg b/data/flags/ge.svg new file mode 100644 index 0000000..7e0459b --- /dev/null +++ b/data/flags/ge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gf.svg b/data/flags/gf.svg new file mode 100644 index 0000000..cbe2c8c --- /dev/null +++ b/data/flags/gf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gg.svg b/data/flags/gg.svg new file mode 100644 index 0000000..9e482a9 --- /dev/null +++ b/data/flags/gg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gh.svg b/data/flags/gh.svg new file mode 100644 index 0000000..fae8956 --- /dev/null +++ b/data/flags/gh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gi.svg b/data/flags/gi.svg new file mode 100644 index 0000000..400c8d0 --- /dev/null +++ b/data/flags/gi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gl.svg b/data/flags/gl.svg new file mode 100644 index 0000000..2e355e8 --- /dev/null +++ b/data/flags/gl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gm.svg b/data/flags/gm.svg new file mode 100644 index 0000000..5949185 --- /dev/null +++ b/data/flags/gm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gn.svg b/data/flags/gn.svg new file mode 100644 index 0000000..9967a7b --- /dev/null +++ b/data/flags/gn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gp.svg b/data/flags/gp.svg new file mode 100644 index 0000000..250d60b --- /dev/null +++ b/data/flags/gp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gq.svg b/data/flags/gq.svg new file mode 100644 index 0000000..459b5a1 --- /dev/null +++ b/data/flags/gq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gr.svg b/data/flags/gr.svg new file mode 100644 index 0000000..e3a582c --- /dev/null +++ b/data/flags/gr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gs.svg b/data/flags/gs.svg new file mode 100644 index 0000000..56e473d --- /dev/null +++ b/data/flags/gs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gt.svg b/data/flags/gt.svg new file mode 100644 index 0000000..b784b27 --- /dev/null +++ b/data/flags/gt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gu.svg b/data/flags/gu.svg new file mode 100644 index 0000000..ca41e91 --- /dev/null +++ b/data/flags/gu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gw.svg b/data/flags/gw.svg new file mode 100644 index 0000000..808b89c --- /dev/null +++ b/data/flags/gw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/gy.svg b/data/flags/gy.svg new file mode 100644 index 0000000..d48e314 --- /dev/null +++ b/data/flags/gy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/hk.svg b/data/flags/hk.svg new file mode 100644 index 0000000..c4287fd --- /dev/null +++ b/data/flags/hk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/hm.svg b/data/flags/hm.svg new file mode 100644 index 0000000..f6e4097 --- /dev/null +++ b/data/flags/hm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/hn.svg b/data/flags/hn.svg new file mode 100644 index 0000000..3ddeb2c --- /dev/null +++ b/data/flags/hn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/hr.svg b/data/flags/hr.svg new file mode 100644 index 0000000..ad24ab9 --- /dev/null +++ b/data/flags/hr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ht.svg b/data/flags/ht.svg new file mode 100644 index 0000000..b6ca967 --- /dev/null +++ b/data/flags/ht.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/hu.svg b/data/flags/hu.svg new file mode 100644 index 0000000..af28885 --- /dev/null +++ b/data/flags/hu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/id.svg b/data/flags/id.svg new file mode 100644 index 0000000..08c1098 --- /dev/null +++ b/data/flags/id.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ie.svg b/data/flags/ie.svg new file mode 100644 index 0000000..ff76bd8 --- /dev/null +++ b/data/flags/ie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/il.svg b/data/flags/il.svg new file mode 100644 index 0000000..de884ea --- /dev/null +++ b/data/flags/il.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/im.svg b/data/flags/im.svg new file mode 100644 index 0000000..d86c844 --- /dev/null +++ b/data/flags/im.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/in.svg b/data/flags/in.svg new file mode 100644 index 0000000..5217928 --- /dev/null +++ b/data/flags/in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/io.svg b/data/flags/io.svg new file mode 100644 index 0000000..1f15f04 --- /dev/null +++ b/data/flags/io.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/iq.svg b/data/flags/iq.svg new file mode 100644 index 0000000..2b62c58 --- /dev/null +++ b/data/flags/iq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ir.svg b/data/flags/ir.svg new file mode 100644 index 0000000..272eff0 --- /dev/null +++ b/data/flags/ir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/is.svg b/data/flags/is.svg new file mode 100644 index 0000000..c1d7fc3 --- /dev/null +++ b/data/flags/is.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/it.svg b/data/flags/it.svg new file mode 100644 index 0000000..5541378 --- /dev/null +++ b/data/flags/it.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/je.svg b/data/flags/je.svg new file mode 100644 index 0000000..90e7368 --- /dev/null +++ b/data/flags/je.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/jm.svg b/data/flags/jm.svg new file mode 100644 index 0000000..7273742 --- /dev/null +++ b/data/flags/jm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/jo.svg b/data/flags/jo.svg new file mode 100644 index 0000000..5a4eccf --- /dev/null +++ b/data/flags/jo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/jp.svg b/data/flags/jp.svg new file mode 100644 index 0000000..0f02949 --- /dev/null +++ b/data/flags/jp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ke.svg b/data/flags/ke.svg new file mode 100644 index 0000000..370a13f --- /dev/null +++ b/data/flags/ke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kg.svg b/data/flags/kg.svg new file mode 100644 index 0000000..fccd639 --- /dev/null +++ b/data/flags/kg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kh.svg b/data/flags/kh.svg new file mode 100644 index 0000000..828e54a --- /dev/null +++ b/data/flags/kh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ki.svg b/data/flags/ki.svg new file mode 100644 index 0000000..ff58c03 --- /dev/null +++ b/data/flags/ki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/km.svg b/data/flags/km.svg new file mode 100644 index 0000000..88f36bf --- /dev/null +++ b/data/flags/km.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kn.svg b/data/flags/kn.svg new file mode 100644 index 0000000..8764dd7 --- /dev/null +++ b/data/flags/kn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kp.svg b/data/flags/kp.svg new file mode 100644 index 0000000..42affa7 --- /dev/null +++ b/data/flags/kp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kr.svg b/data/flags/kr.svg new file mode 100644 index 0000000..a44c6e1 --- /dev/null +++ b/data/flags/kr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kw.svg b/data/flags/kw.svg new file mode 100644 index 0000000..b4bffef --- /dev/null +++ b/data/flags/kw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ky.svg b/data/flags/ky.svg new file mode 100644 index 0000000..ad1e433 --- /dev/null +++ b/data/flags/ky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/kz.svg b/data/flags/kz.svg new file mode 100644 index 0000000..96855b0 --- /dev/null +++ b/data/flags/kz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/la.svg b/data/flags/la.svg new file mode 100644 index 0000000..0f596b2 --- /dev/null +++ b/data/flags/la.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lb.svg b/data/flags/lb.svg new file mode 100644 index 0000000..f69dfa6 --- /dev/null +++ b/data/flags/lb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lc.svg b/data/flags/lc.svg new file mode 100644 index 0000000..887ad78 --- /dev/null +++ b/data/flags/lc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/li.svg b/data/flags/li.svg new file mode 100644 index 0000000..9cd6ae1 --- /dev/null +++ b/data/flags/li.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lk.svg b/data/flags/lk.svg new file mode 100644 index 0000000..33f6e09 --- /dev/null +++ b/data/flags/lk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lr.svg b/data/flags/lr.svg new file mode 100644 index 0000000..660ab03 --- /dev/null +++ b/data/flags/lr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ls.svg b/data/flags/ls.svg new file mode 100644 index 0000000..0dc59f9 --- /dev/null +++ b/data/flags/ls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lt.svg b/data/flags/lt.svg new file mode 100644 index 0000000..90a3ec1 --- /dev/null +++ b/data/flags/lt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lu.svg b/data/flags/lu.svg new file mode 100644 index 0000000..b754681 --- /dev/null +++ b/data/flags/lu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/lv.svg b/data/flags/lv.svg new file mode 100644 index 0000000..0037f27 --- /dev/null +++ b/data/flags/lv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ly.svg b/data/flags/ly.svg new file mode 100644 index 0000000..8c9ee58 --- /dev/null +++ b/data/flags/ly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ma.svg b/data/flags/ma.svg new file mode 100644 index 0000000..d6b54a3 --- /dev/null +++ b/data/flags/ma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mc.svg b/data/flags/mc.svg new file mode 100644 index 0000000..395adc5 --- /dev/null +++ b/data/flags/mc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/md.svg b/data/flags/md.svg new file mode 100644 index 0000000..6fc8296 --- /dev/null +++ b/data/flags/md.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/me.svg b/data/flags/me.svg new file mode 100644 index 0000000..8b3f1ab --- /dev/null +++ b/data/flags/me.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mf.svg b/data/flags/mf.svg new file mode 100644 index 0000000..6eb0e18 --- /dev/null +++ b/data/flags/mf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mg.svg b/data/flags/mg.svg new file mode 100644 index 0000000..d83543f --- /dev/null +++ b/data/flags/mg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mh.svg b/data/flags/mh.svg new file mode 100644 index 0000000..4ca4b66 --- /dev/null +++ b/data/flags/mh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mk.svg b/data/flags/mk.svg new file mode 100644 index 0000000..e10ed70 --- /dev/null +++ b/data/flags/mk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ml.svg b/data/flags/ml.svg new file mode 100644 index 0000000..df345c2 --- /dev/null +++ b/data/flags/ml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mm.svg b/data/flags/mm.svg new file mode 100644 index 0000000..4509bb3 --- /dev/null +++ b/data/flags/mm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mn.svg b/data/flags/mn.svg new file mode 100644 index 0000000..f1805f8 --- /dev/null +++ b/data/flags/mn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mo.svg b/data/flags/mo.svg new file mode 100644 index 0000000..739c35b --- /dev/null +++ b/data/flags/mo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mp.svg b/data/flags/mp.svg new file mode 100644 index 0000000..645fab7 --- /dev/null +++ b/data/flags/mp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mq.svg b/data/flags/mq.svg new file mode 100644 index 0000000..0e5c3ce --- /dev/null +++ b/data/flags/mq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mr.svg b/data/flags/mr.svg new file mode 100644 index 0000000..8c37859 --- /dev/null +++ b/data/flags/mr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ms.svg b/data/flags/ms.svg new file mode 100644 index 0000000..0c199ca --- /dev/null +++ b/data/flags/ms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mt.svg b/data/flags/mt.svg new file mode 100644 index 0000000..a880f1f --- /dev/null +++ b/data/flags/mt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mu.svg b/data/flags/mu.svg new file mode 100644 index 0000000..7b1af9c --- /dev/null +++ b/data/flags/mu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mv.svg b/data/flags/mv.svg new file mode 100644 index 0000000..82f77be --- /dev/null +++ b/data/flags/mv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mw.svg b/data/flags/mw.svg new file mode 100644 index 0000000..2c80884 --- /dev/null +++ b/data/flags/mw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mx.svg b/data/flags/mx.svg new file mode 100644 index 0000000..b82436b --- /dev/null +++ b/data/flags/mx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/my.svg b/data/flags/my.svg new file mode 100644 index 0000000..bb160fd --- /dev/null +++ b/data/flags/my.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/mz.svg b/data/flags/mz.svg new file mode 100644 index 0000000..29e8856 --- /dev/null +++ b/data/flags/mz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/na.svg b/data/flags/na.svg new file mode 100644 index 0000000..472a82e --- /dev/null +++ b/data/flags/na.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/nc.svg b/data/flags/nc.svg new file mode 100644 index 0000000..35a2125 --- /dev/null +++ b/data/flags/nc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ne.svg b/data/flags/ne.svg new file mode 100644 index 0000000..3da7314 --- /dev/null +++ b/data/flags/ne.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/nf.svg b/data/flags/nf.svg new file mode 100644 index 0000000..959a85b --- /dev/null +++ b/data/flags/nf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ng.svg b/data/flags/ng.svg new file mode 100644 index 0000000..ca4a19f --- /dev/null +++ b/data/flags/ng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ni.svg b/data/flags/ni.svg new file mode 100644 index 0000000..f1d41a1 --- /dev/null +++ b/data/flags/ni.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/nl.svg b/data/flags/nl.svg new file mode 100644 index 0000000..6598c0b --- /dev/null +++ b/data/flags/nl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/no.svg b/data/flags/no.svg new file mode 100644 index 0000000..ebb8fbd --- /dev/null +++ b/data/flags/no.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/np.svg b/data/flags/np.svg new file mode 100644 index 0000000..ae7b651 --- /dev/null +++ b/data/flags/np.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/nr.svg b/data/flags/nr.svg new file mode 100644 index 0000000..22e5bc4 --- /dev/null +++ b/data/flags/nr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/nu.svg b/data/flags/nu.svg new file mode 100644 index 0000000..cd34cea --- /dev/null +++ b/data/flags/nu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/nz.svg b/data/flags/nz.svg new file mode 100644 index 0000000..4f6af3c --- /dev/null +++ b/data/flags/nz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/om.svg b/data/flags/om.svg new file mode 100644 index 0000000..9b80e4b --- /dev/null +++ b/data/flags/om.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pa.svg b/data/flags/pa.svg new file mode 100644 index 0000000..c625603 --- /dev/null +++ b/data/flags/pa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pe.svg b/data/flags/pe.svg new file mode 100644 index 0000000..93618a3 --- /dev/null +++ b/data/flags/pe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pf.svg b/data/flags/pf.svg new file mode 100644 index 0000000..eb69b3c --- /dev/null +++ b/data/flags/pf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pg.svg b/data/flags/pg.svg new file mode 100644 index 0000000..aa5a7b7 --- /dev/null +++ b/data/flags/pg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ph.svg b/data/flags/ph.svg new file mode 100644 index 0000000..be4ac14 --- /dev/null +++ b/data/flags/ph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pk.svg b/data/flags/pk.svg new file mode 100644 index 0000000..91cd2f1 --- /dev/null +++ b/data/flags/pk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pl.svg b/data/flags/pl.svg new file mode 100644 index 0000000..4a39bfa --- /dev/null +++ b/data/flags/pl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pm.svg b/data/flags/pm.svg new file mode 100644 index 0000000..1780f1e --- /dev/null +++ b/data/flags/pm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pn.svg b/data/flags/pn.svg new file mode 100644 index 0000000..35f2a3d --- /dev/null +++ b/data/flags/pn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pr.svg b/data/flags/pr.svg new file mode 100644 index 0000000..5ed5f8a --- /dev/null +++ b/data/flags/pr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ps.svg b/data/flags/ps.svg new file mode 100644 index 0000000..786c8ca --- /dev/null +++ b/data/flags/ps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pt.svg b/data/flags/pt.svg new file mode 100644 index 0000000..0c610be --- /dev/null +++ b/data/flags/pt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/pw.svg b/data/flags/pw.svg new file mode 100644 index 0000000..7ab6c75 --- /dev/null +++ b/data/flags/pw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/py.svg b/data/flags/py.svg new file mode 100644 index 0000000..63f38a7 --- /dev/null +++ b/data/flags/py.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/qa.svg b/data/flags/qa.svg new file mode 100644 index 0000000..65b2184 --- /dev/null +++ b/data/flags/qa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/re.svg b/data/flags/re.svg new file mode 100644 index 0000000..7df5606 --- /dev/null +++ b/data/flags/re.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ro.svg b/data/flags/ro.svg new file mode 100644 index 0000000..8dc2848 --- /dev/null +++ b/data/flags/ro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/rs.svg b/data/flags/rs.svg new file mode 100644 index 0000000..40c9d6d --- /dev/null +++ b/data/flags/rs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ru.svg b/data/flags/ru.svg new file mode 100644 index 0000000..9c0cc49 --- /dev/null +++ b/data/flags/ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/rw.svg b/data/flags/rw.svg new file mode 100644 index 0000000..d237941 --- /dev/null +++ b/data/flags/rw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sa.svg b/data/flags/sa.svg new file mode 100644 index 0000000..5eee1b5 --- /dev/null +++ b/data/flags/sa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sb.svg b/data/flags/sb.svg new file mode 100644 index 0000000..e4bb3ff --- /dev/null +++ b/data/flags/sb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sc.svg b/data/flags/sc.svg new file mode 100644 index 0000000..ea40823 --- /dev/null +++ b/data/flags/sc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sd.svg b/data/flags/sd.svg new file mode 100644 index 0000000..477877f --- /dev/null +++ b/data/flags/sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/se.svg b/data/flags/se.svg new file mode 100644 index 0000000..b32a8f9 --- /dev/null +++ b/data/flags/se.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sg.svg b/data/flags/sg.svg new file mode 100644 index 0000000..4d4a817 --- /dev/null +++ b/data/flags/sg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sh.svg b/data/flags/sh.svg new file mode 100644 index 0000000..d4431b7 --- /dev/null +++ b/data/flags/sh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/si.svg b/data/flags/si.svg new file mode 100644 index 0000000..bb23bb3 --- /dev/null +++ b/data/flags/si.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sj.svg b/data/flags/sj.svg new file mode 100644 index 0000000..ebb8fbd --- /dev/null +++ b/data/flags/sj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sk.svg b/data/flags/sk.svg new file mode 100644 index 0000000..2abe6f4 --- /dev/null +++ b/data/flags/sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sl.svg b/data/flags/sl.svg new file mode 100644 index 0000000..ee46023 --- /dev/null +++ b/data/flags/sl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sm.svg b/data/flags/sm.svg new file mode 100644 index 0000000..98fdaf4 --- /dev/null +++ b/data/flags/sm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sn.svg b/data/flags/sn.svg new file mode 100644 index 0000000..3860b33 --- /dev/null +++ b/data/flags/sn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/so.svg b/data/flags/so.svg new file mode 100644 index 0000000..44ce2fd --- /dev/null +++ b/data/flags/so.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sr.svg b/data/flags/sr.svg new file mode 100644 index 0000000..117d76d --- /dev/null +++ b/data/flags/sr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/st.svg b/data/flags/st.svg new file mode 100644 index 0000000..555952c --- /dev/null +++ b/data/flags/st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sv.svg b/data/flags/sv.svg new file mode 100644 index 0000000..c81ee73 --- /dev/null +++ b/data/flags/sv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sy.svg b/data/flags/sy.svg new file mode 100644 index 0000000..ca5d90e --- /dev/null +++ b/data/flags/sy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/sz.svg b/data/flags/sz.svg new file mode 100644 index 0000000..25117b2 --- /dev/null +++ b/data/flags/sz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tc.svg b/data/flags/tc.svg new file mode 100644 index 0000000..dea5664 --- /dev/null +++ b/data/flags/tc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/td.svg b/data/flags/td.svg new file mode 100644 index 0000000..f94d6e5 --- /dev/null +++ b/data/flags/td.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tf.svg b/data/flags/tf.svg new file mode 100644 index 0000000..ea39af9 --- /dev/null +++ b/data/flags/tf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tg.svg b/data/flags/tg.svg new file mode 100644 index 0000000..27582f1 --- /dev/null +++ b/data/flags/tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/th.svg b/data/flags/th.svg new file mode 100644 index 0000000..3f22b44 --- /dev/null +++ b/data/flags/th.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tj.svg b/data/flags/tj.svg new file mode 100644 index 0000000..ec4e481 --- /dev/null +++ b/data/flags/tj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tk.svg b/data/flags/tk.svg new file mode 100644 index 0000000..16aa66a --- /dev/null +++ b/data/flags/tk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tl.svg b/data/flags/tl.svg new file mode 100644 index 0000000..1d6bb56 --- /dev/null +++ b/data/flags/tl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tm.svg b/data/flags/tm.svg new file mode 100644 index 0000000..f49a647 --- /dev/null +++ b/data/flags/tm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tn.svg b/data/flags/tn.svg new file mode 100644 index 0000000..482b55a --- /dev/null +++ b/data/flags/tn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/to.svg b/data/flags/to.svg new file mode 100644 index 0000000..62cfb73 --- /dev/null +++ b/data/flags/to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tr.svg b/data/flags/tr.svg new file mode 100644 index 0000000..5b046e6 --- /dev/null +++ b/data/flags/tr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tt.svg b/data/flags/tt.svg new file mode 100644 index 0000000..7479d1b --- /dev/null +++ b/data/flags/tt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tv.svg b/data/flags/tv.svg new file mode 100644 index 0000000..b3f9308 --- /dev/null +++ b/data/flags/tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tw.svg b/data/flags/tw.svg new file mode 100644 index 0000000..500d0f3 --- /dev/null +++ b/data/flags/tw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/tz.svg b/data/flags/tz.svg new file mode 100644 index 0000000..5cbeb7a --- /dev/null +++ b/data/flags/tz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ua.svg b/data/flags/ua.svg new file mode 100644 index 0000000..4d09b7c --- /dev/null +++ b/data/flags/ua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ug.svg b/data/flags/ug.svg new file mode 100644 index 0000000..463d425 --- /dev/null +++ b/data/flags/ug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/um.svg b/data/flags/um.svg new file mode 100644 index 0000000..9735dfa --- /dev/null +++ b/data/flags/um.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/us.svg b/data/flags/us.svg new file mode 100644 index 0000000..9735dfa --- /dev/null +++ b/data/flags/us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/uy.svg b/data/flags/uy.svg new file mode 100644 index 0000000..9f5b3d6 --- /dev/null +++ b/data/flags/uy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/uz.svg b/data/flags/uz.svg new file mode 100644 index 0000000..379ab12 --- /dev/null +++ b/data/flags/uz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/va.svg b/data/flags/va.svg new file mode 100644 index 0000000..9101c9f --- /dev/null +++ b/data/flags/va.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/vc.svg b/data/flags/vc.svg new file mode 100644 index 0000000..f3892d7 --- /dev/null +++ b/data/flags/vc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ve.svg b/data/flags/ve.svg new file mode 100644 index 0000000..912a069 --- /dev/null +++ b/data/flags/ve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/vg.svg b/data/flags/vg.svg new file mode 100644 index 0000000..6d51bf8 --- /dev/null +++ b/data/flags/vg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/vi.svg b/data/flags/vi.svg new file mode 100644 index 0000000..606b364 --- /dev/null +++ b/data/flags/vi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/vn.svg b/data/flags/vn.svg new file mode 100644 index 0000000..691cd96 --- /dev/null +++ b/data/flags/vn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/vu.svg b/data/flags/vu.svg new file mode 100644 index 0000000..5e1cb1a --- /dev/null +++ b/data/flags/vu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/wf.svg b/data/flags/wf.svg new file mode 100644 index 0000000..5b7479d --- /dev/null +++ b/data/flags/wf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ws.svg b/data/flags/ws.svg new file mode 100644 index 0000000..d7d19c2 --- /dev/null +++ b/data/flags/ws.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/ye.svg b/data/flags/ye.svg new file mode 100644 index 0000000..c32376c --- /dev/null +++ b/data/flags/ye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/yt.svg b/data/flags/yt.svg new file mode 100644 index 0000000..67c9622 --- /dev/null +++ b/data/flags/yt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/za.svg b/data/flags/za.svg new file mode 100644 index 0000000..a00b44a --- /dev/null +++ b/data/flags/za.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/zm.svg b/data/flags/zm.svg new file mode 100644 index 0000000..65cc2dd --- /dev/null +++ b/data/flags/zm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/flags/zw.svg b/data/flags/zw.svg new file mode 100644 index 0000000..92f8e25 --- /dev/null +++ b/data/flags/zw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/middleware/visit_event.rs b/src/middleware/visit_event.rs index a19e07a..cbd5c00 100644 --- a/src/middleware/visit_event.rs +++ b/src/middleware/visit_event.rs @@ -10,7 +10,8 @@ pub async fn visit_event( let res = next.run(req).await; - if res.status().is_success() { + let has_flag = !uri.to_lowercase().starts_with("/api/v1/flags/"); + if res.status().is_success() && has_flag { _state.stats_cache.increment(uri).await; } diff --git a/src/services/country/country_list.rs b/src/services/country/country_list.rs new file mode 100644 index 0000000..272b16f --- /dev/null +++ b/src/services/country/country_list.rs @@ -0,0 +1,60 @@ +use crate::core::response::ApiResponse; +use crate::utility::url; +use axum::Json; +use once_cell::sync::Lazy; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; + +#[derive(Debug, Deserialize, Serialize)] +struct Country { + code: String, + name: String, +} + +#[derive(Debug, Deserialize, Serialize)] +struct CountryFull { + code: String, + name: String, + currency: Option, + language: Vec, + flag: String, + flag_svg: String, +} + +// Embedded JSON as static &str +static COUNTRIES_JSON: &str = include_str!(concat!( + env!("CARGO_MANIFEST_DIR"), + "/data/countries_min.json" +)); + +static COUNTRIES_FULL_JSON: &str = + include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/data/countries.json")); + +// Parse once and cache as HashMap +static COUNTRIES: Lazy> = Lazy::new(|| { + serde_json::from_str(COUNTRIES_JSON).expect("Invalid countries_enriched.json format") +}); + +static COUNTRIES_FULL: Lazy> = Lazy::new(|| { + let mut map: HashMap = + serde_json::from_str(COUNTRIES_FULL_JSON).expect("Invalid countries_enriched.json format"); + + for c in map.values_mut() { + // Fix the relative flag name → full URL + if !c.flag_svg.starts_with("http") { + c.flag_svg = format!("{}{}", url("/api/v1/flags/"), c.flag_svg); + } + } + + map +}); + +pub async fn response_country_list() -> Json> { + let payload = serde_json::to_value(&*COUNTRIES).unwrap_or(serde_json::Value::Null); + Json(ApiResponse::success(payload)) +} + +pub async fn response_country_full_list() -> Json> { + let payload = serde_json::to_value(&*COUNTRIES_FULL).unwrap_or(serde_json::Value::Null); + Json(ApiResponse::success(payload)) +} diff --git a/src/services/country/flag.rs b/src/services/country/flag.rs new file mode 100644 index 0000000..550594d --- /dev/null +++ b/src/services/country/flag.rs @@ -0,0 +1,24 @@ +use axum::{ + extract::Path, + http::{StatusCode, header}, + response::{IntoResponse, Response}, +}; +use rust_embed::RustEmbed; + +#[derive(RustEmbed)] +#[folder = "data/flags/"] +struct Flags; + +pub(crate) async fn get_flag(Path(code): Path) -> Response { + let file: String = code.to_lowercase(); + + if let Some(f) = Flags::get(&file) { + let headers = [ + (header::CONTENT_TYPE, "image/svg+xml"), + (header::CACHE_CONTROL, "public, max-age=31536000, immutable"), + ]; + (StatusCode::OK, headers, f.data.into_owned()).into_response() + } else { + StatusCode::NOT_FOUND.into_response() + } +} diff --git a/src/services/country/mod.rs b/src/services/country/mod.rs new file mode 100644 index 0000000..b8fab99 --- /dev/null +++ b/src/services/country/mod.rs @@ -0,0 +1,12 @@ +mod country_list; +pub(crate) mod flag; + +use crate::services::country::country_list::{response_country_full_list, response_country_list}; +use axum::routing::{MethodRouter, get}; + +pub fn routers_list() -> Vec<(&'static str, MethodRouter)> { + Vec::from([ + ("/", get(response_country_list)), + ("/full", get(response_country_full_list)), + ]) +} diff --git a/src/services/health/response.rs b/src/services/health/response.rs index dc8fffe..7df78f9 100644 --- a/src/services/health/response.rs +++ b/src/services/health/response.rs @@ -42,11 +42,13 @@ pub async fn health_check() -> api_response::Json async fn collect_endpoint_stats(state: &AppState) -> EndpointStats { let total = state.stats_cache.total_hits().await; - let (health, time, tehran, ip) = tokio::join!( + let (health, time, tehran, ip, country, country_full) = tokio::join!( state.stats_cache.get("/health"), state.stats_cache.get("/api/v1/time"), state.stats_cache.get("/api/v1/time/asia/tehran"), state.stats_cache.get("/api/v1/ip"), + state.stats_cache.get("/api/v1/country"), + state.stats_cache.get("/api/v1/country/full"), ); EndpointStats { @@ -55,6 +57,8 @@ async fn collect_endpoint_stats(state: &AppState) -> EndpointStats { time, tehran, ip, + country, + country_full, } } @@ -76,7 +80,9 @@ fn build_api_info(stats: EndpointStats) -> serde_json::Value { "/health": stats.health, "/time": stats.time, "/time/asia/tehran": stats.tehran, - "/ip": stats.ip + "/ip": stats.ip, + "/country": stats.country, + "/country/full": stats.country_full } }, "privacy": "We log minimal request metadata for abuse prevention and aggregate analytics.", @@ -90,21 +96,31 @@ fn build_api_info(stats: EndpointStats) -> serde_json::Value { fn build_endpoints_list() -> serde_json::Value { json!([ - { - "path": "/time", - "desc": "UTC", - "example": url("/api/v1/time") - }, - { - "path": "/time/{tz}", - "desc": "Asia/Tehran", - "example": url("/api/v1/time/asia/tehran") - }, - { - "path": "/ip", - "desc": "Your public IP", - "example": url("/api/v1/ip") - } + { + "path": "/time", + "desc": "Get the current UTC time ⏰", + "example": url("/api/v1/time") + }, + { + "path": "/time/{tz}", + "desc": "Localized time for any timezone 🌐", + "example": url("/api/v1/time/asia/tehran") + }, + { + "path": "/ip", + "desc": "Discover your public IP address 🌍", + "example": url("/api/v1/ip") + }, + { + "path": "/country", + "desc": "Explore countries", + "example": url("/api/v1/country") + }, + { + "path": "/country/full", + "desc": "Explore countries, currencies, languages & flags 🗺️", + "example": url("/api/v1/country/full") + } ]) } @@ -114,4 +130,6 @@ struct EndpointStats { time: Option, tehran: Option, ip: Option, + country: Option, + country_full: Option, } diff --git a/src/services/mod.rs b/src/services/mod.rs index 7ab2589..3073f94 100644 --- a/src/services/mod.rs +++ b/src/services/mod.rs @@ -1,4 +1,5 @@ pub mod cache; +mod country; mod health; mod ip; pub mod jobs; diff --git a/src/services/routes.rs b/src/services/routes.rs index 29d70a6..4ae83ff 100644 --- a/src/services/routes.rs +++ b/src/services/routes.rs @@ -1,6 +1,6 @@ use crate::middleware::visit_event; -use crate::services::{AppState, health, ip, time}; -use axum::routing::MethodRouter; +use crate::services::{AppState, country, health, ip, time}; +use axum::routing::{MethodRouter, get}; use axum::{Router, middleware}; pub struct Routes; @@ -8,7 +8,9 @@ impl Routes { pub fn routes(app_state: AppState) -> Router { let api = Router::new() .nest("/time", Self::generate(time::routers_list())) - .nest("/ip", Self::generate(ip::routers_list())); + .nest("/ip", Self::generate(ip::routers_list())) + .nest("/country", Self::generate(country::routers_list())) + .route("/flags/{code}", get(country::flag::get_flag)); Router::new() .merge(health::routers(app_state.clone()))