# 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 = Birlashgan Arab Amirliklari dirhami
AFN = Afg‘oniston afg‘oniysi||0
ALL = Albaniya leki||0
AMD = Armaniston drami||0
ANG = Niderlandiya antil guldeni
AOA = Angola kvanzasi
ARS = Argentina pesosi
AUD = Avstraliya dollari|A$
AWG = Aruba florini
AZN = Ozarbayjon manati
BAM = Bosniya va Gertsegovina ayirboshlash markasi
BBD = Barbados dollari
BDT = Bangladesh takasi
BGN = Bolgariya levi
BHD = Bahrayn dinori||3
BIF = Burundi franki||0
BMD = Bermuda dollari
BND = Bruney dollari
BOB = Boliviya bolivianosi
BRL = Braziliya reali|R$
BSD = Bagama dollari
BTN = Butan ngultrumi
BWP = Botsvana pulasi
BYN = Belarus rubli
BYR = Belarus rubli (2000–2016)||0|1
BZD = Beliz dollari
CAD = Kanada dollari|CA$
CDF = Kongo franki
CHF = Shveytsariya franki
CLP = Chili pesosi||0
CNY = Xitoy yuani|CN¥
COP = Kolumbiya pesosi||0
CRC = Kosta-Rika koloni
CUC = Kuba ayirboshlash pesosi
CUP = Kuba pesosi
CVE = Kabo-Verde eskudosi
CZK = Chexiya kronasi
DJF = Jibuti franki||0
DKK = Daniya kronasi
DOP = Dominikana pesosi
DZD = Jazoir dinori
EGP = Misr funti
ERN = Eritreya nakfasi
ETB = Efiopiya biri
EUR = Yevro|€
FJD = Fiji dollari
FKP = Folklend orollari funti
GBP = Angliya funt sterlingi|£
GEL = Gruziya larisi|₾
GHS = Gana sedisi
GIP = Gibraltar funti
GMD = Gambiya dalasisi
GNF = Gvineya franki||0
GTQ = Gvatemala ketsali
GYD = Gayana dollari||0
HKD = Gonkong dollari|HK$
HNL = Gonduras lempirasi
HRK = Xorvatiya kunasi
HTG = Gaiti gurdi
HUF = Vengriya forinti
IDR = Indoneziya rupiyasi||0
ILS = Isroil yangi shekeli|₪
INR = Hindiston rupiyasi|₹
IQD = Iroq dinori||0
IRR = Eron riyoli||0
ISK = Islandiya kronasi||0
JMD = Yamayka dollari
JOD = Iordaniya dinori||3
JPY = Yaponiya iyenasi|JP¥|0
KES = Keniya shillingi
KGS = Qirg‘iziston somi
KHR = Kambodja rieli
KMF = Komor orollari franki||0
KPW = Shimoliy Koreya voni||0
KRW = Janubiy Koreya voni|₩|0
KWD = Kuvayt dinori||3
KYD = Kayman orollari dollari
KZT = Qozog‘iston tengesi
LAK = Laos kipi||0
LBP = Livan funti||0
LKR = Shri-Lanka rupiyasi
LRD = Liberiya dollari
LTL = Litva liti|||1
LVL = Latviya lati|||1
LYD = Liviya dinori||3
MAD = Marokash dirhami
MDL = Moldova leyi
MGA = Malagasi ariarisi||0
MKD = Makedoniya dinori
MMK = Myanma kyati||0
MNT = Mongoliya tugriki||0
MOP = Makao patakasi
MRO = Mavritaniya uqiyasi||0
MUR = Mavritaniya rupiyasi||0
MVR = Maldiv rupiyasi
MWK = Malavi kvachasi
MXN = Meksika pesosi|MX$
MYR = Malayziya ringgiti
MZN = Mozambik metikali
NAD = Namibiya dollari
NGN = Nigeriya nayrasi
NIO = Nikaragua kordobasi
NOK = Norvegiya kronasi
NPR = Nepal rupiyasi
NZD = Yangi Zelandiya dollari|NZ$
OMR = Ummon riyoli||3
PAB = Panama balboasi
PEN = Peru soli
PGK = Papua – Yangi Gvineya kinasi
PHP = Filippin pesosi
PKR = Pokiston rupiyasi||0
PLN = Polsha zlotiyi
PYG = Paragvay guaranisi||0
QAR = Qatar riyoli
RON = Ruminiya leyi
RSD = Serbiya dinori||0
RUB = Rossiya rubli
RWF = Ruanda franki||0
SAR = Saudiya Arabistoni riyoli
SBD = Solomon orollari dollari
SCR = Seyshel rupiyasi
SDG = Sudan funti
SEK = Shvetsiya kronasi
SGD = Singapur dollari
SHP = Muqaddas Yelena oroli funti
SLL = Syerra-Leone leonesi||0
SOS = Somali shillingi||0
SRD = Surinam dollari
SSP = Janubiy Sudan funti
STD = San-Tome va Prinsipi dobrasi||0|1
SYP = Suriya funti||0
SZL = Svazilend lilangenisi
THB = Tailand bati
TJS = Tojikiston somoniysi
TMT = Turkmaniston manati
TND = Tunis dinori||3
TOP = Tonga paangasi
TRY = Turk lirasi|TL
TTD = Trinidad va Tobago dollari
TWD = Yangi Tayvan dollari|NT$
TZS = Tanzaniya shillingi||0
UAH = Ukraina grivnasi
UGX = Uganda shillingi||0
USD = AQSH dollari|US$
UYU = Urugvay pesosi
UZS = O‘zbekiston so‘mi|soʻm|0
VEF = Venesuela bolivari
VND = Vyetnam dongi|₫|0
VUV = Vanuatu vatusi||0
WST = Samoa talasi
XAF = Markaziy Afrika CFA franki|FCFA|0
XCD = Sharqiy Karib dollari|EC$
XOF = G‘arbiy Afrika CFA franki|CFA|0
XPF = Fransuz Polineziyasi franki|CFPF|0
XXX = Noma’lum valyuta|||1
YER = Yaman riyoli||0
ZAR = Janubiy Afrika rendi
ZMW = Zambiya kvachasi
