# Copyright 2014 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:
#  cldrVersion=25
#  date=$Date: 2014-03-01 06:57:43 +0100 (Sat, 01 Mar 2014) $
#  number=$Revision: 9852 $
#  type=br
AED = dirham EAU
AFN = afghani Afghanistan||0
ALL = lek Albania||0
AMD = dram Armenia||0
ANG = florin Antilhez nederlandat
AOA = kwanza Angola
ARS = peso Arcʼhantina
AUD = dollar Aostralia|$
AWG = florin Aruba
AZM = manat Azerbaidjan (1993–2006)|||1
AZN = manat Azerbaidjan
BAM = mark kemmadus Bosnia ha Herzegovina
BBD = dollar Barbados
BDT = taka Bangladesh|৳
BGN = lev Bulgaria
BHD = dinar Bahrein||3
BIF = lur Burundi||0
BMD = dollar Bermuda|$
BND = dollar Brunei
BOB = boliviano Bolivia
BRL = real Brazil|R$
BSD = dollar Bahamas|$
BTN = ngultrum Bhoutan
BWP = pula Botswana
BYR = roubl Belarus||0
BZD = dollar Belize|$
CAD = dollar Kanada|CA$
CDF = lur Kongo
CHF = lur Suis
CLP = peso Chile|$|0
CNY = yuan Sina|¥
COP = peso Kolombia||0
CRC = colón Costa Rica||0
CUC = peso kemmadus Kuba
CUP = peso Kuba|$
CVE = escudo Kab Glas
CZK = kurunenn Tchek
DJF = lur Djibouti||0
DKK = kurunenn Danmark
DOP = peso Dominikan|$
DZD = dinar Aljeria
EEK = kurunenn Estonia|||1
EGP = lur Egipt
ERN = nakfa Eritrea
ETB = birr Etiopia
EUR = euro|€
FJD = dollar Fidji
FKP = lur Inizi Falkland
FRF = lur gall|||1
GBP = lur sterling Breizh-Veur|£
GEL = lari Jorjia
GHS = cedi Ghana
GIP = lur Jibraltar|£
GMD = dalasi Gambia
GNF = lur Ginea||0
GTQ = quetzal Guatemala
GYD = dollar Guyana||0
HKD = dollar Hong Kong|$
HNL = lempira Honduras
HRK = kuna Kroatia
HTG = gourde Haiti
HUF = forint Hungaria||0
IDR = roupi Indonezia||0
ILS = shekel nevez Israel|₪
INR = roupi India|Rs.
IQD = dinar Iraq||0
IRR = rial Iran||0
ISK = kurunenn Island||0
ITL = lur Italia||0|1
JMD = dollar Jamaika
JOD = dinar Jordania||3
JPY = yen Japan|¥|0
KES = shilling Kenya
KGS = som Kyrgyzstan
KHR = riel Kambodja
KMF = lur Komorez||0
KPW = won Korea an Norzh||0
KRW = won Korea ar Su|₩|0
KWD = dinar Koweit||3
KYD = dollar Inizi Cayman|$
KZT = tenge Kazakstan|₸
LAK = kip Laos||0
LBP = lur Liban||0
LKR = roupi Sri Lanka
LRD = dollar Liberia
LSL = loti Lesotho
LTL = litas Lituania
LUF = lur Luksembourg||0|1
LVL = lats Latvia|||1
LYD = dinar Libia||3
MAD = dirham Maroko
MAF = lur Maroko|||1
MCF = lur Monaco|||1
MDL = leu Moldova
MGA = ariary Madagaskar||0
MKD = denar Makedonia
MLF = lur Mali|||1
MMK = kyat Myanmar||0
MNT = tugrik Mongolia||0
MOP = pataca Macau
MRO = ouguiya Maouritania||0
MUR = roupi Moris||0
MVR = rufiyaa Maldivez
MWK = kwacha Malawi
MXN = peso Mecʼhiko|$
MYR = ringgit Malaysia
MZM = metical Mozambik (1980–2006)|||1
MZN = metical Mozambik
NAD = dollar Namibia|$
NGN = naira Nigeria
NIO = cordoba Nicaragua
NOK = kurunenn Norvegia
NPR = roupi Nepal
NZD = dollar Zeland-Nevez|$
OMR = rial Oman||3
PAB = balboa Panamá
PEN = nuevo sol Perou
PGK = kina Papoua Ginea-Nevez
PHP = peso Filipinez
PKR = roupi Pakistan||0
PLN = zloty Polonia
PYG = guarani Paraguay|₲|0
QAR = rial Qatar
ROL = leu Roumania (1952–2006)|||1
RON = leu Roumania
RSD = dinar Serbia||0
RUB = roubl Rusia
RWF = lur Rwanda||0
SAR = riyal Arabia Saoudat
SBD = dollar Inizi Salomon|$
SCR = roupi Sechelez
SDG = lur Soudan
SEK = kurunenn Sveden
SGD = dollar Singapour|$
SHP = lur Saint Helena
SKK = kurunenn Slovakia|||1
SLL = leone Sierra Leone||0
SOS = shilling Somalia||0
SRD = dollar Surinam
SSP = lur Su Soudan|£
STD = dobra São Tomé ha Príncipe||0
SUR = roubl soviedel|||1
SVC = colón Salvador|||1
SYP = lur Siria||0
SZL = lilangeni Swaziland
THB = baht Thailand|฿
TJR = roubl Tadjikistan|||1
TJS = somoni Tadjikistan
TMM = manat Turkmenistan (1993–2009)||0|1
TMT = manat Turkmenistan
TND = dinar Tunizia||3
TOP = paʻanga Tonga
TRY = lur Turkia
TTD = dollar Trinidad ha Tobago|$
TWD = dollar nevez Taiwan|NT$
TZS = shilling Tanzania||0
UAH = hryvnia Ukraina|₴
UGX = shilling Ouganda||0
USD = dollar SU|$
UYU = peso Uruguay
UZS = som Ouzbekistan||0
VEF = bolivar Venezuela
VND = dong Viêt Nam|₫|0
VUV = vatu Vanuatu||0
WST = tala Samoa
XAF = lur CFA BEAC|FCFA|0
XAG = arcʼhant|||1
XAU = aour|||1
XBA = unanenn kenaoz europat|||1
XBB = unanenn voneiz europat|||1
XBC = unanenn jediñ europat (XBC)|||1
XBD = unanenn jediñ europat (XBD)|||1
XCD = dollar Karib ar reter|EC$
XDR = gwirioù tennañ arbennik|||1
XFO = lur aour Frañs|||1
XFU = lur Unaniezh etrebroadel an hentoù-houarn|||1
XOF = lur CFA BCEAO|CFA|0
XPD = palladiom|||1
XPF = lur CFP|CFPF|0
XPT = platin|||1
XTS = kod moneiz amprouiñ|||1
XXX = moneiz dianav|||1
YDD = dinar Yemen|||1
YER = rial Yemen||0
ZAR = rand Suafrika
ZMK = kwacha Zambia (1968–2012)||0|1
ZMW = kwacha Zambia
ZWD = dollar Zimbabwe (1980–2008)||0|1
ZWL = dollar Zimbabwe (2009)|||1
