#--------------------------------------------------------------------
# Copyright (c) 1999-2004, International Business Machines
# Corporation and others. All Rights Reserved.
#--------------------------------------------------------------------

# Oriya-InterIndic
#:: NFD (NFC) ;
#\u0B21\u0B3C>\uE05C;# LETTER RRA
#\u0B22\u0B3C>\uE05D;# LETTER RHA
\u0B47\u0B56>\uE048;# VOWEL SIGN AI
\u0B47\u0B3E>\uE04B;# VOWEL SIGN O
\u0B47\u0B57>\uE04C;# VOWEL SIGN AU

\u0B01>\uE001;      # SIGN CANDRABINDU
\u0B02>\uE002;      # SIGN ANUSVARA
\u0B03>\uE003;      # SIGN VISARGA
\u0B05>\uE005;      # LETTER A
\u0B06>\uE006;      # LETTER AA
\u0B07>\uE007;      # LETTER I
\u0B08>\uE008;      # LETTER II
\u0B09>\uE009;      # LETTER U
\u0B0A>\uE00A;      # LETTER UU
\u0B0B>\uE00B;      # LETTER VOCALIC R
\u0B0C>\uE00C;      # LETTER VOCALIC L
\u0B0F>\uE00F;      # LETTER E
\u0B10>\uE010;      # LETTER AI
\u0B13>\uE013;      # LETTER O
\u0B14>\uE014;      # LETTER AU
\u0B15>\uE015;      # LETTER KA
\u0B16>\uE016;      # LETTER KHA
\u0B17>\uE017;      # LETTER GA
\u0B18>\uE018;      # LETTER GHA
\u0B19>\uE019;      # LETTER NGA
\u0B1A>\uE01A;      # LETTER CA
\u0B1B>\uE01B;      # LETTER CHA
\u0B1C>\uE01C;      # LETTER JA
\u0B1D>\uE01D;      # LETTER JHA
\u0B1E>\uE01E;      # LETTER NYA
\u0B1F>\uE01F;      # LETTER TTA
\u0B20>\uE020;      # LETTER TTHA
\u0B21>\uE021;      # LETTER DDA
\u0B22>\uE022;      # LETTER DDHA
\u0B23>\uE023;      # LETTER NNA
\u0B24>\uE024;      # LETTER TA
\u0B25>\uE025;      # LETTER THA
\u0B26>\uE026;      # LETTER DA
\u0B27>\uE027;      # LETTER DHA
\u0B28>\uE028;      # LETTER NA
\u0B2A>\uE02A;      # LETTER PA
\u0B2B>\uE02B;      # LETTER PHA
\u0B2C>\uE02C;      # LETTER BA
\u0B2D>\uE02D;      # LETTER BHA
\u0B2E>\uE02E;      # LETTER MA
\u0B2F>\uE02F;      # LETTER YA
\u0B30>\uE030;      # LETTER RA
\u0B32>\uE032;      # LETTER LA
\u0B33>\uE033;      # LETTER LLA
\u0B35>\uE035;      # LETTER VA
\u0B36>\uE036;      # LETTER SHA
\u0B37>\uE037;      # LETTER SSA
\u0B38>\uE038;      # LETTER SA
\u0B39>\uE039;      # LETTER HA
\u0B3C>\uE03C;      # SIGN NUKTA
\u0B3D>\uE03D;      # SIGN AVAGRAHA
\u0B3E>\uE03E;      # VOWEL SIGN AA
\u0B3F>\uE03F;      # VOWEL SIGN I
\u0B40>\uE040;      # VOWEL SIGN II
\u0B41>\uE041;      # VOWEL SIGN U
\u0B42>\uE042;      # VOWEL SIGN UU
\u0B43>\uE043;      # VOWEL SIGN VOCALIC R
\u0B47>\uE047;      # VOWEL SIGN E
#
\u0B4D>\uE04D;      # SIGN VIRAMA
\u0B56>\uE056;      # AI LENGTH MARK
\u0B57>\uE057;      # AU LENGTH MARK
\u0964>\ue064;      # DANDA
\u0965>\ue065;      # DOUBLE DANDA
#
\u0B5F>\uE05F;      # LETTER YYA
\u0B60>\uE060;      # LETTER VOCALIC RR
\u0B61>\uE061;      # LETTER VOCALIC LL
\u0B66>\uE066;      # DIGIT ZERO
\u0B67>\uE067;      # DIGIT ONE
\u0B68>\uE068;      # DIGIT TWO
\u0B69>\uE069;      # DIGIT THREE
\u0B6A>\uE06A;      # DIGIT FOUR
\u0B6B>\uE06B;      # DIGIT FIVE
\u0B6C>\uE06C;      # DIGIT SIX
\u0B6D>\uE06D;      # DIGIT SEVEN
\u0B6E>\uE06E;      # DIGIT EIGHT
\u0B6F>\uE06F;      # DIGIT NINE
\u0B70>\ue07B;      # ISSHAR
\u0B71>\ue081;      # LETTER WA
#    :: NFC (NFD) ;
# eof
