# 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
AED = Dirham dos Emirados Árabes Unidos
AFA = Afeghani (1927–2002)|||1
AFN = Afegani do Afeganistão||0
ALL = lek albanês||0
AMD = Dram arménio||0
ARS = peso argentino
AWG = florim de Aruba
AZN = Manat do Azerbaijão
BAD = Dinar da Bósnia-Herzegóvina|||1
BAM = marco bósnio-herzegóvino conversível
BBD = dólar barbadense
BDT = Taka de Bangladesh
BEC = Franco belga (convertível)|||1
BGN = lev búlgaro
BHD = Dinar baremita||3
BMD = dólar bermudense
BND = Dólar bruneíno
BOB = boliviano
BRL = real brasileiro|R$
BSD = dólar das Bahamas
BTN = Ngultrum do Butão
BWP = Pula de Botswana
BYB = Rublo novo bielorusso (1994–1999)|||1
BYN = rublo bielorrusso
BZD = dólar belizense
CAD = dólar canadiano|CA$
CHF = franco suíço
CLP = peso chileno||0
CNH = yuan offshore|||1
CNY = yuan|CN¥
COP = peso colombiano||0
CRC = colon costa-riquenho
CUC = peso cubano conversível
CUP = peso cubano
CVE = escudo cabo-verdiano|​
CYP = Libra de Chipre|||1
CZK = coroa checa
DJF = Franco jibutiano||0
DKK = coroa dinamarquesa
DZD = dinar argelino
ECV = Unidad de Valor Constante (UVC) do Equador|||1
EGP = libra egípcia
EUR = euro|€
FJD = Dólar de Fiji
FKP = libra das Ilhas Falkland
GBP = libra esterlina britânica|£
GHC = Cedi do Gana|||1
GHS = Cedi de Gana
GIP = libra de Gibraltar
GMD = Dalasi da Gâmbia
GNF = Franco guineense||0
GTQ = quetzal da Guatemala
GYD = dólar da Guiana||0
HNL = lempira das Honduras
HRK = kuna croata
HUF = forint húngaro
ISK = coroa islandesa||0
KGS = Som do Quirguistão
KYD = Dólar das Ilhas Caimão
KZT = Tenge do Cazaquistão
LAK = Kip de Laos||0
LKR = Rupia do Sri Lanka
LTL = Litas da Lituânia|||1
LVL = Lats da Letónia|||1
LYD = dinar líbio||3
MAD = dirham marroquino
MDL = leu moldavo
MGA = Ariari de Madagáscar||0
MKD = dinar macedónio
MLF = Franco do Mali|||1
MMK = Kyat de Mianmar||0
MNT = Tugrik da Mongólia||0
MOP = Pataca de Macau
MRO = Ouguiya da Mauritânia||0
MVR = Rupia das Ilhas Maldivas
MWK = Kwacha do Malawi
MXN = peso mexicano|MX$
MXP = Peso Plata mexicano (1861–1992)|||1
MXV = Unidad de Inversion (UDI) mexicana|||1
MZN = Metical de Moçambique
NAD = Dólar da Namíbia
NIC = Córdoba nicaraguano (1988–1991)|||1
NIO = córdoba nicaraguano
NOK = coroa norueguesa
OMR = Rial de Omã||3
PAB = balboa do Panamá
PEN = sol peruano
PGK = Kina da Papua-Nova Guiné
PLN = zloti polaco
PLZ = Zloti polaco (1950–1995)|||1
PTE = Escudo português|​PTE||1
PYG = guarani paraguaio||0
QAR = Rial do Catar
RON = leu romeno
RSD = dinar sérvio||0
RUB = rublo russo
SAR = Rial saudita
SDG = libra sudanesa
SEK = coroa sueca
SGD = Dólar de Singapura
SOS = Xelim somali||0
SRD = dólar do Suriname
SZL = Lilangeni da Suazilândia
THB = Baht da Tailândia|฿
TJS = Somoni do Tajaquistão
TMT = Manat do Turquemenistão
TND = dinar tunisino||3
TOP = Paʻanga de Tonga
TTD = Dólar de Trindade e Tobago
UAH = hryvnia ucraniano
USD = dólar dos Estados Unidos|US$
UYU = peso uruguaio
UZS = Som do Uzbequistão||0
VEF = bolívar
VUV = Vatu de Vanuatu||0
XAF = Franco CFA (BEAC)|FCFA|0
XCD = Dólar das Caraíbas Orientais|EC$
XEU = Unidade da Moeda Europeia|||1
XOF = franco CFA (BCEAO)|CFA|0
XXX = moeda desconhecida|||1
YUD = Dinar forte jugoslavo|||1
YUM = Super Dinar jugoslavo|||1
YUN = Dinar conversível jugoslavo|||1
ZMK = Kwacha zambiano (1968–2012)||0|1
ZWD = Dólar do Zimbabwe||0|1
