# 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 = Iropiyianí ɔ́ɔ̄ lmarabu
AOA = Iropiyianí e Angola
AUD = Iropiyianí e Austria|A$
BHD = Iropiyianí e Bahareini||3
BIF = Iropiyianí e Burundi||0
BWP = Iropiyianí e Botswana
CAD = Iropiyianí e Kanada|CA$
CDF = Iropiyianí e Kongo
CHF = Iropiyianí e Uswisi
CNY = Iropiyianí e China|CN¥
CVE = Iropiyianí e Kepuvede
DJF = Iropiyianí e Jibuti||0
DZD = Iropiyianí e Algeria
EGP = Iropiyianí e Misri
ERN = Iropiyianí e Eritrea
ETB = Iropiyianí e Uhabeshi
EUR = Iropiyianí e yuro|€
GBP = Iropiyianí e Nkɨ́resa|£
GHC = Iropiyianí e Ghana|||1
GMD = Iropiyianí e Gambia
GNS = Iropiyianí e Gine|||1
INR = Iropiyianí e India|₹
JPY = Iropiyianí e Japani|JP¥|0
KES = Iropiyianí e Kenya|Ksh
KMF = Iropiyianí e Komoro||0
LRD = Iropiyianí e Liberia
LSL = Iropiyianí e Lesoto
LYD = Iropiyianí e Libya||3
MAD = Iropiyianí e Moroko
MGA = Iropiyianí e Bukini||0
MRO = Iropiyianí e Moritania (1973–2017)||0|1
MRU = Iropiyianí e Moritania
MUR = Iropiyianí e Morisi
MWK = Iropiyianí e Malawi
MZM = Iropiyianí e Msumbiji|||1
NAD = Iropiyianí e Namibia
NGN = Iropiyianí e Nijeria
RWF = Iropiyianí e Rwanda||0
SAR = Iropiyianí e Saudi
SCR = Iropiyianí e Shelisheli
SDG = Iropiyianí e Sudani
SHP = Iropiyianí e Santahelena
SLL = Iropiyianí e leoni||0
SOS = Iropiyianí e Somalia||0
STD = Iropiyianí e Saotome (1977–2017)||0|1
STN = Iropiyianí e Saotome
SZL = Iropiyianí e lilangeni
TND = Iropiyianí e Tunisia||3
TZS = Iropiyianí e Tanzania
UGX = Iropiyianí e Uganda||0
USD = Iropiyianí ɔ́ɔ̄ lamarekani|US$
XAF = Iropiyianí e CFA BEAC|FCFA|0
XOF = Iropiyianí e CFA BCEAO|CFA|0
ZAR = Iropiyianí e Afrika Kusini
ZMK = Iropiyianí e Sambia (1968–2012)||0|1
ZMW = Iropiyianí e Sambia
ZWD = Iropiyianí e Simbabwe||0|1
