# 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 = peseta andorrana||0|1
AED = Dirham dos Emiratos Árabes Unidos
AFN = Afgani afgano||0
ALL = Lek albanés||0
AMD = Dram armenio||0
ANG = Florín das Antillas Neerlandesas
AOA = Kwanza angoleño
ARP = Peso arxentino (1983–1985)|||1
ARS = Peso arxentino
AUD = Dólar australiano|A$
AWG = Florín arubeño
AZN = Manat acerbaixano
BAM = Marco convertible de Bosnia e Hercegovina
BBD = Dólar de Barbados
BDT = Taka de Bangladesh
BEC = Franco belga (convertible)|||1
BEF = Franco belga|||1
BEL = Franco belga (financeiro)|||1
BGN = Lev búlgaro
BHD = Dinar de Baréin||3
BIF = Franco burundés||0
BMD = Dólar das Bemudas
BND = Dólar de Brunei
BOB = Boliviano
BOP = Peso boliviano|||1
BOV = MVDOL boliviano|||1
BRB = Cruzeiro novo brasileiro (1967–1986)|||1
BRC = Cruzado brasileiro|||1
BRE = Cruzeiro brasileiro (1990–1993)|||1
BRL = Real brasileiro|R$
BRN = Cruzado novo brasileiro|||1
BRR = Cruzeiro brasileiro|||1
BSD = Dólar das Bahamas
BTN = Ngultrum butanés
BWP = Pula botsuano
BYR = Rublo bielorruso||0
BZD = Dólar beliceño
CAD = Dólar canadiano|$CA
CDF = Franco congolés
CHF = Franco suízo
CLF = Unidades de fomento chilenas||0|1
CLP = Peso chileno||0
CNY = Iuán chinés|CN¥
COP = Peso colombiano||0
CRC = Colón costarricense||0
CUC = Peso cubano convertible
CUP = Peso cubano
CVE = Escudo caboverdiano
CZK = Coroa checa
DEM = Marco alemán|||1
DJF = Franco xibutiano||0
DKK = Coroa dinamarquesa
DOP = Peso dominicano
DZD = Dinar alxeriano
ECS = Sucre ecuatoriano|||1
ECV = Unidade de valor constante ecuatoriana|||1
EGP = Libra exipcia
ERN = Nakfa eritreo
ESA = Peseta española (conta A)|||1
ESB = Peseta española (conta convertible)|||1
ESP = Peseta española|₧|0|1
ETB = Birr etíope
EUR = Euro|€
FJD = Dólar fixiano
FKP = Libra das Malvinas
FRF = Franco francés|||1
GBP = Libra esterlina|£
GEL = Lari xeorxiano
GHS = Cedi de Gana
GIP = Libra de Xibraltar
GMD = Dalasi gambiano
GNF = Franco guineano||0
GNS = Syli guineano|||1
GQE = Ekwele guineana|||1
GRD = Dracma grego|||1
GTQ = Quetzal guatemalteco
GYD = Dólar güianés||0
HKD = Dólar de Hong Kong|$HK
HNL = Lempira hondureño
HRK = Kuna croata
HTG = Gourde haitiano
HUF = Florín húngaro||0
IDR = Rupia indonesia||0
IEP = Libra irlandesa|||1
ILS = Novo shequel israelí|₪
INR = Rupia india|₹
IQD = Dinar iraquí||0
IRR = Rial iraniano||0
ISK = Coroa islandesa||0
ITL = Lira italiana||0|1
JMD = Dólar xamaicano
JOD = Dinar xordano||3
JPY = Ien xaponés|¥JP|0
KES = Chelín kenyano
KGS = Som quirguizo
KHR = Riel camboxano
KMF = Franco comoriano||0
KPW = Won norcoreano||0
KRW = Won surcoreano|₩|0
KWD = Dinar kuwaití||3
KYD = Dólar das Illas Caimán
KZT = Tenge casaco
LAK = Kip laosiano||0
LBP = Libra libanesa||0
LKR = Rupia de Sri Lanka
LRD = Dólar liberiano
LSL = Loti de Lesoto
LTL = Litas lituana
LUC = Franco convertible luxemburgués|||1
LUF = Franco luxemburgués||0|1
LUL = Franco financeiro luxemburgués|||1
LVL = Lats letón|||1
LYD = Dinar libio||3
MAD = Dirham marroquí
MAF = Franco marroquí|||1
MDL = Leu moldavo
MGA = Ariary malgaxe||0
MKD = Dinar macedonio
MMK = Kiat birmano||0
MNT = Tugrik mongol||0
MOP = Pataca de Macau
MRO = Ouguiya mauritano||0
MUR = Rupia de Mauricio||0
MVR = Rupia maldiva
MWK = Kwacha de Malaui
MXN = Peso mexicano|$MX
MXP = Peso de prata mexicano (1861–1992)|||1
MXV = Unidade de inversión mexicana|||1
MYR = Ringgit malaio
MZN = Metical de Mozambique
NAD = Dólar namibio
NGN = Naira nixeriano
NIC = Córdoba nicaragüense|||1
NIO = Córdoba de ouro nicaragüense
NLG = Florín holandés|||1
NOK = Coroa norueguesa
NPR = Rupia nepalesa
NZD = Dólar neozelandés|NZ$
OMR = Rial omaní||3
PAB = Balboa panameño
PEI = Inti peruano|||1
PEN = Sol novo peruano
PES = Sol peruano|||1
PGK = Kina de Papúa Nova Guinea
PHP = Peso filipino
PKR = Rupia paquistaní||0
PLN = Zloty polaco
PTE = Escudo portugués|||1
PYG = Guaraní paraguaio||0
QAR = Rial qatarí
RON = Leu romanés
RSD = Dinar serbio||0
RUB = Rublo ruso
RUR = Rublo ruso (1991–1998)|||1
RWF = Franco ruandés||0
SAR = Rial saudita
SBD = Dólar das Illas Salomón
SCR = Rupia de Seixeles
SDG = Libra sudanesa
SEK = Coroa sueca
SGD = Dólar de Singapur
SHP = Libra de Santa Helena
SLL = Leone de Serra Leoa||0
SOS = Chelín somalí||0
SRD = Dólar surinamés
SSP = Libra sursudanesa
STD = Dobra de San Tomé e Príncipe||0
SUR = Rublo soviético|||1
SVC = Colón salvadoreño|||1
SYP = Libra siria||0
SZL = Lilanxeni de Suacilandia
THB = Baht tailandés|฿
TJS = Somoni taxico
TMT = Manat turcomano
TND = Dinar tunesino||3
TOP = Paʻanga de Tonga
TRY = Lira turca|TL
TTD = Dólar de Trinidade e Tobago
TWD = Novo dólar taiwanés|NT$
TZS = Chelín tanzano||0
UAH = Grivna ucraína
UGX = Chelín ugandés||0
USD = Dólar estadounidense|$
UYI = Peso en unidades indexadas uruguaio||0|1
UYP = Peso uruguaio (1975–1993)|||1
UYU = Peso uruguaio
UZS = Som usbeco||0
VEB = Bolívar venezolano (1871–2008)|||1
VEF = Bolívar venezolano
VND = Dong vietnamita|₫|0
VUV = Vatu vanuatense||0
WST = Tala samoano
XAF = Franco CFA BEAC|FCFA|0
XAG = Prata|||1
XAU = Ouro|||1
XCD = Dólar Caribe-Leste|EC$
XOF = Franco CFA BCEAO|CFA|0
XPD = Paladio|||1
XPF = Franco CFP|CFPF|0
XPT = Platino|||1
XXX = Unidade monetaria descoñecida ou non válida|||1
YER = Rial iemení||0
ZAR = Rand sudafricano
ZMK = Kwacha zambiano (1968–2012)||0|1
ZMW = Kwacha zambiano
