2de70d44fb9bc2ea7d552affc213f76bb28d1943
[jalview.git] / src / com / stevesoft / pat / CaseMgr.java
1 //\r
2 // This software is now distributed according to\r
3 // the Lesser Gnu Public License.  Please see\r
4 // http://www.gnu.org/copyleft/lesser.txt for\r
5 // the details.\r
6 //    -- Happy Computing!\r
7 //\r
8 package com.stevesoft.pat;\r
9 \r
10 /** Encapsulates the Unicode definitions of Upper,\r
11     Lower, and Title case as defined by <a href="http://www.unicode.org">\r
12     unicode.org</a>.\r
13     <p>\r
14     The performance of the methods found in String\r
15     and Character is better, but these methods work\r
16     both in java 1.0 and 1.1.  If it is desirable,\r
17     either to gain a slight performance increase or\r
18     to accomodate application specific modifications\r
19     to the definitions of upper, lower, and title case\r
20     then it should be a straightforward task to substitute\r
21     your own methods for these.\r
22     */\r
23 final public class CaseMgr {\r
24     final static boolean java_1_0 = false;\r
25     /** Convert a character to upper case .*/\r
26     public static char toUpperCase(char c) {\r
27       if(java_1_0) {\r
28         int ret = (int)c;\r
29         switch(c) {\r
30         case 97: ret=65; break;\r
31         case 98: ret=66; break;\r
32         case 99: ret=67; break;\r
33         case 100: ret=68; break;\r
34         case 101: ret=69; break;\r
35         case 102: ret=70; break;\r
36         case 103: ret=71; break;\r
37         case 104: ret=72; break;\r
38         case 105: ret=73; break;\r
39         case 106: ret=74; break;\r
40         case 107: ret=75; break;\r
41         case 108: ret=76; break;\r
42         case 109: ret=77; break;\r
43         case 110: ret=78; break;\r
44         case 111: ret=79; break;\r
45         case 112: ret=80; break;\r
46         case 113: ret=81; break;\r
47         case 114: ret=82; break;\r
48         case 115: ret=83; break;\r
49         case 116: ret=84; break;\r
50         case 117: ret=85; break;\r
51         case 118: ret=86; break;\r
52         case 119: ret=87; break;\r
53         case 120: ret=88; break;\r
54         case 121: ret=89; break;\r
55         case 122: ret=90; break;\r
56         case 224: ret=192; break;\r
57         case 225: ret=193; break;\r
58         case 226: ret=194; break;\r
59         case 227: ret=195; break;\r
60         case 228: ret=196; break;\r
61         case 229: ret=197; break;\r
62         case 230: ret=198; break;\r
63         case 231: ret=199; break;\r
64         case 232: ret=200; break;\r
65         case 233: ret=201; break;\r
66         case 234: ret=202; break;\r
67         case 235: ret=203; break;\r
68         case 236: ret=204; break;\r
69         case 237: ret=205; break;\r
70         case 238: ret=206; break;\r
71         case 239: ret=207; break;\r
72         case 240: ret=208; break;\r
73         case 241: ret=209; break;\r
74         case 242: ret=210; break;\r
75         case 243: ret=211; break;\r
76         case 244: ret=212; break;\r
77         case 245: ret=213; break;\r
78         case 246: ret=214; break;\r
79         case 248: ret=216; break;\r
80         case 249: ret=217; break;\r
81         case 250: ret=218; break;\r
82         case 251: ret=219; break;\r
83         case 252: ret=220; break;\r
84         case 253: ret=221; break;\r
85         case 254: ret=222; break;\r
86         case 255: ret=376; break;\r
87         case 257: ret=256; break;\r
88         case 259: ret=258; break;\r
89         case 261: ret=260; break;\r
90         case 263: ret=262; break;\r
91         case 265: ret=264; break;\r
92         case 267: ret=266; break;\r
93         case 269: ret=268; break;\r
94         case 271: ret=270; break;\r
95         case 273: ret=272; break;\r
96         case 275: ret=274; break;\r
97         case 277: ret=276; break;\r
98         case 279: ret=278; break;\r
99         case 281: ret=280; break;\r
100         case 283: ret=282; break;\r
101         case 285: ret=284; break;\r
102         case 287: ret=286; break;\r
103         case 289: ret=288; break;\r
104         case 291: ret=290; break;\r
105         case 293: ret=292; break;\r
106         case 295: ret=294; break;\r
107         case 297: ret=296; break;\r
108         case 299: ret=298; break;\r
109         case 301: ret=300; break;\r
110         case 303: ret=302; break;\r
111         case 305: ret=73; break;\r
112         case 307: ret=306; break;\r
113         case 309: ret=308; break;\r
114         case 311: ret=310; break;\r
115         case 314: ret=313; break;\r
116         case 316: ret=315; break;\r
117         case 318: ret=317; break;\r
118         case 320: ret=319; break;\r
119         case 322: ret=321; break;\r
120         case 324: ret=323; break;\r
121         case 326: ret=325; break;\r
122         case 328: ret=327; break;\r
123         case 331: ret=330; break;\r
124         case 333: ret=332; break;\r
125         case 335: ret=334; break;\r
126         case 337: ret=336; break;\r
127         case 339: ret=338; break;\r
128         case 341: ret=340; break;\r
129         case 343: ret=342; break;\r
130         case 345: ret=344; break;\r
131         case 347: ret=346; break;\r
132         case 349: ret=348; break;\r
133         case 351: ret=350; break;\r
134         case 353: ret=352; break;\r
135         case 355: ret=354; break;\r
136         case 357: ret=356; break;\r
137         case 359: ret=358; break;\r
138         case 361: ret=360; break;\r
139         case 363: ret=362; break;\r
140         case 365: ret=364; break;\r
141         case 367: ret=366; break;\r
142         case 369: ret=368; break;\r
143         case 371: ret=370; break;\r
144         case 373: ret=372; break;\r
145         case 375: ret=374; break;\r
146         case 378: ret=377; break;\r
147         case 380: ret=379; break;\r
148         case 382: ret=381; break;\r
149         case 383: ret=83; break;\r
150         case 387: ret=386; break;\r
151         case 389: ret=388; break;\r
152         case 392: ret=391; break;\r
153         case 396: ret=395; break;\r
154         case 402: ret=401; break;\r
155         case 409: ret=408; break;\r
156         case 417: ret=416; break;\r
157         case 419: ret=418; break;\r
158         case 421: ret=420; break;\r
159         case 424: ret=423; break;\r
160         case 429: ret=428; break;\r
161         case 432: ret=431; break;\r
162         case 436: ret=435; break;\r
163         case 438: ret=437; break;\r
164         case 441: ret=440; break;\r
165         case 445: ret=444; break;\r
166         case 453: ret=452; break;\r
167         case 454: ret=452; break;\r
168         case 456: ret=455; break;\r
169         case 457: ret=455; break;\r
170         case 459: ret=458; break;\r
171         case 460: ret=458; break;\r
172         case 462: ret=461; break;\r
173         case 464: ret=463; break;\r
174         case 466: ret=465; break;\r
175         case 468: ret=467; break;\r
176         case 470: ret=469; break;\r
177         case 472: ret=471; break;\r
178         case 474: ret=473; break;\r
179         case 476: ret=475; break;\r
180         case 479: ret=478; break;\r
181         case 481: ret=480; break;\r
182         case 483: ret=482; break;\r
183         case 485: ret=484; break;\r
184         case 487: ret=486; break;\r
185         case 489: ret=488; break;\r
186         case 491: ret=490; break;\r
187         case 493: ret=492; break;\r
188         case 495: ret=494; break;\r
189         case 498: ret=497; break;\r
190         case 499: ret=497; break;\r
191         case 501: ret=500; break;\r
192         case 507: ret=506; break;\r
193         case 509: ret=508; break;\r
194         case 511: ret=510; break;\r
195         case 513: ret=512; break;\r
196         case 515: ret=514; break;\r
197         case 517: ret=516; break;\r
198         case 519: ret=518; break;\r
199         case 521: ret=520; break;\r
200         case 523: ret=522; break;\r
201         case 525: ret=524; break;\r
202         case 527: ret=526; break;\r
203         case 529: ret=528; break;\r
204         case 531: ret=530; break;\r
205         case 533: ret=532; break;\r
206         case 535: ret=534; break;\r
207         case 595: ret=385; break;\r
208         case 596: ret=390; break;\r
209         case 598: ret=393; break;\r
210         case 599: ret=394; break;\r
211         case 600: ret=398; break;\r
212         case 601: ret=399; break;\r
213         case 603: ret=400; break;\r
214         case 608: ret=403; break;\r
215         case 611: ret=404; break;\r
216         case 616: ret=407; break;\r
217         case 617: ret=406; break;\r
218         case 623: ret=412; break;\r
219         case 626: ret=413; break;\r
220         case 643: ret=425; break;\r
221         case 648: ret=430; break;\r
222         case 650: ret=433; break;\r
223         case 651: ret=434; break;\r
224         case 658: ret=439; break;\r
225         case 940: ret=902; break;\r
226         case 941: ret=904; break;\r
227         case 942: ret=905; break;\r
228         case 943: ret=906; break;\r
229         case 945: ret=913; break;\r
230         case 946: ret=914; break;\r
231         case 947: ret=915; break;\r
232         case 948: ret=916; break;\r
233         case 949: ret=917; break;\r
234         case 950: ret=918; break;\r
235         case 951: ret=919; break;\r
236         case 952: ret=920; break;\r
237         case 953: ret=921; break;\r
238         case 954: ret=922; break;\r
239         case 955: ret=923; break;\r
240         case 956: ret=924; break;\r
241         case 957: ret=925; break;\r
242         case 958: ret=926; break;\r
243         case 959: ret=927; break;\r
244         case 960: ret=928; break;\r
245         case 961: ret=929; break;\r
246         case 963: ret=931; break;\r
247         case 964: ret=932; break;\r
248         case 965: ret=933; break;\r
249         case 966: ret=934; break;\r
250         case 967: ret=935; break;\r
251         case 968: ret=936; break;\r
252         case 969: ret=937; break;\r
253         case 970: ret=938; break;\r
254         case 971: ret=939; break;\r
255         case 972: ret=908; break;\r
256         case 973: ret=910; break;\r
257         case 974: ret=911; break;\r
258         case 976: ret=914; break;\r
259         case 977: ret=920; break;\r
260         case 981: ret=934; break;\r
261         case 982: ret=928; break;\r
262         case 995: ret=994; break;\r
263         case 997: ret=996; break;\r
264         case 999: ret=998; break;\r
265         case 1001: ret=1000; break;\r
266         case 1003: ret=1002; break;\r
267         case 1005: ret=1004; break;\r
268         case 1007: ret=1006; break;\r
269         case 1008: ret=922; break;\r
270         case 1009: ret=929; break;\r
271         case 1072: ret=1040; break;\r
272         case 1073: ret=1041; break;\r
273         case 1074: ret=1042; break;\r
274         case 1075: ret=1043; break;\r
275         case 1076: ret=1044; break;\r
276         case 1077: ret=1045; break;\r
277         case 1078: ret=1046; break;\r
278         case 1079: ret=1047; break;\r
279         case 1080: ret=1048; break;\r
280         case 1081: ret=1049; break;\r
281         case 1082: ret=1050; break;\r
282         case 1083: ret=1051; break;\r
283         case 1084: ret=1052; break;\r
284         case 1085: ret=1053; break;\r
285         case 1086: ret=1054; break;\r
286         case 1087: ret=1055; break;\r
287         case 1088: ret=1056; break;\r
288         case 1089: ret=1057; break;\r
289         case 1090: ret=1058; break;\r
290         case 1091: ret=1059; break;\r
291         case 1092: ret=1060; break;\r
292         case 1093: ret=1061; break;\r
293         case 1094: ret=1062; break;\r
294         case 1095: ret=1063; break;\r
295         case 1096: ret=1064; break;\r
296         case 1097: ret=1065; break;\r
297         case 1098: ret=1066; break;\r
298         case 1099: ret=1067; break;\r
299         case 1100: ret=1068; break;\r
300         case 1101: ret=1069; break;\r
301         case 1102: ret=1070; break;\r
302         case 1103: ret=1071; break;\r
303         case 1105: ret=1025; break;\r
304         case 1106: ret=1026; break;\r
305         case 1107: ret=1027; break;\r
306         case 1108: ret=1028; break;\r
307         case 1109: ret=1029; break;\r
308         case 1110: ret=1030; break;\r
309         case 1111: ret=1031; break;\r
310         case 1112: ret=1032; break;\r
311         case 1113: ret=1033; break;\r
312         case 1114: ret=1034; break;\r
313         case 1115: ret=1035; break;\r
314         case 1116: ret=1036; break;\r
315         case 1118: ret=1038; break;\r
316         case 1119: ret=1039; break;\r
317         case 1121: ret=1120; break;\r
318         case 1123: ret=1122; break;\r
319         case 1125: ret=1124; break;\r
320         case 1127: ret=1126; break;\r
321         case 1129: ret=1128; break;\r
322         case 1131: ret=1130; break;\r
323         case 1133: ret=1132; break;\r
324         case 1135: ret=1134; break;\r
325         case 1137: ret=1136; break;\r
326         case 1139: ret=1138; break;\r
327         case 1141: ret=1140; break;\r
328         case 1143: ret=1142; break;\r
329         case 1145: ret=1144; break;\r
330         case 1147: ret=1146; break;\r
331         case 1149: ret=1148; break;\r
332         case 1151: ret=1150; break;\r
333         case 1153: ret=1152; break;\r
334         case 1169: ret=1168; break;\r
335         case 1171: ret=1170; break;\r
336         case 1173: ret=1172; break;\r
337         case 1175: ret=1174; break;\r
338         case 1177: ret=1176; break;\r
339         case 1179: ret=1178; break;\r
340         case 1181: ret=1180; break;\r
341         case 1183: ret=1182; break;\r
342         case 1185: ret=1184; break;\r
343         case 1187: ret=1186; break;\r
344         case 1189: ret=1188; break;\r
345         case 1191: ret=1190; break;\r
346         case 1193: ret=1192; break;\r
347         case 1195: ret=1194; break;\r
348         case 1197: ret=1196; break;\r
349         case 1199: ret=1198; break;\r
350         case 1201: ret=1200; break;\r
351         case 1203: ret=1202; break;\r
352         case 1205: ret=1204; break;\r
353         case 1207: ret=1206; break;\r
354         case 1209: ret=1208; break;\r
355         case 1211: ret=1210; break;\r
356         case 1213: ret=1212; break;\r
357         case 1215: ret=1214; break;\r
358         case 1218: ret=1217; break;\r
359         case 1220: ret=1219; break;\r
360         case 1224: ret=1223; break;\r
361         case 1228: ret=1227; break;\r
362         case 1233: ret=1232; break;\r
363         case 1235: ret=1234; break;\r
364         case 1237: ret=1236; break;\r
365         case 1239: ret=1238; break;\r
366         case 1241: ret=1240; break;\r
367         case 1243: ret=1242; break;\r
368         case 1245: ret=1244; break;\r
369         case 1247: ret=1246; break;\r
370         case 1249: ret=1248; break;\r
371         case 1251: ret=1250; break;\r
372         case 1253: ret=1252; break;\r
373         case 1255: ret=1254; break;\r
374         case 1257: ret=1256; break;\r
375         case 1259: ret=1258; break;\r
376         case 1263: ret=1262; break;\r
377         case 1265: ret=1264; break;\r
378         case 1267: ret=1266; break;\r
379         case 1269: ret=1268; break;\r
380         case 1273: ret=1272; break;\r
381         case 1377: ret=1329; break;\r
382         case 1378: ret=1330; break;\r
383         case 1379: ret=1331; break;\r
384         case 1380: ret=1332; break;\r
385         case 1381: ret=1333; break;\r
386         case 1382: ret=1334; break;\r
387         case 1383: ret=1335; break;\r
388         case 1384: ret=1336; break;\r
389         case 1385: ret=1337; break;\r
390         case 1386: ret=1338; break;\r
391         case 1387: ret=1339; break;\r
392         case 1388: ret=1340; break;\r
393         case 1389: ret=1341; break;\r
394         case 1390: ret=1342; break;\r
395         case 1391: ret=1343; break;\r
396         case 1392: ret=1344; break;\r
397         case 1393: ret=1345; break;\r
398         case 1394: ret=1346; break;\r
399         case 1395: ret=1347; break;\r
400         case 1396: ret=1348; break;\r
401         case 1397: ret=1349; break;\r
402         case 1398: ret=1350; break;\r
403         case 1399: ret=1351; break;\r
404         case 1400: ret=1352; break;\r
405         case 1401: ret=1353; break;\r
406         case 1402: ret=1354; break;\r
407         case 1403: ret=1355; break;\r
408         case 1404: ret=1356; break;\r
409         case 1405: ret=1357; break;\r
410         case 1406: ret=1358; break;\r
411         case 1407: ret=1359; break;\r
412         case 1408: ret=1360; break;\r
413         case 1409: ret=1361; break;\r
414         case 1410: ret=1362; break;\r
415         case 1411: ret=1363; break;\r
416         case 1412: ret=1364; break;\r
417         case 1413: ret=1365; break;\r
418         case 1414: ret=1366; break;\r
419         case 7681: ret=7680; break;\r
420         case 7683: ret=7682; break;\r
421         case 7685: ret=7684; break;\r
422         case 7687: ret=7686; break;\r
423         case 7689: ret=7688; break;\r
424         case 7691: ret=7690; break;\r
425         case 7693: ret=7692; break;\r
426         case 7695: ret=7694; break;\r
427         case 7697: ret=7696; break;\r
428         case 7699: ret=7698; break;\r
429         case 7701: ret=7700; break;\r
430         case 7703: ret=7702; break;\r
431         case 7705: ret=7704; break;\r
432         case 7707: ret=7706; break;\r
433         case 7709: ret=7708; break;\r
434         case 7711: ret=7710; break;\r
435         case 7713: ret=7712; break;\r
436         case 7715: ret=7714; break;\r
437         case 7717: ret=7716; break;\r
438         case 7719: ret=7718; break;\r
439         case 7721: ret=7720; break;\r
440         case 7723: ret=7722; break;\r
441         case 7725: ret=7724; break;\r
442         case 7727: ret=7726; break;\r
443         case 7729: ret=7728; break;\r
444         case 7731: ret=7730; break;\r
445         case 7733: ret=7732; break;\r
446         case 7735: ret=7734; break;\r
447         case 7737: ret=7736; break;\r
448         case 7739: ret=7738; break;\r
449         case 7741: ret=7740; break;\r
450         case 7743: ret=7742; break;\r
451         case 7745: ret=7744; break;\r
452         case 7747: ret=7746; break;\r
453         case 7749: ret=7748; break;\r
454         case 7751: ret=7750; break;\r
455         case 7753: ret=7752; break;\r
456         case 7755: ret=7754; break;\r
457         case 7757: ret=7756; break;\r
458         case 7759: ret=7758; break;\r
459         case 7761: ret=7760; break;\r
460         case 7763: ret=7762; break;\r
461         case 7765: ret=7764; break;\r
462         case 7767: ret=7766; break;\r
463         case 7769: ret=7768; break;\r
464         case 7771: ret=7770; break;\r
465         case 7773: ret=7772; break;\r
466         case 7775: ret=7774; break;\r
467         case 7777: ret=7776; break;\r
468         case 7779: ret=7778; break;\r
469         case 7781: ret=7780; break;\r
470         case 7783: ret=7782; break;\r
471         case 7785: ret=7784; break;\r
472         case 7787: ret=7786; break;\r
473         case 7789: ret=7788; break;\r
474         case 7791: ret=7790; break;\r
475         case 7793: ret=7792; break;\r
476         case 7795: ret=7794; break;\r
477         case 7797: ret=7796; break;\r
478         case 7799: ret=7798; break;\r
479         case 7801: ret=7800; break;\r
480         case 7803: ret=7802; break;\r
481         case 7805: ret=7804; break;\r
482         case 7807: ret=7806; break;\r
483         case 7809: ret=7808; break;\r
484         case 7811: ret=7810; break;\r
485         case 7813: ret=7812; break;\r
486         case 7815: ret=7814; break;\r
487         case 7817: ret=7816; break;\r
488         case 7819: ret=7818; break;\r
489         case 7821: ret=7820; break;\r
490         case 7823: ret=7822; break;\r
491         case 7825: ret=7824; break;\r
492         case 7827: ret=7826; break;\r
493         case 7829: ret=7828; break;\r
494         case 7841: ret=7840; break;\r
495         case 7843: ret=7842; break;\r
496         case 7845: ret=7844; break;\r
497         case 7847: ret=7846; break;\r
498         case 7849: ret=7848; break;\r
499         case 7851: ret=7850; break;\r
500         case 7853: ret=7852; break;\r
501         case 7855: ret=7854; break;\r
502         case 7857: ret=7856; break;\r
503         case 7859: ret=7858; break;\r
504         case 7861: ret=7860; break;\r
505         case 7863: ret=7862; break;\r
506         case 7865: ret=7864; break;\r
507         case 7867: ret=7866; break;\r
508         case 7869: ret=7868; break;\r
509         case 7871: ret=7870; break;\r
510         case 7873: ret=7872; break;\r
511         case 7875: ret=7874; break;\r
512         case 7877: ret=7876; break;\r
513         case 7879: ret=7878; break;\r
514         case 7881: ret=7880; break;\r
515         case 7883: ret=7882; break;\r
516         case 7885: ret=7884; break;\r
517         case 7887: ret=7886; break;\r
518         case 7889: ret=7888; break;\r
519         case 7891: ret=7890; break;\r
520         case 7893: ret=7892; break;\r
521         case 7895: ret=7894; break;\r
522         case 7897: ret=7896; break;\r
523         case 7899: ret=7898; break;\r
524         case 7901: ret=7900; break;\r
525         case 7903: ret=7902; break;\r
526         case 7905: ret=7904; break;\r
527         case 7907: ret=7906; break;\r
528         case 7909: ret=7908; break;\r
529         case 7911: ret=7910; break;\r
530         case 7913: ret=7912; break;\r
531         case 7915: ret=7914; break;\r
532         case 7917: ret=7916; break;\r
533         case 7919: ret=7918; break;\r
534         case 7921: ret=7920; break;\r
535         case 7923: ret=7922; break;\r
536         case 7925: ret=7924; break;\r
537         case 7927: ret=7926; break;\r
538         case 7929: ret=7928; break;\r
539         case 7936: ret=7944; break;\r
540         case 7937: ret=7945; break;\r
541         case 7938: ret=7946; break;\r
542         case 7939: ret=7947; break;\r
543         case 7940: ret=7948; break;\r
544         case 7941: ret=7949; break;\r
545         case 7942: ret=7950; break;\r
546         case 7943: ret=7951; break;\r
547         case 7952: ret=7960; break;\r
548         case 7953: ret=7961; break;\r
549         case 7954: ret=7962; break;\r
550         case 7955: ret=7963; break;\r
551         case 7956: ret=7964; break;\r
552         case 7957: ret=7965; break;\r
553         case 7968: ret=7976; break;\r
554         case 7969: ret=7977; break;\r
555         case 7970: ret=7978; break;\r
556         case 7971: ret=7979; break;\r
557         case 7972: ret=7980; break;\r
558         case 7973: ret=7981; break;\r
559         case 7974: ret=7982; break;\r
560         case 7975: ret=7983; break;\r
561         case 7984: ret=7992; break;\r
562         case 7985: ret=7993; break;\r
563         case 7986: ret=7994; break;\r
564         case 7987: ret=7995; break;\r
565         case 7988: ret=7996; break;\r
566         case 7989: ret=7997; break;\r
567         case 7990: ret=7998; break;\r
568         case 7991: ret=7999; break;\r
569         case 8000: ret=8008; break;\r
570         case 8001: ret=8009; break;\r
571         case 8002: ret=8010; break;\r
572         case 8003: ret=8011; break;\r
573         case 8004: ret=8012; break;\r
574         case 8005: ret=8013; break;\r
575         case 8017: ret=8025; break;\r
576         case 8019: ret=8027; break;\r
577         case 8021: ret=8029; break;\r
578         case 8023: ret=8031; break;\r
579         case 8032: ret=8040; break;\r
580         case 8033: ret=8041; break;\r
581         case 8034: ret=8042; break;\r
582         case 8035: ret=8043; break;\r
583         case 8036: ret=8044; break;\r
584         case 8037: ret=8045; break;\r
585         case 8038: ret=8046; break;\r
586         case 8039: ret=8047; break;\r
587         case 8048: ret=8122; break;\r
588         case 8049: ret=8123; break;\r
589         case 8050: ret=8136; break;\r
590         case 8051: ret=8137; break;\r
591         case 8052: ret=8138; break;\r
592         case 8053: ret=8139; break;\r
593         case 8054: ret=8154; break;\r
594         case 8055: ret=8155; break;\r
595         case 8056: ret=8184; break;\r
596         case 8057: ret=8185; break;\r
597         case 8058: ret=8170; break;\r
598         case 8059: ret=8171; break;\r
599         case 8060: ret=8186; break;\r
600         case 8061: ret=8187; break;\r
601         case 8064: ret=8072; break;\r
602         case 8065: ret=8073; break;\r
603         case 8066: ret=8074; break;\r
604         case 8067: ret=8075; break;\r
605         case 8068: ret=8076; break;\r
606         case 8069: ret=8077; break;\r
607         case 8070: ret=8078; break;\r
608         case 8071: ret=8079; break;\r
609         case 8080: ret=8088; break;\r
610         case 8081: ret=8089; break;\r
611         case 8082: ret=8090; break;\r
612         case 8083: ret=8091; break;\r
613         case 8084: ret=8092; break;\r
614         case 8085: ret=8093; break;\r
615         case 8086: ret=8094; break;\r
616         case 8087: ret=8095; break;\r
617         case 8096: ret=8104; break;\r
618         case 8097: ret=8105; break;\r
619         case 8098: ret=8106; break;\r
620         case 8099: ret=8107; break;\r
621         case 8100: ret=8108; break;\r
622         case 8101: ret=8109; break;\r
623         case 8102: ret=8110; break;\r
624         case 8103: ret=8111; break;\r
625         case 8112: ret=8120; break;\r
626         case 8113: ret=8121; break;\r
627         case 8115: ret=8124; break;\r
628         case 8131: ret=8140; break;\r
629         case 8144: ret=8152; break;\r
630         case 8145: ret=8153; break;\r
631         case 8160: ret=8168; break;\r
632         case 8161: ret=8169; break;\r
633         case 8165: ret=8172; break;\r
634         case 8179: ret=8188; break;\r
635         case 8560: ret=8544; break;\r
636         case 8561: ret=8545; break;\r
637         case 8562: ret=8546; break;\r
638         case 8563: ret=8547; break;\r
639         case 8564: ret=8548; break;\r
640         case 8565: ret=8549; break;\r
641         case 8566: ret=8550; break;\r
642         case 8567: ret=8551; break;\r
643         case 8568: ret=8552; break;\r
644         case 8569: ret=8553; break;\r
645         case 8570: ret=8554; break;\r
646         case 8571: ret=8555; break;\r
647         case 8572: ret=8556; break;\r
648         case 8573: ret=8557; break;\r
649         case 8574: ret=8558; break;\r
650         case 8575: ret=8559; break;\r
651         case 9424: ret=9398; break;\r
652         case 9425: ret=9399; break;\r
653         case 9426: ret=9400; break;\r
654         case 9427: ret=9401; break;\r
655         case 9428: ret=9402; break;\r
656         case 9429: ret=9403; break;\r
657         case 9430: ret=9404; break;\r
658         case 9431: ret=9405; break;\r
659         case 9432: ret=9406; break;\r
660         case 9433: ret=9407; break;\r
661         case 9434: ret=9408; break;\r
662         case 9435: ret=9409; break;\r
663         case 9436: ret=9410; break;\r
664         case 9437: ret=9411; break;\r
665         case 9438: ret=9412; break;\r
666         case 9439: ret=9413; break;\r
667         case 9440: ret=9414; break;\r
668         case 9441: ret=9415; break;\r
669         case 9442: ret=9416; break;\r
670         case 9443: ret=9417; break;\r
671         case 9444: ret=9418; break;\r
672         case 9445: ret=9419; break;\r
673         case 9446: ret=9420; break;\r
674         case 9447: ret=9421; break;\r
675         case 9448: ret=9422; break;\r
676         case 9449: ret=9423; break;\r
677         case 65345: ret=65313; break;\r
678         case 65346: ret=65314; break;\r
679         case 65347: ret=65315; break;\r
680         case 65348: ret=65316; break;\r
681         case 65349: ret=65317; break;\r
682         case 65350: ret=65318; break;\r
683         case 65351: ret=65319; break;\r
684         case 65352: ret=65320; break;\r
685         case 65353: ret=65321; break;\r
686         case 65354: ret=65322; break;\r
687         case 65355: ret=65323; break;\r
688         case 65356: ret=65324; break;\r
689         case 65357: ret=65325; break;\r
690         case 65358: ret=65326; break;\r
691         case 65359: ret=65327; break;\r
692         case 65360: ret=65328; break;\r
693         case 65361: ret=65329; break;\r
694         case 65362: ret=65330; break;\r
695         case 65363: ret=65331; break;\r
696         case 65364: ret=65332; break;\r
697         case 65365: ret=65333; break;\r
698         case 65366: ret=65334; break;\r
699         case 65367: ret=65335; break;\r
700         case 65368: ret=65336; break;\r
701         case 65369: ret=65337; break;\r
702         case 65370: ret=65338; break;\r
703         }\r
704         return (char)ret;\r
705       }\r
706       return Character.toUpperCase(c);\r
707     }\r
708     /** Convert a character to lower case. */\r
709     public static char toLowerCase(char c) {\r
710       if(java_1_0) {\r
711         int ret = (int)c;\r
712         switch(c) {\r
713         case 65: ret=97; break;\r
714         case 66: ret=98; break;\r
715         case 67: ret=99; break;\r
716         case 68: ret=100; break;\r
717         case 69: ret=101; break;\r
718         case 70: ret=102; break;\r
719         case 71: ret=103; break;\r
720         case 72: ret=104; break;\r
721         case 73: ret=105; break;\r
722         case 74: ret=106; break;\r
723         case 75: ret=107; break;\r
724         case 76: ret=108; break;\r
725         case 77: ret=109; break;\r
726         case 78: ret=110; break;\r
727         case 79: ret=111; break;\r
728         case 80: ret=112; break;\r
729         case 81: ret=113; break;\r
730         case 82: ret=114; break;\r
731         case 83: ret=115; break;\r
732         case 84: ret=116; break;\r
733         case 85: ret=117; break;\r
734         case 86: ret=118; break;\r
735         case 87: ret=119; break;\r
736         case 88: ret=120; break;\r
737         case 89: ret=121; break;\r
738         case 90: ret=122; break;\r
739         case 192: ret=224; break;\r
740         case 193: ret=225; break;\r
741         case 194: ret=226; break;\r
742         case 195: ret=227; break;\r
743         case 196: ret=228; break;\r
744         case 197: ret=229; break;\r
745         case 198: ret=230; break;\r
746         case 199: ret=231; break;\r
747         case 200: ret=232; break;\r
748         case 201: ret=233; break;\r
749         case 202: ret=234; break;\r
750         case 203: ret=235; break;\r
751         case 204: ret=236; break;\r
752         case 205: ret=237; break;\r
753         case 206: ret=238; break;\r
754         case 207: ret=239; break;\r
755         case 208: ret=240; break;\r
756         case 209: ret=241; break;\r
757         case 210: ret=242; break;\r
758         case 211: ret=243; break;\r
759         case 212: ret=244; break;\r
760         case 213: ret=245; break;\r
761         case 214: ret=246; break;\r
762         case 216: ret=248; break;\r
763         case 217: ret=249; break;\r
764         case 218: ret=250; break;\r
765         case 219: ret=251; break;\r
766         case 220: ret=252; break;\r
767         case 221: ret=253; break;\r
768         case 222: ret=254; break;\r
769         case 256: ret=257; break;\r
770         case 258: ret=259; break;\r
771         case 260: ret=261; break;\r
772         case 262: ret=263; break;\r
773         case 264: ret=265; break;\r
774         case 266: ret=267; break;\r
775         case 268: ret=269; break;\r
776         case 270: ret=271; break;\r
777         case 272: ret=273; break;\r
778         case 274: ret=275; break;\r
779         case 276: ret=277; break;\r
780         case 278: ret=279; break;\r
781         case 280: ret=281; break;\r
782         case 282: ret=283; break;\r
783         case 284: ret=285; break;\r
784         case 286: ret=287; break;\r
785         case 288: ret=289; break;\r
786         case 290: ret=291; break;\r
787         case 292: ret=293; break;\r
788         case 294: ret=295; break;\r
789         case 296: ret=297; break;\r
790         case 298: ret=299; break;\r
791         case 300: ret=301; break;\r
792         case 302: ret=303; break;\r
793         case 304: ret=105; break;\r
794         case 306: ret=307; break;\r
795         case 308: ret=309; break;\r
796         case 310: ret=311; break;\r
797         case 313: ret=314; break;\r
798         case 315: ret=316; break;\r
799         case 317: ret=318; break;\r
800         case 319: ret=320; break;\r
801         case 321: ret=322; break;\r
802         case 323: ret=324; break;\r
803         case 325: ret=326; break;\r
804         case 327: ret=328; break;\r
805         case 330: ret=331; break;\r
806         case 332: ret=333; break;\r
807         case 334: ret=335; break;\r
808         case 336: ret=337; break;\r
809         case 338: ret=339; break;\r
810         case 340: ret=341; break;\r
811         case 342: ret=343; break;\r
812         case 344: ret=345; break;\r
813         case 346: ret=347; break;\r
814         case 348: ret=349; break;\r
815         case 350: ret=351; break;\r
816         case 352: ret=353; break;\r
817         case 354: ret=355; break;\r
818         case 356: ret=357; break;\r
819         case 358: ret=359; break;\r
820         case 360: ret=361; break;\r
821         case 362: ret=363; break;\r
822         case 364: ret=365; break;\r
823         case 366: ret=367; break;\r
824         case 368: ret=369; break;\r
825         case 370: ret=371; break;\r
826         case 372: ret=373; break;\r
827         case 374: ret=375; break;\r
828         case 376: ret=255; break;\r
829         case 377: ret=378; break;\r
830         case 379: ret=380; break;\r
831         case 381: ret=382; break;\r
832         case 385: ret=595; break;\r
833         case 386: ret=387; break;\r
834         case 388: ret=389; break;\r
835         case 390: ret=596; break;\r
836         case 391: ret=392; break;\r
837         case 393: ret=598; break;\r
838         case 394: ret=599; break;\r
839         case 395: ret=396; break;\r
840         case 398: ret=600; break;\r
841         case 399: ret=601; break;\r
842         case 400: ret=603; break;\r
843         case 401: ret=402; break;\r
844         case 403: ret=608; break;\r
845         case 404: ret=611; break;\r
846         case 406: ret=617; break;\r
847         case 407: ret=616; break;\r
848         case 408: ret=409; break;\r
849         case 412: ret=623; break;\r
850         case 413: ret=626; break;\r
851         case 416: ret=417; break;\r
852         case 418: ret=419; break;\r
853         case 420: ret=421; break;\r
854         case 423: ret=424; break;\r
855         case 425: ret=643; break;\r
856         case 428: ret=429; break;\r
857         case 430: ret=648; break;\r
858         case 431: ret=432; break;\r
859         case 433: ret=650; break;\r
860         case 434: ret=651; break;\r
861         case 435: ret=436; break;\r
862         case 437: ret=438; break;\r
863         case 439: ret=658; break;\r
864         case 440: ret=441; break;\r
865         case 444: ret=445; break;\r
866         case 452: ret=454; break;\r
867         case 453: ret=454; break;\r
868         case 455: ret=457; break;\r
869         case 456: ret=457; break;\r
870         case 458: ret=460; break;\r
871         case 459: ret=460; break;\r
872         case 461: ret=462; break;\r
873         case 463: ret=464; break;\r
874         case 465: ret=466; break;\r
875         case 467: ret=468; break;\r
876         case 469: ret=470; break;\r
877         case 471: ret=472; break;\r
878         case 473: ret=474; break;\r
879         case 475: ret=476; break;\r
880         case 478: ret=479; break;\r
881         case 480: ret=481; break;\r
882         case 482: ret=483; break;\r
883         case 484: ret=485; break;\r
884         case 486: ret=487; break;\r
885         case 488: ret=489; break;\r
886         case 490: ret=491; break;\r
887         case 492: ret=493; break;\r
888         case 494: ret=495; break;\r
889         case 497: ret=499; break;\r
890         case 498: ret=499; break;\r
891         case 500: ret=501; break;\r
892         case 506: ret=507; break;\r
893         case 508: ret=509; break;\r
894         case 510: ret=511; break;\r
895         case 512: ret=513; break;\r
896         case 514: ret=515; break;\r
897         case 516: ret=517; break;\r
898         case 518: ret=519; break;\r
899         case 520: ret=521; break;\r
900         case 522: ret=523; break;\r
901         case 524: ret=525; break;\r
902         case 526: ret=527; break;\r
903         case 528: ret=529; break;\r
904         case 530: ret=531; break;\r
905         case 532: ret=533; break;\r
906         case 534: ret=535; break;\r
907         case 902: ret=940; break;\r
908         case 904: ret=941; break;\r
909         case 905: ret=942; break;\r
910         case 906: ret=943; break;\r
911         case 908: ret=972; break;\r
912         case 910: ret=973; break;\r
913         case 911: ret=974; break;\r
914         case 913: ret=945; break;\r
915         case 914: ret=946; break;\r
916         case 915: ret=947; break;\r
917         case 916: ret=948; break;\r
918         case 917: ret=949; break;\r
919         case 918: ret=950; break;\r
920         case 919: ret=951; break;\r
921         case 920: ret=952; break;\r
922         case 921: ret=953; break;\r
923         case 922: ret=954; break;\r
924         case 923: ret=955; break;\r
925         case 924: ret=956; break;\r
926         case 925: ret=957; break;\r
927         case 926: ret=958; break;\r
928         case 927: ret=959; break;\r
929         case 928: ret=960; break;\r
930         case 929: ret=961; break;\r
931         case 931: ret=963; break;\r
932         case 932: ret=964; break;\r
933         case 933: ret=965; break;\r
934         case 934: ret=966; break;\r
935         case 935: ret=967; break;\r
936         case 936: ret=968; break;\r
937         case 937: ret=969; break;\r
938         case 938: ret=970; break;\r
939         case 939: ret=971; break;\r
940         case 994: ret=995; break;\r
941         case 996: ret=997; break;\r
942         case 998: ret=999; break;\r
943         case 1000: ret=1001; break;\r
944         case 1002: ret=1003; break;\r
945         case 1004: ret=1005; break;\r
946         case 1006: ret=1007; break;\r
947         case 1025: ret=1105; break;\r
948         case 1026: ret=1106; break;\r
949         case 1027: ret=1107; break;\r
950         case 1028: ret=1108; break;\r
951         case 1029: ret=1109; break;\r
952         case 1030: ret=1110; break;\r
953         case 1031: ret=1111; break;\r
954         case 1032: ret=1112; break;\r
955         case 1033: ret=1113; break;\r
956         case 1034: ret=1114; break;\r
957         case 1035: ret=1115; break;\r
958         case 1036: ret=1116; break;\r
959         case 1038: ret=1118; break;\r
960         case 1039: ret=1119; break;\r
961         case 1040: ret=1072; break;\r
962         case 1041: ret=1073; break;\r
963         case 1042: ret=1074; break;\r
964         case 1043: ret=1075; break;\r
965         case 1044: ret=1076; break;\r
966         case 1045: ret=1077; break;\r
967         case 1046: ret=1078; break;\r
968         case 1047: ret=1079; break;\r
969         case 1048: ret=1080; break;\r
970         case 1049: ret=1081; break;\r
971         case 1050: ret=1082; break;\r
972         case 1051: ret=1083; break;\r
973         case 1052: ret=1084; break;\r
974         case 1053: ret=1085; break;\r
975         case 1054: ret=1086; break;\r
976         case 1055: ret=1087; break;\r
977         case 1056: ret=1088; break;\r
978         case 1057: ret=1089; break;\r
979         case 1058: ret=1090; break;\r
980         case 1059: ret=1091; break;\r
981         case 1060: ret=1092; break;\r
982         case 1061: ret=1093; break;\r
983         case 1062: ret=1094; break;\r
984         case 1063: ret=1095; break;\r
985         case 1064: ret=1096; break;\r
986         case 1065: ret=1097; break;\r
987         case 1066: ret=1098; break;\r
988         case 1067: ret=1099; break;\r
989         case 1068: ret=1100; break;\r
990         case 1069: ret=1101; break;\r
991         case 1070: ret=1102; break;\r
992         case 1071: ret=1103; break;\r
993         case 1120: ret=1121; break;\r
994         case 1122: ret=1123; break;\r
995         case 1124: ret=1125; break;\r
996         case 1126: ret=1127; break;\r
997         case 1128: ret=1129; break;\r
998         case 1130: ret=1131; break;\r
999         case 1132: ret=1133; break;\r
1000         case 1134: ret=1135; break;\r
1001         case 1136: ret=1137; break;\r
1002         case 1138: ret=1139; break;\r
1003         case 1140: ret=1141; break;\r
1004         case 1142: ret=1143; break;\r
1005         case 1144: ret=1145; break;\r
1006         case 1146: ret=1147; break;\r
1007         case 1148: ret=1149; break;\r
1008         case 1150: ret=1151; break;\r
1009         case 1152: ret=1153; break;\r
1010         case 1168: ret=1169; break;\r
1011         case 1170: ret=1171; break;\r
1012         case 1172: ret=1173; break;\r
1013         case 1174: ret=1175; break;\r
1014         case 1176: ret=1177; break;\r
1015         case 1178: ret=1179; break;\r
1016         case 1180: ret=1181; break;\r
1017         case 1182: ret=1183; break;\r
1018         case 1184: ret=1185; break;\r
1019         case 1186: ret=1187; break;\r
1020         case 1188: ret=1189; break;\r
1021         case 1190: ret=1191; break;\r
1022         case 1192: ret=1193; break;\r
1023         case 1194: ret=1195; break;\r
1024         case 1196: ret=1197; break;\r
1025         case 1198: ret=1199; break;\r
1026         case 1200: ret=1201; break;\r
1027         case 1202: ret=1203; break;\r
1028         case 1204: ret=1205; break;\r
1029         case 1206: ret=1207; break;\r
1030         case 1208: ret=1209; break;\r
1031         case 1210: ret=1211; break;\r
1032         case 1212: ret=1213; break;\r
1033         case 1214: ret=1215; break;\r
1034         case 1217: ret=1218; break;\r
1035         case 1219: ret=1220; break;\r
1036         case 1223: ret=1224; break;\r
1037         case 1227: ret=1228; break;\r
1038         case 1232: ret=1233; break;\r
1039         case 1234: ret=1235; break;\r
1040         case 1236: ret=1237; break;\r
1041         case 1238: ret=1239; break;\r
1042         case 1240: ret=1241; break;\r
1043         case 1242: ret=1243; break;\r
1044         case 1244: ret=1245; break;\r
1045         case 1246: ret=1247; break;\r
1046         case 1248: ret=1249; break;\r
1047         case 1250: ret=1251; break;\r
1048         case 1252: ret=1253; break;\r
1049         case 1254: ret=1255; break;\r
1050         case 1256: ret=1257; break;\r
1051         case 1258: ret=1259; break;\r
1052         case 1262: ret=1263; break;\r
1053         case 1264: ret=1265; break;\r
1054         case 1266: ret=1267; break;\r
1055         case 1268: ret=1269; break;\r
1056         case 1272: ret=1273; break;\r
1057         case 1329: ret=1377; break;\r
1058         case 1330: ret=1378; break;\r
1059         case 1331: ret=1379; break;\r
1060         case 1332: ret=1380; break;\r
1061         case 1333: ret=1381; break;\r
1062         case 1334: ret=1382; break;\r
1063         case 1335: ret=1383; break;\r
1064         case 1336: ret=1384; break;\r
1065         case 1337: ret=1385; break;\r
1066         case 1338: ret=1386; break;\r
1067         case 1339: ret=1387; break;\r
1068         case 1340: ret=1388; break;\r
1069         case 1341: ret=1389; break;\r
1070         case 1342: ret=1390; break;\r
1071         case 1343: ret=1391; break;\r
1072         case 1344: ret=1392; break;\r
1073         case 1345: ret=1393; break;\r
1074         case 1346: ret=1394; break;\r
1075         case 1347: ret=1395; break;\r
1076         case 1348: ret=1396; break;\r
1077         case 1349: ret=1397; break;\r
1078         case 1350: ret=1398; break;\r
1079         case 1351: ret=1399; break;\r
1080         case 1352: ret=1400; break;\r
1081         case 1353: ret=1401; break;\r
1082         case 1354: ret=1402; break;\r
1083         case 1355: ret=1403; break;\r
1084         case 1356: ret=1404; break;\r
1085         case 1357: ret=1405; break;\r
1086         case 1358: ret=1406; break;\r
1087         case 1359: ret=1407; break;\r
1088         case 1360: ret=1408; break;\r
1089         case 1361: ret=1409; break;\r
1090         case 1362: ret=1410; break;\r
1091         case 1363: ret=1411; break;\r
1092         case 1364: ret=1412; break;\r
1093         case 1365: ret=1413; break;\r
1094         case 1366: ret=1414; break;\r
1095         case 4256: ret=4304; break;\r
1096         case 4257: ret=4305; break;\r
1097         case 4258: ret=4306; break;\r
1098         case 4259: ret=4307; break;\r
1099         case 4260: ret=4308; break;\r
1100         case 4261: ret=4309; break;\r
1101         case 4262: ret=4310; break;\r
1102         case 4263: ret=4311; break;\r
1103         case 4264: ret=4312; break;\r
1104         case 4265: ret=4313; break;\r
1105         case 4266: ret=4314; break;\r
1106         case 4267: ret=4315; break;\r
1107         case 4268: ret=4316; break;\r
1108         case 4269: ret=4317; break;\r
1109         case 4270: ret=4318; break;\r
1110         case 4271: ret=4319; break;\r
1111         case 4272: ret=4320; break;\r
1112         case 4273: ret=4321; break;\r
1113         case 4274: ret=4322; break;\r
1114         case 4275: ret=4323; break;\r
1115         case 4276: ret=4324; break;\r
1116         case 4277: ret=4325; break;\r
1117         case 4278: ret=4326; break;\r
1118         case 4279: ret=4327; break;\r
1119         case 4280: ret=4328; break;\r
1120         case 4281: ret=4329; break;\r
1121         case 4282: ret=4330; break;\r
1122         case 4283: ret=4331; break;\r
1123         case 4284: ret=4332; break;\r
1124         case 4285: ret=4333; break;\r
1125         case 4286: ret=4334; break;\r
1126         case 4287: ret=4335; break;\r
1127         case 4288: ret=4336; break;\r
1128         case 4289: ret=4337; break;\r
1129         case 4290: ret=4338; break;\r
1130         case 4291: ret=4339; break;\r
1131         case 4292: ret=4340; break;\r
1132         case 4293: ret=4341; break;\r
1133         case 7680: ret=7681; break;\r
1134         case 7682: ret=7683; break;\r
1135         case 7684: ret=7685; break;\r
1136         case 7686: ret=7687; break;\r
1137         case 7688: ret=7689; break;\r
1138         case 7690: ret=7691; break;\r
1139         case 7692: ret=7693; break;\r
1140         case 7694: ret=7695; break;\r
1141         case 7696: ret=7697; break;\r
1142         case 7698: ret=7699; break;\r
1143         case 7700: ret=7701; break;\r
1144         case 7702: ret=7703; break;\r
1145         case 7704: ret=7705; break;\r
1146         case 7706: ret=7707; break;\r
1147         case 7708: ret=7709; break;\r
1148         case 7710: ret=7711; break;\r
1149         case 7712: ret=7713; break;\r
1150         case 7714: ret=7715; break;\r
1151         case 7716: ret=7717; break;\r
1152         case 7718: ret=7719; break;\r
1153         case 7720: ret=7721; break;\r
1154         case 7722: ret=7723; break;\r
1155         case 7724: ret=7725; break;\r
1156         case 7726: ret=7727; break;\r
1157         case 7728: ret=7729; break;\r
1158         case 7730: ret=7731; break;\r
1159         case 7732: ret=7733; break;\r
1160         case 7734: ret=7735; break;\r
1161         case 7736: ret=7737; break;\r
1162         case 7738: ret=7739; break;\r
1163         case 7740: ret=7741; break;\r
1164         case 7742: ret=7743; break;\r
1165         case 7744: ret=7745; break;\r
1166         case 7746: ret=7747; break;\r
1167         case 7748: ret=7749; break;\r
1168         case 7750: ret=7751; break;\r
1169         case 7752: ret=7753; break;\r
1170         case 7754: ret=7755; break;\r
1171         case 7756: ret=7757; break;\r
1172         case 7758: ret=7759; break;\r
1173         case 7760: ret=7761; break;\r
1174         case 7762: ret=7763; break;\r
1175         case 7764: ret=7765; break;\r
1176         case 7766: ret=7767; break;\r
1177         case 7768: ret=7769; break;\r
1178         case 7770: ret=7771; break;\r
1179         case 7772: ret=7773; break;\r
1180         case 7774: ret=7775; break;\r
1181         case 7776: ret=7777; break;\r
1182         case 7778: ret=7779; break;\r
1183         case 7780: ret=7781; break;\r
1184         case 7782: ret=7783; break;\r
1185         case 7784: ret=7785; break;\r
1186         case 7786: ret=7787; break;\r
1187         case 7788: ret=7789; break;\r
1188         case 7790: ret=7791; break;\r
1189         case 7792: ret=7793; break;\r
1190         case 7794: ret=7795; break;\r
1191         case 7796: ret=7797; break;\r
1192         case 7798: ret=7799; break;\r
1193         case 7800: ret=7801; break;\r
1194         case 7802: ret=7803; break;\r
1195         case 7804: ret=7805; break;\r
1196         case 7806: ret=7807; break;\r
1197         case 7808: ret=7809; break;\r
1198         case 7810: ret=7811; break;\r
1199         case 7812: ret=7813; break;\r
1200         case 7814: ret=7815; break;\r
1201         case 7816: ret=7817; break;\r
1202         case 7818: ret=7819; break;\r
1203         case 7820: ret=7821; break;\r
1204         case 7822: ret=7823; break;\r
1205         case 7824: ret=7825; break;\r
1206         case 7826: ret=7827; break;\r
1207         case 7828: ret=7829; break;\r
1208         case 7840: ret=7841; break;\r
1209         case 7842: ret=7843; break;\r
1210         case 7844: ret=7845; break;\r
1211         case 7846: ret=7847; break;\r
1212         case 7848: ret=7849; break;\r
1213         case 7850: ret=7851; break;\r
1214         case 7852: ret=7853; break;\r
1215         case 7854: ret=7855; break;\r
1216         case 7856: ret=7857; break;\r
1217         case 7858: ret=7859; break;\r
1218         case 7860: ret=7861; break;\r
1219         case 7862: ret=7863; break;\r
1220         case 7864: ret=7865; break;\r
1221         case 7866: ret=7867; break;\r
1222         case 7868: ret=7869; break;\r
1223         case 7870: ret=7871; break;\r
1224         case 7872: ret=7873; break;\r
1225         case 7874: ret=7875; break;\r
1226         case 7876: ret=7877; break;\r
1227         case 7878: ret=7879; break;\r
1228         case 7880: ret=7881; break;\r
1229         case 7882: ret=7883; break;\r
1230         case 7884: ret=7885; break;\r
1231         case 7886: ret=7887; break;\r
1232         case 7888: ret=7889; break;\r
1233         case 7890: ret=7891; break;\r
1234         case 7892: ret=7893; break;\r
1235         case 7894: ret=7895; break;\r
1236         case 7896: ret=7897; break;\r
1237         case 7898: ret=7899; break;\r
1238         case 7900: ret=7901; break;\r
1239         case 7902: ret=7903; break;\r
1240         case 7904: ret=7905; break;\r
1241         case 7906: ret=7907; break;\r
1242         case 7908: ret=7909; break;\r
1243         case 7910: ret=7911; break;\r
1244         case 7912: ret=7913; break;\r
1245         case 7914: ret=7915; break;\r
1246         case 7916: ret=7917; break;\r
1247         case 7918: ret=7919; break;\r
1248         case 7920: ret=7921; break;\r
1249         case 7922: ret=7923; break;\r
1250         case 7924: ret=7925; break;\r
1251         case 7926: ret=7927; break;\r
1252         case 7928: ret=7929; break;\r
1253         case 7944: ret=7936; break;\r
1254         case 7945: ret=7937; break;\r
1255         case 7946: ret=7938; break;\r
1256         case 7947: ret=7939; break;\r
1257         case 7948: ret=7940; break;\r
1258         case 7949: ret=7941; break;\r
1259         case 7950: ret=7942; break;\r
1260         case 7951: ret=7943; break;\r
1261         case 7960: ret=7952; break;\r
1262         case 7961: ret=7953; break;\r
1263         case 7962: ret=7954; break;\r
1264         case 7963: ret=7955; break;\r
1265         case 7964: ret=7956; break;\r
1266         case 7965: ret=7957; break;\r
1267         case 7976: ret=7968; break;\r
1268         case 7977: ret=7969; break;\r
1269         case 7978: ret=7970; break;\r
1270         case 7979: ret=7971; break;\r
1271         case 7980: ret=7972; break;\r
1272         case 7981: ret=7973; break;\r
1273         case 7982: ret=7974; break;\r
1274         case 7983: ret=7975; break;\r
1275         case 7992: ret=7984; break;\r
1276         case 7993: ret=7985; break;\r
1277         case 7994: ret=7986; break;\r
1278         case 7995: ret=7987; break;\r
1279         case 7996: ret=7988; break;\r
1280         case 7997: ret=7989; break;\r
1281         case 7998: ret=7990; break;\r
1282         case 7999: ret=7991; break;\r
1283         case 8008: ret=8000; break;\r
1284         case 8009: ret=8001; break;\r
1285         case 8010: ret=8002; break;\r
1286         case 8011: ret=8003; break;\r
1287         case 8012: ret=8004; break;\r
1288         case 8013: ret=8005; break;\r
1289         case 8025: ret=8017; break;\r
1290         case 8027: ret=8019; break;\r
1291         case 8029: ret=8021; break;\r
1292         case 8031: ret=8023; break;\r
1293         case 8040: ret=8032; break;\r
1294         case 8041: ret=8033; break;\r
1295         case 8042: ret=8034; break;\r
1296         case 8043: ret=8035; break;\r
1297         case 8044: ret=8036; break;\r
1298         case 8045: ret=8037; break;\r
1299         case 8046: ret=8038; break;\r
1300         case 8047: ret=8039; break;\r
1301         case 8072: ret=8064; break;\r
1302         case 8073: ret=8065; break;\r
1303         case 8074: ret=8066; break;\r
1304         case 8075: ret=8067; break;\r
1305         case 8076: ret=8068; break;\r
1306         case 8077: ret=8069; break;\r
1307         case 8078: ret=8070; break;\r
1308         case 8079: ret=8071; break;\r
1309         case 8088: ret=8080; break;\r
1310         case 8089: ret=8081; break;\r
1311         case 8090: ret=8082; break;\r
1312         case 8091: ret=8083; break;\r
1313         case 8092: ret=8084; break;\r
1314         case 8093: ret=8085; break;\r
1315         case 8094: ret=8086; break;\r
1316         case 8095: ret=8087; break;\r
1317         case 8104: ret=8096; break;\r
1318         case 8105: ret=8097; break;\r
1319         case 8106: ret=8098; break;\r
1320         case 8107: ret=8099; break;\r
1321         case 8108: ret=8100; break;\r
1322         case 8109: ret=8101; break;\r
1323         case 8110: ret=8102; break;\r
1324         case 8111: ret=8103; break;\r
1325         case 8120: ret=8112; break;\r
1326         case 8121: ret=8113; break;\r
1327         case 8122: ret=8048; break;\r
1328         case 8123: ret=8049; break;\r
1329         case 8124: ret=8115; break;\r
1330         case 8136: ret=8050; break;\r
1331         case 8137: ret=8051; break;\r
1332         case 8138: ret=8052; break;\r
1333         case 8139: ret=8053; break;\r
1334         case 8140: ret=8131; break;\r
1335         case 8152: ret=8144; break;\r
1336         case 8153: ret=8145; break;\r
1337         case 8154: ret=8054; break;\r
1338         case 8155: ret=8055; break;\r
1339         case 8168: ret=8160; break;\r
1340         case 8169: ret=8161; break;\r
1341         case 8170: ret=8058; break;\r
1342         case 8171: ret=8059; break;\r
1343         case 8172: ret=8165; break;\r
1344         case 8184: ret=8056; break;\r
1345         case 8185: ret=8057; break;\r
1346         case 8186: ret=8060; break;\r
1347         case 8187: ret=8061; break;\r
1348         case 8188: ret=8179; break;\r
1349         case 8544: ret=8560; break;\r
1350         case 8545: ret=8561; break;\r
1351         case 8546: ret=8562; break;\r
1352         case 8547: ret=8563; break;\r
1353         case 8548: ret=8564; break;\r
1354         case 8549: ret=8565; break;\r
1355         case 8550: ret=8566; break;\r
1356         case 8551: ret=8567; break;\r
1357         case 8552: ret=8568; break;\r
1358         case 8553: ret=8569; break;\r
1359         case 8554: ret=8570; break;\r
1360         case 8555: ret=8571; break;\r
1361         case 8556: ret=8572; break;\r
1362         case 8557: ret=8573; break;\r
1363         case 8558: ret=8574; break;\r
1364         case 8559: ret=8575; break;\r
1365         case 9398: ret=9424; break;\r
1366         case 9399: ret=9425; break;\r
1367         case 9400: ret=9426; break;\r
1368         case 9401: ret=9427; break;\r
1369         case 9402: ret=9428; break;\r
1370         case 9403: ret=9429; break;\r
1371         case 9404: ret=9430; break;\r
1372         case 9405: ret=9431; break;\r
1373         case 9406: ret=9432; break;\r
1374         case 9407: ret=9433; break;\r
1375         case 9408: ret=9434; break;\r
1376         case 9409: ret=9435; break;\r
1377         case 9410: ret=9436; break;\r
1378         case 9411: ret=9437; break;\r
1379         case 9412: ret=9438; break;\r
1380         case 9413: ret=9439; break;\r
1381         case 9414: ret=9440; break;\r
1382         case 9415: ret=9441; break;\r
1383         case 9416: ret=9442; break;\r
1384         case 9417: ret=9443; break;\r
1385         case 9418: ret=9444; break;\r
1386         case 9419: ret=9445; break;\r
1387         case 9420: ret=9446; break;\r
1388         case 9421: ret=9447; break;\r
1389         case 9422: ret=9448; break;\r
1390         case 9423: ret=9449; break;\r
1391         case 65313: ret=65345; break;\r
1392         case 65314: ret=65346; break;\r
1393         case 65315: ret=65347; break;\r
1394         case 65316: ret=65348; break;\r
1395         case 65317: ret=65349; break;\r
1396         case 65318: ret=65350; break;\r
1397         case 65319: ret=65351; break;\r
1398         case 65320: ret=65352; break;\r
1399         case 65321: ret=65353; break;\r
1400         case 65322: ret=65354; break;\r
1401         case 65323: ret=65355; break;\r
1402         case 65324: ret=65356; break;\r
1403         case 65325: ret=65357; break;\r
1404         case 65326: ret=65358; break;\r
1405         case 65327: ret=65359; break;\r
1406         case 65328: ret=65360; break;\r
1407         case 65329: ret=65361; break;\r
1408         case 65330: ret=65362; break;\r
1409         case 65331: ret=65363; break;\r
1410         case 65332: ret=65364; break;\r
1411         case 65333: ret=65365; break;\r
1412         case 65334: ret=65366; break;\r
1413         case 65335: ret=65367; break;\r
1414         case 65336: ret=65368; break;\r
1415         case 65337: ret=65369; break;\r
1416         case 65338: ret=65370; break;\r
1417         }\r
1418         return (char)ret;\r
1419       }\r
1420       return Character.toLowerCase(c);\r
1421     }\r
1422     /** Convert a String to title case. */\r
1423     public static String toTitleCase(String s) {\r
1424         StringBuffer sb = new StringBuffer();\r
1425         for(int i=0;i<s.length();i++)\r
1426             sb.append(CaseMgr.toTitleCase(s.charAt(i)));\r
1427         return sb.toString();\r
1428     }\r
1429     /** Convert a String to upper case. */\r
1430     public static String toUpperCase(String s) {\r
1431         StringBuffer sb = new StringBuffer();\r
1432         for(int i=0;i<s.length();i++)\r
1433             sb.append(CaseMgr.toUpperCase(s.charAt(i)));\r
1434         return sb.toString();\r
1435     }\r
1436     /** Convert a String to lower case. */\r
1437     public static String toLowerCase(String s) {\r
1438         StringBuffer sb = new StringBuffer();\r
1439         for(int i=0;i<s.length();i++)\r
1440             sb.append(CaseMgr.toLowerCase(s.charAt(i)));\r
1441         return sb.toString();\r
1442     }\r
1443     /** Convert a character to title case.*/\r
1444     public static char toTitleCase(char c) {\r
1445       if(java_1_0) {\r
1446         int ret = (int)toUpperCase(c);\r
1447         switch(c) {\r
1448         case 452: ret=453; break;\r
1449         case 453: ret=453; break;\r
1450         case 454: ret=453; break;\r
1451         case 455: ret=456; break;\r
1452         case 456: ret=456; break;\r
1453         case 457: ret=456; break;\r
1454         case 458: ret=459; break;\r
1455         case 459: ret=459; break;\r
1456         case 460: ret=459; break;\r
1457         case 497: ret=498; break;\r
1458         case 498: ret=498; break;\r
1459         case 499: ret=498; break;\r
1460         }\r
1461         return (char)ret;\r
1462       }\r
1463       return Character.toTitleCase(c);\r
1464     }\r
1465     /** Duplicates the regionMatches routine of String -- but\r
1466         makes use of the definitions of upper, lower, and title\r
1467         case in this class when ignoreCase is set. */\r
1468     public static boolean regionMatches( StringLike s1,\r
1469         boolean ign,int i1,StringLike s2,int i2,int i3) {\r
1470         int itot=i2+i3;\r
1471         if(itot>s2.length()||i1+i3>s1.length()) return false;\r
1472         if(!ign) {\r
1473             for(int i=i2;i<itot;i++)\r
1474                 if(s2.charAt(i) != s1.charAt(i1++))\r
1475                     return false;\r
1476         } else {\r
1477             for(int i=i2;i<itot;i++)\r
1478                 if(toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
1479                     return false;\r
1480         }\r
1481         return true;\r
1482     }\r
1483     /** Duplicates the regionMatches routine of String -- but\r
1484         makes use of the definitions of upper, lower, and title\r
1485         case in this class when ignoreCase is set. */\r
1486     public static boolean regionMatches( String s1,\r
1487         boolean ign,int i1,StringLike s2,int i2,int i3) {\r
1488         int itot=i2+i3;\r
1489         if(itot>s2.length()||i1+i3>s1.length()) return false;\r
1490         if(!ign) {\r
1491             for(int i=i2;i<itot;i++)\r
1492                 if(s2.charAt(i) != s1.charAt(i1++))\r
1493                     return false;\r
1494         } else {\r
1495             for(int i=i2;i<itot;i++)\r
1496                 if(toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
1497                     return false;\r
1498         }\r
1499         return true;\r
1500     }\r
1501     /** Duplicates the regionMatches routine of String -- but\r
1502         makes use of the definitions of upper, lower, and title\r
1503         case in this class when ignoreCase is set. */\r
1504     public static boolean regionMatches( StringLike s1,\r
1505         boolean ign,int i1,String s2,int i2,int i3) {\r
1506         int itot=i2+i3;\r
1507         if(itot>s2.length()||i1+i3>s1.length()) return false;\r
1508         if(!ign) {\r
1509             for(int i=i2;i<itot;i++)\r
1510                 if(s2.charAt(i) != s1.charAt(i1++))\r
1511                     return false;\r
1512         } else {\r
1513             for(int i=i2;i<itot;i++)\r
1514                 if(toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
1515                     return false;\r
1516         }\r
1517         return true;\r
1518     }\r
1519     /** Duplicates the regionMatches routine of String -- but\r
1520         makes use of the definitions of upper, lower, and title\r
1521         case in this class when ignoreCase is set. */\r
1522     public static boolean regionMatches( String s1,\r
1523         boolean ign,int i1,String s2,int i2,int i3) {\r
1524         int itot=i2+i3;\r
1525         if(itot>s2.length()||i1+i3>s1.length()) return false;\r
1526         if(!ign) {\r
1527             for(int i=i2;i<itot;i++)\r
1528                 if(s2.charAt(i) != s1.charAt(i1++))\r
1529                     return false;\r
1530         } else {\r
1531             for(int i=i2;i<itot;i++)\r
1532                 if(toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
1533                     return false;\r
1534         }\r
1535         return true;\r
1536     }\r
1537 }\r