Files
web2py/gluon/contrib/translitcodec/__init__.py
T
2013-12-02 21:33:34 +01:00

2444 lines
36 KiB
Python

# -*- coding: utf-8 -*-
"""Unicode to 8-bit charset transliteration codec.
This package contains codecs for transliterating ISO 10646 texts into
best-effort representations using smaller coded character sets (ASCII,
ISO 8859, etc.). The translation tables used by the codecs are from
the ``transtab`` collection by Markus Kuhn.
:copyright: the translitcodec authors and developers, see AUTHORS.
:license: MIT, see LICENSE for more details.
"""
import codecs
import sys
import unicodedata
__version_info__ = (0, 3)
__version__ = '.'.join(str(_) for _ in __version_info__)
def long_encode(input, errors='strict'):
"""Transliterate to 8 bit using as many letters as needed.
For example, \u00e4 LATIN SMALL LETTER A WITH DIAERESIS ``ä`` will
be replaced with ``ae``.
"""
if not isinstance(input, unicode):
input = unicode(input, sys.getdefaultencoding(), errors)
length = len(input)
input = unicodedata.normalize('NFKC', input)
return input.translate(long_table), length
def short_encode(input, errors='strict'):
"""Transliterate to 8 bit using as few letters as possible.
For example, \u00e4 LATIN SMALL LETTER A WITH DIAERESIS ``ä`` will
be replaced with ``a``.
"""
if not isinstance(input, unicode):
input = unicode(input, sys.getdefaultencoding(), errors)
length = len(input)
input = unicodedata.normalize('NFKC', input)
return input.translate(short_table), length
def single_encode(input, errors='strict'):
"""Transliterate to 8 bit using only single letter replacements.
For example, \u2639 WHITE FROWNING FACE ``☹`` will be passed
through unchanged.
"""
if not isinstance(input, unicode):
input = unicode(input, sys.getdefaultencoding(), errors)
length = len(input)
input = unicodedata.normalize('NFKC', input)
return input.translate(single_table), length
def no_decode(input, errors='strict'):
raise TypeError("transliterating codec does not support decode.")
def _double_encoding_factory(encoder, byte_encoder, byte_encoding):
"""Send the transliterated output to another codec."""
def dbl_encode(input, errors='strict'):
uni, length = encoder(input, errors)
return byte_encoder(uni, errors)[0], length
dbl_encode.__name__ = '%s_%s' % (encoder.__name__, byte_encoding)
return dbl_encode
def trans_search(encoding):
"""Lookup transliterating codecs."""
if encoding == 'transliterate':
return codecs.CodecInfo(long_encode, no_decode)
# translit/long/utf8
# translit/one
# translit/short/ascii
if encoding.startswith('translit/'):
parts = encoding.split('/')
if parts[1] == 'long':
encoder = long_encode
elif parts[1] == 'short':
encoder = short_encode
elif parts[1] == 'one':
encoder = single_encode
else:
return None
if len(parts) == 2:
pass
elif len(parts) == 3:
byte_enc = parts[2]
byte_encoder = codecs.lookup(byte_enc).encode
encoder = _double_encoding_factory(encoder, byte_encoder, byte_enc)
else:
return None
return codecs.CodecInfo(encoder, no_decode)
return None
codecs.register(trans_search)
### Code below is generated by update_table.py; do not edit.
### >
long_table = {
160: u' ',
161: u'!',
162: u'c',
163: u'GBP',
165: u'Y',
166: u'|',
167: u'S',
168: u'"',
169: u'(c)',
170: u'a',
171: u'<<',
172: u'-',
173: u'-',
174: u'(R)',
175: u'-',
176: u' ',
177: u'+/-',
178: u'^2',
179: u'^3',
180: u"'",
181: u'\u03bc',
182: u'P',
183: u'.',
184: u',',
185: u'^1',
186: u'o',
187: u'>>',
188: u' 1/4',
189: u' 1/2',
190: u' 3/4',
191: u'?',
192: u'A',
193: u'A',
194: u'A',
195: u'A',
196: u'Ae',
197: u'Aa',
198: u'AE',
199: u'C',
200: u'E',
201: u'E',
202: u'E',
203: u'E',
204: u'I',
205: u'I',
206: u'I',
207: u'I',
208: u'D',
209: u'N',
210: u'O',
211: u'O',
212: u'O',
213: u'O',
214: u'Oe',
215: u'x',
216: u'O',
217: u'U',
218: u'U',
219: u'U',
220: u'Ue',
221: u'Y',
222: u'Th',
223: u'ss',
224: u'a',
225: u'a',
226: u'a',
227: u'a',
228: u'ae',
229: u'aa',
230: u'ae',
231: u'c',
232: u'e',
233: u'e',
234: u'e',
235: u'e',
236: u'i',
237: u'i',
238: u'i',
239: u'i',
240: u'd',
241: u'n',
242: u'o',
243: u'o',
244: u'o',
245: u'o',
246: u'oe',
247: u':',
248: u'o',
249: u'u',
250: u'u',
251: u'u',
252: u'ue',
253: u'y',
254: u'th',
255: u'y',
256: u'A',
257: u'a',
258: u'A',
259: u'a',
260: u'A',
261: u'a',
262: u'C',
263: u'c',
264: u'Ch',
265: u'ch',
266: u'C',
267: u'c',
268: u'C',
269: u'c',
270: u'D',
271: u'd',
272: u'D',
273: u'd',
274: u'E',
275: u'e',
276: u'E',
277: u'e',
278: u'E',
279: u'e',
280: u'E',
281: u'e',
282: u'E',
283: u'e',
284: u'Gh',
285: u'gh',
286: u'G',
287: u'g',
288: u'G',
289: u'g',
290: u'G',
291: u'g',
292: u'Hh',
293: u'hh',
294: u'H',
295: u'h',
296: u'I',
297: u'i',
298: u'I',
299: u'i',
300: u'I',
301: u'i',
302: u'I',
303: u'i',
304: u'I',
305: u'i',
306: u'IJ',
307: u'ij',
308: u'Jh',
309: u'jh',
310: u'K',
311: u'k',
312: u'k',
313: u'L',
314: u'l',
315: u'L',
316: u'l',
317: u'L',
318: u'l',
319: u'L\xb7',
320: u'l\xb7',
321: u'L',
322: u'l',
323: u'N',
324: u'n',
325: u'N',
326: u'n',
327: u'N',
328: u'n',
329: u"'n",
330: u'NG',
331: u'ng',
332: u'O',
333: u'o',
334: u'O',
335: u'o',
336: u'O',
337: u'o',
338: u'OE',
339: u'oe',
340: u'R',
341: u'r',
342: u'R',
343: u'r',
344: u'R',
345: u'r',
346: u'S',
347: u's',
348: u'Sh',
349: u'sh',
350: u'S',
351: u's',
352: u'S',
353: u's',
354: u'T',
355: u't',
356: u'T',
357: u't',
358: u'T',
359: u't',
360: u'U',
361: u'u',
362: u'U',
363: u'u',
364: u'U',
365: u'u',
366: u'U',
367: u'u',
368: u'U',
369: u'u',
370: u'U',
371: u'u',
372: u'W',
373: u'w',
374: u'Y',
375: u'y',
376: u'Y',
377: u'Z',
378: u'z',
379: u'Z',
380: u'z',
381: u'Z',
382: u'z',
383: u's',
402: u'f',
536: u'\u015e',
537: u'\u015f',
538: u'\u0162',
539: u'\u0163',
697: u'\u2032',
699: u'\u2018',
700: u'\u2019',
701: u'\u201b',
710: u'^',
712: u"'",
713: u'\xaf',
716: u',',
720: u':',
730: u'\xb0',
732: u'~',
733: u'"',
884: u"'",
885: u',',
894: u';',
7682: u'B',
7683: u'b',
7690: u'D',
7691: u'd',
7710: u'F',
7711: u'f',
7744: u'M',
7745: u'm',
7766: u'P',
7767: u'p',
7776: u'S',
7777: u's',
7786: u'T',
7787: u't',
7808: u'W',
7809: u'w',
7810: u'W',
7811: u'w',
7812: u'W',
7813: u'w',
7922: u'Y',
7923: u'y',
8192: u' ',
8193: u' ',
8194: u' ',
8195: u' ',
8196: u' ',
8197: u' ',
8198: u' ',
8199: u' ',
8200: u' ',
8201: u' ',
8202: u'',
8203: u'',
8204: u'',
8205: u'',
8206: u'',
8207: u'',
8208: u'-',
8209: u'-',
8210: u'-',
8211: u'-',
8212: u'--',
8213: u'--',
8214: u'||',
8215: u'_',
8216: u"'",
8217: u"'",
8218: u"'",
8219: u"'",
8220: u'"',
8221: u'"',
8222: u'"',
8223: u'"',
8224: u'+',
8225: u'++',
8226: u'o',
8227: u'>',
8228: u'.',
8229: u'..',
8230: u'...',
8231: u'-',
8234: u'',
8235: u'',
8236: u'',
8237: u'',
8238: u'',
8239: u' ',
8240: u' 0/00',
8242: u"'",
8243: u'"',
8244: u"'''",
8245: u'`',
8246: u'``',
8247: u'```',
8249: u'<',
8250: u'>',
8252: u'!!',
8254: u'-',
8259: u'-',
8260: u'/',
8264: u'?!',
8265: u'!?',
8266: u'7',
8304: u'^0',
8308: u'^4',
8309: u'^5',
8310: u'^6',
8311: u'^7',
8312: u'^8',
8313: u'^9',
8314: u'^+',
8315: u'^-',
8316: u'^=',
8317: u'^(',
8318: u'^)',
8319: u'^n',
8320: u'_0',
8321: u'_1',
8322: u'_2',
8323: u'_3',
8324: u'_4',
8325: u'_5',
8326: u'_6',
8327: u'_7',
8328: u'_8',
8329: u'_9',
8330: u'_+',
8331: u'_-',
8332: u'_=',
8333: u'_(',
8334: u'_)',
8364: u'EUR',
8448: u'a/c',
8449: u'a/s',
8451: u'\xb0C',
8453: u'c/o',
8454: u'c/u',
8457: u'\xb0F',
8467: u'l',
8470: u'N\xba',
8471: u'(P)',
8480: u'[SM]',
8481: u'TEL',
8482: u'[TM]',
8486: u'\u03a9',
8490: u'K',
8491: u'\xc5',
8494: u'e',
8531: u' 1/3',
8532: u' 2/3',
8533: u' 1/5',
8534: u' 2/5',
8535: u' 3/5',
8536: u' 4/5',
8537: u' 1/6',
8538: u' 5/6',
8539: u' 1/8',
8540: u' 3/8',
8541: u' 5/8',
8542: u' 7/8',
8543: u' 1/',
8544: u'I',
8545: u'II',
8546: u'III',
8547: u'IV',
8548: u'V',
8549: u'VI',
8550: u'VII',
8551: u'VIII',
8552: u'IX',
8553: u'X',
8554: u'XI',
8555: u'XII',
8556: u'L',
8557: u'C',
8558: u'D',
8559: u'M',
8560: u'i',
8561: u'ii',
8562: u'iii',
8563: u'iv',
8564: u'v',
8565: u'vi',
8566: u'vii',
8567: u'viii',
8568: u'ix',
8569: u'x',
8570: u'xi',
8571: u'xii',
8572: u'l',
8573: u'c',
8574: u'd',
8575: u'm',
8592: u'<-',
8593: u'^',
8594: u'->',
8595: u'v',
8596: u'<->',
8656: u'<=',
8658: u'=>',
8660: u'<=>',
8722: u'\u2013',
8725: u'/',
8726: u'\\',
8727: u'*',
8728: u'o',
8729: u'\xb7',
8734: u'inf',
8739: u'|',
8741: u'||',
8758: u':',
8764: u'~',
8800: u'/=',
8801: u'=',
8804: u'<=',
8805: u'>=',
8810: u'<<',
8811: u'>>',
8853: u'(+)',
8854: u'(-)',
8855: u'(x)',
8856: u'(/)',
8866: u'|-',
8867: u'-|',
8870: u'|-',
8871: u'|=',
8872: u'|=',
8873: u'||-',
8901: u'\xb7',
8902: u'*',
8917: u'#',
8920: u'<<<',
8921: u'>>>',
8943: u'...',
9001: u'<',
9002: u'>',
9216: u'NUL',
9217: u'SOH',
9218: u'STX',
9219: u'ETX',
9220: u'EOT',
9221: u'ENQ',
9222: u'ACK',
9223: u'BEL',
9224: u'BS',
9225: u'HT',
9226: u'LF',
9227: u'VT',
9228: u'FF',
9229: u'CR',
9230: u'SO',
9231: u'SI',
9232: u'DLE',
9233: u'DC1',
9234: u'DC2',
9235: u'DC3',
9236: u'DC4',
9237: u'NAK',
9238: u'SYN',
9239: u'ETB',
9240: u'CAN',
9241: u'EM',
9242: u'SUB',
9243: u'ESC',
9244: u'FS',
9245: u'GS',
9246: u'RS',
9247: u'US',
9248: u'SP',
9249: u'DEL',
9251: u'_',
9252: u'NL',
9253: u'///',
9254: u'?',
9312: u'(1)',
9313: u'(2)',
9314: u'(3)',
9315: u'(4)',
9316: u'(5)',
9317: u'(6)',
9318: u'(7)',
9319: u'(8)',
9320: u'(9)',
9321: u'(10)',
9322: u'(11)',
9323: u'(12)',
9324: u'(13)',
9325: u'(14)',
9326: u'(15)',
9327: u'(16)',
9328: u'(17)',
9329: u'(18)',
9330: u'(19)',
9331: u'(20)',
9332: u'(1)',
9333: u'(2)',
9334: u'(3)',
9335: u'(4)',
9336: u'(5)',
9337: u'(6)',
9338: u'(7)',
9339: u'(8)',
9340: u'(9)',
9341: u'(10)',
9342: u'(11)',
9343: u'(12)',
9344: u'(13)',
9345: u'(14)',
9346: u'(15)',
9347: u'(16)',
9348: u'(17)',
9349: u'(18)',
9350: u'(19)',
9351: u'(20)',
9352: u'1.',
9353: u'2.',
9354: u'3.',
9355: u'4.',
9356: u'5.',
9357: u'6.',
9358: u'7.',
9359: u'8.',
9360: u'9.',
9361: u'10.',
9362: u'11.',
9363: u'12.',
9364: u'13.',
9365: u'14.',
9366: u'15.',
9367: u'16.',
9368: u'17.',
9369: u'18.',
9370: u'19.',
9371: u'20.',
9372: u'(a)',
9373: u'(b)',
9374: u'(c)',
9375: u'(d)',
9376: u'(e)',
9377: u'(f)',
9378: u'(g)',
9379: u'(h)',
9380: u'(i)',
9381: u'(j)',
9382: u'(k)',
9383: u'(l)',
9384: u'(m)',
9385: u'(n)',
9386: u'(o)',
9387: u'(p)',
9388: u'(q)',
9389: u'(r)',
9390: u'(s)',
9391: u'(t)',
9392: u'(u)',
9393: u'(v)',
9394: u'(w)',
9395: u'(x)',
9396: u'(y)',
9397: u'(z)',
9398: u'(A)',
9399: u'(B)',
9400: u'(C)',
9401: u'(D)',
9402: u'(E)',
9403: u'(F)',
9404: u'(G)',
9405: u'(H)',
9406: u'(I)',
9407: u'(J)',
9408: u'(K)',
9409: u'(L)',
9410: u'(M)',
9411: u'(N)',
9412: u'(O)',
9413: u'(P)',
9414: u'(Q)',
9415: u'(R)',
9416: u'(S)',
9417: u'(T)',
9418: u'(U)',
9419: u'(V)',
9420: u'(W)',
9421: u'(X)',
9422: u'(Y)',
9423: u'(Z)',
9424: u'(a)',
9425: u'(b)',
9426: u'(c)',
9427: u'(d)',
9428: u'(e)',
9429: u'(f)',
9430: u'(g)',
9431: u'(h)',
9432: u'(i)',
9433: u'(j)',
9434: u'(k)',
9435: u'(l)',
9436: u'(m)',
9437: u'(n)',
9438: u'(o)',
9439: u'(p)',
9440: u'(q)',
9441: u'(r)',
9442: u'(s)',
9443: u'(t)',
9444: u'(u)',
9445: u'(v)',
9446: u'(w)',
9447: u'(x)',
9448: u'(y)',
9449: u'(z)',
9450: u'(0)',
9472: u'-',
9473: u'=',
9474: u'|',
9475: u'|',
9476: u'-',
9477: u'=',
9478: u'|',
9479: u'|',
9480: u'-',
9481: u'=',
9482: u'|',
9483: u'|',
9484: u'+',
9485: u'+',
9486: u'+',
9487: u'+',
9488: u'+',
9489: u'+',
9490: u'+',
9491: u'+',
9492: u'+',
9493: u'+',
9494: u'+',
9495: u'+',
9496: u'+',
9497: u'+',
9498: u'+',
9499: u'+',
9500: u'+',
9501: u'+',
9502: u'+',
9503: u'+',
9504: u'+',
9505: u'+',
9506: u'+',
9507: u'+',
9508: u'+',
9509: u'+',
9510: u'+',
9511: u'+',
9512: u'+',
9513: u'+',
9514: u'+',
9515: u'+',
9516: u'+',
9517: u'+',
9518: u'+',
9519: u'+',
9520: u'+',
9521: u'+',
9522: u'+',
9523: u'+',
9524: u'+',
9525: u'+',
9526: u'+',
9527: u'+',
9528: u'+',
9529: u'+',
9530: u'+',
9531: u'+',
9532: u'+',
9533: u'+',
9534: u'+',
9535: u'+',
9536: u'+',
9537: u'+',
9538: u'+',
9539: u'+',
9540: u'+',
9541: u'+',
9542: u'+',
9543: u'+',
9544: u'+',
9545: u'+',
9546: u'+',
9547: u'+',
9548: u'-',
9549: u'=',
9550: u'|',
9551: u'|',
9552: u'=',
9553: u'|',
9554: u'+',
9555: u'+',
9556: u'+',
9557: u'+',
9558: u'+',
9559: u'+',
9560: u'+',
9561: u'+',
9562: u'+',
9563: u'+',
9564: u'+',
9565: u'+',
9566: u'+',
9567: u'+',
9568: u'+',
9569: u'+',
9570: u'+',
9571: u'+',
9572: u'+',
9573: u'+',
9574: u'+',
9575: u'+',
9576: u'+',
9577: u'+',
9578: u'+',
9579: u'+',
9580: u'+',
9581: u'+',
9582: u'+',
9583: u'+',
9584: u'+',
9585: u'/',
9586: u'\\',
9587: u'X',
9596: u'-',
9597: u'|',
9598: u'-',
9599: u'|',
9675: u'o',
9702: u'o',
9733: u'*',
9734: u'*',
9746: u'X',
9747: u'X',
9785: u':-(',
9786: u':-)',
9787: u'(-:',
9837: u'b',
9839: u'#',
9985: u'%<',
9986: u'%<',
9987: u'%<',
9988: u'%<',
9996: u'V',
10003: u'\u221a',
10004: u'\u221a',
10005: u'x',
10006: u'x',
10007: u'X',
10008: u'X',
10009: u'+',
10010: u'+',
10011: u'+',
10012: u'+',
10013: u'+',
10014: u'+',
10015: u'+',
10016: u'+',
10017: u'*',
10018: u'+',
10019: u'+',
10020: u'+',
10021: u'+',
10022: u'+',
10023: u'+',
10025: u'*',
10026: u'*',
10027: u'*',
10028: u'*',
10029: u'*',
10030: u'*',
10031: u'*',
10032: u'*',
10033: u'*',
10034: u'*',
10035: u'*',
10036: u'*',
10037: u'*',
10038: u'*',
10039: u'*',
10040: u'*',
10041: u'*',
10042: u'*',
10043: u'*',
10044: u'*',
10045: u'*',
10046: u'*',
10047: u'*',
10048: u'*',
10049: u'*',
10050: u'*',
10051: u'*',
10052: u'*',
10053: u'*',
10054: u'*',
10055: u'*',
10056: u'*',
10057: u'*',
10058: u'*',
10059: u'*',
64256: u'ff',
64257: u'fi',
64258: u'fl',
64259: u'ffi',
64260: u'ffl',
64261: u'\u017ft',
64262: u'st',
65279: u'',
65533: u'?',
}
short_table = {
160: u' ',
161: u'!',
162: u'c',
163: u'GBP',
165: u'Y',
166: u'|',
167: u'S',
168: u'"',
169: u'c',
170: u'a',
171: u'<<',
172: u'-',
173: u'-',
174: u'(R)',
175: u'-',
176: u' ',
177: u'+/-',
178: u'2',
179: u'3',
180: u"'",
181: u'u',
182: u'P',
183: u'.',
184: u',',
185: u'1',
186: u'o',
187: u'>>',
188: u' 1/4',
189: u' 1/2',
190: u' 3/4',
191: u'?',
192: u'A',
193: u'A',
194: u'A',
195: u'A',
196: u'A',
197: u'A',
198: u'A',
199: u'C',
200: u'E',
201: u'E',
202: u'E',
203: u'E',
204: u'I',
205: u'I',
206: u'I',
207: u'I',
208: u'D',
209: u'N',
210: u'O',
211: u'O',
212: u'O',
213: u'O',
214: u'O',
215: u'x',
216: u'O',
217: u'U',
218: u'U',
219: u'U',
220: u'U',
221: u'Y',
222: u'Th',
223: u'\u03b2',
224: u'a',
225: u'a',
226: u'a',
227: u'a',
228: u'a',
229: u'a',
230: u'a',
231: u'c',
232: u'e',
233: u'e',
234: u'e',
235: u'e',
236: u'i',
237: u'i',
238: u'i',
239: u'i',
240: u'd',
241: u'n',
242: u'o',
243: u'o',
244: u'o',
245: u'o',
246: u'o',
247: u':',
248: u'o',
249: u'u',
250: u'u',
251: u'u',
252: u'u',
253: u'y',
254: u'th',
255: u'y',
256: u'A',
257: u'a',
258: u'A',
259: u'a',
260: u'A',
261: u'a',
262: u'C',
263: u'c',
264: u'C',
265: u'c',
266: u'C',
267: u'c',
268: u'C',
269: u'c',
270: u'D',
271: u'd',
272: u'D',
273: u'd',
274: u'E',
275: u'e',
276: u'E',
277: u'e',
278: u'E',
279: u'e',
280: u'E',
281: u'e',
282: u'E',
283: u'e',
284: u'G',
285: u'g',
286: u'G',
287: u'g',
288: u'G',
289: u'g',
290: u'G',
291: u'g',
292: u'H',
293: u'h',
294: u'H',
295: u'h',
296: u'I',
297: u'i',
298: u'I',
299: u'i',
300: u'I',
301: u'i',
302: u'I',
303: u'i',
304: u'I',
305: u'i',
306: u'IJ',
307: u'ij',
308: u'J',
309: u'j',
310: u'K',
311: u'k',
312: u'k',
313: u'L',
314: u'l',
315: u'L',
316: u'l',
317: u'L',
318: u'l',
319: u'L.',
320: u'l.',
321: u'L',
322: u'l',
323: u'N',
324: u'n',
325: u'N',
326: u'n',
327: u'N',
328: u'n',
329: u"'n",
330: u'N',
331: u'n',
332: u'O',
333: u'o',
334: u'O',
335: u'o',
336: u'O',
337: u'o',
338: u'OE',
339: u'oe',
340: u'R',
341: u'r',
342: u'R',
343: u'r',
344: u'R',
345: u'r',
346: u'S',
347: u's',
348: u'S',
349: u's',
350: u'S',
351: u's',
352: u'S',
353: u's',
354: u'T',
355: u't',
356: u'T',
357: u't',
358: u'T',
359: u't',
360: u'U',
361: u'u',
362: u'U',
363: u'u',
364: u'U',
365: u'u',
366: u'U',
367: u'u',
368: u'U',
369: u'u',
370: u'U',
371: u'u',
372: u'W',
373: u'w',
374: u'Y',
375: u'y',
376: u'Y',
377: u'Z',
378: u'z',
379: u'Z',
380: u'z',
381: u'Z',
382: u'z',
383: u's',
402: u'f',
536: u'S',
537: u's',
538: u'T',
539: u't',
697: u"'",
699: u'\u2018',
700: u"'",
701: u'\u201b',
710: u'^',
712: u"'",
713: u'\xaf',
716: u',',
720: u':',
730: u'\xb0',
732: u'~',
733: u'"',
884: u"'",
885: u',',
894: u';',
7682: u'B',
7683: u'b',
7690: u'D',
7691: u'd',
7710: u'F',
7711: u'f',
7744: u'M',
7745: u'm',
7766: u'P',
7767: u'p',
7776: u'S',
7777: u's',
7786: u'T',
7787: u't',
7808: u'W',
7809: u'w',
7810: u'W',
7811: u'w',
7812: u'W',
7813: u'w',
7922: u'Y',
7923: u'y',
8192: u' ',
8193: u' ',
8194: u' ',
8195: u' ',
8196: u' ',
8197: u' ',
8198: u' ',
8199: u' ',
8200: u' ',
8201: u' ',
8202: u'',
8203: u'',
8204: u'',
8205: u'',
8206: u'',
8207: u'',
8208: u'-',
8209: u'-',
8210: u'-',
8211: u'-',
8212: u'--',
8213: u'--',
8214: u'||',
8215: u'_',
8216: u"'",
8217: u"'",
8218: u"'",
8219: u"'",
8220: u'"',
8221: u'"',
8222: u'"',
8223: u'"',
8224: u'+',
8225: u'++',
8226: u'o',
8227: u'>',
8228: u'.',
8229: u'..',
8230: u'...',
8231: u'-',
8234: u'',
8235: u'',
8236: u'',
8237: u'',
8238: u'',
8239: u' ',
8240: u' 0/00',
8242: u"'",
8243: u'"',
8244: u"'''",
8245: u'`',
8246: u'``',
8247: u'```',
8249: u'<',
8250: u'>',
8252: u'!!',
8254: u'-',
8259: u'-',
8260: u'/',
8264: u'?!',
8265: u'!?',
8266: u'7',
8304: u'0',
8308: u'4',
8309: u'5',
8310: u'6',
8311: u'7',
8312: u'8',
8313: u'9',
8314: u'+',
8315: u'-',
8316: u'=',
8317: u'(',
8318: u')',
8319: u'n',
8320: u'0',
8321: u'1',
8322: u'2',
8323: u'3',
8324: u'4',
8325: u'5',
8326: u'6',
8327: u'7',
8328: u'8',
8329: u'9',
8330: u'+',
8331: u'-',
8332: u'=',
8333: u'(',
8334: u')',
8364: u'E',
8448: u'a/c',
8449: u'a/s',
8451: u'C',
8453: u'c/o',
8454: u'c/u',
8457: u'F',
8467: u'l',
8470: u'No',
8471: u'(P)',
8480: u'[SM]',
8481: u'TEL',
8482: u'[TM]',
8486: u'ohm',
8490: u'K',
8491: u'\xc5',
8494: u'e',
8531: u' 1/3',
8532: u' 2/3',
8533: u' 1/5',
8534: u' 2/5',
8535: u' 3/5',
8536: u' 4/5',
8537: u' 1/6',
8538: u' 5/6',
8539: u' 1/8',
8540: u' 3/8',
8541: u' 5/8',
8542: u' 7/8',
8543: u' 1/',
8544: u'I',
8545: u'II',
8546: u'III',
8547: u'IV',
8548: u'V',
8549: u'VI',
8550: u'VII',
8551: u'VIII',
8552: u'IX',
8553: u'X',
8554: u'XI',
8555: u'XII',
8556: u'L',
8557: u'C',
8558: u'D',
8559: u'M',
8560: u'i',
8561: u'ii',
8562: u'iii',
8563: u'iv',
8564: u'v',
8565: u'vi',
8566: u'vii',
8567: u'viii',
8568: u'ix',
8569: u'x',
8570: u'xi',
8571: u'xii',
8572: u'l',
8573: u'c',
8574: u'd',
8575: u'm',
8592: u'<-',
8593: u'^',
8594: u'->',
8595: u'v',
8596: u'<->',
8656: u'<=',
8658: u'=>',
8660: u'<=>',
8722: u'-',
8725: u'/',
8726: u'\\',
8727: u'*',
8728: u'o',
8729: u'\xb7',
8734: u'inf',
8739: u'|',
8741: u'||',
8758: u':',
8764: u'~',
8800: u'/=',
8801: u'=',
8804: u'<=',
8805: u'>=',
8810: u'<<',
8811: u'>>',
8853: u'(+)',
8854: u'(-)',
8855: u'(x)',
8856: u'(/)',
8866: u'|-',
8867: u'-|',
8870: u'|-',
8871: u'|=',
8872: u'|=',
8873: u'||-',
8901: u'\xb7',
8902: u'*',
8917: u'#',
8920: u'<<<',
8921: u'>>>',
8943: u'...',
9001: u'<',
9002: u'>',
9216: u'NUL',
9217: u'SOH',
9218: u'STX',
9219: u'ETX',
9220: u'EOT',
9221: u'ENQ',
9222: u'ACK',
9223: u'BEL',
9224: u'BS',
9225: u'HT',
9226: u'LF',
9227: u'VT',
9228: u'FF',
9229: u'CR',
9230: u'SO',
9231: u'SI',
9232: u'DLE',
9233: u'DC1',
9234: u'DC2',
9235: u'DC3',
9236: u'DC4',
9237: u'NAK',
9238: u'SYN',
9239: u'ETB',
9240: u'CAN',
9241: u'EM',
9242: u'SUB',
9243: u'ESC',
9244: u'FS',
9245: u'GS',
9246: u'RS',
9247: u'US',
9248: u'SP',
9249: u'DEL',
9251: u'_',
9252: u'NL',
9253: u'///',
9254: u'?',
9312: u'1',
9313: u'2',
9314: u'3',
9315: u'4',
9316: u'5',
9317: u'6',
9318: u'7',
9319: u'8',
9320: u'9',
9321: u'(10)',
9322: u'(11)',
9323: u'(12)',
9324: u'(13)',
9325: u'(14)',
9326: u'(15)',
9327: u'(16)',
9328: u'(17)',
9329: u'(18)',
9330: u'(19)',
9331: u'(20)',
9332: u'1',
9333: u'2',
9334: u'3',
9335: u'4',
9336: u'5',
9337: u'6',
9338: u'7',
9339: u'8',
9340: u'9',
9341: u'(10)',
9342: u'(11)',
9343: u'(12)',
9344: u'(13)',
9345: u'(14)',
9346: u'(15)',
9347: u'(16)',
9348: u'(17)',
9349: u'(18)',
9350: u'(19)',
9351: u'(20)',
9352: u'1',
9353: u'2',
9354: u'3',
9355: u'4',
9356: u'5',
9357: u'6',
9358: u'7',
9359: u'8',
9360: u'9',
9361: u'10.',
9362: u'11.',
9363: u'12.',
9364: u'13.',
9365: u'14.',
9366: u'15.',
9367: u'16.',
9368: u'17.',
9369: u'18.',
9370: u'19.',
9371: u'20.',
9372: u'a',
9373: u'b',
9374: u'c',
9375: u'd',
9376: u'e',
9377: u'f',
9378: u'g',
9379: u'h',
9380: u'i',
9381: u'j',
9382: u'k',
9383: u'l',
9384: u'm',
9385: u'n',
9386: u'o',
9387: u'p',
9388: u'q',
9389: u'r',
9390: u's',
9391: u't',
9392: u'u',
9393: u'v',
9394: u'w',
9395: u'x',
9396: u'y',
9397: u'z',
9398: u'A',
9399: u'B',
9400: u'C',
9401: u'D',
9402: u'E',
9403: u'F',
9404: u'G',
9405: u'H',
9406: u'I',
9407: u'J',
9408: u'K',
9409: u'L',
9410: u'M',
9411: u'N',
9412: u'O',
9413: u'P',
9414: u'Q',
9415: u'R',
9416: u'S',
9417: u'T',
9418: u'U',
9419: u'V',
9420: u'W',
9421: u'X',
9422: u'Y',
9423: u'Z',
9424: u'a',
9425: u'b',
9426: u'c',
9427: u'd',
9428: u'e',
9429: u'f',
9430: u'g',
9431: u'h',
9432: u'i',
9433: u'j',
9434: u'k',
9435: u'l',
9436: u'm',
9437: u'n',
9438: u'o',
9439: u'p',
9440: u'q',
9441: u'r',
9442: u's',
9443: u't',
9444: u'u',
9445: u'v',
9446: u'w',
9447: u'x',
9448: u'y',
9449: u'z',
9450: u'0',
9472: u'-',
9473: u'=',
9474: u'|',
9475: u'|',
9476: u'-',
9477: u'=',
9478: u'|',
9479: u'|',
9480: u'-',
9481: u'=',
9482: u'|',
9483: u'|',
9484: u'+',
9485: u'+',
9486: u'+',
9487: u'+',
9488: u'+',
9489: u'+',
9490: u'+',
9491: u'+',
9492: u'+',
9493: u'+',
9494: u'+',
9495: u'+',
9496: u'+',
9497: u'+',
9498: u'+',
9499: u'+',
9500: u'+',
9501: u'+',
9502: u'+',
9503: u'+',
9504: u'+',
9505: u'+',
9506: u'+',
9507: u'+',
9508: u'+',
9509: u'+',
9510: u'+',
9511: u'+',
9512: u'+',
9513: u'+',
9514: u'+',
9515: u'+',
9516: u'+',
9517: u'+',
9518: u'+',
9519: u'+',
9520: u'+',
9521: u'+',
9522: u'+',
9523: u'+',
9524: u'+',
9525: u'+',
9526: u'+',
9527: u'+',
9528: u'+',
9529: u'+',
9530: u'+',
9531: u'+',
9532: u'+',
9533: u'+',
9534: u'+',
9535: u'+',
9536: u'+',
9537: u'+',
9538: u'+',
9539: u'+',
9540: u'+',
9541: u'+',
9542: u'+',
9543: u'+',
9544: u'+',
9545: u'+',
9546: u'+',
9547: u'+',
9548: u'-',
9549: u'=',
9550: u'|',
9551: u'|',
9552: u'=',
9553: u'|',
9554: u'+',
9555: u'+',
9556: u'+',
9557: u'+',
9558: u'+',
9559: u'+',
9560: u'+',
9561: u'+',
9562: u'+',
9563: u'+',
9564: u'+',
9565: u'+',
9566: u'+',
9567: u'+',
9568: u'+',
9569: u'+',
9570: u'+',
9571: u'+',
9572: u'+',
9573: u'+',
9574: u'+',
9575: u'+',
9576: u'+',
9577: u'+',
9578: u'+',
9579: u'+',
9580: u'+',
9581: u'+',
9582: u'+',
9583: u'+',
9584: u'+',
9585: u'/',
9586: u'\\',
9587: u'X',
9596: u'-',
9597: u'|',
9598: u'-',
9599: u'|',
9675: u'o',
9702: u'o',
9733: u'*',
9734: u'*',
9746: u'X',
9747: u'X',
9785: u':-(',
9786: u':-)',
9787: u'(-:',
9837: u'b',
9839: u'#',
9985: u'%<',
9986: u'%<',
9987: u'%<',
9988: u'%<',
9996: u'V',
10003: u'\u221a',
10004: u'\u221a',
10005: u'x',
10006: u'x',
10007: u'X',
10008: u'X',
10009: u'+',
10010: u'+',
10011: u'+',
10012: u'+',
10013: u'+',
10014: u'+',
10015: u'+',
10016: u'+',
10017: u'*',
10018: u'+',
10019: u'+',
10020: u'+',
10021: u'+',
10022: u'+',
10023: u'+',
10025: u'*',
10026: u'*',
10027: u'*',
10028: u'*',
10029: u'*',
10030: u'*',
10031: u'*',
10032: u'*',
10033: u'*',
10034: u'*',
10035: u'*',
10036: u'*',
10037: u'*',
10038: u'*',
10039: u'*',
10040: u'*',
10041: u'*',
10042: u'*',
10043: u'*',
10044: u'*',
10045: u'*',
10046: u'*',
10047: u'*',
10048: u'*',
10049: u'*',
10050: u'*',
10051: u'*',
10052: u'*',
10053: u'*',
10054: u'*',
10055: u'*',
10056: u'*',
10057: u'*',
10058: u'*',
10059: u'*',
64256: u'ff',
64257: u'fi',
64258: u'fl',
64259: u'ffi',
64260: u'ffl',
64261: u'st',
64262: u'st',
65279: u'',
65533: u'?',
}
single_table = {
160: u' ',
161: u'!',
162: u'c',
165: u'Y',
166: u'|',
167: u'S',
168: u'"',
169: u'c',
170: u'a',
172: u'-',
173: u'-',
175: u'-',
176: u' ',
178: u'2',
179: u'3',
180: u"'",
181: u'u',
182: u'P',
183: u'.',
184: u',',
185: u'1',
186: u'o',
191: u'?',
192: u'A',
193: u'A',
194: u'A',
195: u'A',
196: u'A',
197: u'A',
198: u'A',
199: u'C',
200: u'E',
201: u'E',
202: u'E',
203: u'E',
204: u'I',
205: u'I',
206: u'I',
207: u'I',
208: u'D',
209: u'N',
210: u'O',
211: u'O',
212: u'O',
213: u'O',
214: u'O',
215: u'x',
216: u'O',
217: u'U',
218: u'U',
219: u'U',
220: u'U',
221: u'Y',
223: u'\u03b2',
224: u'a',
225: u'a',
226: u'a',
227: u'a',
228: u'a',
229: u'a',
230: u'a',
231: u'c',
232: u'e',
233: u'e',
234: u'e',
235: u'e',
236: u'i',
237: u'i',
238: u'i',
239: u'i',
240: u'd',
241: u'n',
242: u'o',
243: u'o',
244: u'o',
245: u'o',
246: u'o',
247: u':',
248: u'o',
249: u'u',
250: u'u',
251: u'u',
252: u'u',
253: u'y',
255: u'y',
256: u'A',
257: u'a',
258: u'A',
259: u'a',
260: u'A',
261: u'a',
262: u'C',
263: u'c',
264: u'C',
265: u'c',
266: u'C',
267: u'c',
268: u'C',
269: u'c',
270: u'D',
271: u'd',
272: u'D',
273: u'd',
274: u'E',
275: u'e',
276: u'E',
277: u'e',
278: u'E',
279: u'e',
280: u'E',
281: u'e',
282: u'E',
283: u'e',
284: u'G',
285: u'g',
286: u'G',
287: u'g',
288: u'G',
289: u'g',
290: u'G',
291: u'g',
292: u'H',
293: u'h',
294: u'H',
295: u'h',
296: u'I',
297: u'i',
298: u'I',
299: u'i',
300: u'I',
301: u'i',
302: u'I',
303: u'i',
304: u'I',
305: u'i',
308: u'J',
309: u'j',
310: u'K',
311: u'k',
312: u'k',
313: u'L',
314: u'l',
315: u'L',
316: u'l',
317: u'L',
318: u'l',
321: u'L',
322: u'l',
323: u'N',
324: u'n',
325: u'N',
326: u'n',
327: u'N',
328: u'n',
330: u'N',
331: u'n',
332: u'O',
333: u'o',
334: u'O',
335: u'o',
336: u'O',
337: u'o',
340: u'R',
341: u'r',
342: u'R',
343: u'r',
344: u'R',
345: u'r',
346: u'S',
347: u's',
348: u'S',
349: u's',
350: u'S',
351: u's',
352: u'S',
353: u's',
354: u'T',
355: u't',
356: u'T',
357: u't',
358: u'T',
359: u't',
360: u'U',
361: u'u',
362: u'U',
363: u'u',
364: u'U',
365: u'u',
366: u'U',
367: u'u',
368: u'U',
369: u'u',
370: u'U',
371: u'u',
372: u'W',
373: u'w',
374: u'Y',
375: u'y',
376: u'Y',
377: u'Z',
378: u'z',
379: u'Z',
380: u'z',
381: u'Z',
382: u'z',
383: u's',
402: u'f',
536: u'S',
537: u's',
538: u'T',
539: u't',
697: u"'",
699: u'\u2018',
700: u"'",
701: u'\u201b',
710: u'^',
712: u"'",
713: u'\xaf',
716: u',',
720: u':',
730: u'\xb0',
732: u'~',
733: u'"',
884: u"'",
885: u',',
894: u';',
7682: u'B',
7683: u'b',
7690: u'D',
7691: u'd',
7710: u'F',
7711: u'f',
7744: u'M',
7745: u'm',
7766: u'P',
7767: u'p',
7776: u'S',
7777: u's',
7786: u'T',
7787: u't',
7808: u'W',
7809: u'w',
7810: u'W',
7811: u'w',
7812: u'W',
7813: u'w',
7922: u'Y',
7923: u'y',
8192: u' ',
8194: u' ',
8196: u' ',
8197: u' ',
8198: u' ',
8199: u' ',
8200: u' ',
8201: u' ',
8208: u'-',
8209: u'-',
8210: u'-',
8211: u'-',
8215: u'_',
8216: u"'",
8217: u"'",
8218: u"'",
8219: u"'",
8220: u'"',
8221: u'"',
8222: u'"',
8223: u'"',
8224: u'+',
8226: u'o',
8227: u'>',
8228: u'.',
8231: u'-',
8239: u' ',
8242: u"'",
8243: u'"',
8245: u'`',
8249: u'<',
8250: u'>',
8254: u'-',
8259: u'-',
8260: u'/',
8266: u'7',
8304: u'0',
8308: u'4',
8309: u'5',
8310: u'6',
8311: u'7',
8312: u'8',
8313: u'9',
8314: u'+',
8315: u'-',
8316: u'=',
8317: u'(',
8318: u')',
8319: u'n',
8320: u'0',
8321: u'1',
8322: u'2',
8323: u'3',
8324: u'4',
8325: u'5',
8326: u'6',
8327: u'7',
8328: u'8',
8329: u'9',
8330: u'+',
8331: u'-',
8332: u'=',
8333: u'(',
8334: u')',
8364: u'E',
8451: u'C',
8457: u'F',
8467: u'l',
8490: u'K',
8491: u'\xc5',
8494: u'e',
8544: u'I',
8548: u'V',
8553: u'X',
8556: u'L',
8557: u'C',
8558: u'D',
8559: u'M',
8560: u'i',
8564: u'v',
8569: u'x',
8572: u'l',
8573: u'c',
8574: u'd',
8575: u'm',
8593: u'^',
8595: u'v',
8722: u'-',
8725: u'/',
8726: u'\\',
8727: u'*',
8728: u'o',
8729: u'\xb7',
8739: u'|',
8758: u':',
8764: u'~',
8801: u'=',
8901: u'\xb7',
8902: u'*',
8917: u'#',
9001: u'<',
9002: u'>',
9251: u'_',
9254: u'?',
9312: u'1',
9313: u'2',
9314: u'3',
9315: u'4',
9316: u'5',
9317: u'6',
9318: u'7',
9319: u'8',
9320: u'9',
9332: u'1',
9333: u'2',
9334: u'3',
9335: u'4',
9336: u'5',
9337: u'6',
9338: u'7',
9339: u'8',
9340: u'9',
9352: u'1',
9353: u'2',
9354: u'3',
9355: u'4',
9356: u'5',
9357: u'6',
9358: u'7',
9359: u'8',
9360: u'9',
9372: u'a',
9373: u'b',
9374: u'c',
9375: u'd',
9376: u'e',
9377: u'f',
9378: u'g',
9379: u'h',
9380: u'i',
9381: u'j',
9382: u'k',
9383: u'l',
9384: u'm',
9385: u'n',
9386: u'o',
9387: u'p',
9388: u'q',
9389: u'r',
9390: u's',
9391: u't',
9392: u'u',
9393: u'v',
9394: u'w',
9395: u'x',
9396: u'y',
9397: u'z',
9398: u'A',
9399: u'B',
9400: u'C',
9401: u'D',
9402: u'E',
9403: u'F',
9404: u'G',
9405: u'H',
9406: u'I',
9407: u'J',
9408: u'K',
9409: u'L',
9410: u'M',
9411: u'N',
9412: u'O',
9413: u'P',
9414: u'Q',
9415: u'R',
9416: u'S',
9417: u'T',
9418: u'U',
9419: u'V',
9420: u'W',
9421: u'X',
9422: u'Y',
9423: u'Z',
9424: u'a',
9425: u'b',
9426: u'c',
9427: u'd',
9428: u'e',
9429: u'f',
9430: u'g',
9431: u'h',
9432: u'i',
9433: u'j',
9434: u'k',
9435: u'l',
9436: u'm',
9437: u'n',
9438: u'o',
9439: u'p',
9440: u'q',
9441: u'r',
9442: u's',
9443: u't',
9444: u'u',
9445: u'v',
9446: u'w',
9447: u'x',
9448: u'y',
9449: u'z',
9450: u'0',
9472: u'-',
9473: u'=',
9474: u'|',
9475: u'|',
9476: u'-',
9477: u'=',
9478: u'|',
9479: u'|',
9480: u'-',
9481: u'=',
9482: u'|',
9483: u'|',
9484: u'+',
9485: u'+',
9486: u'+',
9487: u'+',
9488: u'+',
9489: u'+',
9490: u'+',
9491: u'+',
9492: u'+',
9493: u'+',
9494: u'+',
9495: u'+',
9496: u'+',
9497: u'+',
9498: u'+',
9499: u'+',
9500: u'+',
9501: u'+',
9502: u'+',
9503: u'+',
9504: u'+',
9505: u'+',
9506: u'+',
9507: u'+',
9508: u'+',
9509: u'+',
9510: u'+',
9511: u'+',
9512: u'+',
9513: u'+',
9514: u'+',
9515: u'+',
9516: u'+',
9517: u'+',
9518: u'+',
9519: u'+',
9520: u'+',
9521: u'+',
9522: u'+',
9523: u'+',
9524: u'+',
9525: u'+',
9526: u'+',
9527: u'+',
9528: u'+',
9529: u'+',
9530: u'+',
9531: u'+',
9532: u'+',
9533: u'+',
9534: u'+',
9535: u'+',
9536: u'+',
9537: u'+',
9538: u'+',
9539: u'+',
9540: u'+',
9541: u'+',
9542: u'+',
9543: u'+',
9544: u'+',
9545: u'+',
9546: u'+',
9547: u'+',
9548: u'-',
9549: u'=',
9550: u'|',
9551: u'|',
9552: u'=',
9553: u'|',
9554: u'+',
9555: u'+',
9556: u'+',
9557: u'+',
9558: u'+',
9559: u'+',
9560: u'+',
9561: u'+',
9562: u'+',
9563: u'+',
9564: u'+',
9565: u'+',
9566: u'+',
9567: u'+',
9568: u'+',
9569: u'+',
9570: u'+',
9571: u'+',
9572: u'+',
9573: u'+',
9574: u'+',
9575: u'+',
9576: u'+',
9577: u'+',
9578: u'+',
9579: u'+',
9580: u'+',
9581: u'+',
9582: u'+',
9583: u'+',
9584: u'+',
9585: u'/',
9586: u'\\',
9587: u'X',
9596: u'-',
9597: u'|',
9598: u'-',
9599: u'|',
9675: u'o',
9702: u'o',
9733: u'*',
9734: u'*',
9746: u'X',
9747: u'X',
9837: u'b',
9839: u'#',
9996: u'V',
10003: u'\u221a',
10004: u'\u221a',
10005: u'x',
10006: u'x',
10007: u'X',
10008: u'X',
10009: u'+',
10010: u'+',
10011: u'+',
10012: u'+',
10013: u'+',
10014: u'+',
10015: u'+',
10016: u'+',
10017: u'*',
10018: u'+',
10019: u'+',
10020: u'+',
10021: u'+',
10022: u'+',
10023: u'+',
10025: u'*',
10026: u'*',
10027: u'*',
10028: u'*',
10029: u'*',
10030: u'*',
10031: u'*',
10032: u'*',
10033: u'*',
10034: u'*',
10035: u'*',
10036: u'*',
10037: u'*',
10038: u'*',
10039: u'*',
10040: u'*',
10041: u'*',
10042: u'*',
10043: u'*',
10044: u'*',
10045: u'*',
10046: u'*',
10047: u'*',
10048: u'*',
10049: u'*',
10050: u'*',
10051: u'*',
10052: u'*',
10053: u'*',
10054: u'*',
10055: u'*',
10056: u'*',
10057: u'*',
10058: u'*',
10059: u'*',
65533: u'?',
}
### <