# 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 = United Arab Emirates Dirham
AOA = Angolan Kwanzab
AUD = Australian Dollari|A$
BHD = Bahrain Dinar||3
BIF = Burundi Franc||0
BWP = Botswanan Pulab
CAD = Canadian Dollari|CA$
CDF = Congolese Franc
CHF = Swiss Franci
CNY = Chinese Yuan Renminbi|CN¥
CVE = Escudo Caboverdiano
DJF = Djibouti Franc||0
DZD = Algerian Dinar
EGP = Egytian Ponds
ERN = Eritreian Nakfa
ETB = Ethiopian Birr
EUR = Eurob|€
GBP = British Ponds|£
GHC = Ghana Cedi|||1
GMD = Gambia Dalasi
GNS = Guinea Franc|||1
INR = Indian Rupee|₹
JPY = Japanese Yenni|JP¥|0
KES = Kenyan Shilling
KMF = Comorian Franc||0
LRD = Liberian Dollar
LSL = Lesotho Loti
LYD = Libyan Dinar||3
MAD = Moroccan Dirham
MGA = Malagasy Franc||0
MRO = Mauritania Ouguiya (1973–2017)||0|1
MRU = Mauritania Ouguiya
MUR = Mauritius Rupeeb
MWK = Malawian Kwachab
MZM = Mozambique Metical|||1
NAD = Namibia Dollari|$
NGN = Nigerian Naira
RWF = Rwanda Franci||0
SAR = Saudi Riyal
SCR = Seychelles Rupee
SDG = Sudanese Dinar
SDP = Sudanese Ponds|||1
SHP = St Helena Ponds
SLL = Leone||0
SOS = Somali Shillings||0
STD = Sao Tome and Principe Dobra (1977–2017)||0|1
STN = Sao Tome and Principe Dobra
SZL = Lilangeni
TND = Tunisian Dinar||3
TZS = Tanzanian Shillings
UGX = Ugandan Shillings||0
USD = US Dollari|US$
XAF = CFA Franc BEAC|FCFA|0
XOF = CFA Franc BCEAO|CFA|0
ZAR = South African Randi
ZMK = Zambian Kwachab (1968–2012)||0|1
ZMW = Zambian Kwachab
ZWD = Zimbabwe Dollari||0|1
