Module:Country alias

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Documentation icon Τεκμηρίωση module[δημιουργία]
-- This module returns the country name or the flag name for a country,
-- based on the three-letter IOC/CGA/FINA alias.

--[[
The following country code is used for multiple countries:
  ANG (workaround: added ANG_CGF)

The following names have different names/flags based on sport
	Great Britain (and N.I.)		 GBR, GBsoR_WCA (latter added to add text in parens)
	Hong Kong						 HKG, HKG_CGF (latter added to keep colonial flag)
	Individual Olympic Athletes      IOA, IOA_2000 (IOA changed to Independent Olympic Athletes in 2012)
    
The following names occur twice due to CGF/IOC/FINA/IAAF differences
    Anguilla                         AIA, ANG_CGF
    Antigua and Barbuda              ANT, ATG
    Bahrain                          BRN, BHR, BHN
    Curaçao                          CUR, CUW
    Faroe Islands                    FAR, FRO
    Guernsey						 GGY, GUE
    Iran                             IRI, IRN
    Ireland                          IRE, IRL - IRE is *only* for CGF apps
    Jersey							 JER, JEY
    Lebanon                          LBN, LIB
    Montserrat                       MNT, MSR
    Nicaragua                        NCA, NIC
    Oman                             OMA, OMN
    Refugee Olympic Team             ROA, ROT
    Romania                          ROM, ROU
    Saint Helena                     SHE, SHN
    Saint Vincent and the Grenadines SVG, VIN
    Sarawak                          SAR, SWK
    Singapore                        SGP, SIN
    South Africa                     RSA, SAF
    Tonga                            TGA, TON
    Trinidad and Tobago              TRI, TTO
    Turks and Caicos Islands         TCI, TKS, TCA

Oddity that needs to be revisited
	French Polynesia                 PYF, TAH - TAH has been converted to Tahiti per SILENCE
]]
local function stripToNil(text)
	-- If text is a string, return its trimmed content, or nil if empty.
	-- Otherwise return text (which may, for example, be nil).
	if type(text) == 'string' then
		text = text:match('(%S.-)%s*$')
	end
	return text
end

local function yes(parameter)
	-- Return true if parameter should be interpreted as "yes".
	return ({ y = true, yes = true, on = true, [true] = true })[parameter]
end

local function getAlias(args)
	-- Return alias parameter, possibly modified for exceptional cases.
	local alias = stripToNil(args.alias)
	local games = stripToNil(args.games)
	local year = tonumber(args.year)
	local fullName = stripToNil(args.fullName)
	if fullName then
		year = tonumber(fullName:match('^%d+'))  -- ignore args.year
	end
	if alias == 'ROC' or alias == 'RUS' then
		if year and year==2020 and games=='Θερινούς Ολυμπιακούς Αγώνες' then
			alias = 'ROC_2020'
		end
	end
	return alias
end

local countries = {
	EXA = {                             -- example for testing
		name = "Example Country",
		{1951, "Flag1951.svg"},         -- year <= 1951
		{1995, "Flag1995.svg"},         -- 1951 < year <= 1995
		"Flag of test.svg",             -- otherwise
		["Paralympics"] = "Paralympics.svg",
		["Θερινοί Ολυμπιακοί Αγώνες"] = {
			[1948] = "SO1948.svg",
			[1952] = "SO1952.svg",
			[1980] = "SO1980.svg",
		},
		["Χειμερινοί Ολυμπιακοί Αγώνες"] = {
			[1956] = "WO1956.svg",
			[1964] = "WO1964.svg",
		},
	},
	ADN = {
		name = "Αδέν",
		"Flag of the Colony of Aden.svg",
	},
	AFG = {
		name = "Αφγανιστάν",
		{1973, "Flag of Afghanistan (1931–1973).svg"},
		{1978, "Flag of Afghanistan (1974–1978).svg"},
		{1987, "Flag of Afghanistan (1980–1987).svg"},
		{1992, "Flag of Afghanistan (1987–1992).svg"},
		{1996, "Flag of Afghanistan (1992–2001).svg"},
		{2003, "Flag of Afghanistan (2002–2004).svg"},
		"Flag of Afghanistan.svg",
	},
	AHO = {
		name = "Ολλανδικές Αντίλλες",
		{1982, "Flag of the Netherlands Antilles (1959–1986).svg"},
		{2010, "Flag of the Netherlands Antilles (1986–2010).svg"},
		"Flag of the Netherlands.svg",
		["Pan American Games"] = {
			[2011] = "Flag of PASO.svg",
		},
	},
	AIA = {
		name = "Ανγκουίλα",
		"Flag of Anguilla.svg",
	},
	ALB = {
		name = "Αλβανία",
		{1992, "Flag of Albania (1946–1992).svg"},
		"Flag of Albania.svg",
	},
	ALG = {
		name = "Αλγερία",
		"Flag of Algeria.svg",
	},
	ANA = {
		name = "Ουδέτεροι Αθλητές",
		"ANA flag (2017).svg",
	},
	AND = {
		name = "Ανδόρρα",
		"Flag of Andorra.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	ANG = {
		name = "Ανγκόλα",
		"Flag of Angola.svg",
	},
	ANG_CGF = {
		name = "Ανγκουίλα",
		"Flag of Anguilla.svg",
	},
	ANT = {
		name = "Αντίγκουα και Μπαρμπούντα",
		{1966, "Missing Blue Ensign.svg"},
		"Flag of Antigua and Barbuda.svg",
	},
	ANZ = {
		name = "Αυστραλασία",
		"Flag of Australasian team for Olympic games.svg",
	},
	AOI = {
		name = "Ανεξάρτητοι Αθλητές",
		"Olympic flag.svg",
	},
	ARG = {
		name = "Αργεντινή",
		"Flag of Argentina.svg",
	},
	ARM = {
		name = "Αρμενία",
		"Flag of Armenia.svg",
	},
	ART = {
		name = "Ομάδα Προσφύγων",
		"IAAF flag (2017).svg",
		["Asian Indoor and Martial Arts Games"] = {
			[2017] = "Olympic flag.svg",
		},
	},
	ARU = {
		name = "Αρούμπα",
		"Flag of Aruba.svg",
	},
	ASA = {
		name = "Αμερικανική Σαμόα",
		"Flag of American Samoa.svg",
	},
	ATG = {
		name = "Αντίγκουα και Μπαρμπούντα",
		{1966, "Missing Blue Ensign.svg"},
		"Flag of Antigua and Barbuda.svg",
	},
	AUS = {
		name = "Αυστραλία",
		{1900, "Flag of the United Kingdom.svg"},
		{1909, "Flag of Australia (1903–1908).svg"},
		"Flag of Australia.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	AUT = {
		name = "Αυστρία",
		{1912, "Flag of the Habsburg Monarchy.svg"},
		"Flag of Austria.svg",
	},
	AZE = {
		name = "Αζερμπαϊτζάν",
		"Flag of Azerbaijan.svg",
	},
	BAH = {
		name = "Μπαχάμες",
		{1923, "Flag of the Bahamas (1904–1923).svg"},
		{1953, "Flag of the Bahamas (1923–1953).svg"},
		{1964, "Flag of the Bahamas (1953–1964).svg"},
		{1972, "Flag of the Bahamas (1964–1973).png"},
		"Flag of the Bahamas.svg",
	},
	BAN = {
		name = "Μπαχάμες",
		"Flag of Bangladesh.svg",
	},
	BAR = {
		name = "Μπαρμπάντος",
		{1966, "Flag of Barbados (1870–1966).svg"},
		"Flag of Barbados.svg",
	},
	BDI = {
		name = "Μπουρουντί",
		"Flag of Burundi.svg",
	},
	BEL = {
		name = "Βέλγιο",
		"Flag of Belgium (civil).svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	BEN = {
		name = "Benin",
		{1990, "Flag of Benin (1975–1990).svg"},
		"Flag of Benin.svg",
	},
	BER = {
		name = "Bermuda",
		{1999, "Flag of Bermuda (1910–1999).svg"},
		"Flag of Bermuda.svg",
	},
	BGU = {
		name = "British Guiana",
		{1906, "Flag of British Guiana (1875–1906).svg"},
		{1919, "Flag of British Guiana (1906–1919).svg"},
		{1955, "Flag of British Guiana (1919–1955).svg"},
		"Flag of British Guiana (1955–1966).svg",
	},
	BHN = {
		name = "Bahrain",
		{2001, "Flag of Bahrain (1972–2002).svg"},
		"Flag of Bahrain.svg",
	},
	BHR = {
		name = "Bahrain",
		{2001, "Flag of Bahrain (1972–2002).svg"},
		"Flag of Bahrain.svg",
	},
	BHU = {
		name = "Bhutan",
		"Flag of Bhutan.svg",
	},
	BIH = {
		name = "Bosnia and Herzegovina",
		{1998, "Flag of Bosnia and Herzegovina (1992–1998).svg"},
		"Flag of Bosnia and Herzegovina.svg",
	},
	BIR = {
		name = "Burma",
		{1973, "Flag of Burma (1948–1974).svg"},
		{2010, "Flag of Myanmar (1974–2010).svg"},
		"Flag of Myanmar.svg",
	},
	BIZ = {
		name = "Belize",
		{1981, "Flag of British Honduras (1919-1981).svg"},
		"Flag of Belize.svg",
	},
	BLR = {
		name = "Belarus",
		{1991, "Flag of Byelorussian SSR.svg"},
		{1994, "Flag of Belarus (1918, 1991-1995).svg"},
		{2012, "Flag of Belarus (1995-2012).svg"},
		"Flag of Belarus.svg",
	},
	BNB = {
		name = "British North Borneo",
		"Flag of North Borneo (1948-1963).svg",
	},
	BOH = {
		name = "Bohemia",
		"Flag of Bohemia.svg",
		["Summer Olympics"] = {
			[1912] = "Bohemian Olympic Flag (1912).png",
		},
	},
	BOL = {
		name = "Bolivia",
		"Flag of Bolivia.svg",
	},
	BOT = {
		name = "Botswana",
		"Flag of Botswana.svg",
	},
	BRA = {
		name = "Brazil",
		{1960, "Flag of Brazil (1889-1960).svg"},
		{1968, "Flag of Brazil (1960-1968).svg"},
		{1992, "Flag of Brazil (1968-1992).svg"},
		"Flag of Brazil.svg",
	},
	BRN = {
		name = "Bahrain",
		{2001, "Flag of Bahrain (1972-2002).svg"},
		"Flag of Bahrain.svg",
	},
	BRU = {
		name = "Brunei",
		"Flag of Brunei.svg",
	},
	BUL = {
		name = "Bulgaria",
		{1946, "Flag of Bulgaria.svg"},
		{1948, "Flag of Bulgaria (1946-1948).svg"},
		{1967, "Flag of Bulgaria (1948-1967).svg"},
		{1971, "Flag of Bulgaria (1967-1971).svg"},
		{1990, "Flag of Bulgaria (1971-1990).svg"},
		"Flag of Bulgaria.svg",
	},
	BUR = {
		name = "Burkina Faso",
		"Flag of Burkina Faso.svg",
	},
	BWI = {
		name = "British West Indies",
		"Flag of the West Indies Federation.svg",
	},
	CAF = {
		name = "Central African Republic",
		"Flag of the Central African Republic.svg",
	},
	CAM = {
		name = "Cambodia",
		{1970, "Flag of Cambodia.svg"},
		{1975, "Flag of the Khmer Republic.svg"},
		{1989, "Flag of the People's Republic of Kampuchea.svg"},
		{1991, "Flag of the State of Cambodia.svg"},
		{1993, "Flag of Cambodia under UNTAC.svg"},
		"Flag of Cambodia.svg",
	},
	CAN = {
		name = "Canada",
		{1921, "Canadian Red Ensign (1868-1921).svg"},
		{1957, "Canadian Red Ensign (1921-1957).svg"},
		{1965, "Canadian Red Ensign (1957-1965).svg"},
		"Flag of Canada.svg",
		["Summer Olympics"] = {
			[1936] = "Canadian Red Ensign 1921-1957 (with disc).svg",
		},
	},
	CAY = {
		name = "Cayman Islands",
		{1999, "Flag of the Cayman Islands (pre-1999).svg"},
		"Flag of the Cayman Islands.svg",
	},
	CEY = {
		name = "Ceylon",
		{1948, "British Ceylon flag.svg"},
		{1951, "Flag of Ceylon (1948-1951).svg"},
		{1971, "Flag of Ceylon (1951-1972).svg"},
		"Flag of Sri Lanka.svg",
	},
	CGO = {
		name = "Congo",
		{1988, "Flag of the People's Republic of Congo.svg"},
		"Flag of the Republic of the Congo.svg",
	},
	CHA = {
		name = "Chad",
		"Flag of Chad.svg",
	},
	CHI = {
		name = "Chile",
		"Flag of Chile.svg",
	},
	CHN = {
		name = "China",
		"Flag of the People's Republic of China.svg",
	},
	CIV = {
		name = "Ivory Coast",
		"Flag of Côte d'Ivoire.svg",
	},
	CMR = {
		name = "Cameroon",
		{1975, "Flag of Cameroon (1961-1975).svg"},
		"Flag of Cameroon.svg",
	},
	COD = {
		name = "Democratic Republic of the Congo",
		{1971, "Flag of Congo-Kinshasa (1966-1971).svg"},
		{1996, "Flag of Zaire.svg"},
		{2003, "Flag of the Democratic Republic of the Congo (1997-2003).svg"},
		{2006, "Flag of the Democratic Republic of the Congo (2003-2006).svg"},
		"Flag of the Democratic Republic of the Congo.svg",
	},
	COK = {
		name = "Cook Islands",
		{1979, "Flag of the Cook Islands (1973-1979).svg"},
		"Flag of the Cook Islands.svg",
	},
	COL = {
		name = "Colombia",
		"Flag of Colombia.svg",
	},
	COM = {
		name = "Comoros",
		{1996, "Flag of the Comoros (1992-1996).svg"},
		{2001, "Flag of the Comoros (1996-2001).svg"},
		"Flag of the Comoros.svg",
	},
	COR = {
		name = "Korea",
		"Unification flag of Korea.svg",
		["Winter Olympics"] = {
			[2018] = "Unification flag of Korea (pre 2006).svg",
		},
	},
	CPV = {
		name = "Cape Verde",
		"Flag of Cape Verde.svg",
	},
	CRC = {
		name = "Costa Rica",
		"Flag of Costa Rica.svg",
	},
	CRO = {
		name = "Croatia",
		"Flag of Croatia.svg",
	},
	CUB = {
		name = "Cuba",
		"Flag of Cuba.svg",
	},
	CUR = {
		name = "Curaçao",
		"Flag of Curaçao.svg",
	},
	CUW = {
		name = "Curaçao",
		"Flag of Curaçao.svg",
	},
	CYP = {
		name = "Cyprus",
		{2006, "Flag of Cyprus (1960-2006).svg"},
		"Flag of Cyprus.svg",
	},
	CZE = {
		name = "Czech Republic",
		"Flag of the Czech Republic.svg",
	},
	DAH = {
		name = "Dahomey",
		"Flag of Benin.svg",
	},
	DEN = {
		name = "Denmark",
		"Flag of Denmark.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	DJI = {
		name = "Djibouti",
		"Flag of Djibouti.svg",
	},
	DMA = {
		name = "Dominica",
		{1965, "Flag of Dominica 1955-1965.svg"},
		{1978, "Flag of Dominica (1965-1978).svg"},
		{1981, "Flag of Dominica (1978-1981).svg"},
		{1988, "Flag of Dominica (1981-1988).svg"},
		{1990, "Flag of Dominica (1988-1990).svg"},
		"Flag of Dominica.svg",
	},
	DOM = {
		name = "Dominican Republic",
		"Flag of the Dominican Republic.svg",
	},
	ECU = {
		name = "Ecuador",
		"Flag of Ecuador.svg",
	},
	EGY = {
		name = "Egypt",
		{1922, "Flag of Egypt (1882-1922).svg"},
		{1952, "Flag of Egypt (1922–1958).svg"},
		{1958, "Flag of Egypt (1952-1958).svg"},
		{1971, "Flag of the United Arab Republic.svg"},
		{1984, "Flag of Egypt (1972-1984).svg"},
		"Flag of Egypt.svg",
	},
	ENG = {
		name = "England",
		"Flag of England.svg",
	},
	ERI = {
		name = "Eritrea",
		"Flag of Eritrea.svg",
	},
	ESA = {
		name = "El Salvador",
		"Flag of El Salvador.svg",
	},
	ESP = {
		name = "Spain",
		{1931, "Flag of Spain (1785-1873 and 1875-1931).svg"},
		{1939, "Flag of Spain (1931 - 1939).svg"},
		{1977, "Flag of Spain (1945–1977).svg"},
		{1981, "Flag of Spain (1977 - 1981).svg"},
		"Flag of Spain.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	EST = {
		name = "Estonia",
		"Flag of Estonia.svg",
	},
	ETH = {
		name = "Ethiopia",
		{1974, "Flag of Ethiopia (1897-1936; 1941-1974).svg"},
		{1975, "Flag of Ethiopia (1974-1975).svg"},
		{1987, "Flag of Ethiopia (1975–1987).svg"},
		{1991, "Flag of Ethiopia (1987–1991).svg"},
		{1996, "Flag of Ethiopia (1991-1996).svg"},
		"Flag of Ethiopia.svg",
	},
	EUA = {
		name = "United Team of Germany",
		{1959, "Flag of Germany.svg"},
		"Flag of the German Olympic Team (1960-1968).svg",
	},
	EUN = {
		name = "Unified Team",
		"Olympic flag.svg",
		["Winter Paralympics"] = "Paralympic flag (1988-1994).svg",
		["Paralympics"] = "Paralympic flag (1988-1994).svg",
		["Summer Paralympics"] = "Paralympic flag (1988-1994).svg",
	},
	FAI = {
		name = "Falkland Islands",
		{1999, "Flag of the Falkland Islands (1948-1999).svg"},
		"Flag of the Falkland Islands.svg",
	},
	FAR = {
		name = "Faroe Islands",
		"Flag of the Faroe Islands.svg",
	},
	FIJ = {
		name = "Fiji",
		{1970, "Flag of Fiji 1924-1970.svg"},
		"Flag of Fiji.svg",
	},
	FIN = {
		name = "Finland",
		{1912, "Flag of Russia.svg"},
		"Flag of Finland.svg",
	},
	FINA = {
		name = "FINA Independent Athletes",
		"FINA logo cropped.jpg"
	},
	FRA = {
		name = "France",
		"Flag of France.svg",
		["Θερινούς Ολυμπιακούς"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	FRG = {
		name = "West Germany",
		{1959, "Flag of Germany.svg"},
		{1968, "Flag of the German Olympic Team (1960-1968).svg"},
		"Flag of Germany.svg",
	},
	FRN = {
		name = "Rhodesia and Nyasaland",
		"Flag of the Federation of Rhodesia and Nyasaland.svg",
	},
	FRO = {
		name = "Faroe Islands",
		"Flag of the Faroe Islands.svg",
	},
	FSA = {
		name = "Federation of South Arabia",
		"Flag of the Federation of South Arabia.svg",
	},
	FSM = {
		name = "Federated States of Micronesia",
		"Flag of the Federated States of Micronesia.svg",
	},
	GAB = {
		name = "Gabon",
		"Flag of Gabon.svg",
	},
	GAM = {
		name = "The Gambia",
		"Flag of The Gambia.svg",
	},
	GBR = {
		name = "Great Britain",
		"Flag of the United Kingdom.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	GBR_WCA = {
		name = "Great Britain and Northern Ireland",
		"Flag of the United Kingdom.svg",
	},
	GBS = {
		name = "Guinea-Bissau",
		"Flag of Guinea-Bissau.svg",
	},
	GCO = {
		name = "Gold Coast",
		"Flag of the Gold Coast.svg",
	},
	GDR = {
		name = "East Germany",
		{1959, "Flag of East Germany.svg"},
		{1968, "Flag of the German Olympic Team (1960-1968).svg"},
		"Flag of East Germany.svg",
	},
	GEO = {
		name = "Georgia",
		{2003, "Flag of Georgia (1990–2004).svg"},
		"Flag of Georgia.svg",
	},
	GEQ = {
		name = "Equatorial Guinea",
		"Flag of Equatorial Guinea.svg",
	},
	GER = {
		name = "Germany",
		{1912, "Flag of the German Empire.svg"},
		{1932, "Flag of Germany (3-2 aspect ratio).svg"},
		{1945, "Flag of the German Reich (1935–1945).svg"},
		"Flag of Germany.svg",
	},
	GGY = {
		name = "Guernsey",
		{1985, "Flag of Guernsey (1936).svg"},
		"Flag of Guernsey.svg",
	},
	GHA = {
		name = "Ghana",
		{1960, "Flag of the Gold Coast.svg"},
		{1962, "Flag of the Union of African States (1961-1962).svg"},
		{1966, "Flag of Ghana (1964-1966).svg"},
		"Flag of Ghana.svg",
	},
	GIB = {
		name = "Gibraltar",
		{1981, "Government Ensign of Gibraltar 1939-1999.svg"},
		"Flag of Gibraltar.svg",
	},
	GRE = {
		name = "Ελλάδα",
		{1969, "Flag of Greece (1828-1978).svg"},
		{1975, "Flag of Greece (1970-1975).svg"},
		{1978, "Flag of Greece (1828-1978).svg"},
		"Flag of Greece.svg",
	},
	GRN = {
		name = "Grenada",
		{1974, "Flag of Grenada 1967.svg"},
		"Flag of Grenada.svg",
	},
	GUA = {
		name = "Guatemala",
		"Flag of Guatemala.svg",
	},
	GUE = {
		name = "Guernsey",
		{1985, "Flag of Guernsey (1936).svg"},
		"Flag of Guernsey.svg",
	},
	GUI = {
		name = "Guinea",
		"Flag of Guinea.svg",
	},
	GUM = {
		name = "Guam",
		"Flag of Guam.svg",
	},
	GUY = {
		name = "Guyana",
		{1906, "Flag of British Guiana (1875–1906).svg"},
		{1919, "Flag of British Guiana (1906-1919).svg"},
		{1955, "Flag of British Guiana (1919-1955).svg"},
		{1966, "Flag of British Guiana (1955–1966).svg"},
		"Flag of Guyana.svg",
	},
	HAI = {
		name = "Haiti",
		{1963, "Flag of Haiti.svg"},
		{1986, "Flag of Haiti (1964–1986).svg"},
		"Flag of Haiti.svg",
	},
	HBR = {
		name = "British Honduras",
		"Flag of British Honduras.svg",
	},
	HKG = {
		name = "Hong Kong",
		{1955, "Flag of Hong Kong (1876–1941 and 1945–1955).svg"},
		{1959, "Flag of Hong Kong (1955–1959).svg"},
		{1997, "Flag of Hong Kong (1959–1997).svg"},
		"Flag of Hong Kong.svg",
	},
	HKG_CGF = {
		name = "Hong Kong",
		{1955, "Flag of Hong Kong 1876.svg"},
		{1959, "Flag of Hong Kong 1955.svg"},
		"Flag of Hong Kong (1959-1997).svg"
	},
	HON = {
		name = "Honduras",
		"Flag of Honduras.svg",
	},
	HUN = {
		name = "Ουγγαρία",
		{1918, "Flag of Hungary (1867-1918).svg"},
		{1946, "Flag of Hungary (1915-1918, 1919-1946; 3-2 aspect ratio).svg"},
		{1949, "Flag of Hungary (1946-1949, 1956-1957).svg"},
		{1955, "Flag of Hungary (1949-1956).svg"},
		{1957, "Flag of Hungary (1946-1949, 1956-1957).svg"},
		"Flag of Hungary.svg",
	},
	IFS = {
		name = "Irish Free State",
		"Flag of Ireland.svg",
	},
	INA = {
		name = "Indonesia",
		"Flag of Indonesia.svg",
	},
	IND = {
		name = "India",
		{1946, "British Raj Red Ensign.svg"},
		{2012, "Flag of India.svg"},
		"Flag of India.svg",
	},
	IOA = {
		name = "Independent Olympic Athletes",
		"Olympic flag.svg",
	},
	IOA_2000 = {
		name = "Individual Olympic Athletes",
		"Olympic flag.svg",
	},
	IOC = {
		name = "Athletes from Kuwait",
		"Olympic flag.svg",
	},
	IOM = {
		name = "Isle of Man",
		"Flag of the Isle of Man.svg",
	},
	IOP = {
		name = "Independent Olympic Participants",
		"Olympic flag.svg",
	},
	['IOP, IOA, OAR'] = {
		name = "Independent Olympians",
		"Olympic flag.svg",
	},
	IPA = {
		name = "Individual Paralympic Athletes",
		"Paralympic flag.svg",
	},
	IPP = {
		name = "Independent Paralympic Participants",
		"Paralympic flag (1988-1994).svg",
	},
	IRE = {
		name = "Ireland",
		"Green harp flag of Ireland.svg",
	},
	IRI = {
		name = "Iran",
		{1932, "Early 20th Century Qajar Flag.svg"},
		{1964, "State Flag of Iran (1933-1964).svg"},
		{1980, "State Flag of Iran (1964-1980).svg"},
		"Flag of Iran.svg",
		["Summer Olympics"] = {
			[1964] = "State Flag of Iran (1964-1980).svg",
		},
	},
	IRL = {
		name = "Ireland",
		"Flag of Ireland.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	IRN = {
		name = "Iran",
		{1932, "Early 20th Century Qajar Flag.svg"},
		{1964, "State Flag of Iran (1933-1964).svg"},
		{1980, "State Flag of Iran (1964-1980).svg"},
		"Flag of Iran.svg",
		["Summer Olympics"] = {
			[1964] = "State Flag of Iran (1964-1980).svg",
		},
	},
	IRQ = {
		name = "Iraq",
		{1959, "Flag of Iraq (1921–1959).svg"},
		{1963, "Flag of Iraq (1959-1963).svg"},
		{1991, "Flag of Iraq (1963-1991); Flag of Syria (1963-1972).svg"},
		{2003, "Flag of Iraq (1991-2004).svg"},
		{2007, "Flag of Iraq (2004-2008).svg"},
		"Flag of Iraq.svg",
	},
	ISL = {
		name = "Iceland",
		{1915, "Flag of Denmark.svg"},
		{1944, "Light Blue Flag of Iceland.svg"},
		"Flag of Iceland.svg",
	},
	ISR = {
		name = "Israel",
		"Flag of Israel.svg",
	},
	ISV = {
		name = "Virgin Islands",
		"Flag of the United States Virgin Islands.svg",
	},
	ITA = {
		name = "Italy",
		{1946, "Flag of Italy (1861-1946).svg"},
		{2002, "Flag of Italy.svg"},
		{2006, "Flag of Italy (2003–2006).svg"},
		"Flag of Italy.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	IVB = {
		name = "British Virgin Islands",
		"Flag of the British Virgin Islands.svg",
	},
	JAM = {
		name = "Jamaica",
		{1957, "Flag of Jamaica (1906-1957).svg"},
		{1962, "Flag of Jamaica (1957-1962).svg"},
		"Flag of Jamaica.svg",
	},
	JER = {
		name = "Jersey",
		{1980, "Flag of Jersey (pre 1981).svg"},
		"Flag of Jersey.svg",
	},
	JEY = {
		name = "Jersey",
		{1980, "Flag of Jersey (pre 1981).svg"},
		"Flag of Jersey.svg",
	},
	JOR = {
		name = "Jordan",
		"Flag of Jordan.svg",
	},
	JPN = {
		name = "Japan",
		{1999, "Flag of Japan (1870-1999).svg"},
		"Flag of Japan.svg",
	},
	KAZ = {
		name = "Kazakhstan",
		"Flag of Kazakhstan.svg",
	},
	KEN = {
		name = "Kenya",
		{1963, "Flag of British East Africa.svg"},
		"Flag of Kenya.svg",
	},
	KGZ = {
		name = "Kyrgyzstan",
		"Flag of Kyrgyzstan.svg",
	},
	KHM = {
		name = "Khmer Republic",
		"Flag of the Khmer Republic.svg",
	},
	KIR = {
		name = "Kiribati",
		"Flag of Kiribati.svg",
	},
	KOR = {
		name = "South Korea",
		{1947, "Flag of South Korea (1945-1948).svg"},
	    {1949, "Flag of South Korea (1948-1949).svg"},
	    {1983, "Flag of South Korea (1949-1984).png"}, -- flag changed in Feb '84
	    {1997, "Flag of South Korea (1984-1997).svg"},
	    {2011, "Flag of South Korea (1997-2011).svg"},
	    "Flag of South Korea.svg"
	},
	KOS = {
		name = "Kosovo",
		"Flag of Kosovo.svg",
	},
	KSA = {
		name = "Saudi Arabia",
		{1973, "Flag of Saudi Arabia (1938-1973).svg"},
		"Flag of Saudi Arabia.svg",
	},
	KUW = {
		name = "Kuwait",
		"Flag of Kuwait.svg",
	},
	LAO = {
		name = "Laos",
		{1975, "Flag of Laos (1952-1975).svg"},
		"Flag of Laos.svg",
	},
	LAT = {
		name = "Latvia",
		"Flag of Latvia.svg",
	},
	LBA = {
		name = "Libya",
		{1968, "Flag of Libya (1951).svg"},
		{1972, "Flag of Libya (1969–1972).svg"},
		{1977, "Flag of Libya (1972–1977).svg"},
		{2011, "Flag of Libya (1977-2011).svg"},
		"Flag of Libya.svg",
	},
	LBN = {
		name = "Lebanon",
		"Flag of Lebanon.svg",
	},
	LBR = {
		name = "Liberia",
		"Flag of Liberia.svg",
	},
	LCA = {
		name = "Saint Lucia",
		{1967, "Flag of Saint Lucia (1939-1967).svg"},
		{1979, "Flag of Saint Lucia (1967-1979).svg"},
		{2002, "Flag of Saint Lucia (1979-2002).svg"},
		"Flag of Saint Lucia.svg",
	},
	LES = {
		name = "Lesotho",
		{1987, "Flag of Lesotho (1966).svg"},
		{2006, "Flag of Lesotho (1987-2006).svg"},
		"Flag of Lesotho.svg",
	},
	LIB = {
		name = "Lebanon",
		"Flag of Lebanon.svg",
	},
	LIE = {
		name = "Liechtenstein",
		{1921, "Flag of Liechtenstein (1852-1921).svg"},
		{1937, "Flag of Liechtenstein (1921-1937).svg"},
		"Flag of Liechtenstein.svg",
	},
	LTU = {
		name = "Lithuania",
		{1940, "Flag of Lithuania (1918-1940).svg"},
		{2004, "Flag of Lithuania (1988-2004).svg"},
		"Flag of Lithuania.svg",
	},
	LUX = {
		name = "Luxembourg",
		"Flag of Luxembourg.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	MAC = {
		name = "Macau",
		{1999, "Bandeira do Leal Senado.svg"},
		"Flag of Macau.svg",
	},
	MAD = {
		name = "Madagascar",
		"Flag of Madagascar.svg",
	},
	MAL = {
		name = "Malaya",
		"Flag of Malaya.svg",
	},
	MAR = {
		name = "Morocco",
		"Flag of Morocco.svg",
	},
	MAS = {
		name = "Malaysia",
		{1963, "Flag of Malaya.svg"},
		"Flag of Malaysia.svg",
	},
	MAW = {
		name = "Malawi",
		{2009, "Flag of Malawi.svg"},
		{2012, "Flag of Malawi (2010-2012).svg"},
		"Flag of Malawi.svg",
		["Summer Olympics"] = {
			[2012] = "Flag of Malawi.svg",
		},
	},
	MDA = {
		name = "Moldova",
		"Flag of Moldova.svg",
	},
	MDV = {
		name = "Maldives",
		"Flag of Maldives.svg",
	},
	MEX = {
		name = "Mexico",
		{1916, "Flag of Mexico (1893-1916).svg"},
		{1934, "Flag of the United Mexican States (1916-1934).svg"},
		{1968, "Flag of Mexico (1934-1968).svg"},
		"Flag of Mexico.svg",
	},
	MGL = {
		name = "Mongolia",
		{1991, "Flag of the People's Republic of Mongolia (1940-1992).svg"},
		"Flag of Mongolia.svg",
		["Winter Olympics"] = {
			[1992] = "Flag of the People's Republic of Mongolia (1940-1992).svg",
		},
	},
	MHL = {
		name = "Marshall Islands",
		"Flag of the Marshall Islands.svg",
	},
	MIX = {
		name = "Mixed-NOCs",
		"Olympic flag.svg",
	},
	MKD = {
		name = "Macedonia",
		"Flag of Macedonia.svg",
	},
	MLI = {
		name = "Mali",
		"Flag of Mali.svg",
	},
	MLT = {
		name = "Malta",
		{1943, "Flag of Malta (1923-1943).svg"},
		{1964, "Flag of Malta (1943-1964).svg"},
		"Flag of Malta.svg",
	},
	MNE = {
		name = "Montenegro",
		"Flag of Montenegro.svg",
	},
	MNT = {
		name = "Montserrat",
		"Flag of Montserrat.svg",
	},
	MON = {
		name = "Monaco",
		"Flag of Monaco.svg",
	},
	MOZ = {
		name = "Mozambique",
		{1983, "Flag of Mozambique (1975-1983).svg"},
		"Flag of Mozambique.svg",
	},
	MRI = {
		name = "Mauritius",
		{1923, "Flag of Mauritius 1906.svg"},
		{1968, "Flag of Mauritius 1923.svg"},
		"Flag of Mauritius.svg",
	},
	MSR = {
		name = "Montserrat",
		"Flag of Montserrat.svg",
	},
	MTN = {
		name = "Mauritania",
		{2016, "Flag of Mauritania (1959–2017).svg"},
		"Flag of Mauritania.svg",
	},
	MYA = {
		name = "Myanmar",
		{1973, "Flag of Burma (1948-1974).svg"},
		{2010, "Flag of Myanmar (1974-2010).svg"},
		"Flag of Myanmar.svg",
	},
	NAM = {
		name = "Namibia",
		"Flag of Namibia.svg",
	},
	NBO = {
		name = "North Borneo",
		"Flag of North Borneo (1948-1963).svg",
	},
	NCA = {
		name = "Nicaragua",
		"Flag of Nicaragua.svg",
	},
	NCL = {
		name = "New Caledonia",
		"Flag of New Caledonia.svg",
		["Asian Indoor and Martial Arts Games"] = {
			[2017] = "Flag of France.svg",
		},
	},
	NED = {
		name = "Netherlands",
		"Flag of the Netherlands.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	NEP = {
		name = "Nepal",
		"Flag of Nepal.svg",
	},
	NEW = {
		name = "Newfoundland",
		"Newfoundland Red Ensign.png",
	},
	NFI = {
		name = "Norfolk Island",
		"Flag of Norfolk Island.svg",
	},
	NGR = {
		name = "Nigeria",
		{1960, "Flag of British Colonial Nigeria.svg"},
		"Flag of Nigeria.svg",
	},
	NIC = {
		name = "Nicaragua",
		"Flag of Nicaragua.svg",
	},
	NIG = {
		name = "Niger",
		"Flag of Niger.svg",
	},
	NIR = {
		name = "Northern Ireland",
		"Ulster banner.svg",
	},
	NIU = {
		name = "Niue",
		"Flag of Niue.svg",
	},
	NMI = {
		name = "Northern Mariana Islands",
		"Flag of the Northern Mariana Islands.svg",
	},
	NOR = {
		name = "Norway",
		"Flag of Norway.svg",
	},
	NPA = {
		name = "Neutral Paralympic Athletes",
		"Paralympic flag.svg",
	},
	NRH = {
		name = "Northern Rhodesia",
		"Flag of Northern Rhodesia (1939-1953).svg",
	},
	NRU = {
		name = "Nauru",
		"Flag of Nauru.svg",
	},
	NZL = {
		name = "New Zealand",
		"Flag of New Zealand.svg",
		["Summer Olympics"] = {
			[1980] = "Flag of New Zealand Olympic Committee (1979-1994).svg",
		},
	},
	OAR = {
		name = "Olympic Athletes from Russia",
		"Olympic flag.svg",
	},
	OMA = {
		name = "Oman",
		{1995, "Flag of Oman (1970-1995).svg"},
		"Flag of Oman.svg",
	},
	OMN = {
		name = "Oman",
		{1995, "Flag of Oman (1970-1995).svg"},
		"Flag of Oman.svg",
	},
	PAK = {
		name = "Pakistan",
		"Flag of Pakistan.svg",
	},
	PAN = {
		name = "Panama",
		"Flag of Panama.svg",
	},
	PAR = {
		name = "Paraguay",
		{1954, "Flag of Paraguay (1842-1954).svg"},
		{1988, "Flag of Paraguay (1954-1988).svg"},
		{1990, "Flag of Paraguay (1988-1990).svg"},
		{2013, "Flag of Paraguay (1990-2013).svg"},
		"Flag of Paraguay.svg",
	},
	PER = {
		name = "Peru",
		{1950, "Flag of Peru (1825-1950).svg"},
		"Flag of Peru.svg",
	},
	PHI = {
		name = "Philippines",
		{1936, "Flag of the Philippines (1919-1936).svg"},
		{1984, "Flag of the Philippines (navy blue).svg"},
		{1986, "Flag_of_the_Philippines_(light_blue).svg"},
		{1997, "Flag of the Philippines (navy blue).svg"},
		"Flag of the Philippines.svg",
		["Asian Games"] = {
			[1986] = "Flag of the Philippines (navy blue).svg",
		},
	},
	PLE = {
		name = "Palestine",
		"Flag of Palestine.svg",
	},
	PLW = {
		name = "Palau",
		"Flag of Palau.svg",
	},
	PNG = {
		name = "Papua New Guinea",
		{1965, "Flag of the Territory of New Guinea.svg"},
		{1970, "Flag of Papua New Guinea 1965.svg"},
		"Flag of Papua New Guinea.svg",
	},
	POL = {
		name = "Poland",
		{1928, "Flag of Poland (1919-1928).svg"},
		{1979, "Flag of Poland (1928-1980).svg"},
		"Flag of Poland.svg",
	},
	POR = {
		name = "Portugal",
		"Flag of Portugal.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Flag of Portugal-1980-Olympics.svg",
		},
	},
	PRK = {
		name = "North Korea",
		{1947, "Flag of the Provisional People's Committee for North Korea.svg"},
		{1991, "Flag of North Korea (1948–1992).svg"},
		"Flag of North Korea.svg",
	},
	PUR = {
		name = "Puerto Rico",
		{1951, "Puerto Rico Azul Celeste.png"},
		{1995, "Flag of Puerto Rico (1952-1995).svg"},
		"Flag of Puerto Rico.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1948] = "Puerto rico national sport flag.svg",
			[1952] = "Puerto rico national sport flag.svg",
			[1980] = "Olympic flag.svg",
		},
	},
	PYF = {
		name = "French Polynesia",
		"Flag of French Polynesia.svg",
	},
	QAT = {
		name = "Qatar",
		"Flag of Qatar.svg",
	},
	RHO = {
		name = "Rhodesia",
		{1953, "Flag of Southern Rhodesia.svg"},
		{1963, "Flag of the Federation of Rhodesia and Nyasaland.svg"},
		{1968, "Flag of Rhodesia (1964).svg"},
		"Flag of Rhodesia.svg",
	},
	ROA = {
		name = "Refugee Olympic Team",
		"Olympic flag.svg",
	},
	ROC = {
		name = "Republic of China",
		{1928, "Flag of the Republic of China (1912-1928).svg"},
		"Flag of the Republic of China.svg",
	},
	ROC_2020 = {
		name = "ROC",
		"Olympic flag.svg",
	},
	ROM = {
		name = "Romania",
		{1948, "Flag of Romania.svg"},
		{1952, "Flag of Romania (1948-1952).svg"},
		{1965, "Flag of Romania (1952-1965).svg"},
		{1989, "Flag of Romania (1965-1989).svg"},
		"Flag of Romania.svg",
	},
	ROT = {
		name = "Refugee Olympic Team",
		"Olympic flag.svg",
	},
	ROU = {
		name = "Romania",
		{1948, "Flag of Romania.svg"},
		{1952, "Flag of Romania (1948-1952).svg"},
		{1965, "Flag of Romania (1952-1965).svg"},
		{1989, "Flag of Romania (1965-1989).svg"},
		"Flag of Romania.svg",
	},
	RSA = {
		name = "South Africa",
		{1912, "Flag of the United Kingdom.svg"},
		{1928, "Red Ensign of South Africa (1912-1928).svg"},
		{1994, "Flag of South Africa (1928-1994).svg"},
		"Flag of South Africa.svg",
		["Winter Olympics"] = {
			[1994] = "South African Olympic Flag 1994.gif",
		},
		["Summer Olympics"] = {
			[1992] = "South African Olympic Flag.svg",
		},
	},
	RU1 = {
		name = "Russian Empire",
		"Flag of Russia.svg",
	},
	RUS = {
		name = "Russia",
		"Flag of Russia.svg",
	},
	RWA = {
		name = "Rwanda",
		{1961, "Flag of Rwanda (1959-1961).svg"},
		{2001, "Flag of Rwanda (1962-2001).svg"},
		"Flag of Rwanda.svg",
	},
	SAA = {
		name = "Saar",
		"Flag of Saar (1947–1956).svg",
	},
	SAF = {
		name = "South Africa",
		{1912, "Flag of the United Kingdom.svg"},
		{1928, "Red Ensign of South Africa (1912-1928).svg"},
		{1994, "Flag of South Africa (1928-1994).svg"},
		"Flag of South Africa.svg",
		["Winter Olympics"] = {
			[1994] = "South African Olympic Flag 1994.gif",
		},
		["Summer Olympics"] = {
			[1992] = "South African Olympic Flag.svg",
		},
	},
	SAM = {
		name = "Samoa",
		"Flag of Samoa.svg",
	},
	SAR = {
		name = "Sarawak",
		"Flag of the Crown Colony of Sarawak (1946).svg",
	},
	SCG = {
		name = "Serbia and Montenegro",
		"Flag of Serbia and Montenegro.svg",
	},
	SCN = {
		name = "Saint Christopher-Nevis-Anguilla",
		"Flag of Saint Christopher-Nevis-Anguilla.svg",
	},
	SCO = {
		name = "Scotland",
		"Flag of Scotland.svg",
	},
	SEN = {
		name = "Senegal",
		"Flag of Senegal.svg",
	},
	SEY = {
		name = "Seychelles",
		{1996, "Flag of the Seychelles (1977-1996).svg"},
		"Flag of Seychelles.svg",
	},
	SGP = {
		name = "Singapore",
		{1959, "Flag of Singapore (1946-1959).svg"},
		"Flag of Singapore.svg",
	},
	SHE = {
		name = "Saint Helena",
		{1984, "Flag of Saint Helena (1874-1984).svg"},
		"Flag of Saint Helena.svg",
	},
	SHN = {
		name = "Saint Helena",
		{1984, "Flag of Saint Helena (1874-1984).svg"},
		"Flag of Saint Helena.svg",
	},
	SIN = {
		name = "Singapore",
		{1959, "Flag of Singapore (1946-1959).svg"},
		"Flag of Singapore.svg",
	},
	SKN = {
		name = "Saint Kitts and Nevis",
		{1983, "Flag of Saint Christopher-Nevis-Anguilla.svg"},
		"Flag of Saint Kitts and Nevis.svg",
	},
	SLE = {
		name = "Sierra Leone",
		{1961, "Flag of Sierra Leone 1916-1961.gif"},
		"Flag of Sierra Leone.svg",
	},
	SLO = {
		name = "Slovenia",
		"Flag of Slovenia.svg",
	},
	SMR = {
		name = "San Marino",
		{2010, "Flag of San Marino (before 2011).svg"},
		"Flag of San Marino.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	SOL = {
		name = "Solomon Islands",
		"Flag of the Solomon Islands.svg",
	},
	SOM = {
		name = "Somalia",
		"Flag of Somalia.svg",
	},
	SRB = {
		name = "Serbia",
		{1918, "State Flag of Serbia (1882-1918).svg"},
		{1944, "Flag of Serbia, 1941-1944.svg"},
		{1992, "Flag of SR Serbia.svg"},
		{2004, "Flag of Serbia (1992-2004).svg"},
		{2010, "Flag of Serbia (2004-2010).svg"},
		"Flag of Serbia.svg",
	},
	SRH = {
		name = "Southern Rhodesia",
		"Flag of Southern Rhodesia.svg",
	},
	SRI = {
		name = "Sri Lanka",
		{1948, "British Ceylon flag.svg"},
		{1951, "Flag of Ceylon (1948-1951).svg"},
		{1971, "Flag of Ceylon (1951-1972).svg"},
		"Flag of Sri Lanka.svg",
	},
	SSD = {
		name = "South Sudan",
		"Flag of South Sudan.svg",
	},
	STP = {
		name = "São Tomé and Príncipe",
		"Flag of Sao Tome and Principe.svg",
	},
	SUD = {
		name = "Sudan",
		{1970, "Flag of Sudan (1956-1970).svg"},
		"Flag of Sudan.svg",
	},
	SUI = {
		name = "Switzerland",
		"Flag of Switzerland.svg",
		["Θερινούς Ολυμπιακούς Αγώνες"] = {
			[1980] = "Olympic flag.svg",
		},
	},
	SUR = {
		name = "Suriname",
		{1975, "Flag of Dutch Guyana.svg"},
		"Flag of Suriname.svg",
	},
	SVG = {
		name = "Saint Vincent and the Grenadines",
		{1979, "Flag of Saint Vincent and the Grenadines (1907-1979).svg"},
		{1984, "Flag of Saint Vincent and the Grenadines (1979-1985).svg"},
		{1985, "Flag of Saint Vincent and the Grenadines (1985).svg"},
		"Flag of Saint Vincent and the Grenadines.svg",
	},
	SVK = {
		name = "Slovakia",
		"Flag of Slovakia.svg",
	},
	SWE = {
		name = "Sweden",
		{1905, "Swedish civil ensign (1844–1905).svg"},
		"Flag of Sweden.svg",
	},
	SWK = {
		name = "Sarawak",
		"Flag of the Crown Colony of Sarawak (1946).svg",
	},
	SWZ = {
		name = "Swaziland",
		"Flag of Swaziland.svg",
	},
	SYR = {
		name = "Syria",
		{1958, "Flag of Syria (1932-1958; 1961-1963).svg"},
		{1961, "Flag of the United Arab Republic.svg"},
		{1963, "Flag of Syria (1932-1958; 1961-1963).svg"},
		{1972, "Flag of Iraq (1963-1991); Flag of Syria (1963-1972).svg"},
		{1980, "Flag of Syria (1972-1980).svg"},
		"Flag of Syria.svg",
	},
	TAG = {
		name = "Tanganyika",
		"Flag of Tanganyika.svg",
	},
	TAH = {
		name = "Tahiti",
		"Flag of French Polynesia.svg",
	},
	TAN = {
		name = "Tanzania",
		{1964, "Flag of Tanganyika.svg"},
		"Flag of Tanzania.svg",
	},
	TCA = {
		name = "Turks and Caicos Islands",
		"Flag of the Turks and Caicos Islands.svg",
	},
	TCH = {
		name = "Czechoslovakia",
		"Flag of Czechoslovakia.svg",
	},
	TCI = {
		name = "Turks and Caicos Islands",
		"Flag of the Turks and Caicos Islands.svg",
	},
	TGA = {
		name = "Tonga",
		"Flag of Tonga.svg",
	},
	THA = {
		name = "Thailand",
		"Flag of Thailand.svg",
	},
	TJK = {
		name = "Tajikistan",
		"Flag of Tajikistan.svg",
	},
	TKL = {
		name = "Tokelau",
		"Flag of Tokelau.svg",
	},
	TKM = {
		name = "Turkmenistan",
		{1973, "Flag of Turkmen SSR (1956).svg"},
		{1991, "Flag of the Turkmen SSR.svg"},
		{1997, "Flag of Turkmenistan (1992-1997).svg"},
		{2001, "Flag of Turkmenistan (1997-2001).svg"},
		"Flag of Turkmenistan.svg",
	},
	TKS = {
		name = "Turks and Caicos Islands",
		"Flag of the Turks and Caicos Islands.svg",
	},
	TLS = {
		name = "East Timor",
		"Flag of East Timor.svg",
	},
	TOG = {
		name = "Togo",
		"Flag of Togo.svg",
	},
	TON = {
		name = "Tonga",
		"Flag of Tonga.svg",
	},
	TPE = {
		name = "Chinese Taipei",
		{1979, "Flag of the Republic of China.svg"},
		"Flag of Chinese Taipei for Olympic games.svg",
		["Olympics"] = "Flag of Chinese Taipei for Olympic games.svg",
		["Summer Olympics"] = "Flag of Chinese Taipei for Olympic games.svg",
		["Winter Olympics"] = "Flag of Chinese Taipei for Olympic games.svg",
		["Asian Para Games"] = "Chinese Taipei Paralympic Flag.svg",
		["Summer Paralympics"] = "Chinese Taipei Paralympic Flag.svg",
		["Universiade"] = "Flag of Chinese Taipei for Universiade.svg",
		["Summer Universiade"] = "Flag of Chinese Taipei for Universiade.svg",
		["Winter Universiade"] = "Flag of Chinese Taipei for Universiade.svg",
	},
	TRI = {
		name = "Trinidad and Tobago",
		{1958, "Flag of Trinidad and Tobago 1889-1958.svg"},
		"Flag of Trinidad and Tobago.svg",
	},
	TTO = {
		name = "Trinidad and Tobago",
		{1958, "Flag of Trinidad and Tobago 1889-1958.svg"},
		"Flag of Trinidad and Tobago.svg",
	},
	TUN = {
		name = "Tunisia",
		{1999, "Pre-1999 Flag of Tunisia.svg"},
		"Flag of Tunisia.svg",
	},
	TUR = {
		name = "Turkey",
		{1936, "Flag of the Ottoman Empire.svg"},
		"Flag of Turkey.svg",
	},
	TUV = {
		name = "Tuvalu",
		"Flag of Tuvalu.svg",
	},
	UAE = {
		name = "United Arab Emirates",
		"Flag of the United Arab Emirates.svg",
	},
	UAR = {
		name = "United Arab Republic",
		"Flag of the United Arab Republic.svg",
	},
	UGA = {
		name = "Uganda",
		{1962, "Flag of the Uganda Protectorate.svg"},
		"Flag of Uganda.svg",
	},
	UKR = {
		name = "Ukraine",
		"Flag of Ukraine.svg",
	},
	URS = {
		name = "Soviet Union",
        {1936, "Flag of the Soviet Union (1924–1936).svg"},
		{1955, "Flag of the Soviet Union (1936–1955).svg"},
		{1980, "Flag of the Soviet Union (1955–1980).svg"},
		"Flag of the Soviet Union.svg",
	},
	URU = {
		name = "Uruguay",
		"Flag of Uruguay.svg",
	},
	USA = {
		name = "United States",
		{1896, "US flag 44 stars.svg"},
		{1908, "Flag of the United States (1896–1908).svg"},
		{1912, "US flag 46 stars.svg"},
		{1959, "US flag 48 stars.svg"},
		{1960, "US flag 49 stars.svg"},
		"Flag of the United States.svg",
		["Summer Olympics"] = {
			[1912] = "US flag 48 stars.svg",
		},
	},
	UZB = {
		name = "Uzbekistan",
		"Flag of Uzbekistan.svg",
	},
	VAN = {
		name = "Vanuatu",
		"Flag of Vanuatu.svg",
	},
	VEN = {
		name = "Venezuela",
		{1930, "Flag of Venezuela (1905-1930).svg"},
		{1954, "Flag of Venezuela (1930-1954).svg"},
		{2006, "Flag of Venezuela (1954-2006).png"},
		"Flag of Venezuela.svg",
	},
	VIE = {
		name = "Vietnam",
		{1975, "Flag of South Vietnam.svg"},
		"Flag of Vietnam.svg",
	},
	VIN = {
		name = "Saint Vincent and the Grenadines",
		{1979, "Flag of Saint Vincent and the Grenadines (1907-1979).svg"},
		{1984, "Flag of Saint Vincent and the Grenadines (1979-1985).svg"},
		{1985, "Flag of Saint Vincent and the Grenadines (1985).svg"},
		"Flag of Saint Vincent and the Grenadines.svg",
	},
	VNM = {
		name = "South Vietnam",
		{1975, "Flag of South Vietnam.svg"},
		"Flag of Vietnam.svg",
	},
	VOL = {
		name = "Upper Volta",
		"Flag of Upper Volta.svg",
	},
	WAL = {
		name = "Wales",
		{1952, "Flag of Wales 2.svg"},
		{1959, "Flag of Wales (1953-1959).svg"},
		"Flag of Wales 2.svg",
	},
	WLF = {
		name = "Wallis and Futuna",
		"Flag of Wallis and Futuna.svg",
	},
	WSM = {
		name = "Western Samoa",
		"Flag of Samoa.svg",
	},
	YAR = {
		name = "North Yemen",
		"Flag of North Yemen.svg",
	},
	YEM = {
		name = "Yemen",
		"Flag of Yemen.svg",
	},
	YMD = {
		name = "South Yemen",
		"Flag of South Yemen.svg",
	},
	YUG = {
		name = "Yugoslavia",
		{1941, "Flag of the Kingdom of Yugoslavia.svg"},
		{1946, "Flag of the Democratic Federal Yugoslavia.svg"},
		{1992, "Flag of SFR Yugoslavia.svg"},
		{2002, "Flag of Serbia and Montenegro.svg"},
		"Flag of SFR Yugoslavia.svg",
	},
	ZAI = {
		name = "Zaire",
		"Flag of Zaire.svg",
	},
	ZAM = {
		name = "Zambia",
		{1953, "Flag of Northern Rhodesia (1939-1953).svg"},
		{1963, "Flag of the Federation of Rhodesia and Nyasaland.svg"},
		{1996, "Flag of Zambia (1964-1996).svg"},
		"Flag of Zambia.svg",
	},
	ZIM = {
		name = "Zimbabwe",
		{1953, "Flag of Southern Rhodesia.svg"},
		{1963, "Flag of the Federation of Rhodesia and Nyasaland.svg"},
		{1968, "Flag of Rhodesia (1964).svg"},
		{1978, "Flag of Rhodesia.svg"},
		{1979, "Flag of Zimbabwe Rhodesia.svg"},
		"Flag of Zimbabwe.svg",
	},
	ZZX = {
		name = "Mixed team",
		"Olympic flag.svg",
	},
}

local function strip_to_nil(text)
	-- If text is a string, return its trimmed content, or nil if empty.
	-- Otherwise return text (which may, for example, be nil).
	if type(text) == 'string' then
		text = text:match('(%S.-)%s*$')
	end
	return text
end

local function yes(parameter)
	-- Return true if parameter should be interpreted as "yes".
	return ({ y = true, yes = true, on = true })[parameter]
end

local function getFlag(args, country)
	-- Return name of flag selected from country data (nil if none defined).
	local year = tonumber(args.year)
	local games = strip_to_nil(args.games)
	if games then
		local gdata = country[games]
		if gdata then
			if type(gdata) == 'string' then
				return gdata
			end
			if gdata[year] then
				return gdata[year]
			end
		end
	end
	for _, item in ipairs(country) do
		if type(item) == 'string' then
			return item
		end
		if year and year <= item[1] then
			return item[2]
		end
	end
end

local function flagIOC(frame)
	-- Implement {{flagIOC}} which previously called this module three times.
	-- Returns <flag> <country link> <athletes>, with the third value optional
	local args = frame:getParent().args
	local code = stripToNil(args[1]) or error('flagIOC parameter 1 should be a country code')
	local games = stripToNil(args[2])
	if year then
	   local year = stripToNil(args[3])
	end
	local athletes = stripToNil(args[4])
	if year or mw.ustring.len( games ) < 13 then
	games = games and (games .. ' Όλυμπιακούς Αγώνες' .. year) or 'Ολυμπιακούς Αγώνες' else
    	games = games and (mw.ustring.sub( games, 1, mw.ustring.find( games, ' ', 1, true ) ) .. ' Όλυμπιακούς Αγώνες' .. mw.ustring.sub(games, mw.ustring.find( games, ' ', 1, true ) + 1)) or 'Ολυμπιακούς Αγώνες'
	end
	local parms = {
		alias = code,
		fullName = games,
	}
	local fullName = countryAlias(parms)
	parms.flag = true
	return (('[[File:{flag}|22x20px|border|alt=|link=]]&nbsp;[[{name} στους {games}|{name}]]{athletes}')
		:gsub('{(%w+)}', {
			athletes = athletes and
				('&nbsp;<span style="font-size:90%;">(' .. athletes .. ')</span>') or
				'',
			flag = countryAlias(parms),
			games = games,
			name = fullName,
		}))
end

local function main(frame)
	local args = frame.args
	local alias = args.alias
	local country = countries[alias]
	local function quit(message)
		if args.error then
			return args.error
		end
		error(message)
	end
	if not country then
		return quit('Invalid country alias: ' .. tostring(alias))
	end
	if yes(args.flag) then
		return getFlag(args, country) or quit('No flag defined for ' .. alias)
	else
		return country.name or quit('No name defined for ' .. alias)
	end
end

return { main = main }