countries = [
    "Albania",
    "Estonia",
    "Algeria",
    "Ethiopia",
    "Andorra",
    "Angola",
    "Finland",
    "Armenia",
    "France",
    "Ascension Island",
    "Gabon",
    "Austria",
    "Gambia",
    "Azerbaijan",
    "Georgia",
    "Germany",
    "Bahrein",
    "Ghana",
    "Belarus",
    "Gibraltar",
    "Belgium",
    "Greece",
    "Benin",
    "Guinea",
    "Bosnia Herzegovina",
    "Guinea-Bissau",
    "Botswana",
    "Hungary",
    "Bulgaria",
    "Iceland",
    "Burkina Faso",
    "Iraq",
    "Burundi",
    "Ireland",
    "Cabinda",
    "Israel",
    "Cameroon",
    "Italy",
    "Jordan",
    "Cape Verde",
    "Kazakhstan",
    "Central African Republic",
    "Kenya",
    "Chad",
    "Kosovo",
    "Comoros",
    "Kuwait",
    "DR Congo",
    "Kyrgyzstan",
    "Republic of Congo",
    "Latvia",
    "Cote d'Ivoire",
    "Lebanon",
    "Croatia",
    "Lesotho",
    "Cyprus",
    "Liberia",
    "Czechia",
    "Libya",
    "Denmark",
    "Liechtenstein",
    "Djiboutia",
    "Lithuania",
    "Egypt",
    "Luxembourg",
    "Equatorial Guinea",
    "Macedonia",
    "Eritrea",
    "Madagascar",
    "Seychelles",
    "Malawi",
    "Sierra Leone",
    "Mali",
    "Slovakia",
    "Malta",
    "Slovenia",
    "Mauritania",
    "Somalia",
    "Mauritius",
    "South Africa",
    "Moldova",
    "South Sudan",
    "Monaco",
    "Spain",
    "Mongolia",
    "Sudan",
    "Montenegro",
    "Swaziland",
    "Morocco",
    "Sweden",
    "Mozambique",
    "Switzerland",
    "Namibia",
    "Syria",
    "Netherlands",
    "Tajikistan",
    "Niger",
    "Tanzania",
    "Nigeria",
    "Togo",
    "Norway",
    "Tunisia",
    "Oman",
    "Turkey",
    "Palestine",
    "Turkmenistan",
    "Poland",
    "Uganda",
    "Portugal",
    "Ukraine",
    "Qatar",
    "United Arab Emirates",
    "Romania",
    "United Kingdom",
    "Russia",
    "Uzbekistan",
    "Rwanda",
    "Vatican",
    "San Marino",
    "Western Sahara",
    "Sao Tome and Principe",
    "Yemen",
    "Saudi Arabia",
    "Zambia",
    "Senegal",
    "Zimbabwe",
    "Serbia",
    "Anguilla",
    "Guyana",
    "Antigua and Barbuda",
    "Haiti",
    "Argentina",
    "Honduras",
    "Aruba",
    "Jamaica",
    "Bahamas",
    "Martinique",
    "Barbados",
    "Mexico",
    "Belize",
    "Montserrat",
    "Brazil/Bermuda",
    "Brazil/AN",
    "Bolivia",
    "Nicaragua",
    "Brazil",
    "Panama",
    "Canada",
    "Paraguay",
    "Cayman Islands",
    "Peru",
    "Chile",
    "USA/VI/PR",
    "Colombia",
    "St. Kitts",
    "Costa Rica",
    "St. Lucia",
    "Cuba",
    "St. Pierre and Miquelon",
    "Dominica",
    "St. Vincent",
    "Dominican Republic",
    "Suriname",
    "El Salvador",
    "Trinidad and Tobago",
    "Turks and Caicos islands",
    "Falkland Islands",
    "Greenland",
    "Uruguay",
    "Grenada",
    "Venezuela",
    "Guadeloupe",
    "Virgin Islands",
    "Guatemala",
    "Afghanistan",
    "South Korea",
    "Laos",
    "Australia Capital Territory",
    "Macao",
    "Australia New South Wales",
    "Malaysia",
    "Australia Victoria",
    "Maldives",
    "Australia Queensland",
    "Marshall Islands",
    "Australia South Australia",
    "Micronesia",
    "Australia Western Australia",
    "Myanmar",
    "Australia Tasmania",
    "Nauru",
    "Australia Northern Territory",
    "Nepal",
    "Bangladesh",
    "New Zealand",
    "Bhutan",
    "Pakistan",
    "Brunei Darussalam",
    "Papua New Guinea",
    "Cambodia",
    "Philippines",
    "China",
    "Samoa",
    "Singapore",
    "Solomon Islands",
    "Fiji",
    "Sri Lanka",
    "Hong Kong",
    "Taiwan",
    "India",
    "Thailand",
    "Indonesia",
    "Tonga",
    "Iran",
    "Vanuatu",
    "Japan",
    "Vietnam",
    "Kiribati",
    "North Korea",
    "Brazil/Equator"
]

iso = [
    "AL",
    "EE",
    "DZ",
    "ET",
    "AD",
    "AO",
    "FI",
    "AM",
    "FR",
    "SH",
    "GA",
    "AT",
    "GM",
    "AZ",
    "GE",
    "DE",
    "BH",
    "GH",
    "BY",
    "GI",
    "BE",
    "GR",
    "BJ",
    "GN",
    "BA",
    "GW",
    "BW",
    "HU",
    "BG",
    "IS",
    "BF",
    "IQ",
    "BI",
    "IE",
    "--",
    "IL",
    "CM",
    "IT",
    "JO",
    "CV",
    "KZ",
    "CF",
    "KE",
    "TD",
    "XK",
    "KM",
    "KW",
    "CD",
    "KG",
    "CG",
    "LV",
    "CI",
    "LB",
    "HR",
    "LS",
    "CY",
    "LR",
    "CZ",
    "LY",
    "DK",
    "LI",
    "DJ",
    "LT",
    "EG",
    "LU",
    "GQ",
    "MK",
    "ER",
    "MG",
    "SC",
    "MW",
    "SL",
    "ML",
    "SK",
    "MT",
    "SI",
    "MR",
    "SO",
    "MU",
    "ZA",
    "MD",
    "SS",
    "MC",
    "ES",
    "MN",
    "SD",
    "ME",
    "SZ",
    "MA",
    "SE",
    "MZ",
    "CH",
    "NA",
    "SY",
    "NL",
    "TJ",
    "NE",
    "TZ",
    "NG",
    "TG",
    "NO",
    "TN",
    "OM",
    "TR",
    "PS",
    "TM",
    "PL",
    "UG",
    "PT",
    "UA",
    "QA",
    "AE",
    "RO",
    "GB",
    "RU",
    "UZ",
    "RW",
    "VA",
    "SM",
    "EH",
    "ST",
    "YE",
    "SA",
    "ZM",
    "SN",
    "ZW",
    "RS",
    "AI",
    "GY",
    "AG",
    "HT",
    "AR",
    "HN",
    "AW",
    "JM",
    "BS",
    "MQ",
    "BB",
    "MX",
    "BZ",
    "MS",
    "--",
    "--",
    "BO",
    "NI",
    "BR",
    "PA",
    "CA",
    "PY",
    "KY",
    "PE",
    "CL",
    "--",
    "CO",
    "KN",
    "CR",
    "LC",
    "CU",
    "PM",
    "DM",
    "VC",
    "DO",
    "SR",
    "SN",
    "TT",
    "TB",
    "FK",
    "GL",
    "UY",
    "GD",
    "VE",
    "GP",
    "VG",
    "GT",
    "AF",
    "KR",
    "LA",
    "AU",
    "MO",
    "AU",
    "MY",
    "AU",
    "MV",
    "AU",
    "MH",
    "AU",
    "FM",
    "AU",
    "MM",
    "AU",
    "NR",
    "AU",
    "NP",
    "BD",
    "NZ",
    "BT",
    "PK",
    "BN",
    "PG",
    "KH",
    "PH",
    "CN",
    "WS",
    "SG",
    "SB",
    "FJ",
    "LK",
    "HK",
    "TW",
    "IN",
    "TH",
    "ID",
    "TO",
    "IR",
    "VU",
    "JP",
    "VN",
    "KI",
    "KP",
    "--"
]

rdsEccA0A6Lut = [
  # A0
  [
    "USA/VI/PR", "USA/VI/PR", "USA/VI/PR", "USA/VI/PR", "USA/VI/PR",
    "USA/VI/PR", "USA/VI/PR", "USA/VI/PR", "USA/VI/PR", "USA/VI/PR",
    "USA/VI/PR", None, "USA/VI/PR", "USA/VI/PR", None
  ],
  # A1
  [
    None, None, None, None, None,
    None, None, None, None, None,
    "Canada", "Canada", "Canada", "Canada", "Greenland"
  ],
  # A2
  [
    "Anguilla", "Antigua and Barbuda", "Brazil/Equator", "Falkland Islands", "Barbados",
    "Belize", "Cayman Islands", "Costa Rica", "Cuba", "Argentina",
    "Brazil", "Brazil/Bermuda", "Brazil/AN", "Guadeloupe", "Bahamas"
  ],
  # A3
  [
    "Bolivia", "Colombia", "Jamaica", "Martinique", None,
    "Paraguay", "Nicaragua", None, "Panama", "Dominica",
    "Dominican Republic", "Chile", "Grenada", "Turks and Caicos islands", "Guyana"
  ],
  # A4
  [
    "Guatemala", "Honduras", "Aruba", None, "Montserrat",
    "Trinidad and Tobago", "Peru", "Suriname", "Uruguay", "St. Kitts",
    "St. Lucia", "El Salvador", "Haiti", "Venezuela", "Virgin Islands"
  ],
  # A5
  [
    None, None, None, None, None,
    None, None, None, None, None,
    "Mexico", "St. Vincent", "Mexico", "Mexico", "Mexico"
  ],
  # A6
  [
    None, None, None, None, None,
    None, None, None, None, None,
    None, None, None, None, "St. Pierre and Miquelon"
  ]
]

rdsEccD0D4Lut = [
  # D0
  [
    "Cameroon", "Central African Republic", "Djiboutia", "Madagascar", "Mali",
    "Angola", "Equatorial Guinea", "Gabon", "Guinea", "South Africa",
    "Burkina Faso", "Republic of Congo", "Togo", "Benin", "Malawi"
  ],
  # D1
  [
    "Namibia", "Liberia", "Ghana", "Mauritania", "Sao Tome and Principe",
    "Cape Verde", "Senegal", "Gambia", "Burundi", "Ascension Island",
    "Botswana", "Comoros", "Tanzania", "Ethiopia", "Nigeria"
  ],
  # D2
  [
    "Sierra Leone", "Zimbabwe", "Mozambique", "Uganda", "Swaziland",
    "Kenya", "Somalia", "Niger", "Chad", "Guinea-Bissau",
    "DR Congo", "Cote d'Ivoire", None, "Zambia", "Eritrea"
  ],
  # D3
  [
    None, None, "Western Sahara", "Cabinda", "Rwanda",
    "Lesotho", None, "Seychelles", None, "Mauritius",
    None, "Sudan", None, None, None
  ],
  # D4
  [
    None, None, None, None, None,
    None, None, None, None, "South Sudan",
    None, None, None, None, None
  ]
]

rdsEccE0E5Lut = [
  # E0
  [
    "Germany", "Algeria", "Andorra", "Israel", "Italy",
    "Belgium", "Russia", "Palestine", "Albania", "Austria",
    "Hungary", "Malta", "Germany", None, "Egypt"
  ],
  # E1
  [
    "Greece", "Cyprus", "San Marino", "Switzerland", "Jordan",
    "Finland", "Luxembourg", "Bulgaria", "Denmark", "Gibraltar",
    "Iraq", "United Kingdom", "Libya", "Romania", "France"
  ],
  # E2
  [
    "Morocco", "Czechia", "Poland", "Vatican", "Slovakia",
    "Syria", "Tunisia", None, "Liechtenstein", "Iceland",
    "Monaco", "Lithuania", "Serbia", "Spain", "Norway"
  ],
  # E3
  [
    "Montenegro", "Ireland", "Turkey", None, "Tajikistan",
    None, None, "Netherlands", "Latvia", "Lebanon",
    "Azerbaijan", "Croatia", "Kazakhstan", "Sweden", "Belarus"
  ],
  # E4
  [
    "Moldova", "Estonia", "Macedonia", None, None,
    "Ukraine", "Kosovo", "Portugal", "Slovenia", "Armenia",
    "Uzbekistan", "Georgia", None, "Turkmenistan", "Bosnia Herzegovina"
  ],
  # E5
  [
    None, None, "Kyrgyzstan", None, None,
    None, None, None, None, None,
    None, None, None, None, None
  ]
]

rdsEccF0F4Lut = [
  # F0
  [
    "Australia Capital Territory", "Australia New South Wales", "Australia Victoria", "Australia Queensland", "Australia South Australia",
    "Australia Western Australia", "Australia Tasmania", "Australia Northern Territory", "Saudi Arabia", "Afghanistan",
    "Myanmar", "China", "North Korea", "Bahrein", "Malaysia"
  ],
  # F1
  [
    "Kiribati", "Bhutan", "Bangladesh", "Pakistan", "Fiji",
    "Oman", "Nauru", "Iran", "New Zealand", "Solomon Islands",
    "Brunei Darussalam", "Sri Lanka", "Taiwan", "South Korea", "Hong Kong"
  ],
  # F2
  [
    "Kuwait", "Qatar", "Cambodia", "Samoa", "India",
    "Macao", "Vietnam", "Philippines", "Japan", "Singapore",
    "Maldives", "Indonesia", "United Arab Emirates", "Nepal", "Vanuatu"
  ],
  # F3
  [
    "Laos", "Thailand", "Tonga", None, None,
    None, None, "China", "Papua New Guinea", None,
    "Yemen", None, None, "Micronesia", "Mongolia"
  ],
  # F4
  [
    None, None, None, None, None,
    None, None, None, "China", None,
    "Marshall Islands", None, None, None, None
  ]
]

def rds_ecc_lookup(pi, ecc):
    PI_UNKNOWN = -1
    pi_country = (pi >> 12) & 0xF
    if pi == PI_UNKNOWN or pi_country == 0:
        return ""
    
    pi_id = pi_country - 1
    ecc_ranges = [
        {"min": 0xA0, "max": 0xA6, "lut": rdsEccA0A6Lut},
        {"min": 0xD0, "max": 0xD4, "lut": rdsEccD0D4Lut},
        {"min": 0xE0, "max": 0xE5, "lut": rdsEccE0E5Lut},
        {"min": 0xF0, "max": 0xF4, "lut": rdsEccF0F4Lut},
    ]
    
    for range_ in ecc_ranges:
        if range_["min"] <= ecc <= range_["max"]:
            ecc_id = ecc - range_["min"]
            return range_["lut"][ecc_id][pi_id]
    
    return ""