﻿// ***************************************************************************
// *
// * Copyright (C) 2010 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/numberingSystems.xml
// *
// ***************************************************************************
numberingSystems:table(nofallback){
    numberingSystems{
        arab{
            algorithmic:int{0}
            desc{"٠١٢٣٤٥٦٧٨٩"}
            radix:int{10}
        }
        arabext{
            algorithmic:int{0}
            desc{"۰۱۲۳۴۵۶۷۸۹"}
            radix:int{10}
        }
        armn{
            algorithmic:int{1}
            desc{"%armenian-upper"}
            radix:int{10}
        }
        armnlow{
            algorithmic:int{1}
            desc{"%armenian-lower"}
            radix:int{10}
        }
        beng{
            algorithmic:int{0}
            desc{"০১২৩৪৫৬৭৮৯"}
            radix:int{10}
        }
        deva{
            algorithmic:int{0}
            desc{"०१२३४५६७८९"}
            radix:int{10}
        }
        ethi{
            algorithmic:int{1}
            desc{"%ethiopic"}
            radix:int{10}
        }
        fullwide{
            algorithmic:int{0}
            desc{"０１２３４５６７８９"}
            radix:int{10}
        }
        geor{
            algorithmic:int{1}
            desc{"%georgian"}
            radix:int{10}
        }
        grek{
            algorithmic:int{1}
            desc{"%greek-upper"}
            radix:int{10}
        }
        greklow{
            algorithmic:int{1}
            desc{"%greek-lower"}
            radix:int{10}
        }
        gujr{
            algorithmic:int{0}
            desc{"૦૧૨૩૪૫૬૭૮૯"}
            radix:int{10}
        }
        guru{
            algorithmic:int{0}
            desc{"੦੧੨੩੪੫੬੭੮੯"}
            radix:int{10}
        }
        hans{
            algorithmic:int{1}
            desc{"zh/SpelloutRules/%spellout-cardinal"}
            radix:int{10}
        }
        hansfin{
            algorithmic:int{1}
            desc{"zh/SpelloutRules/%spellout-cardinal-financial"}
            radix:int{10}
        }
        hant{
            algorithmic:int{1}
            desc{"zh_Hant/SpelloutRules/%spellout-cardinal"}
            radix:int{10}
        }
        hantfin{
            algorithmic:int{1}
            desc{"zh_Hant/SpelloutRules/%spellout-cardinal-financial"}
            radix:int{10}
        }
        hebr{
            algorithmic:int{1}
            desc{"%hebrew"}
            radix:int{10}
        }
        jpan{
            algorithmic:int{1}
            desc{"ja/SpelloutRules/%spellout-cardinal"}
            radix:int{10}
        }
        jpanfin{
            algorithmic:int{1}
            desc{"ja/SpelloutRules/%spellout-cardinal-financial"}
            radix:int{10}
        }
        khmr{
            algorithmic:int{0}
            desc{"០១២៣៤៥៦៧៨៩"}
            radix:int{10}
        }
        knda{
            algorithmic:int{0}
            desc{"೦೧೨೩೪೫೬೭೮೯"}
            radix:int{10}
        }
        laoo{
            algorithmic:int{0}
            desc{"໐໑໒໓໔໕໖໗໘໙"}
            radix:int{10}
        }
        latn{
            algorithmic:int{0}
            desc{"0123456789"}
            radix:int{10}
        }
        mlym{
            algorithmic:int{0}
            desc{"൦൧൨൩൪൫൬൭൮൯"}
            radix:int{10}
        }
        mong{
            algorithmic:int{0}
            desc{"᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙"}
            radix:int{10}
        }
        mymr{
            algorithmic:int{0}
            desc{"၀၁၂၃၄၅၆၇၈၉"}
            radix:int{10}
        }
        orya{
            algorithmic:int{0}
            desc{"୦୧୨୩୪୫୬୭୮୯"}
            radix:int{10}
        }
        roman{
            algorithmic:int{1}
            desc{"%roman-upper"}
            radix:int{10}
        }
        romanlow{
            algorithmic:int{1}
            desc{"%roman-lower"}
            radix:int{10}
        }
        taml{
            algorithmic:int{1}
            desc{"%tamil"}
            radix:int{10}
        }
        telu{
            algorithmic:int{0}
            desc{"౦౧౨౩౪౫౬౭౮౯"}
            radix:int{10}
        }
        thai{
            algorithmic:int{0}
            desc{"๐๑๒๓๔๕๖๗๘๙"}
            radix:int{10}
        }
        tibt{
            algorithmic:int{0}
            desc{"༠༡༢༣༤༥༦༧༨༩"}
            radix:int{10}
        }
    }
}
