Ë
    £eh¶  ã                   óÀ  — d dl mZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lZd d
lZ G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z ej:                  d«      Zd„ Zd„ Z d„ Z!d„ Z"d„ Z# G d„ de$«      Z%dWd„Z&dXd„Z'd„ Z(dWd„Z)dWd„Z*dWd „Z+dWd!„Z,dWd"„Z-dWd#„Z.dWd$„Z/ej`                  fd%„Z1dWd&„Z2d'„ Z3d(„ Z4d)„ Z5d*„ Z6 G d+„ d,e7«      Z8 G d-„ d.e8«      Z9 G d/„ d0e8«      Z: G d1„ d2e8«      Z;dWd3„Z<dWd4„Z=dWd5„Z>d6„ Z?d7„ Z@ G d8„ d9e7«      ZAdWd:„ZBej†                  fd;„ZDejŠ                  fd<„ZFej†                  fd=„ZGej†                  fd>„ZHd?„ ZIdWd@„ZJdWdA„ZKdWdB„ZLdWdC„ZMdWdD„ZNdWdE„ZOdWdF„ZPdG„ ZQdH„ ZRdI„ ZSdJ„ ZTdK„ ZUdL„ ZVdM„ ZWdN„ ZXdO„ ZYdP„ ZZdWdQ„Z[ G dR„ dSe7«      Z\dWdT„Z]dXdU„Z^e_dVk(  rd d
l`Z` e`jÂ                   e^«       «       y
y
)Yé    )ÚttLib)Úcmap_classes)ÚotTables)ÚValueRecordÚvalueRecordFormatDict)Úbuilder)Úcontextmanager)ÚnewTable)ÚLOOKUP_DEBUG_ENV_VARÚLOOKUP_DEBUG_INFO_KEY)ÚsetitemNc                   ó   — e Zd Zy)ÚMtiLibErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/mtiLib/__init__.pyr   r      ó   „ Ør   r   c                   ó   — e Zd Zy)ÚReferenceNotFoundErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚFeatureNotFoundErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚLookupNotFoundErrorNr   r   r   r   r   r   "   r   r   r   zfontTools.mtiLibc                 óì   — | d d dv r,t         j                  j                  t        | dd  d«      «      S | d d dk(  rdt        | dd  «      z  S | j	                  d«      dk  s
J d| z  «       ‚| sJ d	«       ‚| S )
Né   )zU zu é   z# z	glyph%.5dú r   zSpace found in glyph name: %szGlyph name is empty)r   ÚTTFontÚ_makeGlyphNameÚintÚfind)Úss    r   Ú	makeGlyphr'   )   s…   € Øˆˆ!€u�ÑÜ�|‰|×*Ñ*¬3¨q°°¨u°b«>Ó:Ð:Ø	
ˆ2ˆAˆ�$ŠØœS  1 2 ›ZÑ'Ð'Ø�6‰6�#‹;˜Š?Ð?Ð;¸aÑ?Ó?ˆ?ÙÐ#Ð#Ó#ˆ1Ø€Hr   c                 ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w ©N)r'   )ÚlÚgs     r   Ú
makeGlyphsr,   3   s   € Ø"#Ö$˜QŒI�a�LÒ$Ð$ùÒ$s   …c                 ó`   — |�	 ||    }|S t        | «      }|S # t         $ r t        | «      ‚w xY wr)   )ÚKeyErrorr   r$   ©ÚsymÚmappingÚidxs      r   Ú	mapLookupr3   7   sK   € ð Ðð	+Ø˜#‘,ˆCð
 €Jô �#‹hˆØ€Jøô	 ò 	+Ü% cÓ*Ð*ð	+ús   „ ˜-c                 óz   — 	 t        | «      }|S # t        $ r" 	 ||    }Y |S # t        $ r t        | «      ‚w xY ww xY wr)   )r$   Ú
ValueErrorr.   r   r/   s      r   Ú
mapFeaturer6   D   sY   € ð,Ü�#‹hˆð €Jøô ò ,ð	,Ø˜#‘,‰Cð €Jøô ò 	,Ü& sÓ+Ð+ð	,úð,ús   ‚ �	:™!¡6¶:c                 ó¶   ‡‡‡— 	  | ||«      } ‰‰‰|«       y # t         $ r6}	 |�|j                  ˆˆˆfd„||«       Y d }~y 	 ‚ # t        $ r Y ‚ w xY wd }~ww xY w)Nc                 ó   •—  ‰‰‰| «      S r)   r   )ÚrefÚ
collectionÚkeyÚsetters    €€€r   ú<lambda>zsetReference.<locals>.<lambda>X   s   ø€ ¡ z°3¸Ó <€ r   )r   ÚaddDeferredMappingÚAttributeError)Úmapperr1   r0   r<   r:   r;   ÚmappedÚes      ```  r   ÚsetReferencerC   Q   sy   ú€ ðÙ˜˜WÓ%ˆñ ˆ:�s˜FÕ#øô "ò 	ð	ØÐ"Ø×*Ñ*Ý<¸cÀ1ôô ð	 #ð 	øô ò 	ØØð	þð	ús2   …	 ™	A£AÁAÁ	AÁAÁAÁAÁAc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚDeferredMappingc                 ó   — g | _         y r)   )Ú_deferredMappings©Úselfs    r   Ú__init__zDeferredMapping.__init__b   s
   € Ø!#ˆÕr   c                 ó”   — t         j                  d|t        |«      j                  «       | j                  j                  |||f«       y )Nz*Adding deferred mapping for symbol '%s' %s)ÚlogÚdebugÚtyper   rG   Úappend)rI   r<   r0   rB   s       r   r>   z"DeferredMapping.addDeferredMappinge   s8   € Ü�	‰	Ð>ÀÄTÈ!ÃW×EUÑEUÔVØ×Ñ×%Ñ% v¨s°AÐ&6Õ7r   c                 óö   — | j                   D ]T  \  }}}t        j                  d|t        |«      j                  «       	 | |   } ||«       t        j                  d|«       ŒV g | _         y # t
        $ r |‚w xY w)Nz,Applying deferred mapping for symbol '%s' %sz	Set to %s)rG   rL   rM   rN   r   r.   )rI   r<   r0   rB   rA   s        r   ÚapplyDeferredMappingsz%DeferredMapping.applyDeferredMappingsi   s   € Ø"×4Ñ4ò 		+‰NˆF�C˜Ü�I‰IØ>ÀÄTÈ!ÃW×EUÑEUôðØ˜c™�ñ �6ŒNÜ�I‰I�k 6Õ*ð		+ð "$ˆÕøô	 ò Ø�ðús   ¿A,Á,A8N)r   r   r   rJ   r>   rQ   r   r   r   rE   rE   a   s   „ ò$ò8ó$r   rE   c                 ó„  — t        j                  «       }g }| j                  d«      5  | D �]  }t        |«      dk  r |j	                  d«       t        |«      dk  rŒ |\  }}}}t
        j                  d||«       t        j                  «       }	d |	_        |rt        t        ||t        |	d«       nd|	_        t        |«      }
dgt        |
«      z  x|	_        }t        |
«      D ]  \  }}t        t        ||t         ||«       Œ t        |	j                  «      |	_        |D �cg c]  }|j$                  |k(  sŒ|‘Œ }}|r|d   j&                  }nxt        j(                  «       }|d	dt        |«      z
  z  z   |_        t        j&                  «       |_        |j	                  |«       |j&                  }d |_        g |_        d|_        |d
k(  r	|	|_        �Œªt        j,                  «       }|d	dt        |«      z
  z  z   |_        |	|_        |j,                  j	                  |«       t        |j,                  «      |_        �Œ 	 d d d «       |D ]3  }t3        |j&                  j,                  d„ ¬«      |j&                  _        Œ5 t3        |d„ ¬«      |_        t        |j(                  «      |_        |S c c}w # 1 sw Y   ŒuxY w)Nzscript tableé   Ú z#Adding script %s language-system %sÚReqFeatureIndexiÿÿ  é   r   r!   Údefaultc                 ó   — | j                   S r)   )Ú
LangSysTag©Úrecs    r   r=   z!parseScriptList.<locals>.<lambda>¬   s
   € ¸¿¹€ r   ©r;   c                 ó   — | j                   S r)   )Ú	ScriptTagrZ   s    r   r=   z!parseScriptList.<locals>.<lambda>®   s
   € ¸¿¹€ r   )ÚotÚ
ScriptListÚbetweenÚlenrO   rL   rM   ÚLangSysÚLookupOrderrC   r6   ÚsetattrrU   ÚstripSplitCommaÚFeatureIndexÚ	enumerater   ÚFeatureCountr^   ÚScriptÚScriptRecordÚDefaultLangSysÚLangSysRecordÚLangSysCountrY   ÚsortedÚScriptCount)ÚlinesÚ
featureMaprI   ÚrecordsÚlineÚ	scriptTagÚ
langSysTagÚdefaultFeatureÚfeaturesÚlangSysÚsymsÚtheListÚir0   r&   ÚscriptÚ	scriptRecÚ
langSysRecs                     r   ÚparseScriptListr€   w   sƒ  € Ü�=‰=‹?€DØ€GØ	�‰�~Ó	&ñ .@Øó -	@ˆDÜ�d“)˜a’-Ø—‘˜B”ô �d“)˜a“-à>BÑ;ˆI�z >°8Ü�I‰IÐ;¸YÈ
ÔSä—j‘j“lˆGØ"&ˆGÔÙÜÜØØ"ÜØØ%õð +1�Ô'Ü" 8Ó,ˆDØ./¨S´3°t³9©_Ð<ˆGÔ  7Ü# D›/ò O‘��3ÜœZ¨°S¼'À7ÈAÕNðOä#& w×';Ñ';Ó#<ˆGÔ à!(ÖE˜A¨A¯K©K¸9Ó,D’aÐEˆFÐEÙØ ™×)Ñ)‘äŸO™OÓ-�	Ø&/°#¸¼SÀ»^Ñ9KÑ2LÑ&L�	Ô#Ü#%§9¡9£;�	Ô Ø—‘˜yÔ)Ø"×)Ñ)�Ø(,�Ô%Ø')�Ô$Ø&'�Ô#à˜YÒ&Ø(/�Ö%ä×-Ñ-Ó/�
Ø(2°S¸AÄÀJÃÑ<OÑ5PÑ(P�
Ô%Ø%,�
Ô"Ø×$Ñ$×+Ñ+¨JÔ7Ü&)¨&×*>Ñ*>Ó&?�Ö#ñ[-	@÷.@ð` ò 
ˆÜ&,Ø�M‰M×'Ñ'Ñ-Gô'
ˆ�‰Õ#ð
ô ˜wÑ,EÔF€DÔÜ˜4×,Ñ,Ó-€DÔØ€Kùò9 F÷5.@ð .@ús+   ¨4J6ÁCJ6Ä"J1Ä7J1Ä;DJ6Ê1J6Ê6J?c                 ó^  — t        j                  «       }g |_        | j                  d«      5  | D �];  }|\  }}}|�&||vs
J d|z  «       ‚t	        |j                  «      ||<   	 t        |«      t	        |j                  «      k(  sJ d|t	        |j                  «      fz  «       ‚	 t        j                  «       }||_        t        j                  «       |_        |j                  j                  |«       |j                  }	d |	_
        t        |«      }
d gt	        |
«      z  x|	_        }t        |
«      D ]  \  }}t        t        ||t         ||«       Œ t	        |	j                  «      |	_        �Œ> 	 d d d «       t	        |j                  «      |_        |S # t        $ r Y Œûw xY w# 1 sw Y   Œ4xY w)Nzfeature tablezDuplicate feature name: %sú%d %d)r_   ÚFeatureListÚFeatureRecordra   rb   r$   r5   Ú
FeatureTagÚFeaturerO   ÚFeatureParamsrf   ÚLookupListIndexrh   rC   r3   r   ÚLookupCountri   )rq   Ú	lookupMaprr   rI   rt   ÚnameÚ
featureTagÚlookupsÚ
featureRecÚfeaturerz   r{   r|   r0   s                 r   ÚparseFeatureListr�   ³   s¨  € Ü�>‰>Ó€DØ€DÔØ	�‰�Ó	'ñ ?Øó 	?ˆDØ(,Ñ%ˆD�*˜gØÐ%Ø :Ñ-ÐRÐ/KÈdÑ/RÓRÐ-Ü#& t×'9Ñ'9Ó#:�
˜4Ñ ðÜ˜4“y¤C¨×(:Ñ(:Ó$;Ò;ð ¸WØÜ˜×*Ñ*Ó+ðHñ >ó Ñ;ô ×)Ñ)Ó+ˆJØ$.ˆJÔ!Ü!#§¡£ˆJÔØ×Ñ×%Ñ% jÔ1Ø ×(Ñ(ˆGØ$(ˆGÔ!Ü" 7Ó+ˆDØ15°¼¸T»Ñ0BÐBˆGÔ# gÜ# D›/ò M‘��3ÜœY¨	°3¼ÀÈ!ÕLðMä"% g×&=Ñ&=Ó">ˆGÖñ/	?÷?ô4 ˜D×.Ñ.Ó/€DÔØ€Køô ò Ùðú÷?ð ?ús1   ­5F#Á#A FÂ#CF#Æ	F ÆF#ÆF Æ F#Æ#F,c                 ó.  — d}d }g d¢}| j                  «       d   j                  «       |v rçt        | «      }dddddœj                  |d   j                  «       «      }|r;|d   j                  «       dv s
J |d   «       ‚|d   j                  «       d	k(  r||z  }Œ’|d   j                  «       d
k(  r|t	        |d   «      dz  z  }Œ½|d   j                  «       dk(  r|dz  }t	        |d   «      }| j                  «       d   j                  «       |v rŒç||fS )Nr   )ÚrighttoleftÚignorebaseglyphsÚignoreligaturesÚignoremarksÚmarkattachmenttypeÚmarkfiltertypeé   r   rS   é   )r’   r“   r”   r•   )ÚyesÚnorš   r–   r—   r    )ÚpeeksÚlowerÚnextÚgetr$   )rq   ÚflagsÚ	filtersetÚallFlagsrt   Úflags         r   ÚparseLookupFlagsr¤   Ô   s+  € Ø€EØ€Iò€Hð �+‰+‹-˜Ñ
×
 Ñ
 Ó
" hÑ
.Ü�E‹{ˆà!Ø &Ø%Ø!ñ	
÷
 ‰#ˆd�1‰g�m‰m‹oÓ
ð 	ñ Ø˜‘7—=‘=“? mÑ3Ð<°T¸!±WÓ<Ð3Ø�A‰w�}‰}‹ %Ò'Ø˜‘�ØØ�‰7�=‰=‹?Ð2Ò2Ø”S˜˜a™“\ QÑ&Ñ&ˆEØØ�‰7�=‰=‹?Ð.Ò.Ø�T‰MˆEÜ˜D ™G›ˆIð% �+‰+‹-˜Ñ
×
 Ñ
 Ó
" hÒ
.ð& �)ÐÐr   c                 ó”   — i }| D ]-  }t        |«      dk(  sJ |«       ‚t        |«      }|d   ||d   <   Œ/ t        j                  |«      S )Nr   r˜   r   )rb   r,   ÚotlÚbuildSingleSubstSubtable©rq   ÚfontÚ
_lookupMapr1   rt   s        r   ÚparseSingleSubstr«   õ   sZ   € Ø€GØò #ˆÜ�4‹y˜AŠ~Ð#˜tÓ#ˆ~Ü˜$ÓˆØ ™7ˆ��Q‘Òð#ô ×'Ñ'¨Ó0Ð0r   c                 ój   — i }| D ]  }t        |«      }|dd  ||d   <   Œ t        j                  |«      S ©Nr˜   r   )r,   r¦   ÚbuildMultipleSubstSubtabler¨   s        r   ÚparseMultipler¯   þ   sG   € Ø€GØò $ˆÜ˜$ÓˆØ  ˜8ˆ��Q‘Òð$ô ×)Ñ)¨'Ó2Ð2r   c                 ój   — i }| D ]  }t        |«      }|dd  ||d   <   Œ t        j                  |«      S r­   )r,   r¦   ÚbuildAlternateSubstSubtabler¨   s        r   ÚparseAlternater²     sG   € Ø€GØò $ˆÜ˜$ÓˆØ  ˜8ˆ��Q‘Òð$ô ×*Ñ*¨7Ó3Ð3r   c                 ó¦   — i }| D ]6  }t        |«      dk\  sJ |«       ‚t        |«      }|d   |t        |dd  «      <   Œ8 t        j                  |«      S )Nr   r   r˜   )rb   r,   Útupler¦   ÚbuildLigatureSubstSubtabler¨   s        r   ÚparseLigaturer¶     s`   € Ø€GØò +ˆÜ�4‹y˜AŠ~Ð#˜tÓ#ˆ~Ü˜$ÓˆØ#'¨¡7ˆ”�d˜1˜2�h“Ò ð+ô ×)Ñ)¨'Ó2Ð2r   c                 óŠ  — i }| D ]™  }t        |«      dk(  sJ |«       ‚|d   j                  «       j                  dd«      }|t        v sJ ‚t	        |d   «      }t        |d   «      }||vrt        «       ||<   t        ||   |«      r	J ||f«       ‚t        ||   ||«       Œ› t        j                  ||j                  «       «      S )NrV   r   r!   rT   r˜   r   )rb   ÚtitleÚreplacer   r'   r$   r   Úhasattrre   r¦   ÚbuildSinglePosSubtableÚgetReverseGlyphMap)rq   r©   rª   Úvaluesrt   Úwr+   Úvs           r   ÚparseSinglePosrÀ     sÎ   € Ø€FØò 	!ˆÜ�4‹y˜AŠ~Ð#˜tÓ#ˆ~Ø�‰G�M‰M‹O×#Ñ# C¨Ó,ˆØÔ)Ñ)Ð)Ð)Ü�d˜1‘gÓˆÜ��Q‘‹LˆØ�F‰?Ü#›ˆF�1‰IÜ˜6 !™9 aÔ(Ð0¨1¨a¨&Ó0Ð(Ü��q‘	˜1˜aÕ ð	!ô ×%Ñ% f¨d×.EÑ.EÓ.GÓHÐHr   c                 óÊ  — t        j                  «       }dx|_        |_        | j	                  «       d   j                  «       d   j                  «       }|dv �rxd|_        i }| D �]/  }t        |«      dk(  sJ |«       ‚|d   j                  «       d   j                  «       }|dv sJ |«       ‚|d   t        |«      d  j                  «       j                  dd«      }t        |   d   }	t        |dd «      \  }
}t        |d   «      }|
|vri ||
<   |||
   vrt        «       t        «       f||
   |<   ||
   |   }|dk(  r|xj                  |	z  c_        |d   }n|xj                  |	z  c_        |d   }t        ||«      r	J ||f«       ‚t!        |||«       �Œ2 t#        t%        |j'                  «       «      |«      |_        g |_        |j(                  j,                  D ]Ö  }
||
   }t        j*                  «       }g x}|_        t1        |j'                  «       |j2                  ¬	«      D ]U  }||   }t        j.                  «       }||_        |d   |_        |j                  r|d   nd |_        |j;                  |«       ŒW t        |j.                  «      |_        |j*                  j;                  |«       ŒØ t        |j*                  «      |_        |S |jA                  d
«      �rpd|_        d d g}| j	                  «       d   jA                  d«      r”| jC                  «       d   d t        d«        j                  «       }dt         jD                  fdt         jF                  fdœ|   \  }}||   �J ‚tI        | ||¬«      ||<   | j	                  «       d   jA                  d«      rŒ”|\  |_"        |_#        d„ |D «       \  |_%        |_&        tO        |jJ                  «      D �cg c]  }t        jP                  «       ‘Œ c}|_(        |jP                  D ]k  }tO        |jL                  «      D �cg c]  }t        jR                  «       ‘Œ c}|_)        |jR                  D ]   }t        «       |_        t        «       |_        Œ" Œm | D �]  }t        |«      dk(  sJ |«       ‚|d   j                  «       d   j                  «       }|dv sJ |«       ‚|d   t        |«      d  j                  «       j                  dd«      }t        |   d   }	d„ |dd D «       \  }}}|jP                  |   jR                  |   }|dk(  r"|xj                  |	z  c_        |j6                  }n!|xj                  |	z  c_        |j8                  }t        ||«      r	J ||f«       ‚t!        |||«       �Œ |jP                  D ]k  }|jR                  D ]Z  }t        |j                  |j6                  «      |_        |j                  r t        |j                  |j8                  «      nd |_        Œ\ Œm t#        t%        |jD                  jT                  j'                  «       «      |«      |_        |S J |«       ‚c c}w c c}w )Nr   ©ÚleftÚrightr˜   rS   r!   rT   rV   rÃ   r\   Úclassr   úclass definition begin)ÚfirstÚsecond©Úklassc              3   óh   K  — | ]*  }d t        |j                  j                  «       «      z   –— Œ, y­w©r˜   N)ÚmaxÚ	classDefsr½   )Ú.0Úcs     r   ú	<genexpr>zparsePair.<locals>.<genexpr>^  s,   è ø€ ò .
Ø./ˆA”�A—K‘K×&Ñ&Ó(Ó)Õ)ñ.
ùs   ‚02c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr)   ©r$   ©rÏ   Úxs     r   rÑ   zparsePair.<locals>.<genexpr>m  s   è ø€ Ò$?°¤S¨§VÑ$?ùó   ‚)+r_   ÚPairPosÚValueFormat1ÚValueFormat2rœ   Úsplitr�   ÚFormatrb   r¸   r¹   r   r,   r$   r   rº   re   ÚmakeCoverageÚsetÚkeysÚCoverageÚPairSetÚglyphsÚPairValueRecordro   Ú
getGlyphIDÚSecondGlyphÚValue1ÚValue2rO   ÚPairValueCountÚPairSetCountÚendswithÚpeekÚ	ClassDef1Ú	ClassDef2ÚparseClassDefÚClass1CountÚClass2CountÚrangeÚClass1RecordÚClass2RecordrÎ   )rq   r©   rª   rI   Útypr½   rt   ÚsideÚwhatÚmaskÚglyph1Úglyph2ÚvalueÚrec2ÚvrÚvalues1Úpairsetrs   Úvalues2ÚpairrÎ   r2   rÊ   r|   Úrec1ÚjÚclass1Úclass2s                               r   Ú	parsePairr  &  s	  € Ü�:‰:‹<€DØ,-Ð-€DÔ˜Ô)Ø
�+‰+‹-˜Ñ
×
 Ñ
 Ó
" 1Ñ
%×
+Ñ
+Ó
-€CØ
ÐÒØˆŒØˆØó 	%ˆDÜ�t“9 ’>Ð' 4Ó'�>Ø˜‘7—=‘=“? 1Ñ%×+Ñ+Ó-ˆDØÐ,Ñ,Ð2¨dÓ2Ð,Ø˜‘7œ3˜t›9˜;Ð'×-Ñ-Ó/×7Ñ7¸¸RÓ@ˆDÜ(¨Ñ.¨qÑ1ˆDÜ'¨¨Q¨q¨	Ó2‰NˆF�FÜ˜˜Q™“LˆEØ˜VÑ#Ø!#��v‘Ø˜V F™^Ñ+Ü*5«-¼»Ð)G��v‘˜vÑ&Ø˜&‘> &Ñ)ˆDØ�vŠ~Ø×!Ò! TÑ)Õ!Ø˜!‘W‘à×!Ò! TÑ)Õ!Ø˜!‘W�Ü˜r 4Ô(Ð4¨2¨t¨*Ó4Ð(Ü�B˜˜eÖ$ð)	%ô* %¤S¨¯©«Ó%7¸Ó>ˆŒØˆŒØ—m‘m×*Ñ*ò 	)ˆFØ˜V‘nˆGÜ—j‘j“lˆGØ02Ð2ˆG�gÔ-Ü  §¡£°T·_±_ÔEò %�Ø! &™/�Ü×)Ñ)Ó+�Ø#)�Ô Ø% a™j�”Ø,0×,=Ò,=˜g ašjÀ4�”Ø—‘˜tÕ$ð%ô &)¨×)@Ñ)@Ó%AˆGÔ"Ø�L‰L×Ñ Õ(ð	)ô   §¡Ó-ˆÔðd €Kðc 
�‰�gÕ	ØˆŒØ˜4�Lˆ	Ø�k‰k‹m˜AÑ×'Ñ'Ð(@ÔAØ—*‘*“,˜q‘/Ð"B¤SÐ)AÓ%BÐ$BÐC×IÑIÓKˆCàœRŸ\™\Ð*ØœbŸl™lÐ+ñð ñ‰JˆC�ð ˜S‘>Ð)Ð)Ð)Ü*¨5°$¸eÔDˆI�c‰Nð �k‰k‹m˜AÑ×'Ñ'Ð(@ÕAð *3Ñ&ˆŒ˜œñ.
Ø3<ô.
Ñ*ˆÔ˜$Ô*ô 9>¸d×>NÑ>NÓ8OÖP°1œRŸ_™_Õ.ÒPˆÔØ×%Ñ%ò 	,ˆDÜ<AÀ$×BRÑBRÓ<SÖ T°q¤§¡Õ!2Ò TˆDÔØ×)Ñ)ò ,�Ü)›m�”Ü)›m�•ñ,ð	,ð
 ó 	%ˆDÜ�t“9 ’>Ð' 4Ó'�>Ø˜‘7—=‘=“? 1Ñ%×+Ñ+Ó-ˆDØÐ,Ñ,Ð2¨dÓ2Ð,Ø˜‘7œ3˜t›9˜;Ð'×-Ñ-Ó/×7Ñ7¸¸RÓ@ˆDÜ(¨Ñ.¨qÑ1ˆDÙ$?°T¸!¸A°YÔ$?Ñ!ˆF�F˜EØ×$Ñ$ VÑ,×9Ñ9¸&ÑAˆDØ�vŠ~Ø×!Ò! TÑ)Õ!Ø—[‘[‘à×!Ò! TÑ)Õ!Ø—[‘[�Ü˜r 4Ô(Ð4¨2¨t¨*Ó4Ð(Ü�B˜˜eÖ$ð	%ð  ×%Ñ%ò 	ˆDØ×)Ñ)ò �Ü)¨$×*;Ñ*;¸T¿[¹[ÓI�”ð ×(Ò(ô   × 1Ñ 1°4·;±;Ô?àð •ñð	ô %¤S¨¯©×)AÑ)A×)FÑ)FÓ)HÓ%IÈ4ÓPˆŒð €Kð 	�#‹ˆqùòC Qùâ Ts   Ï!YÐ*Y c                 óì   — | j                  «       d   j                  «       d   j                  «       }|dv r'| j                  d«      5  t	        | |«      cd d d «       S t	        | |«      S # 1 sw Y   ŒxY w)Nr   rÂ   )zfirstclass definition beginzsecondclass definition begin)rœ   rÚ   r�   Úuntilr  )rq   r©   rª   ró   s       r   ÚparseKernsetr  †  sv   € Ø
�+‰+‹-˜Ñ
×
 Ñ
 Ó
" 1Ñ
%×
+Ñ
+Ó
-€CØ
ÐÑØ�[‰[ØKó
ñ 	*ô ˜U DÓ)÷	*ñ 	*ô �U˜DÓ!Ð!÷		*ð 	*ús   ÁA*Á*A3c                 óØ   — t        | «      dk  sJ ‚ |«       }d|_        t        | d   «      \  |_        |_        t        | «      dkD  r"| d   dk7  rd|_        t        | d   «      |_        |S )Nr   r˜   r   rT   )rb   rÛ   ÚintSplitCommaÚXCoordinateÚYCoordinater$   ÚAnchorPoint)ÚdatarÊ   Úanchors      r   Ú
makeAnchorr  �  sj   € Üˆt‹9˜Š>Ðˆ>Ù‹W€FØ€F„MÜ-:¸4À¹7Ó-CÑ*€FÔ˜Ô*Ü
ˆ4ƒy�1‚}˜˜a™ BšØˆŒÜ   a¡›\ˆÔØ€Mr   c                 ó^  — i }| D ]ƒ  }t        |«      dv sJ |«       ‚dt        j                  fdt        j                  fdœ|d      \  }}t	        |d   «      }||vrd d g||<   ||   |   �	J ||f«       ‚t        |dd  |«      ||   |<   Œ… t        j                  ||j                  «       «      S )N)rV   rS   r   r˜   )ÚentryÚexitr   )	rb   r_   ÚEntryAnchorÚ
ExitAnchorr'   r  r¦   ÚbuildCursivePosSubtabler¼   )rq   r©   rª   rs   rt   r2   rÊ   Úglyphs           r   ÚparseCursiver  ›  sÚ   € Ø€GØò 
:ˆÜ�4‹y˜FÑ"Ð( DÓ(Ð"àœŸ™Ð(ØœŸ™Ð&ñ
ð ˆq‰'ñ‰
ˆˆUô ˜$˜q™'Ó"ˆØ˜ÑØ" D˜\ˆG�E‰NØ�u‰~˜cÑ"Ð*Ð8¨U°C¨LÓ8Ð*Ü(¨¨a¨b¨°5Ó9ˆ�‰�sÒð
:ô ×&Ñ& w°×0GÑ0GÓ0IÓJÐJr   c                 óº   — g }|j                   D ]I  }| |   \  }}|j                  «       }||_        t        ||j                  |«       |j                  |«       ŒK |S r)   )rá   ÚMarkRecordClassÚClassre   Ú
MarkAnchorrO   )r  ÚcoveragerÐ   rs   r  rÊ   r  Úrecords           r   ÚmakeMarkRecordsr  «  s_   € Ø€GØ—‘ò ˆØ˜U™‰ˆˆvØ×"Ñ"Ó$ˆØˆŒÜ�˜Ÿ™ fÔ-Ø�‰�vÕðð €Nr   c                 ó`  — g }i }|j                   D ]N  }t        |«      ||<   |j                  «       }d g|z  }t        ||j                  |«       |j                  |«       ŒP | j                  «       D ]9  \  \  }}	}
|||      }t        ||j                  «      }||	   �	J ||	f«       ‚|
||	<   Œ; |S r)   )rá   rb   ÚBaseRecordClassre   Ú
BaseAnchorrO   ÚitemsÚgetattr)r  r  rÐ   Ú
classCountrs   r2   r  r  ÚanchorsrÊ   r  s              r   ÚmakeBaseRecordsr&  ¶  sÉ   € Ø€GØ
€CØ—‘ò ˆÜ˜“\ˆˆE‰
Ø×"Ñ"Ó$ˆØ�&˜:Ñ%ˆÜ�˜Ÿ™ gÔ.Ø�‰�vÕðð #'§*¡*£,ò  Ñ‰ˆ�˜Ø˜˜U™Ñ$ˆÜ˜& !§,¡,Ó/ˆØ�u‰~Ð%Ð5¨¨u ~Ó5Ð%Øˆ�Šð	 ð
 €Nr   c                 óp  — d gt        |j                  «      z  }t        |j                  «      D ��ci c]  \  }}||“Œ
 }}}| j                  «       D ]Ö  \  \  }}	}
}}|||      }|€ot	        j
                  «       x}|||   <   ||_        t        |«      D �cg c]  }t	        j                  «       ‘Œ c}|_        |j                  D ]  }d g|z  |_	        Œ |j                  |k(  sJ ||j                  |f«       ‚|j                  |
dz
     j                  }||	   �
J ||
|	f«       ‚|||	<   ŒØ |S c c}}w c c}w ©Nr˜   )
rb   rá   rh   r"  r_   ÚLigatureAttachÚComponentCountrð   ÚComponentRecordÚLigatureAnchor)r  r  rÐ   r$  rs   r|   r+   r2   r  rÊ   ÚcompIdxÚ	compCountr  r  ÚcompRecr%  s                   r   ÚmakeLigatureRecordsr0  Ç  s\  € Øˆf”s˜8Ÿ?™?Ó+Ñ+€GÜ% h§o¡oÓ6×
7‘D�A�qˆ1ˆa‰4Ð
7€CÑ
7à6:·j±j³lò  Ñ2Ñ*ˆ��w 	¨FØ˜˜U™Ñ$ˆØˆ>Ü+-×+<Ñ+<Ó+>Ð>ˆF�W˜S ™ZÑ(Ø$-ˆFÔ!ÜDIÈ)ÓDTÖ%U¸q¤b×&8Ñ&8Õ&:Ò%UˆFÔ"Ø!×1Ñ1ò =�Ø*.¨°*Ñ)<�Õ&ð=à×$Ñ$¨	Ò1ð 	
ØØ×!Ñ!Øð4
ó 	
Ð1ð ×(Ñ(¨°1©Ñ5×DÑDˆØ�u‰~Ð%Ð>¨¨w¸Ð'>Ó>Ð%Øˆ�Šð! ð" €Nùó' 8ùò &Vs   ²D-ÂD3c           	      óŒ  — |j                  «       }d|_        i }i }||j                  f||j                  f||j                  fdœ}d}| D ]˜  }|d   }	|	dv sJ ‚t	        |d   «      }
||	   \  }}|	dk(  rdnd}t        d„ |dd|z    D «       «      }t        |d|z      «      }t        |d|z   d  |«      }|	dk(  r|
||f}}n	|
|f|z   |}}||vsJ |«       ‚|||<   t        ||«      }Œš t        t        |j                  «       «      ||j                  «      }|j                  «       }t        |||«      }t        ||j                   |«       t        ||j"                  t%        |«      «       t        ||j&                  |«       t        ||j(                  |«       |dz   |_        |sdn"dt        d	„ |j-                  «       D «       «      z   |_        t        t        |j                  «       D �cg c]  }|d   ‘Œ	 c}«      ||j0                  «      }|j3                  «       }|j4                  d
k(  rt7        ||||j.                  «      }nt9        ||||j.                  «      }t        ||j:                  |«       t        ||j<                  t%        |«      «       t        ||j>                  |«       t        ||j@                  |«       |S c c}w )Nr˜   )ÚmarkÚbaseÚligaturer   r4  r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr)   rÓ   ©rÏ   r|   s     r   rÑ   z'parseMarkToSomething.<locals>.<genexpr>ð  s   è ø€ Ò@ !”s˜1—vÑ@ùrÖ   rV   r2  c              3   ó,   K  — | ]  \  }}|d    –— Œ y­wrÌ   r   )rÏ   Úkr¿   s      r   rÑ   z'parseMarkToSomething.<locals>.<genexpr>  s   è ø€ Ò4W¹d¸aÀ°Q°qµTÑ4Wùs   ‚ÚLigature)!ÚTyperÛ   ÚMarkAnchorClassÚBaseAnchorClassr'   r´   r$   r  rÍ   rÜ   rÝ   rÞ   ÚMarkCoverageClassÚMarkArrayClassr  re   Ú
MarkRecordÚ	MarkCountrb   ÚMarkCoverageÚ	MarkArrayÚ
ClassCountr"  r$  ÚBaseCoverageClassÚBaseArrayClassÚBaser0  r&  Ú
BaseRecordÚ	BaseCountÚBaseCoverageÚ	BaseArray)rq   r©   rÐ   rI   ÚmarkDataÚbaseDataÚDataÚmaxKlassrt   ró   r  r  ÚanchorClassÚ
extraItemsÚextrasrÊ   r  r;   rù   ÚmarkCoverageÚ	markArrayÚmarkRecordsr8  ÚbaseCoverageÚ	baseArrayÚbaseRecordss                             r   ÚparseMarkToSomethingrX  ß  s®  € Ø�6‰6‹8€DØ€D„KØ€HØ€Hà˜1×,Ñ,Ð-Ø˜1×,Ñ,Ð-Ø˜q×0Ñ0Ð1ñ€Dð
 €HØò (ˆØ�1‰gˆØÐ2Ñ2Ð2Ð2Ü˜$˜q™'Ó"ˆØ  ™IÑˆˆkØ Ò+‘Q°ˆ
ÜÑ@ t¨A°°J±Ð'?Ô@Ó@ˆÜ�D˜˜Z™Ñ(Ó)ˆÜ˜D  Z¡Ð!1Ð2°KÓ@ˆØ�&Š=Ø ¨ �‰Cà  %˜.¨6Ñ1°F�ˆCØ˜$‰Ð# Ó#ˆØˆˆS‰	Ü�x Ó'‰ð(ô$  ¤ H§M¡M£OÓ 4°d¸A×<OÑ<OÓP€LØ× Ñ Ó"€IÜ! (¨L¸!Ó<€KÜˆI�q—|‘| [Ô1ÜˆI�q—{‘{¤C¨Ó$4Ô5ÜˆD�!—.‘. ,Ô/ÜˆD�!—+‘+˜yÔ)Ø ‘l€D„Oñ  (‘a¨Q´Ñ4WÀhÇnÁnÓFVÔ4WÓ1WÑ-W€D„OÜÜ˜8Ÿ=™=›?Ö+�aˆQˆq‹TÒ+Ó,¨d°A×4GÑ4Gó€Lð × Ñ Ó"€IØ‡v�v�ÒÜ)¨(°LÀ!ÀTÇ_Á_ÓU‰ä% h°¸aÀÇÁÓQˆÜˆI�q—|‘| [Ô1ÜˆI�q—{‘{¤C¨Ó$4Ô5ÜˆD�!—.‘. ,Ô/ÜˆD�!—+‘+˜yÔ)à€Kùò ,s   Ç'Kc                   ó   — e Zd Zd„ Zy)Ú
MarkHelperc                 óÔ   — dD ]c  }dD ]\  }||z   }|dk(  r|dv r|}nt        | |«      |z   }|dk(  rd}t        | ||«       |dk7  sŒ=t        t        |«      }t        | |dz   |«       Œ^ Œe y )	N)ÚMarkrF  )rß   ÚArrayÚCountÚRecordÚAnchorr\  )r^  r_  r`  ÚLigatureRecordr)  r^  r  )r#  re   r_   )rI   ÚWhichÚWhatr;   rù   rÊ   s         r   rJ   zMarkHelper.__init__  s‹   € Ø%ò 	8ˆEØJò 8�Ø˜d‘l�Ø˜F’? tÐ/LÑ'LØ‘Eä# D¨%Ó0°4Ñ7�EØÐ,Ò,Ø,�EÜ˜˜c 5Ô)Ø˜7“?Ü#¤B¨Ó.�EÜ˜D #¨¡-°Õ7ñ8ñ	8r   N©r   r   r   rJ   r   r   r   rZ  rZ    s   „ ó8r   rZ  c                   ó,   — e Zd ZdZdZej                  Zy)ÚMarkToBaseHelperr\  rF  N)r   r   r   r\  rF  r_   ÚMarkBasePosr:  r   r   r   rf  rf  (  s   „ Ø€DØ€DØ�>‰>�Dr   rf  c                   ó,   — e Zd ZdZdZej                  Zy)ÚMarkToMarkHelperÚMark1ÚMark2N)r   r   r   r\  rF  r_   ÚMarkMarkPosr:  r   r   r   ri  ri  .  s   „ Ø€DØ€DØ�>‰>�Dr   ri  c                   ó,   — e Zd ZdZdZej                  Zy)ÚMarkToLigatureHelperr\  r9  N)r   r   r   r\  rF  r_   Ú
MarkLigPosr:  r   r   r   rn  rn  4  s   „ Ø€DØ€DØ�=‰=�Dr   rn  c                 ó,   — t        | |t        «       «      S r)   )rX  rf  ©rq   r©   rª   s      r   ÚparseMarkToBaserr  :  ó   € Ü  tÔ-=Ó-?Ó@Ð@r   c                 ó,   — t        | |t        «       «      S r)   )rX  ri  rq  s      r   ÚparseMarkToMarkru  >  rs  r   c                 ó,   — t        | |t        «       «      S r)   )rX  rn  rq  s      r   ÚparseMarkToLigaturerw  B  s   € Ü  tÔ-AÓ-CÓDÐDr   c                 ón   — | r-| j                  d«      D �cg c]  }|j                  «       ‘Œ c}S g S c c}w ©Nú,)rÚ   Ústrip)rt   r&   s     r   rf   rf   F  s+   € Ù37˜tŸz™z¨#›Ö/˜!ˆA�G‰G�IÒ/Ð?¸RÐ?ùÒ/s   –2c                 ód   — | r(| j                  d«      D �cg c]  }t        |«      ‘Œ c}S g S c c}w ry  )rÚ   r$   )rt   r|   s     r   r	  r	  J  s)   € Ù04˜DŸJ™J s›OÖ,�qŒC��FÒ,Ð<¸"Ð<ùÒ,s   –-c                   ó   — e Zd Zd„ Zy)ÚContextHelperc                 ór  — |j                  d«      rd}d}nd}d}|j                  d«      rd}d}d}nd}d}d}||z   }|| _        || _        || _        || _        || _        || _        |d	z   | _        |dk(  rd
„ }	d„ }
d„ }d„ }d }d }d„ }d„ }d„ }d„ }nN|dk(  rd„ }	d„ }
d„ }d„ }d„ }d„ }d„ }d„ }d„ }d„ }n*|dk(  rd„ }	d„ }
d }d }d }d }d„ }d „ }d!„ }d"„ }n
J d#|z  «       ‚|r$|
| _	        || _
        || _        || _        || _        n#|	| _	        || _
        || _        || _        || _        |dk(  r1|d$z   | _        |d%z   | _        |d&z   | _        |d'z   | _        d(„ | _        y |dk(  rR|d)z   | _        |d*z   | _        |d+z   | _        |d,z   | _        d-„ | _        |rd.nd/| _        |rdnd| _        |rd0nd1| _        y y )2NÚSubstÚSubÚPosÚChainr˜   rV   rT   r   ÚLookupRecordc                 ó   — | j                   S r)   ©rß   ©Úrs    r   r=   z(ContextHelper.__init__.<locals>.<lambda>k  ó
   €  §¡€ r   c                 ó   — | j                   S r)   r†  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>l  ó
   €  a§j¡j€ r   c                  ó   — y)Nr)   r   r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>m  ó   � r   c                  ó   — y)N)NNNr   r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>n  r�  r   c                 ó   — | j                   fS r)   )ÚInputr‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>q  ó   €  !§'¡' € r   c                 óH   — | j                   | j                  | j                  fS r)   ©Ú	Backtrackr�  Ú	LookAheadr‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>r  ó   €  q§{¡{°A·G±G¸Q¿[¹[Ð&I€ r   c                 ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3   ó8   K  — | ]  }t        |«      d z   –— Œ y­wrÌ   ©rb   rÔ   s     r   rÑ   z>ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>v  ó   è ø€ Ò"9°!¤3 q£6¨A¥:Ñ"9ùó   ‚)r�  Ú
GlyphCount©rˆ  Úds     r   ÚSetRuleDataz+ContextHelper.__init__.<locals>.SetRuleDatat  ó   € Ø‘
�”Ù"9°qÔ"9‘�•r   c                 ó¨   — |\  | _         | _        | _        t        |d   «      t        |d   «      dz   t        |d   «      c| _        | _        | _        y ©Nr   r˜   r   ©r”  r�  r•  rb   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountr�  s     r   ÚChainSetRuleDataz0ContextHelper.__init__.<locals>.ChainSetRuleDatax  óP   € Ø67Ñ3�”˜aœg q¤{ô
 ˜˜1™“Y¤ A a¡D£	¨A¡¬s°1°Q±4«yð	ØÔ)ØÔ%ØÕ)r   r   c                 ó   — | j                   S r)   r†  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>�  r‰  r   c                 ó   — | j                   S r)   r†  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>‚  r‹  r   c                 ó   — | j                   fS r)   ©ÚClassDefr‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>ƒ  s   €  Q§Z¡Z M€ r   c                 óH   — | j                   | j                  | j                  fS r)   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefr‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>„  s"   € Ø×#Ñ#Ø—‘Ø×#Ñ#ð*€ r   c                 ó   — |\  | _         y r)   r¬  r�  s     r   ÚSetContextDataz.ContextHelper.__init__.<locals>.SetContextDataŠ  s   € Ø !‘�•r   c                 ó.   — |\  | _         | _        | _        y r)   r¯  r�  s     r   ÚSetChainContextDataz3ContextHelper.__init__.<locals>.SetChainContextData�  s   € ØNOÑK�Ô$ a¤o°qÕ7Jr   c                 ó   — | j                   fS r)   )r  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>�  r‘  r   c                 óH   — | j                   | j                  | j                  fS r)   r“  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>‘  r–  r   c                 ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3   ó8   K  — | ]  }t        |«      d z   –— Œ y­wrÌ   r™  rÔ   s     r   rÑ   z>ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>•  rš  r›  )r  rœ  r�  s     r   rŸ  z+ContextHelper.__init__.<locals>.SetRuleData“  r   r   c                 ó¨   — |\  | _         | _        | _        t        |d   «      t        |d   «      dz   t        |d   «      c| _        | _        | _        y r¢  r£  r�  s     r   r§  z0ContextHelper.__init__.<locals>.ChainSetRuleData—  r¨  r   c                 ó    — | j                   d   S ©Nr   r†  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>   s   €  §¡¨A¡€ r   c                 ó    — | j                   d   S r½  )ÚInputCoverager‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>¡  s   €  a§o¡o°aÑ&8€ r   c                 ó   — | j                   S r)   r†  r‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>¦  r‰  r   c                 óN   — | j                   | j                  z   | j                  z   S r)   )ÚBacktrackCoverager¿  ÚLookAheadCoverager‡  s    r   r=   z(ContextHelper.__init__.<locals>.<lambda>§  s$   € Ø×#Ñ# a§o¡oÑ5¸×8KÑ8KÑKð r   c                 ó6   — |\  | _         d„ |D «       \  | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr)   r™  rÔ   s     r   rÑ   z>ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>­  s   è ø€ Ò"5¨a¤3 q§6Ñ"5ùrÖ   )rß   rœ  r�  s     r   rŸ  z+ContextHelper.__init__.<locals>.SetRuleData«  s   € Ø !‘�”Ù"5°1Ô"5‘�•r   c                 óf   — |\  | _         | _        | _        d„ |D «       \  | _        | _        | _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr)   r™  rÔ   s     r   rÑ   zCContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>µ  s   è ø€ Ò' ”S˜—VÑ'ùrÖ   )rÂ  r¿  rÃ  r¤  r¥  r¦  r�  s     r   r§  z0ContextHelper.__init__.<locals>.ChainSetRuleData¯  s7   € ØNOÑK�Ô$ a¤o°qÔ7Jñ
 ( QÔ'ñ	ØÔ)ØÔ%ØÕ)r   zunknown format: %sÚRuleÚ	RuleCountÚRuleSetÚRuleSetCountc                 ó   — || v r|gS g S r)   r   ©rá   rÐ   rˆ  s      r   r=   z(ContextHelper.__init__.<locals>.<lambda>Ì  s   € ¸¸f¹°1°#€ È"€ r   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                 ó^   — |r|j                  | |«      S |dk(  rt        | «      S t        «       S r½  )Úintersect_classrÝ   rÍ  s      r   r=   z(ContextHelper.__init__.<locals>.<lambda>Ò  s<   € áð ×!Ñ! &¨!Ó,ð ð &'¨!¢V”c˜&“kð ô 25³ð r   r±  r­  r�  r  )ré   Ú
startswithÚTypr:  rƒ  ÚChainTypÚInputIdxÚDataLenr„  rß   ÚContextDatar´  ÚRuleDatarŸ  rÈ  rÉ  rÊ  rË  Ú	Intersectr­  ÚClassDefIndexr�  )rI   Ú	klassNamerÛ   rÕ  r:  rƒ  r×  rØ  rÖ  rß   ÚChainCoveragerÙ  ÚChainContextDatar´  r¶  rÚ  ÚChainRuleDatarŸ  r§  s                      r   rJ   zContextHelper.__init__P  sV  € Ø×Ñ˜gÔ&ØˆCØ‰DàˆCØˆDØ×Ñ Ô(ØˆEØˆHØ‰GàˆEØˆHØˆGØ˜3‘;ˆàˆŒØˆŒ	ØˆŒ
Ø ˆŒØ ˆŒØˆŒà  >Ñ1ˆÔà�QŠ;Ù+ˆHÙ0ˆMÙ+ˆKÙ;ÐØ!ˆNØ"&ÐÙ+ˆHÙIˆMò:ó:ð �qŠ[Ù+ˆHÙ0ˆMÙ1ˆKñ Ðò"òPñ ,ˆHÙIˆMò:ó:ð �qŠ[Ù.ˆHÙ8ˆMØˆKØ#ÐØ!ˆNØ"&ÐÙ+ˆHñˆMò6ó(ð 4Ð*¨VÑ3Ó3�1áØ)ˆDŒMØ/ˆDÔØ"5ˆDÔØ)ˆDŒMØ/ˆDÕà$ˆDŒMØ*ˆDÔØ"0ˆDÔØ$ˆDŒMØ*ˆDÔà�QŠ;Ø  6Ñ)ˆDŒIØ%¨Ñ3ˆDŒNØ# iÑ/ˆDŒLØ (¨>Ñ 9ˆDÔÙLˆD�NØ�qŠ[Ø  ;Ñ.ˆDŒIØ%Ð(8Ñ8ˆDŒNØ# jÑ0ˆDŒLØ (¨?Ñ :ˆDÔñˆDŒNñ 05™O¸*ˆDŒMÙ&+¡°ˆDÔÙ$)™¨wˆD�Jð r   Nrd  r   r   r   r~  r~  O  s   „ óJ7r   r~  c           	      ó&  — t        t        |«      }g }| D ]y  } |«       }t        |«      }t        |«      dk(  sJ |«       ‚t	        |d   «      }|dkD  sJ |«       ‚|dz
  |_        t        t        ||d   t        |d«       |j                  |«       Œ{ |S )Nr   r   r˜   rˆ   )
r#  r_   rf   rb   r$   ÚSequenceIndexrC   r3   re   rO   )r"  rÝ  rŠ   rÊ   ÚlstÚitemr[   r2   s           r   ÚparseLookupRecordsrå  Ý  s›   € Ü”B˜	Ó"€EØ
€CØò ˆÙ‹gˆÜ˜tÓ$ˆÜ�4‹y˜AŠ~Ð#˜tÓ#ˆ~Ü�$�q‘'‹lˆØ�QŠwÐ˜ÓˆwØ !™GˆÔÜ”Y 	¨4°©7´G¸SÐBSÔTØ�
‰
�3�ðð €Jr   c                 ó:   — | sy  |«       }t        | «      |_        |S r)   )ÚdictrÎ   )rÎ   r©   rÊ   rI   s       r   ÚmakeClassDefrè  ì  s   € ÙØÙ‹7€DÜ˜)“_€D„NØ€Kr   c                 óÐ   — i }| j                  d«      5  | D ],  }t        |d   «      }||vsJ |«       ‚t        |d   «      ||<   Œ. 	 d d d «       t        |||«      S # 1 sw Y   ŒxY w)Nzclass definitionr   r˜   )ra   r'   r$   rè  )rq   r©   rÊ   rÎ   rt   r  s         r   rí   rí   ô  s|   € Ø€IØ	�‰Ð)Ó	*ñ ,Øò 	,ˆDÜ˜d 1™gÓ&ˆEØ 	Ñ)Ð0¨5Ó0Ð)Ü" 4¨¡7›|ˆI�eÒñ	,÷,ô
 ˜	 4¨Ó/Ð/÷,ð ,ús   ”2AÁA%c                 óš   — | sy t        | t        «      rt        | «      }  |«       }t        t        | «      |j                  ¬«      |_        |S )Nr\   )Ú
isinstancerÝ   ro   rã   rá   )rá   r©   rÊ   r  s       r   rÜ   rÜ   þ  s=   € ÙØÜ�&œ#ÔÜ˜“ˆÙ‹w€HÜœS ›[¨d¯o©oÔ>€H„OØ€Or   c                 ó¶   — g }| j                  d«      5  | D ]  }|j                  t        |d   «      «       Œ! 	 d d d «       t        |||«      S # 1 sw Y   ŒxY w)Nzcoverage definitionr   )ra   rO   r'   rÜ   )rq   r©   rÊ   rá   rt   s        r   ÚparseCoveragerí    s^   € Ø€FØ	�‰Ð,Ó	-ñ .Øò 	.ˆDØ�M‰Mœ) D¨¡GÓ,Õ-ñ	.÷.ô ˜  eÓ,Ð,÷.ð .ús   ”%AÁAc           	      óN  ‡— i }|D ]S  \  }}|j                  |‰j                     d   g «      j                  t        ˆfd„t	        |«      D «       «      |f«       ŒU g }|D �]  }||vr|j                  d «       Œg }	||   D ]�  \  }} t        t        ‰j                  «      «       }
‰j                  |
|«       t        |
‰j                  dz   t        |«      «       t        |
‰j                  |«       |	j                  |
«       Œƒ  t        t        ‰j                  «      «       }t        |‰j                  |	«       t        |‰j                  t        |	«      «       |j                  |«       �Œ t        | ‰j                  |«       t        | ‰j                  t        |«      «       y )Nr   c              3   óP   •K  — | ]  \  }}||‰j                   k(  rd ndd –— Œ y­w)r˜   r   N©r×  )rÏ   r|   r&   rÐ   s      €r   rÑ   z!bucketizeRules.<locals>.<genexpr>  s)   øè ø€ ÒO¹¸¸1�1˜!˜qŸz™zš/‘Q¨qÐ2Ô3ÑOùs   ƒ#&r^  )Ú
setdefaultr×  rO   r´   rh   r#  r_   rÈ  rŸ  re   r:  rb   r„  rÊ  rÉ  rË  )rI   rÐ   ÚrulesÚ
bucketKeysÚbucketsÚseqÚrecsÚrulesetsÚ
firstGlyphÚ	thisRulesÚruleÚrulesets    `          r   ÚbucketizeRulesrü    sl  ø€ Ø€GØò 
‰	ˆˆTØ×Ñ˜3˜qŸz™z™?¨1Ñ-¨rÓ2×9Ñ9ÜÓOÄ	È#ÃÔOÓOÐQUÐVõ	
ð
ð
 €HØ ó !ˆ
Ø˜WÑ$Ø�O‰O˜DÔ!ØØˆ	Ø  Ñ,ò 	#‰IˆC�Ø&”7œ2˜qŸv™vÓ&Ó(ˆDØ�M‰M˜$ Ô$Ü�D˜!Ÿ&™& 7Ñ*¬C°«IÔ6Ü�D˜!Ÿ.™.¨$Ô/Ø×Ñ˜TÕ"ð	#ð )”'œ"˜aŸi™iÓ(Ó*ˆÜ�˜Ÿ™ Ô+Ü�˜Ÿ™¤c¨)£nÔ5Ø�‰˜Ö ð!ô" ˆD�!—)‘)˜XÔ&ÜˆD�!—.‘.¤# h£-Õ0r   c           
      óê  ‡‡—  t        t        |«      «       }| j                  «       d   j                  «       d   j	                  «       }|dk(  �rTd|_        t        j                  d||j
                  «       t        ||j
                  «      Šg }| D ]Æ  }|d   j	                  «       dk(  s
J |d   «       ‚t        |«      d‰j                  z   k  r-|j                  d«       t        |«      d‰j                  z   k  rŒ-t        d„ |dd‰j                  z    D «       «      }t        |d‰j                  z   d  ‰j                  |«      }	|j                  ||	f«       ŒÈ t        ˆfd„|D «       «      }
t!        |
|«      |_        t%        |‰||j"                  j&                  «       |S |j)                  d«      �rªd	|_        t        j                  d||j
                  «       t        ||j
                  «      Šd g‰j                  z  }| j                  «       d   j)                  d
«      rÌ| j+                  «       d   d t        d
«        j	                  «       }ddt        j,                  fidt        j.                  fdt        j0                  fd	t        j2                  fdœdœ‰j                     |   \  }}||   �J |«       ‚t5        | ||¬«      ||<   | j                  «       d   j)                  d
«      rŒÌ‰j7                  ||«       g }| D ]Ò  }|d   j	                  «       j9                  d«      s
J |d   «       ‚t        |«      d‰j                  z   k  r-|j                  d«       t        |«      d‰j                  z   k  rŒ-t        d„ |dd‰j                  z    D «       «      }t        |d‰j                  z   d  ‰j                  |«      }	|j                  ||	f«       ŒÔ t        ˆfd„|D «       «      Št        ˆfd„|‰j:                     j<                  j?                  «       D «       «      }
t!        |
|«      |_        t%        |‰|tA        tC        ‰«      dz   «      «       |S |j)                  d«      �rüd|_        t        j                  d||j
                  «       t        ||j
                  «      Št        d„ tA        ‰j                  «      D «       «      }| j                  «       d   j)                  d«      rÏ| j+                  «       d   d t        d«        j	                  «       }ddt        j"                  fidt        jD                  fdt        jF                  fd	t        jH                  fdœdœ‰j                     |   \  }}||   j                  tK        | ||¬«      «       | j                  «       d   j)                  d«      rŒÏ‰jM                  ||«       tO        | «      } t        | «      dk(  sJ ‚| d   }|d   j	                  «       dk(  s
J |d   «       ‚t        |dd  ‰j                  |«      }	tQ        |‰jR                  dz   t        |	«      «       tQ        |‰j                  |	«       |S J |«       ‚)Nr   r  r˜   zParsing %s format %srT   c              3   óD   K  — | ]  }t        t        |«      «      –— Œ y ­wr)   )r,   rf   r6  s     r   rÑ   zparseContext.<locals>.<genexpr>9  s   è ø€ ÒX¸1œ
¤?°1Ó#5×6ÑXùs   ‚ c              3   óH   •K  — | ]  \  }}|‰j                      d    –— Œ y­w©r   Nrð  ©rÏ   rõ  rö  rÐ   s      €r   rÑ   zparseContext.<locals>.<genexpr>=  s"   øè ø€ ÒD±°°d˜#˜aŸj™j™/¨!Õ,ÑDùó   ƒ"rÅ   r   rÆ   )Ú	backtrackrT   Ú	lookahead)r˜   rV   rÉ   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr)   )r	  r6  s     r   rÑ   zparseContext.<locals>.<genexpr>Y  s   è ø€ ÒJ¨Qœ a×(ÑJùrÖ   c              3   óH   •K  — | ]  \  }}|‰j                      d    –— Œ y­wr   rð  r  s      €r   rÑ   zparseContext.<locals>.<genexpr>\  s"   øè ø€ ÒE±)°#°t˜3˜qŸz™z™?¨1Õ-ÑEùr  c              3   ó2   •K  — | ]  \  }}|‰v sŒ|–— Œ y ­wr)   r   )rÏ   r+   rÐ   ÚfirstClassess      €r   rÑ   zparseContext.<locals>.<genexpr>]  s!   øè ø€ ò 
Ù�!�QÀQÈ,ÒEVŒAñ
ùs   ƒ�r  rV   c              3   ó    K  — | ]  }g –— Œ y ­wr)   r   r6  s     r   rÑ   zparseContext.<locals>.<genexpr>f  s   è ø€ Ò7 œ"Ñ7ùs   ‚úcoverage definition begin)r  Úinputr  r^  )*r#  r_   rœ   rÚ   r�   rÛ   rL   rM   r~  rb   rØ  rO   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Ÿ  Úlistre   r:  )rq   r©   r:  rŠ   rI   ró   rò  rt   rõ  rö  ÚfirstGlyphsrÎ   r2   rÊ   Ú	coveragesrÐ   r  s                  @@r   ÚparseContextr  -  sÉ  ù€ ØŒ7”2�tÓÓ€DØ
�+‰+‹-˜Ñ
×
 Ñ
 Ó
" 1Ñ
%×
+Ñ
+Ó
-€CØ
ˆgƒ~ØˆŒÜ�	‰	Ð(¨$°·±Ô<Ü˜$ §¡Ó,ˆØˆØò 	&ˆDØ˜‘7—=‘=“? gÒ-Ð6¨t°A©wÓ6Ð-Ü�d“)˜a !§)¡)™mÒ+Ø—‘˜B”ô �d“)˜a !§)¡)™mÓ+äÑXÀÀQÈÈQÏYÉYÉÐ@WÔXÓXˆCÜ% d¨1¨q¯y©y©=¨?Ð&;¸Q¿^¹^ÈYÓWˆDØ�L‰L˜#˜t˜Õ%ð	&ô ÓD¸eÔDÓDˆÜ$ [°$Ó7ˆŒÜ�t˜Q  t§}¡}×';Ñ';Ô<ð~ €Kð} 
�‰�gÕ	ØˆŒÜ�	‰	Ð(¨$°·±Ô<Ü˜$ §¡Ó,ˆØ�F˜QŸY™YÑ&ˆ	Ø�k‰k‹m˜AÑ×'Ñ'Ð(@ÔAØ—*‘*“,˜q‘/Ð"B¤SÐ)AÓ%BÐ$BÐC×IÑIÓKˆCð ˜œBŸK™KÐ(ðð #$¤R×%9Ñ%9Ð!:ØœB×,Ñ,Ð-Ø"#¤R×%9Ñ%9Ð!:ññ		ð �i‰iñ	ð ñ	‰JˆC�ð ˜S‘>Ð)Ð.¨3Ó.Ð)Ü*¨5°$¸eÔDˆI�c‰Nð �k‰k‹m˜AÑ×'Ñ'Ð(@ÕAð 	
×Ñ˜˜yÔ)ØˆØò 	&ˆDØ˜‘7—=‘=“?×-Ñ-¨gÔ6Ð?¸¸Q¹Ó?Ð6Ü�d“)˜a !§)¡)™mÒ+Ø—‘˜B”ô �d“)˜a !§)¡)™mÓ+äÑJ°$°q¸1¸q¿y¹y¹=Ð2IÔJÓJˆCÜ% d¨1¨q¯y©y©=¨?Ð&;¸Q¿^¹^ÈYÓWˆDØ�L‰L˜#˜t˜Õ%ð	&ô ÓE¸uÔEÓEˆÜó 
Ø# A§J¡JÑ/×9Ñ9×?Ñ?ÓAô
ó 
ˆô % [°$Ó7ˆŒÜ�t˜Q ¤u¬S°Ó->ÀÑ-BÓ'CÔDð: €Kð9 
�‰�jÕ	!ØˆŒÜ�	‰	Ð(¨$°·±Ô<Ü˜$ §¡Ó,ˆÜÑ7¤e¨A¯I©IÓ&6Ô7Ó7ˆ	Ø�k‰k‹m˜AÑ×'Ñ'Ð(CÔDØ—*‘*“,˜q‘/Ð"E¤SÐ)DÓ%EÐ$EÐF×LÑLÓNˆCð ˜œBŸK™KÐ(ðð #$¤R×%9Ñ%9Ð!:Ø¤×!1Ñ!1Ð2Ø"#¤R×%9Ñ%9Ð!:ññ		ð �i‰iñ	ð ñ	‰JˆC�ð �c‰N×!Ñ!¤-°°tÀ5Ô"IÔJð �k‰k‹m˜AÑ×'Ñ'Ð(CÕDð 	
�‰�d˜IÔ&Ü�U“ˆÜ�5‹z˜QŠÐˆØ�Q‰xˆØ�A‰w�}‰}‹ *Ò,Ð5¨d°1©gÓ5Ð,Ü! $ q r (¨A¯N©N¸IÓFˆÜ��a—f‘f˜wÑ&¬¨D«	Ô2Ü��a—n‘n dÔ+ð €Kð 	�#‹ˆqr   c                 ó    — t        | |d|¬«      S )NÚContextSubst©rŠ   ©r  ©rq   r©   rŠ   s      r   ÚparseContextSubstr  �  s   € Ü˜˜t ^¸yÔIÐIr   c                 ó    — t        | |d|¬«      S )NÚ
ContextPosr  r  r  s      r   ÚparseContextPosr  …  s   € Ü˜˜t \¸YÔGÐGr   c                 ó    — t        | |d|¬«      S )NÚChainContextSubstr  r  r  s      r   ÚparseChainedSubstr  ‰  s   € Ü˜˜tÐ%8ÀIÔNÐNr   c                 ó    — t        | |d|¬«      S )NÚChainContextPosr  r  r  s      r   ÚparseChainedPosr  �  s   € Ü˜˜tÐ%6À)ÔLÐLr   c                 óž  — t        j                  «       }d|_        g g f}| j                  «       d   j	                  d«      rœ| j                  «       d   d t        d«        j                  «       }dt         j                  fdt         j                  fdœ|   \  }}||   j                  t        | ||¬«      «       | j                  «       d   j	                  d«      rŒœ|d   |_        t        |j                  «      |_        |d   |_	        t        |j                  «      |_        i }| D ]-  }	t        |	«      dk(  sJ |	«       ‚t        |	«      }	|	d   ||	d   <   Œ/ t        t!        |j#                  «       «      |«      |_        |j$                  j&                  D �
cg c]  }
||
   ‘Œ	 c}
|_        t        |j(                  «      |_        |S c c}
w )Nr˜   r   r
  )r  r  rÉ   r   )r_   ÚReverseChainSingleSubstrÛ   rœ   ré   rê   rb   r�   rÂ  rÃ  rO   rí  r¤  r¦  r,   rÜ   rÝ   rÞ   rß   rá   Ú
Substituterœ  )rq   r©   rª   rI   r  ró   r2   rÊ   r1   rt   r8  s              r   ÚparseReverseChainedSubstr"  ‘  s¨  € Ü×%Ñ%Ó'€DØ€D„KØ�R�€IØ
�+‰+‹-˜Ñ
×
#Ñ
#Ð$?Ô
@Ø�j‰j‹l˜1‰oÐA¤Ð%@Ó!AÐ AÐB×HÑHÓJˆàœR×1Ñ1Ð2ØœR×1Ñ1Ð2ñ
ð ñ‰
ˆˆUð 	�#‰×Ñœm¨E°4¸uÔEÔFð �+‰+‹-˜Ñ
×
#Ñ
#Ð$?Õ
@ð ' q™\€DÔÜ" 4×#9Ñ#9Ó:€DÔØ& q™\€DÔÜ" 4×#9Ñ#9Ó:€DÔØ€GØò #ˆÜ�4‹y˜AŠ~Ð#˜tÓ#ˆ~Ü˜$ÓˆØ ™7ˆ��Q‘Òð#ô !¤ W§\¡\£^Ó!4°dÓ;€D„MØ+/¯=©=×+?Ñ+?Ö@ a�w˜q“zÒ@€D„OÜ˜$Ÿ/™/Ó*€D„OØ€Kùò As   ÆG
c                 ó  — | j                  d«      }|\  }}}t        j                  d||«       t        j                  «       }t        | «      \  |_        }	|	�|	|_        dt        fdt        fdt        fdt        fdt        fdt        fd	t        fd
œdt        fdt         fdt"        fdt$        fdt&        fdt(        fdt*        fdt,        fd	t.        fdœ	dœ|   |   \  |_        }
| j3                  d«      5  g }| j5                  «       r¢| j3                  d«      5  | j5                  «       rG |
| ||«      }|j0                  |j0                  k(  sJ ‚|j7                  |«       | j5                  «       rŒGd d d «       | j9                  «       d   dv rt;        | «       | j5                  «       rŒ¢d d d «       | j                  d«       |_        t?        |j<                  «      |_         |j@                  dk(  ry |S # 1 sw Y   Œ†xY w# 1 sw Y   ŒYxY w)NÚlookupzParsing lookup type %s %sr˜   r   rV   rS   é   é   r™   )ÚsingleÚmultipleÚ	alternater4  ÚcontextÚchainedÚreversechainedé   )	r'  rÿ   ÚkernsetÚcursivezmark to basezmark to ligaturezmark to markr*  r+  ©ÚGSUBÚGPOSz
lookup end)ú
% subtablezsubtable endr   )!ÚexpectrL   rM   r_   ÚLookupr¤   Ú
LookupFlagÚMarkFilteringSetr«   r¯   r²   r¶   r  r  r"  rÀ   r  r  r  rr  rw  ru  r  r  Ú
LookupTyper  rê   rO   rœ   rž   ÚSubTablerb   ÚSubTableCount)rq   ÚtableTagr©   rŠ   rt   Ú_r‹   ró   r$  r¡   ÚparseLookupSubTableÚ	subtablesÚsubtables                r   ÚparseLookupr@  «  s  € Ø�<‰<˜Ó!€DØ�L€A€tˆSÜ‡I�IÐ)¨3°Ô5Ü�Y‰Y‹[€FÜ#3°EÓ#:Ñ €FÔ�yØÐØ"+ˆÔð Ô*Ð+ØœMÐ*Øœ^Ð,ØœMÐ*ØÔ,Ð-ØÔ,Ð-Ø Ô":Ð;ñ
ð œ.Ð)Øœ	�NØœ<Ð(Øœ<Ð(Ø¤Ð0Ø!"Ô$7Ð 8Ø¤Ð0Øœ?Ð+Øœ?Ð+ñ

ñ.ð* ñ+.ð* ñ+.Ñ*€FÔÐ*ð. 
�‰�\Ó	"ñ 
Øˆ	à�j‰jŒlØ—‘Ð;Ó<ñ /Ø—j‘j”lÙ2°5¸$À	ÓJ�HØ!×,Ñ,°×0CÑ0CÒCÐCÐCØ×$Ñ$ XÔ.ð —j‘j•l÷/ð
 �{‰{‹}˜QÑÐ#AÑAÜ�U”ð �j‰j�l÷
ð 
‡L�L�Ôà€F„OÜ˜vŸ™Ó/€FÔØ×Ñ˜qÒ ð Ø€M÷/ð /ú÷	
ð 
ús%   Ã5$HÄAG6Å18HÇ6G?	Ç;HÈHc                 óŠ  ‡‡—  t        j                  |«      «       }t        «       Št        «       Š|dv sJ ‚t        j	                  d|«        t        t        |«      «       }d|_        dˆfd„fdˆˆfd„fdd	œ}|j                  «       D ]  \  }}t        ||d «       Œ | j                  «       ��•| j                  «       d
   j                  «       }||vr0t        j	                  d| j                  «       «       t        | «       Œf||   \  }}|dk(  rû|j                  €*t        j                  «       |_        g |j                  _        | j                  «       \  }	}
}	t        | ||‰«      }‰�1|
‰vs
J d|
z  «       ‚t!        |j                  j                  «      ‰|
<   nJt#        |
«      t!        |j                  j                  «      k(  sJ d|
t!        |j                  «      fz  «       ‚|j                  j                  j%                  |«       n&t        ||«      �J |«       ‚t        || || «      «       | j                  «       ��Œ•|j                  r.t!        |j                  j                  «      |j                  _        ‰�»‰j)                  «        t*        j,                  j/                  t0        «      rxd|vrt3        d«      |d<   i |d   _        |d   j4                  j7                  t8        i «      j7                  |i «      }‰j;                  «       D ]  \  }
}d|
dg|t=        |«      <   Œ ‰j)                  «        ||_        |S )Nr0  z
Parsing %sé   r`   c                 ó   •— t        | ‰«      S r)   )r€   )rq   rr   s    €r   r=   zparseGSUBGPOS.<locals>.<lambda>ë  s   ø€ œ/¨%°Ó<€ r   rƒ   c                 ó   •— t        | ‰‰«      S r)   )r�   )rq   rr   rŠ   s    €€r   r=   zparseGSUBGPOS.<locals>.<lambda>ï  s   ø€ Ô*¨5°)¸ZÓH€ r   )Ú
LookupListN)zscript table beginzfeature table beginr$  r   úSkipping %sr$  zDuplicate lookup name: %sr‚   ÚDebgrT   ) r   ÚgetTableClassrE   rL   rM   r#  r_   ÚVersionr½   re   rê   r�   rž   rE  r5  r@  rb   r$   rO   r‰   rQ   ÚosÚenvironrŸ   r   r
   r  rñ  r   r"  ÚstrÚtable)rq   r©   r;  Ú	containerrI   ÚfieldsÚattrÚparserró   r<  r‹   r$  rM   rr   rŠ   s                @@r   ÚparseGSUBGPOSrR  à  sõ  ù€ Ø-”×#Ñ# HÓ-Ó/€IÜÓ!€IÜ Ó"€JØÐ'Ñ'Ð'Ð'Ü‡I�Iˆl˜HÔ%Ø Œ7”2�xÓ Ó"€DØ€D„Lð Û<ð
ð
 ÜHð 
ð 'ñ
€Fð Ÿ™›ò "‰ˆˆfÜ��d˜DÕ!ð"à
�*‰*‹,Ñ
"Ø�j‰j‹l˜1‰o×#Ñ#Ó%ˆØ�fÑÜ�I‰I�m U§Z¡Z£\Ô2Ü�ŒKØØ˜c‘{‰ˆˆfØ�(Š?Ø�‰Ð&Ü"$§-¡-£/�”Ø)+�—‘Ô&ØŸ™›‰JˆAˆt�QÜ  ¨°$¸	ÓBˆFØÐ$Ø 9Ñ,ÐPÐ.IÈDÑ.PÓPÐ,Ü"% d§o¡o×&<Ñ&<Ó"=�	˜$’ä˜4“y¤C¨¯©×(>Ñ(>Ó$?Ò?ð ÀØÜ˜Ÿ™Ó$ðLñ Bó Ð?ð �O‰O×"Ñ"×)Ñ)¨&Õ1ä˜4 Ó&Ð.Ð4°Ó4Ð.Ü�D˜$¡ u£Ô.ð1 �*‰*‹,Ò
"ð2 ‡‚Ü&)¨$¯/©/×*@Ñ*@Ó&Aˆ�‰Ô#ØÐØ×'Ñ'Ô)Ü�:‰:�>‰>Ô.Ô/Ø˜TÑ!Ü'¨Ó/��V‘Ø$&��V‘Ô!à�V‘ß‘—j‘jÔ!6¸Ó;ß‘˜H bÓ)ð ð
 !*§¡Ó 1ò 4‘��fØ&(¨$° ^�”c˜&“kÒ"ð4ð 	×(Ñ(Ô*Ø€I„OØÐr   c                 ó   — t        | |d«      S )Nr1  ©rR  ©rq   r©   s     r   Ú	parseGSUBrV  #  ó   € Ü˜  fÓ-Ð-r   c                 ó   — t        | |d«      S )Nr2  rT  rU  s     r   Ú	parseGPOSrY  '  rW  r   c                 ó$  — i }| j                  d«      5  | D ]:  }t        |d   «      }||vsJ |«       ‚|dd  D �cg c]  }t        |«      ‘Œ c}||<   Œ< 	 d d d «       t        j                  ||j                  «       «      S c c}w # 1 sw Y   Œ2xY w)Nzattachment listr   r˜   )ra   r'   r$   r¦   ÚbuildAttachListr¼   )rq   r©   Úpointsrt   r  r|   s         r   ÚparseAttachListr]  +  sš   € Ø€FØ	�‰Ð(Ó	)ñ 7Øò 	7ˆDÜ˜d 1™gÓ&ˆEØ Ñ&Ð-¨Ó-Ð&Ø-1°!°"¨XÖ6¨œS �VÒ6ˆF�5ŠMñ	7÷7ô
 ×Ñ˜v t×'>Ñ'>Ó'@ÓAÐAùò 7÷	7ð 7ús   ”&BºBÁBÂBÂBc                 ón  — i }| j                  d«      5  | D ]^  }t        |d   «      }||vsJ |«       ‚t        |d   «      }|dd  D �cg c]  }t        |«      ‘Œ }}|t        |«      k(  sJ |«       ‚|||<   Œ` 	 d d d «       t	        j
                  |i |j                  «       «      S c c}w # 1 sw Y   Œ3xY w)NÚcaretsr   r˜   r   )ra   r'   r$   rb   r¦   ÚbuildLigCaretListr¼   )rq   r©   r_  rt   r  Únumr|   Ú
thisCaretss           r   ÚparseCaretListrc  5  sÇ   € Ø€FØ	�‰�xÓ	 ñ 'Øò 	'ˆDÜ˜d 1™gÓ&ˆEØ Ñ&Ð-¨Ó-Ð&Ü�d˜1‘g“,ˆCØ*.¨q¨r¨(Ö3 Qœ#˜a�&Ð3ˆJÐ3Øœ#˜j›/Ò)Ð/¨4Ó/Ð)Ø&ˆF�5ŠMñ	'÷'ô × Ñ  ¨¨T×-DÑ-DÓ-FÓGÐGùò 4÷'ð 'ús   ”4B+ÁB&ÁB+Â&B+Â+B4c                 ó.  — t        j                  «       }d|_        dt        | j	                  «       «      z   |_        d g|j
                  z  |_        t        | j                  «       «      D ]'  \  }}t        t        |«      |«      |j                  |<   Œ) |S r(  )r_   ÚMarkGlyphSetsDefÚMarkSetTableFormatrÍ   rÞ   ÚMarkSetCountrß   ro   r"  rÜ   rÝ   )Úsetsr©   rI   r8  r¿   s        r   ÚmakeMarkFilteringSetsri  B  s€   € Ü×ÑÓ €DØ€DÔØœC §	¡	£Ó,Ñ,€DÔØ�F˜T×.Ñ.Ñ.€D„MÜ�t—z‘z“|Ó$ò 6‰ˆˆ1Ü'¬¨A«°Ó5ˆ�‰�aÒð6à€Kr   c                 ó  — i }| j                  d«      5  | D ]P  }t        |«      dk(  sJ |«       ‚t        |d   «      }t        |d   «      }||vrg ||<   ||   j	                  |«       ŒR 	 d d d «       t        ||«      S # 1 sw Y   ŒxY w)Nzset definitionr   r   r˜   )ra   rb   r'   r$   rO   ri  )rq   r©   rh  rt   r  Ústs         r   ÚparseMarkFilteringSetsrl  L  s—   € Ø€DØ	�‰Ð'Ó	(ñ #Øò 	#ˆDÜ�t“9 ’>Ð' 4Ó'�>Ü˜d 1™gÓ&ˆEä�T˜!‘W“ˆBØ˜‰~Ø��R‘Ø�‰H�O‰O˜EÕ"ñ	#÷#ô !  tÓ,Ð,÷#ð #ús   ”AA?Á?Bc                 ó|  —  t        j                  d«      «       }t        j                  d«       t	        j
                  «       }dd„ fdt        fdt        fdd„ fd	t        fd
œ}|j                  «       D ]  \  }}t        ||d «       Œ | j                  «       �‡| j                  «       d   j                  «       }||vr"t        j                  d|«       t        | «       ŒW||   \  }}t        ||«      �J |«       ‚t        || || |«      «       | j                  «       �Œ‡|j                  €dnd|_        ||_        |S )NÚGDEFzParsing GDEFÚGlyphClassDefc                 ó:   — t        | |t        j                  ¬«      S ©NrÉ   )rí   r_   ro  rU  s     r   r=   zparseGDEF.<locals>.<lambda>a  s   € ¤¨e°TÄ×AQÑAQÔ R€ r   Ú
AttachListÚLigCaretListÚMarkAttachClassDefc                 ó:   — t        | |t        j                  ¬«      S rq  )rí   r_   rt  rU  s     r   r=   zparseGDEF.<locals>.<lambda>g  s   € ¤¨e°TÄ×AVÑAVÔ W€ r   re  )rÆ   zattachment list beginzcarets beginz&mark attachment class definition beginzmarkfilter set definition beginr   rF  rB  i  )r   rH  rL   rM   r_   rn  r]  rc  rl  r½   re   rê   r�   rž   r#  re  rI  rM  )rq   r©   rN  rI   rO  rP  rQ  ró   s           r   Ú	parseGDEFrv  Z  s>  € Ø+”×#Ñ# FÓ+Ó-€IÜ‡I�IˆnÔÜ�7‰7‹9€Dð ÙRð#
ð #/´Ð!@Ø'¬Ð8à ÙWð3
ð -?Ô@VÐ+Wñ€Fð Ÿ™›ò "‰ˆˆfÜ��d˜DÕ!ð"à
�*‰*‹,Ð
"Ø�j‰j‹l˜1‰o×#Ñ#Ó%ˆØ�fÑÜ�I‰I�m SÔ)Ü�ŒKØØ˜c‘{‰ˆˆfÜ�t˜TÓ"Ð*Ð0¨DÓ0Ð*Ü��d™F 5¨$Ó/Ô0ð �*‰*‹,Ñ
"ð "&×!6Ñ!6Ð!>‘:ÀJ€D„LØ€I„OØÐr   c                 óJ  —  t        j                  d«      «       }t        j                  d«       g }| j	                  «       �Î| j                  dt        |«      z  «       dD �cg c]  }t        | |«      ‘Œ c}\  }}}}t        |   |«      }	||	_	        ||	_
        ||	_        i |	_        t        | «      }
|
d   dk7  r3|
d   |	j                  t        |
d   d«      <   t        | «      }
|
d   dk7  rŒ3|j                  |	«       | j	                  «       �ŒÎd|_        ||_        |S c c}w )	NÚcmapzParsing cmapzcmap subtable %d)Ú
platformIDÚ
encodingIDÚformatÚlanguager   zend subtabler˜   r    )r   rH  rL   rM   rê   r4  rb   ÚparseCmapIdr   ry  Ú	platEncIDr|  rx  rž   r$   rO   ÚtableVersionÚtables)rq   r©   rN  r€  ÚfieldÚplatIdÚencIdÚfmtÚlangrM  rt   s              r   Ú	parseCmapr†  {  s%  € Ø+”×#Ñ# FÓ+Ó-€IÜ‡I�IˆnÔØ€FØ
�*‰*‹,Ð
"Ø�‰Ð'¬#¨f«+Ñ5Ô6ð Lö$
àô ˜˜uÕ%ò$
Ñ ˆ��s˜Dô ˜SÑ! #Ó&ˆØ!ˆÔØˆŒØˆŒØˆŒ
Ü�E‹{ˆØ�1‰g˜Ò'Ø+/°©7ˆE�J‰J”s˜4 ™7 BÓ'Ñ(Ü˜“;ˆDð �1‰g˜Ó'ð 	�‰�eÔð �*‰*‹,Ñ
"ð  €IÔØ€IÔØÐùò!$
s   Á#D c                 óH   — t        | «      }||d   k(  sJ ‚t        |d   «      S )Nr   r˜   )rž   r$   )rq   r�  rt   s      r   r}  r}  ”  s+   € Ü�‹;€DØ�D˜‘GÒÐÐÜˆt�A‰w‹<Ðr   c                 óâ  — t         j                  d«       | j                  «       }d }|d   j                  «       d   dk(  r|d   j                  «       d   }n>dj	                  |d   j                  «       d d «      dk(  r|d   j                  «       d   }|�/t        | «       |j                  d«      }|€|}n||k(  s	J ||f«       ‚|€J d	«       ‚	 t        t        t        t        d
œ|   | |«      S )NzParsing tabler   ÚFontDamer˜   r!   rV   zFont Chef TablerS   z7Don't know what table to parse and data doesn't specify)r1  r2  rn  rx  )rL   rM   rœ   rÚ   Újoinrž   ÚljustrV  rY  rv  r†  )rq   r©   r;  rt   Útags        r   Ú
parseTabler�  š  s  € Ü‡I�IˆoÔØ�;‰;‹=€DØ
€CØˆA�w‡}�}ƒ�qÑ˜ZÒ'Ø�1‰g�m‰m‹o˜aÑ ‰Ø	�‰�$�q‘'—-‘-“/ " 1Ð%Ó	&Ð*;Ò	;Ø�1‰g�m‰m‹o˜aÑ ˆØ
€ÜˆUŒØ�i‰i˜‹lˆØÐØ‰Hà˜s’?Ð3 X¨s OÓ3�?ð 	ÐðAà@óAØðÜÜÜÜñ	ð
 ñð
 �tóð r   c                   ón   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zed„ «       Zd„ Zd„ Zy)Ú	Tokenizerc                 ó²   — t        |«      }	 |j                  | _        t        |«      | _        d| _        d| _        g | _        d | _        y #  d | _        Y Œ8xY w)NrT   r   )Úiterr‹   Úfilenamerq   rt   ÚlinenoÚstoppersÚbuffer)rI   Úfrq   s      r   rJ   zTokenizer.__init__·  sR   € ä�Q“ˆð	!ØŸF™FˆDŒMô ˜%“[ˆŒ
ØˆŒ	ØˆŒØˆŒØˆ�øð	!Ø ˆDŽMús   �A Á	Ac                 ó   — | S r)   r   rH   s    r   Ú__iter__zTokenizer.__iter__Ä  s   € Øˆr   c                 ó„  — | xj                   dz  c_         t        | j                  «      x}| _        |j	                  d«      D �cg c]  }|j                  «       ‘Œ }}t        |«      dk(  r|d   s|d= |rE|d   s@t        j                  d| j                   | j                  fz  «       |r|d   s|d= |r|d   sŒ|S c c}w )Nr˜   ú	r   éÿÿÿÿz!trailing tab found on line %d: %s)	r“  rž   rq   rt   rÚ   r{  rb   rL   Úwarning)rI   rt   r&   s      r   Ú
_next_linezTokenizer._next_lineÇ  s¬   € Ø�Š�qÑ�Ü §
¡
Ó+Ð+ˆˆtŒyØ#'§:¡:¨dÓ#3Ö4˜a�—‘•	Ð4ˆÐ4Üˆt‹9˜Š> $ q¢'Ø�Q�Ù˜˜RšÜ�K‰KÐ;¸t¿{¹{ÈDÏIÉIÐ>VÑVÔWÙ˜t BšxØ˜�Hñ ˜t B›xàˆùò 5s   ÁB=c                 ó^   — 	 | j                  «       }|r|d   r|d   d   dk7  s|d   dk(  r|S Œ-)Nr   ú%r3  )r�  ©rI   rt   s     r   Ú_next_nonemptyzTokenizer._next_nonemptyÓ  s>   € ØØ—?‘?Ó$ˆDá˜˜Qš T¨!¡W¨Q¡Z°3Ò%6¸$¸q¹'À\Ò:QØ�ð	 r   c                 ód   — | j                   r| j                   }d | _         |S | j                  «       S r)   )r•  r¡  ©rI   Úrets     r   Ú_next_bufferedzTokenizer._next_bufferedÚ  s-   € Ø�;Š;Ø—+‘+ˆCØˆDŒKØˆJà×&Ñ&Ó(Ð(r   c                 ó~   — | j                  «       }|d   j                  «       | j                  v r|| _        t        ‚|S r½  )r¥  r�   r”  r•  ÚStopIterationr   s     r   Ú__next__zTokenizer.__next__â  s8   € Ø×"Ñ"Ó$ˆØ�‰7�=‰=‹?˜dŸm™mÑ+ØˆDŒKÜÐØˆr   c                 ó"   — | j                  «       S r)   )r¨  rH   s    r   rž   zTokenizer.nexté  s   € Ø�}‰}‹Ðr   c                 óÐ   — | j                   s	 | j                  «       | _         | j                   d   j                  «       | j                  v ry | j                   S # t        $ r Y y w xY wr½  )r•  r¡  r§  r�   r”  rH   s    r   rê   zTokenizer.peekì  s^   € Ø�{Š{ðØ"×1Ñ1Ó3�”ð �;‰;�q‰>×ÑÓ! T§]¡]Ñ2ØØ�{‰{Ðøô	 !ò Ùðús   ŽA Á	A%Á$A%c                 ó.   — | j                  «       }|�|S dS )N)rT   )rê   r£  s     r   rœ   zTokenizer.peeksö  s   € Ø�i‰i‹kˆØ�oˆsÐ0¨5Ð0r   c              #   óÂ   K  — |dz   }|dz   }| j                  |«       | j                  j                  |«       d –— | j                  d= | j                  |dz   «       y ­w)Nz beginz endr›  )Úexpectendswithr”  rO   r4  )rI   rŒ  ÚstartÚends       r   ra   zTokenizer.betweenú  sW   è ø€ à�h‘ˆØ�F‰lˆØ×Ñ˜EÔ"Ø�‰×Ñ˜SÔ!ÛØ�M‰M˜"ÐØ�‰�C˜&‘LÕ!ùs   ‚AAc              #   ó¤   K  — t        |«      t        ur|f}| j                  j                  |«       d –— | j                  t	        |«       d …= y ­wr)   )rN   r´   r”  Úextendrb   )rI   Útagss     r   r  zTokenizer.until  sB   è ø€ ä�‹:œUÑ"Ø�7ˆDØ�‰×Ñ˜TÔ"ÛØ�M‰Mœ3˜t›9˜*™,Ñ'ùs   ‚AAc                 óh   — t        | «      }|d   j                  «       }||k(  sJ d|›d|›d�«       ‚|S )Nr   z
Expected 'ú', got 'ú')rž   r�   ©rI   r&   rt   rŒ  s       r   r4  zTokenizer.expect  s5   € Ü�D‹zˆØ�1‰g�m‰m‹oˆØ�aŠxÑ=²aºÐ=Ó=ˆxØˆr   c                 ó€   — t        | «      }|d   j                  «       }|j                  |«      sJ d|›d|›d�«       ‚|S )Nr   zExpected '*r´  rµ  )rž   r�   ré   r¶  s       r   r­  zTokenizer.expectendswith  s9   € Ü�D‹zˆØ�1‰g�m‰m‹oˆØ�|‰|˜AŒÑEºaÂÐ EÓEˆØˆr   N)r   r   r   rJ   r˜  r�  r¡  r¥  r¨  rž   rê   rœ   r	   ra   r  r4  r­  r   r   r   r�  r�  ¶  sa   „ òòò
òò)òòòò1ð ñ"ó ð"ð ñ(ó ð(òór   r�  c                 ó4   — t        | «      }t        |||¬«      S )a=  Convert a Monotype font layout file to an OpenType layout object

    A font object must be passed, but this may be a "dummy" font; it is only
    used for sorting glyph sets when making coverage tables and to hold the
    OpenType layout table while it is being built.

    Args:
            f: A file object.
            font (TTFont): A font object.
            tableTag (string): If provided, asserts that the file contains data for the
                    given OpenType table.

    Returns:
            An object representing the table. (e.g. ``table_G_S_U_B_``)
    ©r;  )r�  r�  )r–  r©   r;  rq   s       r   Úbuildrº    s   € ô  �a‹L€EÜ�e˜T¨HÔ5Ð5r   c                 óâ  — ddl }ddlm} ddlm} | €|j
                  dd }  |«        ddl}|j                  dt        j                  ¬«      }|j                  dd	d
dd¬«       |j                  ddddd¬«       |j                  dd
t        dd¬«       |j                  | «      } |€3| j                  r t        j                  | j                  «      }n |«       }| j                   D ]û  }t"        j%                  d|«       t'        |dd¬«      5 }t)        ||| j*                  ¬«      }ddd«       j-                  |«      }	|j/                  «       }
|
j1                  |	|«       ddlm} |j*                  }|j7                  |j8                  «      }|j;                  |«       |j=                  «        |
j?                  ||«       |jA                  |«       |j=                  «        Œý y# 1 sw Y   ŒÀxY w)z©Convert a FontDame OTL file to TTX XML

    Writes XML output to stdout.

    Args:
            args: Command line arguments (``--font``, ``--table``, input files).
    r   N)ÚconfigLogger)ÚMockFontr˜   zfonttools mtiLib)Údescriptionz--fontz-fÚFILEr©   zDInput TTF files (used for glyph classes and sorting coverage tables))ÚmetavarÚdestÚhelpz--tablez-tÚTABLEr;  z7Table to fill (sniffed from input file if not provided)Úinputsú+zInput FontDame .txt files)rÀ  rN   ÚnargsrÂ  zProcessing %sÚrtzutf-8)Úencodingr¹  )Ú	xmlWriter)!ÚsysÚ	fontToolsr¼  ÚfontTools.misc.testToolsr½  ÚargvÚargparseÚArgumentParserÚmainÚ__doc__Úadd_argumentrL  Ú
parse_argsr©   r   r"   rÄ  rL   rM   Úopenrº  r;  ÚcompileÚ	__class__Ú	decompileÚfontTools.miscrÉ  Ú	XMLWriterÚstdoutÚbegintagÚnewlineÚtoXMLÚendtag)Úargsr©   rÊ  r¼  r½  rÎ  rQ  r–  rM  ÚblobÚ
decompiledrÉ  rŒ  Úwriters                 r   rÐ  rÐ  -  sÊ  € ó Ý&Ý1à€|Ø�x‰x˜˜ˆ|ˆñ „Nó à×$Ñ$ØÜ—L‘Lð %ó €Fð
 ×ÑØØØØØSð ô ð ×ÑØØØØØFð ô ð ×ÑØ˜&¤s°#Ð<Wð ô ð ×Ñ˜TÓ"€Dà€|Ø�9Š9Ü—<‘< §	¡	Ó*‰Dá“:ˆDà�[‰[ò ˆÜ�	‰	�/ 1Ô%Ü�!�T GÔ,ð 	;°Ü˜!˜T¨D¯M©MÔ:ˆE÷	;à�}‰}˜TÓ"ˆØ—_‘_Ó&ˆ
Ø×Ñ˜T 4Ô(õ 	-à�n‰nˆØ×$Ñ$ S§Z¡ZÓ0ˆØ�‰˜ÔØ�‰Ôà×Ñ˜ Ô&Ø�‰�cÔØ�‰Õñ%÷	;ð 	;ús   ÄG%Ç%G.	Ú__main__r)   )NN)brË  r   ÚfontTools.ttLib.tables._c_m_a_pr   ÚfontTools.ttLib.tablesr   r_   ÚfontTools.ttLib.tables.otBaser   r   ÚfontTools.otlLibr   r¦   Ú
contextlibr	   ÚfontTools.ttLibr
   Ú fontTools.feaLib.lookupDebugInfor   r   Úoperatorr   rJ  ÚloggingÚ	Exceptionr   r   r   r   Ú	getLoggerrL   r'   r,   r3   r6   rC   rç  rE   r€   r�   r¤   r«   r¯   r²   r¶   rÀ   r  r  r`  r  r  r  r&  r0  rX  ÚobjectrZ  rf  ri  rn  rr  ru  rw  rf   r	  r~  rå  rß   rè  r­  rí   rÜ   rí  rü  r  r  r  r  r  r"  r@  rR  rV  rY  r]  rc  ri  rl  rv  r†  r}  r�  r�  rº  rÐ  r   rÊ  r  r   r   r   ú<module>rð     s6  ðõ Ý 8Ý 1ß LÝ +Ý %Ý $ß XÝ Û 	Û ô	�)ô 	ô	˜[ô 	ô	Ð1ô 	ô	Ð0ô 	ð €g×ÑÐ*Ó+€òò%ò
ò
ò$ô $�dô $ó,9óxòBóB1ó3ó4ó3óIó]ó@"ð Ÿ9™9ó óKò òò"ò05ôp8�ô 8ô"�zô ô�zô ô˜:ô óAóAóEò@ò=ô
K7�Fô K7ó\ð )+¯©ó ð &(§[¡[ó 0ð &(§[¡[ó ð &(§[¡[ó -ò1ó:QóhJóHóOóMóó42òj@òF.ò.òBò
Hòò-òòBò2óô8`�ô `óF6ó(GðT ˆzÒÛà€C‡H�H‰T‹VÕð r   