o
    Ni                     @   s  d dl mZ d dlmZ ddlmZ d dlZd dlZd dl	Z	ddlm
Z
 ddlmZ d dlmZmZmZ d d	lmZmZmZmZ d
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Z d!d" Z!d#d$ Z"d%d& Z#d'd( Z$d)d* Z%d+d, Z&d-d. Z'd/d0 Z(d1d2 Z)d3d4 Z*d5d6 Z+d7d8 Z,d9d: Z-d;d< Z.d=d> Z/d?d@ Z0dAdB Z1dCdD Z2dEdF Z3dGdH Z4dIdJ Z5dKdL Z6dMdN Z7dOdP Z8dQdR Z9dSdT Z:dUdV Z;dWdX Z<dYdZ Z=d[d\ Z>d]d^ Z?dd`daZ@dbdc ZAddde ZBdfdg ZCdhdi ZDdjdk ZEdldm ZFdndo ZGdpdq ZHdrds ZIdtdu ZJdvdw ZKdxdy ZLdzd{ ZMd|d} ZNd~d ZOdd ZPdd ZQdddZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd ZldddZmdd Zndd Zodd ZpddĄ ZqddƄ ZrddȄ Zsddʄ Ztdd̄ Zudd΄ ZvddЄ Zwdd҄ ZxddԄ Zyddք Zzdd؄ Z{ddڄ Z|dd܄ Z}ddބ Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zdd Zdd ZdddZdd	 Zd
d Zdd ZdS (      )Str)	constants   )
GeneralMapN)PostProcess)
ConvertFix)PhagsPaBurmeseKhmer)Tamil	MalayalamLimbuChakmac                 C      | S N Strngr   r   K/home/ubuntu/.local/lib/python3.10/site-packages/aksharamukha/PreProcess.pyItransLL      r   c                 C      t dd| } | S )Nu   n̐u   m̐resubr   r   r   r   RomanLoCChandrabindu      r   c                 C      |  dd} | S Nu   ‘u   ng̈replacer   r   r   r   BalineseRomanLoCFix      r!   c                 C   r   r   r   r   r   r   r   JavaneseRomanLoCFix   r"   r#   c                 C   s(   |  dd} |  dd} |  dd} | S )Nsh   ṣ   ḷ   ḻ   l̤   l̳r   r   r   r   r   HindiMarathiRomanLoCFix!   s   r*   c                 C   s   |  dd} d S )Nr'   r(   r   r   r   r   r   RomanLoCLaUnderscoreDoubleDot(   s   r+   c                 C   r   )Nwvr   r   r   r   r   RomanLoCVaWa,      r.   c                 C   r   )Nr$   r%   r   r   r   r   r   RomanLoCSasha0   r"   r0   c                 C   s   |  dd} |  dd} | S )Nr'   r(   r)   r   r   r   r   r   RomanLoCSLaDotLaUnderscore5      r1   c                 C   r   )Nr(   r'   r   r   r   r   r   r+   ;   r"   c                 C   s   |  dd} |  dd} | S )Nu   ṯṯu   ṟṟu   ȧu   ŭr   r   r   r   r   MalayalamRomanLoCFix@   s   r3   c                 C   s(   |  dd dd dd dd} | S )	Nu   g̳h̳u   gḧu   t̤u   ṭ̈u   s̤u   s̈u   h̤   ḧr   r   r   r   r   DevanagariRomanLoCFixE   s   r5   c                 C   r   Nr&   r(   r   r   r   r   r   IASTLDotRetroflexK   r"   r7   c                 C   r   )Nu   ꦘu   ꦚr   r   r   r   r   ArchaicJnaSimplifyRomanLOCP   r/   r8   c                 C   r   )N   ৎ   ṯr   r   r   r   r   KhandaTaRomanLoCT   r"   r;   c                 C   s    t dd| } t dd| } | S )Nu   t(?![ʹhs])u   tʹu
   n(?![ʹy])u   nʹr   r   r   r   r   TibetanLoCRomanLoCFixY   s   r<   c                 C   s   d| d }dd ttj| d }dd ttj| d }ttj|d }dd ttj|d d  d }td| d | d	| } td| d d | | d
 d | d | d| } | S )N()|r   [    ]\2\1)*)?z\7\1\3\5)	joinGMCrunchSymbols
ConsonantsVowelSignsNVviramaCombiningSignsr   r   )r   tgtrephrephaconsvowsvircandAnur   r   r   BalineseJavaneseMoveRepha_   s   $6rU   c                 C   8   d d}d d}t||D ]
\}}| ||} q| S )Nu0   𑤁 𑤂 𑤃 𑤄 𑤅 𑤆 𑤆𑤵 𑤉 𑤀 uL   𑤥𑤰 𑤥𑤱 𑤥𑤲 𑤥𑤳 𑤥𑤴 𑤥𑤵 𑤥𑤷 𑤥𑤸 𑤥splitzipr    )r   vowvowyr-   vyr   r   r   DivesAkuruAlternateIndVowelsm   s
   

r^   c                 C   s   d}d}dd ttjtj | d }dd ttj| d }d}t|d | d d | | d d | d	 d
| | } | S )NKawiu   𑼂r=   r?   r>   u   𑽂((rE   z)?)\1)rG   rH   rI   rJ   VowelsrK   r   r   )r   rN   rP   rQ   rR   rS   r   r   r   KawiMoveRepha{   s   ":rc   c                 C      t | ddS )NJavaneseu   ꦂrU   r   r   r   r   JavaneseMoveRepha      rg   c                 C   rd   )NBalineseu   ᬃrf   r   r   r   r   BalineseMoveRepha   rh   rj   c                 C   r   )Nu   (??<![ମବ])(୍ବ)u   ୍ୱr   r   r   r   r   OriyaSubojinedVa   r   rk   c                 C   r   )Nu   (?<![মব])(্ব)u	   ্ভ়r   r   r   r   r   BengaliSubojinedVa   r   rl   c                 C   r   )Nu   বu   ভ়r   r   r   r   r   BengaliTargetVa   r"   rm   c                 C   r   )Nu   ବu   ୱr   r   r   r   r   OriyaTargetVa   r"   rn   c                 C      |  dd dd} | S )N   ।   │   ॥   ┃r   r   r   r   r   RetainDevangariDanda   s   rt   c                 C   s8   |  dd dd} |  dd} |  dd dd} | S )	Nrp   r?   rr   ||.   ●rs   rq   r   )r   srcr   r   r   RetainPipeDanda   s   ry   c                 C   sr   d ttjd}| dd} tdd| } tdd| } td	d
| } tdd| } td| d d| } | S )Nr?   ThamLoCu   ᩮᩣu   ᩰu	   ᩴ᩠ᨿu	   ᩴ᩿ᨿu	   ᩱ᩠ᨿu	   ᩱ᩿ᨿu	   ᩠ᩅᩭu	   ᩿ᩅᩭu	   ᩠ᩅᩫu	   ᩿ᩅᩫu   (᩠)(ᨿ|ᩅ)(?=())u   ᩿\2)rG   rH   rI   rJ   r    r   r   )r   ListCr   r   r   ThamLoCRomanLoCTarget   s   r}   c                 C   sB   d ttjd}d ttjd}td| d d| } | S )Nr?   ThamLoCRomanLoCu   (a|ǫḥ|ǫ|œ|ò)(?=(r{   u   \1ʽ)rG   rH   rI   rJ   rb   r   r   r   r|   ListVr   r   r   ThamLoCRomanLoCSource   s   r   c                 C   sR   ddl m} | d}g }|D ]}|d|| qd|} | dd} | S )Nr   )word_tokenize
rW   z  )	khmernltkr   rY   appendrG   r    )r   r   sents
sent_tokensentr   r   r   KhmerWordSplit   s   

r   c                 C   s   d ttjd}d ttjd}d ttjd}tjd }| dd} t	
dd| } t	
dd	| } t	
d
d| } t	
d| d d | d | d d| } t	
d| d d | d | d d| } | dddd| } t	
dd| } | S )Nr?   r
   r   u   ឹu   ិំʽu   (.)(.(្.)*)(់)z\1\4\2u.   ([ងញមបយរវ])(ុ)([ិឹីឺ])u   \1៉\3u"   ([សហអ])(ុ)([ិឹីឺ])u   \1៊\3r=   r>   u   ([៎៏])()(rF   z\1\3\4\2u   )([៎៏៊៉])(z\1\2\4\3u	   ឲ្យu	   ឱ្យu   [៙៚]rA   )rG   rH   rI   rJ   
VowelSignsrM   r
   	ViramaMapr    r   r   )r   r|   r   ListArS   r   r   r   KhmerLoCRomanLoCTarget   s   
**r   c                 C   sF   g d}|D ]}|  |td|} qtdd| } tdd| } | S )N)   åu   ẙ   à   á   é   í   ó   úr      è   ì   ò   ù   ăNFDu	   ‛(?!ʹ)u   ‛ʹu   oaḥu   oḥ)r    unicodedata	normalizer   r   )r   listdenormalizeletr   r   r   KhmerLoCRomanLoCSource   s   r   c                 C   s   |  dd} |  dd} |  dd} |  dd dd d	d} |  d
d} tjdd tjdd  }g d}tjd }t||D ]\}}|  ||| | } qBd}td| |d | } |  dd} | S )Nu   ႂ်u   ͮu   ၢu   ႃu   ါu   ႃႆu   ၢႆu   ႆၢu   ႆႃ   ်္   ္            )   ျ   ြu   ႂr      ်u   (?<!ႃ)   ʻu   ဢu   ’ဢ)r    r	   ConsonantMapr   rZ   r   r   )r   yrvyrvsubrS   xyaThatr   r   r   ShanLoCRomanLoCTarget  s   
r   c                 C   r   r   r   r   r   r   r   ShanLoCRomanLoCSource!     r   c                 C   s   ddddd}|  D ]
\}}| ||} q| dd} | dd	d
d} | dddd} | dddd} dttjd}td| d d| } dttjd}td| d d| } | dd} | dd} | S )Nu   ၏u   ၌u   ၍u   ၎)ze*zn*zr*zl*   ṁ   ṃ,   ၊rv      ။u   ˝u   ʺ   ḥ   ´u   ʹu   ˳r?   IASTu   (ʼ)(a|r>   u   ’\2r=   u   )(‘)u   \1ʻu   o‘u   oʻau)	itemsr    rG   rH   rI   rK   r   r   rJ   )r   
chars_misclatbur
vowelSigns
consonantsr   r   r   BurmeseRomanLoCSource%  s$   r   c                 C   r   r   r   r   r   r   r   paliThamK  r   r   c                 C   sV   d}d}d}d}t d| d | d | | d d	 | d t j}|d
| } | S )Nu   ᨠ-ᩌu   ᩍ-ᩔ!-/:-@[-`{-~\su   ᩠u   ᩺((?<!)[](?![])|[ \1)r   compileUNICODEr   r   myConsonant	otherCharssSymbolr   BreakPatternr   r   r   segmentThamSyllabesO  s   6r   c                 C   b   d}d}d}d}t d| d | d | | d d	 | d t j}| d
d} |d| } | S )Nu   က-အu<   ဣဤဥဦဧဩဪဿ၌၍၏၀-၉၊။!-/:-@[-`{-~\sr   r   r   r   r   r   r      ့်   ့်r   r   r   r   r    r   r   r   r   r   segmentBurmeseSyllables^     6r   c                 C   r   )Nul   ၵၶၷꧠငၸꧡꩡꧢၺꩦꩧꩨꩩꧣတထၻꩪၼပၽၿꧤမယရလဝသႁꩮၹၾႀဢu!   ႞႟႐-႙၊။!-/:-@[-`{-~\sr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   segmentShanSyllablesm  r   r   c           	      C   s   |  dd} |  dd} |  dd} tjdd tjd	d
  tjdd  }g d}tjd }t||D ]\}}|  ||| | } q5|  dd} d}|  ||d } |  dd} dd}dd}t||D ]
\}}|  ||} qi|  dd dd} | S )Nr   r   u   ိုu   ုိu   ဪu   ဩʻr   r   r   r       !   )r   r   u   ွu   ှr   r   r   r   r   u   အu   ’အu9   အော် အော အိ အီ အု အူ အေrW   u   ဪ ဩ ဣ ဤ ဥ ဦ ဧr   r   r   rv   )r    r	   r   r   rZ   rY   )	r   yrvhyrvhsubrS   r   r   r   vowDepvowIndepr   r   r   BurmeseRomanLoCTarget|  s$   *


r   c                 C      | d7 } | S )N   r   r   r   r   r   insertViramaSyriac  s   r   c                 C   s,   t dd| } t dd| } | dd} | S )Nu   (?<!্)যz@#$   য়u   য)r   r   r    r   r   r   r   BengaliSwitchYaYYa  s   r   c                 C   s`   g d}t dd| } t dd| } t dd| } t dd| } t dd| } t dd| } | S )	N)u   ْu   َu   ِu   ُu+   ([ب-ه])(?![ًٌٍَُِّْى])(?=(\W|$))u   \1ْu+   ([ب-ه]ّ)(?![ًٌٍَُِْى])(?=(\W|$))u/   (?<!ِ)([ي])(?![ًٌٍَُِّْى])(?=(\W|$))u/   (?<!ِ)([ي]ّ)(?![ًٌٍَُِْى])(?=(\W|$))u/   (?<!ُ)([و])(?![ًٌٍَُِّْى])(?=(\W|$))u/   (?<!ُ)([و]ّ)(?![ًٌٍَُِْى])(?=(\W|$))r   )r   	diacrticsr   r   r   removeFinalSchwaArab  s   r   semiticc                 C   r   )N   ׍r   )r   targetr   r   r   AlephMaterLectionis     r   c                    s  d}d v rt   d v r`t   g d}|D ]
\}} || q|dkr1t j dd n/|dks=|d	ks=|d
krEt j dd n|dkrQt j dd n|dksY|dkr`t j dd  dddd t	dd  t	dd  t	dd| d    d| d| d  d
tj}d|v rd
g d}g d}d
g d}	g d}
g d}t fdd |D r d!d"d#d$d%d& t|
|D ]\}}t	d'| |  qӈ d(d)d*d+ d, v rt	d-| d. d/ |	 d. d|   t	d0| d. d1 d   d,d d|v s/|d2ks/|dks/|d3ks/|d4krd-d
d5d6d"d!d$d#d7d%d8d&d9|g d. }t	d:| d. d;  t	d<| d. d=  t	d0| d. d> d  t	d?d  d|v rd@dA}dBdA}t||D ]\}}t	dC| |  qd v r dCd g dD}|D ]\}} || qd|v rt	dEdF  t	dGd   dHdI  S )JN   ̽r   u   ׌)
)u   ʾa   ʾu   ʾā   ā̂)u   ʾi   î)u   ʾī   ī̂)u   ʾu   û)u   ʾūu   ū̂)u   ʾe   ê)u   ʾēu   ē̂)u   ʾo   ô)u   ʾōu   ō̂Arabindic)r   Arab-UrArab-PazArab-FaSyrnSyrjHebr   ̪rA      ̮u   ([ʰ])(꞉)rD   u   ([aiuāīū])(꞉)u   (.)(꞉)ra      ʿ   ​r?   Syr)r   br-   gu   ġd   ḏhr,   zr      ṭr   k   ḫlmnsr   pfr%   qr   štr:   u   č   žj)a   āe   ē   ū   ō   ī   âu   ā̂r   u   ē̂)r  r  r  r  uio)r   r  r!  )r   r   r   c                    s   g | ]}| v qS r   r   ).0r[   r   r   r   
<listcomp>      z#FixSemiticRoman.<locals>.<listcomp>r  r   r  r  r  r!  z(?<!\w)u   ̂̂u   ̂u   ô̂r   r   r=   r>   (?!(?<=u   a(?!̄)LatnThaaTyper  r  r  r  #u   (ŵ)(?=r,   u   (ŷ)(?=r   u   a(?!(ŵ|ŷ|̄|̮))u   (?<=ḧ)a(?!(ŵ|ŷ|̄|̮))u   a ā i ī u ūrW   u   â ā̂ î ī̂ û ū̂u   ʔ)")r%   sQ)r   u   ʾQ)r  tQ)r   hQ)u   ḍdQ)u   p̣pQ)r  u   šQ)u   ẓu   jʰQ)r  u   dʰQ)r:   u   tʰQ)r,   vQ   ḵr	  )r   rA   )r   rA   )   a̮r  )u   ̈rA   )u   ĕ̂r   )u   ă̂r  )u   ŏ̂r   )   ĕr  )r   rA   )u   ŏr!  r1  )u   ʾQāu   ā̂Q)u   ʾQiu   îQ)u   ʾQīu   ī̂Q)u   ʾQuu   ûQ)u   ʾQūu   ū̂Q)u   ʾQeu   êQ)u   ʾQēu   ē̂Q)u   ʾQou   ôQ)u   ʾQōu   ō̂Q)u   ⁿu   n̽r   u   (̽)([iuā])\2u	   (̽)([a])r   r  )r   r   removeSemiticLettersr    arabizeLatnurduizeLatnsyricizeLatnhebraizeLatnr   r   rG   rH   SemiticConsonantsanyrZ   rY   )r   SourcerS   AyinAlephInitialr   r   	cons_prevconsSyrc	vowelSyrcvowelsDepSyrcvowelsInDepSyrc1vowelsInDepSyrc2vow1vow2basic_vowelssimp_vowinit_vowSemiticIndicr  r   r   r   r   FixSemiticRoman  st   



&2*




rK  c                 C   s8   d d}d d}t||D ]
\}}| ||} q| S Nu   ك يrW   u   ک یrX   r   	arabKafYe	persKafYer   r   r   r   r   perisanizeArab9  s
   

rP  c                 C   rV   rL  rX   rM  r   r   r   ArabizePersianB  s
   

rQ  c                 C   sD   d d}d d}t||D ]
\}}| ||} q| dd} | S )Nu   ے ڈ ٹ ہrW   u   ي د ت هu   ھrA   rX   )r   urduSpecificr   r   r   r   r   r   semiticizeUrduL  s   

rS  c                 C   s   t | ddS )NT)r   MalayalamChillur   r   r   r   ShowChillusX  s   rU  c                 C   r   )Nr9   u   ত্ˍr   r   r   r   r   ShowKhandaTa\  r"   rV  c                 C   r   r   r   r   r   r   r   eiaudipthongsa  r   rW  c                 C   r   r   r   r   r   r   r   	wasvnuktae  r   rX  c                 C   r   r   r   r   r   r   r   defaulti  r   rY  c                 C   r   )Nu   𐽀u	   [-]r   r   r   r   r   SogdReshAyinm  r"   rZ  c                 C   r   )Nu   𐼘u   [--]r   r   r   r   r   SogoReshAyinDalethr  r"   r[  c                 C   r   )Nu   𐮋u	   [-]r   r   r   r   r   PhlpMemQophw  r"   r\  c                 C   r   )Nu   𐮅   [--]r   r   r   r   r   PhlpWawAyinResh|  r"   r^  c                 C   r   )Nu   𐭥r]  r   r   r   r   r   PhliWawAyinResh  r"   r_  c                 C   r   )Nu   𐣣u	   [-]r   r   r   r   r   HatrDalethResh  r"   r`  c                 C   sd   d}t t jdd }ddt t jd d }td| d d | d d | d d	| } | S )
Nu)   [കചടതറനണരലവഴളറ]r   r   r=   r?   r>   r&  r%  u   \2ു്)rH   rI   r   rG   rJ   r   r   )r   consurS   consAllr   r   r   MalayalamHalfu  s
   .rc  c                    sj  t | } d}td| td|}ttj|d } fdddD } fddd	D } fd
ddD }d fdddD }d fdddD }|||||g}	d dd |dd  |dd  }
dttjtj |}td|d }dttj|}|d | |d  } d |  d  |  d  }t	t
|D ]y}	 td| d | d | d ||  d | d d||  | } td||  d ||  d | d d||  | } td|	|  d d | d ||  d||  | } td|
 d d | d ||  d | d d||  | } q| dd d!d"} | d#d$} | S )%Nr   r   SouthConsonantMapr   c                       g | ]} | qS r   r   r"  r   r|   r   r   r#    r$  z'MalayalamTranscribe.<locals>.<listcomp>r      
         c                    re  r   r   rf  rg  r   r   r#    r$  rB               c                    re  r   r   rf  rg  r   r   r#    r$  )rB   ri  ro  rp  rq  r?   c                    re  r   r   rf  rg  r   r   r#    r$     	            c                    re  r   r   rf  rg  r   r   r#    r$  rt  r   r   rB      rs  Aythamru  ro     r=   r>   r%  ra   \1\2u	   റ്റu	   ട്ട	   ന്റu	   ണ്ഡ   ംu   മ്)rc  rH   
CrunchListrI   r   rG   rb   rK   rJ   rangelenr   r   r    )r   scriptListSCrS   ConUnVoiced
ConVoicedJ
ConVoicedSConNasalsAll
conNasalCaConNasalsGroup
ConMedialsrb   rz  rJ   NRANDRAr   r   rg  r   MalayalamTranscribe  s4   * B66@r  Fc                 C   s   d}|  }|| }|d}|s@t|D ]\}}| |td| } q| dddddd	d
ddddd} | S t|D ]\}}| td| |} qD| S )NuW   a b c d e f g h i j k l m n o p q r s t u v w x y z ḥ ṭ ṣ ʾ ʿ š ā ī ū ē ōrW   i  u   r  u   r   u   r  u   r  u   r,   u   r  )upperrY   	enumerater    chr)r   reverselatn_basic_lowerlatn_basic_upperlatn_allr   cr   r   r   retainLatin  s   
4r  c                 C   s  dd l }ddlm} | dks| dkr| }|| dd}||}d}|D ]
}|d	 |d
  }q(d|v rA|dddd}t	dd|}t	dd|}t	dd|}t	dd|}|ddddddddd d!}|d"dd#dd$dd%dd&d!}|d'd(d)d*d+d,d-d.d/d0d1d2}|d3d4}|dddd}|d5d6d7d8}|d9d:d;d<d;d<d=d>d?d@dAdB}dC|v r|d4dD}|d5d6d7d8}|S )ENr   r   )ConvertHiraganaKatakanaISO
DevanagarirA   rW   hepburnrW  ouu   oʽueiu   eʽiu   (r)([aiueo])(゚゚)zl\2\2u   (r)([aāiīuūeēoō])(゚)zl\2u   (k)([aiueo])(゚゚)u   ṅ\2\2u   (k)([aāiīuūeēoō])(゚)u   ṅ\2aar  iir  eer  oor  uur  za-zi-ze-zo-zu-zn'n_chr  r$   r%   u   sṣu   ṣṣaia_ir   a_ur,   r-   u   、r   u   。rv   ngu   ṅgnku   ṅknpmpnbmbnmmmrX  u   v̈)
pykakasirA   r  kakasiconvertScriptlowerconvertr    r   r   )rx   txt
preoptionsr  r  kkscvitemr   r   r   JapanesePreProcess  s4   
,,44r  c                 C   s   |  dd} tdd| } | S )Nu   ֹּu   ֹּu	   (?<!ו)ֹ   וֹr    r   r   r   r   r   r   	holamlong  s   r  c                 C   s   t | } g d}dd}ddttjd| | g d  d }ddttjdg d	  d }t|d
 | d d| } | S )N)   ךu   םu   ן   ףu   ץ   ףּ   ךּu   ב,ח,ע,צ,ש,תr   r=   r?   Hebrew)   ׳u   יu   ו   אr>   )   ַu   ּu   ׁr  r%  u   \1ַ\2)	novowelshebrewSemiticrY   rG   rH   rI   rJ   r   r   r   )r   finals	otherConsconsonantsAllvowelsignsADShinGr   r   r   novowelshebrewIndic  s   
,$r  c                 C   s4   |  dd dd dd} |  dd d	d
} | S )Nu   כu   כּu   פu   פּu   בu   בּr  r  r  r  r   r   r   r   r   r    s   r  c                 C   s   | d } | S )Nu    ௞r   r   r   r   r   shvanakhall#  r   r  c                 C   ro   )Nr  r  r!  r  r   r   r   r   r   	longEOISO(     r  c                 C   r   r   r   r   r   r   r   SanskritLexicaizeHK-  r   r  c                 C   s`   |  dd} |  dd} |  dd} |  dd} |  d	d
} |  dd} |  dd} | d7 } | S )Nu   ดu   ทu   บu   พu   ก̥u   คu   จ̥u   ชu   งํu   ง   ͜rA   u   ็   ʻʻr   r   r   r   r   ThaiPhonetic1  s   r  c                 C   s<   |  dd} |  dd} |  dd} |  dd} | d	7 } | S )
Nu   ດu   ທu   ບu   ພu   ງໍu   ງr  rA   r  r   r   r   r   r   LaoPhonetic@  s   r  c                 C   sT   |  dd} dttjd}td| d d d| } d	}t|d
 d| } | S )Nu   னu   நr?   r   r=   r>   z(:)rD   u   ([நமரல]):u   \1ꢴ)r    rG   rH   rI   r   r   r   )r   ListVScharsr   r   r   SaurastraHaaruColonTamilK  s   r  c                 C   s   |  dd} |  dd} ddtttjdtjd d  td	d
 d }ddtttj	dtj
 dg td	d
 d }|  dd} |  dd} td| d d | d d| } |  dd} |  dd} | S )Nu   𑅇u   𑄤u   𑄠u   𑄡r=   r?   r   r   Tkeyr  r>   u   𑄳u   ʽrA   u   𑄂u   𑄧r%  u   \1ʾr   )r    rG   sortedrH   rI   rJ   r   VowelMapr  r   r   r   r   )r   listClistVr   r   r   
ChakmaPaliX  s   42"r  c                 C   s   |  ddS )Nu   𑚋u   𑚸r   r   r   r   r   TakriArchaicKhaj  s   r  c                 C   r   Nr  r   r   r   r   r   UrduShortNotShownn  r   r  c                 C   
   t | dS )Nr  )AnuChandraEqr   r   r   r   AnuChandraEqDevas  s   
r  c                 C   s0   t d|d }t d|d }| ||} | S )NAyogavahaMapr   r   )rH   r  r    )r   r  ChandrabinduAnusvarar   r   r   r  w  s   r  c                 C   s   d}dd ttjd d }t|| d d| } t|| d d	| } t|| d
 d| } t|d d| } t|d d| } t|d
 d| } | dd} | dd} | dd} | dd} | S )Nu   ([கசடதபஜஸ])r=   r?   r   r>   2u   \1\2²3u   \1\2³4u   \1\2⁴u   \1²u   \1³u   \1⁴u   ரு'u   ருʼu	   ரு’u   ம்'u   ம்ʼu	   ம்’)rG   rH   rI   r   r   r   r    r   r   r   r   TamilNumeralSub  s   r  c                 C   L   |  dd} |  dd} |  dd} |  dd} |  dd} |  dd} | S )NEX@X@r  Or!  r   r   r   r   r   swapEe     r  c                 C   r  )N^er  r  ^or!  r   r   r   r   r   swapEeItrans  r  r  c                 C   r   r   r   r   r   r   r   
egrantamil  r   r  c                 C   r   r   r   r   r   r   r   siddhammukta  r   r  c                 C   r   r   r   r   r   r   r   TaiKuen  r   r  c                 C   r   r   r   r   r   r   r   
TaiThamLao  r   r  c                 C   s8   d}|  dd} |  dd} |  dd} |  dd} | S )	NThaiu   ังu	   ังฺu   ์u   ฺ   ๎u   ัrA   r   )r   Scriptr   r   r   ThaiSajjhayaOrthography  s   r  c                 C      |  dd} t| } | S )Nu   ะrA   )r    r  r   r   r   r   ThaiSajjhayawithA     r  c                 C   sB   |  dd} tdd| } |  dd} |  dd} |  dd	} | S )
Nu   ັງu	   ັງ຺u2   ([ເໂໄ])(.๎)([ຍຣລວຨຩສຫຬ])z\2\1\3u   ໌u   ຺r  u   ັrA   r  r   r   r   r   LaoSajhayaOrthography  s   r  c                 C   r  )Nu   ະrA   )r    r  r   r   r   r   LaoSajhayaOrthographywithA  r   r  c                    s&  dd ttjd d }dd ttjd d }dd ttjd d }dd ttjd d }d}d| d d | | d d | d }d| | d | d }d| | d d | d }	|sod	}
d	}nd
}
d
}t|| | |	 d | d d|
 d | } t|| | |	 d | d d|
 d | } t|| | d | d d|
 d | } t|| d | d d|
 | } d| |
 d d }t|| d | d d|
 | } d  fdddD }|t	d  t	d  } fdddD }t|d d | d d |
 d d d | d d|
 | } t
t|D ]$}t|d ||  d d |
 d d ||  d d d|
 | } q*g d}t|D ]3\}}t|D ])\}}||k rd| |
 d d | d }t|| d | d d|
 | } q_qW| |
|} | S )Nr=   r?   r  r>   u   ([ंःँ]?)r`   ?r{   u   ्u   ॔r%  \1\8z\9\10z\9\15z\9u   ([शषस]))c                       g | ]
}t d  | qS r   rH   r  rf  Targetr   r   r#        z$RemoveSchwaHindi.<locals>.<listcomp>)r   rB   ri  rn  rj  ro  rk  rp  rl  rq  rs  rt  ru  rv  rw  r   r{  r   r   r         r   rd  NuktaConsonantMapc                    r  r  r  rf  r  r   r   r#    r
  )
r   ry                          r   z\8z)(?!z	\1\8\9\10z(?!" + Char + "))u   [यरलव]u   [नमण]u   [शषस]u   [कखपफगघबभ]u   [टठतथडढदध]u   [चछजझज़])rG   rH   rI   rb   rK   rJ   
Charactersr   r   r  r  r  r  r    )r   	showschwaVowIVowSConsCharNasISylSylSylAnyrS   vir2Cons_sssConUnAspConAspr   cons_pyramidc1cons1c2cons2Cons_pyrr   r  r   RemoveSchwaHindi  sH   (..*""@F
"r*  c              	   C   sD  |dkrt | |d} ddttj| d }ddttj| d }ddttj| d }ddttj| d }ddt	d| d }d	| d d | | d
 d | d }d	| | d | d }d	| | d
 d | d }	t	d|d }
|dkrd	| |
 d | d }nd| d }|dks|dkrdtt
tjtdd|}tjd }td| d d |d d | } t|d | d d d | d d|
 d | } t|d | d d d | d d|
 d | } | S t|| d | d d|
 | } t|| d | d d|
 | } | S )NBengaliTr=   r?   r>   ([r  ]?)r`   r  r{   r   r   rF   z(()?r
   KhmerLoCr  r{  u   ៌u   ្ra   u   (((្)u   ))*)([៍៎៏]?)(?=[\s
])z\1\8\9z\13u   ))*)([៍៎៏]?)$r%  r  )r   KhandaTarG   rH   rI   rb   rK   rJ   r  r  r  r  r
   r   r   r   )r   r	  r  r  r  r  r  r  r  r  rS   Cons2r|   rar   r   r   RemoveFinal  s0   (
"22""r2  c                 C      t | d} | S )NGurmukhir2  r   r   r   r   SchwaFinalGurmukhi4     
r6  c                 C   r3  )NGujaratir5  r   r   r   r   SchwaFinalGujarati:  r7  r9  c                 C   r3  )Nr+  r5  r   r   r   r   SchwaFinalBengali@  r7  r:  c                 C   r3  )Nr.  r5  r   r   r   r   SchwaFinalKhmerLoCF  r7  r;  c                 C   r3  )Nr
   r5  r   r   r   r   SchwaFinalKhmerL  r7  r<  c                 C   s,  d}dd ttj| d }dd ttj| d }dd ttj| d }dd ttj| d }dd td| d }d| d d | | d	 d | d
 }d| | d | d }d| | d	 d | d }	d}
d| |
 d | d }t	|| d | d d|
 | } | S )N
WarangCitir=   r?   r>   r,  r  r-  r`   r  r{   r   rF   r%  r  )
rG   rH   rI   rb   rK   rJ   r  r  r   r   )r   r	  r  r  r  r  r  r  r  r  rS   r0  r   r   r   SchwaFinalWarangCitiR  s   ("r>  c                 C   r   r   r   r   r   r   r   siddhamUnicodeg  r   r?  c                 C   r   r  r   r   r   r   r   ThaiOrthographyj  r   r@  c                 C   r   r  r   r   r   r   r   LaoTranscriptiono  r   rA  c                 C   s@   |  dd} |  dd} |  dd} |  dd} |  d	d
} | S )Nu   ए़u   ऎu   ओ़u   ऒu   े़u   ॆu   ो़u   ॊu   ः   ꞉r   r   r   r   r   LimbuDevanagariConventiont  s   rC  c                    sV   t jd   fdddd dD D }g d}t||D ]\}}| |d| } q| S )Nr   c                    s   g | ]}|  qS r   r   rf  rS   r   r   r#    r$  z$LimbuSpellingSaI.<locals>.<listcomp>c                 S   s   g | ]}t j| qS r   )r   r   rf  r   r   r   r#    s    )r   rs  rk  rv  rl  rw  r{  r   )u   ᤰu   ᤱu   ᤳu   ᤴu   ᤵu   ᤶu   ᤷu   ᤸu   ᤺)r   r   rZ   r    )r   FCons	FinalConsr   r   r   rD  r   LimbuSpellingSaI}  s   
rG  c                 C   sv   g d}t jd }t jd | t jd | t jd | t jd | t jd | g}t||D ]
\}}| ||} q.| S )N)   ൺ   ൻ   ർ   ൽ   ൾr   ru  rv  r{  r   )r   r   r   rd  rZ   r    )r   ChillusrS   ConVirr   r   r   r   r   removeChillus  s   
rO  c                 C   s   t j| dd} | S )NT)r  )r   SinhalaPalir   r   r   r   rP    r   rP  c                 C   r   r6   r   r   r   r   r   IASTPali  r"   rQ  c                 C   r   )Nu   л̣u   л̤r   r   r   r   r   CyrillicPali  r"   rR  c                 C      t | d} | dd} | S )Nr   u   ഀr~  r   ReverseGeminationSignr    r   r   r   r   MalayalamPrakrit  s   rV  c                 C   rS  )NGranthau   𑌀u   𑌂rT  r   r   r   r   GranthaPrakrit  s   rX  c           	      C   sB  d}d}t d|d }t d|d }t dg|d }dt t j|}dt t j|}td| d	 d
 | d | d	 d| | | } td| d | d	 d | d	 d| d | } td| d	 d | d	 d| } | || | | |} t|| | d | d || } | || | || | } | S )Nu   ṿu   ʰr   r   NuktaMapr  r?   r=   r>   r%  ra   r5  r&  rA   z(?=[r   )	rH   r  rI   rG   r   rJ   r   r   r    )	r   r=  DepVAspVirNukVowelAr   r|   r   r   r   RomanPreFix  s   22""r_  c                 C   s|   dd tttj|tdd d }dd tttj|tdd d }t|d | d| } t|d | d| } | S )Nr=   r?   Tr  r>   rW   r|  )	rG   r  rH   rI   rJ   r  rb   r   r   )r   r  r  	vowelsAllr   r   r   joinVowelCons  s
   &&ra  c                 C   r  )Nr   ra  r   r   r   r   joinVowelConsIAST     
rc  c                 C   r  )Nr  rb  r   r   r   r   joinVowelConsISO  rd  re  c              	   C   s  |t jv s	|dkr|  } |t jv rNd| v r0| dd} | dddd} | dddd} |d	kr<td
d| } n|dkrNtdd| } tdd| } d|v rYtdd| } |dv rc| dd} |d	kr9d}d}dddd tt	j
D dg dd t t j|dd D   d }t|| | d| d  | } td!| | |d | } t|| d" d| | } td!| d" || } d#}t|| | d| d  | } td!| | |d | } t|| d" d| | } td!| d" || } td$d%| } td&d%| } g d'}g d(}	t||	D ]\}
}| |
|} qg d)}|D ]\}
}| |
|} q'| dd} |d*ksC|d+krhg d,}|D ]\}}| ||} qI|d-krh| d.d/d0d.} t|  d1|v r| d2d3} | d4d5} | d6d7} d8|v r| d9d3} | d:d5} | d6d;} | d7d;} |d<kr| } |d8ks|d1ks|d<kst| } |dkrd>|v r| d?d@dAdAdBdCdDdE} dF| v sdG| v r|t jv r| dFdH} | dIdJ} | dGdK} dF| v sdG| v r|t jv r| dFdL} | dIdM} | dGdN} |dOkr"| dPdQ} |dRkr9g dS}|D ]\}}| ||} q-t| |} |t jv rm|t jv rmdK}t dT|dU }t dT|dU }|dVkrm| || |dW | } | S )XNr'  r?   rv   rw   rp   rr   ru   z..Itransu   ●([acCDN])z.\1Velthuisu   ●([rRlLmhtdnTDsyg])u   ●●([lr])r   u   ([وي])(?=[ًٌٍَُِّ])u   ˞\1)r   r   u   ̣u   ݂OMoMr=   c                 S      g | ]}d | qS \r   rf  r   r   r   r#    r$  zPreProcess.<locals>.<listcomp>z\sc                 S   s   g | ]}| d dqS )rv   z\.r   rf  r   r   r   r#    s    r   ry  r>   ra   r5  ^$(\s)z([aAiuUeoEO])([R]){2}([iI])z	\1\2_\2\3z([aAiuUeoEO])([L]){2}([iI]))r  r  r  r  RRiRRILLiLLIzN^JNchhshhr   GYz.nz.mz.hAUMr  Jzc.ozc.e)r  AIUzR^izR^IzL^izL^Iz~Nz~nChShkShj~nMr  rA   ri  r  r  zA.cze.c))r  r{  )dnyr  )r  r|  )kSr  r,   r-   )r?   rv   )kShhr  BarahaNorthBarahaSouth))rz  r  )r{  r  )r|  r  )z~looz~lU)RooRU)r  r   )Kkh)Ggh)r  r  )r}  C)ry  jh)Pph)Bbhr  )r$   S)z~h_h)Yyx)z^^z{})rm  z())txrx)zhLx)z~ez~a)r  \_)r*  \')rn  \"r   r  nxz~nxr   u   aïr  u   aür  u   ̃r   r  za:iza:ur   TitusRussianCyrillicr     ḇr-      ḡr2  r
     p̄r  u   ↓u   ↑u   ॒u   ↑↑u   ᳚u   ॑r  r  r  r=     ‍   ×zHebr-Ar))u   עׄu   ג)u   תׄu   ת֒)u   תu   ת̈)u   קu   ק̈SignMapr   'r   )rH   RomanDiacriticr  pipeScriptsr    r   r   rG   liststringpunctuationrI   SignsrZ   printCFVedicSvarasNonDiacriticIndicScriptsLatinScriptsr   Transliterationr  )r   r=  r	  postoptionsr  sOmtOmpuncAltFormNormFormr   r   AltForms
alt_barahaaltnormdot_varcharchar_varudattaavagrahaSrcavagrahaTgtr   r   r   
PreProcess  s   






$  



r  c                 C   ro   Nr  r   r     ’r   r   r   r   r   ISO259Targetg  r  r  c                 C   s&   g d}|D ]
\}}|  ||} q| S )N)u   أu   ˈʾ)u   ء   ¦)u   إu   ˌʾr   r   replacementsr   r   r   r   r   ISO233Targetl  s   r  c                 C   s$   dg}|D ]
\}}|  ||} q| S )N)u   اr   r   r  r   r   r   PersianDMGTargett  s   r  c                 C   sH   g d}|D ]
\}}|  ||} qg d}|D ]
\}}|  ||} q| S )Nr  )
)r     ǧ)r  r  )r4      ẗ)r
  u   ẖ)r3  u   ỳ)u   aⁿr   )u   iⁿr   )u   uⁿr   )r   u   ʾâ)u   ˀu   ˈr   r  r   r   r   ISO233Source|  s   r  c                 C   ro   r  r   r   r   r   r   HebrewSBLTarget  r  r  c                 C   sF   |  dd dd} |  dd} g d}|D ]
\}}|  ||} q| S )Nr   r  r  r     ̇°   °̇))r-   r  )r  r  )u   d꞉r  )r  r  )u   g꞉r  )r  r  )u   t꞉r  )r  r:   u   š̮r  u   š̪   ś)r!  r  )r  r   )r  r   )r   r4  r   r  r   r   r   HebrewSBLSource  s   r  c                 C   sj   |  dd dd} |  dd} g d}|D ]
\}}|  ||} qtd| } |  d	d
} td| } | S )Nr   r  r  r  r  r  )r1  )r-   r  )r  r  )r  u   ḃ)r  u   ṗ)r	  u   k̇)rB     ̇r  )r  u   s̀r  )r  r   )r  u   ȩ)r  u   ŵ)r  u   ẇ)r      °)r4  u   ḝr   r  rB  NFC)r    r   r   r  r   r   r   ISO259Source  s   r  c                 C   r   r   r   r   r   r   r   UnSupThaana  r   r  c                 C   s   |  dd} |  dd} | S )Nr  rA      ‌r   r   r   r   r   RemoveJoiners  r2   r  c                 C   r   )Nu   جu   ڨr   r   r   r   r   ArabicGimelJa  r"   r  c                 C   s  g d}g d}|dvrt ||D ]
\}}| ||} q|dv r2| ddddd	d
dd} |dv s:d|v rXtd| } | dddddd} d|v rX| dd} |dks`|dkrl| dd} | dd} |dkrg d}d d!|d"d#g  d$ }t|d% d&| } | d'd(} g d)}g d*}	t ||	D ]
\}}| ||} q| d+d,} | d-d.} | d/d0} | d1d2} | d3d4} | d5d6} g d7}
g d8}| d9d:} | d;d< g d=}g d>}t |
| || D ]
\}}| ||} qg d?}g d@}t ||D ]\}}| ||} q	g dA}g dB}t ||D ]\}}| ||} q"| dCdD} | dEdF} | dGdH} | dIdJ} | dKdL} | dMdN} | dOdP} | dQdR} | dSdT} | dUdV} | dWdX} | dYdX} | dZd[} | d\d[} | d]d^} | d_d^} | d`da} | dbda} | dcdd} | dedd} | dfdg} | dhdg} | didj} | dkdj} | dldm} | dndm} | S )oN)u   क़u   ख़u   ग़u   ज़u   ड़u   ढ़u   फ़u   य़u   ਲ਼u   ਸ਼u   ਖ਼u   ਗ਼u   ਜ਼u   ਫ਼u   ড়u   ঢ়u   য়u   ଡ଼u   ଢ଼)u   क़u   ख़u   ग़u   ज़u   ड़u   ढ़u   फ़u   य़u   ਲ਼u   ਸ਼u   ਖ਼u   ਗ਼u   ਜ਼u   ਫ਼u   ড়u   ঢ়r   u   ଡ଼u   ଢ଼)rW  TamilGrantha)r   r  ISOPalir  rQ     üu   uʼu   ǖu   ūʼ   öu   aʼu   ȫu   āʼ)r   r  r  rQ  r  RomanLoCr  r  u   ẗ   ÿu   ÿu   ḧr4   u   ˙u   ˚r   r   u   كu   کu   يu   یr   )u   ְu   ֱu   ֲu   ֳu   ִu   ֵu   ֶr  u   ָu   ֹu   ֺu   ֻu   ׇr=   r?   r  u   וּr>   u
   ([ּׁׂ])rD   u   ְּׁu   ְּׁ)u	   ണ്‍u	   ന്‍u	   ര്‍u	   ല്‍u	   ള്‍u	   ക്‍)rH  rI  rJ  rK  rL  u   ൿu   ൌu   ൗu   ൟu   ഈu   ൎu   ര്u	   ൻ്റr}  u   ೝu   ನ್u   ౝu   న్)u   ஸ்ரீu   க்‌ஷu	   ர‌ிu	   ர‌ீ)u   ஶ்ரீu	   க்ஷu   ரிu   ரீu   ဿu	   သ္သu   ஸ²u   ஶ)   ¹u   ₁u   ₂u   ₃u   ₄)rA   rA      ²   ³u   ⁴)u   ྲྀu   ཷu   ླྀu   ཹu   ཱིu   ཱུu   ཀྵu   ྐྵ)u   ྲྀu	   ྲཱྀu   ླྀu	   ླཱྀu   ཱིu   ཱུu   ཀྵu   ྐྵ)u   āu   īu   ūu   ēu   ōu   ṃu   ṁu   ḥu   śu   ṣu   ṇu   ṛu   ṝu   ḷu   ḹu   ḻu   ṉu   ṟ)r  r  r  r  r  r   r   r   r  r%   u   ṇu   ṛu   ṝr&   u   ḹr'   u   ṉu   ṟu   ําu   ำu   ໍາu   ຳu   ।।rr   u	   ᤠ᤺ᤣu	   ᤠᤣ᤺u   ᤺ᤣu   ᤣ᤺u   ᤠᤣu   ᤥu   ฎu   ฏu   𑍌u   𑍗u   ྂu   ྃu   ॲu   ऍu   োu   োu   ােu   ৌu   ৌu   ৗেu   ொu   ொu   ாெu   ோu   ோu   ாேu   ௌu   ௌu   ௗெu   ൊu   ൊu   ാെu   ോu   ോu   ാേu   𑍋u   𑍋u   𑌾𑍇)rZ   r    r   r   rG   r   r   )r   r=  
nuktaDecomnuktaPrecomr   r   vowelsvowelsR	chilluZwj
chilluAtomtamAlttamNormsubNumsupNumoldVownewVow
latinDecomlatinPrecomr   r   r   r     s   $r   c                 C   s   |  d d} | S )Nr  r  r   r   r   r   r   removeZWp  s   r  c                    s
   t jv rdtt t j tdd}dtt t j tdd}dtt t j tdd}dtt t j	 tdd}t t j
 d }d fdddD }td| d	 d | d	 d | d	 d d | d
 d | d
 d	 d| } td| | d	 d d | d
 d | d
 d	 d | d	 d | d	 d d| } td| | d	 d d | d
 d | d
 d	 d | d	 d | d	 d| } td| | d	 d d | d
 d | d
 d	 d | d	 d | d	 d| } | S  t jv r	 | S )Nr?   Tr  r   c                    s   g | ]}t t j | qS r   )rH   rI   rJ   )r"  r   r=  r   r   r#  ~  s    z"PhagsPaArrange.<locals>.<listcomp>)r   r{  r   r=   r>   rF   z	 \1\2\3\4z(?!\s)z	\1\2\5\6 r%  z\1\2 \5)rH   r  rG   r  rI   rJ   r  rb   rK   rM   r   r   r   r  )r   r=  r|   r   r  ListCSrS   r   r   r  r   PhagsPaArrangeu  s   
NVRRr  r  c                    s  d}t d| t d|}t t j|d } fdddD } fddd	D } fd
ddD }d fdddD }d fdddD }	||	|||g}
d dd |dd  |dd  }dt t jt j |}t d|d }dt t j|}|d | |d  } d |  d  |  d  }tt	|D ]z}	 t
d| d | d | d ||  d | d d||  | } t
d||  d | d d||  | } t
dd | } t
d|
|  d d | d ||  d!||  | } t
d| d d | d ||  d | d d!||  | } q| ||} t
d" d#  d |d  d d$ d | d  d#  d | d  | | } dd l}dd%d t|jd&d'd(d'D d) }t
d d#  | d d* | d+ d  |  d d! d#  | } t
d d,  | d d* | d+ d  |  d d! d-  | } t
d d  | d d* | d+ d  d  d d! d  | } t
d d  | d d* | d+ d  d.  d d! d  | } t
d d/  | d d* | d+ d  d0  d d! d1  | } | tjd  d   d2 |  d2  } | tjd  d2 | } t
|d | |d   d. |  d  | } t
d3 d.  |d  d4 | d d5 d  |  d d! d#  | } | |d  d/ } | S )6Nr   r   rd  r   c                    re  r   r   rf  rg  r   r   r#    r$  z)TamilTranscribeCommon.<locals>.<listcomp>rh  c                    re  r   r   rf  rg  r   r   r#    r$  rm  c                    re  r   r   rf  rg  r   r   r#    r$  )rB   r  ro  rp  rq  r?   c                    re  r   r   rf  rg  r   r   r#    r$  rr  c                    re  r   r   rf  rg  r   r   r#    r$  rx  r   r   rB   ry  rs  rz  ru  ro  r{  r=   r>   r%  ra   u   ([³])u   ³+r  r|  z(?<!(ri  u   டc                 S   rj  rk  r   rf  r   r   r   r#    r$  rv   rA   r  z|\sr`   z)+)rt  rn  rj  rv  rk  rp  r   r,  rC   ro  )rH   r  rI   r   rG   rb   rK   rJ   r  r  r   r   r    r  r  r  r   rz  )r   r  r  r  rS   r  r  r  r  r  r  r  rb   rz  rJ   r  r  r   r  punctr   rg  r   TamilTranscribeCommon  sL   * B*6@N.BBBBB*.Fr  c                 C   s   t | } | S r   r  r   r   r   r   TamilTranscribe  r   r  c                 C   s   t | dd} | S )Nr   )r  r  r   r   r   r   TamilTranscribeDialect  r"   r   c                 C   s   |  dd} |  dd} d S )Nu   ʊr  u   ɛr  r   r   r   r   r   IPAIndic  r2   r  )r   )F)r  )astr   asyncior   rA   r   rH   r   r  r   r   r   r   aksharamukha.ScriptMap.EastIndicr   r	   r
    aksharamukha.ScriptMap.MainIndicr   r   r   r   r   r   r!   r#   r*   r+   r.   r0   r1   r3   r5   r7   r8   r;   r<   rU   r^   rc   rg   rj   rk   rl   rm   rn   rt   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK  rP  rQ  rS  rU  rV  rW  rX  rY  rZ  r[  r\  r^  r_  r`  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r2  r6  r9  r:  r;  r<  r>  r?  r@  rA  rC  rG  rO  rP  rQ  rR  rV  rX  r_  ra  rc  re  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r   r   r   r   <module>   s  	&+q	
	5.5#		 
 /U