# Copyright 2012 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA
ADP = Andorrskur peseti||0|1
AED = arabískt dírham
AFN = afgani||0
ALL = albanskt lek||0
AMD = armenskt dramm
ANG = hollenskt Antillugyllini
AOA = angólsk kvansa
ARA = Argentine Austral|||1
ARP = Argentískur pesi (1983–1985)|||1
ARS = argentínskur pesi
ATS = Austurrískur skildingur|||1
AUD = ástralskur dalur
AWG = arúbönsk flórína
AZN = aserskt manat
BAM = skiptanlegt Bosníu og Hersegóvínu-mark
BBD = barbadoskur dalur
BDT = bangladessk taka
BEF = Belgískur franki|||1
BGL = Lef|||1
BGN = búlgarskt lef
BHD = bareinskur denari||3
BIF = búrúndískur franki||0
BMD = Bermúdadalur
BND = brúneiskur dalur
BOB = bólivíani
BOP = Bólivískur pesi|||1
BOV = Bolivian Mvdol|||1
BRL = brasilískt ríal
BSD = Bahamadalur
BTN = bútanskt núltrum
BUK = Búrmverskt kjat|||1
BWP = botsvönsk púla
BYN = hvítrússnesk rúbla
BYR = hvítrússnesk rúbla (2000–2016)||0|1
BZD = belískur dalur
CAD = Kanadadalur
CDF = kongóskur franki
CHF = svissneskur franki
CLF = Chilean Unidades de Fomento||4|1
CLP = síleskur pesi||0
CNH = kínverskt júan (utan heimalands)|||1
CNY = kínverskt júan|CN¥
COP = kólumbískur pesi
CRC = kostarískt kólon
CSK = Tékknesk króna, eldri|||1
CUC = kúbverskur skiptanlegur pesi
CUP = kúbverskur pesi
CVE = grænhöfðeyskur skúti
CYP = Kýpverskt pund|||1
CZK = tékknesk króna
DDM = Austurþýskt mark|||1
DEM = Þýskt mark|||1
DJF = djíbútískur franki||0
DKK = dönsk króna
DOP = dóminískur pesi
DZD = alsírskur denari
ECS = Ecuador Sucre|||1
EEK = Eistnesk króna|||1
EGP = egypskt pund
ERN = erítresk nakfa
ESP = Spænskur peseti||0|1
ETB = eþíópískt birr
EUR = evra
FIM = Finnskt mark|||1
FJD = fidjeyskur dalur
FKP = falklenskt pund
FRF = Franskur franki|||1
GBP = sterlingspund
GEL = georgískur lari|₾
GHS = ganverskur sedi
GIP = Gíbraltarspund
GMD = gambískur dalasi
GNF = Gíneufranki||0
GRD = Drakma|||1
GTQ = gvatemalskt kvesal
GWE = Portúgalskur, gíneskur skúti|||1
GYD = gvæjanskur dalur
HKD = Hong Kong-dalur|HK$
HNL = hondúrsk lempíra
HRK = króatísk kúna
HTG = haítískur gúrdi
HUF = ungversk fórinta
IDR = indónesísk rúpía
IEP = Írskt pund|||1
ILP = Ísraelskt pund|||1
ILS = nýr ísraelskur sikill|₪
INR = indversk rúpía
IQD = írakskur denari||0
IRR = íranskt ríal||0
ISK = íslensk króna||0
ITL = Ítölsk líra||0|1
JMD = jamaískur dalur
JOD = jórdanskur denari||3
JPY = japanskt jen|JP¥|0
KES = kenískur skildingur
KGS = kirgiskt som
KHR = kambódískt ríal
KMF = kómoreyskur franki||0
KPW = norðurkóreskt vonn||0
KRW = suðurkóreskt vonn||0
KWD = kúveiskur denari||3
KYD = caymaneyskur dalur
KZT = kasakst tengi
LAK = laoskt kip||0
LBP = líbanskt pund||0
LKR = srílönsk rúpía
LRD = líberískur dalur
LSL = Lesotho Loti
LTL = Litháískt lít|||1
LTT = Lithuanian Talonas|||1
LUF = Lúxemborgarfranki||0|1
LVL = Lettneskt lat|||1
LVR = Lettnesk rúbla|||1
LYD = líbískur denari||3
MAD = marokkóskt dírham
MAF = Marokkóskur franki|||1
MDL = moldavískt lei
MGA = Madagaskararjari||0
MGF = Madagaskur franki||0|1
MKD = makedónskur denari
MLF = Malískur franki|||1
MMK = mjanmarskt kjat||0
MNT = mongólskur túríkur
MOP = makaósk pataka
MRO = márítönsk úgía (1973–2017)||0|1
MRU = márítönsk úgía
MTL = Meltnesk líra|||1
MTP = Maltneskt pund|||1
MUR = máritísk rúpía
MVR = maldíveysk rúpía
MWK = malavísk kvaka
MXN = mexíkóskur pesi
MXP = Mexíkóskur silfurpesi (1861–1992)|||1
MXV = Mexíkóskur pesi, UDI|||1
MYR = malasískt ringit
MZE = Mósambískur skúti|||1
MZN = mósambískt metikal
NAD = namibískur dalur
NGN = nígerísk næra
NIC = Níkarögsk kordóva (1988–1991)|||1
NIO = níkaraögsk kordóva
NLG = Hollenskt gyllini|||1
NOK = norsk króna
NPR = nepölsk rúpía
NZD = nýsjálenskur dalur
OMR = ómanskt ríal||3
PAB = balbói
PEN = perúskt sól
PGK = papúsk kína
PHP = filippseyskur pesi
PKR = pakistönsk rúpía
PLN = pólskt slot
PLZ = Slot|||1
PTE = Portúgalskur skúti|||1
PYG = paragvæskt gvaraní||0
QAR = katarskt ríal
ROL = Rúmenskt lei (1952–2006)|||1
RON = rúmenskt lei
RSD = serbneskur denari||0
RUB = rússnesk rúbla
RUR = Rússnesk rúbla (1991–1998)|||1
RWF = rúandskur franki||0
SAR = sádíarabískt ríal
SBD = salómonseyskur dalur
SCR = Seychellesrúpía
SDD = Súdanskur denari|||1
SDG = súdanskt pund
SDP = Súdanskt pund (1957–1998)|||1
SEK = sænsk króna
SGD = singapúrskur dalur
SHP = helenskt pund
SIT = Slóvenskur dalur|||1
SKK = Slóvakísk króna|||1
SLL = síerraleónsk ljóna||0
SOS = sómalískur skildingur||0
SRD = Súrínamdalur
SRG = Suriname Guilder|||1
SSP = suðursúdanskt pund
STD = Saó Tóme og Prinsípe-dóbra (1977–2017)||0|1
STN = Saó Tóme og Prinsípe-dóbra
SUR = Soviet Rouble|||1
SVC = El Salvador Colon|||1
SYP = sýrlenskt pund||0
SZL = svasílenskur lílangeni
THB = taílenskt bat
TJR = Tadsjiksk rúbla|||1
TJS = tadsjikskur sómóni
TMM = Túrkmenskt manat (1993–2009)||0|1
TMT = túrkmenskt manat
TND = túnískur denari||3
TOP = Tongapanga
TPE = Tímorskur skúti|||1
TRL = Tyrknesk líra (1922–2005)||0|1
TRY = tyrknesk líra|TL
TTD = Trínidad og Tóbagó-dalur
TWD = taívanskur dalur
TZS = tansanískur skildingur
UAH = úkraínsk hrinja
UAK = Ukrainian Karbovanetz|||1
UGX = úgandskur skildingur||0
USD = Bandaríkjadalur
USN = Bandaríkjadalur (næsta dag)|||1
USS = Bandaríkjadalur (sama dag)|||1
UYU = úrúgvæskur pesi
UZS = úsbekskt súm
VEB = Bolívar í Venesúela (1871–2008)|||1
VEF = venesúelskur bólívari (2008–2018)|||1
VES = venesúelskur bólívari
VND = víetnamskt dong||0
VUV = vanúatúskt vatú||0
WST = Samóatala
XAF = miðafrískur franki|FCFA|0
XAG = unse silfur|||1
XAU = unse gull|||1
XCD = austurkarabískur dalur|EC$
XDR = Sérstök dráttarréttindi|||1
XFO = Franskur gullfranki|||1
XFU = Franskur franki, UIC|||1
XOF = vesturafrískur franki|CFA|0
XPD = unse palladín|||1
XPF = pólinesískur franki|CFPF|0
XPT = unse platína|||1
XXX = óþekktur gjaldmiðill|¤||1
YDD = Jemenskur denari|||1
YER = jemenskt ríal||0
YUM = Júgóslavneskur denari|||1
ZAL = Rand (viðskipta)|||1
ZAR = suðurafrískt rand
ZMK = Zambian Kwacha (1968–2012)||0|1
ZMW = sambísk kvaka
ZWD = Simbabveskur dalur||0|1
