#!/usr/bin/perl -w 

%consonants = (
	"k" => "0x0c15",
	"kh" => "0x0c16",
	"g" => "0x0c17",
	"gh" => "0x0c18",
	"N^" => "0x0c19",
	"~N" => "0x0c19",
	"c" => "0x0c1a",
	"ch" => "0x0c1a",
	"chh" => "0x0c1b",
	"Ch" => "0x0c1b",
	"j" => "0x0c1c",
	"jh" => "0x0c1d",
	"~n" => "0x0c1e",
	"JN" => "0x0c1e",
	"T" => "0x0c1f",
	"Th" => "0x0c20",
	"D" => "0x0c21",
	"Dh" => "0x0c22",
	"N" => "0x0c23",
	"t" => "0x0c24",
	"th" => "0x0c25",
	"d" => "0x0c26",
	"dh" => "0x0c27",
	"n" => "0x0c28",
	"p" => "0x0c2a",
	"ph" => "0x0c2b",
	"b" => "0x0c2c",
	"bh" => "0x0c2d",
	"m" => "0x0c2e",
	"y" => "0x0c2f",
	"r" => "0x0c30",
	"R" => "0x0c31",
	"l" => "0x0c32",
	"L" => "0x0c33",
	"v" => "0x0c35",
	"w" => "0x0c35",
	"sh" => "0x0c36",
	"shh" => "0x0c37",
	"Sh" => "0x0c37",
	"s" => "0x0c38",
	"h" => "0x0c39",
	"x" => "0x0c15 0x0c4d 0x0c37",
	"GY" => "0x0c1c 0x0c4d 0x0c1e",
	"dny" => "0x0c1c 0x0c4d 0x0c1e",
);

%vowels = (
	"" => " 0x0c4d",
	"a" => "",
	"A" => " 0x0c3e",
	"aa" => " 0x0c3e",
	"i" => " 0x0c3f",
	"I" => " 0x0c40",
	"ii" => " 0x0c40",
	"u" => " 0x0c41",
	"U" => " 0x0c42",
	"uu" => " 0x0c42",
	"R^i" => " 0x0c43",
	"RRi" => " 0x0c43",
	"R^I" => " 0x0c44",
	"RRI" => " 0x0c44",
	"e" => " 0x0c46",
	"E" => " 0x0c47",
	"ai" => " 0x0c48",
	"o" => " 0x0c4a",
	"O" => " 0x0c4b",
	"au" => " 0x0c4c",
	".h" => " 0x0c4d 0x200c",
);

print "// Telugu kmap according to Itrans transliteration\n";
print "// by Miikka-Markus Alhonen 2002-02-17\n\n";
print "// Consonant + vowel/virama\n";

foreach $cons (sort keys %consonants) {
  foreach $vowel (sort keys %vowels) {
    printf ("\"%s%s=%s%s\",\n",$cons,$vowel,$consonants{$cons},$vowels{$vowel});
  }
}

print <<EOF;

// Independent vowels

"a=0x0c05",
"A=0x0c06",
"aa=0x0c06",
"i=0x0c07",
"I=0x0c08",
"ii=0x0c08",
"u=0x0c09",
"U=0x0c0a",
"uu=0x0c0a",
"R^i=0x0c0b",
"RRi=0x0c0b",
"L^i=0x0c0c",
"LLi=0x0c0c",
"e=0x0c0e",
"E=0x0c0f",
"ai=0x0c10",
"o=0x0c12",
"O=0x0c13",
"au=0x0c14",
"R^I=0x0c60",
"RRI=0x0c60",
"L^I=0x0c61",
"LLI=0x0c61",

// Numbers

"0x30=0x0c66",
"0x31=0x0c67",
"0x32=0x0c68",
"0x33=0x0c69",
"0x34=0x0c6a",
"0x35=0x0c6b",
"0x36=0x0c6c",
"0x37=0x0c6d",
"0x38=0x0c6e",
"0x39=0x0c6f",

// Other marks

".N=0x0c01",
".n=0x0c02",
"M=0x0c02",
"H=0x0c03",
".h=0x0c4d 0x200c",
".=0x0964",
"..=0x0965",
"|=0x0964",
"||=0x0965",
";=0x0965",
"{\\\\rm 0x20 .}=0x002e",
"{}=0x200d",
EOF