# 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: 2013-11-15 19:32:44 +0100 (Fri, 15 Nov 2013) $
#  number=$Revision: 9515 $
#  type=kea
AED = Diren di Emiradus Arabi Unidu
AOA = Kuanza
AUD = Dola australianu|$
BHD = Dinar di Barain||3
BIF = Franku borundes||0
BRL = Rial brazileru|R$
BWP = Pula di Botsuana
CAD = Dola kanadianu|CA$
CDF = Franku kongoles
CHF = Franku suisu
CNY = Iuan xines|¥
CVE = Skudu Kabuverdianu
DJF = Franku di Djibuti||0
DKK = Kuroa dinamarkeza
DZD = Dinar arjelinu
EGP = Libra ejipsiu
ERN = Nafka di Eritreia
ETB = Bir etiopi
EUR = Euro|€
GBP = Libra sterlina britaniku|£
GHC = Sedi di Gana|||1
GMD = Dalasi
GNS = Sili|||1
HKD = Dola di Ong Kong|$
IDR = Rupia indoneziu||0
INR = Rupia indianu|₹
JPY = Ieni japones|¥|0
KES = Xelin kenianu
KMF = Franku di Komoris||0
KRW = Won sul-koreanu|₩|0
LRD = Dola liberianu
LSL = Loti di Lezotu
LYD = Dinar libiu||3
MAD = Diren marokinu
MGA = Ariari di Madagaskar||0
MRO = Ougia||0
MUR = Rupia di Maurisias||0
MWK = Kuaxa di Malaui
MXN = Pezu mexikanu|$
MZM = Metikal|||1
NAD = Dola namibianu|$
NGN = Naira
NOK = Kuroa norueges
PLN = Zloty polaku
RUB = Rublu rusu
RWF = Franku ruandes||0
SAR = Rial saudita
SCR = Rupia di Seixelis
SDG = Libra sudanes
SDP = Libra sudanes antigu|||1
SEK = Kuroa sueku
SHP = Libra di Santa Ilena
SLL = Leone di Sera Leoa||0
SOS = Xelin somalianu||0
STD = Dobra di Sãu Tume i Prinsipi||0
SZL = Lilanjeni
THB = Baht tailandes|฿
TND = Dinar tunizianu||3
TRY = Lira turku
TWD = Dola Novu di Taiwan|NT$
TZS = Xelin di Tanzania||0
UGX = Xelin ugandensi||0
USD = Dola merkanu|$
XAF = Franku CFA BEAC|FCFA|0
XOF = Franku CFA BCEAO|CFA|0
XXX = Mueda diskonxedu|||1
ZAR = Rand sulafrikanu
ZMK = Kuaxa zambianu (1968–2012)||0|1
ZMW = Kuaxa zambianu
ZWD = Dola di Zimbabue||0|1
