§
    ‚ÛgY! ã                   ó°  — 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 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.Z/m0Z0 d d
l1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8Z8d dl9Z9d dl:m;Z; d dl<Z< e<j=        e>¦  «        Z?d„ Z@d„ ZA G d„ deB¦  «        ZC G d„ deC¦  «        ZD G d„ deD¦  «        ZE G d„ deD¦  «        ZF G d„ deF¦  «        ZG G d„ deF¦  «        ZH G d„ deH¦  «        ZI G d„ d eEeH¦  «        ZJ G d!„ d"eF¦  «        ZK G d#„ d$eF¦  «        ZL G d%„ d&eF¦  «        ZM G d'„ d(eF¦  «        ZN G d)„ d*eF¦  «        ZO G d+„ d,eF¦  «        ZP G d-„ d.ePeN¦  «        ZQ G d/„ d0ePeL¦  «        ZR G d1„ d2ePeH¦  «        ZS G d3„ d4eD¦  «        ZT G d5„ d6eD¦  «        ZU G d7„ d8eU¦  «        ZV G d9„ d:eL¦  «        ZW G d;„ d<eL¦  «        ZX G d=„ d>eD¦  «        ZY G d?„ d@eY¦  «        ZZ G dA„ dBeY¦  «        Z[ G dC„ dDe[¦  «        Z\ G dE„ dFe[¦  «        Z] G dG„ dHe]¦  «        Z^ G dI„ dJe^¦  «        Z_ G dK„ dLeD¦  «        Z` G dM„ dNeD¦  «        Za G dO„ dPeC¦  «        Zb G dQ„ dReb¦  «        Zc G dS„ dTeb¦  «        Zd G dU„ dVed¦  «        Ze G dW„ dXed¦  «        Zf G dY„ dZeb¦  «        Zg G d[„ d\ed¦  «        Zh G d]„ d^eeeh¦  «        Zi G d_„ d`ed¦  «        Zj G da„ dbeF¦  «        Zk G dc„ ddek¦  «        Zl G de„ dfeC¦  «        Zm G dg„ dheC¦  «        Zn G di„ djeC¦  «        Zo G dk„ dleC¦  «        Zp G dm„ dneC¦  «        Zq G do„ dpeC¦  «        Zr G dq„ dreC¦  «        Zs G ds„ dteC¦  «        Zt G du„ dveC¦  «        Zu G dw„ dx¦  «        Zv G dy„ dzeC¦  «        Zw G d{„ d|eL¦  «        Zx G d}„ d~eN¦  «        Zy G d„ d€ey¦  «        Z, G d�„ d‚ey¦  «        Z.i dƒeM“d„eK“d…eG“d†eN“d‡eL“dˆeO“d‰eH“dŠea“deI“d eJ“dLe`“d4eT“d6eU“d8eV“d:eW“d@eZ“dDe\“i dFe]“dHe^“dJe_“d‹eb“dŒed“d�ee“dŽef“ddel“dres“dtet“dveu“d|ex“d€e,“d‚e.“d<eX“d� e5ewev¬�¦  «        “d‘ e5ewe$¬’¦  «        “¥eqerecececeod“„ d”„ d•„ d–„ d—„ d˜„ d™œ¥ZzdS )šé    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚensureVersionIsLongÚversionToFixed)ÚTupleVariation)ÚnearestMultipleShortestReprÚotRound)Ú	bytesjoinÚtobytesÚtostrÚpadÚsafeEval)ÚLazyList)Ú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    úY/granary/edev/quantum/lib/python3.11/site-packages/fontTools/ttLib/tables/otConverters.pyú<lambda>r0   -   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)Úuint8r4   Úuint32ÚSubTableÚExtSubTableÚ	SubStructÚFeatureParams)ÚCIDGlyphMappingÚGlyphCIDMappingú(©Údescription)Ú	MortChainÚMortSubtableÚ	MorxChain)r:   r;   r<   r   ÚfeatureParamTypes)Ú
startswithr3   ÚendswithÚComputedUInt8ÚComputedUShortÚComputedULongr:   r;   r<   r=   ÚStructWithLengthÚconverterMappingÚStructÚevalÚ
tableClassÚgetr   ÚvaluesÚTableÚ__name__rF   ÚdefaultFeatureParamsÚappend)Ú	tableSpecÚtableNamespaceÚ
convertersÚconvertersByNameÚtpÚnameÚrepeatÚauxÚdescrÚ	tableNameÚconverterClassÚconvrP   r.   Úclss                  r/   ÚbuildConvertersrd   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Ñ+Ô+Ð+Ø!%Ð˜ÑÑØÐ'Ð'Ð'r1   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Ú rA   c                ó,  — || _         || _        || _        | j        r"| j        st          | j        dd¦  «        | _        || _        |                     d¦  «        p|dv | _        |                     d¦  «        p|dk    | _        |dv | _        || _	        d S )Nz<string>rO   r5   )ÚDesignAxisRecordSizeÚValueRecordSizeÚ
LookupTyper7   )Ú
ClassCountÚClass2CountÚ
FeatureTagÚSettingsCountÚVarRegionCountÚMappingCountÚRegionAxisCountÚDesignAxisCountri   ÚAxisValueCountrj   Ú	AxisCountÚBaseGlyphRecordCountÚLayerRecordCountÚAxisIndicesList)
r\   r]   r^   ÚcompilerP   rH   ÚisCountÚisLookupTypeÚisPropagatedrB   ©Úselfr\   r]   r^   rP   rB   s         r/   Ú__init__zBaseConverter.__init__t   s¬   € ØˆŒ	ØˆŒØˆŒØŒ8ð 	=˜DœKð 	=Ý˜tœx¨°VÑ<Ô<ˆDŒHØ$ˆŒØ—}’} WÑ-Ô-ð 
°ð :
ð 2
ˆŒð !ŸMšM¨,Ñ7Ô7ÐN¸4À;Ò;NˆÔØ ð %
ð 
ˆÔð" 'ˆÔÐÐr1   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    €€€€€r/   Ú	read_itemzABaseConverter.readArray.<locals>.get_read_item.<locals>.read_item¥   s6   ø€ Ø×$Ò$ S¨1¨z©>Ñ%9Ñ:Ô:Ð:ØŸ9š9 [°$¸Ñ;Ô;Ð;r1   ©Úcopyrˆ   )r‹   rˆ   r‰   r‡   ÚreaderrŠ   r~   s    @@€€€€r/   Úget_read_itemz.BaseConverter.readArray.<locals>.get_read_item¡   sN   øøø€ Ø$Ÿkšk™mœm�Ø”j�ð<ð <ð <ð <ð <ð <ð <ð <ð <ð !Ð r1   c              3   ó   •K  — | ]}‰V — Œd S r+   © )Ú.0r†   r‹   s     €r/   ú	<genexpr>z*BaseConverter.readArray.<locals>.<genexpr>¬   s#   øè è € Ð9Ð9 q˜Ð9Ð9Ð9Ð9Ð9Ð9r1   )ÚlazyÚgetRecordSizeÚNotImplementedÚrangerV   r…   r   Úadvance)r~   rŽ   r‡   Ú	tableDictÚcountr”   Úlr†   r�   r‹   rŠ   s   ```      @@r/   Ú	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 :Ñ-Ñ.Ô.Ð.àˆHr1   c                 ó>   — t          | d¦  «        r| j        S t          S )NÚ
staticSize)Úhasattrrž   r–   ©r~   rŽ   s     r/   r•   zBaseConverter.getRecordSize±   s"   € Ý�4˜Ñ&Ô&ð 	#Ø”?Ð"ÝÐr1   c                 ó    — t          | ¦  «        ‚)zRead a value from the reader.©ÚNotImplementedError©r~   rŽ   r‡   r™   s       r/   r…   zBaseConverter.read¶   ó   € å! $Ñ'Ô'Ð'r1   c                 óª   — 	 t          |¦  «        D ]\  }}|                      |||||¦  «         Œd S # t          $ r}|j        |fz   |_        ‚ d }~ww xY wr+   )Ú	enumerateÚwriteÚ	ExceptionÚargs)r~   Úwriterr‡   r™   rR   r†   ÚvalueÚes           r/   Ú
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         r/   r¨   zBaseConverter.writeÂ   r¥   r1   c                 ó    — t          | ¦  «        ‚)zRead a value from XML.r¢   ©r~   ÚattrsÚcontentr‡   s       r/   ÚxmlReadzBaseConverter.xmlReadÆ   r¥   r1   c                 ó    — t          | ¦  «        ‚)zWrite a value to XML.r¢   ©r~   Ú	xmlWriterr‡   r¬   r\   r´   s         r/   ÚxmlWritezBaseConverter.xmlWriteÊ   r¥   r1   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ÚsearchrB   ÚintÚgroup)r~   Úms     r/   ÚgetVarIndexOffsetzBaseConverter.getVarIndexOffsetÐ   s>   € àÔ)×0Ò0°Ô1AÑBÔBˆØð 	Ø�4Ý�1—7’7˜1‘:”:‰ŒÐr1   r+   )rT   Ú
__module__Ú__qualname__Ú__doc__r   rœ   r•   r…   r®   r¨   r¶   rº   Úrery   r½   r)   r¿   rÂ   r‘   r1   r/   rf   rf   p   sà   € € € € € ðð ð'È"ð 'ð 'ð 'ð 'ð 'ð>ð ð ð<ð ð ð
(ð (ð (ðð ð ð(ð (ð (ð (ð(ð (ð (ð(ð (ð (ð  *˜rœzÐ*FÑGÔGÐð 8¨C¤=ð ð ð ð ð ð r1   rf   c                   óF   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ ZdS )ÚSimpleValuec                 ó   — | S r+   r‘   ©r¬   s    r/   ÚtoStringzSimpleValue.toStringÙ   ó   € àˆr1   c                 ó   — | S r+   r‘   rÊ   s    r/   Ú
fromStringzSimpleValue.fromStringÝ   rÌ   r1   c                 óŒ   — |                      ||d|                      |¦  «        fgz   ¦  «         |                     ¦   «          d S ©Nr¬   )Ú	simpletagrË   Únewliner¸   s         r/   rº   zSimpleValue.xmlWriteá   sI   € Ø×Ò˜D %¨G°T·]²]À5Ñ5IÔ5IÐ+JÐ*KÑ"KÑLÔLÐLØ×ÒÑÔÐÐÐr1   c                 ó8   — |                       |d         ¦  «        S rÐ   )rÎ   r³   s       r/   r¶   zSimpleValue.xmlReadå   s   € Ø�Š˜u Wœ~Ñ.Ô.Ð.r1   N)rT   rÃ   rÄ   ÚstaticmethodrË   rÎ   rº   r¶   r‘   r1   r/   rÈ   rÈ   Ø   sf   € € € € € Øðð ñ „\ðð ðð ñ „\ððð ð ð/ð /ð /ð /ð /r1   rÈ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚOptionalValueNc                 óÄ   — || j         k    r*|                     d|                      |¦  «        f¦  «         |                     ||¦  «         |                     ¦   «          d S rÐ   )ÚDEFAULTrV   rË   rÑ   rÒ   r¸   s         r/   rº   zOptionalValue.xmlWriteì   s`   € Ø�D”LÒ Ð Ø�LŠL˜' 4§=¢=°Ñ#7Ô#7Ð8Ñ9Ô9Ð9Ø×Ò˜D %Ñ(Ô(Ð(Ø×ÒÑÔÐÐÐr1   c                 óN   — d|v r|                       |d         ¦  «        S | j        S rÐ   )rÎ   rØ   r³   s       r/   r¶   zOptionalValue.xmlReadò   s+   € Ø�eÐÐØ—?’? 5¨¤>Ñ2Ô2Ð2ØŒ|Ðr1   )rT   rÃ   rÄ   rØ   rº   r¶   r‘   r1   r/   rÖ   rÖ   é   s7   € € € € € Ø€Gðð ð ðð ð ð ð r1   rÖ   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚIntValuec                 ó"   — t          | d¦  «        S ©Nr   )r¿   rÊ   s    r/   rÎ   zIntValue.fromStringù   s   € å�5˜!‰}Œ}Ðr1   N©rT   rÃ   rÄ   rÔ   rÎ   r‘   r1   r/   rÛ   rÛ   ø   s-   € € € € € Øðð ñ „\ðð ð r1   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       r/   r…   z	Long.read  ó   € Ø�ŠÑ Ô Ð r1   c                 ó,   — |                      |¦  «        S r+   )ÚreadLongArray©r~   rŽ   r‡   r™   rš   s        r/   rœ   zLong.readArray  ó   € Ø×#Ò# EÑ*Ô*Ð*r1   Nc                 ó0   — |                      |¦  «         d S r+   )Ú	writeLongr°   s         r/   r¨   z
Long.write  ó   € Ø×Ò˜ÑÔÐÐÐr1   c                 ó0   — |                      |¦  «         d S r+   )ÚwriteLongArray©r~   r«   r‡   r™   rR   s        r/   r®   zLong.writeArray
  ó   € Ø×Ò˜fÑ%Ô%Ð%Ð%Ð%r1   r+   ©rT   rÃ   rÄ   rž   r…   rœ   r¨   r®   r‘   r1   r/   rà   rà   þ   óZ   € € € € € Ø€Jð!ð !ð !ð+ð +ð +ð ð  ð  ð  ð&ð &ð &ð &ð &r1   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       r/   r…   z
ULong.read  ó   € Ø×ÒÑ!Ô!Ð!r1   c                 ó,   — |                      |¦  «        S r+   )ÚreadULongArrayrè   s        r/   rœ   zULong.readArray  ó   € Ø×$Ò$ UÑ+Ô+Ð+r1   Nc                 ó0   — |                      |¦  «         d S r+   ©Ú
writeULongr°   s         r/   r¨   zULong.write  ó   € Ø×Ò˜%Ñ Ô Ð Ð Ð r1   c                 ó0   — |                      |¦  «         d S r+   )ÚwriteULongArrayrï   s        r/   r®   zULong.writeArray  ó   € Ø×Ò˜vÑ&Ô&Ð&Ð&Ð&r1   r+   rñ   r‘   r1   r/   rô   rô     óZ   € € € € € Ø€Jð"ð "ð "ð,ð ,ð ,ð!ð !ð !ð !ð'ð 'ð 'ð 'ð 'r1   rô   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚFlags32c                 ó   — d| z  S )Nz0x%08Xr‘   rÊ   s    r/   rË   zFlags32.toString  ó   € à˜%ÑÐr1   N)rT   rÃ   rÄ   rÔ   rË   r‘   r1   r/   r  r    s-   € € € € € Øð ð  ñ „\ð ð  ð  r1   r  c                   ó   — e Zd ZeZdS )ÚVarIndexN)rT   rÃ   rÄ   r$   rØ   r‘   r1   r/   r	  r	  $  s   € € € € € Ø €G€G€Gr1   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       r/   r…   z
Short.read+  rø   r1   c                 ó,   — |                      |¦  «        S r+   )ÚreadShortArrayrè   s        r/   rœ   zShort.readArray.  rû   r1   Nc                 ó0   — |                      |¦  «         d S r+   )Ú
writeShortr°   s         r/   r¨   zShort.write1  rÿ   r1   c                 ó0   — |                      |¦  «         d S r+   )ÚwriteShortArrayrï   s        r/   r®   zShort.writeArray4  r  r1   r+   rñ   r‘   r1   r/   r  r  (  r  r1   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       r/   r…   zUShort.read;  ó   € Ø× Ò Ñ"Ô"Ð"r1   c                 ó,   — |                      |¦  «        S r+   )ÚreadUShortArrayrè   s        r/   rœ   zUShort.readArray>  s   € Ø×%Ò% eÑ,Ô,Ð,r1   Nc                 ó0   — |                      |¦  «         d S r+   ©ÚwriteUShortr°   s         r/   r¨   zUShort.writeA  ó   € Ø×Ò˜5Ñ!Ô!Ð!Ð!Ð!r1   c                 ó0   — |                      |¦  «         d S r+   )ÚwriteUShortArrayrï   s        r/   r®   zUShort.writeArrayD  s   € Ø×Ò Ñ'Ô'Ð'Ð'Ð'r1   r+   rñ   r‘   r1   r/   r  r  8  sZ   € € € € € Ø€Jð#ð #ð #ð-ð -ð -ð"ð "ð "ð "ð(ð (ð (ð (ð (r1   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       r/   r…   z	Int8.readK  rå   r1   c                 ó,   — |                      |¦  «        S r+   )ÚreadInt8Arrayrè   s        r/   rœ   zInt8.readArrayN  ré   r1   Nc                 ó0   — |                      |¦  «         d S r+   )Ú	writeInt8r°   s         r/   r¨   z
Int8.writeQ  rì   r1   c                 ó0   — |                      |¦  «         d S r+   )ÚwriteInt8Arrayrï   s        r/   r®   zInt8.writeArrayT  rð   r1   r+   rñ   r‘   r1   r/   r$  r$  H  rò   r1   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       r/   r…   z
UInt8.read[  rø   r1   c                 ó,   — |                      |¦  «        S r+   )ÚreadUInt8Arrayrè   s        r/   rœ   zUInt8.readArray^  rû   r1   Nc                 ó0   — |                      |¦  «         d S r+   )Ú
writeUInt8r°   s         r/   r¨   zUInt8.writea  rÿ   r1   c                 ó0   — |                      |¦  «         d S r+   )ÚwriteUInt8Arrayrï   s        r/   r®   zUInt8.writeArrayd  r  r1   r+   rñ   r‘   r1   r/   r.  r.  X  r  r1   r.  c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚUInt24é   c                 ó*   — |                      ¦   «         S r+   ©Ú
readUInt24r¤   s       r/   r…   zUInt24.readk  r  r1   Nc                 ó0   — |                      |¦  «         d S r+   ©ÚwriteUInt24r°   s         r/   r¨   zUInt24.writen  r   r1   r+   ©rT   rÃ   rÄ   rž   r…   r¨   r‘   r1   r/   r8  r8  h  s<   € € € € € Ø€Jð#ð #ð #ð"ð "ð "ð "ð "ð "r1   r8  c                   ó   — e Zd Zd„ ZdS )ÚComputedIntc                 ój   — |�0|                      |›d|›�¦  «         |                     ¦   «          d S d S )Nú=)ÚcommentrÒ   r¸   s         r/   rº   zComputedInt.xmlWrites  sG   € ØÐØ×Ò¨¨¨¨u¨uÐ5Ñ6Ô6Ð6Ø×ÒÑÔÐÐÐð Ðr1   N©rT   rÃ   rÄ   rº   r‘   r1   r/   rB  rB  r  s#   € € € € € ð ð  ð  ð  ð  r1   rB  c                   ó   — e Zd ZdS )rI   N©rT   rÃ   rÄ   r‘   r1   r/   rI   rI   y  ó   € € € € € Ø€Dr1   rI   c                   ó   — e Zd ZdS )rJ   NrH  r‘   r1   r/   rJ   rJ   }  rI  r1   rJ   c                   ó   — e Zd ZdS )rK   NrH  r‘   r1   r/   rK   rK   �  rI  r1   rK   c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚTagrá   c                 ó*   — |                      ¦   «         S r+   )ÚreadTagr¤   s       r/   r…   zTag.readˆ  s   € Ø�~Š~ÑÔÐr1   Nc                 ó0   — |                      |¦  «         d S r+   )ÚwriteTagr°   s         r/   r¨   z	Tag.write‹  s   € Ø�Š˜ÑÔÐÐÐr1   r+   r@  r‘   r1   r/   rM  rM  …  s<   € € € € € Ø€Jð ð  ð  ðð ð ð ð ð r1   rM  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        r/   rœ   zGlyphID.readArray“  s3   € Ø×$Ò$Ø×Ò˜Tœ]¨D¬O¸UÑCÔCñ
ô 
ð 	
r1   c                 óh   — |                      |                     | j        | j        ¦  «        ¦  «        S r+   )ÚgetGlyphNameÚ	readValuerW  rž   r¤   s       r/   r…   zGlyphID.read˜  s*   € Ø× Ò  ×!1Ò!1°$´-ÀÄÑ!QÔ!QÑRÔRÐRr1   c                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r+   )r®   rW  ÚgetGlyphIDManyrï   s        r/   r®   zGlyphID.writeArray›  s.   € Ø×Ò˜$œ-¨×)<Ò)<¸VÑ)DÔ)DÑEÔEÐEÐEÐEr1   Nc                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r+   )Ú
writeValuerW  Ú
getGlyphIDr°   s         r/   r¨   zGlyphID.writež  s,   € Ø×Ò˜$œ-¨¯ª¸Ñ)?Ô)?Ñ@Ô@Ð@Ð@Ð@r1   r+   )	rT   rÃ   rÄ   rž   rW  rœ   r…   r®   r¨   r‘   r1   r/   rS  rS  �  sk   € € € € € Ø€JØ€Hð
ð 
ð 
ð
Sð Sð SðFð Fð FðAð Að Að Að Að Ar1   rS  c                   ó   — e Zd ZdZdZdS )Ú	GlyphID32rá   ÚLN)rT   rÃ   rÄ   rž   rW  r‘   r1   r/   ra  ra  ¢  s   € € € € € Ø€JØ€H€H€Hr1   ra  c                   ó   — e Zd Zd„ ZdS )ÚNameIDc                 ó„  — |                      ||d|fgz   ¦  «         |r�|r‹|                     d¦  «        }|rt|                     |¦  «        }|                     d¦  «         |r|                     |¦  «         n2|                     d¦  «         t
                               d|z  ¦  «         |                     ¦   «          d S )Nr¬   r\   ú  zmissing from name tablez"name id %d missing from name table)rÑ   rQ   ÚgetDebugNamer¨   rE  ÚlogÚwarningrÒ   )r~   r¹   r‡   r¬   r\   r´   Ú	nameTables          r/   rº   zNameID.xmlWrite¨  sÚ   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Øð 		N�Eð 		NØŸš Ñ(Ô(ˆIØð NØ ×-Ò-¨eÑ4Ô4�Ø—’ Ñ%Ô%Ð%Øð NØ×%Ò% dÑ+Ô+Ð+Ð+à×%Ò%Ð&?Ñ@Ô@Ð@Ý—K’KÐ DÀuÑ LÑMÔMÐMØ×ÒÑÔÐÐÐr1   NrF  r‘   r1   r/   rd  rd  §  s#   € € € € € ðð ð ð ð r1   rd  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  ÚElidableAxisValueNamerf  ú )rÑ   rV   r¨   rE  ÚjoinrÒ   ©r~   r¹   r‡   r¬   r\   r´   Úflagss          r/   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Ñ.Ô.Ð.Ø×ÒÑÔÐÐÐr1   NrF  r‘   r1   r/   rl  rl  ·  s#   € € € € € ð
ð 
ð 
ð 
ð 
r1   rl  c                   ó$   — e Zd Zed„ ¦   «         ZdS )Ú
FloatValuec                 ó    — t          | ¦  «        S r+   )ÚfloatrÊ   s    r/   rÎ   zFloatValue.fromStringÆ  ó   € å�U‰|Œ|Ðr1   NrÞ   r‘   r1   r/   ru  ru  Å  s-   € € € € € Øðð ñ „\ðð ð r1   ru  c                   ó    — e Zd ZdZd„ Zdd„ZdS )Ú
DeciPointsr  c                 ó0   — |                      ¦   «         dz  S ©Né
   r  r¤   s       r/   r…   zDeciPoints.readÎ  s   € Ø× Ò Ñ"Ô" RÑ'Ð'r1   Nc                 óP   — |                      t          |dz  ¦  «        ¦  «         d S r|  )r  Úroundr°   s         r/   r¨   zDeciPoints.writeÑ  s(   € Ø×Ò�5 ¨¡Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-r1   r+   r@  r‘   r1   r/   rz  rz  Ë  s<   € € € € € Ø€Jð(ð (ð (ð.ð .ð .ð .ð .ð .r1   rz  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       r/   r…   zBaseFixedValue.readÛ  s*   € Ø�|Š|Ð>�G F¨DÔ,=Ñ>Ô>Ñ@Ô@ÑAÔAÐAr1   Nc                 óh   —  t          || j        ¦  «        |                      |¦  «        ¦  «         d S r+   )r„  ÚwriterMethodÚtoIntr°   s         r/   r¨   zBaseFixedValue.writeÞ  s1   € Ø*��˜Ô)Ñ*Ô*¨4¯:ª:°eÑ+<Ô+<Ñ=Ô=Ð=Ð=Ð=r1   c                 ó,   — t          || j        ¦  «        S r+   )Úfi2flÚprecisionBits©rc   r¬   s     r/   rƒ  zBaseFixedValue.fromIntá  ó   € å�U˜CÔ-Ñ.Ô.Ð.r1   c                 ó,   — t          || j        ¦  «        S r+   )Úfl2fir‹  rŒ  s     r/   rˆ  zBaseFixedValue.toIntå  r�  r1   c                 ó,   — t          || j        ¦  «        S r+   )Ústr2flr‹  rŒ  s     r/   rÎ   zBaseFixedValue.fromStringé  ó   € å�e˜SÔ.Ñ/Ô/Ð/r1   c                 ó,   — t          || j        ¦  «        S r+   )Úfl2strr‹  rŒ  s     r/   rË   zBaseFixedValue.toStringí  r’  r1   r+   )rT   rÃ   rÄ   r–   rž   r‹  r…  r‡  r…   r¨   Úclassmethodrƒ  rˆ  rÎ   rË   r‘   r1   r/   r�  r�  Õ  sº   € € € € € Ø€JØ"€MØ!€LØ!€LðBð Bð Bð>ð >ð >ð >ð ð/ð /ñ „[ð/ð ð/ð /ñ „[ð/ð ð0ð 0ñ „[ð0ð ð0ð 0ñ „[ð0ð 0ð 0r1   r�  c                   ó   — e Zd ZdZdZdZdZdS )ÚFixedrá   é   rä   rë   N©rT   rÃ   rÄ   rž   r‹  r…  r‡  r‘   r1   r/   r—  r—  ò  s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr1   r—  c                   ó   — e Zd ZdZdZdZdZdS )ÚF2Dot14r  é   r  r  Nr™  r‘   r1   r/   r›  r›  ù  s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr1   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©rc   r¬   Ú	__class__s     €r/   rƒ  zAngle.fromInt  s%   ø€ å‘”—’ Ñ&Ô&¨¬Ñ1°SÑ8Ð8r1   c                 ó\   •— t          ¦   «                              |dz  | j        z
  ¦  «        S r   )r¢  rˆ  r£  r¤  s     €r/   rˆ  zAngle.toInt
  s$   ø€ å‰wŒw�}Š}˜e c™k¨S¬XÑ5Ñ6Ô6Ð6r1   c                 óZ   — t          t          |¦  «        | j        z  ¦  «        | j        z  S r+   )r   rw  ÚfactorrŒ  s     r/   rÎ   zAngle.fromString  s&   € õ •u˜U‘|”| c¤jÑ0Ñ1Ô1°C´JÑ>Ð>r1   c                 ó,   — t          || j        ¦  «        S r+   )r
   r¨  rŒ  s     r/   rË   zAngle.toString  s   € å*¨5°#´*Ñ=Ô=Ð=r1   )rT   rÃ   rÄ   r£  r¨  r•  rƒ  rˆ  rÎ   rË   Ú__classcell__©r¥  s   @r/   rž  rž     s©   ø€ € € € € ð €DØ"€Fàð9ð 9ð 9ð 9ñ „[ð9ð ð7ð 7ð 7ð 7ñ „[ð7ð ð?ð ?ñ „[ð?ð ð>ð >ñ „[ð>ð >ð >ð >ð >r1   rž  c                   ó   — e Zd ZdZdS )ÚBiasedAngleg      ð?N)rT   rÃ   rÄ   r£  r‘   r1   r/   r­  r­    s   € € € € € ð €D€D€Dr1   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        r/   r…   zVersion.read!  s   € Ø—’Ñ!Ô!ˆØˆr1   Nc                 óN   — t          |¦  «        }|                     |¦  «         d S r+   )Úfi2verë   r°   s         r/   r¨   zVersion.write%  s'   € Ý�e‘”ˆØ×Ò˜ÑÔÐÐÐr1   c                 ó    — t          | ¦  «        S r+   )Úve2firÊ   s    r/   rÎ   zVersion.fromString)  rx  r1   c                 ó   — d| z  S )Nú0x%08xr‘   rÊ   s    r/   rË   zVersion.toString-  r  r1   c                 ó"   — t          | d¦  «        S )Nr˜  )r�  )Úvs    r/   Ú	fromFloatzVersion.fromFloat1  s   € å�Q˜‰|Œ|Ðr1   r+   )
rT   rÃ   rÄ   rž   r…   r¨   rÔ   rÎ   rË   r¹  r‘   r1   r/   r¯  r¯    s�   € € € € € Ø€Jðð ð ð ð  ð  ð  ð ðð ñ „\ðð ð ð  ñ „\ð ð ðð ñ „\ðð ð r1   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   rh  ri  )r~   rŽ   r‡   r™   ÚdataÚzeroPosÚss          r/   r…   zChar64.read?  s‡   € Ø�Š˜tœÑ/Ô/ˆØ—)’)˜EÑ"Ô"ˆØ�aŠ<ˆ<Ø˜˜˜”>ˆDÝ�$ °Ð;Ñ;Ô;ˆØ•�d W°XÐ>Ñ>Ô>Ò>Ð>Ý�KŠKÐ?À!ÑCÑDÔDÐDØˆr1   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   rh  ri  Úlenrž   Ú	writeData)r~   r«   r‡   r™   r¬   r±   rÇ  s          r/   r¨   zChar64.writeI  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ˆØ×Ò˜ÑÔÐÐÐr1   r+   )rT   rÃ   rÄ   rÅ   rž   r…   r¨   r‘   r1   r/   r»  r»  6  sH   € € € € € ðð ð €Jðð ð ð	ð 	ð 	ð 	ð 	ð 	r1   r»  c                   ó4   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ ZdS )	rN   c                 óD   — | j         o| j                              |¦  «        S r+   )rP   r•   r    s     r/   r•   zStruct.getRecordSizeV  s   € ØŒÐH 4¤?×#@Ò#@ÀÑ#HÔ#HÐHr1   c                 óZ   — |                       ¦   «         }|                     ||¦  «         |S r+   )rP   Ú	decompile)r~   rŽ   r‡   r™   Útables        r/   r…   zStruct.readY  s*   € Ø—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Øˆr1   Nc                 ó2   — |                      ||¦  «         d S r+   ©ry   r°   s         r/   r¨   zStruct.write^  s   € Ø�Š�f˜dÑ#Ô#Ð#Ð#Ð#r1   c                 ó¤   — |€4|r0|                      ||dgz   ¦  «         |                     ¦   «          d S d S |                     ||||¬¦  «         d S )N)Úemptyr   )r\   )rÑ   rÒ   ÚtoXMLr¸   s         r/   rº   zStruct.xmlWritea  sk   € Øˆ=Øð ð ×#Ò# D¨%°<°.Ñ*@ÑAÔAÐAØ×!Ò!Ñ#Ô#Ð#Ð#Ð#à�à�KŠK˜	 4¨°TˆKÑ:Ô:Ð:Ð:Ð:r1   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   rP   rQ   r¿   rØ  rŸ   ÚgetConvertersr|   rÚ  r\   Úsetattrr   Ú__dict__r,   r-   ÚfromXMLÚpopulateDefaultsr„  )r~   r´   rµ   r‡   rÑ  rØ  Ú
noPostReadÚcleanPropagationrb   rÛ  Úelementr\   s               r/   r¶   zStruct.xmlReadn  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øàˆr1   c                 ó0   — dt          | j        ¦  «        z   S )Nz
Struct of )ÚreprrP   )r~   s    r/   Ú__repr__zStruct.__repr__˜  s   € Ø�d 4¤?Ñ3Ô3Ñ3Ð3r1   r+   )	rT   rÃ   rÄ   r•   r…   r¨   rº   r¶   ræ  r‘   r1   r/   rN   rN   U  sw   € € € € € ðIð Ið Iðð ð ð
$ð $ð $ð $ð;ð ;ð ;ð(ð (ð (ðT4ð 4ð 4ð 4ð 4r1   rN   c                   ó   — e Zd Zd„ Zdd„ZdS )rL   c                 ó¢   — |j         }|                      ¦   «         }|                     ||¦  «         |                     ||j        z   ¦  «         |S r+   )rˆ   rP   rÐ  r„   r6   )r~   rŽ   r‡   r™   rˆ   rÑ  s         r/   r…   zStructWithLength.read�  sK   € ØŒjˆØ—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Ø�Š�C˜%Ô,Ñ,Ñ-Ô-Ð-Øˆr1   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 )Nr6   r   éÞ   i­Þ  ì   ï>[= )r   r  rá   ó   Þ­¾ï)r§   rÜ  r\   rË  Úitemsr,   r   rž   ÚgetDataLengthr6   ry   ÚgetSubWriterr¨   Ú
getAllData)r~   r«   r‡   r™   r¬   r±   Ú	convIndexrb   ÚlengthIndexÚdeadbeefÚbeforeÚlengthÚlengthWriters                r/   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×$;Ò$;Ñ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r1   r+   ©rT   rÃ   rÄ   r…   r¨   r‘   r1   r/   rL   rL   œ  s7   € € € € € ðð ð ð>ð >ð >ð >ð >ð >r1   rL   c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )rS   r  c                 ó*   — |                      ¦   «         S r+   r  r    s     r/   Ú
readOffsetzTable.readOffsetº  r  r1   c                 ó0   — |                      d¦  «         d S rÝ   r  ©r~   r«   s     r/   ÚwriteNullOffsetzTable.writeNullOffset½  ó   € Ø×Ò˜1ÑÔÐÐÐr1   c                 óê   — |                       |¦  «        }|dk    rd S |                      ¦   «         }|                     |¦  «        }|j        r||_        ||_        n|                     ||¦  «         |S rÝ   )rú  rP   ÚgetSubReaderr”   rŽ   r‡   rÐ  )r~   rŽ   r‡   r™   ÚoffsetrÑ  s         r/   r…   z
Table.readÀ  sv   € Ø—’ Ñ(Ô(ˆØ�QŠ;ˆ;Ø�4Ø—’Ñ!Ô!ˆØ×$Ò$ VÑ,Ô,ˆØŒ9ð 	*Ø!ˆEŒLØˆEŒJˆJà�OŠO˜F DÑ)Ô)Ð)Øˆr1   Nc                 óî   — |€|                       |¦  «         d S |                     ¦   «         }| j        |_        |�||_        |                     || j        ¬¦  «         |                     ||¦  «         d S )N©Ú
offsetSize)rý  rï  r\   r±   ÚwriteSubTablerž   ry   )r~   r«   r‡   r™   r¬   r±   Ú	subWriters          r/   r¨   zTable.writeÍ  s~   € Øˆ=Ø× Ò  Ñ(Ô(Ð(Ð(Ð(à×+Ò+Ñ-Ô-ˆIØ!œYˆIŒNØÐ&Ø(3�	Ô%Ø× Ò  °t´Ð ÑGÔGÐGØ�MŠM˜) TÑ*Ô*Ð*Ð*Ð*r1   r+   )rT   rÃ   rÄ   rž   rú  rý  r…   r¨   r‘   r1   r/   rS   rS   ·  sZ   € € € € € Ø€Jð#ð #ð #ðð ð ðð ð ð	+ð 	+ð 	+ð 	+ð 	+ð 	+r1   rS   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚLTablerá   c                 ó*   — |                      ¦   «         S r+   rö   r    s     r/   rú  zLTable.readOffsetÜ  rø   r1   c                 ó0   — |                      d¦  «         d S rÝ   rý   rü  s     r/   rý  zLTable.writeNullOffsetß  s   € Ø×Ò˜!ÑÔÐÐÐr1   N©rT   rÃ   rÄ   rž   rú  rý  r‘   r1   r/   r  r  Ù  s7   € € € € € Ø€Jð"ð "ð "ðð ð ð ð r1   r  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTable24r9  c                 ó*   — |                      ¦   «         S r+   r;  r    s     r/   rú  zTable24.readOffsetç  r  r1   c                 ó0   — |                      d¦  «         d S rÝ   r>  rü  s     r/   rý  zTable24.writeNullOffsetê  rþ  r1   Nr  r‘   r1   r/   r  r  ä  s7   € € € € € Ø€Jð#ð #ð #ðð ð ð ð r1   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Ú
lookupTyperP   s       r/   ÚgetConverterzSubStruct.getConverterò  ó2   € ØÔ% iÔ0°Ô<ˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr1   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r+   )r¢  r<   rº   ©r~   r¹   r‡   r¬   r\   r´   r¥  s         €r/   rº   zSubStruct.xmlWriteö  s/   ø€ Ý�i˜ÑÔ×'Ò'¨	°4¸ÀÀeÑLÔLÐLÐLÐLr1   ©rT   rÃ   rÄ   r  rº   rª  r«  s   @r/   r<   r<   ñ  sS   ø€ € € € € ðLð Lð LðMð Mð Mð Mð Mð Mð Mð Mð Mr1   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       r/   r  zSubTable.getConverterû  r  r1   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r+   )r¢  r:   rº   r  s         €r/   rº   zSubTable.xmlWriteÿ  s/   ø€ Ý�h˜ÑÔ×&Ò& y°$¸¸tÀUÑKÔKÐKÐKÐKr1   r  r«  s   @r/   r:   r:   ú  sS   ø€ € € € € ðLð Lð LðLð Lð Lð Lð Lð Lð Lð Lð Lr1   r:   c                   ó   — e Zd Zdd„ZdS )r;   Nc                 óR   — d|_         t                               | |||||¦  «         d S )NT)Ú	ExtensionrS   r¨   r°   s         r/   r¨   zExtSubTable.write  s,   € ØˆÔÝ�Š�D˜& $¨	°5¸+ÑFÔFÐFÐFÐFr1   r+   )rT   rÃ   rÄ   r¨   r‘   r1   r/   r;   r;     s.   € € € € € ðGð Gð Gð Gð Gð Gr1   r;   c                   ó   — e Zd Zd„ ZdS )r=   c                 ó�   — | j                              || j        ¦  «        }|                      | j        | j        | j        |¦  «        S r+   )rF   rQ   rU   r¥  r\   r]   r^   )r~   Ú
featureTagrP   s      r/   r  zFeatureParams.getConverter
  s;   € ØÔ+×/Ò/°
¸DÔ<UÑVÔVˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr1   N)rT   rÃ   rÄ   r  r‘   r1   r/   r=   r=   	  s(   € € € € € ðLð Lð Lð Lð Lr1   r=   c                   ó.   — e Zd ZdZdddœd„Zd„ Zdd„ZdS )	r3   r  Nrg   rA   c                óv   — t                                | |||||¬¦  «         d|d         dk    rdndz   | _        d S )NrA   r3   éÿÿÿÿÚ2Ú1)rf   r   Úwhichr}   s         r/   r   zValueFormat.__init__  sN   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð #¨T°"¬X¸ª_¨_ c cÀ#ÑFˆŒ
ˆ
ˆ
r1   c                 ó\   — |                      ¦   «         }t          |¦  «        || j        <   |S r+   )r  r   r)  ©r~   rŽ   r‡   r™   Úformats        r/   r…   zValueFormat.read  s,   € Ø×"Ò"Ñ$Ô$ˆÝ/°Ñ7Ô7ˆˆtŒzÑØˆr1   c                 ó^   — |                      |¦  «         t          |¦  «        || j        <   d S r+   )r  r   r)  )r~   r«   r‡   r™   r,  r±   s         r/   r¨   zValueFormat.write  s0   € Ø×Ò˜6Ñ"Ô"Ð"Ý/°Ñ7Ô7ˆˆtŒzÑÐÐr1   r+   )rT   rÃ   rÄ   rž   r   r…   r¨   r‘   r1   r/   r3   r3     sb   € € € € € Ø€JðGÈ"ð Gð Gð Gð Gð Gðð ð ð
8ð 8ð 8ð 8ð 8ð 8r1   r3   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     r/   r•   zValueRecord.getRecordSize#  s   € Ø•3�v˜dœjÔ)Ñ*Ô*Ñ*Ð*r1   c                 óD   — || j                                       ||¦  «        S r+   )r)  ÚreadValueRecordr¤   s       r/   r…   zValueRecord.read&  s   € Ø�d”jÔ!×1Ò1°&¸$Ñ?Ô?Ð?r1   Nc                 óJ   — || j                                       |||¦  «         d S r+   )r)  ÚwriteValueRecordr°   s         r/   r¨   zValueRecord.write)  s'   € ØˆtŒzÔ×+Ò+¨F°D¸%Ñ@Ô@Ð@Ð@Ð@r1   c                 óH   — |€d S |                      ||| j        |¦  «         d S r+   )rÖ  r\   r¸   s         r/   rº   zValueRecord.xmlWrite,  s,   € Øˆ=ØˆDà�KŠK˜	 4¨¬°EÑ:Ô:Ð:Ð:Ð:r1   c                 óV   — ddl m}  |¦   «         }|                     d |||¦  «         |S )Nr   )r/  )ÚotBaser/  rß  )r~   r´   rµ   r‡   r/  r¬   s         r/   r¶   zValueRecord.xmlRead2  s<   € Ø'Ð'Ð'Ð'Ð'Ð'à�‘”ˆØ�Š�d˜E 7¨DÑ1Ô1Ð1Øˆr1   r+   )rT   rÃ   rÄ   r•   r…   r¨   rº   r¶   r‘   r1   r/   r/  r/  "  sk   € € € € € ð+ð +ð +ð@ð @ð @ðAð Að Að Að;ð ;ð ;ðð ð ð ð r1   r/  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}  rg   rA   c                óò   — t                                | |||||¬¦  «         t          | j        t          ¦  «        r|                      dd d ¬¦  «        | _        d S t          dd d | j        ¬¦  «        | _        d S )NrA   ÚValue)r\   r]   r^   )r\   r]   r^   rP   )rf   r   Ú
issubclassrP   rÈ   Ú	converterrS   r}   s         r/   r   zAATLookup.__init__=  s„   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ �d”o¥{Ñ3Ô3ð 	Ø!Ÿ_š_°'À$ÈD˜_ÑQÔQˆDŒNˆNˆNå"Ø T¨tÀÄðñ ô ˆDŒNˆNˆNr1   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        r/   r…   zAATLookup.readH  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ÐBr1   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      €r/   ú
<listcomp>z#AATLookup.write.<locals>.<listcomp>Y  s.   ø€ ÐRÐRÐR±j°e¸S�T—_’_ UÑ+Ô+¨SÐ1ÐRÐRÐRr1   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±   rR   ÚformatsÚdataSizeÚlookupFormatÚwriteMethodrˆ   Ú
actualSizes     `          r/   r¨   zAATLookup.writeW  s;  ø€ ÝÝÐRÐRÐRÐRÀEÇKÂKÁMÄMÐRÑRÔRÑSÔSñ
ô 
ˆõ ÝÝØà×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?ð	ñô ñ
ô 
ñ
ô 
ˆð /6°a¬jÑ+ˆ�, Ø×"Ò"Ñ$Ô$ˆØˆ‰ŒˆØ×)Ò)Ñ+Ô+¨cÑ1ˆ
à˜(Ò"Ð"Ð"ØHØØØðL
ñ 
ñ #Ô"Ð"Ð"Ð"r1   c                 ó  — |                       |¦  «         |                       |¦  «         t          ||¬¦  «        \  }}}|                       |¦  «         |                       |¦  «         |                       |¦  «         d S )N)ÚnÚitemSize)r  r   )r«   ÚnumUnitsÚunitSizeÚsearchRangeÚentrySelectorÚ
rangeShifts         r/   ÚwriteBinSearchHeaderzAATLookup.writeBinSearchHeaderw  sŽ   € à×Ò˜8Ñ$Ô$Ð$Ø×Ò˜8Ñ$Ô$Ð$Ý1?Ø ð2
ñ 2
ô 2
Ñ.ˆ�] Jð 	×Ò˜;Ñ'Ô'Ð'Ø×Ò˜=Ñ)Ô)Ð)Ø×Ò˜:Ñ&Ô&Ð&Ð&Ð&r1   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~   rR   r«   s   €€€€r/   r0   z(AATLookup.buildFormat0.<locals>.<lambda>Š  ó   ø€ �D×%Ò% f¨d°FÑ;Ô;€ r1   )rË  ÚgetGlyphOrderr>  rž   )r~   r«   r‡   rR   Ú	numGlyphsÚ	valueSizes   ````  r/   rO  zAATLookup.buildFormat0‚  sn   øøøø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	Ýˆv‰;Œ;˜)Ò#Ð#Ø�4Ø”NÔ-ˆ	à�	˜IÑ%Ñ%ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r1   c                 ó~   — |                      d¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   ©r™   r¬   r±   )r  r>  r¨   )r~   r«   r‡   rR   ÚglyphID_r¬   s         r/   rc  zAATLookup.writeFormat0�  sb   € Ø×Ò˜1ÑÔÐØ%ð 	ð 	‰OˆH�eØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r1   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   €€€€r/   r0   z(AATLookup.buildFormat2.<locals>.<lambda>¥  s   ø€ �D×%Ò% f¨d°HÑ=Ô=€ r1   )rV   r>  rž   rË  ÚBIN_SEARCH_HEADER_SIZE)r~   r«   r‡   rR   ÚsegStartÚsegValueÚsegEndÚglyphIDÚcurValuerh  r[  r\  ro  s   ```         @r/   rP  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ØØ=Ð=Ð=Ð=Ð=Ð=Ð=ð
ð 	
r1   c                 óÆ  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]O\  }}}	|                      |¦  «         |                      |¦  «         | j                             ||d |	d ¬¦  «         ŒP|                      d¦  «         |                      d¦  «         |                     d|z  ¦  «         d S )Nr  rá   rj  éÿÿ  r¾  ©r  r>  rž   rË  r`  r¨   rÌ  )
r~   r«   r‡   ro  rh  r[  r\  Ú
firstGlyphÚ	lastGlyphr¬   s
             r/   rn  zAATLookup.writeFormat2¨  s  € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™]œ]¨I¸©M�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø,4ð 	ð 	Ñ(ˆJ˜	 5Ø×Ò˜yÑ)Ô)Ð)Ø×Ò˜zÑ*Ô*Ð*ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r1   c                 ó‚   ‡ ‡‡‡— ‰ j         j        }t          ‰¦  «        |dz   }}d‰ j        z   |dz   |z  z   dˆˆ ˆˆfd„fS )Nr  r   r@  c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r+   )ÚwriteFormat6rd  s   €€€€r/   r0   z(AATLookup.buildFormat6.<locals>.<lambda>½  re  r1   )r>  rž   rË  rp  )r~   r«   r‡   rR   rh  r[  r\  s   ````   r/   rQ  zAATLookup.buildFormat6·  s^   øøøø€ Ø”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆà�Ô+Ñ+¨x¸!©|¸xÑ.GÑGØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r1   c                 óp  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]9\  }}|                      |¦  «         | j                             ||d |d ¬¦  «         Œ:|                      d¦  «         |                     d|z  ¦  «         d S )Nr@  r  rj  rw  r¾  rx  )	r~   r«   r‡   rR   rh  r[  r\  rt  r¬   s	            r/   r}  zAATLookup.writeFormat6À  sÖ   € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø$ð 	ð 	‰NˆG�UØ×Ò˜wÑ'Ô'Ð'ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r1   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   r@  r�   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r+   )ÚwriteFormat8rd  s   €€€€r/   r0   z(AATLookup.buildFormat8.<locals>.<lambda>Õ  re  r1   )rË  r>  rž   )r~   r«   r‡   rR   Ú
minGlyphIDÚ
maxGlyphIDrh  s   ````   r/   rR  zAATLookup.buildFormat8Í  s~   øøøø€ Ø!'¨¤¨1¤¨v°b¬z¸!¬}�Jˆ
Ýˆv‰;Œ;˜* zÑ1°AÑ5Ò5Ð5Ø�4Ø”NÔ-ˆ	à•�F‘”˜iÑ'Ñ'ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r1   c                 ó  — |d         d         }|                      d¦  «         |                      |¦  «         |                      t          |¦  «        ¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   r�   rj  )r  rË  r>  r¨   )r~   r«   r‡   rR   ÚfirstGlyphIDÚ_r¬   s          r/   r�  zAATLookup.writeFormat8Ø  s�   € Ø˜a”y ”|ˆØ×Ò˜1ÑÔÐØ×Ò˜<Ñ(Ô(Ð(Ø×Ò�3˜v™;œ;Ñ'Ô'Ð'Øð 	ð 	‰HˆAˆuØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r1   c                 ó¸   ‡— t          ‰                     ¦   «         ¦  «        }| j                             |‰d |¬¦  «        }ˆfd„t	          |¦  «        D ¦   «         S )N©r™   rš   c                 óB   •— i | ]\  }}‰                      |¦  «        |“ŒS r‘   ©rY  )r’   Úkr¬   r‡   s      €r/   ú
<dictcomp>z)AATLookup.readFormat0.<locals>.<dictcomp>å  s-   ø€ ÐLÐLÐL±°°5�×!Ò! !Ñ$Ô$ eÐLÐLÐLr1   )rË  rf  r>  rœ   r§   )r~   rŽ   r‡   rg  rÇ  s     `  r/   rA  zAATLookup.readFormat0â  sZ   ø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	ØŒ~×'Ò'¨°ÀÈIÐ'ÑVÔVˆØLÐLÐLÐL½IÀd¹O¼OÐLÑLÔLÐLr1   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™   rw  r   ©rˆ   r  r>  rž   r—   r„   r…   rY  )r~   rŽ   r‡   Úmappingrˆ   r\  r[  r†   ÚlastÚfirstr¬   r‹  s               r/   rB  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øØˆr1   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  r@  rŽ  rw  r   r   rˆ  )	rˆ   r  r—   r„   r   r>  rœ   r§   rY  )r~   rŽ   r‡   r‘  rˆ   r\  r†   r’  r“  r  Ú
dataReaderrÇ  r‹  r¸  s                 r/   rC  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øØˆr1   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�  rw  r�  )	r~   rŽ   r‡   r‘  rˆ   r\  r†   rt  r¬   s	            r/   rD  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øØˆr1   c                 óÊ   ‡‡— |                      ¦   «         Š|                      ¦   «         }| j                             |‰d |¬¦  «        }ˆˆfd„t          |¦  «        D ¦   «         S )Nrˆ  c                 óH   •— i | ]\  }}‰                      ‰|z   ¦  «        |“ŒS r‘   rŠ  )r’   r‹  r¬   r“  r‡   s      €€r/   rŒ  z)AATLookup.readFormat8.<locals>.<dictcomp>  s1   ø€ ÐVÐVÐV¹
¸¸E�×!Ò! %¨!¡)Ñ,Ô,¨eÐVÐVÐVr1   )r  r>  rœ   r§   )r~   rŽ   r‡   rš   rÇ  r“  s     `  @r/   rE  zAATLookup.readFormat8  sh   øø€ Ø×!Ò!Ñ#Ô#ˆØ×!Ò!Ñ#Ô#ˆØŒ~×'Ò'¨°ÀÈEÐ'ÑRÔRˆØVÐVÐVÐVÐVÅiÐPTÁoÄoÐVÑVÔVÐVr1   c                 ó    — i }|D ]H}t          |t          ¦  «        r1|\  }}}|dk    r%| j                             |||¦  «        ||d         <   ŒI|S )NÚLookuprI  )r,   r-   r>  r¶   )	r~   r´   rµ   r‡   r¬   rã  r\   ÚaÚ
eltContents	            r/   r¶   zAATLookup.xmlRead  sj   € ØˆØð 	Tð 	TˆGÝ˜'¥5Ñ)Ô)ð TØ&-Ñ#��a˜Ø˜8Ò#Ð#Ø(,¬×(>Ò(>¸qÀ*ÈdÑ(SÔ(S�E˜!˜Gœ*Ñ%øØˆr1   c           	      ó>  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]'\  }}| j                             |||dd|fg¬¦  «         Œ(|                     |¦  «         |                     ¦   «          d S )Nrš  rI  )r¬   r\   r´   )ÚbegintagrÒ   rM  rí  r>  rº   Úendtag)r~   r¹   r‡   r¬   r\   r´   rI  s          r/   rº   zAATLookup.xmlWrite&  s²   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ" 5§;¢;¡=¤=Ñ1Ô1ð 	ð 	‰LˆE�5ØŒN×#Ò#Ø˜4 u°8ÀWÈeÐDTÐCUð $ñ ô ð ð ð 	×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr1   r+   )rT   rÃ   rÄ   rp  r   r…   r¨   rÔ   r`  rO  rc  rP  rn  rQ  r}  rR  r�  rA  rB  rC  rD  rE  r¶   rº   r‘   r1   r/   r:  r:  :  s_  € € € € € ØÐàEGð 	ð 	ð 	ð 	ð 	ðCð Cð Cð
ð 
ð 
ð 
ð@ ð'ð 'ñ „\ð'ð	
ð 	
ð 	
ðð ð ð
ð 
ð 
ð(.ð .ð .ð
ð 
ð 
ð.ð .ð .ð	
ð 	
ð 	
ðð ð ðMð Mð Mð
ð ð ðð ð ð(ð ð ðWð Wð Wðð ð ðð ð ð ð r1   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í  rP   rÐ  )r~   rŽ   r‡   r™   ÚlookupOffsetÚ
dataOffsetÚlookupReaderÚlookupÚoffsetsÚresultrI  r  r•  Úitems                 r/   r…   zAATLookupWithDataOffset.read9  sÊ   € Ø×'Ò'Ñ)Ô)ˆØ×%Ò%Ñ'Ô'ˆ
Ø×*Ò*¨<Ñ8Ô8ˆÝ˜=¨$°µfÑ=Ô=ˆØ—+’+˜l¨D°)Ñ<Ô<ˆØˆØ$Ÿ]š]™_œ_ð 	!ð 	!‰MˆE�6Ø×,Ò,¨V°jÑ-@ÑAÔAˆJØ—?’?Ñ$Ô$ˆDØ�NŠN˜: tÑ,Ô,Ð,Ø ˆF�5‰MˆMØˆr1   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  )rM  r_  r   ry   rð  rQ   rË  rV   rï  r:  r  r¨   r  rÌ  )r~   r«   r‡   r™   r¬   r±   ÚoffsetByGlyphÚoffsetByDataÚdataLenÚcompiledDatarI  r  rÇ  r  ÚlookupWriterr¨  Ú
dataWriterÚds                     r/   r¨   zAATLookupWithDataOffset.writeG  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Ø× Ò  Ñ#Ô#Ð#Ð#ð	$ð 	$r1   c                 ó^   — t          dd d | j        ¦  «        }|                     |||¦  «        S r£  )r:  rP   r¶   )r~   r´   rµ   r‡   r¨  s        r/   r¶   zAATLookupWithDataOffset.xmlReadj  s-   € Ý˜=¨$°°d´oÑFÔFˆØ�~Š~˜e W¨dÑ3Ô3Ð3r1   c                 óf   — t          dd d | j        ¦  «        }|                     |||||¦  «         d S r£  )r:  rP   rº   )r~   r¹   r‡   r¬   r\   r´   r¨  s          r/   rº   z AATLookupWithDataOffset.xmlWriten  s7   € Ý˜=¨$°°d´oÑFÔFˆØ�Š˜	 4¨°°eÑ<Ô<Ð<Ð<Ð<r1   r+   ©rT   rÃ   rÄ   r…   r¨   r¶   rº   r‘   r1   r/   r¡  r¡  8  sV   € € € € € ðð ð ð!$ð !$ð !$ð !$ðF4ð 4ð 4ð=ð =ð =ð =ð =r1   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­  rJ  s      r/   rŒ  z MorxSubtableConverter.<dictcomp>|  s   € Ð"WÐ"WÐ"W±°°S 3¨Ð"WÐ"WÐ"Wr1   Nrg   rA   c                óF   — t                                | |||||¬¦  «         d S ©NrA   )rf   r   r}   s         r/   r   zMorxSubtableConverter.__init__~  s6   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r1   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~   rs  Úsubtables      r/   Ú"_setTextDirectionFromCoverageFlagsz8MorxSubtableConverter._setTextDirectionFromCoverageFlagsƒ  sJ   € Ø�D‰L˜QÒÐØ%*ˆHÔ"Ð"Ð"Ø�d‰l˜qÒ Ð Ø%/ˆHÔ"Ð"Ð"à%1ˆHÔ"Ð"Ð"r1   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÷   r6   r0  Ú_PROCESSING_ORDERSÚProcessingOrderrÊ  r  ÚReservedr7   ÚSubFeatureFlagsr   rQ   rÇ  rË  r   rÎ  r<   rÐ  r„   )r~   rŽ   r‡   r™   rˆ   rÁ   rs  ÚorderKeyrP   ÚheaderLengthrÇ  Ú	subReaders               r/   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ÐKð ”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˜!œ.Ñ(Ñ)Ô)Ð)Øˆr1   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Ò   rE  r6   rÑ   rÈ  rÐ  rÑ  r7   rÒ  r<   rÖ  rŸ  r¸   s         r/   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¨Ñ.Ô.Ð.Ø×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr1   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Ñ  rN  Úistupler   rÏ  rÐ  rÊ  Ú_PROCESSING_ORDERS_REVERSEDrÈ  rÒ  rH   rß  )
r~   r´   rµ   r‡   rÁ   ÚcovFlagsÚeltNameÚeltAttrsrœ  rÓ  s
             r/   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Ñ%Ô%Ð%Ø ‘n¨Ñ+¨a¬jÑ8ˆŒ
Øˆr1   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ë  rw  rì  z>L)rÑ  rÛ  rÐ  rÈ  rØ  rË  rí  rî  r6   ry   ÚstructÚpack)r~   r«   r‡   r™   r¬   r±   rÜ  ÚreverseOrderÚlogicalOrderrò  rô  ÚorigReservedrõ  s                r/   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Ñ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r1   r+   )rT   rÃ   rÄ   rÏ  rí  rÛ  r   rÊ  r…   rº   r¶   r¨   r‘   r1   r/   r¹  r¹  s  sÄ   € € € € € ð &Ø,Ø%Ø,ðð Ðð #XÐ"WÐ<N×<TÒ<TÑ<VÔ<VÐ"WÑ"WÔ"WÐð
È"ð 
ð 
ð 
ð 
ð 
ð
2ð 2ð 2ðð ð ð6ð ð ð(ð ð ð@>ð >ð >ð >ð >ð >r1   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 )Ú	STXHeaderrg   rA   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 )NrA   ÚGlyphClassesÚPerGlyphLookup)rf   r   r=  rP   r   r:  r  ÚclassLookupr   rS  ÚperGlyphLookupr}   s         r/   r   zSTXHeader.__init__õ  sœ   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ ˜$œ/­9Ñ5Ô5Ð5Ð5Ð5Ý$ ^°T¸4ÅÑHÔHˆÔÝ�d”oÕ'<Ñ=Ô=ð 	'Ý"+Ð,<¸dÀDÍ'Ñ"RÔ"RˆDÔÐÐà"&ˆDÔÐÐr1   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=  rP   r   r  ÚLigComponentsÚ_readLigaturesÚ	Ligaturesr    rê  r…   rè  r¿   r—   r   ÚStatesrV   r  Ú_readTransitionÚTransitionsÚ_readPerGlyphLookupsÚPerGlyphLookups)r~   rŽ   r‡   r™   rÑ  rˆ   ÚclassTableReaderÚstateArrayReaderÚentryTableReaderÚactionReaderÚligaturesReaderÚperGlyphTableReaderÚligComponentReaderÚnumLigComponentsÚ	numStatesÚ
stateIndexÚstateÚ
glyphClassÚ
entryIndexs                      r/   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Ô!ð ˆr1   c                 ó¦   — |                       ¦   «         }|                     |j        ||j        z  z   ¦  «        }|                     |||¦  «         |S r+   )rP   r   rˆ   rž   rÐ  )r~   rŽ   r  r‡   rù  Ú
transitionÚentryReaders          r/   rò  zSTXHeader._readTransition/  sX   € Ø—_’_Ñ&Ô&ˆ
Ø×)Ò)ØŒJ˜ jÔ&;Ñ;Ñ;ñ
ô 
ˆð 	×Ò˜[¨$°Ñ=Ô=Ð=ØÐr1   c                 ó”   — t          |j        ¦  «        }||j        z
  dz  }|                     |                     |¦  «        ¦  «        S r1  )rË  rÇ  rˆ   rV  r  )r~   rŽ   r‡   ÚlimitÚnumLigatureGlyphss        r/   rï  zSTXHeader._readLigatures7  sF   € Ý�F”KÑ Ô ˆØ" V¤ZÑ/°AÑ5ÐØ×$Ò$ V×%;Ò%;Ð<MÑ%NÔ%NÑOÔOÐOr1   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   rw  r   )rñ  ró  rR   r,   r   Ú	MarkIndexÚmaxÚCurrentIndex)r~   rÑ  Ú
numLookupsr   r.   s        r/   Ú_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ð Ðr1   c                 ó>  — |j         }g }t          |                      |¦  «        ¦  «        D ]p}|                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         |                     | j                             ||i ¦  «        ¦  «         Œq|S rÝ   )	rˆ   r—   r  r   r„   r÷   rV   rë  r…   )r~   rÑ  rŽ   r‡   rˆ   Úlookupsr†  r§  s           r/   rô  zSTXHeader._readPerGlyphLookupsK  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Øˆr1   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  rR   rë  rP   Ú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                          r/   r¨   zSTXHeader.writeT  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Ñ(Ô(Ð(ØÐ(Ø×ÒÐ.Ñ/Ô/Ð/ØÐ$Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+ð %Ð$r1   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ó  ry   rð  rË  rž   rå  rQ   rV   r  r   r   )r~   r‡   Ústatesr  r  ÚstateArrayWriterÚentriesÚentryIDsr   r  r  ÚentryWriterÚ	entryDatar  r  r  s                   r/   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ˆØ˜~Ð-Ð-r1   c                 óš  — | j         €dS |                      |¦  «        }t          |j        ¦  «        |k    s!J dt          |j        ¦  «        |fz  ¦   «         ‚t	          ¦   «         }|j        D ]K}|                     ¦   «         }| j                              ||i |d ¦  «         |                     |d¬¦  «         ŒL|                     ¦   «         S )Nr1   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          r/   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Ø× Ò  ¸!Ð Ñ<Ô<Ð<Ð<Ø× Ò Ñ"Ô"Ð"r1   c                 ó¨   — t          |d¦  «        sd S t          ¦   «         }|j        D ]}|                     |¦  «         Œ|                     ¦   «         S )Nrî  )rŸ   r   rî  r  rð  )r~   rÑ  r‡   r«   Ú	components        r/   r  zSTXHeader._compileLigComponentsµ  s]   € Ý�u˜oÑ.Ô.ð 	Ø�4Ý‘”ˆØÔ,ð 	*ð 	*ˆIØ×Ò˜yÑ)Ô)Ð)Ð)Ø× Ò Ñ"Ô"Ð"r1   c                 óÎ   — t          |d¦  «        sd S t          ¦   «         }|j        D ]*}|                     |                     |¦  «        ¦  «         Œ+|                     ¦   «         S )Nrð  )rŸ   r   rð  r  r_  rð  )r~   rÑ  r‡   r«   Ú	glyphNames        r/   r  zSTXHeader._compileLigatures½  sh   € Ý�u˜kÑ*Ô*ð 	Ø�4Ý‘”ˆØœð 	;ð 	;ˆIØ×Ò˜tŸš¨yÑ9Ô9Ñ:Ô:Ð:Ð:Ø× Ò Ñ"Ô"Ð"r1   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©rI  r¬   ÚState)ÚindexÚonGlyphClassÚ
Transition)r‡   r´   r\   ré  rš  rî  ÚLigComponent)r9  r¬   )rž  rÒ   rE  rí  rM  rè  rí  rÑ   r§   rñ  ró  rÖ  rŸ  rõ  rŸ   r„  Ú_xmlWriteLigatures)r~   r¹   r‡   r¬   r\   r´   ÚgÚklassrÿ  r   r  Útransr†   r¨  rI  rJ  s                   r/   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Ø×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr1   c                 ól  — t          |d¦  «        sd S |                     d¦  «         |                     ¦   «          t          t	          |d¦  «        ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2|                     d¦  «         |                     ¦   «          d S )Nrð  ÚLigature)r9  rI  )rŸ   rž  rÒ   r§   r„  rÑ   rŸ  )r~   r¹   r‡   r¬   r\   r´   r†   r>  s           r/   r=  zSTXHeader._xmlWriteLigaturesí  sÀ   € Ý�u˜kÑ*Ô*ð 	ØˆFØ×Ò˜;Ñ'Ô'Ð'Ø×ÒÑÔÐÝ�g e¨[Ñ9Ô9Ñ:Ô:ð 	 ð 	 ‰DˆAˆqØ×Ò 
°!¸1ÐÑ=Ô=Ð=Ø×ÒÑÔÐÐØ×Ò˜Ñ%Ô%Ð%Ø×ÒÑÔÐÐÐr1   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 )	Nr6  rI  r¬   r8  ré  rî  rð  r   )r   rN  rÚ  r   rè  Ú_xmlReadStaterñ  rV   rë  r¶   rõ  Ú_xmlReadLigComponentsrî  Ú_xmlReadLigaturesrð  r  rR   rí  )r~   r´   rµ   r‡   rÑ  rÝ  rÞ  rœ  rI  r¬   r   r¨  s               r/   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ˆÔØˆr1   c                 óü   — t          ¦   «         }t          t          |¦  «        D ]W\  }}}|dk    rKt          |d         ¦  «        }|                      ¦   «         }	|	                     ||||¦  «         |	|j        |<   ŒX|S )Nr;  r:  )r   rN  rÚ  r   rP   rß  ró  )
r~   r´   rµ   r‡   r   rÝ  rÞ  rœ  r  r  s
             r/   rD  zSTXHeader._xmlReadState  s„   € Ý‘
”
ˆÝ-3µG¸WÑ-EÔ-Eð 	;ð 	;Ñ)ˆG�X˜zØ˜,Ò&Ð&Ý% h¨~Ô&>Ñ?Ô?�
Ø!Ÿ_š_Ñ.Ô.�
Ø×"Ò" 7¨H°jÀ$ÑGÔGÐGØ0:�Ô! *Ñ-øØˆr1   c                 óž   — g }t          t          |¦  «        D ]4\  }}}|dk    r(|                     t          |d         ¦  «        ¦  «         Œ5|S )Nr<  r¬   )rN  rÚ  rV   r   )r~   r´   rµ   r‡   ÚligComponentsrÝ  rÞ  Ú_eltContents           r/   rE  zSTXHeader._xmlReadLigComponents  s\   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	Bð 	BÑ*ˆG�X˜{Ø˜.Ò(Ð(Ø×$Ò$¥X¨h°wÔ.?Ñ%@Ô%@ÑAÔAÐAøØÐr1   c                 ó„   — g }t          t          |¦  «        D ]'\  }}}|dk    r|                     |d         ¦  «         Œ(|S )NrB  rI  )rN  rÚ  rV   )r~   r´   rµ   r‡   ÚligsrÝ  rÞ  rJ  s           r/   rF  zSTXHeader._xmlReadLigatures  sO   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	/ð 	/Ñ*ˆG�X˜{Ø˜*Ò$Ð$Ø—’˜H WÔ-Ñ.Ô.Ð.øØˆr1   r+   )rT   rÃ   rÄ   r   r…   rò  rï  r  rô  r¨   r  r  r  r  rº   r=  r¶   rD  rE  rF  r‘   r1   r/   ræ  ræ  ô  s+  € € € € € ØEGð 	'ð 	'ð 	'ð 	'ð 	'ð-ð -ð -ð^ð ð ðPð Pð Pð
ð ð ðð ð ð5,ð 5,ð 5,ð 5,ðn.ð .ð .ð4#ð #ð #ð #ð #ð #ð#ð #ð #ð&ð &ð &ðP	ð 	ð 	ðð ð ð,ð ð ðð ð ðð ð ð ð r1   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 ©Nrw  )r  r§   r  rY  )r~   rŽ   r‡   r™   ÚnumCIDsrª  Úcidrt  s           r/   r…   zCIDGlyphMap.read(  si   € Ø×#Ò#Ñ%Ô%ˆØˆÝ% f×&<Ò&<¸WÑ&EÔ&EÑFÔFð 	9ð 	9‰LˆC�Ø˜&Ò Ð Ø"×/Ò/°Ñ8Ô8��s‘øØˆr1   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r‘   rH  )r’   rR  rI  r‡   s      €r/   rŒ  z%CIDGlyphMap.write.<locals>.<dictcomp>1  s+   ø€ ÐMÐMÐM±°°e��d—o’o eÑ,Ô,ÐMÐMÐMr1   r   r   rw  ©rí  r  r  r—   rQ   )	r~   r«   r‡   r™   r¬   r±   rí  rš   rR  s	     `      r/   r¨   zCIDGlyphMap.write0  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ð 	7r1   c                 ó®   — i }t          t          |¦  «        D ]<\  }}}|dk    r0|d                              ¦   «         |t          |d         ¦  «        <   Œ=|S )NÚCIDrI  rR  )rN  rÚ  Ústripr   ©r~   r´   rµ   r‡   rª  ÚeNameÚeAttrsÚ	_eContents           r/   r¶   zCIDGlyphMap.xmlRead7  s^   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Jð 	JÑ$ˆE�6˜9Ø˜Š~ˆ~Ø28¸´/×2GÒ2GÑ2IÔ2I�•x  u¤Ñ.Ô.Ñ/øØˆr1   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )Nrw  rW  )rR  rI  ©rž  rÒ   rM  rí  rÑ   rŸ  )r~   r¹   r‡   r¬   r\   r´   rR  rI  s           r/   rº   zCIDGlyphMap.xmlWrite>  sµ   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆC�ØÐ  U¨f¢_ _Ø×#Ò# E¨s¸%Ð#Ñ@Ô@Ð@Ø×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr1   r+   r·  r‘   r1   r/   rN  rN  '  sU   € € € € € ðð ð ð7ð 7ð 7ð 7ðð ð ðð ð ð ð r1   rN  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 restrw  )rf  r  r  rË  rh  ri  r—   Úmin)
r~   rŽ   r‡   r™   Ú
glyphOrderrš   Úcidsrª  rt  rR  s
             r/   r…   zGlyphCIDMap.readJ  sÑ   € Ø×'Ò'Ñ)Ô)ˆ
Ø×!Ò!Ñ#Ô#ˆØ×%Ò% eÑ,Ô,ˆØ•3�z‘?”?Ò"Ð"Ý�KŠKð$à',­c°*©o¬oÐ&>ñ?ñô ð ð
 ˆÝ�S¥ T¡¤­C°
©O¬OÑ<Ô<Ñ=Ô=ð 	2ð 	2ˆGØ�w”-ˆCØ�fŠ}ˆ}Ø.1��z 'Ô*Ñ+øØˆr1   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óR   •— i | ]#\  }}|®|dk    ¯‰                      |¦  «        |“Œ$S rP  rH  )r’   r>  rR  r‡   s      €r/   rŒ  z%GlyphCIDMap.write.<locals>.<dictcomp>\  s@   ø€ ð 
ð 
ð 
á��3Øˆ 3¨&¢= =ð �OŠO˜AÑÔ à#0 = =r1   r   r   rw  rU  )	r~   r«   r‡   r™   r¬   r±   rí  rš   rt  s	     `      r/   r¨   zGlyphCIDMap.write[  s¥   ø€ ð
ð 
ð 
ð 
àŸ+š+™-œ-ð
ñ 
ô 
ˆð
 #(Ð.•�E‘
”
˜Q‘�¨QˆØ×Ò˜5Ñ!Ô!Ð!Ý˜U‘|”|ð 	;ð 	;ˆGØ×Ò˜uŸyšy¨°&Ñ9Ô9Ñ:Ô:Ð:Ð:ð	;ð 	;r1   c                 óŠ   — i }t          t          |¦  «        D ]*\  }}}|dk    rt          |d         ¦  «        ||d         <   Œ+|S )NrW  r¬   rI  )rN  rÚ  r   rY  s           r/   r¶   zGlyphCIDMap.xmlReadf  sR   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Dð 	DÑ$ˆE�6˜9Ø˜Š~ˆ~Ý*2°6¸'´?Ñ*CÔ*C��v˜g”Ñ'øØˆr1   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )Nrw  rW  r7  r^  )r~   r¹   r‡   r¬   r\   r´   rI  rR  s           r/   rº   zGlyphCIDMap.xmlWritem  s´   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆE�3Øˆ 3¨&¢= =Ø×#Ò# E°¸cÐ#ÑBÔBÐBØ×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr1   r+   r·  r‘   r1   r/   r`  r`  I  sU   € € € € € ðð ð ð"	;ð 	;ð 	;ð 	;ðð ð ðð ð ð ð r1   r`  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  r9  úillegal DeltaFormatr   )r   r   r   r˜  )r—   r  rV   )r~   rŽ   r‡   r™   rl  rm  rn  ÚnItemsÚnBitsÚminusOffsetÚmaskÚsignMaskrj  ÚtmpÚshiftr†   r¬   s                    r/   r…   zDeltaValue.ready  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Ñ$Ô$Ð$Ð$ØÐr1   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 )
Nrl  rm  rn  ro  rp  r   )r   r˜  r   r˜  )rË  r  )r~   r«   r‡   r™   r¬   r±   rl  rm  rn  rj  rq  rr  rt  rv  rw  s                  r/   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Ñ#Ô#Ð#Ð#Ð#ð ˆ;r1   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rÐ   ©rÑ   rÒ   r¸   s         r/   rº   zDeltaValue.xmlWrite¥  ó=   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Ø×ÒÑÔÐÐÐr1   c                 ó,   — t          |d         ¦  «        S rÐ   ©r   r³   s       r/   r¶   zDeltaValue.xmlRead©  ó   € Ý˜˜gœÑ'Ô'Ð'r1   r+   ©rT   rÃ   rÄ   r…   r¨   rº   r¶   r‘   r1   r/   rj  rj  x  sU   € € € € € ðð ð ð.$ð $ð $ð $ð*ð ð ð(ð (ð (ð (ð (r1   rj  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ÚEntryFormatrq   r   rÌ  l   ÿÿ r˜  é0   rá   ©r   r  r9  rá   c                 ó,   •— g | ]}|‰z  ‰z  |‰z  z  ‘ŒS r‘   r‘   )r’   ÚrawÚ	innerMaskÚ	outerMaskÚ
outerShifts     €€€r/   rK  z'VarIdxMapValue.read.<locals>.<listcomp>¿  s;   ø€ ð 
ð 
ð 
àð �Y‰ :Ñ-°#¸	±/ÑBð
ð 
ð 
r1   ©r2  r  ÚreadUInt24Arrayrú   )r~   rŽ   r‡   r™   Úfmtrq  Ú	innerBitsÚ	entrySizerœ   rˆ  r‰  rŠ  s            @@@r/   r…   zVarIdxMapValue.read®  sÈ   øøø€ Ø˜Ô&ˆØ˜>Ô*ˆà˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø Ñ*ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ$ØÔ%ØÔ%ØÔ$ð	
ð 
ð
 ôˆ	ð
ð 
ð 
ð 
ð 
ð 
à �y Ñ(Ô(ð
ñ 
ô 
ð 	
r1   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ƒ  rq   r   rÌ  r˜  r„  rá   r…  c                 ó,   •— g | ]}|d z  ‰z	  |‰z  z  ‘ŒS )l     þ r‘   )r’   Úidxrˆ  rŠ  s     €€r/   rK  z(VarIdxMapValue.write.<locals>.<listcomp>Ö  s<   ø€ ð ð ð àð ˜Ñ#¨
Ñ2°s¸Y±ÑGðð ð r1   )ÚsetValuerË  r6  r"  ÚwriteUInt24Arrayr  )r~   r«   r‡   r™   r¬   r±   r�  r‘  rŽ  r�  r®   rˆ  rŠ  s              @@r/   r¨   zVarIdxMapValue.writeÄ  sã   øø€ Ø˜Ô&ˆØˆØˆ~Ô×'Ò'­¨G©¬Ñ5Ô5Ð5à˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ%ØÔ&ØÔ&ØÔ%ð	
ð 
ð
 ôˆ
ð 	ˆ
ðð ð ð ð à"ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r1   r+   r÷  r‘   r1   r/   r�  r�  ­  s7   € € € € € ð
ð 
ð 
ð,
ð 
ð 
ð 
ð 
ð 
r1   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 )Nrp   Ú	NumShortsé €  éÿ  )Úboolrç   r  r(  rb  r  Úextend)r~   rŽ   r‡   r™   rR   ÚregionCountÚ	wordCountÚ	longWordsÚreadBigArrayÚreadSmallArrayÚn1Ún2s               r/   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Ñ-Ô-Ñ.Ô.Ð.Ø�ÒÐØ�{�|�|Ð$àˆr1   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 )Nrp   r˜  r™  rš  r¾  r   )r›  r  r,  rî   rb  r  ÚwriteSmallArray)r~   r«   r‡   r™   rR   r±   r�  rž  rŸ  ÚwriteBigArrayr¥  r¢  r£  s                r/   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¨"¨{Ñ*:Ñ#;Ñ<Ô<Ð<Ð<Ð<ð Ðr1   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rÐ   rz  r¸   s         r/   rº   zVarDataValue.xmlWrite  r{  r1   c                 ó,   — t          |d         ¦  «        S rÐ   r}  r³   s       r/   r¶   zVarDataValue.xmlRead  r~  r1   r+   r  r‘   r1   r/   r–  r–  Ý  sU   € € € € € ðð ð ð.=ð =ð =ð =ð&ð ð ð(ð (ð (ð (ð (r1   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      r/   r…   zTupleValues.read  s   € ÝÔ.¨t°TÑ:Ô:¸1Ô=Ð=r1   Nc                 óD   — t          t          j        |¦  «        ¦  «        S r+   )Úbytesr	   ÚcompileDeltaValues_)r~   r«   r‡   r™   rR   r±   s         r/   r¨   zTupleValues.write  s   € Ý•^Ô7¸Ñ?Ô?Ñ@Ô@Ð@r1   c                 ó,   — t          |d         ¦  «        S rÐ   r}  r³   s       r/   r¶   zTupleValues.xmlRead  r~  r1   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rÐ   rz  r¸   s         r/   rº   zTupleValues.xmlWrite  r{  r1   r+   r·  r‘   r1   r/   rª  rª    sY   € € € € € ð>ð >ð >ðAð Að Að Að(ð (ð (ðð ð ð ð r1   rª  c                   ó<   — e Zd Z	 d	ddddœd„Zd„ Zd	d„Zd„ Zd„ ZdS )
Ú	CFF2IndexNrg   )Ú	itemClassÚitemConverterClassrB   c                óz   — t                                | |||||¬¦  «         || _        |�
 |¦   «         nd | _        d S rÁ  )rf   r   Ú
_itemClassÚ
_converter)r~   r\   r]   r^   rP   r´  rµ  rB   s           r/   r   zCFF2Index.__init__   sY   € õ 	×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð $ˆŒà$6Ð$BÐÐÑ Ô Ð Èð 	Œˆˆr1   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     r/   ÚgetReadArrayz$CFF2Index.read.<locals>.getReadArray9  s3   € àÔ(ØÔ)ØÔ)ØÔ(ð	ð ð
 ôð r1   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       €€€€€€€r/   r‹   z8CFF2Index.read.<locals>.get_read_item.<locals>.read_item`  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¸$Ñ?Ô?˜Ø�Kr1   rŒ   )r‹   rÁ  rÂ  rœ   r‰   rš   r‡   r¼  r»  rŽ   r~   s    @@@@€€€€€€r/   r�   z%CFF2Index.read.<locals>.get_read_itemZ  sƒ   øøøøø€ Ø$Ÿkšk™mœm�Ø#œZ�
Ø%¨°©°gÑ(=Ñ=ÀÑA�Ø(˜L¨°gÑ>Ô>�	ð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð !Ð r1   )r÷   r0  r”   ÚpoprÅ  r·  rÐ  r¿  r¸  r…   rV   r   )r~   rŽ   r‡   r™   rœ   r”   r©  rí  Ú
lastOffsetr  r«  rÀ  r�   r‹   r›   rš   r¼  r»  s   ```            @@@r/   r…   zCFF2Index.read3  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ð ˆHr1   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     €r/   rK  z#CFF2Index.write.<locals>.<listcomp>  s%   ø€ Ð:Ð:Ð:¨D�T—\’\ $Ñ'Ô'Ð:Ð:Ð:r1   c           	      óR   •— g | ]#\  }}‰j                              ‰‰‰||¦  «        ‘Œ$S r‘   )r¸  r¨   )r’   r†   r«  r‡   r~   r™   r«   s      €€€€r/   rK  z#CFF2Index.write.<locals>.<listcomp>�  sE   ø€ ð ð ð á�A�tð ”×%Ò% f¨d°I¸tÀQÑGÔGðð ð r1   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r‘   )rË  )r’   r«  s     r/   rK  z#CFF2Index.write.<locals>.<listcomp>†  s   € Ð/Ð/Ð/ •3�t‘9”9Ð/Ð/Ð/r1   r   )Úinitialr&  é   i   r  i   r9  rá   r…  )rþ   rË  r·  r¸  r§   rL  r&   r4  r6  r"  r”  r  rÌ  )r~   r«   r‡   r™   rR   r±   rí  r©  rÄ  r»  r®   r«  s   ````        r/   r¨   zCFF2Index.writew  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Ñ"Ô"Ð"Ð"ð	#ð 	#r1   c                 óÎ   — | j         �.|                       ¦   «         }|                     d |||¦  «         |S | j        �| j                             |||¦  «        S t	          ¦   «         ‚r+   )r·  rß  r¸  r¶   r£   )r~   r´   rµ   r‡   rÀ  s        r/   r¶   zCFF2Index.xmlReadœ  sd   € ØŒ?Ð&Ø—/’/Ñ#Ô#ˆCØ�KŠK˜˜e W¨dÑ3Ô3Ð3ØˆJØŒ_Ð(Ø”?×*Ò*¨5°'¸4Ñ@Ô@Ð@å%Ñ'Ô'Ð'r1   c           
      ó  — | j         �2t          |¦  «        D ] \  }}|                     ||d|fg|¦  «         Œ!d S | j        �;t          |¦  «        D ])\  }}| j                             |||||d|fgz   ¦  «         Œ*d S t          ¦   «         ‚)Nr9  )r·  r§   rÖ  r¸  rº   r£   )r~   r¹   r‡   r¬   r\   r´   r†   r«  s           r/   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ñô ð ð ðð õ
 &Ñ'Ô'Ð'r1   r+   )rT   rÃ   rÄ   r   r…   r¨   r¶   rº   r‘   r1   r/   r³  r³    sˆ   € € € € € ð ð
ð ØØð
ð 
ð 
ð 
ð 
ð&Bð Bð BðH##ð ##ð ##ð ##ðJ(ð (ð (ð
(ð 
(ð 
(ð 
(ð 
(r1   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]rp  )rÑ   rV   rE  rq  rÒ   rr  s          r/   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Ñ.Ô.Ð.Ø×ÒÑÔÐÐÐr1   NrF  r‘   r1   r/   rÎ  rÎ  ³  s#   € € € € € ðð ð ð ð r1   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       €r/   r…   z_UInt8Enum.readË  s)   ø€ Ø�~Š~�e™gœgŸlšl¨6°4¸ÑCÔCÑDÔDÐDr1   c                 óP   — t          | j        |                     ¦   «         ¦  «        S r+   )r„  rØ  ÚupperrŒ  s     r/   rÎ   z_UInt8Enum.fromStringÎ  s   € å�s”} e§k¢k¡m¤mÑ4Ô4Ð4r1   c                 óZ   — |                       |¦  «        j                             ¦   «         S r+   )rØ  r\   ÚlowerrŒ  s     r/   rË   z_UInt8Enum.toStringÒ  s#   € à�}Š}˜UÑ#Ô#Ô(×.Ò.Ñ0Ô0Ð0r1   )
rT   rÃ   rÄ   r–   rØ  r…   r•  rÎ   rË   rª  r«  s   @r/   rÖ  rÖ  È  sx   ø€ € € € € Ø€IðEð Eð Eð Eð Eð ð5ð 5ñ „[ð5ð ð1ð 1ñ „[ð1ð 1ð 1ð 1ð 1r1   rÖ  c                   ó   — e Zd ZeZdS )r"   N)rT   rÃ   rÄ   Ú_ExtendModerØ  r‘   r1   r/   r"   r"   ×  s   € € € € € Ø€I€I€Ir1   r"   c                   ó   — e Zd ZeZdS )r#   N)rT   rÃ   rÄ   Ú_CompositeModerØ  r‘   r1   r/   r#   r#   Û  s   € € € € € Ø€I€I€Ir1   r#   Úint8Úint16Úint32r8   r4   Úuint24r9   Úchar64rà  ÚOffsetÚLOffsetÚOffset24Ú	TupleList)rµ  ÚVarCompositeGlyphList)r´  c                 ó.   — t          t          | ¬¦  «        S ©N)rP   )r'   r:  ©ÚCs    r/   r0   r0     ó   € �7¥9¸Ð;Ñ;Ô;€ r1   c                 ó.   — t          t          | ¬¦  «        S rì  )r'   r¡  rí  s    r/   r0   r0     s   € ­Õ1HÐUVÐ)WÑ)WÔ)W€ r1   c                 ó.   — t          t          | ¬¦  «        S rì  )r'   ræ  rí  s    r/   r0   r0     rï  r1   c                 ó.   — t          t          | ¬¦  «        S rì  )r'   rS   rí  s    r/   r0   r0     s   € �'¥%°AÐ6Ñ6Ô6€ r1   c                 ó.   — t          t          | ¬¦  «        S rì  )r'   r  rí  s    r/   r0   r0     s   € �7¥6°aÐ8Ñ8Ô8€ r1   c                 ó.   — t          t          | ¬¦  «        S rì  )r'   r  rí  s    r/   r0   r0     s   € �W¥W¸Ð;Ñ;Ô;€ r1   )rN  r`  rC   rD   rE   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   r8  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Ú	getLoggerrT   rh  rÚ  rd   Úobjectrf   rÈ   rÖ   rÛ   rà   rô   r  r	  r  r  r$  r.  r8  rB  rI   rJ   rK   rM  rS  ra  rd  rl  ru  rz  r�  r—  r›  rž  r­  r¯  r»  rN   rL   rS   r  r  r<   r:   r;   r=   r3   r/  r:  r¡  r¹  ræ  rN  r`  rj  r�  r–  rª  r³  rÎ  rÖ  rM   r‘   r1   r/   ú<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Ð Ð Ð r1   