# 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
AED = Diramu re United Arab Emirates
AOA = Kwanza ye Angola
AUD = Dora re Australia|A$
BHD = Dhinari re Bhahareni||3
BIF = Furenki re Bhurundi||0
BWP = Pura re Botswana
CAD = Dora re Kanada|CA$
CDF = Furenki re Kongo
CHF = Furenki re Swisi
CNY = Yuan Renminbi ye China|CN¥
CVE = Dhora re Escudo
DJF = Furenki re Jibhuti||0
DZD = Dhinari re Aljeria
EGP = Paundi re Ijipita
ERN = Nakfa re Eritrea
ETB = Dhora re Etiopia
EUR = Yuro|€
GBP = Paundi ye Bhiriteni|£
GHC = Sedi ye Ghana|||1
GMD = Dalasi ye Gambia
GNS = Furenki re Gine|||1
INR = Rupe re India|₹
JPY = Yeni ye Japani|JP¥|0
KES = Shiringi ye Kenya
KMF = Furenki re Komoro||0
LRD = Dora re Liberia
LSL = Loti ye Lesoto
LYD = Dinari re Libya||3
MAD = Dirham ye Moroko
MGA = Furenki re Malagasi||0
MRO = Ugwiya ye Moritania (1973–2017)||0|1
MRU = Ugwiya ye Moritania
MUR = Rupi ye Morishasi
MWK = Kwacha ye Malawi
MZM = Metika ye Mozambiki|||1
NAD = Dora re Namibia
NGN = Naira ye Nijeria
RWF = Furenki re Ruwanda||0
SAR = Riyali re Saudi
SCR = Rupi re Seyisheri
SDG = Dinari re Sudani
SDP = Paundi re Sudani|||1
SHP = Paundi re Senti Helena
SLL = Leoni||0
SOS = Shiringi re Somalia||0
STD = Dobra re Sao Tome ne Principe (1977–2017)||0|1
STN = Dobra re Sao Tome ne Principe
SZL = Lilangeni
TND = Dinari re Tunisia||3
TZS = Shiringi re Tanzania
UGX = Shiringi re Uganda||0
USD = Dora re Amerika|US$
XAF = Furenki CFA BEAC|FCFA|0
XOF = Furenki CFA BCEAO|CFA|0
ZAR = Randi
ZMK = Kwacha ye Zambia (1968–2012)||0|1
ZMW = Kwacha ye Zambia
ZWD = Dora re Zimbabwe||0|1
