# 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-02-13 05:14:13 +0100 (Thu, 13 Feb 2014) $
#  number=$Revision: 9728 $
#  type=root
AED = adrim n limarat
AOA = kwanza n angula
AUD = adular n ustralya|$
BHD = adinar n bḥrayn||3
BIF = frank n burundi||0
BWP = abula n butswana
CAD = adular n kanada|CA$
CDF = frank n kungu
CHF = afrank n swisra
CNY = ayan n ccinwa|¥
CVE = iskudu n kabbirdi
DJF = frank n djibuti||0
DZD = adinar n dzayr
EGP = ajnih n miṣṛ
ERN = nafka n iritirya
ETB = bir n ityubya
EUR = uru|€
GBP = ajnih astrlini n nngliz|£
GHC = sidi n ɣana|||1
GMD = dalasi n gambya
GNS = frank n ɣinya|||1
INR = arubi n lhind|Rs.
JPY = ayan n lyaban|¥|0
KES = acilin n kinya
KMF = frank n qumuṛ||0
LRD = adular n libirya
LSL = luti n liṣuṭu
LYD = adinar n libya||3
MAD = adrim n lmɣrib
MGA = frank n madaɣacqar||0
MRO = uqiyya n muṛiṭanya||0
MUR = arubi n muris||0
MWK = kwaca n malawi
MZM = amitikl n muznbiq|||1
NAD = adular n namibya|$
NGN = nayra n nijirya
RWF = afrank n rwanda||0
SAR = aryal n ssaɛudiya
SCR = arubi n ssicil
SDG = adinar n ssudan
SDP = ajnih n ssudan|||1
SHP = ajnih n santilin
SLL = liyun||0
SOS = acilin n ṣṣumal||0
STD = adubra n sanṭumi||0
SZL = lilanjini
TND = adinar n tuns||3
TZS = acilin n ṭanẓanya||0
UGX = acilin n uɣanda||0
USD = adular n iwunak imunn|$
XAF = frank ṣifa|FCFA|0
XOF = frank ṣifa bisaw|CFA|0
ZAR = arand n afriqya n iffus
ZMK = akwaca n zambya (1968–2012)||0|1
ZMW = akwaca n zambya
ZWD = adular n zimbabwi||0|1
