§
    �Êi." ã                   ó´  — d dl mZmZmZmZm	Z
mZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZ ddlmZmZm Z m!Z!m"Z" dd	l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z.m/Z0m1Z1 d d
l2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9Z9d dl:Z:d dl;m<Z< d dl=Z= e=j>        e?¦  «        Z@d„ ZAd„ ZB G d„ deC¦  «        ZD G d„ deD¦  «        ZE G d„ deE¦  «        ZF G d„ deE¦  «        ZG G d„ deG¦  «        ZH G d„ deG¦  «        ZI G d„ deI¦  «        ZJ G d„ d eFeI¦  «        ZK G d!„ d"eG¦  «        ZL G d#„ d$eG¦  «        ZM G d%„ d&eG¦  «        ZN G d'„ d(eG¦  «        ZO G d)„ d*eG¦  «        ZP G d+„ d,eG¦  «        ZQ G d-„ d.eQeO¦  «        ZR G d/„ d0eQeM¦  «        ZS G d1„ d2eQeI¦  «        ZT G d3„ d4eE¦  «        ZU G d5„ d6eE¦  «        ZV G d7„ d8eV¦  «        ZW G d9„ d:eM¦  «        ZX G d;„ d<eM¦  «        ZY G d=„ d>eE¦  «        ZZ G d?„ d@eZ¦  «        Z[ G dA„ dBeZ¦  «        Z\ G dC„ dDe\¦  «        Z] G dE„ dFe\¦  «        Z^ G dG„ dHe^¦  «        Z_ G dI„ dJe_¦  «        Z` G dK„ dLeE¦  «        Za G dM„ dNeE¦  «        Zb G dO„ dPeD¦  «        Zc G dQ„ dRec¦  «        Zd G dS„ dTec¦  «        Ze G dU„ dVee¦  «        Zf G dW„ dXee¦  «        Zg G dY„ dZec¦  «        Zh G d[„ d\ee¦  «        Zi G d]„ d^efei¦  «        Zj G d_„ d`ee¦  «        Zk G da„ dbeG¦  «        Zl G dc„ ddel¦  «        Zm G de„ dfeD¦  «        Zn G dg„ dheD¦  «        Zo G di„ djeD¦  «        Zp G dk„ dleD¦  «        Zq G dm„ dneD¦  «        Zr G do„ dpeD¦  «        Zs G dq„ dreD¦  «        Zt G ds„ dteD¦  «        Zu G du„ dveD¦  «        Zv G dw„ dx¦  «        Zw G dy„ dzeD¦  «        Zx G d{„ d|eM¦  «        Zy G d}„ d~eO¦  «        Zz G d„ d€ez¦  «        Z- G d�„ d‚ez¦  «        Z/i dƒeN“d„eL“d…eH“d†eO“d‡eM“dˆeP“d‰eI“dŠeb“deJ“d eK“dLea“d4eU“d6eV“d8eW“d:eX“d@e[“dDe]“i dFe^“dHe_“dJe`“d‹ec“dŒee“d�ef“dŽeg“ddem“dret“dteu“dvev“d|ey“d€e-“d‚e/“d<eY“d� e6exew¬�¦  «        “d‘ e6exe%¬’¦  «        “¥eresedededepd“„ d”„ d•„ d–„ d—„ d˜„ d™œ¥Z{dS )šé    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚensureVersionIsLongÚversionToFixed)ÚTupleVariation)ÚnearestMultipleShortestReprÚotRound)Ú	bytesjoinÚtobytesÚtostrÚpadÚsafeEval)ÚLazyList)ÚOPTIMIZE_FONT_SPEEDÚgetSearchRangeé   )ÚCountReferenceÚFormatSwitchingBaseTableÚOTTableReaderÚOTTableWriterÚValueRecordFactory)ÚlookupTypesÚVarCompositeGlyphÚAATStateTableÚAATStateÚ	AATActionÚContextualMorphActionÚLigatureMorphActionÚInsertionMorphActionÚMorxSubtableÚ
ExtendModeÚCompositeModeÚNO_VARIATION_INDEX)Úzip_longestÚ
accumulate)Úpartial)ÚSimpleNamespaceN)ÚOptionalc                 ó,   — t          | t          ¦  «        S ©N)Ú
isinstanceÚtuple)Úts    úm/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/fontTools/ttLib/tables/otConverters.pyú<lambda>r1   -   s   € •J˜q¥%Ñ(Ô(€ ó    c           	      ó4  — g }i }| D �]\  }}}}}|}	|                      d¦  «        r|dk    sJ ‚t          }
n¦|                     d¦  «        s|dv rt          t          t
          dœ|         }
nq|dk    rt          }
nc|dk    rt          }
nU|dk    rt          }
nG|d	k    rt          }
n9|d
v rt          }
n-|t          vrd|vr
|}	t          }
nt          ||t          ¦  «        }
 |
||||¬¦  «        }|j        r|j        }n/|dv r|                     |¦  «        }n|                     |	¦  «        }|j        s||_        |dv rZ|d         |_        |j                             ¦   «         D ]3}|                     ¦   «         D ]}t%          ||||¦  «        ||j        <   ŒŒ4|d	k    rP|d         |_        |d	         |_        |j                             ¦   «         D ]}t%          ||||¦  «        ||j        <   Œ|                     |¦  «         ||vs
J |¦   «         ‚|||<   �Œ||fS )zÔGiven a table spec from otData.py, build a converter object for each
    field of the table. This is called for each table in otData.py, and
    the results are assigned to the corresponding class in otTables.py.ÚValueFormatÚuint16ÚCount)ÚStructLengthÚ	MorphType)Úuint8r5   Úuint32ÚSubTableÚExtSubTableÚ	SubStructÚFeatureParams)ÚCIDGlyphMappingÚGlyphCIDMappingú(©Údescription)Ú	MortChainÚMortSubtableÚ	MorxChain)r;   r<   r=   r   ÚfeatureParamTypes)Ú
startswithr4   ÚendswithÚComputedUInt8ÚComputedUShortÚComputedULongr;   r<   r=   r>   ÚStructWithLengthÚconverterMappingÚStructÚevalÚ
tableClassÚgetr   ÚvaluesÚTableÚ__name__rG   ÚdefaultFeatureParamsÚappend)Ú	tableSpecÚtableNamespaceÚ
convertersÚconvertersByNameÚtpÚnameÚrepeatÚauxÚdescrÚ	tableNameÚconverterClassÚconvrQ   r/   Úclss                  r0   ÚbuildConvertersre   0   s¹  € ð €JØÐØ(1ð 6&ñ 6&Ñ$ˆˆD�&˜#˜uØˆ	Ø�?Š?˜=Ñ)Ô)ð 	LØ˜’>�>�>�>Ý(ˆNˆNØ�]Š]˜7Ñ#Ô#ð 	L tÐ/LÐ'LÐ'Lå&Ý(Ý'ðð ð ô	ˆNˆNð
 �ZÒÐÝ%ˆNˆNØ�]Ò"Ð"Ý(ˆNˆNØ�[Ò Ð Ý&ˆNˆNØ�_Ò$Ð$Ý*ˆNˆNØÐ;Ð;Ð;Ý-ˆNˆNàÕ)Ð)Ð)¨c¸¨m¨mØ�	Ý!'��å!% b¨.Õ:JÑ!KÔ!K�àˆ~˜d F¨C¸UÐCÑCÔCˆàŒ?ð 	7àœˆJˆJØÐ=Ð=Ð=Ø'×+Ò+¨BÑ/Ô/ˆJˆJà'×+Ò+¨IÑ6Ô6ˆJàŒð 	)Ø(ˆDŒOàÐ;Ð;Ð;Ø-¨mÔ<ˆDÔàÔ%×,Ò,Ñ.Ô.ð Sð S�ØŸ8š8™:œ:ð Sð S�CÝ5:¸4ÀÈÈcÑ5RÔ5RÐ$ S¤\Ñ2Ð2ðSà�?Ò"Ð"Ø%3Ð4GÔ%HˆDÔ"Ø(6°Ô(GˆDÔ%ØÔ-×4Ò4Ñ6Ô6ð Oð O�Ý16°t¸VÀSÈ#Ñ1NÔ1NÐ  ¤Ñ.Ð.Ø×Ò˜$ÑÔÐØÐ+Ð+Ð+Ð+¨TÑ+Ô+Ð+Ø!%Ð˜ÑÑØÐ'Ð'Ð'r2   c                   ó„   — e Zd ZdZdddœd„Zd„ Zd„ Zd„ Zd	„ Zdd
„Z	d„ Z
d„ Z ej        d¦  «        Zdee         fd„ZdS )ÚBaseConverterz\Base class for converter objects. Apart from the constructor, this
    is an abstract class.NÚ rB   c                ó,  — || _         || _        || _        | j        r"| j        st          | j        dd¦  «        | _        || _        |                     d¦  «        p|dv | _        |                     d¦  «        p|dk    | _        |dv | _        || _	        d S )Nz<string>rP   r6   )ÚDesignAxisRecordSizeÚValueRecordSizeÚ
LookupTyper8   )Ú
ClassCountÚClass2CountÚ
FeatureTagÚSettingsCountÚVarRegionCountÚMappingCountÚRegionAxisCountÚDesignAxisCountrj   ÚAxisValueCountrk   Ú	AxisCountÚBaseGlyphRecordCountÚLayerRecordCountÚAxisIndicesList)
r]   r^   r_   ÚcompilerQ   rI   ÚisCountÚisLookupTypeÚisPropagatedrC   ©Úselfr]   r^   r_   rQ   rC   s         r0   Ú__init__zBaseConverter.__init__t   s¬   € ØˆŒ	ØˆŒØˆŒØŒ8ð 	=˜DœKð 	=Ý˜tœx¨°VÑ<Ô<ˆDŒHØ$ˆŒØ—}’} WÑ-Ô-ð 
°ð :
ð 2
ˆŒð !ŸMšM¨,Ñ7Ô7ÐN¸4À;Ò;NˆÔØ ð %
ð 
ˆÔð" 'ˆÔÐÐr2   c                 ó–  ‡ ‡‡‡	‡
— ‰j         o|dk    }|r ‰                      ‰¦  «        Š
‰
t          u rd}|s@g }t          |¦  «        D ],}|                     ‰                      ‰‰|¦  «        ¦  «         Œ-|S ˆˆˆ
ˆ fd„} |¦   «         Š	t          ˆ	fd„t          |¦  «        D ¦   «         ¦  «        }‰                     |‰
z  ¦  «         |S )z(Read an array of values from the reader.é   Fc                  óT   •‡‡— ‰                      ¦   «         Š‰j        Šˆˆˆˆˆfd„} | S )Nc                 óh   •— ‰                      ‰| ‰z  z   ¦  «         ‰                     ‰‰i ¦  «        S r,   )ÚseekÚread)ÚiÚfontÚposÚreader_copyÚ
recordSizer   s    €€€€€r0   Ú	read_itemzABaseConverter.readArray.<locals>.get_read_item.<locals>.read_item¥   s6   ø€ Ø×$Ò$ S¨1¨z©>Ñ%9Ñ:Ô:Ð:ØŸ9š9 [°$¸Ñ;Ô;Ð;r2   ©Úcopyr‰   )rŒ   r‰   rŠ   rˆ   Úreaderr‹   r   s    @@€€€€r0   Úget_read_itemz.BaseConverter.readArray.<locals>.get_read_item¡   sN   øøø€ Ø$Ÿkšk™mœm�Ø”j�ð<ð <ð <ð <ð <ð <ð <ð <ð <ð !Ð r2   c              3   ó   •K  — | ]}‰V — Œd S r,   © )Ú.0r‡   rŒ   s     €r0   ú	<genexpr>z*BaseConverter.readArray.<locals>.<genexpr>¬   s#   øè è € Ð9Ð9 q˜Ð9Ð9Ð9Ð9Ð9Ð9r2   )ÚlazyÚgetRecordSizeÚNotImplementedÚrangerW   r†   r   Úadvance)r   r�   rˆ   Ú	tableDictÚcountr•   Úlr‡   r�   rŒ   r‹   s   ```      @@r0   Ú	readArrayzBaseConverter.readArray“   s  øøøøø€ àŒyÐ&˜U QšYˆØð 	Ø×+Ò+¨FÑ3Ô3ˆJØ�^Ð+Ð+Ø�Øð 	ØˆAÝ˜5‘\”\ð =ð =�Ø—’˜Ÿš 6¨4°Ñ;Ô;Ñ<Ô<Ð<Ð<ØˆHð!ð !ð !ð !ð !ð !ð !ð !ð &˜™œˆIÝÐ9Ð9Ð9Ð9­E°%©L¬LÐ9Ñ9Ô9Ñ9Ô9ˆAØ�NŠN˜5 :Ñ-Ñ.Ô.Ð.àˆHr2   c                 ó>   — t          | d¦  «        r| j        S t          S )NÚ
staticSize)ÚhasattrrŸ   r—   ©r   r�   s     r0   r–   zBaseConverter.getRecordSize±   s"   € Ý�4˜Ñ&Ô&ð 	#Ø”?Ð"ÝÐr2   c                 ó    — t          | ¦  «        ‚)zRead a value from the reader.©ÚNotImplementedError©r   r�   rˆ   rš   s       r0   r†   zBaseConverter.read¶   ó   € å! $Ñ'Ô'Ð'r2   c                 óª   — 	 t          |¦  «        D ]\  }}|                      |||||¦  «         Œd S # t          $ r}|j        |fz   |_        ‚ d }~ww xY wr,   )Ú	enumerateÚwriteÚ	ExceptionÚargs)r   Úwriterrˆ   rš   rS   r‡   ÚvalueÚes           r0   Ú
writeArrayzBaseConverter.writeArrayº   sz   € ð	Ý% fÑ-Ô-ð >ð >‘��5Ø—
’
˜6 4¨°E¸1Ñ=Ô=Ð=Ð=ð>ð >øåð 	ð 	ð 	Ø”V˜q˜d‘]ˆAŒFØøøøøð	øøøs   ‚.2 ²
A¼AÁAc                 ó    — t          | ¦  «        ‚)zWrite a value to the writer.r£   ©r   r¬   rˆ   rš   r­   ÚrepeatIndexs         r0   r©   zBaseConverter.writeÂ   r¦   r2   c                 ó    — t          | ¦  «        ‚)zRead a value from XML.r£   ©r   ÚattrsÚcontentrˆ   s       r0   ÚxmlReadzBaseConverter.xmlReadÆ   r¦   r2   c                 ó    — t          | ¦  «        ‚)zWrite a value to XML.r£   ©r   Ú	xmlWriterrˆ   r­   r]   rµ   s         r0   ÚxmlWritezBaseConverter.xmlWriteÊ   r¦   r2   zVarIndexBase\s*\+\s*(\d+)Úreturnc                 óŒ   — | j                              | j        ¦  «        }|sdS t          |                     d¦  «        ¦  «        S )zJIf description has `VarIndexBase + {offset}`, return the offset else None.Nr   )ÚvarIndexBasePlusOffsetREÚsearchrC   ÚintÚgroup)r   Úms     r0   ÚgetVarIndexOffsetzBaseConverter.getVarIndexOffsetÐ   s>   € àÔ)×0Ò0°Ô1AÑBÔBˆØð 	Ø�4Ý�1—7’7˜1‘:”:‰ŒÐr2   r,   )rU   Ú
__module__Ú__qualname__Ú__doc__r€   r�   r–   r†   r¯   r©   r·   r»   Úrerz   r¾   r*   rÀ   rÃ   r’   r2   r0   rg   rg   p   sà   € € € € € ðð ð'È"ð 'ð 'ð 'ð 'ð 'ð>ð ð ð<ð ð ð
(ð (ð (ðð ð ð(ð (ð (ð (ð(ð (ð (ð(ð (ð (ð  *˜rœzÐ*FÑGÔGÐð 8¨C¤=ð ð ð ð ð ð r2   rg   c                   óF   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ ZdS )ÚSimpleValuec                 ó   — | S r,   r’   ©r­   s    r0   ÚtoStringzSimpleValue.toStringÙ   ó   € àˆr2   c                 ó   — | S r,   r’   rË   s    r0   Ú
fromStringzSimpleValue.fromStringÝ   rÍ   r2   c                 óŒ   — |                      ||d|                      |¦  «        fgz   ¦  «         |                     ¦   «          d S ©Nr­   )Ú	simpletagrÌ   Únewliner¹   s         r0   r»   zSimpleValue.xmlWriteá   sI   € Ø×Ò˜D %¨G°T·]²]À5Ñ5IÔ5IÐ+JÐ*KÑ"KÑLÔLÐLØ×ÒÑÔÐÐÐr2   c                 ó8   — |                       |d         ¦  «        S rÑ   )rÏ   r´   s       r0   r·   zSimpleValue.xmlReadå   s   € Ø�Š˜u Wœ~Ñ.Ô.Ð.r2   N)rU   rÄ   rÅ   ÚstaticmethodrÌ   rÏ   r»   r·   r’   r2   r0   rÉ   rÉ   Ø   sf   € € € € € Øðð ñ „\ðð ðð ñ „\ððð ð ð/ð /ð /ð /ð /r2   rÉ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚOptionalValueNc                 óÄ   — || j         k    r*|                     d|                      |¦  «        f¦  «         |                     ||¦  «         |                     ¦   «          d S rÑ   )ÚDEFAULTrW   rÌ   rÒ   rÓ   r¹   s         r0   r»   zOptionalValue.xmlWriteì   s`   € Ø�D”LÒ Ð Ø�LŠL˜' 4§=¢=°Ñ#7Ô#7Ð8Ñ9Ô9Ð9Ø×Ò˜D %Ñ(Ô(Ð(Ø×ÒÑÔÐÐÐr2   c                 óN   — d|v r|                       |d         ¦  «        S | j        S rÑ   )rÏ   rÙ   r´   s       r0   r·   zOptionalValue.xmlReadò   s+   € Ø�eÐÐØ—?’? 5¨¤>Ñ2Ô2Ð2ØŒ|Ðr2   )rU   rÄ   rÅ   rÙ   r»   r·   r’   r2   r0   r×   r×   é   s7   € € € € € Ø€Gðð ð ðð ð ð ð r2   r×   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚIntValuec                 ó"   — t          | d¦  «        S ©Nr   )rÀ   rË   s    r0   rÏ   zIntValue.fromStringù   s   € å�5˜!‰}Œ}Ðr2   N©rU   rÄ   rÅ   rÕ   rÏ   r’   r2   r0   rÜ   rÜ   ø   s-   € € € € € Øðð ñ „\ðð ð r2   rÜ   c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚLongé   c                 ó*   — |                      ¦   «         S r,   ©ÚreadLongr¥   s       r0   r†   z	Long.read  ó   € Ø�ŠÑ Ô Ð r2   c                 ó,   — |                      |¦  «        S r,   )ÚreadLongArray©r   r�   rˆ   rš   r›   s        r0   r�   zLong.readArray  ó   € Ø×#Ò# EÑ*Ô*Ð*r2   Nc                 ó0   — |                      |¦  «         d S r,   )Ú	writeLongr±   s         r0   r©   z
Long.write  ó   € Ø×Ò˜ÑÔÐÐÐr2   c                 ó0   — |                      |¦  «         d S r,   )ÚwriteLongArray©r   r¬   rˆ   rš   rS   s        r0   r¯   zLong.writeArray
  ó   € Ø×Ò˜fÑ%Ô%Ð%Ð%Ð%r2   r,   ©rU   rÄ   rÅ   rŸ   r†   r�   r©   r¯   r’   r2   r0   rá   rá   þ   óZ   € € € € € Ø€Jð!ð !ð !ð+ð +ð +ð ð  ð  ð  ð&ð &ð &ð &ð &r2   rá   c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚULongrâ   c                 ó*   — |                      ¦   «         S r,   ©Ú	readULongr¥   s       r0   r†   z
ULong.read  ó   € Ø×ÒÑ!Ô!Ð!r2   c                 ó,   — |                      |¦  «        S r,   )ÚreadULongArrayré   s        r0   r�   zULong.readArray  ó   € Ø×$Ò$ UÑ+Ô+Ð+r2   Nc                 ó0   — |                      |¦  «         d S r,   ©Ú
writeULongr±   s         r0   r©   zULong.write  ó   € Ø×Ò˜%Ñ Ô Ð Ð Ð r2   c                 ó0   — |                      |¦  «         d S r,   )ÚwriteULongArrayrð   s        r0   r¯   zULong.writeArray  ó   € Ø×Ò˜vÑ&Ô&Ð&Ð&Ð&r2   r,   rò   r’   r2   r0   rõ   rõ     óZ   € € € € € Ø€Jð"ð "ð "ð,ð ,ð ,ð!ð !ð !ð !ð'ð 'ð 'ð 'ð 'r2   rõ   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚFlags32c                 ó   — d| z  S )Nz0x%08Xr’   rË   s    r0   rÌ   zFlags32.toString  ó   € à˜%ÑÐr2   N)rU   rÄ   rÅ   rÕ   rÌ   r’   r2   r0   r  r    s-   € € € € € Øð ð  ñ „\ð ð  ð  r2   r  c                   ó   — e Zd ZeZdS )ÚVarIndexN)rU   rÄ   rÅ   r%   rÙ   r’   r2   r0   r
  r
  $  s   € € € € € Ø €G€G€Gr2   r
  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚShorté   c                 ó*   — |                      ¦   «         S r,   )Ú	readShortr¥   s       r0   r†   z
Short.read+  rù   r2   c                 ó,   — |                      |¦  «        S r,   )ÚreadShortArrayré   s        r0   r�   zShort.readArray.  rü   r2   Nc                 ó0   — |                      |¦  «         d S r,   )Ú
writeShortr±   s         r0   r©   zShort.write1  r   r2   c                 ó0   — |                      |¦  «         d S r,   )ÚwriteShortArrayrð   s        r0   r¯   zShort.writeArray4  r  r2   r,   rò   r’   r2   r0   r  r  (  r  r2   r  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚUShortr  c                 ó*   — |                      ¦   «         S r,   ©Ú
readUShortr¥   s       r0   r†   zUShort.read;  ó   € Ø× Ò Ñ"Ô"Ð"r2   c                 ó,   — |                      |¦  «        S r,   )ÚreadUShortArrayré   s        r0   r�   zUShort.readArray>  s   € Ø×%Ò% eÑ,Ô,Ð,r2   Nc                 ó0   — |                      |¦  «         d S r,   ©ÚwriteUShortr±   s         r0   r©   zUShort.writeA  ó   € Ø×Ò˜5Ñ!Ô!Ð!Ð!Ð!r2   c                 ó0   — |                      |¦  «         d S r,   )ÚwriteUShortArrayrð   s        r0   r¯   zUShort.writeArrayD  s   € Ø×Ò Ñ'Ô'Ð'Ð'Ð'r2   r,   rò   r’   r2   r0   r  r  8  sZ   € € € € € Ø€Jð#ð #ð #ð-ð -ð -ð"ð "ð "ð "ð(ð (ð (ð (ð (r2   r  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚInt8r   c                 ó*   — |                      ¦   «         S r,   )ÚreadInt8r¥   s       r0   r†   z	Int8.readK  ræ   r2   c                 ó,   — |                      |¦  «        S r,   )ÚreadInt8Arrayré   s        r0   r�   zInt8.readArrayN  rê   r2   Nc                 ó0   — |                      |¦  «         d S r,   )Ú	writeInt8r±   s         r0   r©   z
Int8.writeQ  rí   r2   c                 ó0   — |                      |¦  «         d S r,   )ÚwriteInt8Arrayrð   s        r0   r¯   zInt8.writeArrayT  rñ   r2   r,   rò   r’   r2   r0   r%  r%  H  ró   r2   r%  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚUInt8r   c                 ó*   — |                      ¦   «         S r,   )Ú	readUInt8r¥   s       r0   r†   z
UInt8.read[  rù   r2   c                 ó,   — |                      |¦  «        S r,   )ÚreadUInt8Arrayré   s        r0   r�   zUInt8.readArray^  rü   r2   Nc                 ó0   — |                      |¦  «         d S r,   )Ú
writeUInt8r±   s         r0   r©   zUInt8.writea  r   r2   c                 ó0   — |                      |¦  «         d S r,   )ÚwriteUInt8Arrayrð   s        r0   r¯   zUInt8.writeArrayd  r  r2   r,   rò   r’   r2   r0   r/  r/  X  r  r2   r/  c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚUInt24é   c                 ó*   — |                      ¦   «         S r,   ©Ú
readUInt24r¥   s       r0   r†   zUInt24.readk  r  r2   Nc                 ó0   — |                      |¦  «         d S r,   ©ÚwriteUInt24r±   s         r0   r©   zUInt24.writen  r!  r2   r,   ©rU   rÄ   rÅ   rŸ   r†   r©   r’   r2   r0   r9  r9  h  s<   € € € € € Ø€Jð#ð #ð #ð"ð "ð "ð "ð "ð "r2   r9  c                   ó   — e Zd Zd„ ZdS )ÚComputedIntc                 ój   — |�0|                      |›d|›�¦  «         |                     ¦   «          d S d S )Nú=)ÚcommentrÓ   r¹   s         r0   r»   zComputedInt.xmlWrites  sG   € ØÐØ×Ò¨¨¨¨u¨uÐ5Ñ6Ô6Ð6Ø×ÒÑÔÐÐÐð Ðr2   N©rU   rÄ   rÅ   r»   r’   r2   r0   rC  rC  r  s#   € € € € € ð ð  ð  ð  ð  r2   rC  c                   ó   — e Zd ZdS )rJ   N©rU   rÄ   rÅ   r’   r2   r0   rJ   rJ   y  ó   € € € € € Ø€Dr2   rJ   c                   ó   — e Zd ZdS )rK   NrI  r’   r2   r0   rK   rK   }  rJ  r2   rK   c                   ó   — e Zd ZdS )rL   NrI  r’   r2   r0   rL   rL   �  rJ  r2   rL   c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚTagrâ   c                 ó*   — |                      ¦   «         S r,   )ÚreadTagr¥   s       r0   r†   zTag.readˆ  s   € Ø�~Š~ÑÔÐr2   Nc                 ó0   — |                      |¦  «         d S r,   )ÚwriteTagr±   s         r0   r©   z	Tag.write‹  s   € Ø�Š˜ÑÔÐÐÐr2   r,   rA  r’   r2   r0   rN  rN  …  s<   € € € € € Ø€Jð ð  ð  ðð ð ð ð ð r2   rN  c                   ó0   — e Zd ZdZdZd„ Zd„ Zd„ Zdd„ZdS )	ÚGlyphIDr  ÚHc                 ój   — |                      |                     | j        | j        |¦  «        ¦  «        S r,   )ÚgetGlyphNameManyr�   ÚtypecoderŸ   ré   s        r0   r�   zGlyphID.readArray“  s3   € Ø×$Ò$Ø×Ò˜Tœ]¨D¬O¸UÑCÔCñ
ô 
ð 	
r2   c                 óh   — |                      |                     | j        | j        ¦  «        ¦  «        S r,   )ÚgetGlyphNameÚ	readValuerX  rŸ   r¥   s       r0   r†   zGlyphID.read˜  s*   € Ø× Ò  ×!1Ò!1°$´-ÀÄÑ!QÔ!QÑRÔRÐRr2   c                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r,   )r¯   rX  ÚgetGlyphIDManyrð   s        r0   r¯   zGlyphID.writeArray›  s.   € Ø×Ò˜$œ-¨×)<Ò)<¸VÑ)DÔ)DÑEÔEÐEÐEÐEr2   Nc                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r,   )Ú
writeValuerX  Ú
getGlyphIDr±   s         r0   r©   zGlyphID.writež  s,   € Ø×Ò˜$œ-¨¯ª¸Ñ)?Ô)?Ñ@Ô@Ð@Ð@Ð@r2   r,   )	rU   rÄ   rÅ   rŸ   rX  r�   r†   r¯   r©   r’   r2   r0   rT  rT  �  sk   € € € € € Ø€JØ€Hð
ð 
ð 
ð
Sð Sð SðFð Fð FðAð Að Að Að Að Ar2   rT  c                   ó   — e Zd ZdZdZdS )Ú	GlyphID32râ   ÚLN)rU   rÄ   rÅ   rŸ   rX  r’   r2   r0   rb  rb  ¢  s   € € € € € Ø€JØ€H€H€Hr2   rb  c                   ó   — e Zd Zd„ ZdS )ÚNameIDc                 ó¼  — |                      ||d|fgz   ¦  «         |r©|r§|                     d¦  «        }|r�|                     |¦  «        }|                     d¦  «         |r|                     |¦  «         nN|dk    r|                     d¦  «         n2|                     d¦  «         t
                               d|z  ¦  «         |                     ¦   «          d S )Nr­   r]   ú  éÿÿ  ÚNonezmissing from name tablez"name id %d missing from name table)rÒ   rR   ÚgetDebugNamer©   rF  ÚlogÚwarningrÓ   )r   rº   rˆ   r­   r]   rµ   Ú	nameTables          r0   r»   zNameID.xmlWrite¨  sú   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Øð 	N�Eð 	NØŸš Ñ(Ô(ˆIØð 	NØ ×-Ò-¨eÑ4Ô4�Ø—’ Ñ%Ô%Ð%Øð NØ×%Ò% dÑ+Ô+Ð+Ð+Ø˜f’_�_Ø×%Ò% fÑ-Ô-Ð-Ð-à×%Ò%Ð&?Ñ@Ô@Ð@Ý—K’KÐ DÀuÑ LÑMÔMÐMØ×ÒÑÔÐÐÐr2   NrG  r’   r2   r0   re  re  §  s#   € € € € € ðð ð ð ð r2   re  c                   ó   — e Zd Zd„ ZdS )Ú	STATFlagsc                 óP  — |                      ||d|fgz   ¦  «         g }|dz  r|                     d¦  «         |dz  r|                     d¦  «         |r=|                     d¦  «         |                     d                     |¦  «        ¦  «         |                     ¦   «          d S )Nr­   r   ÚOlderSiblingFontAttributer  ÚElidableAxisValueNamerg  ú )rÒ   rW   r©   rF  ÚjoinrÓ   ©r   rº   rˆ   r­   r]   rµ   Úflagss          r0   r»   zSTATFlags.xmlWriteº  s¸   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=ØˆØ�4‰<ð 	6Ø�LŠLÐ4Ñ5Ô5Ð5Ø�4‰<ð 	2Ø�LŠLÐ0Ñ1Ô1Ð1Øð 	/Ø�OŠO˜DÑ!Ô!Ð!Ø×Ò˜cŸhšh u™oœoÑ.Ô.Ð.Ø×ÒÑÔÐÐÐr2   NrG  r’   r2   r0   ro  ro  ¹  s#   € € € € € ð
ð 
ð 
ð 
ð 
r2   ro  c                   ó$   — e Zd Zed„ ¦   «         ZdS )Ú
FloatValuec                 ó    — t          | ¦  «        S r,   )ÚfloatrË   s    r0   rÏ   zFloatValue.fromStringÈ  ó   € å�U‰|Œ|Ðr2   Nrß   r’   r2   r0   rx  rx  Ç  s-   € € € € € Øðð ñ „\ðð ð r2   rx  c                   ó    — e Zd ZdZd„ Zdd„ZdS )Ú
DeciPointsr  c                 ó0   — |                      ¦   «         dz  S ©Né
   r  r¥   s       r0   r†   zDeciPoints.readÐ  s   € Ø× Ò Ñ"Ô" RÑ'Ð'r2   Nc                 óP   — |                      t          |dz  ¦  «        ¦  «         d S r  )r   Úroundr±   s         r0   r©   zDeciPoints.writeÓ  s(   € Ø×Ò�5 ¨¡Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-r2   r,   rA  r’   r2   r0   r}  r}  Í  s<   € € € € € Ø€Jð(ð (ð (ð.ð .ð .ð .ð .ð .r2   r}  c                   ó„   — e Zd ZeZeZeZeZd„ Zdd„Z	e
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         ZdS )	ÚBaseFixedValuec                 ób   — |                        t          || j        ¦  «        ¦   «         ¦  «        S r,   )ÚfromIntÚgetattrÚreaderMethodr¥   s       r0   r†   zBaseFixedValue.readÝ  s*   € Ø�|Š|Ð>�G F¨DÔ,=Ñ>Ô>Ñ@Ô@ÑAÔAÐAr2   Nc                 óh   —  t          || j        ¦  «        |                      |¦  «        ¦  «         d S r,   )r‡  ÚwriterMethodÚtoIntr±   s         r0   r©   zBaseFixedValue.writeà  s1   € Ø*��˜Ô)Ñ*Ô*¨4¯:ª:°eÑ+<Ô+<Ñ=Ô=Ð=Ð=Ð=r2   c                 ó,   — t          || j        ¦  «        S r,   )Úfi2flÚprecisionBits©rd   r­   s     r0   r†  zBaseFixedValue.fromIntã  ó   € å�U˜CÔ-Ñ.Ô.Ð.r2   c                 ó,   — t          || j        ¦  «        S r,   )Úfl2firŽ  r�  s     r0   r‹  zBaseFixedValue.toIntç  r�  r2   c                 ó,   — t          || j        ¦  «        S r,   )Ústr2flrŽ  r�  s     r0   rÏ   zBaseFixedValue.fromStringë  ó   € å�e˜SÔ.Ñ/Ô/Ð/r2   c                 ó,   — t          || j        ¦  «        S r,   )Úfl2strrŽ  r�  s     r0   rÌ   zBaseFixedValue.toStringï  r•  r2   r,   )rU   rÄ   rÅ   r—   rŸ   rŽ  rˆ  rŠ  r†   r©   Úclassmethodr†  r‹  rÏ   rÌ   r’   r2   r0   r„  r„  ×  sº   € € € € € Ø€JØ"€MØ!€LØ!€LðBð Bð Bð>ð >ð >ð >ð ð/ð /ñ „[ð/ð ð/ð /ñ „[ð/ð ð0ð 0ñ „[ð0ð ð0ð 0ñ „[ð0ð 0ð 0r2   r„  c                   ó   — e Zd ZdZdZdZdZdS )ÚFixedrâ   é   rå   rì   N©rU   rÄ   rÅ   rŸ   rŽ  rˆ  rŠ  r’   r2   r0   rš  rš  ô  s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr2   rš  c                   ó   — e Zd ZdZdZdZdZdS )ÚF2Dot14r  é   r  r  Nrœ  r’   r2   r0   rž  rž  û  s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr2   rž  c                   ó|   ‡ — e Zd ZdZdZeˆ fd„¦   «         Zeˆ fd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ˆ xZ
S )ÚAngleg        g     €†?c                 ó\   •— t          ¦   «                              |¦  «        | j        z   dz  S ©Né´   )Úsuperr†  Úbias©rd   r­   Ú	__class__s     €r0   r†  zAngle.fromInt  s%   ø€ å‘”—’ Ñ&Ô&¨¬Ñ1°SÑ8Ð8r2   c                 ó\   •— t          ¦   «                              |dz  | j        z
  ¦  «        S r£  )r¥  r‹  r¦  r§  s     €r0   r‹  zAngle.toInt  s$   ø€ å‰wŒw�}Š}˜e c™k¨S¬XÑ5Ñ6Ô6Ð6r2   c                 óZ   — t          t          |¦  «        | j        z  ¦  «        | j        z  S r,   )r   rz  Úfactorr�  s     r0   rÏ   zAngle.fromString  s&   € õ •u˜U‘|”| c¤jÑ0Ñ1Ô1°C´JÑ>Ð>r2   c                 ó,   — t          || j        ¦  «        S r,   )r
   r«  r�  s     r0   rÌ   zAngle.toString  s   € å*¨5°#´*Ñ=Ô=Ð=r2   )rU   rÄ   rÅ   r¦  r«  r˜  r†  r‹  rÏ   rÌ   Ú__classcell__©r¨  s   @r0   r¡  r¡    s©   ø€ € € € € ð €DØ"€Fàð9ð 9ð 9ð 9ñ „[ð9ð ð7ð 7ð 7ð 7ñ „[ð7ð ð?ð ?ñ „[ð?ð ð>ð >ñ „[ð>ð >ð >ð >ð >r2   r¡  c                   ó   — e Zd ZdZdS )ÚBiasedAngleg      ð?N)rU   rÄ   rÅ   r¦  r’   r2   r0   r°  r°    s   € € € € € ð €D€D€Dr2   r°  c                   ób   — e Zd ZdZd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	dS )	ÚVersionrâ   c                 ó.   — |                      ¦   «         }|S r,   rä   )r   r�   rˆ   rš   r­   s        r0   r†   zVersion.read#  s   € Ø—’Ñ!Ô!ˆØˆr2   Nc                 óN   — t          |¦  «        }|                     |¦  «         d S r,   )Úfi2verì   r±   s         r0   r©   zVersion.write'  s'   € Ý�e‘”ˆØ×Ò˜ÑÔÐÐÐr2   c                 ó    — t          | ¦  «        S r,   )Úve2firË   s    r0   rÏ   zVersion.fromString+  r{  r2   c                 ó   — d| z  S )Nú0x%08xr’   rË   s    r0   rÌ   zVersion.toString/  r  r2   c                 ó"   — t          | d¦  «        S )Nr›  )r’  )Úvs    r0   Ú	fromFloatzVersion.fromFloat3  s   € å�Q˜‰|Œ|Ðr2   r,   )
rU   rÄ   rÅ   rŸ   r†   r©   rÕ   rÏ   rÌ   r¼  r’   r2   r0   r²  r²     s�   € € € € € Ø€Jðð ð ð ð  ð  ð  ð ðð ñ „\ðð ð ð  ñ „\ð ð ðð ñ „\ðð ð r2   r²  c                   ó$   — e Zd ZdZdZd„ Zdd„ZdS )ÚChar64z›An ASCII string with up to 64 characters.

    Unused character positions are filled with 0x00 bytes.
    Used in Apple AAT fonts in the `gcid` table.
    é@   c                 ó  — |                      | j        ¦  «        }|                     d¦  «        }|dk    r
|d |…         }t          |dd¬¦  «        }|t          |dd¬¦  «        k    rt                               d|z  ¦  «         |S )Nó    r   ÚasciiÚreplace©ÚencodingÚerrorsÚignorez%replaced non-ASCII characters in "%s")ÚreadDatarŸ   Úfindr   rk  rl  )r   r�   rˆ   rš   ÚdataÚzeroPosÚss          r0   r†   zChar64.readA  s‡   € Ø�Š˜tœÑ/Ô/ˆØ—)’)˜EÑ"Ô"ˆØ�aŠ<ˆ<Ø˜˜˜”>ˆDÝ�$ °Ð;Ñ;Ô;ˆØ•�d W°XÐ>Ñ>Ô>Ò>Ð>Ý�KŠKÐ?À!ÑCÑDÔDÐDØˆr2   Nc                 óf  — t          |dd¬¦  «        }|t          |dd¬¦  «        k    rt                               d|z  ¦  «         t          |¦  «        | j        k    r$t                               d|| j        fz  ¦  «         |d| j        z  z   d | j        …         }|                     |¦  «         d S )NrÂ  rÃ  rÄ  rÇ  z&replacing non-ASCII characters in "%s"z$truncating overlong "%s" to %d bytesrÁ  )r   rk  rl  ÚlenrŸ   Ú	writeData)r   r¬   rˆ   rš   r­   r²   rÊ  s          r0   r©   zChar64.writeK  sº   € Ý�u w°yÐAÑAÔAˆØ•7˜5¨7¸8ÐDÑDÔDÒDÐDÝ�KŠKÐ@À5ÑHÑIÔIÐIÝˆt‰9Œ9�t”Ò&Ð&Ý�KŠKØ6¸%ÀÄÐ9QÑQñô ð ð �u˜tœÑ.Ñ.Ð0A°$´/Ð0AÔBˆØ×Ò˜ÑÔÐÐÐr2   r,   )rU   rÄ   rÅ   rÆ   rŸ   r†   r©   r’   r2   r0   r¾  r¾  8  sH   € € € € € ðð ð €Jðð ð ð	ð 	ð 	ð 	ð 	ð 	r2   r¾  c                   ó4   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ ZdS )	rO   c                 óD   — | j         o| j                              |¦  «        S r,   )rQ   r–   r¡   s     r0   r–   zStruct.getRecordSizeX  s   € ØŒÐH 4¤?×#@Ò#@ÀÑ#HÔ#HÐHr2   c                 óZ   — |                       ¦   «         }|                     ||¦  «         |S r,   )rQ   Ú	decompile)r   r�   rˆ   rš   Útables        r0   r†   zStruct.read[  s*   € Ø—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Øˆr2   Nc                 ó2   — |                      ||¦  «         d S r,   ©rz   r±   s         r0   r©   zStruct.write`  s   € Ø�Š�f˜dÑ#Ô#Ð#Ð#Ð#r2   c                 ó¤   — |€4|r0|                      ||dgz   ¦  «         |                     ¦   «          d S d S |                     ||||¬¦  «         d S )N)Úemptyr   )r]   )rÒ   rÓ   ÚtoXMLr¹   s         r0   r»   zStruct.xmlWritec  sk   € Øˆ=Øð ð ×#Ò# D¨%°<°.Ñ*@ÑAÔAÐAØ×!Ò!Ñ#Ô#Ð#Ð#Ð#à�à�KŠK˜	 4¨°TˆKÑ:Ô:Ð:Ð:Ð:r2   c                 ó*  — d|v rt          |d         ¦  «        rd S |                      ¦   «         }|                     d¦  «        }|�t          |¦  «        |_        t          |d¦  «         }|r’d}|                     ¦   «         D ]{}|j        rrd}t          |d¦  «        si |_        |j        }	|j	        |	vsJ |j	        |	f¦   «         ‚t          ||j	        d ¦  «         t          |j        |j	        ¦  «        |	|j	        <   Œ||D ]6}
t          |
t          ¦  «        r|
\  }}}|                     ||||¦  «         Œ6Œ7|                     t#          |dd ¦  «        ¬¦  «         |r3|r1|                     ¦   «         D ]}|j        r|j        }	|	|j	        = |	s|`Œ|S )NrØ  ÚFormatÚpostReadFTÚ_propagator)Ú
propagator)r   rQ   rR   rÀ   rÛ  r    ÚgetConvertersr}   rÝ  r]   Úsetattrr   Ú__dict__r-   r.   ÚfromXMLÚpopulateDefaultsr‡  )r   rµ   r¶   rˆ   rÔ  rÛ  Ú
noPostReadÚcleanPropagationrc   rÞ  Úelementr]   s               r0   r·   zStruct.xmlReadp  sã  € Ø�eÐÐ¥¨¨w¬Ñ 8Ô 8ÐØ�4Ø—’Ñ!Ô!ˆØ—’˜8Ñ$Ô$ˆØÐÝ˜v™;œ;ˆEŒLå  ¨
Ñ3Ô3Ð3ˆ
Øð 	Và$ÐØ×+Ò+Ñ-Ô-ð Vð V�ØÔ$ð VØ'+Ð$Ý" 4¨Ñ7Ô7ð .Ø+-˜Ô(Ø!%Ô!1�JØœ9¨JÐ6Ð6Ð6¸¼ÀJÐ8OÑ6Ô6Ð6Ý˜E 4¤9¨dÑ3Ô3Ð3Ý,:¸5¼>È4Ì9Ñ,UÔ,U�J˜tœyÑ)øàð 	ð 	ˆGÝ˜'¥5Ñ)Ô)ð Ø'.Ñ$��e˜WØ—’˜d E¨7°DÑ9Ô9Ð9Ð9àà×Ò­'°$¸ÀtÑ*LÔ*LÐÑMÔMÐMàð 	1Øð 1Ø!×/Ò/Ñ1Ô1ð 1ð 1�DØÔ(ð 1Ø%)Ô%5˜
Ø& t¤yÐ1Ø)ð 1Ø $Ð 0øàˆr2   c                 ó0   — dt          | j        ¦  «        z   S )Nz
Struct of )ÚreprrQ   )r   s    r0   Ú__repr__zStruct.__repr__š  s   € Ø�d 4¤?Ñ3Ô3Ñ3Ð3r2   r,   )	rU   rÄ   rÅ   r–   r†   r©   r»   r·   ré  r’   r2   r0   rO   rO   W  sw   € € € € € ðIð Ið Iðð ð ð
$ð $ð $ð $ð;ð ;ð ;ð(ð (ð (ðT4ð 4ð 4ð 4ð 4r2   rO   c                   ó   — e Zd Zd„ Zdd„ZdS )rM   c                 ó¢   — |j         }|                      ¦   «         }|                     ||¦  «         |                     ||j        z   ¦  «         |S r,   )r‰   rQ   rÓ  r…   r7   )r   r�   rˆ   rš   r‰   rÔ  s         r0   r†   zStructWithLength.readŸ  sK   € ØŒjˆØ—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Ø�Š�C˜%Ô,Ñ,Ñ-Ô-Ð-Øˆr2   Nc                 óR  — t          |                     ¦   «         ¦  «        D ]\  }}|j        dk    r nŒt          |j        ¦  «        |z   }t          |t          ¦  «        r|dz  }ddddœ|j                 }	|                     ¦   «         }
|	|_	        | 
                    ||¦  «         |                     ¦   «         |
z
  }|                     ¦   «         }|                     ||||¦  «         |j        |         dd |j        …         k    sJ ‚|                     ¦   «         |j        |<   d S )Nr7   r   éÞ   i­Þ  ì   ï>[= )r   r  râ   ó   Þ­¾ï)r¨   rß  r]   rÎ  Úitemsr-   r   rŸ   ÚgetDataLengthr7   rz   ÚgetSubWriterr©   Ú
getAllData)r   r¬   rˆ   rš   r­   r²   Ú	convIndexrc   ÚlengthIndexÚdeadbeefÚbeforeÚlengthÚlengthWriters                r0   r©   zStructWithLength.write¦  s7  € Ý(¨×)<Ò)<Ñ)>Ô)>Ñ?Ô?ð 	ð 	‰OˆI�tØŒy˜NÒ*Ð*Ø�ð +å˜&œ,Ñ'Ô'¨)Ñ3ˆÝ�eÕ5Ñ6Ô6ð 	Ø˜1ÑˆKØ ¨:Ð6Ð6°t´ÔGˆà×%Ò%Ñ'Ô'ˆØ%ˆÔØ�Š�f˜dÑ#Ô#Ð#Ø×%Ò%Ñ'Ô'¨&Ñ0ˆØ×*Ò*Ñ,Ô,ˆØ�
Š
�<  y°&Ñ9Ô9Ð9ØŒ|˜KÔ(Ð,?Ð@QÀ$Ä/Ð@QÔ,RÒRÐRÐRÐRØ$0×$;Ò$;Ñ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r2   r,   ©rU   rÄ   rÅ   r†   r©   r’   r2   r0   rM   rM   ž  s7   € € € € € ðð ð ð>ð >ð >ð >ð >ð >r2   rM   c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )rT   r  c                 ó*   — |                      ¦   «         S r,   r  r¡   s     r0   Ú
readOffsetzTable.readOffset¼  r  r2   c                 ó0   — |                      d¦  «         d S rÞ   r  ©r   r¬   s     r0   ÚwriteNullOffsetzTable.writeNullOffset¿  ó   € Ø×Ò˜1ÑÔÐÐÐr2   c                 óê   — |                       |¦  «        }|dk    rd S |                      ¦   «         }|                     |¦  «        }|j        r||_        ||_        n|                     ||¦  «         |S rÞ   )rý  rQ   ÚgetSubReaderr•   r�   rˆ   rÓ  )r   r�   rˆ   rš   ÚoffsetrÔ  s         r0   r†   z
Table.readÂ  sv   € Ø—’ Ñ(Ô(ˆØ�QŠ;ˆ;Ø�4Ø—’Ñ!Ô!ˆØ×$Ò$ VÑ,Ô,ˆØŒ9ð 	*Ø!ˆEŒLØˆEŒJˆJà�OŠO˜F DÑ)Ô)Ð)Øˆr2   Nc                 óî   — |€|                       |¦  «         d S |                     ¦   «         }| j        |_        |�||_        |                     || j        ¬¦  «         |                     ||¦  «         d S )N©Ú
offsetSize)r   rò  r]   r²   ÚwriteSubTablerŸ   rz   )r   r¬   rˆ   rš   r­   r²   Ú	subWriters          r0   r©   zTable.writeÏ  s~   € Øˆ=Ø× Ò  Ñ(Ô(Ð(Ð(Ð(à×+Ò+Ñ-Ô-ˆIØ!œYˆIŒNØÐ&Ø(3�	Ô%Ø× Ò  °t´Ð ÑGÔGÐGØ�MŠM˜) TÑ*Ô*Ð*Ð*Ð*r2   r,   )rU   rÄ   rÅ   rŸ   rý  r   r†   r©   r’   r2   r0   rT   rT   ¹  sZ   € € € € € Ø€Jð#ð #ð #ðð ð ðð ð ð	+ð 	+ð 	+ð 	+ð 	+ð 	+r2   rT   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚLTablerâ   c                 ó*   — |                      ¦   «         S r,   r÷   r¡   s     r0   rý  zLTable.readOffsetÞ  rù   r2   c                 ó0   — |                      d¦  «         d S rÞ   rþ   rÿ  s     r0   r   zLTable.writeNullOffsetá  s   € Ø×Ò˜!ÑÔÐÐÐr2   N©rU   rÄ   rÅ   rŸ   rý  r   r’   r2   r0   r  r  Û  s7   € € € € € Ø€Jð"ð "ð "ðð ð ð ð r2   r  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTable24r:  c                 ó*   — |                      ¦   «         S r,   r<  r¡   s     r0   rý  zTable24.readOffseté  r  r2   c                 ó0   — |                      d¦  «         d S rÞ   r?  rÿ  s     r0   r   zTable24.writeNullOffsetì  r  r2   Nr  r’   r2   r0   r  r  æ  s7   € € € € € Ø€Jð#ð #ð #ðð ð ð ð r2   r  c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )r=   c                 óv   — | j         |         |         }|                      | j        | j        | j        |¦  «        S r,   ©r   r¨  r]   r^   r_   ©r   Ú	tableTypeÚ
lookupTyperQ   s       r0   ÚgetConverterzSubStruct.getConverterô  ó2   € ØÔ% iÔ0°Ô<ˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr2   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r,   )r¥  r=   r»   ©r   rº   rˆ   r­   r]   rµ   r¨  s         €r0   r»   zSubStruct.xmlWriteø  s/   ø€ Ý�i˜ÑÔ×'Ò'¨	°4¸ÀÀeÑLÔLÐLÐLÐLr2   ©rU   rÄ   rÅ   r  r»   r­  r®  s   @r0   r=   r=   ó  sS   ø€ € € € € ðLð Lð LðMð Mð Mð Mð Mð Mð Mð Mð Mr2   r=   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )r;   c                 óv   — | j         |         |         }|                      | j        | j        | j        |¦  «        S r,   r  r  s       r0   r  zSubTable.getConverterý  r  r2   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r,   )r¥  r;   r»   r  s         €r0   r»   zSubTable.xmlWrite  s/   ø€ Ý�h˜ÑÔ×&Ò& y°$¸¸tÀUÑKÔKÐKÐKÐKr2   r  r®  s   @r0   r;   r;   ü  sS   ø€ € € € € ðLð Lð LðLð Lð Lð Lð Lð Lð Lð Lð Lr2   r;   c                   ó   — e Zd Zdd„ZdS )r<   Nc                 óR   — d|_         t                               | |||||¦  «         d S )NT)Ú	ExtensionrT   r©   r±   s         r0   r©   zExtSubTable.write  s,   € ØˆÔÝ�Š�D˜& $¨	°5¸+ÑFÔFÐFÐFÐFr2   r,   )rU   rÄ   rÅ   r©   r’   r2   r0   r<   r<     s.   € € € € € ðGð Gð Gð Gð Gð Gr2   r<   c                   ó   — e Zd Zd„ ZdS )r>   c                 ó�   — | j                              || j        ¦  «        }|                      | j        | j        | j        |¦  «        S r,   )rG   rR   rV   r¨  r]   r^   r_   )r   Ú
featureTagrQ   s      r0   r  zFeatureParams.getConverter  s;   € ØÔ+×/Ò/°
¸DÔ<UÑVÔVˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr2   N)rU   rÄ   rÅ   r  r’   r2   r0   r>   r>     s(   € € € € € ðLð Lð Lð Lð Lr2   r>   c                   ó.   — e Zd ZdZdddœd„Zd„ Zdd„ZdS )	r4   r  Nrh   rB   c                óv   — t                                | |||||¬¦  «         d|d         dk    rdndz   | _        d S )NrB   r4   éÿÿÿÿÚ2Ú1)rg   r€   Úwhichr~   s         r0   r€   zValueFormat.__init__  sN   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð #¨T°"¬X¸ª_¨_ c cÀ#ÑFˆŒ
ˆ
ˆ
r2   c                 ó\   — |                      ¦   «         }t          |¦  «        || j        <   |S r,   )r  r   r,  ©r   r�   rˆ   rš   Úformats        r0   r†   zValueFormat.read  s,   € Ø×"Ò"Ñ$Ô$ˆÝ/°Ñ7Ô7ˆˆtŒzÑØˆr2   c                 ó^   — |                      |¦  «         t          |¦  «        || j        <   d S r,   )r   r   r,  )r   r¬   rˆ   rš   r/  r²   s         r0   r©   zValueFormat.write  s0   € Ø×Ò˜6Ñ"Ô"Ð"Ý/°Ñ7Ô7ˆˆtŒzÑÐÐr2   r,   )rU   rÄ   rÅ   rŸ   r€   r†   r©   r’   r2   r0   r4   r4     sb   € € € € € Ø€JðGÈ"ð Gð Gð Gð Gð Gðð ð ð
8ð 8ð 8ð 8ð 8ð 8r2   r4   c                   ó.   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ ZdS )ÚValueRecordc                 ó<   — dt          || j                 ¦  «        z  S ©Nr  )rÎ  r,  r¡   s     r0   r–   zValueRecord.getRecordSize%  s   € Ø•3�v˜dœjÔ)Ñ*Ô*Ñ*Ð*r2   c                 óD   — || j                                       ||¦  «        S r,   )r,  ÚreadValueRecordr¥   s       r0   r†   zValueRecord.read(  s   € Ø�d”jÔ!×1Ò1°&¸$Ñ?Ô?Ð?r2   Nc                 óJ   — || j                                       |||¦  «         d S r,   )r,  ÚwriteValueRecordr±   s         r0   r©   zValueRecord.write+  s'   € ØˆtŒzÔ×+Ò+¨F°D¸%Ñ@Ô@Ð@Ð@Ð@r2   c                 óH   — |€d S |                      ||| j        |¦  «         d S r,   )rÙ  r]   r¹   s         r0   r»   zValueRecord.xmlWrite.  s,   € Øˆ=ØˆDà�KŠK˜	 4¨¬°EÑ:Ô:Ð:Ð:Ð:r2   c                 óV   — ddl m}  |¦   «         }|                     d |||¦  «         |S )Nr   )r2  )ÚotBaser2  râ  )r   rµ   r¶   rˆ   r2  r­   s         r0   r·   zValueRecord.xmlRead4  s<   € Ø'Ð'Ð'Ð'Ð'Ð'à�‘”ˆØ�Š�d˜E 7¨DÑ1Ô1Ð1Øˆr2   r,   )rU   rÄ   rÅ   r–   r†   r©   r»   r·   r’   r2   r0   r2  r2  $  sk   € € € € € ð+ð +ð +ð@ð @ð @ðAð Að Að Að;ð ;ð ;ðð ð ð ð r2   r2  c                   óœ   — e Zd ZdZddœd„Zd„ Zdd„Zed„ ¦   «         Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	AATLookupr€  rh   rB   c                óò   — t                                | |||||¬¦  «         t          | j        t          ¦  «        r|                      dd d ¬¦  «        | _        d S t          dd d | j        ¬¦  «        | _        d S )NrB   ÚValue)r]   r^   r_   )r]   r^   r_   rQ   )rg   r€   Ú
issubclassrQ   rÉ   Ú	converterrT   r~   s         r0   r€   zAATLookup.__init__?  s„   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ �d”o¥{Ñ3Ô3ð 	Ø!Ÿ_š_°'À$ÈD˜_ÑQÔQˆDŒNˆNˆNå"Ø T¨tÀÄðñ ô ˆDŒNˆNˆNr2   c                 ó\  — |                      ¦   «         }|dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S J d|z  ¦   «         ‚)Nr   r  râ   é   r‚   Fzunsupported lookup format: %d)r  ÚreadFormat0ÚreadFormat2ÚreadFormat4ÚreadFormat6ÚreadFormat8r.  s        r0   r†   zAATLookup.readJ  sÁ   € Ø×"Ò"Ñ$Ô$ˆØ�QŠ;ˆ;Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1àBÐ9¸FÑBÑBÔB�5r2   Nc                 ó.  ‡— t          t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        ¦  «        }t          t          t          d |                      |‰|¦  «        |                      |‰|¦  «        |                      |‰|¦  «        |                      |‰|¦  «        g¦  «        ¦  «        ¦  «        }|d         \  }}	}
|                     ¦   «         } |
¦   «          |                     ¦   «         |z
  }||k    sJ d|	||fz  ¦   «         ‚d S )Nc                 óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r’   ©r`  )r“   ÚglyphÚvalrˆ   s      €r0   ú
<listcomp>z#AATLookup.write.<locals>.<listcomp>[  s.   ø€ ÐRÐRÐR±j°e¸S�T—_’_ UÑ+Ô+¨SÐ1ÐRÐRÐRr2   r   z;AATLookup format %d claimed to write %d bytes, but wrote %d)	ÚlistÚsortedrð  ÚfilterÚbuildFormat0ÚbuildFormat2ÚbuildFormat6ÚbuildFormat8rñ  )r   r¬   rˆ   rš   r­   r²   rS   ÚformatsÚdataSizeÚlookupFormatÚwriteMethodr‰   Ú
actualSizes     `          r0   r©   zAATLookup.writeY  s;  ø€ ÝÝÐRÐRÐRÐRÀEÇKÂKÁMÄMÐRÑRÔRÑSÔSñ
ô 
ˆõ ÝÝØà×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?ð	ñô ñ
ô 
ñ
ô 
ˆð /6°a¬jÑ+ˆ�, Ø×"Ò"Ñ$Ô$ˆØˆ‰ŒˆØ×)Ò)Ñ+Ô+¨cÑ1ˆ
à˜(Ò"Ð"Ð"ØHØØØðL
ñ 
ñ #Ô"Ð"Ð"Ð"r2   c                 ó  — |                       |¦  «         |                       |¦  «         t          ||¬¦  «        \  }}}|                       |¦  «         |                       |¦  «         |                       |¦  «         d S )N)ÚnÚitemSize)r   r   )r¬   ÚnumUnitsÚunitSizeÚsearchRangeÚentrySelectorÚ
rangeShifts         r0   ÚwriteBinSearchHeaderzAATLookup.writeBinSearchHeadery  sŽ   € à×Ò˜8Ñ$Ô$Ð$Ø×Ò˜8Ñ$Ô$Ð$Ý1?Ø ð2
ñ 2
ô 2
Ñ.ˆ�] Jð 	×Ò˜;Ñ'Ô'Ð'Ø×Ò˜=Ñ)Ô)Ð)Ø×Ò˜:Ñ&Ô&Ð&Ð&Ð&r2   c                 ó°   ‡ ‡‡‡— t          ‰                     ¦   «         ¦  «        }t          ‰¦  «        |k    rd S ‰ j        j        }d||z  z   dˆˆ ˆˆfd„fS )Nr  r   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r,   )ÚwriteFormat0©rˆ   r   rS   r¬   s   €€€€r0   r1   z(AATLookup.buildFormat0.<locals>.<lambda>Œ  ó   ø€ �D×%Ò% f¨d°FÑ;Ô;€ r2   )rÎ  ÚgetGlyphOrderrA  rŸ   )r   r¬   rˆ   rS   Ú	numGlyphsÚ	valueSizes   ````  r0   rR  zAATLookup.buildFormat0„  sn   øøøø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	Ýˆv‰;Œ;˜)Ò#Ð#Ø�4Ø”NÔ-ˆ	à�	˜IÑ%Ñ%ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r2   c                 ó~   — |                      d¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   ©rš   r­   r²   )r   rA  r©   )r   r¬   rˆ   rS   ÚglyphID_r­   s         r0   rf  zAATLookup.writeFormat0�  sb   € Ø×Ò˜1ÑÔÐØ%ð 	ð 	‰OˆH�eØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r2   c                 óP  ‡ ‡‡‡— |d         \  }}|}g Š|dd …         D ]5\  }}||dz   k    s||k    r‰                      |||f¦  «         |x}}|}Œ3|}Œ6‰                      |||f¦  «         ‰ j        j        }	t          ‰¦  «        dz   |	dz   }}
d‰ j        z   |
|z  z   dˆˆˆ ˆfd„fS )Nr   r   râ   r  c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r,   )ÚwriteFormat2)rˆ   Úsegmentsr   r¬   s   €€€€r0   r1   z(AATLookup.buildFormat2.<locals>.<lambda>§  s   ø€ �D×%Ò% f¨d°HÑ=Ô=€ r2   )rW   rA  rŸ   rÎ  ÚBIN_SEARCH_HEADER_SIZE)r   r¬   rˆ   rS   ÚsegStartÚsegValueÚsegEndÚglyphIDÚcurValuerk  r^  r_  rr  s   ```         @r0   rS  zAATLookup.buildFormat2–  sö   øøøø€ Ø# AœYÑˆ�(ØˆØˆØ!'¨¨¨¤ð 	!ð 	!ÑˆG�XØ˜& 1™*Ò$Ð$¨°HÒ(<Ð(<Ø—’ ¨6°8Ð <Ñ=Ô=Ð=Ø$+Ð+�˜6Ø#��à ��Ø�Š˜ 6¨8Ð4Ñ5Ô5Ð5Ø”NÔ-ˆ	Ý  ™]œ]¨QÑ.°	¸A±�(ˆà�Ô+Ñ+¨h¸Ñ.AÑAØØ=Ð=Ð=Ð=Ð=Ð=Ð=ð
ð 	
r2   c                 óÆ  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]O\  }}}	|                      |¦  «         |                      |¦  «         | j                             ||d |	d ¬¦  «         ŒP|                      d¦  «         |                      d¦  «         |                     d|z  ¦  «         d S )Nr  râ   rm  rh  rÁ  ©r   rA  rŸ   rÎ  rc  r©   rÏ  )
r   r¬   rˆ   rr  rk  r^  r_  Ú
firstGlyphÚ	lastGlyphr­   s
             r0   rq  zAATLookup.writeFormat2ª  s  € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™]œ]¨I¸©M�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø,4ð 	ð 	Ñ(ˆJ˜	 5Ø×Ò˜yÑ)Ô)Ð)Ø×Ò˜zÑ*Ô*Ð*ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r2   c                 ó‚   ‡ ‡‡‡— ‰ j         j        }t          ‰¦  «        |dz   }}d‰ j        z   |dz   |z  z   dˆˆ ˆˆfd„fS )Nr  r   rC  c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r,   )ÚwriteFormat6rg  s   €€€€r0   r1   z(AATLookup.buildFormat6.<locals>.<lambda>¿  rh  r2   )rA  rŸ   rÎ  rs  )r   r¬   rˆ   rS   rk  r^  r_  s   ````   r0   rT  zAATLookup.buildFormat6¹  s^   øøøø€ Ø”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆà�Ô+Ñ+¨x¸!©|¸xÑ.GÑGØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r2   c                 óp  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]9\  }}|                      |¦  «         | j                             ||d |d ¬¦  «         Œ:|                      d¦  «         |                     d|z  ¦  «         d S )NrC  r  rm  rh  rÁ  rz  )	r   r¬   rˆ   rS   rk  r^  r_  rw  r­   s	            r0   r  zAATLookup.writeFormat6Â  sÖ   € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø$ð 	ð 	‰NˆG�UØ×Ò˜wÑ'Ô'Ð'ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r2   c                 óÌ   ‡ ‡‡‡— ‰d         d         ‰d         d         }}t          ‰¦  «        ||z
  dz   k    rd S ‰ j        j        }dt          ‰¦  «        |z  z   dˆˆ ˆˆfd„fS )Nr   r)  r   rC  r‚   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r,   )ÚwriteFormat8rg  s   €€€€r0   r1   z(AATLookup.buildFormat8.<locals>.<lambda>×  rh  r2   )rÎ  rA  rŸ   )r   r¬   rˆ   rS   Ú
minGlyphIDÚ
maxGlyphIDrk  s   ````   r0   rU  zAATLookup.buildFormat8Ï  s~   øøøø€ Ø!'¨¤¨1¤¨v°b¬z¸!¬}�Jˆ
Ýˆv‰;Œ;˜* zÑ1°AÑ5Ò5Ð5Ø�4Ø”NÔ-ˆ	à•�F‘”˜iÑ'Ñ'ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r2   c                 ó  — |d         d         }|                      d¦  «         |                      |¦  «         |                      t          |¦  «        ¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   r‚   rm  )r   rÎ  rA  r©   )r   r¬   rˆ   rS   ÚfirstGlyphIDÚ_r­   s          r0   rƒ  zAATLookup.writeFormat8Ú  s�   € Ø˜a”y ”|ˆØ×Ò˜1ÑÔÐØ×Ò˜<Ñ(Ô(Ð(Ø×Ò�3˜v™;œ;Ñ'Ô'Ð'Øð 	ð 	‰HˆAˆuØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r2   c                 ó¸   ‡— t          ‰                     ¦   «         ¦  «        }| j                             |‰d |¬¦  «        }ˆfd„t	          |¦  «        D ¦   «         S )N©rš   r›   c                 óB   •— i | ]\  }}‰                      |¦  «        |“ŒS r’   ©rZ  )r“   Úkr­   rˆ   s      €r0   ú
<dictcomp>z)AATLookup.readFormat0.<locals>.<dictcomp>ç  s-   ø€ ÐLÐLÐL±°°5�×!Ò! !Ñ$Ô$ eÐLÐLÐLr2   )rÎ  ri  rA  r�   r¨   )r   r�   rˆ   rj  rÊ  s     `  r0   rD  zAATLookup.readFormat0ä  sZ   ø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	ØŒ~×'Ò'¨°ÀÈIÐ'ÑVÔVˆØLÐLÐLÐL½IÀd¹O¼OÐLÑLÔLÐLr2   c                 óú  — i }|j         dz
  }|                     ¦   «         |                     ¦   «         }}|d| j        j        z   k    s
J |¦   «         ‚t	          |¦  «        D ]™}|                     |||z  z   dz   ¦  «         |                     ¦   «         }|                     ¦   «         }	| j                             ||d ¬¦  «        }
|dk    r.t	          |	|dz   ¦  «        D ]}|
||                     |¦  «        <   ŒŒš|S )Nr  râ   é   ©rš   rh  r   ©r‰   r  rA  rŸ   r˜   r…   r†   rZ  )r   r�   rˆ   Úmappingr‰   r_  r^  r‡   ÚlastÚfirstr­   r�  s               r0   rE  zAATLookup.readFormat2é  s  € ØˆØŒj˜1‰nˆØ#×.Ò.Ñ0Ô0°&×2CÒ2CÑ2EÔ2E�(ˆØ˜1˜tœ~Ô8Ñ8Ò8Ð8Ð8¸(Ñ8Ô8Ð8Ý�x‘”ð 	:ð 	:ˆAØ�KŠK˜˜a (™lÑ*¨RÑ/Ñ0Ô0Ð0Ø×$Ò$Ñ&Ô&ˆDØ×%Ò%Ñ'Ô'ˆEØ”N×'Ò'¨°ÀÐ'ÑEÔEˆEØ�vŠ~ˆ~Ý˜u d¨Q¡hÑ/Ô/ð :ð :�AØ49�G˜D×-Ò-¨aÑ0Ô0Ñ1Ð1øØˆr2   c                 óp  — i }|j         dz
  }|                     ¦   «         }|dk    s
J |¦   «         ‚t          |                     ¦   «         ¦  «        D ]ã}|                     |||z  z   dz   ¦  «         |                     ¦   «         }|                     ¦   «         }|                     ¦   «         }	|dk    r�|                     d¦  «        }
|
                     ||	z   ¦  «         | j                             |
|d ||z
  dz   ¬¦  «        }t          |¦  «        D ] \  }}|||                     ||z   ¦  «        <   Œ!Œä|S )Nr  rC  r�  rh  r   r   rŠ  )	r‰   r  r˜   r…   r  rA  r�   r¨   rZ  )r   r�   rˆ   r“  r‰   r_  r‡   r”  r•  r  Ú
dataReaderrÊ  r�  r»  s                 r0   rF  zAATLookup.readFormat4ø  sL  € ØˆØŒj˜1‰nˆØ×$Ò$Ñ&Ô&ˆØ˜1Š}ˆ}ˆ}˜h‰}Œ}ˆ}Ý�v×(Ò(Ñ*Ô*Ñ+Ô+ð 	>ð 	>ˆAØ�KŠK˜˜a (™lÑ*¨RÑ/Ñ0Ô0Ð0Ø×$Ò$Ñ&Ô&ˆDØ×%Ò%Ñ'Ô'ˆEØ×&Ò&Ñ(Ô(ˆFØ�vŠ~ˆ~Ø#×0Ò0°Ñ3Ô3�
Ø—’  f¡Ñ-Ô-Ð-Ø”~×/Ò/Ø °¸DÀ5¹LÈ1Ñ<Lð 0ñ ô �õ & d™OœOð >ð >‘D�A�qØ<=�G˜D×-Ò-¨e°a©iÑ8Ô8Ñ9Ð9øØˆr2   c                 ó¢  — i }|j         dz
  }|                     ¦   «         }|d| j        j        z   k    s
J |¦   «         ‚t	          |                     ¦   «         ¦  «        D ]o}|                     |||z  z   dz   ¦  «         |                     ¦   «         }| j                             ||d ¬¦  «        }|dk    r|||                     |¦  «        <   Œp|S )Nr  r�  r‘  rh  r’  )	r   r�   rˆ   r“  r‰   r_  r‡   rw  r­   s	            r0   rG  zAATLookup.readFormat6  sß   € ØˆØŒj˜1‰nˆØ×$Ò$Ñ&Ô&ˆØ˜1˜tœ~Ô8Ñ8Ò8Ð8Ð8¸(Ñ8Ô8Ð8Ý�v×(Ò(Ñ*Ô*Ñ+Ô+ð 	<ð 	<ˆAØ�KŠK˜˜a (™lÑ*¨RÑ/Ñ0Ô0Ð0Ø×'Ò'Ñ)Ô)ˆGØ”N×'Ò'¨°ÀÐ'ÑEÔEˆEØ˜&Ò Ð Ø6;�˜×)Ò)¨'Ñ2Ô2Ñ3øØˆr2   c                 óÊ   ‡‡— |                      ¦   «         Š|                      ¦   «         }| j                             |‰d |¬¦  «        }ˆˆfd„t          |¦  «        D ¦   «         S )NrŠ  c                 óH   •— i | ]\  }}‰                      ‰|z   ¦  «        |“ŒS r’   rŒ  )r“   r�  r­   r•  rˆ   s      €€r0   rŽ  z)AATLookup.readFormat8.<locals>.<dictcomp>  s1   ø€ ÐVÐVÐV¹
¸¸E�×!Ò! %¨!¡)Ñ,Ô,¨eÐVÐVÐVr2   )r  rA  r�   r¨   )r   r�   rˆ   r›   rÊ  r•  s     `  @r0   rH  zAATLookup.readFormat8  sh   øø€ Ø×!Ò!Ñ#Ô#ˆØ×!Ò!Ñ#Ô#ˆØŒ~×'Ò'¨°ÀÈEÐ'ÑRÔRˆØVÐVÐVÐVÐVÅiÐPTÁoÄoÐVÑVÔVÐVr2   c                 ó    — i }|D ]H}t          |t          ¦  «        r1|\  }}}|dk    r%| j                             |||¦  «        ||d         <   ŒI|S )NÚLookuprL  )r-   r.   rA  r·   )	r   rµ   r¶   rˆ   r­   ræ  r]   ÚaÚ
eltContents	            r0   r·   zAATLookup.xmlRead  sj   € ØˆØð 	Tð 	TˆGÝ˜'¥5Ñ)Ô)ð TØ&-Ñ#��a˜Ø˜8Ò#Ð#Ø(,¬×(>Ò(>¸qÀ*ÈdÑ(SÔ(S�E˜!˜Gœ*Ñ%øØˆr2   c           	      ó>  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]'\  }}| j                             |||dd|fg¬¦  «         Œ(|                     |¦  «         |                     ¦   «          d S )Nrœ  rL  )r­   r]   rµ   )ÚbegintagrÓ   rP  rð  rA  r»   Úendtag)r   rº   rˆ   r­   r]   rµ   rL  s          r0   r»   zAATLookup.xmlWrite(  s²   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ" 5§;¢;¡=¤=Ñ1Ô1ð 	ð 	‰LˆE�5ØŒN×#Ò#Ø˜4 u°8ÀWÈeÐDTÐCUð $ñ ô ð ð ð 	×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr2   r,   )rU   rÄ   rÅ   rs  r€   r†   r©   rÕ   rc  rR  rf  rS  rq  rT  r  rU  rƒ  rD  rE  rF  rG  rH  r·   r»   r’   r2   r0   r=  r=  <  s_  € € € € € ØÐàEGð 	ð 	ð 	ð 	ð 	ðCð Cð Cð
ð 
ð 
ð 
ð@ ð'ð 'ñ „\ð'ð	
ð 	
ð 	
ðð ð ð
ð 
ð 
ð(.ð .ð .ð
ð 
ð 
ð.ð .ð .ð	
ð 	
ð 	
ðð ð ðMð Mð Mð
ð ð ðð ð ð(ð ð ðWð Wð Wðð ð ðð ð ð ð r2   r=  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚAATLookupWithDataOffsetc                 ó¢  — |                      ¦   «         }|                      ¦   «         }|                     |¦  «        }t          dd d t          ¦  «        }|                     |||¦  «        }i }	|                     ¦   «         D ]L\  }
}|                     ||z   ¦  «        }|                      ¦   «         }|                     ||¦  «         ||	|
<   ŒM|	S ©NÚDataOffsets)rø   r  r=  r  r†   rð  rQ   rÓ  )r   r�   rˆ   rš   ÚlookupOffsetÚ
dataOffsetÚlookupReaderÚlookupÚoffsetsÚresultrL  r  r—  Úitems                 r0   r†   zAATLookupWithDataOffset.read;  sÊ   € Ø×'Ò'Ñ)Ô)ˆØ×%Ò%Ñ'Ô'ˆ
Ø×*Ò*¨<Ñ8Ô8ˆÝ˜=¨$°µfÑ=Ô=ˆØ—+’+˜l¨D°)Ñ<Ô<ˆØˆØ$Ÿ]š]™_œ_ð 	!ð 	!‰MˆE�6Ø×,Ò,¨V°jÑ-@ÑAÔAˆJØ—?’?Ñ$Ô$ˆDØ�NŠN˜: tÑ,Ô,Ð,Ø ˆF�5‰MˆMØˆr2   Nc                 ó¢  — i i d}}}g }	t          ||j        ¬¦  «        D ]�}
t          ¦   «         }||
                              ||¦  «         |                     ¦   «         }|                     |d ¦  «        }|d k    r.|}|t          |¦  «        z   }|||<   |	                     |¦  «         |||
<   Œ�|                     ¦   «         }t          dd d t          ¦  «        }|                     ||||d ¦  «         |                     ¦   «         }|                     |d¬¦  «         |                     |d¬¦  «         |	D ]}|                     |¦  «         Œd S )Nr   )Úkeyr¦  râ   r  )rP  r`  r   rz   ró  rR   rÎ  rW   rò  r=  r  r©   r  rÏ  )r   r¬   rˆ   rš   r­   r²   ÚoffsetByGlyphÚoffsetByDataÚdataLenÚcompiledDatarL  r	  rÊ  r  ÚlookupWriterrª  Ú
dataWriterÚds                     r0   r©   zAATLookupWithDataOffset.writeI  sy  € ð 02°2°q W�|ˆØˆÝ˜E t¤Ð7Ñ7Ô7ð 
	*ð 
	*ˆEÝ%™œˆIØ�%ŒL× Ò  ¨DÑ1Ô1Ð1Ø×'Ò'Ñ)Ô)ˆDØ!×%Ò% d¨DÑ1Ô1ˆFØ˜Š~ˆ~Ø �Ø!¥C¨¡I¤IÑ-�Ø%+�˜TÑ"Ø×#Ò# DÑ)Ô)Ð)Ø#)ˆM˜%Ñ Ð ð ×*Ò*Ñ,Ô,ˆÝ˜=¨$°µfÑ=Ô=ˆØ�Š�\ 4¨°MÀ4ÑHÔHÐHà×(Ò(Ñ*Ô*ˆ
Ø×Ò˜\°aÐÑ8Ô8Ð8Ø×Ò˜Z°AÐÑ6Ô6Ð6Øð 	$ð 	$ˆAØ× Ò  Ñ#Ô#Ð#Ð#ð	$ð 	$r2   c                 ó^   — t          dd d | j        ¦  «        }|                     |||¦  «        S r¥  )r=  rQ   r·   )r   rµ   r¶   rˆ   rª  s        r0   r·   zAATLookupWithDataOffset.xmlReadl  s-   € Ý˜=¨$°°d´oÑFÔFˆØ�~Š~˜e W¨dÑ3Ô3Ð3r2   c                 óf   — t          dd d | j        ¦  «        }|                     |||||¦  «         d S r¥  )r=  rQ   r»   )r   rº   rˆ   r­   r]   rµ   rª  s          r0   r»   z AATLookupWithDataOffset.xmlWritep  s7   € Ý˜=¨$°°d´oÑFÔFˆØ�Š˜	 4¨°°eÑ<Ô<Ð<Ð<Ð<r2   r,   ©rU   rÄ   rÅ   r†   r©   r·   r»   r’   r2   r0   r£  r£  :  sV   € € € € € ðð ð ð!$ð !$ð !$ð !$ðF4ð 4ð 4ð=ð =ð =ð =ð =r2   r£  c                   ó†   — e Zd ZdddddœZd„ e                     ¦   «         D ¦   «         Zddd	œd
„Zd„ Zd„ Zd„ Z	d„ Z
dd„ZdS )ÚMorxSubtableConverterÚLayoutOrderÚReversedLayoutOrderÚLogicalOrderÚReversedLogicalOrder))FF)TF©FT)TTc                 ó   — i | ]\  }}||“Œ	S r’   r’   )r“   r¯  rM  s      r0   rŽ  z MorxSubtableConverter.<dictcomp>~  s   € Ð"WÐ"WÐ"W±°°S 3¨Ð"WÐ"WÐ"Wr2   Nrh   rB   c                óF   — t                                | |||||¬¦  «         d S ©NrB   )rg   r€   r~   s         r0   r€   zMorxSubtableConverter.__init__€  s6   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r2   c                 ó\   — |dz  dk    r	d|_         d S |dz  dk    r	d|_         d S d|_         d S )Né    r   ÚAnyé€   ÚVerticalÚ
Horizontal)ÚTextDirection)r   rv  Úsubtables      r0   Ú"_setTextDirectionFromCoverageFlagsz8MorxSubtableConverter._setTextDirectionFromCoverageFlags…  sJ   € Ø�D‰L˜QÒÐØ%*ˆHÔ"Ð"Ð"Ø�d‰l˜qÒ Ð Ø%/ˆHÔ"Ð"Ð"à%1ˆHÔ"Ð"Ð"r2   c                 ó‚  — |j         }t          ¦   «         }|                     ¦   «         |_        |                     ¦   «         }|dz  dk    |dz  dk    f}| j        |         |_        |                      ||¦  «         |                     ¦   «         |_	        |xj	        |dz  dz  z  c_	        |                     ¦   «         |_
        |                     ¦   «         |_        t          d                              |j
        ¦  «        }|€J d|j
        z  ¦   «         ‚|j         |z
  }	|j        |j         |j         |j        z   |	z
  …         }
t          |
¦  «        |j        |	z
  k    sJ ‚t!          |
|j        ¬¦  «        } |¦   «         |_        |j                             ||¦  «         |                     ||j        z   ¦  «         |S )	Nr¿  r   r›  é   ÚmorxFz!unsupported 'morx' lookup type %s)rÊ  ÚtableTag)r‰   r"   rø   r7   r1  Ú_PROCESSING_ORDERSÚProcessingOrderrÌ  r  ÚReservedr8   ÚSubFeatureFlagsr   rR   rÊ  rÎ  r   rÐ  r=   rÓ  r…   )r   r�   rˆ   rš   r‰   rÂ   rv  ÚorderKeyrQ   ÚheaderLengthrÊ  Ú	subReaders               r0   r†   zMorxSubtableConverter.read�  s¤  € ØŒjˆÝ‰NŒNˆØ×)Ò)Ñ+Ô+ˆŒØ× Ò Ñ"Ô"ˆØ˜T‘\ aÒ'¨%°$©,¸1Ò)<Ð=ˆØ Ô3°HÔ=ˆÔØ×/Ò/°°qÑ9Ô9Ð9Ø×&Ò&Ñ(Ô(ˆŒ
Ø	ˆ
Œ
�u˜s‘{ rÑ)Ñ)ˆ
Œ
Ø×&Ò&Ñ(Ô(ˆŒØ"×,Ò,Ñ.Ô.ˆÔÝ  Ô(×,Ò,¨Q¬[Ñ9Ô9ˆ
ØÐØKÐ=ÀÄÑKÑKÔK�5ð ”z CÑ'ˆØŒ{˜6œ:¨¬
°Q´^Ñ(CÀlÑ(RÐRÔSˆÝ�4‰yŒy˜AœN¨\Ñ9Ò9Ð9Ð9Ð9Ý! t°f´oÐFÑFÔFˆ	Ø �j‘l”lˆŒØ	Œ×Ò˜i¨Ñ.Ô.Ð.Ø�Š�C˜!œ.Ñ(Ñ)Ô)Ð)Øˆr2   c                 óH  — |                      ||¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          |                     d|j        ¬¦  «         |                     ¦   «          |                     d|j        ¬¦  «         |                     ¦   «          |j        dk    r3|                     dd|j        z  ¬¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          |                     d	d
|j	        z  ¬¦  «         |                     ¦   «          |j
                             ||¦  «         |                     |¦  «         |                     ¦   «          d S )NzStructLength=%drÊ  rË   rÒ  r   rÓ  z0x%04xzMorphType=%drÔ  r¹  )r   rÓ   rF  r7   rÒ   rÊ  rÒ  rÓ  r8   rÔ  r=   rÙ  r¡  r¹   s         r0   r»   zMorxSubtableConverter.xmlWrite¨  sš  € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐØ×ÒÐ+¨eÔ.@Ñ@ÑAÔAÐAØ×ÒÑÔÐØ×Ò˜O°5Ô3FÐÑGÔGÐGØ×ÒÑÔÐØ×ÒÐ-°UÔ5JÐÑKÔKÐKØ×ÒÑÔÐØŒ>˜QÒÐØ×Ò 
°(¸U¼^Ñ2KÐÑLÔLÐLØ×ÒÑÔÐØ×Ò˜.¨5¬?Ñ:Ñ;Ô;Ð;Ø×ÒÑÔÐØ×ÒÐ-°XÀÔ@UÑ5UÐÑVÔVÐVØ×ÒÑÔÐØŒ×Ò˜i¨Ñ.Ô.Ð.Ø×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr2   c                 ó   — t          ¦   «         }d}d|_        t          t          |¦  «        D �]:\  }}}|dk    rPt	          |d         ¦  «        }|dz  dk    |dz  dk    f}	| j        |	         |_        |                      ||¦  «         Œ]|dk    r.|d         |_        |j        | j        v sJ d|j        z  ¦   «         ‚Œ‘|dk    r)|d         |_	        |j	        d	v sJ d
|j	        z  ¦   «         ‚ŒÀ|dk    rt	          |d         ¦  «        |_        Œá|dk    rt	          |d         ¦  «        |_
        �Œ|                     d¦  «        r|                     ||||¦  «         �Œ2J |¦   «         ‚|dz  dz  |j        z  |_        |S )Nr   ÚCoverageFlagsr­   r¿  r›  rÒ  zunknown ProcessingOrder: %srÊ  >   rÆ  rÈ  rÉ  zunknown TextDirection %srÓ  rÔ  ÚMorphFrÎ  )r"   rÓ  rQ  Úistupler   rÑ  rÒ  rÌ  Ú_PROCESSING_ORDERS_REVERSEDrÊ  rÔ  rI   râ  )
r   rµ   r¶   rˆ   rÂ   ÚcovFlagsÚeltNameÚeltAttrsrž  rÕ  s
             r0   r·   zMorxSubtableConverter.xmlRead¼  sÄ  € Ý‰NŒNˆØˆØˆŒ
Ý-3µG¸WÑ-EÔ-Eð 	&ñ 	&Ñ)ˆG�X˜zØ˜/Ò)Ð)å# H¨WÔ$5Ñ6Ô6�Ø%¨™_°Ò2°XÀ±_ÈÒ4JÐK�Ø$(Ô$;¸HÔ$E�Ô!Ø×7Ò7¸À!ÑDÔDÐDÐDØÐ-Ò-Ð-Ø$,¨WÔ$5�Ô!ØÔ(¨DÔ,LÐLÐLÐLØ1°AÔ4EÑEñ MÔLÐLÐLð ˜OÒ+Ð+Ø"*¨7Ô"3�”Ø”Ð*KÐKÐKÐKØ.°´Ñ@ñ LÔKÐKÐKð ˜JÒ&Ð&Ý% h¨wÔ&7Ñ8Ô8�”
�
ØÐ-Ò-Ð-Ý$,¨X°gÔ->Ñ$?Ô$?�Ô!Ñ!Ø×!Ò! 'Ñ*Ô*ð &Ø—	’	˜' 8¨Z¸Ñ>Ô>Ð>Ñ>à%˜gÑ%Ô%�uØ ‘n¨Ñ+¨a¬jÑ8ˆŒ
Øˆr2   c                 ó  — |j         dz  dz	  }| j        |j                 \  }}||j        dk    rdndz  }||rdndz  }||j        dk    rdndz  }||rdndz  }||_        t          |j        ¦  «        }	|                     ¦   «         }
d	|_        |j         }|j         d
z  |_         | 	                    ||¦  «         ||_         |j        |	         dk    sJ ‚|                     ¦   «         |
z
  }t          j        d|¦  «        |j        |	<   d S )Ni   r›  rÈ  rÇ  r   r¿  rÆ  rÅ  rî  rh  rï  z>L)rÓ  rÝ  rÒ  rÊ  rÚ  rÎ  rð  rñ  r7   rz   ÚstructÚpack)r   r¬   rˆ   rš   r­   r²   rÞ  ÚreverseOrderÚlogicalOrderrõ  r÷  ÚorigReservedrø  s                r0   r©   zMorxSubtableConverter.writeÜ  s8  € Ø”N ZÑ/°BÑ6ˆØ%)Ô%EØÔ!ô&
Ñ"ˆ�lð 	˜EÔ/°:Ò=Ð=�D�DÀ1ÑDˆØ˜LÐ/�D�D¨aÑ/ˆØ˜EÔ/°5Ò8Ð8�D�D¸aÑ?ˆØ˜LÐ/�D�D¨aÑ/ˆØ&ˆÔÝ˜&œ,Ñ'Ô'ˆØ×%Ò%Ñ'Ô'ˆØ'ˆÔð ”~ˆØœ¨&Ñ0ˆŒØ�Š�f˜dÑ#Ô#Ð#Ø%ˆŒØŒ|˜KÔ(Ð,?Ò?Ð?Ð?Ð?Ø×%Ò%Ñ'Ô'¨&Ñ0ˆÝ$*¤K°°fÑ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r2   r,   )rU   rÄ   rÅ   rÑ  rð  rÝ  r€   rÌ  r†   r»   r·   r©   r’   r2   r0   r»  r»  u  sÄ   € € € € € ð &Ø,Ø%Ø,ðð Ðð #XÐ"WÐ<N×<TÒ<TÑ<VÔ<VÐ"WÑ"WÔ"WÐð
È"ð 
ð 
ð 
ð 
ð 
ð
2ð 2ð 2ðð ð ð6ð ð ð(ð ð ð@>ð >ð >ð >ð >ð >r2   r»  c                   ó|   — e Zd Zddœd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdd
„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	S )Ú	STXHeaderrh   rB   c                ó4  — t                                | |||||¬¦  «         t          | j        t          ¦  «        sJ ‚t          dd d t          ¦  «        | _        t          | j        t          ¦  «        rt          dd d t          ¦  «        | _
        d S d | _
        d S )NrB   ÚGlyphClassesÚPerGlyphLookup)rg   r€   r@  rQ   r   r=  r  ÚclassLookupr   rT  ÚperGlyphLookupr~   s         r0   r€   zSTXHeader.__init__÷  sœ   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ ˜$œ/­9Ñ5Ô5Ð5Ð5Ð5Ý$ ^°T¸4ÅÑHÔHˆÔÝ�d”oÕ'<Ñ=Ô=ð 	'Ý"+Ð,<¸dÀDÍ'Ñ"RÔ"RˆDÔÐÐà"&ˆDÔÐÐr2   c                 óR  — t          ¦   «         }|j        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }d }	d }
|                     ¦   «         |_        |                     ||                     ¦   «         z   ¦  «         |                     ||                     ¦   «         z   ¦  «         |                     ||                     ¦   «         z   ¦  «         | j        �?|                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         t          | j        t          ¦  «        �r|                     d¦  «        }	|	                     ||                     ¦   «         z   ¦  «         |                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         |                     d¦  «        }
|
                     ||                     ¦   «         z   ¦  «         |
j        |j        z
  dz  }|dk    sJ ‚| 
                    |¦  «        |_        |                      |
|¦  «        |_        nYt          | j        t          ¦  «        r?|                     d¦  «        }	|	                     ||                     ¦   «         z   ¦  «         | j                             |||¦  «        |_        t%          |j        |j        z
  |j        dz  z  ¦  «        }t'          |¦  «        D ]u}t)          ¦   «         }|j                             |¦  «         t'          |j        ¦  «        D ]6}|                     ¦   «         }|                      ||||	¦  «        |j        |<   Œ7Œv| j        �|                      |||¦  «        |_        |S )Nr   r  )r   r‰   r  rø   ÚGlyphClassCountr…   rí  r@  rQ   r    r  ÚLigComponentsÚ_readLigaturesÚ	Ligaturesr!   rì  r†   rê  rÀ   r˜   r   ÚStatesrW   r  Ú_readTransitionÚTransitionsÚ_readPerGlyphLookupsÚPerGlyphLookups)r   r�   rˆ   rš   rÔ  r‰   ÚclassTableReaderÚstateArrayReaderÚentryTableReaderÚactionReaderÚligaturesReaderÚperGlyphTableReaderÚligComponentReaderÚnumLigComponentsÚ	numStatesÚ
stateIndexÚstateÚ
glyphClassÚ
entryIndexs                      r0   r†   zSTXHeader.read  sŽ  € Ý‘”ˆØŒjˆØ!×.Ò.¨qÑ1Ô1ÐØ!×.Ò.¨qÑ1Ô1ÐØ!×.Ò.¨qÑ1Ô1ÐØˆØˆØ &× 0Ò 0Ñ 2Ô 2ˆÔØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7ØÔÐ*Ø"(×"5Ò"5°aÑ"8Ô"8ÐØ×$Ò$ S¨6×+;Ò+;Ñ+=Ô+=Ñ%=Ñ>Ô>Ð>Ý�d”oÕ':Ñ;Ô;ñ 	8Ø!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø!'×!4Ò!4°QÑ!7Ô!7ÐØ×#Ò# C¨&×*:Ò*:Ñ*<Ô*<Ñ$<Ñ=Ô=Ð=Ø$×1Ò1°!Ñ4Ô4ˆOØ× Ò   v×'7Ò'7Ñ'9Ô'9Ñ!9Ñ:Ô:Ð:Ø /Ô 3Ð6HÔ6LÑ LÐQRÑRÐØ# qÒ(Ð(Ð(Ð(Ø"4×"DÒ"DÐEUÑ"VÔ"VˆEÔØ"×1Ò1°/À4ÑHÔHˆEŒOˆOÝ˜œÕ)=Ñ>Ô>ð 	8Ø!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø!Ô-×2Ò2Ð3CÀTÈ9ÑUÔUˆÔÝØÔ!Ð$4Ô$8Ñ8¸UÔ=RÐUVÑ=VÑWñ
ô 
ˆ	õ   	Ñ*Ô*ð 	ð 	ˆJÝ‘J”JˆEØŒL×Ò Ñ&Ô&Ð&Ý# EÔ$9Ñ:Ô:ð ð �
Ø-×8Ò8Ñ:Ô:�
Ø04×0DÒ0DØ$ j°$¸ñ1ô 1�Ô! *Ñ-Ð-ðð
 ÔÐ*Ø$(×$=Ò$=ØÐ*¨Dñ%ô %ˆEÔ!ð ˆr2   c                 ó¦   — |                       ¦   «         }|                     |j        ||j        z  z   ¦  «        }|                     |||¦  «         |S r,   )rQ   r  r‰   rŸ   rÓ  )r   r�   r  rˆ   rû  Ú
transitionÚentryReaders          r0   rô  zSTXHeader._readTransition1  sX   € Ø—_’_Ñ&Ô&ˆ
Ø×)Ò)ØŒJ˜ jÔ&;Ñ;Ñ;ñ
ô 
ˆð 	×Ò˜[¨$°Ñ=Ô=Ð=ØÐr2   c                 ó”   — t          |j        ¦  «        }||j        z
  dz  }|                     |                     |¦  «        ¦  «        S r4  )rÎ  rÊ  r‰   rW  r  )r   r�   rˆ   ÚlimitÚnumLigatureGlyphss        r0   rñ  zSTXHeader._readLigatures9  sF   € Ý�F”KÑ Ô ˆØ" V¤ZÑ/°AÑ5ÐØ×$Ò$ V×%;Ò%;Ð<MÑ%NÔ%NÑOÔOÐOr2   c                 ó  — d}|j         D ]y}|j                             ¦   «         D ]]}t          |t          ¦  «        rF|j        dk    rt          ||j        dz   ¦  «        }|j        dk    rt          ||j        dz   ¦  «        }Œ^Œz|S )Nr   rh  r   )ró  rõ  rS   r-   r   Ú	MarkIndexÚmaxÚCurrentIndex)r   rÔ  Ú
numLookupsr  r/   s        r0   Ú_countPerGlyphLookupszSTXHeader._countPerGlyphLookups>  s¤   € ð
 ˆ
Ø”\ð 	Ið 	IˆEØÔ&×-Ò-Ñ/Ô/ð Ið I�Ý˜aÕ!6Ñ7Ô7ð IØ”{ fÒ,Ð,Ý%(¨°Q´[À1±_Ñ%EÔ%E˜
Ø”~¨Ò/Ð/Ý%(¨°Q´^ÀaÑ5GÑ%HÔ%H˜
øðIð Ðr2   c                 ó>  — |j         }g }t          |                      |¦  «        ¦  «        D ]p}|                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         |                     | j                             ||i ¦  «        ¦  «         Œq|S rÞ   )	r‰   r˜   r  r  r…   rø   rW   rí  r†   )r   rÔ  r�   rˆ   r‰   Úlookupsrˆ  r©  s           r0   rö  zSTXHeader._readPerGlyphLookupsM  sœ   € ØŒjˆØˆÝ�t×1Ò1°%Ñ8Ô8Ñ9Ô9ð 	Mð 	MˆAØ!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø�NŠN˜4Ô.×3Ò3°LÀ$ÈÑKÔKÑLÔLÐLÐLØˆr2   Nc                 ó  — t          ¦   «         }| j                             ||||j        d ¬¦  «         t	          |                     ¦   «         d¦  «        }t          |j                             ¦   «         ¦  «        dz   }d}	| j        �|	dz  }	|	| j	        j
        z  }	| j	                             ||j        ¦  «        \  }
}|                      ||j        ||¦  «        \  }}|	t          |¦  «        z   }|t          |¦  «        z   }|t          |¦  «        z   }t	          |                      ||¦  «        d¦  «        }|
�|t          |¦  «        z   }nd }d\  }}|                      ||¦  «        }|                      ||¦  «        }|�9t          |¦  «        dk    sJ ‚|t          |
¦  «        z   }|t          |¦  «        z   }|                     |¦  «         |                     |	¦  «         |                     |¦  «         |                     |¦  «         | j        �|                     |¦  «         |�|                     |¦  «         |�*|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |
�|                     |
¦  «         |�|                     |¦  «         |�|                     |¦  «         d S d S )N)r²   r  r   r›  râ   )NNr   )r   rì  r©   rê  r   ró  r  rS   rí  rQ   ÚactionHeaderSizeÚcompileActionsró  Ú_compileStatesrÎ  Ú_compilePerGlyphLookupsÚ_compileLigComponentsÚ_compileLigaturesrÿ   rÏ  )r   r¬   rˆ   rš   r­   r²   ÚglyphClassWriterÚglyphClassDataÚglyphClassCountÚglyphClassTableOffsetÚ
actionDataÚactionIndexÚstateArrayDataÚentryTableDataÚstateArrayOffsetÚentryTableOffsetÚperGlyphOffsetÚperGlyphDataÚactionOffsetÚligaturesOffsetÚligComponentsOffsetÚligComponentsDataÚligaturesDatas                          r0   r©   zSTXHeader.writeV  s=  € Ý(™?œ?ÐØÔ×ÒØ˜d I¨uÔ/AÈtð 	ñ 	
ô 	
ð 	
õ Ð-×8Ò8Ñ:Ô:¸AÑ>Ô>ˆÝ˜eÔ0×7Ò7Ñ9Ô9Ñ:Ô:¸QÑ>ˆØ "ÐØÔÐ*Ø! QÑ&Ð!à ¤Ô!AÑAÐØ"&¤/×"@Ò"@ÀÀuÄ|Ñ"TÔ"TÑˆ
�KØ)-×)<Ò)<Ø�%”, °ñ*
ô *
Ñ&ˆ˜ð 1µ3°~Ñ3FÔ3FÑFÐØ+­c°.Ñ.AÔ.AÑAÐØ)­C°Ñ,?Ô,?Ñ?ˆÝ˜4×7Ò7¸¸tÑDÔDÀaÑHÔHˆØÐ!Ø+­c°.Ñ.AÔ.AÑAˆLˆLàˆLà/9Ñ,ˆÐ,Ø ×6Ò6°u¸dÑCÔCÐØ×.Ò.¨u°dÑ;Ô;ˆØÐ(Ý�|Ñ$Ô$¨Ò)Ð)Ð)Ð)Ø".µ°Z±´Ñ"@ÐØ1µCÐ8IÑ4JÔ4JÑJˆOà×Ò˜/Ñ*Ô*Ð*Ø×ÒÐ/Ñ0Ô0Ð0Ø×ÒÐ*Ñ+Ô+Ð+Ø×ÒÐ*Ñ+Ô+Ð+ØÔÐ*Ø×Ò˜nÑ-Ô-Ð-ØÐ#Ø×Ò˜lÑ+Ô+Ð+ØÐ*Ø×ÒÐ1Ñ2Ô2Ð2Ø×Ò˜oÑ.Ô.Ð.Ø×Ò˜Ñ(Ô(Ð(Ø×Ò˜Ñ(Ô(Ð(Ø×Ò˜Ñ(Ô(Ð(Ø×Ò˜Ñ&Ô&Ð&ØÐ!Ø×Ò˜ZÑ(Ô(Ð(ØÐ(Ø×ÒÐ.Ñ/Ô/Ð/ØÐ$Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+ð %Ð$r2   c           	      óž  — t          ¦   «         }g i }}|D ]ö}t          |¦  «        D ]ä}	|j        |	         }
t          ¦   «         }|
                     |||¦  «         |                     ¦   «         }t          |¦  «        |
j        k    s/J dt          |
¦  «        |
j        t          |¦  «        fz  ¦   «         ‚|                     |¦  «        }|€)t          |¦  «        }|||<   | 	                    |¦  «         | 
                    |¦  «         ŒåŒ÷t          |                     ¦   «         d¦  «        }t          t          |¦  «        d¦  «        }||fS )Nz1%s has staticSize %d, but actually wrote %d bytesrâ   )r   r˜   rõ  rz   ró  rÎ  rŸ   rè  rR   rW   r   r   r   )r   rˆ   Ústatesr  r  ÚstateArrayWriterÚentriesÚentryIDsr  r  r  ÚentryWriterÚ	entryDatar  r   r!  s                   r0   r  zSTXHeader._compileStates�  s`  € Ý(™?œ?ÐØ �ˆØð 	9ð 	9ˆEÝ# OÑ4Ô4ð 9ð 9�
Ø"Ô.¨zÔ:�
Ý+™oœo�Ø×"Ò" ;°°kÑBÔBÐBØ'×2Ò2Ñ4Ô4�	å˜	‘N”N jÔ&;Ò;Ð;Ð;ØIÝ˜Ñ$Ô$ØÔ)Ý˜	‘N”NðMñ ñ <Ô;Ð;ð &Ÿ\š\¨)Ñ4Ô4�
ØÐ%Ý!$ W¡¤�JØ*4�H˜YÑ'Ø—N’N 9Ñ-Ô-Ð-Ø ×,Ò,¨ZÑ8Ô8Ð8Ð8ð#9õ$ Ð-×8Ò8Ñ:Ô:¸AÑ>Ô>ˆÝ�Y wÑ/Ô/°Ñ3Ô3ˆØ˜~Ð-Ð-r2   c                 óš  — | j         €dS |                      |¦  «        }t          |j        ¦  «        |k    s!J dt          |j        ¦  «        |fz  ¦   «         ‚t	          ¦   «         }|j        D ]K}|                     ¦   «         }| j                              ||i |d ¦  «         |                     |d¬¦  «         ŒL|                     ¦   «         S )Nr2   zVlen(AATStateTable.PerGlyphLookups) is %d, but the actions inside the table refer to %drâ   r  )	rí  r  rÎ  r÷  r   rò  r©   r  ró  )r   rÔ  rˆ   r  r¬   rª  r´  s          r0   r  z!STXHeader._compilePerGlyphLookups§  sß   € ØÔÐ&Ø�3Ø×/Ò/°Ñ6Ô6ˆ
Ý�5Ô(Ñ)Ô)¨ZÒ7Ð7Ð7ð;å�5Ô(Ñ)Ô)¨:Ð6ñ7ñ 8Ô7Ð7õ
 ‘”ˆØÔ+ð 	=ð 	=ˆFØ!×.Ò.Ñ0Ô0ˆLØÔ×%Ò% l°D¸"¸fÀdÑKÔKÐKØ× Ò  ¸!Ð Ñ<Ô<Ð<Ð<Ø× Ò Ñ"Ô"Ð"r2   c                 ó¨   — t          |d¦  «        sd S t          ¦   «         }|j        D ]}|                     |¦  «         Œ|                     ¦   «         S )Nrð  )r    r   rð  r   ró  )r   rÔ  rˆ   r¬   Ú	components        r0   r  zSTXHeader._compileLigComponents·  s]   € Ý�u˜oÑ.Ô.ð 	Ø�4Ý‘”ˆØÔ,ð 	*ð 	*ˆIØ×Ò˜yÑ)Ô)Ð)Ð)Ø× Ò Ñ"Ô"Ð"r2   c                 óÎ   — t          |d¦  «        sd S t          ¦   «         }|j        D ]*}|                     |                     |¦  «        ¦  «         Œ+|                     ¦   «         S )Nrò  )r    r   rò  r   r`  ró  )r   rÔ  rˆ   r¬   Ú	glyphNames        r0   r  zSTXHeader._compileLigatures¿  sh   € Ý�u˜kÑ*Ô*ð 	Ø�4Ý‘”ˆØœð 	;ð 	;ˆIØ×Ò˜tŸš¨yÑ9Ô9Ñ:Ô:Ð:Ð:Ø× Ò Ñ"Ô"Ð"r2   c                 ó>  — |                      ||¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          t	          |j                             ¦   «         ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2t          |j	        ¦  «        D ] \  }}	|                      d|¬¦  «         |                     ¦   «          t	          |	j
                             ¦   «         ¦  «        D ] \  }
}|                     ||d|
id¬¦  «         Œ!|                     d¦  «         |                     ¦   «          Œ¡t          |j        ¦  «        D ]¬\  }}|                      d	|¬¦  «         |                     ¦   «          t	          |                     ¦   «         ¦  «        D ]1\  }}|                     d
||¬¦  «         |                     ¦   «          Œ2|                     d	¦  «         |                     ¦   «          Œ­t          |d¦  «        r¡|                      d¦  «         |                     ¦   «          t          t          |d¦  «        ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2|                     d¦  «         |                     ¦   «          |                      |||||¦  «         |                     |¦  «         |                     ¦   «          d S )NzGlyphClassCount=%sÚ
GlyphClass©rL  r­   ÚState)ÚindexÚonGlyphClassÚ
Transition)rˆ   rµ   r]   rë  rœ  rð  ÚLigComponent)r;  r­   )r   rÓ   rF  rï  rP  rê  rð  rÒ   r¨   ró  rõ  rÙ  r¡  r÷  r    r‡  Ú_xmlWriteLigatures)r   rº   rˆ   r­   r]   rµ   ÚgÚklassr  r  r  Útransr‡   rª  rL  rM  s                   r0   r»   zSTXHeader.xmlWriteÇ  sE  € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐØ×ÒÐ.°Ô1FÑFÑGÔGÐGØ×ÒÑÔÐÝ˜uÔ1×7Ò7Ñ9Ô9Ñ:Ô:ð 	 ð 	 ‰HˆAˆuØ×Ò °A¸UÐÑCÔCÐCØ×ÒÑÔÐÐÝ!*¨5¬<Ñ!8Ô!8ð 	 ð 	 ÑˆJ˜Ø×Ò˜w¨jÐÑ9Ô9Ð9Ø×ÒÑÔÐÝ%+¨EÔ,=×,CÒ,CÑ,EÔ,EÑ%FÔ%Fð ð Ñ!�
˜EØ—’ØØØ)¨:Ð6Ø%ð	 ñ ô ð ð ð ×Ò˜WÑ%Ô%Ð%Ø×ÒÑÔÐÐÝ" 5Ô#8Ñ9Ô9ð 	 ð 	 ‰IˆAˆvØ×ÒÐ/°qÐÑ9Ô9Ð9Ø×ÒÑÔÐÝ$ V§\¢\¡^¤^Ñ4Ô4ð $ð $‘
��sØ×#Ò# H°EÀÐ#ÑEÔEÐEØ×!Ò!Ñ#Ô#Ð#Ð#Ø×ÒÐ-Ñ.Ô.Ð.Ø×ÒÑÔÐÐÝ�5˜/Ñ*Ô*ð 	 Ø×Ò˜Ñ/Ô/Ð/Ø×ÒÑÔÐÝ#¥G¨E°?Ñ$CÔ$CÑDÔDð $ð $‘��3Ø×#Ò# N¸!À3Ð#ÑGÔGÐGØ×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜_Ñ-Ô-Ð-Ø×ÒÑÔÐØ×Ò 	¨4°¸¸eÑDÔDÐDØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr2   c                 ól  — t          |d¦  «        sd S |                     d¦  «         |                     ¦   «          t          t	          |d¦  «        ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2|                     d¦  «         |                     ¦   «          d S )Nrò  ÚLigature)r;  rL  )r    r   rÓ   r¨   r‡  rÒ   r¡  )r   rº   rˆ   r­   r]   rµ   r‡   r@  s           r0   r?  zSTXHeader._xmlWriteLigaturesï  sÀ   € Ý�u˜kÑ*Ô*ð 	ØˆFØ×Ò˜;Ñ'Ô'Ð'Ø×ÒÑÔÐÝ�g e¨[Ñ9Ô9Ñ:Ô:ð 	 ð 	 ‰DˆAˆqØ×Ò 
°!¸1ÐÑ=Ô=Ð=Ø×ÒÑÔÐÐØ×Ò˜Ñ%Ô%Ð%Ø×ÒÑÔÐÐÐr2   c                 ó†  — t          ¦   «         }t          t          |¦  «        D ]î\  }}}|dk    r(|d         }|d         }	t          |	¦  «        |j        |<   Œ4|dk    r2|                      |||¦  «        }
|j                             |
¦  «         Œl|dk    r7| j         	                    |||¦  «        }|j
                             |¦  «         Œ©|dk    r|                      |||¦  «        |_        ŒÌ|dk    r|                      |||¦  «        |_        Œït          |j                             ¦   «         ¦  «        dz   |_        |S )	Nr8  rL  r­   r:  rë  rð  rò  r   )r   rQ  rÜ  r   rê  Ú_xmlReadStateró  rW   rí  r·   r÷  Ú_xmlReadLigComponentsrð  Ú_xmlReadLigaturesrò  r  rS   rï  )r   rµ   r¶   rˆ   rÔ  rß  rà  rž  rL  r­   r  rª  s               r0   r·   zSTXHeader.xmlReadú  sZ  € Ý‘”ˆÝ-3µG¸WÑ-EÔ-Eð 	Uð 	UÑ)ˆG�X˜zØ˜,Ò&Ð&Ø  Ô)�Ø  Ô)�Ý,4°U©O¬O�Ô" 5Ñ)Ð)Ø˜GÒ#Ð#Ø×*Ò*¨8°ZÀÑFÔF�Ø”×#Ò# EÑ*Ô*Ð*Ð*ØÐ,Ò,Ð,ØÔ,×4Ò4°X¸zÈ4ÑPÔP�ØÔ%×,Ò,¨VÑ4Ô4Ð4Ð4Ø˜OÒ+Ð+Ø&*×&@Ò&@Ø˜j¨$ñ'ô '�Ô#Ð#ð ˜KÒ'Ð'Ø"&×"8Ò"8¸À:ÈtÑ"TÔ"T�”øÝ # EÔ$6×$=Ò$=Ñ$?Ô$?Ñ @Ô @À1Ñ DˆÔØˆr2   c                 óü   — t          ¦   «         }t          t          |¦  «        D ]W\  }}}|dk    rKt          |d         ¦  «        }|                      ¦   «         }	|	                     ||||¦  «         |	|j        |<   ŒX|S )Nr=  r<  )r   rQ  rÜ  r   rQ   râ  rõ  )
r   rµ   r¶   rˆ   r  rß  rà  rž  r  r  s
             r0   rF  zSTXHeader._xmlReadState  s„   € Ý‘
”
ˆÝ-3µG¸WÑ-EÔ-Eð 	;ð 	;Ñ)ˆG�X˜zØ˜,Ò&Ð&Ý% h¨~Ô&>Ñ?Ô?�
Ø!Ÿ_š_Ñ.Ô.�
Ø×"Ò" 7¨H°jÀ$ÑGÔGÐGØ0:�Ô! *Ñ-øØˆr2   c                 óž   — g }t          t          |¦  «        D ]4\  }}}|dk    r(|                     t          |d         ¦  «        ¦  «         Œ5|S )Nr>  r­   )rQ  rÜ  rW   r   )r   rµ   r¶   rˆ   ÚligComponentsrß  rà  Ú_eltContents           r0   rG  zSTXHeader._xmlReadLigComponents  s\   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	Bð 	BÑ*ˆG�X˜{Ø˜.Ò(Ð(Ø×$Ò$¥X¨h°wÔ.?Ñ%@Ô%@ÑAÔAÐAøØÐr2   c                 ó„   — g }t          t          |¦  «        D ]'\  }}}|dk    r|                     |d         ¦  «         Œ(|S )NrD  rL  )rQ  rÜ  rW   )r   rµ   r¶   rˆ   Úligsrß  rà  rL  s           r0   rH  zSTXHeader._xmlReadLigatures!  sO   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	/ð 	/Ñ*ˆG�X˜{Ø˜*Ò$Ð$Ø—’˜H WÔ-Ñ.Ô.Ð.øØˆr2   r,   )rU   rÄ   rÅ   r€   r†   rô  rñ  r  rö  r©   r  r  r  r  r»   r?  r·   rF  rG  rH  r’   r2   r0   rè  rè  ö  s+  € € € € € ØEGð 	'ð 	'ð 	'ð 	'ð 	'ð-ð -ð -ð^ð ð ðPð Pð Pð
ð ð ðð ð ð5,ð 5,ð 5,ð 5,ðn.ð .ð .ð4#ð #ð #ð #ð #ð #ð#ð #ð #ð&ð &ð &ðP	ð 	ð 	ðð ð ð,ð ð ðð ð ðð ð ð ð r2   rè  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚCIDGlyphMapc                 ó¾   — |                      ¦   «         }i }t          |                     |¦  «        ¦  «        D ]#\  }}|dk    r|                     |¦  «        ||<   Œ$|S ©Nrh  )r  r¨   r  rZ  )r   r�   rˆ   rš   ÚnumCIDsr¬  Úcidrw  s           r0   r†   zCIDGlyphMap.read*  si   € Ø×#Ò#Ñ%Ô%ˆØˆÝ% f×&<Ò&<¸WÑ&EÔ&EÑFÔFð 	9ð 	9‰LˆC�Ø˜&Ò Ð Ø"×/Ò/°Ñ8Ô8��s‘øØˆr2   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r’   rK  )r“   rT  rL  rˆ   s      €r0   rŽ  z%CIDGlyphMap.write.<locals>.<dictcomp>3  s+   ø€ ÐMÐMÐM±°°e��d—o’o eÑ,Ô,ÐMÐMÐMr2   r   r   rh  ©rð  r  r   r˜   rR   )	r   r¬   rˆ   rš   r­   r²   rð  r›   rT  s	     `      r0   r©   zCIDGlyphMap.write2  s”   ø€ ØMÐMÐMÐM¸u¿{º{¹}¼}ÐMÑMÔMˆØ"'Ð.•�E‘
”
˜Q‘�¨QˆØ×Ò˜5Ñ!Ô!Ð!Ý˜‘<”<ð 	7ð 	7ˆCØ×Ò˜uŸyšy¨¨fÑ5Ô5Ñ6Ô6Ð6Ð6ð	7ð 	7r2   c                 ó®   — i }t          t          |¦  «        D ]<\  }}}|dk    r0|d                              ¦   «         |t          |d         ¦  «        <   Œ=|S )NÚCIDrL  rT  )rQ  rÜ  Ústripr   ©r   rµ   r¶   rˆ   r¬  ÚeNameÚeAttrsÚ	_eContents           r0   r·   zCIDGlyphMap.xmlRead9  s^   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Jð 	JÑ$ˆE�6˜9Ø˜Š~ˆ~Ø28¸´/×2GÒ2GÑ2IÔ2I�•x  u¤Ñ.Ô.Ñ/øØˆr2   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )Nrh  rY  )rT  rL  ©r   rÓ   rP  rð  rÒ   r¡  )r   rº   rˆ   r­   r]   rµ   rT  rL  s           r0   r»   zCIDGlyphMap.xmlWrite@  sµ   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆC�ØÐ  U¨f¢_ _Ø×#Ò# E¨s¸%Ð#Ñ@Ô@Ð@Ø×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr2   r,   r¹  r’   r2   r0   rP  rP  )  sU   € € € € € ðð ð ð7ð 7ð 7ð 7ðð ð ðð ð ð ð r2   rP  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚGlyphCIDMapc                 ó¨  — |                      ¦   «         }|                     ¦   «         }|                     |¦  «        }|t          |¦  «        k    r,t                               d|t          |¦  «        fz  ¦  «         i }t          t          t          |¦  «        t          |¦  «        ¦  «        ¦  «        D ]}||         }	|	dk    r|	|||         <   Œ|S )NzOGlyphCIDMap has %d elements, but the font has only %d glyphs; ignoring the restrh  )ri  r  r  rÎ  rk  rl  r˜   Úmin)
r   r�   rˆ   rš   Ú
glyphOrderr›   Úcidsr¬  rw  rT  s
             r0   r†   zGlyphCIDMap.readL  sÑ   € Ø×'Ò'Ñ)Ô)ˆ
Ø×!Ò!Ñ#Ô#ˆØ×%Ò% eÑ,Ô,ˆØ•3�z‘?”?Ò"Ð"Ý�KŠKð$à',­c°*©o¬oÐ&>ñ?ñô ð ð
 ˆÝ�S¥ T¡¤­C°
©O¬OÑ<Ô<Ñ=Ô=ð 	2ð 	2ˆGØ�w”-ˆCØ�fŠ}ˆ}Ø.1��z 'Ô*Ñ+øØˆr2   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óR   •— i | ]#\  }}|®|dk    ¯‰                      |¦  «        |“Œ$S rR  rK  )r“   r@  rT  rˆ   s      €r0   rŽ  z%GlyphCIDMap.write.<locals>.<dictcomp>^  s@   ø€ ð 
ð 
ð 
á��3Øˆ 3¨&¢= =ð �OŠO˜AÑÔ à#0 = =r2   r   r   rh  rW  )	r   r¬   rˆ   rš   r­   r²   rð  r›   rw  s	     `      r0   r©   zGlyphCIDMap.write]  s¥   ø€ ð
ð 
ð 
ð 
àŸ+š+™-œ-ð
ñ 
ô 
ˆð
 #(Ð.•�E‘
”
˜Q‘�¨QˆØ×Ò˜5Ñ!Ô!Ð!Ý˜U‘|”|ð 	;ð 	;ˆGØ×Ò˜uŸyšy¨°&Ñ9Ô9Ñ:Ô:Ð:Ð:ð	;ð 	;r2   c                 óŠ   — i }t          t          |¦  «        D ]*\  }}}|dk    rt          |d         ¦  «        ||d         <   Œ+|S )NrY  r­   rL  )rQ  rÜ  r   r[  s           r0   r·   zGlyphCIDMap.xmlReadh  sR   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Dð 	DÑ$ˆE�6˜9Ø˜Š~ˆ~Ý*2°6¸'´?Ñ*CÔ*C��v˜g”Ñ'øØˆr2   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )Nrh  rY  r9  r`  )r   rº   rˆ   r­   r]   rµ   rL  rT  s           r0   r»   zGlyphCIDMap.xmlWriteo  s´   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆE�3Øˆ 3¨&¢= =Ø×#Ò# E°¸cÐ#ÑBÔBÐBØ×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr2   r,   r¹  r’   r2   r0   rb  rb  K  sU   € € € € € ðð ð ð"	;ð 	;ð 	;ð 	;ðð ð ðð ð ð ð r2   rb  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )Ú
DeltaValuec                 óX  — |d         }|d         }|d         }|dv s
J d¦   «         ‚||z
  dz   }d|z  }d|z  }	d|z  dz
  }
d|dz
  z  }g }d\  }}t          |¦  «        D ]J}|dk    r|                     ¦   «         d	}}||z
  }||z	  |
z  }||z  r||	z
  }|                     |¦  «         ŒK|S )
NÚ	StartSizeÚEndSizeÚDeltaFormat©r   r  r:  úillegal DeltaFormatr   )r   r   r   r›  )r˜   r  rW   )r   r�   rˆ   rš   rn  ro  rp  ÚnItemsÚnBitsÚminusOffsetÚmaskÚsignMaskrl  ÚtmpÚshiftr‡   r­   s                    r0   r†   zDeltaValue.read{  s  € Ø˜kÔ*ˆ	Ø˜IÔ&ˆØ Ô.ˆØ˜iÐ'Ð'Ð'Ð)>Ñ'Ô'Ð'Ø˜9Ñ$ qÑ(ˆØ�[Ñ ˆØ˜5‘jˆØ�U‘
˜aÑˆØ˜ ™Ñ#ˆàˆ
Ø‰
ˆˆUÝ�v‘”ð 	%ð 	%ˆAØ˜ŠzˆzØ#×.Ò.Ñ0Ô0°"�U�Ø˜E‘MˆEØ˜E‘\ TÑ)ˆEØ�xÑð ,Ø Ñ+�Ø×Ò˜eÑ$Ô$Ð$Ð$ØÐr2   Nc                 óX  — |d         }|d         }|d         }|}	|dv s
J d¦   «         ‚||z
  dz   }
d|z  }t          |	¦  «        |
k    sJ ‚d|z  dz
  }d\  }}|	D ]2}||z
  }|||z  |z  z  }|dk    r|                     |¦  «         d\  }}Œ3|d	k    r|                     |¦  «         d S d S )
Nrn  ro  rp  rq  rr  r   )r   r›  r   r›  )rÎ  r   )r   r¬   rˆ   rš   r­   r²   rn  ro  rp  rl  rs  rt  rv  rx  ry  s                  r0   r©   zDeltaValue.write’  s  € Ø˜kÔ*ˆ	Ø˜IÔ&ˆØ Ô.ˆØˆ
Ø˜iÐ'Ð'Ð'Ð)>Ñ'Ô'Ð'Ø˜9Ñ$ qÑ(ˆØ�[Ñ ˆÝ�:‰Œ &Ò(Ð(Ð(Ð(Ø�U‘
˜aÑˆà‰
ˆˆUØð 	#ð 	#ˆEØ˜E‘MˆEØ˜% $™,¨5Ñ0Ñ1ˆCØ˜ŠzˆzØ×"Ò" 3Ñ'Ô'Ð'Ø"‘
��UøØ�BŠ;ˆ;Ø×Ò˜sÑ#Ô#Ð#Ð#Ð#ð ˆ;r2   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rÑ   ©rÒ   rÓ   r¹   s         r0   r»   zDeltaValue.xmlWrite§  ó=   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Ø×ÒÑÔÐÐÐr2   c                 ó,   — t          |d         ¦  «        S rÑ   ©r   r´   s       r0   r·   zDeltaValue.xmlRead«  ó   € Ý˜˜gœÑ'Ô'Ð'r2   r,   ©rU   rÄ   rÅ   r†   r©   r»   r·   r’   r2   r0   rl  rl  z  sU   € € € € € ðð ð ð.$ð $ð $ð $ð*ð ð ð(ð (ð (ð (ð (r2   rl  c                   ó   — e Zd Zd„ Zdd„ZdS )ÚVarIdxMapValuec                 óæ   ‡	‡
‡— |d         }|d         }d|dz  z   }d|z  dz
  Š	d‰	z
  Š
d|z
  Šd|dz  dz	  z   }|j         |j        |j        |j        d	œ|         }ˆ	ˆ
ˆfd
„ ||¦  «        D ¦   «         S )NÚEntryFormatrr   r   rÎ  l   ÿÿ r›  é0   râ   ©r   r  r:  râ   c                 ó,   •— g | ]}|‰z  ‰z  |‰z  z  ‘ŒS r’   r’   )r“   ÚrawÚ	innerMaskÚ	outerMaskÚ
outerShifts     €€€r0   rN  z'VarIdxMapValue.read.<locals>.<listcomp>Á  s;   ø€ ð 
ð 
ð 
àð �Y‰ :Ñ-°#¸	±/ÑBð
ð 
ð 
r2   ©r3  r  ÚreadUInt24Arrayrû   )r   r�   rˆ   rš   Úfmtrs  Ú	innerBitsÚ	entrySizer�   rŠ  r‹  rŒ  s            @@@r0   r†   zVarIdxMapValue.read°  sÈ   øøø€ Ø˜Ô&ˆØ˜>Ô*ˆà˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø Ñ*ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ$ØÔ%ØÔ%ØÔ$ð	
ð 
ð
 ôˆ	ð
ð 
ð 
ð 
ð 
ð 
à �y Ñ(Ô(ð
ñ 
ô 
ð 	
r2   Nc                 ó   ‡‡— |d         }|}|d                               t          |¦  «        ¦  «         d|dz  z   }d|z  dz
  Šd|z
  Šd|dz  dz	  z   }	|j        |j        |j        |j        dœ|	         }
 |
ˆˆfd	„|D ¦   «         ¦  «         d S )
Nr…  rr   r   rÎ  r›  r†  râ   r‡  c                 ó,   •— g | ]}|d z  ‰z	  |‰z  z  ‘ŒS )l     þ r’   )r“   ÚidxrŠ  rŒ  s     €€r0   rN  z(VarIdxMapValue.write.<locals>.<listcomp>Ø  s<   ø€ ð ð ð àð ˜Ñ#¨
Ñ2°s¸Y±ÑGðð ð r2   )ÚsetValuerÎ  r7  r#  ÚwriteUInt24Arrayr  )r   r¬   rˆ   rš   r­   r²   r�  r“  r�  r‘  r¯   rŠ  rŒ  s              @@r0   r©   zVarIdxMapValue.writeÆ  sã   øø€ Ø˜Ô&ˆØˆØˆ~Ô×'Ò'­¨G©¬Ñ5Ô5Ð5à˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ%ØÔ&ØÔ&ØÔ%ð	
ð 
ð
 ôˆ
ð 	ˆ
ðð ð ð ð à"ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r2   r,   rú  r’   r2   r0   rƒ  rƒ  ¯  s7   € € € € € ð
ð 
ð 
ð,
ð 
ð 
ð 
ð 
ð 
r2   rƒ  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚVarDataValuec                 ój  — g }|d         }|d         }t          |dz  ¦  «        }|dz  }|r|j        |j        }	}n|j        |j        }	}t	          ||¦  «        t          ||¦  «        }}
|                      ||
¦  «        ¦  «         |                      |	||
z
  ¦  «        ¦  «         ||k    r||d …= |S )Nrq   Ú	NumShortsé €  éÿ  )Úboolrè   r  r)  rd  r  Úextend)r   r�   rˆ   rš   rS   ÚregionCountÚ	wordCountÚ	longWordsÚreadBigArrayÚreadSmallArrayÚn1Ún2s               r0   r†   zVarDataValue.readà  sØ   € ØˆàÐ 0Ô1ˆØ˜kÔ*ˆ	õ ˜ VÑ+Ñ,Ô,ˆ	Ø Ñ&ˆ	àð 	WØ+1Ô+?ÀÔAV˜.ˆLˆLà+1Ô+@À&ÔBV˜.ˆLå�[ )Ñ,Ô,­c°+¸yÑ.IÔ.IˆBˆØ�Š�l�l 2Ñ&Ô&Ñ'Ô'Ð'Ø�Š�n�n R¨"¡WÑ-Ô-Ñ.Ô.Ð.Ø�ÒÐØ�{�|�|Ð$àˆr2   Nc                 ót  — |d         }|d         }t          |dz  ¦  «        }|dz  }|j        |j        f|j        |j        fdœ|         \  }	}
t	          ||¦  «        t          ||¦  «        }} |	|d |…         ¦  «          |
|||…         ¦  «         ||k    r|                     dg||z
  z  ¦  «         d S d S )Nrq   rš  r›  rœ  rÀ  r   )r�  r  r-  rï   rd  r  ÚwriteSmallArray)r   r¬   rˆ   rš   rS   r²   rŸ  r   r¡  ÚwriteBigArrayr§  r¤  r¥  s                r0   r©   zVarDataValue.write÷  s÷   € ØÐ 0Ô1ˆØ˜kÔ*ˆ	õ ˜ VÑ+Ñ,Ô,ˆ	Ø Ñ&ˆ	ð Ô*¨FÔ,AÐBØÔ(¨&Ô*@ÐAð,
ð ,
ð ô,Ñ(ˆ˜õ
 �[ )Ñ,Ô,­c°+¸yÑ.IÔ.IˆBˆØˆ�f˜S˜b˜S”kÑ"Ô"Ð"Øˆ˜˜r +˜~Ô.Ñ/Ô/Ð/Ø�ÒÐØ×"Ò" A 3¨"¨{Ñ*:Ñ#;Ñ<Ô<Ð<Ð<Ð<ð Ðr2   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rÑ   r|  r¹   s         r0   r»   zVarDataValue.xmlWrite
  r}  r2   c                 ó,   — t          |d         ¦  «        S rÑ   r  r´   s       r0   r·   zVarDataValue.xmlRead  r€  r2   r,   r�  r’   r2   r0   r˜  r˜  ß  sU   € € € € € ðð ð ð.=ð =ð =ð =ð&ð ð ð(ð (ð (ð (ð (r2   r˜  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚTupleValuesc                 ó8   — t          j        d |¦  «        d         S rÞ   )r	   ÚdecompileDeltas_)r   rÊ  rˆ   s      r0   r†   zTupleValues.read  s   € ÝÔ.¨t°TÑ:Ô:¸1Ô=Ð=r2   Nc                 ón   — |j         t                   }t          t          j        || ¬¦  «        ¦  «        S )N)ÚoptimizeSize)Úcfgr   Úbytesr	   ÚcompileDeltaValues_)r   r¬   rˆ   rš   rS   r²   ÚoptimizeSpeeds          r0   r©   zTupleValues.write  s7   € ØœÕ!4Ô5ˆÝÝÔ.¨vÈÐDUÐVÑVÔVñ
ô 
ð 	
r2   c                 ó,   — t          |d         ¦  «        S rÑ   r  r´   s       r0   r·   zTupleValues.xmlRead  r€  r2   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rÑ   r|  r¹   s         r0   r»   zTupleValues.xmlWrite  r}  r2   r,   r¹  r’   r2   r0   r¬  r¬    sU   € € € € € ð>ð >ð >ð
ð 
ð 
ð 
ð(ð (ð (ðð ð ð ð r2   r¬  c                   ó<   — e Zd Z	 d	ddddœd„Zd„ Zd	d„Zd„ Zd„ ZdS )
Ú	CFF2IndexNrh   )Ú	itemClassÚitemConverterClassrC   c                óz   — t                                | |||||¬¦  «         || _        |�
 |¦   «         nd | _        d S rÃ  )rg   r€   Ú
_itemClassÚ
_converter)r   r]   r^   r_   rQ   r¹  rº  rC   s           r0   r€   zCFF2Index.__init__%  sY   € õ 	×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð $ˆŒà$6Ð$BÐÐÑ Ô Ð Èð 	Œˆˆr2   c                 ó®  ‡ ‡‡‡‡‡— ‰                      ¦   «         Š‰dk    rg S ‰                     ¦   «         Šd„ Š ‰‰‰¦  «        }‰j        duo‰dk    }|s× |‰dz   ¦  «        }g }|                     d¦  «        }‰                     |dz
  ¦  «         |D ]•}	||	k    sJ ‚‰                     |	|z
  ¦  «        }
‰ j        �3‰                      ¦   «         }|                     |
‰‰j        ¦  «         |}
n"‰ j        �‰ j         	                    |
‰¦  «        }
| 
                    |
¦  «         |	}Œ–|S ˆˆˆˆˆˆ fd„} |¦   «         }t          |g‰z  ¦  «        }|S )Nr   c                 óD   — | j         | j        | j        | j        dœ|         S )Nr‡  r�  )r�   ÚoffSizes     r0   ÚgetReadArrayz$CFF2Index.read.<locals>.getReadArray>  s3   € àÔ(ØÔ)ØÔ)ØÔ(ð	ð ð
 ôð r2   Fr‚   r   c                  ó�   •‡‡‡‡— ‰	                      ¦   «         Š‰	j        Š‰‰dz   ‰z  z   dz
  Š ‰‰‰¦  «        Šˆˆˆˆˆˆˆ
fd„} | S )Nr   c                 ó�  •— ‰	                      ‰| ‰z  z   ¦  «          ‰d¦  «        }‰	                      ‰|d         z   ¦  «         ‰	                     |d         |d         z
  ¦  «        }‰
j        �3‰
                     ¦   «         }|                     |‰‰	j        ¦  «         |}n"‰
j        �‰
j                             |‰¦  «        }|S )Nr  r   r   )r…   rÈ  r¼  rÓ  Ú
localStater½  r†   )r‡   r«  r­  ÚobjÚdata_posrˆ   rÀ  Ú
offset_posr�   rŠ   r   s       €€€€€€€r0   rŒ   z8CFF2Index.read.<locals>.get_read_item.<locals>.read_iteme  sÅ   ø€ Ø×$Ò$ Z°!°g±+Ñ%=Ñ>Ô>Ð>Ø'˜i¨™lœl�GØ×$Ò$ X°¸´
Ñ%:Ñ;Ô;Ð;Ø&×/Ò/°¸´
¸WÀQ¼ZÑ0GÑHÔH�Dà”Ð2Ø"ŸošoÑ/Ô/˜ØŸš d¨D°+Ô2HÑIÔIÐIØ"˜˜ØœÐ4Ø#œ×3Ò3°D¸$Ñ?Ô?˜Ø�Kr2   r�   )rŒ   rÆ  rÇ  r�   rŠ   r›   rˆ   rÁ  rÀ  r�   r   s    @@@@€€€€€€r0   r�   z%CFF2Index.read.<locals>.get_read_item_  sƒ   øøøøø€ Ø$Ÿkšk™mœm�Ø#œZ�
Ø%¨°©°gÑ(=Ñ=ÀÑA�Ø(˜L¨°gÑ>Ô>�	ð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð !Ð r2   )rø   r1  r•   ÚpoprÈ  r¼  rÓ  rÄ  r½  r†   rW   r   )r   r�   rˆ   rš   r�   r•   r«  rð  Ú
lastOffsetr  r­  rÅ  r�   rŒ   rœ   r›   rÁ  rÀ  s   ```            @@@r0   r†   zCFF2Index.read8  s¸  øøøøøø€ Ø× Ò Ñ"Ô"ˆØ�AŠ:ˆ:ØˆIØ×"Ò"Ñ$Ô$ˆð	ð 	ð 	ð !�L ¨Ñ1Ô1ˆ	àŒy Ð%Ð3¨%°!ª)ˆØð 1	Ø�i ¨¡	Ñ*Ô*ˆGØˆEØ Ÿš Q™œˆJØ�OŠO˜J¨™NÑ+Ô+Ð+à!ð $ð $�Ø! VÒ+Ð+Ð+Ð+Ø—’ v°
Ñ':Ñ;Ô;�à”?Ð.ØŸ/š/Ñ+Ô+�CØ—M’M $¨¨fÔ.?Ñ@Ô@Ð@Ø�D�DØ”_Ð0Øœ?×/Ò/°°dÑ;Ô;�Dà—’˜TÑ"Ô"Ð"Ø#�
�
ØˆLð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð, &˜™œˆIÝ˜)˜ uÑ,Ñ-Ô-ˆAð ˆHr2   c                 ó<  ‡ ‡‡‡— |}‰                      t          |¦  «        ¦  «         t          |¦  «        sd S ‰ j        �ˆfd„|D ¦   «         }n%‰ j        �ˆˆ ˆˆfd„t	          |¦  «        D ¦   «         }d„ |D ¦   «         }t          t          |d¬¦  «        ¦  «        }|d         }|dk     rdn|dk     rd	n	|d
k     rdnd}	‰                     |	¦  «         ‰j        ‰j	        ‰j
        ‰j        dœ|	         }
 |
|¦  «         |D ]}‰                     |¦  «         Œd S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r’   rÖ  )r“   r­  rˆ   s     €r0   rN  z#CFF2Index.write.<locals>.<listcomp>„  s%   ø€ Ð:Ð:Ð:¨D�T—\’\ $Ñ'Ô'Ð:Ð:Ð:r2   c           	      óR   •— g | ]#\  }}‰j                              ‰‰‰||¦  «        ‘Œ$S r’   )r½  r©   )r“   r‡   r­  rˆ   r   rš   r¬   s      €€€€r0   rN  z#CFF2Index.write.<locals>.<listcomp>†  sE   ø€ ð ð ð á�A�tð ”×%Ò% f¨d°I¸tÀQÑGÔGðð ð r2   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r’   )rÎ  )r“   r­  s     r0   rN  z#CFF2Index.write.<locals>.<listcomp>‹  s   € Ð/Ð/Ð/ •3�t‘9”9Ð/Ð/Ð/r2   r   )Úinitialr)  é   i   r  i   r:  râ   r‡  )rÿ   rÎ  r¼  r½  r¨   rO  r'   r5  r7  r#  r–  r  rÏ  )r   r¬   rˆ   rš   rS   r²   rð  r«  rÉ  rÀ  r¯   r­  s   ````        r0   r©   zCFF2Index.write|  s›  øøøø€ Øˆà×Ò�#˜e™*œ*Ñ%Ô%Ð%Ý�5‰zŒzð 	ØˆFàŒ?Ð&Ø:Ð:Ð:Ð:°EÐ:Ñ:Ô:ˆEˆEØŒ_Ð(ðð ð ð ð ð ð å(¨Ñ/Ô/ðñ ô ˆEð
 0Ð/¨Ð/Ñ/Ô/ˆÝ•z '°1Ð5Ñ5Ô5Ñ6Ô6ˆà˜R”[ˆ
ð ˜EÒ!Ð!ð ˆAà  7Ò*Ð*��°ZÀ)Ò5KÐ5K°°ÐQRð 	ð
 	×Ò˜'Ñ"Ô"Ð"ð Ô%ØÔ&ØÔ&ØÔ%ð	
ð 
ð
 ôˆ
ð 	ˆ
�7ÑÔÐØð 	#ð 	#ˆDØ×Ò˜TÑ"Ô"Ð"Ð"ð	#ð 	#r2   c                 óÎ   — | j         �.|                       ¦   «         }|                     d |||¦  «         |S | j        �| j                             |||¦  «        S t	          ¦   «         ‚r,   )r¼  râ  r½  r·   r¤   )r   rµ   r¶   rˆ   rÅ  s        r0   r·   zCFF2Index.xmlRead¡  sd   € ØŒ?Ð&Ø—/’/Ñ#Ô#ˆCØ�KŠK˜˜e W¨dÑ3Ô3Ð3ØˆJØŒ_Ð(Ø”?×*Ò*¨5°'¸4Ñ@Ô@Ð@å%Ñ'Ô'Ð'r2   c           
      ó  — | j         �2t          |¦  «        D ] \  }}|                     ||d|fg|¦  «         Œ!d S | j        �;t          |¦  «        D ])\  }}| j                             |||||d|fgz   ¦  «         Œ*d S t          ¦   «         ‚)Nr;  )r¼  r¨   rÙ  r½  r»   r¤   )r   rº   rˆ   r­   r]   rµ   r‡   r­  s           r0   r»   zCFF2Index.xmlWrite«  sÄ   € ØŒ?Ð&Ý$ UÑ+Ô+ð Bð B‘��4Ø—
’
˜9 d¨g°q¨\¨N¸DÑAÔAÐAÐAðBð BàŒ_Ð(Ý$ UÑ+Ô+ð ð ‘��4Ø”×(Ò(Ø˜t T¨4°¸7ÀA¸,¸Ñ1Gñô ð ð ðð õ
 &Ñ'Ô'Ð'r2   r,   )rU   rÄ   rÅ   r€   r†   r©   r·   r»   r’   r2   r0   r¸  r¸  $  sˆ   € € € € € ð ð
ð ØØð
ð 
ð 
ð 
ð 
ð&Bð Bð BðH##ð ##ð ##ð ##ðJ(ð (ð (ð
(ð 
(ð 
(ð 
(ð 
(r2   r¸  c                   ó   — e Zd Zd„ ZdS )Ú
LookupFlagc                 ó  — |                      ||d|fgz   ¦  «         g }|dz  r|                     d¦  «         |dz  r|                     d¦  «         |dz  r|                     d¦  «         |dz  r|                     d	¦  «         |d
z  r|                     d¦  «         |dz  r|                     d|dz	  z  ¦  «         |r(|                     d                     |¦  «        ¦  «         |                     ¦   «          d S )Nr­   r   ÚrightToLeftr  ÚignoreBaseGlyphsrâ   ÚignoreLigaturesr‚   ÚignoreMarksr›  ÚuseMarkFilteringSeti ÿ  zmarkAttachmentType[%i]rs  )rÒ   rW   rF  rt  rÓ   ru  s          r0   r»   zLookupFlag.xmlWrite¹  s*  € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=ØˆØ�4‰<ð 	(Ø�LŠL˜Ñ'Ô'Ð'Ø�4‰<ð 	-Ø�LŠLÐ+Ñ,Ô,Ð,Ø�4‰<ð 	,Ø�LŠLÐ*Ñ+Ô+Ð+Ø�4‰<ð 	(Ø�LŠL˜Ñ'Ô'Ð'Ø�4‰<ð 	0Ø�LŠLÐ.Ñ/Ô/Ð/Ø�6‰>ð 	BØ�LŠLÐ1°U¸a±ZÑ@ÑAÔAÐAØð 	/Ø×Ò˜cŸhšh u™oœoÑ.Ô.Ð.Ø×ÒÑÔÐÐÐr2   NrG  r’   r2   r0   rÓ  rÓ  ¸  s#   € € € € € ðð ð ð ð r2   rÓ  c                   óN   ‡ — e Zd ZeZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zˆ xZ	S )Ú
_UInt8Enumc                 óp   •— |                       t          ¦   «                              |||¦  «        ¦  «        S r,   )Ú	enumClassr¥  r†   )r   r�   rˆ   rš   r¨  s       €r0   r†   z_UInt8Enum.readÐ  s)   ø€ Ø�~Š~�e™gœgŸlšl¨6°4¸ÑCÔCÑDÔDÐDr2   c                 óP   — t          | j        |                     ¦   «         ¦  «        S r,   )r‡  rÝ  Úupperr�  s     r0   rÏ   z_UInt8Enum.fromStringÓ  s   € å�s”} e§k¢k¡m¤mÑ4Ô4Ð4r2   c                 óZ   — |                       |¦  «        j                             ¦   «         S r,   )rÝ  r]   Úlowerr�  s     r0   rÌ   z_UInt8Enum.toString×  s#   € à�}Š}˜UÑ#Ô#Ô(×.Ò.Ñ0Ô0Ð0r2   )
rU   rÄ   rÅ   r—   rÝ  r†   r˜  rÏ   rÌ   r­  r®  s   @r0   rÛ  rÛ  Í  sx   ø€ € € € € Ø€IðEð Eð Eð Eð Eð ð5ð 5ñ „[ð5ð ð1ð 1ñ „[ð1ð 1ð 1ð 1ð 1r2   rÛ  c                   ó   — e Zd ZeZdS )r#   N)rU   rÄ   rÅ   Ú_ExtendModerÝ  r’   r2   r0   r#   r#   Ü  s   € € € € € Ø€I€I€Ir2   r#   c                   ó   — e Zd ZeZdS )r$   N)rU   rÄ   rÅ   Ú_CompositeModerÝ  r’   r2   r0   r$   r$   à  s   € € € € € Ø€I€I€Ir2   r$   Úint8Úint16Úint32r9   r5   Úuint24r:   Úchar64râ  ÚOffsetÚLOffsetÚOffset24Ú	TupleList)rº  ÚVarCompositeGlyphList)r¹  c                 ó.   — t          t          | ¬¦  «        S ©N)rQ   )r(   r=  ©ÚCs    r0   r1   r1     ó   € �7¥9¸Ð;Ñ;Ô;€ r2   c                 ó.   — t          t          | ¬¦  «        S rñ  )r(   r£  rò  s    r0   r1   r1     s   € ­Õ1HÐUVÐ)WÑ)WÔ)W€ r2   c                 ó.   — t          t          | ¬¦  «        S rñ  )r(   rè  rò  s    r0   r1   r1     rô  r2   c                 ó.   — t          t          | ¬¦  «        S rñ  )r(   rT   rò  s    r0   r1   r1     s   € �'¥%°AÐ6Ñ6Ô6€ r2   c                 ó.   — t          t          | ¬¦  «        S rñ  )r(   r  rò  s    r0   r1   r1     s   € �7¥6°aÐ8Ñ8Ô8€ r2   c                 ó.   — t          t          | ¬¦  «        S rñ  )r(   r  rò  s    r0   r1   r1     s   € �W¥W¸Ð;Ñ;Ô;€ r2   )rP  rb  rD   rE   rF   r"   r=  r£  rè  ÚOffsetToÚ	LOffsetToÚLOffset24To)|ÚfontTools.misc.fixedToolsr   r�  r   r’  r   r—  r   r”  r   rµ  r   r·  Ú%fontTools.ttLib.tables.TupleVariationr	   ÚfontTools.misc.roundToolsr
   r   ÚfontTools.misc.textToolsr   r   r   r   r   ÚfontTools.misc.lazyToolsr   ÚfontTools.ttLibr   r   r;  r   r   r   r   r   ÚotTablesr   r   r   r   r   r   r    r!   r"   r#   rã  r$   rå  r%   Ú	itertoolsr&   r'   Ú	functoolsr(   Útypesr)   rÇ   râ  Útypingr*   ÚloggingÚ	getLoggerrU   rk  rÜ  re   Úobjectrg   rÉ   r×   rÜ   rá   rõ   r  r
  r  r  r%  r/  r9  rC  rJ   rK   rL   rN  rT  rb  re  ro  rx  r}  r„  rš  rž  r¡  r°  r²  r¾  rO   rM   rT   r  r  r=   r;   r<   r>   r4   r2  r=  r£  r»  rè  rP  rb  rl  rƒ  r˜  r¬  r¸  rÓ  rÛ  rN   r’   r2   r0   ú<module>r     s$  ððð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ -Ð -Ð -Ð -Ð -Ð -Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€ð €gÔ˜Ñ!Ô!€Ø
(Ð
(€ð=(ð =(ð =(ð@eð eð eð eð e�Fñ eô eð eðP/ð /ð /ð /ð /�-ñ /ô /ð /ð"ð ð ð ð �Kñ ô ð ðð ð ð ð ˆ{ñ ô ð ð&ð &ð &ð &ð &ˆ8ñ &ô &ð &ð 'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð  ð  ð  ð  ð  ˆeñ  ô  ð  ð!ð !ð !ð !ð !ˆ}˜eñ !ô !ð !ð'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð (ð (ð (ð (ð (ˆXñ (ô (ð (ð &ð &ð &ð &ð &ˆ8ñ &ô &ð &ð 'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð "ð "ð "ð "ð "ˆXñ "ô "ð "ð ð  ð  ð  ð  �(ñ  ô  ð  ð	ð 	ð 	ð 	ð 	�K ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�[ &ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�K ñ 	ô 	ð 	ðð ð ð ð ˆ+ñ ô ð ðAð Að Að Að Aˆkñ Aô Að Að&ð ð ð ð �ñ ô ð ð
ð ð ð ð ˆVñ ô ð ð$ð ð ð ð �ñ ô ð ðð ð ð ð �ñ ô ð ð.ð .ð .ð .ð .�ñ .ô .ð .ð0ð 0ð 0ð 0ð 0�Zñ 0ô 0ð 0ð:ð ð ð ð ˆNñ ô ð ð ð  ð  ð  ð  ˆnñ  ô  ð  ð>ð >ð >ð >ð >ˆGñ >ô >ð >ð0ð ð ð ð �%ñ ô ð ðð ð ð ð ˆkñ ô ð ð0ð ð ð ð ˆ[ñ ô ð ð>D4ð D4ð D4ð D4ð D4ˆ]ñ D4ô D4ð D4ðN>ð >ð >ð >ð >�vñ >ô >ð >ð6+ð +ð +ð +ð +ˆFñ +ô +ð +ðDð ð ð ð ˆUñ ô ð ðð ð ð ð ˆeñ ô ð ðMð Mð Mð Mð M�ñ Mô Mð MðLð Lð Lð Lð Lˆuñ Lô Lð LðGð Gð Gð Gð G�&˜(ñ Gô Gð GðLð Lð Lð Lð L�Eñ Lô Lð Lð8ð 8ð 8ð 8ð 8�(ñ 8ô 8ð 8ð&ð ð ð ð �+ñ ô ð ð0tð tð tð tð t�ñ tô tð tð|8=ð 8=ð 8=ð 8=ð 8=˜mñ 8=ô 8=ð 8=ðv|>ð |>ð |>ð |>ð |>˜Mñ |>ô |>ð |>ðBpð pð pð pð p�ñ pô pð pðf	ð ð ð ð �-ñ ô ð ðD,ð ,ð ,ð ,ð ,�-ñ ,ô ,ð ,ð^2(ð 2(ð 2(ð 2(ð 2(�ñ 2(ô 2(ð 2(ðj-
ð -
ð -
ð -
ð -
�]ñ -
ô -
ð -
ð`0(ð 0(ð 0(ð 0(ð 0(�=ñ 0(ô 0(ð 0(ðfð ð ð ð ñ ô ð ð$Q(ð Q(ð Q(ð Q(ð Q(�ñ Q(ô Q(ð Q(ðhð ð ð ð �ñ ô ð ð*1ð 1ð 1ð 1ð 1�ñ 1ô 1ð 1ðð ð ð ð �ñ ô ð ðð ð ð ð �Jñ ô ð ð2à
ˆDð2ð ˆUð2ð ˆTð	2ð
 ˆUð2ð ˆfð2ð ˆfð2ð ˆeð2ð ˆfð2ð ˆwð2ð �ð2ð ˆwð2ð 
ˆ3ð2ð ˆwð2ð �ð2ð  ˆfð!2ð" �*ð#2ð$ ˆUð%2ð 2ð& ˆwð'2ð( ˆUð)2ð* �;ð+2ð, ˆfð-2ð. ˆeð/2ð0 ˆvð12ð2 �ð32ð4 �;ð52ð6 �*ð72ð8 �nð92ð: �Lð;2ð< �*ð=2ð> �*ð?2ð@ �]ðA2ðB �ðC2ðD ��˜°{ÐCÑCÔCðE2ðF ˜W˜W YÐ:KÐLÑLÔLðG2ð 2ðJ ØØ!Ø$Ø!Ø)à;Ð;ØWÐWØ;Ð;Ø6Ð6Ø8Ð8Ø;Ð;ðc2ð 2ð 2Ð Ð Ð r2   