§
    ¢”j
¶  ã                   óÔ  — 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j0        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jC        fd;„ZDejE        fd<„ZFejC        fd=„ZGejC        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`ja         e^¦   «         ¦  «         d
S d
S )Yé    )ÚttLib)Úcmap_classes)ÚotTables)ÚValueRecordÚvalueRecordFormatDict)Úbuilder)Úcontextmanager)ÚnewTable)ÚLOOKUP_DEBUG_ENV_VARÚLOOKUP_DEBUG_INFO_KEY)ÚsetitemNc                   ó   — e Zd ZdS )ÚMtiLibErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    úh/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/mtiLib/__init__.pyr   r      ó   € € € € € Ø€Dr   r   c                   ó   — e Zd ZdS )ÚReferenceNotFoundErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd ZdS )ÚFeatureNotFoundErrorNr   r   r   r   r   r      r   r   r   c                   ó   — e Zd ZdS )ÚLookupNotFoundErrorNr   r   r   r   r   r       r   r   r   zfontTools.mtiLibc                 ó<  — | d d…         dv r5t           j                             t          | dd …         d¦  «        ¦  «        S | d d…         dk    rdt          | dd …         ¦  «        z  S |                      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ˆ2Œ�$ŠˆØ�S  1 2 2¤™ZœZÑ'Ð'Ø�6Š6�#‰;Œ;˜Š?ˆ?ˆ?Ð;¸aÑ?‰?Œ?ˆ?ØÐ#Ð#Ð#Ñ#Ô#Ð#Ø€Hr   c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )r'   )Ú.0Úgs     r   ú
<listcomp>zmakeGlyphs.<locals>.<listcomp>2   s   € Ð$Ð$Ð$˜Q�I�a‰LŒLÐ$Ð$Ð$r   r   )Úls    r   Ú
makeGlyphsr.   1   s   € Ø$Ð$ !Ð$Ñ$Ô$Ð$r   c                 óv   — |�'	 ||          }n,# t           $ r t          | ¦  «        ‚w xY wt          | ¦  «        }|S ©N)ÚKeyErrorr   r$   ©ÚsymÚmappingÚidxs      r   Ú	mapLookupr6   5   sU   € ð Ðð	+Ø˜#”,ˆCˆCøÝð 	+ð 	+ð 	+Ý% cÑ*Ô*Ð*ð	+øøøõ �#‰hŒhˆØ€Js   „ �'c                 ó–   — 	 t          | ¦  «        }n7# t          $ r* 	 ||          }n# t          $ r t          | ¦  «        ‚w xY wY nw xY w|S r0   )r$   Ú
ValueErrorr1   r   r2   s      r   Ú
mapFeaturer9   B   sv   € ð,Ý�#‰hŒhˆˆøÝð ,ð ,ð ,ð	,Ø˜#”,ˆCˆCøÝð 	,ð 	,ð 	,Ý& sÑ+Ô+Ð+ð	,øøøð ˆCð,øøøð
 €Js#   ‚ ’
A�&¥A¦A Á AÁAc                 óÔ   ‡‡‡— 	  | ||¦  «        }nI# t           $ r<}	 |�"|                     ˆˆˆfd„||¦  «         Y d }~d S n# t          $ r Y nw xY w‚ d }~ww xY w ‰‰‰|¦  «         d S )Nc                 ó   •—  ‰‰‰| ¦  «        S r0   r   )ÚrefÚ
collectionÚkeyÚsetters    €€€r   ú<lambda>zsetReference.<locals>.<lambda>V   s   ø€    z°3¸Ñ <Ô <€ r   )r   ÚaddDeferredMappingÚAttributeError)Úmapperr4   r3   r?   r=   r>   ÚmappedÚes      ```  r   ÚsetReferencerF   O   sÊ   øøø€ ðØ�˜˜WÑ%Ô%ˆˆøÝ!ð 	ð 	ð 	ð	ØÐ"Ø×*Ò*Ø<Ð<Ð<Ð<Ð<Ð<¸cÀ1ñô ð ð �����ð	 #øõ
 ð 	ð 	ð 	ØˆDð	øøøàøøøøð	øøøð €Fˆ:�s˜FÑ#Ô#Ð#Ð#Ð#s2   … ’
A�AÁAÁ
AÁAÁAÁAÁAc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚDeferredMappingc                 ó   — g | _         d S r0   )Ú_deferredMappings©Úselfs    r   Ú__init__zDeferredMapping.__init__`   s   € Ø!#ˆÔÐÐr   c                 óœ   — t                                d|t          |¦  «        j        ¦  «         | j                             |||f¦  «         d S )Nz*Adding deferred mapping for symbol '%s' %s)ÚlogÚdebugÚtyper   rJ   Úappend)rL   r?   r3   rE   s       r   rA   z"DeferredMapping.addDeferredMappingc   sF   € Ý�	Š	Ð>ÀÅTÈ!ÁWÄWÔEUÑVÔVÐVØÔ×%Ò% v¨s°AÐ&6Ñ7Ô7Ð7Ð7Ð7r   c                 ó  — | j         D ]t\  }}}t                               d|t          |¦  «        j        ¦  «         	 | |         }n# t
          $ r |‚w xY w ||¦  «         t                               d|¦  «         Œug | _         d S )Nz,Applying deferred mapping for symbol '%s' %sz	Set to %s)rJ   rO   rP   rQ   r   r1   )rL   r?   r3   rE   rD   s        r   ÚapplyDeferredMappingsz%DeferredMapping.applyDeferredMappingsg   s¢   € Ø"Ô4ð 		+ð 		+‰NˆF�C˜Ý�IŠIØ>ÀÅTÈ!ÁWÄWÔEUñô ð ðØ˜cœ��øÝð ð ð Ø�ðøøøàˆF�6‰NŒNˆNÝ�IŠI�k 6Ñ*Ô*Ð*Ð*Ø!#ˆÔÐÐs   ½AÁAN)r   r   r   rM   rA   rT   r   r   r   rH   rH   _   sA   € € € € € ð$ð $ð $ð8ð 8ð 8ð$ð $ð $ð $ð $r   rH   c                 óœ  ‡— t          j        ¦   «         }g }|                      d¦  «        5  | D �](}t          |¦  «        dk     r(|                     d¦  «         t          |¦  «        dk     °(|\  Š}}}t
                               d‰|¦  «         t          j        ¦   «         }d |_        |rt          t          ||t          |d¦  «         nd|_        t          |¦  «        }	dgt          |	¦  «        z  x|_        }
t          |	¦  «        D ]#\  }}t          t          ||t           |
|¦  «         Œ$t          |j        ¦  «        |_        ˆfd„|D ¦   «         }|r|d	         j        }nyt          j        ¦   «         }‰d
dt          ‰¦  «        z
  z  z   |_        t          j        ¦   «         |_        |                     |¦  «         |j        }d |_        g |_        d	|_        |dk    r	||_        �Œ¾t          j        ¦   «         }|d
dt          |¦  «        z
  z  z   |_        ||_        |j                             |¦  «         t          |j        ¦  «        |_        �Œ*	 d d d ¦  «         n# 1 swxY w Y   |D ](}t3          |j        j        d„ ¬¦  «        |j        _        Œ)t3          |d„ ¬¦  «        |_        t          |j        ¦  «        |_        |S )Nzscript tableé   Ú z#Adding script %s language-system %sÚReqFeatureIndexiÿÿ  é   c                 ó*   •— g | ]}|j         ‰k    ¯|‘ŒS r   ©Ú	ScriptTag)r*   r&   Ú	scriptTags     €r   r,   z#parseScriptList.<locals>.<listcomp>’   s%   ø€ ÐEÐEÐE˜A¨A¬K¸9Ò,DÐ,D�aÐ,DÐ,DÐ,Dr   r   r!   Údefaultc                 ó   — | j         S r0   )Ú
LangSysTag©Úrecs    r   r@   z!parseScriptList.<locals>.<lambda>ª   s   € ¸¼€ r   ©r>   c                 ó   — | j         S r0   r[   ra   s    r   r@   z!parseScriptList.<locals>.<lambda>¬   s   € ¸¼€ r   )ÚotÚ
ScriptListÚbetweenÚlenrR   rO   rP   ÚLangSysÚLookupOrderrF   r9   ÚsetattrrX   ÚstripSplitCommaÚFeatureIndexÚ	enumerater   ÚFeatureCountÚScriptÚScriptRecordr\   ÚDefaultLangSysÚLangSysRecordÚLangSysCountr`   ÚsortedÚScriptCount)ÚlinesÚ
featureMaprL   ÚrecordsÚlineÚ
langSysTagÚdefaultFeatureÚfeaturesÚlangSysÚsymsÚtheListÚir3   ÚscriptÚ	scriptRecÚ
langSysRecr]   s                   @r   ÚparseScriptListr…   u   s2  ø€ ÝŒ=‰?Œ?€DØ€GØ	�Š�~Ñ	&Ô	&ð .@ð .@Øð -	@ñ -	@ˆDÝ�d‘)”)˜a’-�-Ø—’˜B‘”�õ �d‘)”)˜a’-�-à>BÑ;ˆI�z >°8Ý�IŠIÐ;¸YÈ
ÑSÔSÐSå”j‘l”lˆGØ"&ˆGÔØð 
1ÝÝØØ"ÝØØ%ñô ð ð ð +1�Ô'Ý" 8Ñ,Ô,ˆDØ./¨Sµ3°t±9´9©_Ð<ˆGÔ  7Ý# D™/œ/ð Oð O‘��3Ý�Z¨°S½'À7ÈAÑNÔNÐNÐNÝ#& wÔ';Ñ#<Ô#<ˆGÔ àEÐEÐEÐE ÐEÑEÔEˆFØð 
(Ø œÔ)��åœOÑ-Ô-�	Ø&/°#¸½SÀ¹^¼^Ñ9KÑ2LÑ&L�	Ô#Ý#%¤9¡;¤;�	Ô Ø—’˜yÑ)Ô)Ð)Ø"Ô)�Ø(,�Ô%Ø')�Ô$Ø&'�Ô#à˜YÒ&Ð&Ø(/�Ô%Ñ%åÔ-Ñ/Ô/�
Ø(2°S¸AÅÀJÁÄÑ<OÑ5PÑ(P�
Ô%Ø%,�
Ô"ØÔ$×+Ò+¨JÑ7Ô7Ð7Ý&)¨&Ô*>Ñ&?Ô&?�Ô#Ñ#ð[-	@ð.@ð .@ð .@ñ .@ô .@ð .@ð .@ð .@ð .@ð .@ð .@øøøð .@ð .@ð .@ð .@ð` ð 
ð 
ˆÝ&,ØŒMÔ'Ð-GÐ-Gð'
ñ '
ô '
ˆŒÔ#Ð#õ ˜wÐ,EÐ,EÐFÑFÔF€DÔÝ˜4Ô,Ñ-Ô-€DÔØ€Ks   ¬H-I&É&I*É-I*c                 ó„  — t          j        ¦   «         }g |_        |                      d¦  «        5  | D �]Z}|\  }}}|�(||vsJ d|z  ¦   «         ‚t	          |j        ¦  «        ||<   	 t          |¦  «        t	          |j        ¦  «        k    s!J d|t	          |j        ¦  «        fz  ¦   «         ‚n# t          $ r Y nw xY wt          j        ¦   «         }||_        t          j        ¦   «         |_        |j         	                    |¦  «         |j        }	d |	_
        t          |¦  «        }
d gt	          |
¦  «        z  x|	_        }t          |
¦  «        D ]#\  }}t          t          ||t           ||¦  «         Œ$t	          |	j        ¦  «        |	_        �Œ\	 d d d ¦  «         n# 1 swxY w Y   t	          |j        ¦  «        |_        |S )Nzfeature tablezDuplicate feature name: %sú%d %d)re   ÚFeatureListÚFeatureRecordrg   rh   r$   r8   Ú
FeatureTagÚFeaturerR   ÚFeatureParamsrl   ÚLookupListIndexrn   rF   r6   r   ÚLookupCountro   )rw   Ú	lookupMaprx   rL   rz   ÚnameÚ
featureTagÚlookupsÚ
featureRecÚfeaturer   r€   r�   r3   s                 r   ÚparseFeatureListr•   ±   s   € ÝŒ>ÑÔ€DØ€DÔØ	�Š�Ñ	'Ô	'ð ?ð ?Øð 	?ñ 	?ˆDØ(,Ñ%ˆD�*˜gØÐ%Ø :Ð-Ð-Ð-Ð/KÈdÑ/RÑ-Ô-Ð-Ý#& tÔ'9Ñ#:Ô#:�
˜4Ñ ðÝ˜4‘y”y¥C¨Ô(:Ñ$;Ô$;Ò;Ð;Ð;¸WØÝ˜Ô*Ñ+Ô+ðHñ >Ñ;Ô;Ð;Ð;øõ ð ð ð Ø�ðøøøåÔ)Ñ+Ô+ˆJØ$.ˆJÔ!Ý!#¤¡¤ˆJÔØÔ×%Ò% jÑ1Ô1Ð1Ø Ô(ˆGØ$(ˆGÔ!Ý" 7Ñ+Ô+ˆDØ15°½¸T¹¼Ñ0BÐBˆGÔ# gÝ# D™/œ/ð Mð M‘��3Ý�Y¨	°3½ÀÈ!ÑLÔLÐLÐLÝ"% gÔ&=Ñ">Ô">ˆGÔÑð/	?ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?õ4 ˜DÔ.Ñ/Ô/€DÔØ€Ks7   °6FÁ'AB.Â-FÂ.
B;Â8FÂ:B;Â;CFÆF Æ#F c                 óà  — d}d }g d¢}|                       ¦   «         d                              ¦   «         |v �r4t          | ¦  «        }dddddœ                     |d                              ¦   «         ¦  «        }|rP|d                              ¦   «         dv sJ |d         ¦   «         ‚|d                              ¦   «         d	k    r||z  }ŒÂ|d                              ¦   «         d
k    r|t	          |d         ¦  «        dz  z  }Œü|d                              ¦   «         dk    r|dz  }t	          |d         ¦  «        }|                       ¦   «         d                              ¦   «         |v �°4||fS )Nr   )ÚrighttoleftÚignorebaseglyphsÚignoreligaturesÚignoremarksÚmarkattachmenttypeÚmarkfiltertypeé   r   rV   é   )r—   r˜   r™   rš   )ÚyesÚnorŸ   r›   rœ   r    )ÚpeeksÚlowerÚnextÚgetr$   )rw   ÚflagsÚ	filtersetÚallFlagsrz   Úflags         r   ÚparseLookupFlagsr©   Ò   sq  € Ø€EØ€Iðð ð €Hð �+Š+‰-Œ-˜Ô
×
 Ò
 Ñ
"Ô
" hÐ
.Ñ
.Ý�E‰{Œ{ˆà!Ø &Ø%Ø!ð	
ð 
÷
 Š#ˆd�1Œg�mŠm‰oŒoÑ
Ô
ð 	ð ð 	Ø˜”7—=’=‘?”? mÐ3Ð3Ð3°T¸!´WÑ3Ô3Ð3Ø�AŒw�}Š}‰Œ %Ò'Ð'Ø˜‘�ØØ�Œ7�=Š=‰?Œ?Ð2Ò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   )rh   r.   ÚotlÚbuildSingleSubstSubtable©rw   ÚfontÚ
_lookupMapr4   rz   s        r   ÚparseSingleSubstr°   ó   sb   € Ø€GØð #ð #ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~˜t‰~Œ~ˆ~Ý˜$ÑÔˆØ œ7ˆ��Q”ÑÐÝÔ'¨Ñ0Ô0Ð0r   c                 ó|   — i }| D ]$}t          |¦  «        }|dd …         ||d         <   Œ%t          j        |¦  «        S ©Nr�   r   )r.   r«   ÚbuildMultipleSubstSubtabler­   s        r   ÚparseMultipler´   ü   sM   € Ø€GØð $ð $ˆÝ˜$ÑÔˆØ   œ8ˆ��Q”ÑÐÝÔ)¨'Ñ2Ô2Ð2r   c                 ó|   — i }| D ]$}t          |¦  «        }|dd …         ||d         <   Œ%t          j        |¦  «        S r²   )r.   r«   ÚbuildAlternateSubstSubtabler­   s        r   ÚparseAlternater·     sM   € Ø€GØð $ð $ˆÝ˜$ÑÔˆØ   œ8ˆ��Q”ÑÐÝÔ*¨7Ñ3Ô3Ð3r   c                 óÐ   — i }| D ]N}t          |¦  «        dk    s
J |¦   «         ‚t          |¦  «        }|d         |t          |dd …         ¦  «        <   ŒOt          j        |¦  «        S )Nr   r   r�   )rh   r.   Útupler«   ÚbuildLigatureSubstSubtabler­   s        r   ÚparseLigaturer»     sl   € Ø€GØð +ð +ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~˜t‰~Œ~ˆ~Ý˜$ÑÔˆØ#'¨¤7ˆ•�d˜1˜2˜2”h‘”Ñ Ð ÝÔ)¨'Ñ2Ô2Ð2r   c                 óú  — i }| D ]Ð}t          |¦  «        dk    s
J |¦   «         ‚|d                              ¦   «                              dd¦  «        }|t          v sJ ‚t	          |d         ¦  «        }t          |d         ¦  «        }||vrt          ¦   «         ||<   t          ||         |¦  «        rJ ||f¦   «         ‚t          ||         ||¦  «         ŒÑt          j
        ||                     ¦   «         ¦  «        S )NrY   r   r!   rW   r�   r   )rh   ÚtitleÚreplacer   r'   r$   r   Úhasattrrk   r«   ÚbuildSinglePosSubtableÚgetReverseGlyphMap)rw   r®   r¯   Úvaluesrz   Úwr+   Úvs           r   ÚparseSinglePosrÅ     sö   € Ø€FØð 	!ð 	!ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~˜t‰~Œ~ˆ~Ø�ŒG�MŠM‰OŒO×#Ò# C¨Ñ,Ô,ˆØÕ)Ð)Ð)Ð)Ð)Ý�d˜1”gÑÔˆÝ��Q”‰LŒLˆØ�Fˆ?ˆ?Ý#™œˆF�1‰IÝ˜6 !œ9 aÑ(Ô(Ð0Ð0¨1¨a¨&Ñ0Ô0Ð0Ý��q”	˜1˜aÑ Ô Ð Ð ÝÔ% f¨d×.EÒ.EÑ.GÔ.GÑHÔHÐHr   c                 óÈ  — t          j        ¦   «         }dx|_        |_        |                      ¦   «         d                              ¦   «         d                              ¦   «         }|dv �rÝd|_        i }| D �]�}t          |¦  «        dk    s
J |¦   «         ‚|d                              ¦   «         d                              ¦   «         }|dv s
J |¦   «         ‚|d         t          |¦  «        d …          	                    ¦   «          
                    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!          |||¦  «         �Œ‘t#          t%          |                     ¦   «         ¦  «        |¦  «        |_        g |_        |j        j        D ]Þ}
||
         }t          j        ¦   «         }g x}|_        t1          |                     ¦   «         |j        ¬	¦  «        D ]\}||         }t          j        ¦   «         }||_        |d         |_        |j        r|d         nd |_        |                     |¦  «         Œ]t          |j        ¦  «        |_        |j                             |¦  «         Œßt          |j        ¦  «        |_        �nš|                      d
¦  «        �rzd|_        d d g}|                      ¦   «         d                               d¦  «        r´|  !                    ¦   «         d         d t          d¦  «         …                              ¦   «         }dt           j"        fdt           j#        fdœ|         \  }}||         �J ‚tI          | ||¬¦  «        ||<   |                      ¦   «         d                               d¦  «        °´|\  |_"        |_#        d„ |D ¦   «         \  |_%        |_&        d„ tO          |j%        ¦  «        D ¦   «         |_(        |j(        D ]U}d„ tO          |j&        ¦  «        D ¦   «         |_)        |j)        D ](}t          ¦   «         |_        t          ¦   «         |_        Œ)ŒV| D �]H}t          |¦  «        dk    s
J |¦   «         ‚|d                              ¦   «         d                              ¦   «         }|dv s
J |¦   «         ‚|d         t          |¦  «        d …          	                    ¦   «          
                    dd¦  «        }t          |         d         }	d„ |dd…         D ¦   «         \  }}}|j(        |         j)        |         }|dk    r|xj        |	z  c_        |j        }n|xj        |	z  c_        |j        }t          ||¦  «        rJ ||f¦   «         ‚t!          |||¦  «         �ŒJ|j(        D ]S}|j)        D ]I}t          |j        |j        ¦  «        |_        |j        rt          |j        |j        ¦  «        nd |_        ŒJŒTt#          t%          |j"        j*                             ¦   «         ¦  «        |¦  «        |_        n
J |¦   «         ‚|S )Nr   ©ÚleftÚrightr�   rV   r!   rW   rY   rÈ   rc   Úclassr   úclass definition begin)ÚfirstÚsecond©Úklassc              3   óh   K  — | ]-}d t          |j                             ¦   «         ¦  «        z   V — Œ.dS ©r�   N)ÚmaxÚ	classDefsrÂ   )r*   Úcs     r   ú	<genexpr>zparsePair.<locals>.<genexpr>\  sN   è è € ð .
ð .
Ø./ˆA•�A”K×&Ò&Ñ(Ô(Ñ)Ô)Ñ)ð.
ð .
ð .
ð .
ð .
ð .
r   c                 ó4   — g | ]}t          j        ¦   «         ‘ŒS r   )re   ÚClass1Record©r*   r�   s     r   r,   zparsePair.<locals>.<listcomp>_  s    € ÐPÐPÐP°1�Rœ_Ñ.Ô.ÐPÐPÐPr   c                 ó4   — g | ]}t          j        ¦   «         ‘ŒS r   )re   ÚClass2Record)r*   Újs     r   r,   zparsePair.<locals>.<listcomp>a  s    € Ð TÐ TÐ T°q¥¤Ñ!2Ô!2Ð TÐ TÐ Tr   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r0   ©r$   ©r*   Úxs     r   rÕ   zparsePair.<locals>.<genexpr>k  s(   è è € Ð$?Ð$?°¥S¨¡V¤VÐ$?Ð$?Ð$?Ð$?Ð$?Ð$?r   )+re   ÚPairPosÚValueFormat1ÚValueFormat2r¡   Úsplitr¢   ÚFormatrh   r½   r¾   r   r.   r$   r   r¿   rk   ÚmakeCoverageÚsetÚkeysÚCoverageÚPairSetÚglyphsÚPairValueRecordru   Ú
getGlyphIDÚSecondGlyphÚValue1ÚValue2rR   ÚPairValueCountÚPairSetCountÚendswithÚpeekÚ	ClassDef1Ú	ClassDef2ÚparseClassDefÚClass1CountÚClass2CountÚranger×   rÚ   rÓ   )rw   r®   r¯   rL   ÚtyprÂ   rz   ÚsideÚwhatÚmaskÚglyph1Úglyph2ÚvalueÚrec2ÚvrÚvalues1Úpairsetry   Úvalues2ÚpairrÓ   r5   rÏ   Úrec1Úclass1Úclass2s                             r   Ú	parsePairr
  $  sÒ  € ÝŒ:‰<Œ<€DØ,-Ð-€DÔ˜Ô)Ø
�+Š+‰-Œ-˜Ô
×
 Ò
 Ñ
"Ô
" 1Ô
%×
+Ò
+Ñ
-Ô
-€CØ
ÐÐÑØˆŒØˆØð 	%ñ 	%ˆDÝ�t‘9”9 ’>�>�> 4‘>”>�>Ø˜”7—=’=‘?”? 1Ô%×+Ò+Ñ-Ô-ˆDØÐ,Ð,Ð,Ð,¨dÑ,Ô,Ð,Ø˜”7�3˜t™9œ9˜;˜;Ô'×-Ò-Ñ/Ô/×7Ò7¸¸RÑ@Ô@ˆDÝ(¨Ô.¨qÔ1ˆDÝ'¨¨Q¨q¨S¬	Ñ2Ô2‰NˆF�FÝ˜˜Qœ‘L”LˆEØ˜VÐ#Ð#Ø!#��v‘Ø˜V Fœ^Ð+Ð+Ý*5©-¬-½¹¼Ð)G��v”˜vÑ&Ø˜&”> &Ô)ˆDØ�vŠ~ˆ~ØÐ!Ô! TÑ)Ð!Ô!Ø˜!”W��àÐ!Ô! TÑ)Ð!Ô!Ø˜!”W�Ý˜r 4Ñ(Ô(Ð4Ð4¨2¨t¨*Ñ4Ô4Ð4Ý�B˜˜eÑ$Ô$Ð$Ñ$Ý$¥S¨¯ª©¬Ñ%7Ô%7¸Ñ>Ô>ˆŒØˆŒØ”mÔ*ð 	)ð 	)ˆFØ˜V”nˆGÝ”j‘l”lˆGØ02Ð2ˆG�gÔ-Ý  §¢¡¤°T´_ÐEÑEÔEð %ð %�Ø! &œ/�ÝÔ)Ñ+Ô+�Ø#)�Ô Ø% aœj�”Ø,0Ô,=ÐG˜g aœj˜jÀ4�”Ø—’˜tÑ$Ô$Ð$Ð$Ý%(¨Ô)@Ñ%AÔ%AˆGÔ"ØŒL×Ò Ñ(Ô(Ð(Ð(Ý ¤Ñ-Ô-ˆÔÑØ	�Š�gÑ	Ô	ñ 0ØˆŒØ˜4�Lˆ	Ø�kŠk‰mŒm˜AÔ×'Ò'Ð(@ÑAÔAð 	EØ—*’*‘,”,˜q”/Ð"B¥SÐ)AÑ%BÔ%BÐ$BÐ"BÔC×IÒIÑKÔKˆCà�Rœ\Ð*Ø�bœlÐ+ðð ð ô‰JˆC�ð ˜S”>Ð)Ð)Ð)Ý*¨5°$¸eÐDÑDÔDˆI�c‰Nð �kŠk‰mŒm˜AÔ×'Ò'Ð(@ÑAÔAð 	Eð *3Ñ&ˆŒ˜œð.
ð .
Ø3<ð.
ñ .
ô .
Ñ*ˆÔ˜$Ô*ð QÐP½¸dÔ>NÑ8OÔ8OÐPÑPÔPˆÔØÔ%ð 	,ð 	,ˆDØ TÐ T½EÀ$ÔBRÑ<SÔ<SÐ TÑ TÔ TˆDÔØÔ)ð ,ð ,�Ý)™mœm�”Ý)™mœm�”�ð,ð ð 	%ñ 	%ˆDÝ�t‘9”9 ’>�>�> 4‘>”>�>Ø˜”7—=’=‘?”? 1Ô%×+Ò+Ñ-Ô-ˆDØÐ,Ð,Ð,Ð,¨dÑ,Ô,Ð,Ø˜”7�3˜t™9œ9˜;˜;Ô'×-Ò-Ñ/Ô/×7Ò7¸¸RÑ@Ô@ˆDÝ(¨Ô.¨qÔ1ˆDØ$?Ð$?°T¸!¸A¸#´YÐ$?Ñ$?Ô$?Ñ!ˆF�F˜EØÔ$ VÔ,Ô9¸&ÔAˆDØ�vŠ~ˆ~ØÐ!Ô! TÑ)Ð!Ô!Ø”[��àÐ!Ô! TÑ)Ð!Ô!Ø”[�Ý˜r 4Ñ(Ô(Ð4Ð4¨2¨t¨*Ñ4Ô4Ð4Ý�B˜˜eÑ$Ô$Ð$Ñ$ØÔ%ð 	ð 	ˆDØÔ)ð ð �Ý)¨$Ô*;¸T¼[ÑIÔI�”ð Ô(ð•K Ô 1°4´;Ñ?Ô?Ð?àð ”�ðõ %¥S¨¬Ô)A×)FÒ)FÑ)HÔ)HÑ%IÔ%IÈ4ÑPÔPˆŒˆà�#‰ŒˆØ€Kr   c                 ó,  — |                       ¦   «         d                              ¦   «         d                              ¦   «         }|dv r=|                      d¦  «        5  t	          | |¦  «        cd d d ¦  «         S # 1 swxY w Y   t	          | |¦  «        S )Nr   rÇ   )zfirstclass definition beginzsecondclass definition begin)r¡   rã   r¢   Úuntilr
  )rw   r®   r¯   rú   s       r   ÚparseKernsetr  „  sÏ   € Ø
�+Š+‰-Œ-˜Ô
×
 Ò
 Ñ
"Ô
" 1Ô
%×
+Ò
+Ñ
-Ô
-€CØ
ÐÐÐØ�[Š[ØKñ
ô 
ð 	*ð 	*õ ˜U DÑ)Ô)ð	*ð 	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*õ �U˜DÑ!Ô!Ð!s   ÁA;Á;A?ÂA?c                 ó  — t          | ¦  «        dk    sJ ‚ |¦   «         }d|_        t          | d         ¦  «        \  |_        |_        t          | ¦  «        dk    r-| d         dk    r!d|_        t          | d         ¦  «        |_        |S )Nr   r�   r   rW   )rh   rä   ÚintSplitCommaÚXCoordinateÚYCoordinater$   ÚAnchorPoint)ÚdatarÏ   Úanchors      r   Ú
makeAnchorr  Ž  s|   € Ýˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>ØˆU‰WŒW€FØ€F„MÝ-:¸4À¼7Ñ-CÔ-CÑ*€FÔ˜Ô*Ý
ˆ4�y„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        ||                     ¦   «         ¦  «        S )N)rY   rV   r   r�   )ÚentryÚexitr   )	rh   re   ÚEntryAnchorÚ
ExitAnchorr'   r  r«   ÚbuildCursivePosSubtablerÁ   )rw   r®   r¯   ry   rz   r5   rÏ   Úglyphs           r   ÚparseCursiver  ™  sõ   € Ø€GØð 
:ð 
:ˆÝ�4‰yŒy˜FÐ"Ð"Ð" DÑ"Ô"Ð"à�œÐ(Ø�œÐ&ð
ð 
ð ˆqŒ'ô‰
ˆˆUõ ˜$˜qœ'Ñ"Ô"ˆØ˜ÐÐØ" D˜\ˆG�E‰NØ�uŒ~˜cÔ"Ð*Ð*¨U°C¨LÑ*Ô*Ð*Ý(¨¨a¨b¨b¬°5Ñ9Ô9ˆ�Œ�sÑÐÝÔ& w°×0GÒ0GÑ0IÔ0IÑJÔJÐJr   c                 óÀ   — g }|j         D ]S}| |         \  }}|                     ¦   «         }||_        t          ||j        |¦  «         |                     |¦  «         ŒT|S r0   )rê   ÚMarkRecordClassÚClassrk   Ú
MarkAnchorrR   )r  ÚcoveragerÔ   ry   r  rÏ   r  Úrecords           r   ÚmakeMarkRecordsr$  ©  sk   € Ø€GØ”ð ð ˆØ˜Uœ‰ˆˆvØ×"Ò"Ñ$Ô$ˆØˆŒÝ�˜œ fÑ-Ô-Ð-Ø�Š�vÑÔÐÐØ€Nr   c                 ó‚  — g }i }|j         D ]Y}t          |¦  «        ||<   |                     ¦   «         }d g|z  }t          ||j        |¦  «         |                     |¦  «         ŒZ|                      ¦   «         D ]D\  \  }}	}
|||                  }t          ||j        ¦  «        }||	         �J ||	f¦   «         ‚|
||	<   ŒE|S r0   )rê   rh   ÚBaseRecordClassrk   Ú
BaseAnchorrR   ÚitemsÚgetattr)r  r"  rÔ   Ú
classCountry   r5   r  r#  ÚanchorsrÏ   r  s              r   ÚmakeBaseRecordsr,  ´  sÝ   € Ø€GØ
€CØ”ð ð ˆÝ˜‘\”\ˆˆE‰
Ø×"Ò"Ñ$Ô$ˆØ�&˜:Ñ%ˆÝ�˜œ gÑ.Ô.Ð.Ø�Š�vÑÔÐÐØ"&§*¢*¡,¤,ð  ð  Ñ‰ˆ�˜Ø˜˜UœÔ$ˆÝ˜& !¤,Ñ/Ô/ˆØ�uŒ~Ð%Ð%¨¨u ~Ñ%Ô%Ð%Øˆ�‰ˆØ€Nr   c                 ó  — d gt          |j        ¦  «        z  }d„ t          |j        ¦  «        D ¦   «         }|                      ¦   «         D ]¾\  \  }}}}	}
|||                  }|€Xt	          j        ¦   «         x}|||         <   |	|_        d„ t          |	¦  «        D ¦   «         |_        |j        D ]}d g|z  |_	        Œ|j        |	k    sJ ||j        |	f¦   «         ‚|j        |dz
           j	        }||         �J |||f¦   «         ‚|
||<   Œ¿|S )Nc                 ó   — i | ]\  }}||“Œ	S r   r   )r*   r�   r+   s      r   ú
<dictcomp>z'makeLigatureRecords.<locals>.<dictcomp>Ç  s   € Ð
7Ð
7Ð
7‘D�A�qˆ1ˆaÐ
7Ð
7Ð
7r   c                 ó4   — g | ]}t          j        ¦   «         ‘ŒS r   )re   ÚComponentRecordrØ   s     r   r,   z'makeLigatureRecords.<locals>.<listcomp>Î  s!   € Ð%UÐ%UÐ%U¸q¥bÔ&8Ñ&:Ô&:Ð%UÐ%UÐ%Ur   r�   )
rh   rê   rn   r(  re   ÚLigatureAttachÚComponentCountrù   r1  ÚLigatureAnchor)r  r"  rÔ   r*  ry   r5   r  rÏ   ÚcompIdxÚ	compCountr  r#  ÚcompRecr+  s                 r   ÚmakeLigatureRecordsr8  Å  sC  € Øˆf•s˜8œ?Ñ+Ô+Ñ+€GØ
7Ð
7�I h¤oÑ6Ô6Ð
7Ñ
7Ô
7€Cà6:·j²j±l´lð  ð  Ñ2Ñ*ˆ��w 	¨FØ˜˜UœÔ$ˆØˆ>Ý+-Ô+<Ñ+>Ô+>Ð>ˆF�W˜S œZÑ(Ø$-ˆFÔ!Ø%UÐ%UÅEÈ)ÑDTÔDTÐ%UÑ%UÔ%UˆFÔ"Ø!Ô1ð =ð =�Ø*.¨°*Ñ)<�Ô&Ð&ØÔ$¨	Ò1Ð1Ð1ØØÔ!Øð4
Ñ1Ô1Ð1ð Ô(¨°1©Ô5ÔDˆØ�uŒ~Ð%Ð%¨¨w¸Ð'>Ñ%Ô%Ð%Øˆ�‰ˆØ€Nr   c                 óü  — |                      ¦   «         }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        ¦  «        }|                     ¦   «         }t          |||¦  «        }t          ||j        |¦  «         t          ||j        t%          |¦  «        ¦  «         t          ||j        |¦  «         t          ||j        |¦  «         |dz   |_        |sdn-dt          d	„ |                     ¦   «         D ¦   «         ¦  «        z   |_        t          t          d
„ |                     ¦   «         D ¦   «         ¦  «        ||j        ¦  «        }|                     ¦   «         }|j        dk    rt7          ||||j        ¦  «        }nt9          ||||j        ¦  «        }t          ||j        |¦  «         t          ||j        t%          |¦  «        ¦  «         t          ||j        |¦  «         t          ||j         |¦  «         |S )Nr�   )ÚmarkÚbaseÚligaturer   r<  r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r0   rÝ   rØ   s     r   rÕ   z'parseMarkToSomething.<locals>.<genexpr>î  s(   è è € Ð@Ð@ !•s˜1‘v”vÐ@Ð@Ð@Ð@Ð@Ð@r   rY   r:  c              3   ó,   K  — | ]\  }}|d          V — ŒdS rÑ   r   )r*   ÚkrÄ   s      r   rÕ   z'parseMarkToSomething.<locals>.<genexpr>  s*   è è € Ð4WÐ4W¹d¸aÀ°Q°q´TÐ4WÐ4WÐ4WÐ4WÐ4WÐ4Wr   c                 ó   — g | ]
}|d          ‘ŒS )r   r   )r*   r?  s     r   r,   z(parseMarkToSomething.<locals>.<listcomp>  s   € Ð+Ð+Ð+�aˆQˆqŒTÐ+Ð+Ð+r   ÚLigature)!ÚTyperä   ÚMarkAnchorClassÚBaseAnchorClassr'   r¹   r$   r  rÒ   rå   ræ   rç   ÚMarkCoverageClassÚMarkArrayClassr$  rk   Ú
MarkRecordÚ	MarkCountrh   ÚMarkCoverageÚ	MarkArrayÚ
ClassCountr(  r*  ÚBaseCoverageClassÚBaseArrayClassÚBaser8  r,  Ú
BaseRecordÚ	BaseCountÚBaseCoverageÚ	BaseArray)rw   r®   rÔ   rL   ÚmarkDataÚbaseDataÚDataÚmaxKlassrz   rú   r  r  ÚanchorClassÚ
extraItemsÚextrasrÏ   r  r>   r   ÚmarkCoverageÚ	markArrayÚmarkRecordsÚbaseCoverageÚ	baseArrayÚbaseRecordss                            r   ÚparseMarkToSomethingr`  Ý  s)  € Ø�6Š6‰8Œ8€DØ€D„KØ€HØ€Hà˜1Ô,Ð-Ø˜1Ô,Ð-Ø˜qÔ0Ð1ðð €Dð
 €HØð (ð (ˆØ�1ŒgˆØÐ2Ð2Ð2Ð2Ð2Ý˜$˜qœ'Ñ"Ô"ˆØ  œIÑˆˆkØ Ò+Ð+�Q�Q°ˆ
ÝÐ@Ð@ t¨A°°J±Ð,>Ô'?Ð@Ñ@Ô@Ñ@Ô@ˆÝ�D˜˜Z™Ô(Ñ)Ô)ˆÝ˜D  Z¡Ð!1Ð!1Ô2°KÑ@Ô@ˆØ�&Š=ˆ=Ø ¨ �ˆCˆCà  %˜.¨6Ñ1°F�ˆCØ˜$ˆˆˆ ‰ŒˆØˆˆS‰	Ý�x Ñ'Ô'ˆˆõ  ¥ H§M¢M¡O¤OÑ 4Ô 4°d¸AÔ<OÑPÔP€LØ× Ò Ñ"Ô"€IÝ! (¨L¸!Ñ<Ô<€KÝˆI�q”| [Ñ1Ô1Ð1ÝˆI�q”{¥C¨Ñ$4Ô$4Ñ5Ô5Ð5ÝˆD�!”. ,Ñ/Ô/Ð/ÝˆD�!”+˜yÑ)Ô)Ð)Ø ‘l€D„Oð  (ÐW�a�a¨QµÐ4WÐ4WÀhÇnÂnÑFVÔFVÐ4WÑ4WÔ4WÑ1WÔ1WÑ-W€D„OÝÝÐ+Ð+˜8Ÿ=š=™?œ?Ð+Ñ+Ô+Ñ,Ô,¨d°AÔ4Gñô €Lð × Ò Ñ"Ô"€IØ„v�ÒÐÝ)¨(°LÀ!ÀTÄ_ÑUÔUˆˆå% h°¸aÀÄÑQÔQˆÝˆI�q”| [Ñ1Ô1Ð1ÝˆI�q”{¥C¨Ñ$4Ô$4Ñ5Ô5Ð5ÝˆD�!”. ,Ñ/Ô/Ð/ÝˆD�!”+˜yÑ)Ô)Ð)à€Kr   c                   ó   — e Zd Zd„ ZdS )Ú
MarkHelperc                 óô   — dD ]t}dD ]o}||z   }|dk    r|dv r|}nt          | |¦  «        |z   }|dk    rd}t          | ||¦  «         |dk    r)t          t          |¦  «        }t          | |dz   |¦  «         ŒpŒud S )	N)ÚMarkrN  )rè   ÚArrayÚCountÚRecordÚAnchorrd  )rf  rg  rh  ÚLigatureRecordr2  rf  r   )r)  rk   re   )rL   ÚWhichÚWhatr>   r   rÏ   s         r   rM   zMarkHelper.__init__  s¹   € Ø%ð 	8ð 	8ˆEØJð 8ð 8�Ø˜d‘l�Ø˜F’?�? tÐ/LÐ'LÐ'LØ�E�Eå# D¨%Ñ0Ô0°4Ñ7�EØÐ,Ò,Ð,Ø,�EÝ˜˜c 5Ñ)Ô)Ð)Ø˜7’?�?Ý#¥B¨Ñ.Ô.�EÝ˜D #¨¡-°Ñ7Ô7Ð7øð8ð	8ð 	8r   N©r   r   r   rM   r   r   r   rb  rb    s#   € € € € € ð8ð 8ð 8ð 8ð 8r   rb  c                   ó$   — e Zd ZdZdZej        ZdS )ÚMarkToBaseHelperrd  rN  N)r   r   r   rd  rN  re   ÚMarkBasePosrB  r   r   r   rn  rn  &  s   € € € € € Ø€DØ€DØŒ>€D€D€Dr   rn  c                   ó$   — e Zd ZdZdZej        ZdS )ÚMarkToMarkHelperÚMark1ÚMark2N)r   r   r   rd  rN  re   ÚMarkMarkPosrB  r   r   r   rq  rq  ,  s   € € € € € Ø€DØ€DØŒ>€D€D€Dr   rq  c                   ó$   — e Zd ZdZdZej        ZdS )ÚMarkToLigatureHelperrd  rA  N)r   r   r   rd  rN  re   Ú
MarkLigPosrB  r   r   r   rv  rv  2  s   € € € € € Ø€DØ€DØŒ=€D€D€Dr   rv  c                 ó<   — t          | |t          ¦   «         ¦  «        S r0   )r`  rn  ©rw   r®   r¯   s      r   ÚparseMarkToBaserz  8  ó   € Ý  tÕ-=Ñ-?Ô-?Ñ@Ô@Ð@r   c                 ó<   — t          | |t          ¦   «         ¦  «        S r0   )r`  rq  ry  s      r   ÚparseMarkToMarkr}  <  r{  r   c                 ó<   — t          | |t          ¦   «         ¦  «        S r0   )r`  rv  ry  s      r   ÚparseMarkToLigaturer  @  s   € Ý  tÕ-AÑ-CÔ-CÑDÔDÐDr   c                 óH   — | rd„ |                       d¦  «        D ¦   «         ng S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   ©Ústrip©r*   r&   s     r   r,   z#stripSplitComma.<locals>.<listcomp>E  s    € Ð/Ð/Ð/˜!ˆA�GŠG‰IŒIÐ/Ð/Ð/r   ú,©rã   ©rz   s    r   rl   rl   D  s+   € Ø37Ð?Ð/Ð/˜tŸzšz¨#™œÐ/Ñ/Ô/Ð/¸RÐ?r   c                 óH   — | rd„ |                       d¦  «        D ¦   «         ng S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   rÝ   rØ   s     r   r,   z!intSplitComma.<locals>.<listcomp>I  s   € Ð,Ð,Ð,�q�C�‰FŒFÐ,Ð,Ð,r   r…  r†  r‡  s    r   r  r  H  s+   € Ø04Ð<Ð,Ð,˜DŸJšJ s™OœOÐ,Ñ,Ô,Ð,¸"Ð<r   c                   ó   — e Zd Zd„ ZdS )ÚContextHelperc                 ó˜  — |                      d¦  «        rd}d}nd}d}|                     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„ }nS|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    r2|d$z   | _        |d%z   | _        |d&z   | _        |d'z   | _        d(„ | _        d S |dk    rS|d)z   | _        |d*z   | _        |d+z   | _        |d,z   | _        d-„ | _        |rd.nd/| _        |rdnd| _        |rd0nd1| _        d S d S )2NÚSubstÚSubÚPosÚChainr�   rY   rW   r   ÚLookupRecordc                 ó   — | j         S r0   ©rè   ©Úrs    r   r@   z(ContextHelper.__init__.<locals>.<lambda>i  ó   €  ¤€ r   c                 ó   — | j         S r0   r“  r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>j  ó   €  a¤j€ r   c                 ó   — dS )Nr0   r   r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>k  s   €  G€ r   c                 ó   — dS )N)NNNr   r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>l  s   € Ð);€ r   c                 ó   — | j         fS r0   )ÚInputr”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>o  ó
   €  !¤' € r   c                 ó*   — | j         | j        | j        fS r0   ©Ú	Backtrackrœ  Ú	LookAheadr”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>p  ó   €  q¤{°A´G¸Q¼[Ð&I€ r   c                 ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3   ó:   K  — | ]}t          |¦  «        d z   V — ŒdS rÑ   ©rh   rÞ   s     r   rÕ   z>ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>t  ó,   è è € Ð"9Ð"9°!¥3 q¡6¤6¨A¡:Ð"9Ð"9Ð"9Ð"9Ð"9Ð"9r   )rœ  Ú
GlyphCount©r•  Úds     r   ÚSetRuleDataz+ContextHelper.__init__.<locals>.SetRuleDatar  ó&   € Ø‘
�”Ø"9Ð"9°qÐ"9Ñ"9Ô"9‘�”��r   c                 óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S ©Nr   r�   r   ©r   rœ  r¡  rh   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountr¨  s     r   ÚChainSetRuleDataz0ContextHelper.__init__.<locals>.ChainSetRuleDatav  ó\   € Ø67Ñ3�”˜aœg q¤{õ
 ˜˜1œ‘Y”Y¥ A a¤D¡	¤	¨A¡­s°1°Q´4©y¬yð	ØÔ)ØÔ%ØÔ)Ð)Ð)r   r   c                 ó   — | j         S r0   r“  r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>  r–  r   c                 ó   — | j         S r0   r“  r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>€  r˜  r   c                 ó   — | j         fS r0   ©ÚClassDefr”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>�  s
   €  Q¤Z M€ r   c                 ó*   — | j         | j        | j        fS r0   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefr”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>‚  s   € ØÔ#Ø”ØÔ#ð*€ r   c                 ó   — |\  | _         d S r0   r·  r¨  s     r   ÚSetContextDataz.ContextHelper.__init__.<locals>.SetContextDataˆ  s   € Ø !‘�”��r   c                 ó0   — |\  | _         | _        | _        d S r0   rº  r¨  s     r   ÚSetChainContextDataz3ContextHelper.__init__.<locals>.SetChainContextData‹  s   € ØNOÑK�Ô$ a¤o°qÔ7JÐ7JÐ7Jr   c                 ó   — | j         fS r0   )r   r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>Ž  r�  r   c                 ó*   — | j         | j        | j        fS r0   rŸ  r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>�  r¢  r   c                 ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3   ó:   K  — | ]}t          |¦  «        d z   V — ŒdS 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| _        | _        | _        d S 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°aÔ&8€ r   c                 ó   — | j         S r0   r“  r”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>¤  r–  r   c                 ó0   — | j         | j        z   | j        z   S r0   )ÚBacktrackCoveragerÊ  ÚLookAheadCoverager”  s    r   r@   z(ContextHelper.__init__.<locals>.<lambda>¥  s   € ØÔ# a¤oÑ5¸Ô8KÑKð r   c                 ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r0   r¥  rÞ   s     r   rÕ   z>ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>«  s(   è è € Ð"5Ð"5¨a¥3 q¡6¤6Ð"5Ð"5Ð"5Ð"5Ð"5Ð"5r   )rè   r§  r¨  s     r   rª  z+ContextHelper.__init__.<locals>.SetRuleData©  s&   € Ø !‘�”Ø"5Ð"5°1Ð"5Ñ"5Ô"5‘�”��r   c                 ón   — |\  | _         | _        | _        d„ |D ¦   «         \  | _        | _        | _        d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r0   r¥  rÞ   s     r   rÕ   zCContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>³  s(   è è € Ð'Ð' •S˜‘V”VÐ'Ð'Ð'Ð'Ð'Ð'r   )rÍ  rÊ  rÎ  r¯  r°  r±  r¨  s     r   r²  z0ContextHelper.__init__.<locals>.ChainSetRuleData­  sF   € ØNOÑK�Ô$ a¤o°qÔ7Jð
 (Ð' QÐ'Ñ'Ô'ñ	ØÔ)ØÔ%ØÔ)Ð)Ð)r   zunknown format: %sÚRuleÚ	RuleCountÚRuleSetÚRuleSetCountc                 ó   — || v r|gng S r0   r   ©rê   rÔ   r•  s      r   r@   z(ContextHelper.__init__.<locals>.<lambda>Ê  s   € ¸¸f¸¸°1°#°#È"€ r   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                 óx   — |r|                      | |¦  «        n"|dk    rt          | ¦  «        nt          ¦   «         S rÈ  )Úintersect_classræ   rØ  s      r   r@   z(ContextHelper.__init__.<locals>.<lambda>Ð  s=   € àð8�×!Ò! &¨!Ñ,Ô,Ð,à%&¨!¢V V•c˜&‘k”k�kµ±´ð r   r¼  r¸  rœ  r   )rò   Ú
startswithÚTyprB  r�  ÚChainTypÚInputIdxÚDataLenr‘  rè   ÚContextDatar¿  ÚRuleDatarª  rÓ  rÔ  rÕ  rÖ  Ú	Intersectr¸  ÚClassDefIndexrœ  )rL   Ú	klassNamerä   rà  rB  r�  râ  rã  rá  rè   ÚChainCoveragerä  ÚChainContextDatar¿  rÁ  rå  ÚChainRuleDatarª  r²  s                      r   rM   zContextHelper.__init__N  s6  € Ø×Ò˜gÑ&Ô&ð 	ØˆCØˆDˆDàˆCØˆDØ×Ò Ñ(Ô(ð 	ØˆEØˆHØˆGˆGàˆEØˆHØˆGØ˜3‘;ˆàˆŒØˆŒ	ØˆŒ
Ø ˆŒØ ˆŒØˆŒà  >Ñ1ˆÔà�QŠ;ˆ;Ø+Ð+ˆHØ0Ð0ˆMØ+Ð+ˆKØ;Ð;ÐØ!ˆNØ"&ÐØ+Ð+ˆHØIÐIˆMð:ð :ð :ð:ð :ð :ð :ð �qŠ[ˆ[Ø+Ð+ˆHØ0Ð0ˆMØ1Ð1ˆKð ð  Ðð"ð "ð "ðPð Pð Pð ,Ð+ˆHØIÐIˆMð:ð :ð :ð:ð :ð :ð :ð �qŠ[ˆ[Ø.Ð.ˆHØ8Ð8ˆMØˆKØ#ÐØ!ˆNØ"&ÐØ+Ð+ˆHðð ˆMð6ð 6ð 6ð(ð (ð (ð (ð 4Ð*¨VÑ3Ñ3Ô3Ð3àð 	+Ø)ˆ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ÐLˆDŒNˆNˆNØ�qŠ[ˆ[Ø  ;Ñ.ˆDŒIØ%Ð(8Ñ8ˆDŒNØ# jÑ0ˆDŒLØ (¨?Ñ :ˆDÔðð ˆDŒNð 05ÐD˜O˜O¸*ˆDŒMØ&+Ð!2  °ˆDÔØ$)Ð6˜˜¨wˆDŒJˆJˆJð ˆ[r   Nrl  r   r   r   r‹  r‹  M  s(   € € € € € ðJ7ð J7ð J7ð J7ð J7r   r‹  c           	      óz  — t          t          |¦  «        }g }| D ] } |¦   «         }t          |¦  «        }t          |¦  «        dk    s
J |¦   «         ‚t	          |d         ¦  «        }|dk    s
J |¦   «         ‚|dz
  |_        t          t          ||d         t          |d¦  «         | 	                    |¦  «         Œ¡|S )Nr   r   r�   r�   )
r)  re   rl   rh   r$   ÚSequenceIndexrF   r6   rk   rR   )r(  rè  r�   rÏ   ÚlstÚitemrb   r5   s           r   ÚparseLookupRecordsrð  Û  s·   € Ý•B˜	Ñ"Ô"€EØ
€CØð ð ˆØˆe‰gŒgˆÝ˜tÑ$Ô$ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~˜t‰~Œ~ˆ~Ý�$�q”'‰lŒlˆØ�QŠwˆwˆw˜‰wŒwˆwØ !™GˆÔÝ•Y 	¨4°¬7µG¸SÐBSÑTÔTÐTØ�
Š
�3‰ŒˆˆØ€Jr   c                 óJ   — | sd S  |¦   «         }t          | ¦  «        |_        |S r0   )ÚdictrÓ   )rÓ   r®   rÏ   rL   s       r   ÚmakeClassDefró  ê  s,   € Øð ØˆtØˆ5‰7Œ7€DÝ˜)‘_”_€D„NØ€Kr   c                 ó  — i }|                       d¦  «        5  | D ]=}t          |d         ¦  «        }||vs
J |¦   «         ‚t          |d         ¦  «        ||<   Œ>	 d d d ¦  «         n# 1 swxY w Y   t          |||¦  «        S )Nzclass definitionr   r�   )rg   r'   r$   ró  )rw   r®   rÏ   rÓ   rz   r  s         r   rö   rö   ò  sØ   € Ø€IØ	�ŠÐ)Ñ	*Ô	*ð ,ð ,Øð 	,ð 	,ˆDÝ˜d 1œgÑ&Ô&ˆEØ 	Ð)Ð)Ð)¨5Ñ)Ô)Ð)Ý" 4¨¤7™|œ|ˆI�eÑÐð	,ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,õ
 ˜	 4¨Ñ/Ô/Ð/s   ˜AA&Á&A*Á-A*c                 óº   — | sd S t          | t          ¦  «        rt          | ¦  «        }  |¦   «         }t          t          | ¦  «        |j        ¬¦  «        |_        |S )Nrc   )Ú
isinstanceræ   ru   rì   rê   )rê   r®   rÏ   r"  s       r   rå   rå   ü  sX   € Øð ØˆtÝ�&�#ÑÔð  Ý˜‘”ˆØˆu‰wŒw€HÝ�S ™[œ[¨d¬oÐ>Ñ>Ô>€H„OØ€Or   c                 óÞ   — g }|                       d¦  «        5  | D ]*}|                     t          |d         ¦  «        ¦  «         Œ+	 d d d ¦  «         n# 1 swxY w Y   t          |||¦  «        S )Nzcoverage definitionr   )rg   rR   r'   rå   )rw   r®   rÏ   rê   rz   s        r   ÚparseCoveragerø    s¸   € Ø€FØ	�ŠÐ,Ñ	-Ô	-ð .ð .Øð 	.ð 	.ˆDØ�MŠM�) D¨¤GÑ,Ô,Ñ-Ô-Ð-Ð-ð	.ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ ˜  eÑ,Ô,Ð,s   ˜.AÁAÁAc           	      óª  ‡— i }|D ]g\  }}|                      |‰j                 d         g ¦  «                             t          ˆfd„t	          |¦  «        D ¦   «         ¦  «        |f¦  «         Œhg }|D �]&}||vr|                     d ¦  «         Œg }	||         D ]Ž\  }} t          t          ‰j        ¦  «        ¦   «         }
‰                     |
|¦  «         t          |
‰j
        dz   t          |¦  «        ¦  «         t          |
‰j        |¦  «         |	                     |
¦  «         Œ� t          t          ‰j        ¦  «        ¦   «         }t          |‰j        |	¦  «         t          |‰j        t          |	¦  «        ¦  «         |                     |¦  «         �Œ(t          | ‰j        |¦  «         t          | ‰j        t          |¦  «        ¦  «         d S )Nr   c              3   óL   •K  — | ]\  }}||‰j         k    rd ndd…         V — ŒdS )r�   r   N©râ  )r*   r�   r&   rÔ   s      €r   rÕ   z!bucketizeRules.<locals>.<genexpr>  s@   øè è € ÐOÐO¹¸¸1�1˜!˜qœzš/˜/�Q�Q¨qÐ2Ð2Ô3ÐOÐOÐOÐOÐOÐOr   rf  )Ú
setdefaultrâ  rR   r¹   rn   r)  re   rÓ  rª  rk   rB  rh   r‘  rÕ  rÔ  rÖ  )rL   rÔ   ÚrulesÚ
bucketKeysÚbucketsÚseqÚrecsÚrulesetsÚ
firstGlyphÚ	thisRulesÚruleÚrulesets    `          r   ÚbucketizeRulesr    sÙ  ø€ Ø€GØð 
ð 
‰	ˆˆTØ×Ò˜3˜qœzœ?¨1Ô-¨rÑ2Ô2×9Ò9ÝÐOÐOÐOÐOÅ	È#ÁÄÐOÑOÔOÑOÔOÐQUÐVñ	
ô 	
ð 	
ð 	
ð €HØ ð !ñ !ˆ
Ø˜WÐ$Ð$Ø�OŠO˜DÑ!Ô!Ð!ØØˆ	Ø  Ô,ð 	#ð 	#‰IˆC�Ø&•7�2˜qœvÑ&Ô&Ñ(Ô(ˆDØ�MŠM˜$ Ñ$Ô$Ð$Ý�D˜!œ& 7Ñ*­C°©I¬IÑ6Ô6Ð6Ý�D˜!œ.¨$Ñ/Ô/Ð/Ø×Ò˜TÑ"Ô"Ð"Ð"à(•'�"˜aœiÑ(Ô(Ñ*Ô*ˆÝ�˜œ Ñ+Ô+Ð+Ý�˜œ¥c¨)¡n¤nÑ5Ô5Ð5Ø�Š˜Ñ Ô Ð Ñ åˆD�!”)˜XÑ&Ô&Ð&ÝˆD�!”.¥# h¡-¤-Ñ0Ô0Ð0Ð0Ð0r   c           
      óÀ  ‡‡—  t          t          |¦  «        ¦   «         }|                      ¦   «         d                              ¦   «         d                              ¦   «         }|dk    �rqd|_        t                               d||j        ¦  «         t          ||j        ¦  «        Šg }| D ]á}|d                              ¦   «         dk    sJ |d         ¦   «         ‚t          |¦  «        d‰j
        z   k     r0|                     d¦  «         t          |¦  «        d‰j
        z   k     °0t          d„ |dd‰j
        z   …         D ¦   «         ¦  «        }t          |d‰j
        z   d …         ‰j        |¦  «        }	|                     ||	f¦  «         Œât          ˆfd„|D ¦   «         ¦  «        }
t!          |
|¦  «        |_        t%          |‰||j        j        ¦  «         �n‚|                     d¦  «        �rd	|_        t                               d||j        ¦  «         t          ||j        ¦  «        Šd g‰j
        z  }|                      ¦   «         d                              d
¦  «        rå|                      ¦   «         d         d t          d
¦  «         …                              ¦   «         }ddt          j        fidt          j        fdt          j        fd	t          j        fdœdœ‰j
                 |         \  }}||         �
J |¦   «         ‚t5          | ||¬¦  «        ||<   |                      ¦   «         d                              d
¦  «        °å‰                     ||¦  «         g }| D ]ð}|d                              ¦   «                              d¦  «        sJ |d         ¦   «         ‚t          |¦  «        d‰j
        z   k     r0|                     d¦  «         t          |¦  «        d‰j
        z   k     °0t          d„ |dd‰j
        z   …         D ¦   «         ¦  «        }t          |d‰j
        z   d …         ‰j        |¦  «        }	|                     ||	f¦  «         Œñt          ˆfd„|D ¦   «         ¦  «        Št          ˆfd„|‰j                 j                             ¦   «         D ¦   «         ¦  «        }
t!          |
|¦  «        |_        t%          |‰|tA          tC          ‰¦  «        dz   ¦  «        ¦  «         �ni|                     d¦  «        �rId|_        t                               d||j        ¦  «         t          ||j        ¦  «        Št          d„ tA          ‰j
        ¦  «        D ¦   «         ¦  «        }|                      ¦   «         d                              d¦  «        ré|                      ¦   «         d         d t          d¦  «         …                              ¦   «         }ddt          j        fidt          j"        fdt          j#        fd	t          j$        fdœdœ‰j
                 |         \  }}||                              tK          | ||¬¦  «        ¦  «         |                      ¦   «         d                              d¦  «        °é‰ &                    ||¦  «         tO          | ¦  «        } t          | ¦  «        dk    sJ ‚| d         }|d                              ¦   «         dk    sJ |d         ¦   «         ‚t          |dd …         ‰j        |¦  «        }	tQ          |‰j)        dz   t          |	¦  «        ¦  «         tQ          |‰j        |	¦  «         n
J |¦   «         ‚|S )Nr   r  r�   zParsing %s format %srW   c              3   óN   K  — | ] }t          t          |¦  «        ¦  «        V — Œ!d S r0   )r.   rl   rØ   s     r   rÕ   zparseContext.<locals>.<genexpr>7  s2   è è € ÐXÐX¸1�
¥?°1Ñ#5Ô#5Ñ6Ô6ÐXÐXÐXÐXÐXÐXr   c              3   óD   •K  — | ]\  }}|‰j                  d          V — ŒdS ©r   Nrû  ©r*   r   r  rÔ   s      €r   rÕ   zparseContext.<locals>.<genexpr>;  s2   øè è € ÐDÐD±°°d˜#˜aœjœ/¨!Ô,ÐDÐDÐDÐDÐDÐDr   rÊ   r   rË   )Ú	backtrackrW   Ú	lookahead)r�   rY   rÎ   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r0   )r  rØ   s     r   rÕ   zparseContext.<locals>.<genexpr>W  s*   è è € ÐJÐJ¨Q� aÑ(Ô(ÐJÐJÐJÐJÐJÐJr   c              3   óD   •K  — | ]\  }}|‰j                  d          V — ŒdS r  rû  r  s      €r   rÕ   zparseContext.<locals>.<genexpr>Z  s2   øè è € ÐEÐE±)°#°t˜3˜qœzœ?¨1Ô-ÐEÐEÐEÐEÐEÐEr   c              3   ó*   •K  — | ]\  }}|‰v ¯	|V — Œd S r0   r   )r*   r+   rÔ   ÚfirstClassess      €r   rÕ   zparseContext.<locals>.<genexpr>[  s:   øè è € ð 
ð 
Ù�!�QÀQÈ,ÐEVÐEVˆAÐEVÐEVÐEVÐEVð
ð 
r   r"  rY   c              3   ó   K  — | ]}g V — Œd S r0   r   rØ   s     r   rÕ   zparseContext.<locals>.<genexpr>d  s"   è è € Ð7Ð7 ˜"Ð7Ð7Ð7Ð7Ð7Ð7r   úcoverage definition begin)r  Úinputr  rf  )*r)  re   r¡   rã   r¢   rä   rO   rP   r‹  rh   rã  rR   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ª  Úlistrk   rB  )rw   r®   rB  r�   rL   rú   rý  rz   r   r  ÚfirstGlyphsrÓ   r5   rÏ   Ú	coveragesrÔ   r  s                  @@r   ÚparseContextr  +  s  øø€ Ø�7•2�tÑÔÑÔ€DØ
�+Š+‰-Œ-˜Ô
×
 Ò
 Ñ
"Ô
" 1Ô
%×
+Ò
+Ñ
-Ô
-€CØ
ˆg‚~�~ØˆŒÝ�	Š	Ð(¨$°´Ñ<Ô<Ð<Ý˜$ ¤Ñ,Ô,ˆØˆØð 	&ð 	&ˆDØ˜”7—=’=‘?”? gÒ-Ð-Ð-¨t°A¬wÑ-Ô-Ð-Ý�d‘)”)˜a !¤)™mÒ+Ð+Ø—’˜B‘”�õ �d‘)”)˜a !¤)™mÒ+Ð+åÐXÐXÀÀQÈÈQÌYÉÐEVÔ@WÐXÑXÔXÑXÔXˆCÝ% d¨1¨q¬y©=¨?¨?Ô&;¸Q¼^ÈYÑWÔWˆDØ�LŠL˜#˜t˜Ñ%Ô%Ð%Ð%åÐDÐDÐDÐD¸eÐDÑDÔDÑDÔDˆÝ$ [°$Ñ7Ô7ˆŒÝ�t˜Q  t¤}Ô';Ñ<Ô<Ð<Ñ<Ø	�Š�gÑ	Ô	ñ =ØˆŒÝ�	Š	Ð(¨$°´Ñ<Ô<Ð<Ý˜$ ¤Ñ,Ô,ˆØ�F˜QœYÑ&ˆ	Ø�kŠk‰mŒm˜AÔ×'Ò'Ð(@ÑAÔAð 	EØ—*’*‘,”,˜q”/Ð"B¥SÐ)AÑ%BÔ%BÐ$BÐ"BÔC×IÒIÑKÔKˆCð ˜�BœKÐ(ðð #$¥RÔ%9Ð!:Ø�BÔ,Ð-Ø"#¥RÔ%9Ð!:ðð ð		ð 	ð Œiô	ð ô	‰JˆC�ð ˜S”>Ð)Ð)¨3Ñ)Ô)Ð)Ý*¨5°$¸eÐDÑDÔDˆI�c‰Nð �kŠk‰mŒm˜AÔ×'Ò'Ð(@ÑAÔAð 	Eð 	
×Ò˜˜yÑ)Ô)Ð)ØˆØð 	&ð 	&ˆDØ˜”7—=’=‘?”?×-Ò-¨gÑ6Ô6Ð?Ð?¸¸Q¼Ñ?Ô?Ð?Ý�d‘)”)˜a !¤)™mÒ+Ð+Ø—’˜B‘”�õ �d‘)”)˜a !¤)™mÒ+Ð+åÐJÐJ°$°q¸1¸q¼y¹=Ð7HÔ2IÐJÑJÔJÑJÔJˆCÝ% d¨1¨q¬y©=¨?¨?Ô&;¸Q¼^ÈYÑWÔWˆDØ�LŠL˜#˜t˜Ñ%Ô%Ð%Ð%ÝÐEÐEÐEÐE¸uÐEÑEÔEÑEÔEˆÝð 
ð 
ð 
ð 
Ø# A¤JÔ/Ô9×?Ò?ÑAÔAð
ñ 
ô 
ñ 
ô 
ˆõ % [°$Ñ7Ô7ˆŒÝ�t˜Q ¥u­S°Ñ->Ô->ÀÑ-BÑ'CÔ'CÑDÔDÐDÑDØ	�Š�jÑ	!Ô	!ñ ØˆŒÝ�	Š	Ð(¨$°´Ñ<Ô<Ð<Ý˜$ ¤Ñ,Ô,ˆÝÐ7Ð7¥e¨A¬IÑ&6Ô&6Ð7Ñ7Ô7Ñ7Ô7ˆ	Ø�kŠk‰mŒm˜AÔ×'Ò'Ð(CÑDÔDð 	KØ—*’*‘,”,˜q”/Ð"E¥SÐ)DÑ%EÔ%EÐ$EÐ"EÔF×LÒLÑNÔNˆCð ˜�BœKÐ(ðð #$¥RÔ%9Ð!:Ø¥Ô!1Ð2Ø"#¥RÔ%9Ð!:ðð ð		ð 	ð Œiô	ð ô	‰JˆC�ð �cŒN×!Ò!¥-°°tÀ5Ð"IÑ"IÔ"IÑJÔJÐJð �kŠk‰mŒm˜AÔ×'Ò'Ð(CÑDÔDð 	Kð 	
�Š�d˜IÑ&Ô&Ð&Ý�U‘”ˆÝ�5‰zŒz˜QŠˆˆˆØ�QŒxˆØ�AŒw�}Š}‰Œ *Ò,Ð,Ð,¨d°1¬gÑ,Ô,Ð,Ý! $ q r r¤(¨A¬N¸IÑFÔFˆÝ��a”f˜wÑ&­¨D©	¬	Ñ2Ô2Ð2Ý��a”n dÑ+Ô+Ð+Ð+à�#‰ŒˆØ€Kr   c                 ó(   — t          | |d|¬¦  «        S )NÚContextSubst©r�   ©r  ©rw   r®   r�   s      r   ÚparseContextSubstr    s   € Ý˜˜t ^¸yÐIÑIÔIÐIr   c                 ó(   — t          | |d|¬¦  «        S )NÚ
ContextPosr  r  r  s      r   ÚparseContextPosr"  ƒ  s   € Ý˜˜t \¸YÐGÑGÔGÐGr   c                 ó(   — t          | |d|¬¦  «        S )NÚChainContextSubstr  r  r  s      r   ÚparseChainedSubstr%  ‡  s   € Ý˜˜tÐ%8ÀIÐNÑNÔNÐNr   c                 ó(   — t          | |d|¬¦  «        S )NÚChainContextPosr  r  r  s      r   ÚparseChainedPosr(  ‹  s   € Ý˜˜tÐ%6À)ÐLÑLÔLÐLr   c                 ó  ‡	— t          j        ¦   «         }d|_        g g f}|                      ¦   «         d                              d¦  «        rÀ|                      ¦   «         d         d t          d¦  «         …                              ¦   «         }dt           j        fdt           j	        fdœ|         \  }}||          
                    t          | ||¬¦  «        ¦  «         |                      ¦   «         d                              d¦  «        °À|d         |_        t          |j        ¦  «        |_        |d         |_	        t          |j	        ¦  «        |_        i Š	| D ]?}t          |¦  «        dk    s
J |¦   «         ‚t          |¦  «        }|d         ‰	|d         <   Œ@t          t!          ‰	                     ¦   «         ¦  «        |¦  «        |_        ˆ	fd„|j        j        D ¦   «         |_        t          |j        ¦  «        |_        |S )Nr�   r   r  )r  r  rÎ   r   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   )r*   r?  r4   s     €r   r,   z,parseReverseChainedSubst.<locals>.<listcomp>¤  s   ø€ Ð@Ð@Ð@ a�w˜q”zÐ@Ð@Ð@r   )re   ÚReverseChainSingleSubsträ   r¡   rò   ró   rh   r¢   rÍ  rÎ  rR   rø  r¯  r±  r.   rå   ræ   rç   rè   rê   Ú
Substituter§  )
rw   r®   r¯   rL   r  rú   r5   rÏ   rz   r4   s
            @r   ÚparseReverseChainedSubstr-  �  sà  ø€ ÝÔ%Ñ'Ô'€DØ€D„KØ�R�€IØ
�+Š+‰-Œ-˜Ô
×
#Ò
#Ð$?Ñ
@Ô
@ð GØ�jŠj‰lŒl˜1ŒoÐA¥Ð%@Ñ!AÔ!AÐ AÐAÔB×HÒHÑJÔJˆà�RÔ1Ð2Ø�RÔ1Ð2ð
ð 
ð ô‰
ˆˆUð 	�#Œ×Ò�m¨E°4¸uÐEÑEÔEÑFÔFÐFð �+Š+‰-Œ-˜Ô
×
#Ò
#Ð$?Ñ
@Ô
@ð Gð ' qœ\€DÔÝ" 4Ô#9Ñ:Ô:€DÔØ& qœ\€DÔÝ" 4Ô#9Ñ:Ô:€DÔØ€GØð #ð #ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~˜t‰~Œ~ˆ~Ý˜$ÑÔˆØ œ7ˆ��Q”ÑÐÝ ¥ W§\¢\¡^¤^Ñ!4Ô!4°dÑ;Ô;€D„MØ@Ð@Ð@Ð@¨4¬=Ô+?Ð@Ñ@Ô@€D„OÝ˜$œ/Ñ*Ô*€D„OØ€Kr   c                 óª  — |                       d¦  «        }|\  }}}t                               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œ|         |         \  |_        }
|                      d¦  «        5  g }|                      ¦   «         rÈ|                      d¦  «        5  |                      ¦   «         rH |
| ||¦  «        }|j        |j        k    sJ ‚|                     |¦  «         |                      ¦   «         °Hd d d ¦  «         n# 1 swxY w Y   |                      ¦   «         d         dv rt;          | ¦  «         |                      ¦   «         °Èd d d ¦  «         n# 1 swxY w Y   |                       d¦  «         ||_        t?          |j        ¦  «        |_         |j         dk    rd S |S )NÚlookupzParsing lookup type %s %sr�   r   rY   rV   é   é   rž   )ÚsingleÚmultipleÚ	alternater<  ÚcontextÚchainedÚreversechainedé   )	r2  r  ÚkernsetÚcursivezmark to basezmark to ligaturezmark to markr5  r6  ©ÚGSUBÚGPOSz
lookup end)ú
% subtablezsubtable endr   )!ÚexpectrO   rP   re   ÚLookupr©   Ú
LookupFlagÚMarkFilteringSetr°   r´   r·   r»   r  r%  r-  rÅ   r
  r  r  rz  r  r}  r"  r(  Ú
LookupTyper  ró   rR   r¡   r£   ÚSubTablerh   ÚSubTableCount)rw   ÚtableTagr®   r�   rz   Ú_r�   rú   r/  r¦   ÚparseLookupSubTableÚ	subtablesÚsubtables                r   ÚparseLookuprK  ©  sî  € Ø�<Š<˜Ñ!Ô!€DØ�L€A€tˆSÝ‡I‚IÐ)¨3°Ñ5Ô5Ð5ÝŒY‰[Œ[€FÝ#3°EÑ#:Ô#:Ñ €FÔ�yØÐØ"+ˆÔð Õ*Ð+Ø�MÐ*Ø�^Ð,Ø�MÐ*ØÕ,Ð-ØÕ,Ð-Ø Õ":Ð;ð
ð 
ð �.Ð)Ø�	�NØ�<Ð(Ø�<Ð(Ø¥Ð0Ø!"Õ$7Ð 8Ø¥Ð0Ø�?Ð+Ø�?Ð+ð

ð 

ð.ð .ð* ô+.ð* ô+.Ñ*€FÔÐ*ð. 
�Š�\Ñ	"Ô	"ð 
ð 
Øˆ	à�jŠj‰lŒlð 	Ø—’Ð;Ñ<Ô<ð /ð /Ø—j’j‘l”lð /Ø2Ð2°5¸$À	ÑJÔJ�HØ!Ô,°Ô0CÒCÐCÐCÐCØ×$Ò$ XÑ.Ô.Ð.ð —j’j‘l”lð /ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð
 �{Š{‰}Œ}˜QÔÐ#AÐAÐAÝ�U‘”�ð �jŠj‰lŒlð 	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
‡L‚L�ÑÔÐà€F„OÝ˜vœÑ/Ô/€FÔØÔ˜qÒ Ð ð ˆtØ€Ms8   Ä,HÅAF0Æ$HÆ0F4	Æ4HÆ7F4	Æ8AHÈH
ÈH
c                 ó*  ‡‡—  t          j        |¦  «        ¦   «         }t          ¦   «         Št          ¦   «         Š|dv sJ ‚t                               d|¦  «          t          t          |¦  «        ¦   «         }d|_        dˆfd„fdˆˆfd„fdd	œ}|                     ¦   «         D ]\  }}t          ||d ¦  «         Œ|  
                    ¦   «         ��·|  
                    ¦   «         d
                              ¦   «         }||vr=t                               d|  
                    ¦   «         ¦  «         t          | ¦  «         Œ‚||         \  }}|dk    rð|j        €$t          j        ¦   «         |_        g |j        _        |  
                    ¦   «         \  }	}
}	t          | ||‰¦  «        }‰�.|
‰vsJ d|
z  ¦   «         ‚t!          |j        j        ¦  «        ‰|
<   nKt#          |
¦  «        t!          |j        j        ¦  «        k    s!J d|
t!          |j        ¦  «        fz  ¦   «         ‚|j        j                             |¦  «         n4t          ||¦  «        �
J |¦   «         ‚t          || || ¦  «        ¦  «         |  
                    ¦   «         �­·|j        r#t!          |j        j        ¦  «        |j        _        ‰�Ø‰                     ¦   «          t*          j                             t0          ¦  «        rŒd|vrt3          d¦  «        |d<   i |d         _        |d         j                             t8          i ¦  «                             |i ¦  «        }‰                     ¦   «         D ]\  }
}d|
dg|t=          |¦  «        <   Œ‰                     ¦   «          ||_        |S )Nr;  z
Parsing %sé   rf   c                 ó$   •— t          | ‰¦  «        S r0   )r…   )rw   rx   s    €r   r@   zparseGSUBGPOS.<locals>.<lambda>é  s   ø€ �/¨%°Ñ<Ô<€ r   rˆ   c                 ó&   •— t          | ‰‰¦  «        S r0   )r•   )rw   rx   r�   s    €€r   r@   zparseGSUBGPOS.<locals>.<lambda>í  s   ø€ Õ*¨5°)¸ZÑHÔH€ r   )Ú
LookupListN)zscript table beginzfeature table beginr/  r   úSkipping %sr/  zDuplicate lookup name: %sr‡   ÚDebgrW   ) r   ÚgetTableClassrH   rO   rP   r)  re   ÚVersionrÂ   rk   ró   r¢   r£   rP  r@  rK  rh   r$   rR   rŽ   rT   ÚosÚenvironr¤   r   r
   r  rü  r   r(  ÚstrÚtable)rw   r®   rF  Ú	containerrL   ÚfieldsÚattrÚparserrú   rG  r�   r/  rP   rx   r�   s                @@r   ÚparseGSUBGPOSr]  Þ  s�  øø€ Ø-•Ô# HÑ-Ô-Ñ/Ô/€IÝÑ!Ô!€IÝ Ñ"Ô"€JØÐ'Ð'Ð'Ð'Ð'Ý‡I‚Iˆl˜HÑ%Ô%Ð%Ø �7•2�xÑ Ô Ñ"Ô"€DØ€D„Lð Ø<Ð<Ð<Ð<ð
ð
 ØHÐHÐHÐHÐHð 
ð 'ð
ð 
€Fð Ÿš™œð "ð "‰ˆˆfÝ��d˜DÑ!Ô!Ð!Ð!Ø
�*Š*‰,Œ,Ñ
"Ø�jŠj‰lŒl˜1Œo×#Ò#Ñ%Ô%ˆØ�fÐÐÝ�IŠI�m U§Z¢Z¡\¤\Ñ2Ô2Ð2Ý�‰KŒKˆKØØ˜c”{‰ˆˆfØ�(Š?ˆ?ØŒÐ&Ý"$¤-¡/¤/�”Ø)+�”Ô&ØŸš™œ‰JˆAˆt�QÝ  ¨°$¸	ÑBÔBˆFØÐ$Ø 9Ð,Ð,Ð,Ð.IÈDÑ.PÑ,Ô,Ð,Ý"% d¤oÔ&<Ñ"=Ô"=�	˜$‘�å˜4‘y”y¥C¨¬Ô(>Ñ$?Ô$?Ò?Ð?Ð?ÀØÝ˜œÑ$Ô$ðLñ BÑ?Ô?Ð?ð ŒOÔ"×)Ò)¨&Ñ1Ô1Ð1Ð1å˜4 Ñ&Ô&Ð.Ð.°Ñ.Ô.Ð.Ý�D˜$   u¡¤Ñ.Ô.Ð.ð1 �*Š*‰,Œ,Ñ
"ð2 „ð BÝ&)¨$¬/Ô*@Ñ&AÔ&AˆŒÔ#ØÐØ×'Ò'Ñ)Ô)Ð)ÝŒ:�>Š>Õ.Ñ/Ô/ð 
	4Ø˜TÐ!Ð!Ý'¨Ñ/Ô/��V‘Ø$&��V”Ô!à�V”Ü—j’jÕ!6¸Ñ;Ô;ß’˜H bÑ)Ô)ð ð
 !*§¢Ñ 1Ô 1ð 4ð 4‘��fØ&(¨$° ^�•c˜&‘k”kÑ"Ð"à×(Ò(Ñ*Ô*Ð*Ø€I„OØÐr   c                 ó$   — t          | |d¦  «        S )Nr<  ©r]  ©rw   r®   s     r   Ú	parseGSUBra  !  ó   € Ý˜  fÑ-Ô-Ð-r   c                 ó$   — t          | |d¦  «        S )Nr=  r_  r`  s     r   Ú	parseGPOSrd  %  rb  r   c                 ó.  — i }|                       d¦  «        5  | D ]<}t          |d         ¦  «        }||vs
J |¦   «         ‚d„ |dd …         D ¦   «         ||<   Œ=	 d d d ¦  «         n# 1 swxY w Y   t          j        ||                     ¦   «         ¦  «        S )Nzattachment listr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   rÝ   rØ   s     r   r,   z#parseAttachList.<locals>.<listcomp>/  s   € Ð6Ð6Ð6¨�S ™VœVÐ6Ð6Ð6r   r�   )rg   r'   r«   ÚbuildAttachListrÁ   )rw   r®   Úpointsrz   r  s        r   ÚparseAttachListri  )  sï   € Ø€FØ	�ŠÐ(Ñ	)Ô	)ð 7ð 7Øð 	7ð 	7ˆDÝ˜d 1œgÑ&Ô&ˆEØ Ð&Ð&Ð&¨Ñ&Ô&Ð&Ø6Ð6¨T°!°"°"¬XÐ6Ñ6Ô6ˆF�5‰MˆMð	7ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ
 Ô˜v t×'>Ò'>Ñ'@Ô'@ÑAÔAÐAs   ˜A A%Á%A)Á,A)c                 ó˜  — i }|                       d¦  «        5  | D ]p}t          |d         ¦  «        }||vs
J |¦   «         ‚t          |d         ¦  «        }d„ |dd …         D ¦   «         }|t          |¦  «        k    s
J |¦   «         ‚|||<   Œq	 d d d ¦  «         n# 1 swxY w Y   t	          j        |i |                     ¦   «         ¦  «        S )NÚcaretsr   r�   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   rÝ   rØ   s     r   r,   z"parseCaretList.<locals>.<listcomp>:  s   € Ð3Ð3Ð3 Q�#˜a™&œ&Ð3Ð3Ð3r   r   )rg   r'   r$   rh   r«   ÚbuildLigCaretListrÁ   )rw   r®   rk  rz   r  ÚnumÚ
thisCaretss          r   ÚparseCaretListrp  3  s#  € Ø€FØ	�Š�xÑ	 Ô	 ð 'ð 'Øð 	'ð 	'ˆDÝ˜d 1œgÑ&Ô&ˆEØ Ð&Ð&Ð&¨Ñ&Ô&Ð&Ý�d˜1”g‘,”,ˆCØ3Ð3¨$¨q¨r¨r¬(Ð3Ñ3Ô3ˆJØ�#˜j™/œ/Ò)Ð)Ð)¨4Ñ)Ô)Ð)Ø&ˆF�5‰MˆMð	'ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ Ô  ¨¨T×-DÒ-DÑ-FÔ-FÑGÔGÐGs   ˜A4BÂBÂ Bc                 óD  — t          j        ¦   «         }d|_        dt          |                      ¦   «         ¦  «        z   |_        d g|j        z  |_        t          |                      ¦   «         ¦  «        D ]*\  }}t          t          |¦  «        |¦  «        |j        |<   Œ+|S )Nr�   )re   ÚMarkGlyphSetsDefÚMarkSetTableFormatrÒ   rç   ÚMarkSetCountrè   ru   r(  rå   ræ   )Úsetsr®   rL   r?  rÄ   s        r   ÚmakeMarkFilteringSetsrv  @  s�   € ÝÔÑ Ô €DØ€DÔØ�C §	¢	¡¤Ñ,Ô,Ñ,€DÔØ�F˜TÔ.Ñ.€D„MÝ�t—z’z‘|”|Ñ$Ô$ð 6ð 6‰ˆˆ1Ý'­¨A©¬°Ñ5Ô5ˆŒ�aÑÐØ€Kr   c                 ób  — i }|                       d¦  «        5  | D ]m}t          |¦  «        dk    s
J |¦   «         ‚t          |d         ¦  «        }t          |d         ¦  «        }||vrg ||<   ||                              |¦  «         Œn	 d d d ¦  «         n# 1 swxY w Y   t          ||¦  «        S )Nzset definitionr   r   r�   )rg   rh   r'   r$   rR   rv  )rw   r®   ru  rz   r  Ústs         r   ÚparseMarkFilteringSetsry  J  sù   € Ø€DØ	�ŠÐ'Ñ	(Ô	(ð #ð #Øð 	#ð 	#ˆDÝ�t‘9”9 ’>�>�> 4‘>”>�>Ý˜d 1œgÑ&Ô&ˆEå�T˜!”W‘”ˆBØ˜ˆ~ˆ~Ø��R‘Ø�ŒH�OŠO˜EÑ"Ô"Ð"Ð"ð	#ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ !  tÑ,Ô,Ð,s   ˜A1BÂBÂBc                 óè  —  t          j        d¦  «        ¦   «         }t                               d¦  «         t	          j        ¦   «         }dd„ fdt          fdt          fdd„ fd	t          fd
œ}| 	                    ¦   «         D ]\  }}t          ||d ¦  «         Œ|                      ¦   «         �¯|                      ¦   «         d                              ¦   «         }||vr+t                               d|¦  «         t          | ¦  «         Œo||         \  }}t          ||¦  «        �
J |¦   «         ‚t          || || |¦  «        ¦  «         |                      ¦   «         ­¯|j        €dnd|_        ||_        |S )NÚGDEFzParsing GDEFÚGlyphClassDefc                 ó:   — t          | |t          j        ¬¦  «        S ©NrÎ   )rö   re   r|  r`  s     r   r@   zparseGDEF.<locals>.<lambda>_  s   € ¥¨e°TÅÔAQÐ RÑ RÔ R€ r   Ú
AttachListÚLigCaretListÚMarkAttachClassDefc                 ó:   — t          | |t          j        ¬¦  «        S r~  )rö   re   r�  r`  s     r   r@   zparseGDEF.<locals>.<lambda>e  s   € ¥¨e°TÅÔAVÐ WÑ WÔ W€ r   rr  )rË   zattachment list beginzcarets beginz&mark attachment class definition beginzmarkfilter set definition beginr   rQ  rM  i  )r   rS  rO   rP   re   r{  ri  rp  ry  rÂ   rk   ró   r¢   r£   r)  rr  rT  rX  )rw   r®   rY  rL   rZ  r[  r\  rú   s           r   Ú	parseGDEFrƒ  X  sƒ  € Ø+•Ô# FÑ+Ô+Ñ-Ô-€IÝ‡I‚IˆnÑÔÐÝŒ7‰9Œ9€Dð ØRÐRð#
ð #/µÐ!@Ø'­Ð8à ØWÐWð3
ð -?Õ@VÐ+Wðð €Fð Ÿš™œð "ð "‰ˆˆfÝ��d˜DÑ!Ô!Ð!Ð!Ø
�*Š*‰,Œ,Ð
"Ø�jŠj‰lŒl˜1Œo×#Ò#Ñ%Ô%ˆØ�fÐÐÝ�IŠI�m SÑ)Ô)Ð)Ý�‰KŒKˆKØØ˜c”{‰ˆˆfÝ�t˜TÑ"Ô"Ð*Ð*¨DÑ*Ô*Ð*Ý��d˜F˜F 5¨$Ñ/Ô/Ñ0Ô0Ð0ð �*Š*‰,Œ,Ð
"ð "&Ô!6Ð!>�:�:ÀJ€D„LØ€I„OØÐr   c                 ó”  ‡ —  t          j        d¦  «        ¦   «         }t                               d¦  «         g }‰                      ¦   «         �ì‰                      dt          |¦  «        z  ¦  «         ˆ fd„dD ¦   «         \  }}}}t          |         |¦  «        }||_        ||_	        ||_
        i |_        t          ‰ ¦  «        }	|	d         dk    r?|	d         |j        t          |	d         d	¦  «        <   t          ‰ ¦  «        }	|	d         dk    °?|                     |¦  «         ‰                      ¦   «         ­ìd|_        ||_        |S )
NÚcmapzParsing cmapzcmap subtable %dc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r   )ÚparseCmapId)r*   Úfieldrw   s     €r   r,   zparseCmap.<locals>.<listcomp>  s3   ø€ ð $
ð $
ð $
àõ ˜˜uÑ%Ô%ð$
ð $
ð $
r   )Ú
platformIDÚ
encodingIDÚformatÚlanguager   zend subtabler�   r    )r   rS  rO   rP   ró   r?  rh   r   r‰  Ú	platEncIDrŒ  r…  r£   r$   rR   ÚtableVersionÚtables)
rw   r®   rY  r�  ÚplatIdÚencIdÚfmtÚlangrX  rz   s
   `         r   Ú	parseCmapr”  y  sP  ø€ Ø+•Ô# FÑ+Ô+Ñ-Ô-€IÝ‡I‚IˆnÑÔÐØ€FØ
�*Š*‰,Œ,Ð
"Ø�ŠÐ'­#¨f©+¬+Ñ5Ñ6Ô6Ð6ð$
ð $
ð $
ð $
àKð$
ñ $
ô $
Ñ ˆ��s˜Dõ ˜SÔ! #Ñ&Ô&ˆØ!ˆÔØˆŒØˆŒØˆŒ
Ý�E‰{Œ{ˆØ�1Œg˜Ò'Ð'Ø+/°¬7ˆEŒJ•s˜4 œ7 BÑ'Ô'Ñ(Ý˜‘;”;ˆDð �1Œg˜Ò'Ð'ð 	�Š�eÑÔÐð �*Š*‰,Œ,Ð
"ð  €IÔØ€IÔØÐr   c                 óf   — t          | ¦  «        }||d         k    sJ ‚t          |d         ¦  «        S )Nr   r�   )r£   r$   )rw   rˆ  rz   s      r   r‡  r‡  ’  s2   € Ý�‰;Œ;€DØ�D˜”GÒÐÐÐÝˆt�AŒw‰<Œ<Ðr   c                 ó†  — t                                d¦  «         |                      ¦   «         }d }|d                              ¦   «         d         dk    r!|d                              ¦   «         d         }nYd                     |d                              ¦   «         d d…         ¦  «        dk    r |d                              ¦   «         d         }|�;t          | ¦  «         |                     d¦  «        }|€|}n||k    sJ ||f¦   «         ‚|€
J d	¦   «         ‚	 t          t          t          t          d
œ|         | |¦  «        S )NzParsing tabler   ÚFontDamer�   r!   rY   zFont Chef TablerV   z7Don't know what table to parse and data doesn't specify)r<  r=  r{  r…  )rO   rP   r¡   rã   Újoinr£   Úljustra  rd  rƒ  r”  )rw   r®   rF  rz   Útags        r   Ú
parseTabler›  ˜  s4  € Ý‡I‚IˆoÑÔÐØ�;Š;‰=Œ=€DØ
€CØˆA„w‡}‚}�„�qÔ˜ZÒ'Ð'Ø�1Œg�mŠm‰oŒo˜aÔ ˆˆØ	�Š�$�q”'—-’-‘/”/ " 1 "Ô%Ñ	&Ô	&Ð*;Ò	;Ð	;Ø�1Œg�mŠm‰oŒo˜aÔ ˆØ
€ÝˆU‰ŒˆØ�iŠi˜‰lŒlˆØÐØˆHˆHà˜s’?�?�? X¨s O‘?”?�?ð 	ÐÐØ@ñ 	ÔÐðÝÝÝÝð	ð ð
 ôð
 �tñô ð r   c                   ó|   — 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dS )Ú	Tokenizerc                 ó¼   — t          |¦  «        }	 |j        | _        n#  d | _        Y nxY wt          |¦  «        | _        d| _        d| _        g | _        d | _        d S )NrW   r   )Úiterr�   Úfilenamerw   rz   ÚlinenoÚstoppersÚbuffer)rL   Úfrw   s      r   rM   zTokenizer.__init__µ  s^   € å�Q‘”ˆð	!ØœFˆDŒMˆMøð	!Ø ˆDŒMˆMˆMøøøÝ˜%‘[”[ˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒˆˆs   ‘ ž	)c                 ó   — | S r0   r   rK   s    r   Ú__iter__zTokenizer.__iter__Â  s   € Øˆr   c                 ój  — | xj         dz  c_         t          | j        ¦  «        x}| _        d„ |                     d¦  «        D ¦   «         }t          |¦  «        dk    r|d         s|d= |rH|d         s@t                               d| j         | j        fz  ¦  «         |r|d         s|d= |r|d         ¯|S )Nr�   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   r‚  r„  s     r   r,   z(Tokenizer._next_line.<locals>.<listcomp>È  s    € Ð4Ð4Ð4˜a�—’‘	”	Ð4Ð4Ð4r   ú	r   éÿÿÿÿz!trailing tab found on line %d: %s)r¡  r£   rw   rz   rã   rh   rO   Úwarning©rL   rz   s     r   Ú
_next_linezTokenizer._next_lineÅ  sÍ   € ØˆŒ�qÑˆŒÝ ¤
Ñ+Ô+Ð+ˆˆtŒyØ4Ð4 4§:¢:¨dÑ#3Ô#3Ð4Ñ4Ô4ˆÝˆt‰9Œ9˜Š>ˆ> $ q¤'ˆ>Ø�Q�Øð 	˜˜Rœð 	Ý�KŠKÐ;¸t¼{ÈDÌIÐ>VÑVÑWÔWÐWØð ˜t Bœxð Ø˜�Hð ð ˜t Bœxð àˆr   c                 ó‚   — 	 |                       ¦   «         }|r(|d         r |d         d         dk    s|d         dk    r|S Œ?)NTr   ú%r>  )r­  r¬  s     r   Ú_next_nonemptyzTokenizer._next_nonemptyÑ  sS   € ð	Ø—?’?Ñ$Ô$ˆDàð ˜˜Qœð  T¨!¤W¨Q¤Z°3Ò%6Ð%6¸$¸q¼'À\Ò:QÐ:QØ�ð		r   c                 óX   — | j         r| j         }d | _         |S |                      ¦   «         S r0   )r£  r°  ©rL   Úrets     r   Ú_next_bufferedzTokenizer._next_bufferedØ  s1   € ØŒ;ð 	)Ø”+ˆCØˆDŒKØˆJà×&Ò&Ñ(Ô(Ð(r   c                 óŒ   — |                       ¦   «         }|d                              ¦   «         | j        v r|| _        t          ‚|S rÈ  )r´  r¢   r¢  r£  ÚStopIterationr¬  s     r   Ú__next__zTokenizer.__next__à  s>   € Ø×"Ò"Ñ$Ô$ˆØ�Œ7�=Š=‰?Œ?˜dœmÐ+Ð+ØˆDŒKÝÐØˆr   c                 ó*   — |                       ¦   «         S r0   )r·  rK   s    r   r£   zTokenizer.nextç  s   € Ø�}Š}‰ŒÐr   c                 óÆ   — | j         s,	 |                      ¦   «         | _         n# t          $ r Y d S w xY w| j         d                              ¦   «         | j        v rd S | j         S rÈ  )r£  r°  r¶  r¢   r¢  rK   s    r   ró   zTokenizer.peekê  st   € ØŒ{ð 	ðØ"×1Ò1Ñ3Ô3�”�øÝ ð ð ð Ø�t�tðøøøàŒ;�qŒ>×ÒÑ!Ô! T¤]Ð2Ð2Ø�4ØŒ{Ðs   ‰# £
1°1c                 ó6   — |                       ¦   «         }|�|ndS )N)rW   )ró   r²  s     r   r¡   zTokenizer.peeksô  s   € Ø�iŠi‰kŒkˆØ�oˆsˆs¨5Ð0r   c              #   óÄ   K  — |dz   }|dz   }|                       |¦  «         | j                             |¦  «         d V — | j        d= |                      |dz   ¦  «         d S )Nz beginz endrª  )Úexpectendswithr¢  rR   r?  )rL   rš  ÚstartÚends       r   rg   zTokenizer.betweenø  sq   è è € à�h‘ˆØ�F‰lˆØ×Ò˜EÑ"Ô"Ð"ØŒ×Ò˜SÑ!Ô!Ð!ØˆˆˆØŒM˜"ÐØ�Š�C˜&‘LÑ!Ô!Ð!Ð!Ð!r   c              #   ó¨   K  — t          |¦  «        t          ur|f}| j                             |¦  «         d V — | j        t	          |¦  «         d …= d S r0   )rQ   r¹   r¢  Úextendrh   )rL   Útagss     r   r  zTokenizer.until  sY   è è € å�‰:Œ:�UÐ"Ð"Ø�7ˆDØŒ×Ò˜TÑ"Ô"Ð"ØˆˆˆØŒM�3˜t™9œ9˜*˜,˜,Ð'Ð'Ð'r   c                 ó†   — t          | ¦  «        }|d                              ¦   «         }||k    sJ d|›d|›d�¦   «         ‚|S )Nr   z
Expected 'ú', got 'ú')r£   r¢   ©rL   r&   rz   rš  s       r   r?  zTokenizer.expect
  sE   € Ý�D‰zŒzˆØ�1Œg�mŠm‰oŒoˆØ�aŠxˆxˆxˆx°a°a°a¸¸¸Ð=‰xŒxˆxØˆr   c                 ó¤   — t          | ¦  «        }|d                              ¦   «         }|                     |¦  «        sJ d|›d|›d�¦   «         ‚|S )Nr   zExpected '*rÃ  rÄ  )r£   r¢   rò   rÅ  s       r   r¼  zTokenizer.expectendswith  sQ   € Ý�D‰zŒzˆØ�1Œg�mŠm‰oŒoˆØ�|Š|˜A‰ŒÐEÐEÐE¸a¸a¸aÀÀÀÐ EÑEÔEÐEØˆr   N)r   r   r   rM   r¦  r­  r°  r´  r·  r£   ró   r¡   r	   rg   r  r?  r¼  r   r   r   r�  r�  ´  sï   € € € € € ðð ð ðð ð ð
ð 
ð 
ðð ð ð)ð )ð )ðð ð ðð ð ðð ð ð1ð 1ð 1ð ð"ð "ñ „^ð"ð ð(ð (ñ „^ð(ðð ð ðð ð ð ð r   r�  c                 óD   — 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_``)
    ©rF  )r�  r›  )r¤  r®   rF  rw   s       r   ÚbuildrÉ    s$   € õ  �a‰LŒL€EÝ�e˜T¨HÐ5Ñ5Ô5Ð5r   c                 ó<  — ddl }ddlm} ddlm} | €|j        dd…         }  |¦   «          ddl}|                     dt          j	        ¬¦  «        }| 
                    dd	d
dd¬¦  «         | 
                    ddddd¬¦  «         | 
                    dd
t          dd¬¦  «         |                     | ¦  «        } |€+| j        rt          j        | j        ¦  «        }n
 |¦   «         }| j        D �]-}t"                               d|¦  «         t'          |dd¬¦  «        5 }t)          ||| j        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |                     |¦  «        }	|                     ¦   «         }
|
                     |	|¦  «         ddlm} |j        }|                     |j        ¦  «        }|                     |¦  «         |                     ¦   «          |
                     ||¦  «         |                      |¦  «         |                     ¦   «          �Œ/dS )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ÚTABLErF  z7Table to fill (sniffed from input file if not provided)Úinputsú+zInput FontDame .txt files)rÏ  rQ   ÚnargsrÑ  zProcessing %sÚrtz	utf-8-sig)ÚencodingrÈ  )Ú	xmlWriter)!ÚsysÚ	fontToolsrË  ÚfontTools.misc.testToolsrÌ  ÚargvÚargparseÚArgumentParserÚmainÚ__doc__Úadd_argumentrW  Ú
parse_argsr®   r   r"   rÓ  rO   rP   ÚopenrÉ  rF  ÚcompileÚ	__class__Ú	decompileÚfontTools.miscrØ  Ú	XMLWriterÚstdoutÚbegintagÚnewlineÚtoXMLÚendtag)Úargsr®   rÙ  rË  rÌ  rÝ  r\  r¤  rX  ÚblobÚ
decompiledrØ  rš  Úwriters                 r   rß  rß  +  s·  € ð €J€J€JØ&Ð&Ð&Ð&Ð&Ð&Ø1Ð1Ð1Ð1Ð1Ð1à€|ØŒx˜˜˜Œ|ˆð €L�N„N€Nð €O€O€Oà×$Ò$ØÝ”Lð %ñ ô €Fð
 ×ÒØØØØØSð ñ ô ð ð ×ÒØØØØØFð ñ ô ð ð ×ÒØ˜&¥s°#Ð<Wð ñ ô ð ð ×Ò˜TÑ"Ô"€Dà€|ØŒ9ð 	Ý”< ¤	Ñ*Ô*ˆDˆDà�8‘:”:ˆDàŒ[ð ñ ˆÝ�	Š	�/ 1Ñ%Ô%Ð%Ý�!�T KÐ0Ñ0Ô0ð 	;°AÝ˜!˜T¨D¬MÐ:Ñ:Ô:ˆEð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;à�}Š}˜TÑ"Ô"ˆØ—_’_Ñ&Ô&ˆ
Ø×Ò˜T 4Ñ(Ô(Ð(ð 	-Ð,Ð,Ð,Ð,Ð,àŒnˆØ×$Ò$ S¤ZÑ0Ô0ˆØ�Š˜ÑÔÐØ�ŠÑÔÐà×Ò˜ Ñ&Ô&Ð&Ø�Š�cÑÔÐØ�ŠÑÔÐÑð%ð s   ÄEÅE	ÅE	Ú__main__r0   )NN)brÚ  r   ÚfontTools.ttLib.tables._c_m_a_pr   ÚfontTools.ttLib.tablesr   re   ÚfontTools.ttLib.tables.otBaser   r   ÚfontTools.otlLibr   r«   Ú
contextlibr	   ÚfontTools.ttLibr
   Ú fontTools.feaLib.lookupDebugInfor   r   Úoperatorr   rU  ÚloggingÚ	Exceptionr   r   r   r   Ú	getLoggerrO   r'   r.   r6   r9   rF   rò  rH   r…   r•   r©   r°   r´   r·   r»   rÅ   r
  r  rh  r  r  r$  r,  r8  r`  Úobjectrb  rn  rq  rv  rz  r}  r  rl   r  r‹  rð  rè   ró  r¸  rö   rå   rø  r  r  r  r"  r%  r(  r-  rK  r]  ra  rd  ri  rp  rv  ry  rƒ  r”  r‡  r›  r�  rÉ  rß  r   rÙ  r  r   r   r   ú<module>rÿ     s   ðð Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ +Ð +Ð +Ð +Ð +Ð +Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ Ð Ð Ð Ð Ð Ø 	€	€	€	Ø €€€ð	ð 	ð 	ð 	ð 	�)ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜[ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð1ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð0ñ 	ô 	ð 	ð €gÔÐ*Ñ+Ô+€ðð ð ð%ð %ð %ð
ð 
ð 
ð
ð 
ð 
ð$ð $ð $ð $ð $ð $ð $ð $�dñ $ô $ð $ð,9ð 9ð 9ð 9ðxð ð ð ðBð ð ðB1ð 1ð 1ð 1ð3ð 3ð 3ð 3ð4ð 4ð 4ð 4ð3ð 3ð 3ð 3ðIð Ið Ið Ið]ð ]ð ]ð ]ð@"ð "ð "ð "ð œ9ð ð ð ð ðKð Kð Kð Kð ð ð ðð ð ð"ð ð ð05ð 5ð 5ðp8ð 8ð 8ð 8ð 8�ñ 8ô 8ð 8ð"ð ð ð ð �zñ ô ð ðð ð ð ð �zñ ô ð ðð ð ð ð ˜:ñ ô ð ðAð Að Að AðAð Að Að AðEð Eð Eð Eð@ð @ð @ð=ð =ð =ð
K7ð K7ð K7ð K7ð K7�Fñ K7ô K7ð K7ð\ð ð ð ð )+¬ð ð ð ð ð &(¤[ð 0ð 0ð 0ð 0ð &(¤[ð ð ð ð ð &(¤[ð -ð -ð -ð -ð1ð 1ð 1ð:Qð Qð Qð QðhJð Jð Jð JðHð Hð Hð HðOð Oð Oð OðMð Mð Mð Mðð ð ð ð42ð 2ð 2ð 2ðj@ð @ð @ðF.ð .ð .ð.ð .ð .ðBð Bð Bð
Hð 
Hð 
Hðð ð ð-ð -ð -ðð ð ðBð ð ð2ð ð ðð ð ð ð8`ð `ð `ð `ð `�ñ `ô `ð `ðF6ð 6ð 6ð 6ð(Gð Gð Gð GðT ˆzÒÐØ€J€J€Jà€C„HˆTˆT‰VŒVÑÔÐÐÐð Ðr   