#
# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
#

#
# COPYRIGHT AND PERMISSION NOTICE
#
# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved.
# Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of the Unicode data files and any associated documentation (the "Data
# Files") or Unicode software and any associated documentation (the
# "Software") to deal in the Data Files or Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, and/or sell copies of the Data Files or Software, and
# to permit persons to whom the Data Files or Software are furnished to do
# so, provided that (a) the above copyright notice(s) and this permission
# notice appear with all copies of the Data Files or Software, (b) both the
# above copyright notice(s) and this permission notice appear in associated
# documentation, and (c) there is clear notice in each modified Data File or
# in the Software as well as in the documentation associated with the Data
# File(s) or Software that the data or software has been modified.
#
# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THE DATA FILES OR SOFTWARE.
#
# Except as contained in this notice, the name of a copyright holder shall not
# be used in advertising or otherwise to promote the sale, use or other
# dealings in these Data Files or Software without prior written
# authorization of the copyright holder.
#
 
# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!

adp=peseta andorrana
aed=dirham de los Emiratos \u00c1rabes Unidos
afa=afgani (1927-2002)
afn=afgani
all=lek alban\u00e9s
amd=dram armenio
ang=flor\u00edn de las Antillas Neerlandesas
aoa=kwanza angole\u00f1o
ars=peso argentino
ats=chel\u00edn austriaco
aud=d\u00f3lar australiano
awg=flor\u00edn de Aruba
azm=manat azer\u00ed
bam=marco convertible de Bosnia-Herzegovina
bbd=d\u00f3lar de Barbados
bdt=taka de Bangladesh
bef=franco belga
bgl=lev fuerte b\u00falgaro
bgn=nuevo lev b\u00falgaro
bhd=dinar bahrein\u00ed
bif=franco de Burundi
bmd=d\u00f3lar de Bermudas
bnd=d\u00f3lar de Brun\u00e9i
bob=boliviano
bov=MVDOL boliviano
brl=real brasile\u00f1o
bsd=d\u00f3lar de las Bahamas
btn=ngultrum butan\u00e9s
bwp=pula botsuano
byb=nuevo rublo bielorruso (1994-1999)
byr=rublo bielorruso
bzd=d\u00f3lar de Belice
cad=d\u00f3lar canadiense
cdf=franco congole\u00f1o
chf=franco suizo
clf=unidad de fomento chilena
clp=peso chileno
cny=yuan renminbi chino
cop=peso colombiano
crc=col\u00f3n costarricense
csd=dinar serbio
cup=peso cubano
cve=escudo de Cabo Verde
cyp=libra chipriota
czk=corona checa
dem=marco alem\u00e1n
djf=franco de Yibuti
dkk=corona danesa
dop=peso dominicano
dzd=dinar argelino
eek=corona estonia
egp=libra egipcia
ern=nakfa eritreo
esp=peseta espa\u00f1ola
etb=birr et\u00edope
eur=euro
fim=marco finland\u00e9s
fjd=d\u00f3lar de las Islas Fiyi
fkp=libra de las Islas Malvinas
frf=franco franc\u00e9s
gbp=libra esterlina brit\u00e1nica
gel=lari georgiano
ghc=cedi ghan\u00e9s
gip=libra de Gibraltar
gmd=dalasi gambiano
gnf=franco guineano
grd=dracma griego
gtq=quetzal guatemalteco
gwp=peso de Guinea-Biss\u00e1u
gyd=d\u00f3lar guyan\u00e9s
hkd=d\u00f3lar de Hong Kong
hnl=lempira hondure\u00f1o
hrk=kuna croata
htg=gourde haitiano
huf=flor\u00edn h\u00fangaro
idr=rupia indonesia
iep=libra irlandesa
ils=nuevo sheqel israel\u00ed
inr=rupia india
iqd=dinar iraqu\u00ed
irr=rial iran\u00ed
isk=corona islandesa
itl=lira italiana
jmd=d\u00f3lar de Jamaica
jod=dinar jordano
jpy=yen japon\u00e9s
kes=chel\u00edn keniata
kgs=som kirgu\u00eds
khr=riel camboyano
kmf=franco comorense
kpw=won norcoreano
krw=won surcoreano
kwd=dinar kuwait\u00ed
kyd=d\u00f3lar de las Islas Caim\u00e1n
kzt=tenge kazako
lak=kip laosiano
lbp=libra libanesa
lkr=rupia de Sri Lanka
lrd=d\u00f3lar liberiano
lsl=loti lesothense
ltl=litas lituano
luf=franco luxemburgu\u00e9s
lvl=lats let\u00f3n
lyd=dinar libio
mad=dirham marroqu\u00ed
mdl=leu moldavo
mga=ariary malgache
mgf=franco malgache
mkd=dinar macedonio
mmk=kyat de Myanmar
mnt=tugrik mongol
mop=pataca de Macao
mro=ouguiya mauritano
mtl=lira maltesa
mur=rupia mauriciana
mvr=rufiyaa de Maldivas
mwk=kwacha de Malawi
mxn=peso mexicano
mxv=unidad de inversi\u00f3n (UDI) mexicana
myr=ringgit malasio
mzm=metical mozambique\u00f1o
nad=d\u00f3lar de Namibia
ngn=naira nigeriano
nio=c\u00f3rdoba oro nicarag\u00fcense
nlg=flor\u00edn neerland\u00e9s
nok=corona noruega
npr=rupia nepalesa
nzd=d\u00f3lar neozeland\u00e9s
omr=rial oman\u00ed
pab=balboa paname\u00f1o
pen=nuevo sol peruano
pgk=kina de Pap\u00faa Nueva Guinea
php=peso filipino
pkr=rupia pakistan\u00ed
pln=zloty polaco
pte=escudo portugu\u00e9s
pyg=guaran\u00ed paraguayo
qar=riyal de Qatar
rol=antiguo leu rumano
ron=leu rumano
rub=rublo ruso
rur=rublo ruso (1991-1998)
rwf=franco ruand\u00e9s
sar=riyal saud\u00ed
sbd=d\u00f3lar de las Islas Salom\u00f3n
scr=rupia de Seychelles
sdd=dinar sudan\u00e9s
sek=corona sueca
sgd=d\u00f3lar singapurense
shp=libra de Santa Elena
sit=t\u00f3lar esloveno
skk=corona eslovaca
sll=leone de Sierra Leona
sos=chel\u00edn somal\u00ed
srd=d\u00f3lar surinam\u00e9s
srg=flor\u00edn surinam\u00e9s
std=dobra de Santo Tom\u00e9 y Pr\u00edncipe
svc=col\u00f3n salvadore\u00f1o
syp=libra siria
szl=lilangeni suazi
thb=baht tailand\u00e9s
tjs=somoni tayiko
tmm=manat turcomano
tnd=dinar tunecino
top=pa\u02bbanga tongano
tpe=escudo timorense
trl=lira turca
try=nueva lira turca
ttd=d\u00f3lar de Trinidad y Tobago
twd=nuevo d\u00f3lar taiwan\u00e9s
tzs=chel\u00edn tanzano
uah=grivna ucraniana
ugx=chel\u00edn ugand\u00e9s
usd=d\u00f3lar estadounidense
usn=d\u00f3lar estadounidense (d\u00eda siguiente)
uss=d\u00f3lar estadounidense (mismo d\u00eda)
uyu=peso uruguayo
uzs=sum uzbeko
veb=bol\u00edvar venezolano
vnd=dong vietnamita
vuv=vatu vanuatuense
wst=tala samoano
xaf=franco CFA BEAC
xag=plata
xau=oro
xba=unidad compuesta europea
xbb=unidad monetaria europea
xbc=unidad de cuenta europea (XBC)
xbd=unidad de cuenta europea (XBD)
xcd=d\u00f3lar del Caribe Oriental
xdr=derechos especiales de giro
xfo=franco oro franc\u00e9s
xfu=franco UIC franc\u00e9s
xof=franco CFA BCEAO
xpd=paladio
xpf=franco CFP
xpt=platino
xts=c\u00f3digo reservado para pruebas
xxx=Sin divisa
yer=rial yemen\u00ed
yum=super dinar yugoslavo
zar=rand sudafricano
zmk=kwacha zambiano
zwd=d\u00f3lar de Zimbabue
