�
J�gw| � � � d dl Z d dlmZ d dlmZmZ d dlmZ d dlm Z m
Z
ddlmZ dZ
i d d
dd��d
d d
d��dddd��ddd
d��dddd��ddd
d��dddd��ddd
d��dddd��ddd
d��dddd��ddd
d��dddd��ddd
d��dddd��ddd
d��dddd��i ddd
d��dddd��ddd
d��d d!dd��d!d d
d��d"d#dd��d#d"d
d��d$d%dd��d%d$d
d��d&d'dd��d'd&d
d��d(d)dd��d)d(d
d��d*d+dd��d+d*d
d��d,d-dd��d-d,d
d���i d.d/dd��d/d.d
d��d0d1dd��d1d0d
d��d2d3dd��d3d2d
d��d4d5dd��d5d4d
d��d6d7dd��d7d6d
d��d8d9dd��d9d8d
d��d:d;dd��d;d:d
d��d<d=dd��d=d<d
d��d>d?dd���i d?d>d
d��d@dAdd��dAd@d
d��dBdCdd��dCdBd
d��dDdEdd��dEdDd
d��dFdGdd��dGdFd
d��dHdIdd��dJdKd
d��dKdJdd��dIdHd
d��dLdMdd��dMdLd
d��dNdOdd��dOdNd
d���i dPdQdd��dQdPd
d��dRdSdd��dSdRd
d��dTdUdd��dUdTd
d��dVdWdd��dWdVd
d��dXdYdd��dYdXd
d��dZd[dd��d[dZd
d��d\d]dd��d]d\d
d��d^d_dd��d_d^d
d��d`dadd���i dad`d
d��dbdcdd��dcdbd
d��dddedd��deddd
d��dfdgdd��dgdfd
d��dhdidd��didhd
d��djdkdd��dkdjd
d��dldmdd��dmdld
d��dndodd��dodnd
d��dpdqdd��dqdpd
d���i drdsdd��dsdrd
d��dtdudd��dudtd
d��dvdwdd��dwdvd
d��dxdydd��dydxd
d��dzd{dd��d{dzd
d��d|d}dd��d}d|d
d��d~ddd��dd~d
d��d�d�dd��d�d�d
d��d�d�dd���d�d
d�d�dd�d�d
d�d�dd�d�d
d�d�dd�d�d
d�d�dd�d�d
d�d�� �Z G d�� d�� � Ze G d�� d�� � � � Z G d�� d�� � Z d�d�ed�ed�ed�efd��Zd�e e d�e e fd��Z G d�� d�� � ZdS )�� N)�deque)� dataclass�replace)�
itemgetter)�List�Tuple� )�
TextDirection�} �(�)�o)�pair�type�c�[�]�{�}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 ⟪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 ⸦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 r r r r r r r r c �@ � e Zd Zg d�Zdedededefd�Zd� Zd� Z d � Z
d
S )�
BidiCharacter��character_index� character�
bidi_class�original_bidi_class�embedding_level� directionr$ r% r( �debugc �� � || _ || _ |r|� � � rd| _ nt j |� � | _ | j | _ || _ d | _ d S )N�R) r$ r% �isupperr&