# 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: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
#  number=$Revision: 9287 $
#  type=seh
AED = Dirém dos Emirados Árabes Unidos
AOA = Cuanza angolano
AUD = Dólar australiano|$
BHD = Dinar bareinita||3
BIF = Franco do Burundi||0
BWP = Pula botsuanesa
CAD = Dólar canadense|CA$
CDF = Franco congolês
CHF = Franco suíço
CNY = Yuan Renminbi chinês|¥
CVE = Escudo cabo-verdiano
DJF = Franco do Djibuti||0
DZD = Dinar argelino
EGP = Libra egípcia
ERN = Nakfa da Eritréia
ETB = Birr etíope
EUR = Euro|€
GBP = Libra esterlina britânica|£
GHC = Cedi de Gana (1979–2007)|||1
GMD = Dalasi de Gâmbia
GNS = Syli da Guiné|||1
INR = Rúpia indiana|Rs.
JPY = Iene japonês|¥|0
KES = Xelim queniano
KMF = Franco de Comores||0
LRD = Dólar liberiano
LSL = Loti do Lesoto
LYD = Dinar líbio||3
MAD = Dirém marroquino
MGA = Franco de Madagascar||0
MRO = Ouguiya da Mauritânia||0
MUR = Rupia de Maurício||0
MWK = Cuacha do Maláui
MZM = Metical antigo de Moçambique|||1
MZN = Metical de Moçambique|MTn
NAD = Dólar da Namíbia|$
NGN = Naira nigeriana
RWF = Franco ruandês||0
SAR = Rial saudita
SCR = Rupia das Seychelles
SDG = Dinar sudanês
SDP = Libra sudanesa antiga|||1
SHP = Libra de Santa Helena
SLL = Leone de Serra Leoa||0
SOS = Xelim somali||0
STD = Dobra de São Tomé e Príncipe||0
SZL = Lilangeni da Suazilândia
TND = Dinar tunisiano||3
TZS = Xelim da Tanzânia||0
UGX = Xelim ugandense (1966–1987)||0
USD = Dólar norte-americano|$
XAF = Franco CFA BEAC|FCFA|0
XOF = Franco CFA BCEAO|CFA|0
ZAR = Rand sul-africano
ZMK = Cuacha zambiano (1968–2012)||0|1
ZMW = Cuacha zambiano
ZWD = Dólar do Zimbábue||0|1
