# 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:
#  cldrVersion=21.0
#  number=$Revision: 6546 $
#  date=$Date: 2012-02-07 13:32:35 -0500 (Tue, 07 Feb 2012) $
#  type=root

AED = Ango'otol lok' Falme za Kiarabu
AOA = Ango'otol lok' Angola
AUD = Ango'otol lok' Australia|AU$
BHD = Ango'otol lok' Bahareni||3
BIF = Ango'otol lok' Burundi||0
BWP = Ango'otol lok' Botswana
CAD = Edola lok'Kanada|CA$
CDF = Ango'otol lok' Kongo
CHF = Ango'otol lok' Uswisi||||5
CNY = Ango'otol lok' China|CN¥
CVE = Ango'otol lok' Kepuvede
DJF = Ango'otol lok' Jibuti||0
DZD = Ango'otol lok' Aljeria
EGP = Epaunt lok' Misri
ERN = Ango'otol lok' Eritrea
ETB = Ango'otol lok' Uhabeshi
EUR = Yuro|€
GBP = Epaunt lok' Uingereza|UK£
GHC = Sedi ya Ghana|||1
GMD = Dalasi ya Gambia
GNS = Ango'otol lok' Gine|||1
INR = Ango'otol lok' India|Rs.
JPY = Ango'otol lok' Kijapani|JP¥|0
KES = Ango'otol lok' Kenya
KMF = Ango'otol lok' Komoro||0
LRD = edola lok' Liberia
LSL = Ango'otol lok' Lesoto
LYD = Ango'otol lok' Libya||3
MAD = Ango'otol lok' Moroko
MGA = Ango'otol lok' Bukini||0
MRO = Ango'otol lok' Moritania||0
MUR = Ango'otol lok' Morisi||0
MWK = Ango'otol lok' Malawi
MZM = Ango'otol lok' Msumbiji|||1
NAD = Ango'otol lok' Namibia
NGN = Ango'otol lok' Nijeria
RWF = Ango'otol lok' Rwanda||0
SAR = Ango'otol lok' Saudia
SCR = Ango'otol lok' Shelisheli
SDG = Epaunt Lok' Sudan
SHP = Ango'otol lok' Santahelena
SLL = Leoni||0
SOS = Ango'otol lok' Somalia||0
STD = Ango'otol lok' Sao Tome na Principe||0
SZL = Lilangeni
TND = Ango'otol lok' Tunisia||3
TZS = Ango'otol lok' Tanzania||0
UGX = Ango'otol lok' Uganda|USh|0
USD = edola lok' Amareka|US$
XAF = Ango'otol lok' CFA BEAC|FCFA|0
XOF = Ango'otol lok' CFA BCEAO|CFA|0
ZAR = Ango'otol lok' Afrika Kusini
ZMK = Ango'otol lok' Zambia||0
ZWD = Edola lok'Zimbabwe||0|1
