# 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:
#  cldrVersion=21.0
#  number=$Revision: 6549 Google $
#  type=root
#  date=$Date: 2012-02-08 14:09:21 -0500 (Wed, 08 Feb 2012) $

ADP = ADP||0|1
AED = AED
AFA = AFA|||1
AFN = AFN||0
ALK = ALK|||1
ALL = ALL||0
AMD = AMD||0
ANG = ANG
AOA = AOA
AOK = AOK|||1
AON = AON|||1
AOR = AOR|||1
ARA = ARA|||1
ARL = ARL|||1
ARM = ARM|||1
ARP = ARP|||1
ARS = ARS
ATS = ATS|||1
AUD = AUD|AU$
AWG = AWG
AZM = AZM|||1
AZN = AZN
BAD = BAD|||1
BAM = BAM
BAN = BAN|||1
BBD = BBD
BDT = BDT
BEC = BEC|||1
BEF = BEF|||1
BEL = BEL|||1
BGL = BGL|||1
BGM = BGM|||1
BGN = BGN
BGO = BGO|||1
BHD = BHD||3
BIF = BIF||0
BMD = BMD
BND = BND
BOB = BOB
BOL = BOL|||1
BOP = BOP|||1
BOV = BOV|||1
BRB = BRB|||1
BRC = BRC|||1
BRE = BRE|||1
BRL = BRL|R$
BRN = BRN|||1
BRR = BRR|||1
BRZ = BRZ|||1
BSD = BSD
BTN = BTN
BUK = BUK|||1
BWP = BWP
BYB = BYB|||1
BYR = BYR||0
BZD = BZD
CAD = CAD|CA$
CDF = CDF
CHE = CHE|||1
CHF = CHF||||5
CHW = CHW|||1
CLE = CLE|||1
CLF = CLF||0|1
CLP = CLP||0
CNX = CNX|||1
CNY = CNY|CN¥
COP = COP||0
COU = COU|||1
CRC = CRC||0
CSD = CSD|||1
CSK = CSK|||1
CUC = CUC
CUP = CUP
CVE = CVE
CYP = CYP|||1
CZK = CZK
DDM = DDM|||1
DEM = DEM|||1
DJF = DJF||0
DKK = DKK
DOP = DOP
DZD = DZD
ECS = ECS|||1
ECV = ECV|||1
EEK = EEK|||1
EGP = EGP
ERN = ERN
ESA = ESA|||1
ESB = ESB|||1
ESP = ESP||0|1
ETB = ETB
EUR = EUR|€
FIM = FIM|||1
FJD = FJD
FKP = FKP
FRF = FRF|||1
GBP = GBP|UK£
GEK = GEK|||1
GEL = GEL
GHC = GHC|||1
GHS = GHS
GIP = GIP
GMD = GMD
GNF = GNF||0
GNS = GNS|||1
GQE = GQE|||1
GRD = GRD|||1
GTQ = GTQ
GWE = GWE|||1
GWP = GWP|||1
GYD = GYD||0
HKD = HKD|HK$
HNL = HNL
HRD = HRD|||1
HRK = HRK
HTG = HTG
HUF = HUF||0
IDR = IDR||0
IEP = IEP|||1
ILP = ILP|||1
ILR = ILR|||1
ILS = ILS|₪
INR = INR|Rs.
IQD = IQD||0
IRR = IRR||0
ISJ = ISJ|||1
ISK = ISK||0
ITL = ITL||0|1
JMD = JMD
JOD = JOD||3
JPY = JPY|JP¥|0
KES = KES
KGS = KGS
KHR = KHR
KMF = KMF||0
KPW = KPW||0
KRH = KRH|||1
KRO = KRO|||1
KRW = KRW|₩|0
KWD = KWD||3
KYD = KYD
KZT = KZT
LAK = LAK||0
LBP = LBP||0
LKR = LKR
LRD = LRD
LSL = LSL
LTL = LTL
LTT = LTT|||1
LUC = LUC|||1
LUF = LUF||0|1
LUL = LUL|||1
LVL = LVL
LVR = LVR|||1
LYD = LYD||3
MAD = MAD
MAF = MAF|||1
MCF = MCF|||1
MDC = MDC|||1
MDL = MDL
MGA = MGA||0
MGF = MGF||0|1
MKD = MKD
MKN = MKN|||1
MLF = MLF|||1
MMK = MMK||0
MNT = MNT||0
MOP = MOP
MRO = MRO||0
MTL = MTL|||1
MTP = MTP|||1
MUR = MUR||0
MVP = MVP|||1
MVR = MVR
MWK = MWK
MXN = MXN|MX$
MXP = MXP|||1
MXV = MXV|||1
MYR = MYR
MZE = MZE|||1
MZM = MZM|||1
MZN = MZN
NAD = NAD
NGN = NGN
NIC = NIC|||1
NIO = NIO
NLG = NLG|||1
NOK = NOK
NPR = NPR
NZD = NZD|NZ$
OMR = OMR||3
PAB = PAB
PEI = PEI|||1
PEN = PEN
PES = PES|||1
PGK = PGK
PHP = PHP
PKR = PKR||0
PLN = PLN
PLZ = PLZ|||1
PTE = PTE|||1
PYG = PYG||0
QAR = QAR
RHD = RHD|||1
ROL = ROL|||1
RON = RON
RSD = RSD||0
RUB = RUB
RUR = RUR|||1
RWF = RWF||0
SAR = SAR
SBD = SBD
SCR = SCR
SDD = SDD|||1
SDG = SDG
SDP = SDP|||1
SEK = SEK
SGD = SGD
SHP = SHP
SIT = SIT|||1
SKK = SKK|||1
SLL = SLL||0
SOS = SOS||0
SRD = SRD
SRG = SRG|||1
SSP = SSP
STD = STD||0
SUR = SUR|||1
SVC = SVC|||1
SYP = SYP||0
SZL = SZL
THB = THB|฿
TJR = TJR|||1
TJS = TJS
TMM = TMM||0|1
TMT = TMT
TND = TND||3
TOP = TOP
TPE = TPE|||1
TRL = TRL||0|1
TRY = TRY
TTD = TTD
TWD = TWD|NT$
TZS = TZS||0
UAH = UAH
UAK = UAK|||1
UGS = UGS|||1
UGX = UGX||0
USD = USD|US$
USN = USN|||1
USS = USS|||1
UYI = UYI|||1
UYP = UYP|||1
UYU = UYU
UZS = UZS||0
VEB = VEB|||1
VEF = VEF
VND = VND|₫|0
VNN = VNN|||1
VUV = VUV||0
WST = WST
XAF = XAF|FCFA|0
XAG = XAG|||1
XAU = XAU|||1
XBA = XBA|||1
XBB = XBB|||1
XBC = XBC|||1
XBD = XBD|||1
XCD = XCD|EC$
XDR = XDR|||1
XEU = XEU|||1
XFO = XFO|||1
XFU = XFU|||1
XOF = XOF|CFA|0
XPD = XPD|||1
XPF = XPF|CFPF|0
XPT = XPT|||1
XRE = XRE|||1
XSU = XSU|||1
XTS = XTS|||1
XUA = XUA|||1
XXX = XXX|||1
YDD = YDD|||1
YER = YER||0
YUD = YUD|||1
YUM = YUM|||1
YUN = YUN|||1
YUR = YUR|||1
ZAL = ZAL|||1
ZAR = ZAR
ZMK = ZMK||0
ZRN = ZRN|||1
ZRZ = ZRZ|||1
ZWD = ZWD||0|1
ZWL = ZWL|||1
ZWR = ZWR|||1
