Ë
    ^ãj8š ã                   óp  — d Z ddlZddlmZ ddlmZ ddlmZ ddlZddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZmZ ddlmZmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z-m.Z/m0Z1m2Z3 ddl4m5Z5m6Z6 ddl7Z7ddl8Z8ddl9Z9ddl:Z:ddlm;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZA e=rddlBmCZC  e7jˆ                  eE«      ZF G d„ de;«      ZG edg d¢«      ZH eHeGj’                  ddd«       eHeGj”                  ddd«       eHeGj–                  ddd«       eHeGj˜                  ddd«       eHeGjš                  ddd«       eHeGjœ                  ddd«       eHeGjž                  ddd«       eHeGj                   ddd«       eHeGj¢                  ddd«      d œ	ZRd!„ d"„ d#„ d$„ d%œZSd&„ d'„ d(„ d)„ d%œZTd*„ ZUd+„ ZV G d,„ d-«      ZW G d.„ d/«      ZX G d0„ d1eY«      ZZ G d2„ d3eY«      Z[ G d4„ d5eY«      Z\ G d6„ d7e\«      Z] G d8„ d9e\«      Z^ G d:„ d;eY«      Z_ G d<„ d=e\«      Z` G d>„ d?e\«      Za G d@„ dAe%«      Zb G dB„ dCeb«      Zc G dD„ dEeb«      Zd G dF„ dGeb«      Ze G dH„ dIe&«      ZfdJZg G dK„ dL e)dM«      «      Zh G dN„ dOeh«      Zi G dP„ dQe%«      Zj G dR„ dSe&«      Zk G dT„ dUe&«      Zl G dV„ dWe&«      Zm G dX„ dYe&«      Zn G dZ„ d[e&«      Zo G d\„ d]e%«      Zp G d^„ d_e%«      Zq G d`„ dae%«      Zr G db„ dce%«      Zs G dd„ dee«      Zt G df„ dg e)dM«      «      Zu G dh„ di e)dM«      «      Zv G dj„ dke«      Zw G dl„ dme«      Zx G dn„ doe«      Zy G dp„ dq e)dM«      «      Zzi drds“dtdu“dvdw“dIdx“dWdy“dzd{“d|d}“d~d“d€d�“d‚dƒ“d„d…“d†d‡“dˆd‰“dŠd‹“dŒd�“dŽd�“Z{d�„ Z|d‘„ Z}d’„ Z~d“„ Zd”„ Z€d•„ Z�d–„ Z‚d—„ Zƒd˜„ Z„ee€e�d™œe‚eƒe„dšœd›œZ…dœ„ Z† G d�„ dže%«      Z‡dŸ„ Zˆ eˆ«        d „ Z‰y)¡záfontTools.ttLib.tables.otTables -- A collection of classes representing the various
OpenType subtables.

Most are constructed upon import from data in otData.py, all are populated with
converter objects from otConverters.py.
é    N)ÚIntEnum)Úreduce)Úradians)ÚdefaultdictÚ
namedtuple)ÚOPTIMIZE_FONT_SPEED)ÚTupleVariation)Údfs_base_table)ÚquantizeRect)ÚotRound)Ú	TransformÚIdentityÚDecomposedTransform)Ú	bytesjoinÚpadÚsafeEval)ÚVector)ÚControlBoundsPen)ÚTransformPené   )Ú	BaseTableÚFormatSwitchingBaseTableÚValueRecordÚCountReferenceÚ getFormatSwitchingBaseTableClassÚhave_uharfbuzz)ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚLookupDebugInfoÚLOOKUP_DEBUG_INFO_KEY)ÚIntFlag)ÚTYPE_CHECKINGÚIteratorÚListÚOptionalÚSet)Ú_TTGlyphSetc                   óL   — e 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ZdZy)ÚVarComponentFlagsr   é   é   é   é   é    é@   é€   é   i   é   é   é   é    é @  l     ÿ N)Ú__name__Ú
__module__Ú__qualname__ÚRESET_UNSPECIFIED_AXESÚ	HAVE_AXESÚAXIS_VALUES_HAVE_VARIATIONÚTRANSFORM_HAS_VARIATIONÚHAVE_TRANSLATE_XÚHAVE_TRANSLATE_YÚHAVE_ROTATIONÚHAVE_CONDITIONÚHAVE_SCALE_XÚHAVE_SCALE_YÚHAVE_TCENTER_XÚHAVE_TCENTER_YÚGID_IS_24BITÚHAVE_SKEW_XÚHAVE_SKEW_YÚRESERVED_MASK© ó    úa/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/otTables.pyr+   r+   6   sW   „ Ø#Ðà€Ià!'ÐØ$ÐàÐØÐØ€Mà€Nà€LØ€LØ€NØ€Nà€Là€KØ€Kà)�MrM   r+   ÚVarTransformMappingValues)ÚflagÚfractionalBitsÚscaleÚdefaultValueé   é´   é
   iLÿÿÿ)	Ú
translateXÚ
translateYÚrotationÚscaleXÚscaleYÚskewXÚskewYÚtCenterXÚtCenterYc                 ó.   — t        j                  d| «      S )Nú>B©ÚstructÚpack©Úvs    rN   ú<lambda>rg   h   ó   € ”—‘˜T 1Ó%€ rM   c                 ó.   — t        j                  d| «      S )Nú>Hrb   re   s    rN   rg   rg   i   rh   rM   c                 ó4   — t        j                  d| «      dd  S )Nú>Lr   rb   re   s    rN   rg   rg   j   s   € ”—‘˜T 1Ó% a bÐ)€ rM   c                 ó.   — t        j                  d| «      S )Nrl   rb   re   s    rN   rg   rg   k   rh   rM   )r   r,   é   r-   c                 ó4   — t        j                  d| «      d   S )Nra   r   ©rc   Úunpackre   s    rN   rg   rg   n   ó   € ”—‘˜t QÓ'¨Ñ*€ rM   c                 ó4   — t        j                  d| «      d   S )Nrj   r   rp   re   s    rN   rg   rg   o   rr   rM   c                 ó:   — t        j                  dd| z   «      d   S )Nrl   ó    r   rp   re   s    rN   rg   rg   p   s   € ”—‘˜t U¨Q¡YÓ/°Ñ2€ rM   c                 ó4   — t        j                  d| «      d   S )Nrl   r   rp   re   s    rN   rg   rg   q   rr   rM   c                 ó‚  — | |   }|dk  r||dz   fS |dk  r|dz
  dz  | |dz      z  |dz   fS |dk  r"|dz
  dz  | |dz      dz  z  | |dz      z  |dz   fS |d	k  r.|dz
  d
z  | |dz      dz  z  | |dz      dz  z  | |dz      z  |dz   fS |d	z
  dz  | |dz      d
z  z  | |dz      dz  z  | |dz      dz  z  | |dz      z  |dz   fS )zlRead a variable-length number from data starting at index i.

    Return the number and the next index.
    r2   r   éÀ   r.   r,   éà   r/   rn   éð   é   r-   r0   é   rL   )ÚdataÚiÚb0s      rN   Ú_read_uint32varr€   u   sX  € ð 
ˆa‰€BØ	ˆD‚yØ�1�q‘5ˆyÐØ	ˆdŠØ�T‘	˜aÑ $ q¨1¡u¡+Ñ-¨q°1©uÐ4Ð4Ø	ˆdŠØ�T‘	˜bÑ  4¨¨A©¡;°!Ñ#3Ñ3°d¸1¸q¹5±kÑAÀ1ÀqÁ5ÐHÐHØ	ˆdŠØ�T‘	˜bÑ  4¨¨A©¡;°"Ñ#4Ñ4°t¸AÀ¹E±{ÀaÑ7GÑGÈ$Ø�‰EñK
ñ 
àˆq‰5ðð 	ð �T‘	˜bÑ  4¨¨A©¡;°"Ñ#4Ñ4°t¸AÀ¹E±{ÀbÑ7HÑHÈ4Ø�‰EñL
àñLñ à�a˜!‘e‘ñà !™eð$ð 	$rM   c                 óL  — | dk  rt        j                  d| «      S | dk  rt        j                  d| dz  «      S | dk  rt        j                  d| dz  «      d	d
 S | dk  rt        j                  d| dz  «      S t        j                  dd«      t        j                  d| «      z   S )z:Write a variable-length number.

    Return the data.
    r2   ra   r8   rj   é €  i    rl   i  À r   Ni   l      @ rz   rb   re   s    rN   Ú_write_uint32varrƒ   Œ   s˜   € ð
 	ˆ4‚xÜ�{‰{˜4 Ó#Ð#Ø	
ˆVŠÜ�{‰{˜4 ! f¡*Ó.Ð.Ø	
ˆXŠÜ�{‰{˜4 ! h¡,Ó0°°Ð4Ð4Ø	
ˆZŠÜ�{‰{˜4 ! j¡.Ó2Ð2ä�{‰{˜4 Ó&¬¯©°T¸1Ó)=Ñ=Ð=rM   c                   óD   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)ÚVarComponentc                 ó$   — | j                  «        y ©N)ÚpopulateDefaults©Úselfs    rN   Ú__init__zVarComponent.__init__ž   s   € Ø×ÑÕrM   Nc                 ó”   — d| _         d | _        d | _        d | _        d| _        t
        | _        t
        | _        t        «       | _	        y )Nr   rL   )
ÚflagsÚ	glyphNameÚconditionIndexÚaxisIndicesIndexÚ
axisValuesÚNO_VARIATION_INDEXÚaxisValuesVarIndexÚtransformVarIndexr   Ú	transform©rŠ   Ú
propagators     rN   rˆ   zVarComponent.populateDefaults¡   sA   € ØˆŒ
ØˆŒØ"ˆÔØ $ˆÔØˆŒÜ"4ˆÔÜ!3ˆÔÜ,Ó.ˆ�rM   c                 óþ  ‡‡‡— dŠt        ‰‰«      \  | _        Š| j                  Š‰t        j                  z  rdnd}t	        |   ‰‰‰|z    «      }‰|z  Š|j
                  |   | _        ‰t        j                  z  rt        ‰‰«      \  | _        Š‰t        j                  z  rt        ‰‰«      \  | _
        Šnd | _
        | j                  €d}n'|d   j                  | j                     }t        |«      }‰t        j                  z  r2t        j                  |‰‰«      \  }Št        d„ |D «       «      | _        nd| _        t        | j                   «      |k(  sJ ‚‰t        j"                  z  rt        ‰‰«      \  | _        Šnt&        | _        ‰t        j(                  z  rt        ‰‰«      \  | _        Šnt&        | _        t-        «       | _        ˆˆˆfd„}	t0        j3                  «       D ]$  \  }
} |	|«      }t5        | j.                  |
|«       Œ& ‰t        j6                  z  s%| j.                  j8                  | j.                  _        ‰t        j<                  z  }|rt        ‰‰«      \  }Š||dz
  z  }|rŒ‰‰d  S )	Nr   rn   r,   ÚAxisIndicesListc              3   ó4   K  — | ]  }t        |d «      –— Œ y­w©é   N)Úfi2fl©Ú.0rf   s     rN   ú	<genexpr>z)VarComponent.decompile.<locals>.<genexpr>Å   s   è ø€ Ò#E°Q¤E¨!¨R§LÑ#Eùó   ‚rL   c           	      óÈ   •— ‰| j                   z  rGt        t        j                  d‰‰‰dz    «      d   | j                  «      | j
                  z  }‰dz  Š|S | j                  S )Nú>hr,   r   )rP   r�   rc   rq   rQ   rR   rS   )Úvaluesrf   r}   r�   r~   s     €€€rN   Úread_transform_componentz8VarComponent.decompile.<locals>.read_transform_componentÕ   sk   ø€ à�v—{‘{Ò"äÜŸ™ d¨D°°Q¸±U¨OÓ<¸QÑ?À×AVÑAVóð —l‘lñ#ð ð �Q‘�Ø�à×*Ñ*Ð*rM   r   )r€   r�   r+   rH   Ú	_unpackerÚ
glyphOrderrŽ   rC   r�   r=   r�   ÚItemÚlenr	   ÚdecompileDeltas_Útupler‘   r>   r“   r’   r?   r”   r   r•   ÚVAR_TRANSFORM_MAPPINGÚitemsÚsetattrrE   rZ   r[   rK   )rŠ   r}   ÚfontÚ
localStateÚgidSizeÚglyphIDÚnumAxesÚaxisIndicesr‘   r¥   Ú	attr_nameÚmapping_valuesÚvalueÚnÚ_r�   r~   s    `             @@rN   Ú	decompilezVarComponent.decompile«   sO  ú€ ØˆÜ'¨¨aÓ0‰ˆŒ
�AØ—
‘
ˆàÔ0×=Ñ=Ò=‘!À1ˆÜ˜GÑ$ T¨!¨a°'©kÐ%:Ó;ˆØ	ˆW‰ˆØŸ™¨Ñ1ˆŒàÔ$×3Ñ3Ò3Ü%4°T¸1Ó%=Ñ"ˆDÔ àÔ$×.Ñ.Ò.Ü'6°t¸QÓ'?Ñ$ˆDÔ!¡1à$(ˆDÔ!à× Ñ Ð(Ø‰Gà$Ð%6Ñ7×<Ñ<¸T×=RÑ=RÑSˆKÜ˜+Ó&ˆGàÔ$×.Ñ.Ò.Ü*×;Ñ;¸GÀTÈ1ÓM‰MˆJ˜Ü#Ñ#E¸*Ô#EÓEˆD�Oà ˆDŒOÜ�4—?‘?Ó# wÒ.Ð.Ð.àÔ$×?Ñ?Ò?Ü)8¸¸qÓ)AÑ&ˆDÔ#¡Qä&8ˆDÔ#ØÔ$×<Ñ<Ò<Ü(7¸¸aÓ(@Ñ%ˆDÔ"¡Aä%7ˆDÔ"ä,Ó.ˆŒö	+ô *?×)DÑ)DÓ)Fò 	6Ñ%ˆI�~Ù,¨^Ó<ˆEÜ�D—N‘N I¨uÕ5ð	6ð Ô)×6Ñ6Ò6Ø$(§N¡N×$9Ñ$9ˆD�N‰NÔ!àÔ%×3Ñ3Ñ3ˆÙÜ" 4¨Ó+‰DˆAˆqØ��Q‘‰JˆAò ð �A�BˆxˆrM   c                 ó¤  ‡— |j                   t           }g }| j                  Š|j                  | j                  «      }|dkD  r1‰t
        j                  z  Š|j                  t        d   |«      «       n1‰t
        j                   z  Š|j                  t        d   |«      «       | j                  �8‰t
        j                  z  Š|j                  t        | j                  «      «       n‰t
        j                   z  Št        | j                  «      }|r�‰t
        j                  z  Š|j                  t        | j                  «      «       |j                  t!        j"                  | j                  D �cg c]  }t%        |d«      ‘Œ c}| ¬«      «       n‰t
        j                   z  Š| j&                  t(        k7  r8‰t
        j*                  z  Š|j                  t        | j&                  «      «       n‰t
        j*                   z  Š| j,                  t(        k7  r8‰t
        j.                  z  Š|j                  t        | j,                  «      «       n‰t
        j.                   z  Šˆfd„}t0        j3                  «       D ]3  \  }}	t5        | j6                  |«      }
|j                   ||
|	«      «       Œ5 t        ‰«      t9        |«      z   S c c}w )Néÿÿ  rn   r,   rœ   )ÚoptimizeSizec                 ó’   •— ‰|j                   z  r7t        j                  dt        | |j                  z  |j
                  «      «      S y)Nr£   rM   )rP   rc   rd   Úfl2firR   rQ   )r·   r¤   r�   s     €rN   Úwrite_transform_componentz7VarComponent.compile.<locals>.write_transform_component  s@   ø€ Ø�v—{‘{Ò"Ü—{‘{Øœ% ¨¯©Ñ 4°f×6KÑ6KÓLóð ð rM   )Úcfgr   r�   Ú
getGlyphIDrŽ   r+   rH   ÚappendÚ_packerr�   rC   rƒ   r©   r‘   r=   r�   r	   ÚcompileDeltaValues_r¿   r“   r’   r>   r”   r?   r¬   r­   Úgetattrr•   r   )rŠ   r¯   ÚoptimizeSpeedr}   r²   r³   rf   rÀ   rµ   r¶   r·   r�   s              @rN   ÚcompilezVarComponent.compileñ   sV  ø€ ØŸ™Ô!4Ñ5ˆàˆà—
‘
ˆà—/‘/ $§.¡.Ó1ˆØ�UŠ?ØÔ&×3Ñ3Ñ3ˆEØ�K‰Kœ ™
 7Ó+Õ,àÔ'×4Ñ4Ð4Ñ4ˆEØ�K‰Kœ ™
 7Ó+Ô,à×ÑÐ*ØÔ&×5Ñ5Ñ5ˆEØ�K‰KÔ(¨×)<Ñ)<Ó=Õ>àÔ'×6Ñ6Ð6Ñ6ˆEä�d—o‘oÓ&ˆáØÔ&×0Ñ0Ñ0ˆEØ�K‰KÔ(¨×)>Ñ)>Ó?Ô@Ø�K‰KÜ×2Ñ2Ø+/¯?©?Ö; a”U˜1˜b•\Ò;Ø%2Ð!2ôõð Ô'×1Ñ1Ð1Ñ1ˆEà×"Ñ"Ô&8Ò8ØÔ&×AÑAÑAˆEØ�K‰KÔ(¨×)@Ñ)@ÓAÕBàÔ'×BÑBÐBÑBˆEØ×!Ñ!Ô%7Ò7ØÔ&×>Ñ>Ñ>ˆEØ�K‰KÔ(¨×)?Ñ)?Ó@ÕAàÔ'×?Ñ?Ð?Ñ?ˆEô	ô *?×)DÑ)DÓ)Fò 	JÑ%ˆI�~Ü˜DŸN™N¨IÓ6ˆEØ�K‰KÑ1°%¸ÓHÕIð	Jô   Ó&¬°4«Ñ8Ð8ùò= <s   Å3Kc                 ó®  ‡— ‰j                  d|«       ‰j                  «        dˆfd„	} |d| j                  «       | j                  � |d| j                  «       | j                  � |d| j                  «       | j                  €| j
                  t        j                  z  rW| j
                  t        j                  z  rd}nd} |d| j                  D �cg c]  }t        t        |d	«      «      ‘Œ c}|«       | j                  t        k7  r |d
| j                  «       | j                  t        k7  r |d| j                  «       t        j                  «       D ]R  \  }}| j
                  |j                   z  sŒ t#        | j$                  |«      } ||t        ||j&                  «      «       ŒT ‰j)                  d«       ‰j                  «        y c c}w )Nr…   rL   c                 ó\   •— |�)‰j                  | d|ff|z   «       ‰j                  «        y y )Nr·   )Ú	simpletagÚnewline)Únamer·   ÚattrsÚwriters      €rN   Úwritez!VarComponent.toXML.<locals>.write1  s5   ø€ ØÐ Ø× Ñ  ¨°%Ð(8Ð':¸UÑ'BÔCØ—‘Õ ð !rM   rŽ   r�   r�   ))ÚresetUnspecifiedAxesr   r‘   rœ   r“   r”   )rL   )ÚbegintagrÌ   rŽ   r�   r�   r�   r+   r<   r‘   ÚfloatÚfl2strr“   r’   r”   r¬   r­   rP   rÆ   r•   rQ   Úendtag)rŠ   rÏ   ÚttFontrÎ   rÐ   rf   rµ   Úmappings    `      rN   ÚtoXMLzVarComponent.toXML-  s†  ø€ Ø�‰˜¨Ô.Ø�‰Ôõ	!ñ
 	ˆk˜4Ÿ>™>Ô*à×ÑÐ*ÙÐ" D×$7Ñ$7Ô8Ø× Ñ Ð,ÙÐ$ d×&;Ñ&;Ô<à×!Ñ!Ð-Ø�z‰zÔ-×DÑDÒDà�z‰zÔ-×DÑDÒDØ6‘à�Ù�,¸t¿¹Ö O¸!¤¤v¨a°£}Õ!5Ò OÐQVÔWà×"Ñ"Ô&8Ò8ÙÐ&¨×(?Ñ(?Ô@Ø×!Ñ!Ô%7Ò7ÙÐ% t×'=Ñ'=Ô>ô #8×"=Ñ"=Ó"?ò 	@ÑˆI�wØ—J‘J §¡Ò-ØÜ˜Ÿ™¨	Ó2ˆAÙ�)œV A w×'=Ñ'=Ó>Õ?ð		@ð 	�‰�nÔ%Ø�‰Õùò! !Ps   ÃG
c                 ó^  — |D �cg c]  }t        |t        «      sŒ|‘Œ }}| j                  «        |D �]/  \  }}}|rJ ‚|d   }|dk(  r|| _        Œ|dk(  rt	        |«      | _        Œ4|dk(  rt	        |«      | _        ŒJ|dk(  r`t        d„ t	        |«      D «       «      | _        t	        |j                  dd«      «      sŒ‹| xj                  t        j                  z  c_	        Œ¯|d	k(  rt	        |«      | _        ŒÅ|d
k(  rt	        |«      | _        ŒÛ|t        v rHt        | j                   |t	        |«      «       | xj                  t        |   j"                  z  c_	        �Œ+J |«       ‚ | j                  t        j$                  z  s&| j                   j&                  | j                   _        y y c c}w )Nr·   rŽ   r�   r�   r‘   c              3   ó4   K  — | ]  }t        |d «      –— Œ y­wr›   )Ústr2flrž   s     rN   r    z'VarComponent.fromXML.<locals>.<genexpr>f  s   è ø€ Ò'K¸!¬¨q°"¯Ñ'Kùr¡   rÑ   Ú0r“   r”   )Ú
isinstancer«   rˆ   rŽ   r   r�   r�   r‘   Úgetr�   r+   r<   r“   r”   r¬   r®   r•   rP   rE   rZ   r[   )rŠ   rÍ   rÎ   ÚcontentrÖ   Úcrf   s          rN   ÚfromXMLzVarComponent.fromXMLV  sy  € Ø%Ö>˜¬°A´uÕ)=’1Ð>ˆÐ>à×ÑÔà$+ó 	#Ñ ˆD�%˜ÙÐ�;Ø�g‘ˆAà�{Ò"Ø!"�•ØÐ)Ò)Ü&.¨q£k�Õ#ØÐ+Ò+Ü(0°«�Õ%Ø˜Ò%Ü"'Ñ'K¼xÈ»{Ô'KÓ"K�”Ü˜EŸI™IÐ&<¸cÓBÕCØ—J’JÔ"3×"JÑ"JÑJ–JØÐ-Ò-Ü*2°1«+�Õ'ØÐ,Ò,Ü)1°!«�Õ&ØÔ.Ñ.ÜØ—N‘NØÜ˜Q“Kôð
 —
’
Ô3°DÑ9×>Ñ>Ñ>—
à"˜dÓ"�uð5	#ð8 —
‘
Ô.×;Ñ;Ò;Ø$(§N¡N×$9Ñ$9ˆD�N‰NÕ!ð <ùòA ?s
   …F*›F*c           	      ó„  ‡ ‡‡— dŠˆˆˆ fd„}t         j                  «       D ];  \  }} ||«      }t        ‰ j                  |t	        ‰ j                  |«      |z   «       Œ= ‰ j
                  t        j                  z  s%‰ j                  j                  ‰ j                  _	        ‰t        ‰«      k(  sJ ‰t        ‰«      f«       ‚y )Nr   c                 ó’   •— ‰j                   | j                  z  r-t        ‰‰   | j                  «      | j                  z  }‰dz  Š|S y)Nr   r   )r�   rP   r�   rQ   rR   )r¤   rf   Údeltasr~   rŠ   s     €€€rN   Úread_transform_component_deltazIVarComponent.applyTransformDeltas.<locals>.read_transform_component_delta}  sC   ø€ à�z‰z˜FŸK™KÒ'Ü˜& ™) V×%:Ñ%:Ó;¸f¿l¹lÑJ�Ø�Q‘�Ø�àrM   )r¬   r­   r®   r•   rÆ   r�   r+   rE   rZ   r[   r©   )rŠ   rä   rå   rµ   r¶   r·   r~   s   ``    @rN   ÚapplyTransformDeltasz!VarComponent.applyTransformDeltasz  s¥   ú€ Øˆö	ô *?×)DÑ)DÓ)Fò 	Ñ%ˆI�~Ù2°>ÓBˆEÜØ—‘ 	¬7°4·>±>À9Ó+MÐPUÑ+Uõð	ð —
‘
Ô.×;Ñ;Ò;Ø$(§N¡N×$9Ñ$9ˆD�N‰NÔ!à”C˜“KÒÐ1 !¤S¨£[Ð!1Ó1ÑrM   c                 ón   — t        | «      t        |«      k7  rt        S | j                  |j                  k(  S r‡   )ÚtypeÚNotImplementedÚ__dict__)rŠ   Úothers     rN   Ú__eq__zVarComponent.__eq__‘  s+   € Ü�‹:œ˜e›Ò$Ü!Ð!Ø�}‰} §¡Ñ.Ð.rM   c                 ó>   — | j                  |«      }|t        u r|S | S r‡   )rì   ré   )rŠ   rë   Úresults      rN   Ú__ne__zVarComponent.__ne__–  s$   € Ø—‘˜UÓ#ˆØ¤>Ñ1ˆvÐA¸6°zÐArM   r‡   )r9   r:   r;   r‹   rˆ   rº   rÈ   rØ   rá   ræ   rì   rï   rL   rM   rN   r…   r…   �   s5   „ ò ó/òDòL:9òx'òR":òH2ò./ó
BrM   r…   c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚVarCompositeGlyphNc                 ó&   — |�|| _         y g | _         y r‡   ©Ú
components)rŠ   rô   s     rN   r‹   zVarCompositeGlyph.__init__œ  s   € Ø(2Ð(>˜*ˆ�ÀBˆ�rM   c                 óŽ   — g | _         |r<t        «       }|j                  |||«      }| j                   j                  |«       |rŒ;y y r‡   )rô   r…   rº   rÃ   )rŠ   r}   r¯   r°   Ú	components        rN   rº   zVarCompositeGlyph.decompileŸ  s>   € ØˆŒÙÜ$›ˆIØ×&Ñ& t¨T°:Ó>ˆDØ�O‰O×"Ñ" 9Ô-ô rM   c                 ó~   — g }| j                   D ]"  }|j                  |j                  |«      «       Œ$ t        |«      S r‡   )rô   rÃ   rÈ   r   )rŠ   r¯   r}   rö   s       rN   rÈ   zVarCompositeGlyph.compile¦  s;   € ØˆØŸ™ò 	1ˆIØ�K‰K˜	×)Ñ)¨$Ó/Õ0ð	1ä˜‹ÐrM   c                 óð   — |j                  d|«       |j                  «        t        | j                  «      D ]  \  }}|j	                  ||d|fg«       Œ |j                  d«       |j                  «        y )Nrñ   Úindex)rÒ   rÌ   Ú	enumeraterô   rØ   rÕ   )rŠ   Ú	xmlWriterr¯   rÎ   rÍ   r~   rö   s          rN   rØ   zVarCompositeGlyph.toXML¬  sl   € Ø×ÑÐ.°Ô6Ø×ÑÔÜ% d§o¡oÓ6ò 	=‰LˆAˆyØ�O‰O˜I t¨w¸¨l¨^Õ<ð	=à×ÑÐ,Ô-Ø×ÑÕrM   c                 óä   — |D �cg c]  }t        |t        «      sŒ|‘Œ }}|D ]F  \  }}}|dk(  sJ ‚t        «       }|j                  ||||«       | j                  j                  |«       ŒH y c c}w )Nr…   )rÝ   r«   r…   rá   rô   rÃ   )rŠ   rÍ   rÎ   rß   r¯   rà   rö   s          rN   rá   zVarCompositeGlyph.fromXML´  st   € Ø%Ö>˜¬°A´uÕ)=’1Ð>ˆÐ>Ø$+ò 	.Ñ ˆD�%˜Ø˜>Ò)Ð)Ð)Ü$›ˆIØ×Ñ˜d E¨7°DÔ9Ø�O‰O×"Ñ" 9Õ-ñ		.ùò ?s
   …A-›A-r‡   )r9   r:   r;   r‹   rº   rÈ   rØ   rá   rL   rM   rN   rñ   rñ   ›  s   „ óGò.òòó.rM   rñ   c                   ó   — e Zd Zd„ Zy)ÚAATStateTablec                 ó.   — i | _         g | _        g | _        y r‡   )ÚGlyphClassesÚStatesÚPerGlyphLookupsr‰   s    rN   r‹   zAATStateTable.__init__¾  s   € ØˆÔØˆŒØ!ˆÕrM   N©r9   r:   r;   r‹   rL   rM   rN   rþ   rþ   ½  s   „ ó"rM   rþ   c                   ó   — e Zd Zd„ Zy)ÚAATStatec                 ó   — i | _         y r‡   )ÚTransitionsr‰   s    rN   r‹   zAATState.__init__Å  s
   € ØˆÕrM   Nr  rL   rM   rN   r  r  Ä  s   „ órM   r  c                   ó,   — e Zd ZdZed„ «       Zd„ Zd„ Zy)Ú	AATActionNc                  ó   — y)N©NNrL   )r¯   Ústatess     rN   ÚcompileActionszAATAction.compileActionsÌ  s   € àrM   c                 óH  — | j                   D �cg c]  }| j                  |   sŒ|‘Œ }}|r2|j                  ddj                  |«      ¬«       |j	                  «        | j
                  dk7  r1|j                  dd| j
                  z  ¬«       |j	                  «        y y c c}w )NÚFlagsú,©r·   r   ÚReservedFlagsz0x%04X)Ú_FLAGSrê   rË   ÚjoinrÌ   r  )rŠ   rû   Úfr�   s       rN   Ú_writeFlagsToXMLzAATAction._writeFlagsToXMLÐ  s�   € Ø ŸK™KÖ<�q¨4¯=©=¸Ó+;’Ð<ˆÐ<ÙØ×Ñ ¨s¯x©x¸«ÐÔ?Ø×ÑÔØ×Ñ Ò"Ø×Ñ °xÀ$×BTÑBTÑ7TÐÔUØ×ÑÕð #ùò	 =s
   �B¤Bc                 óR   — || j                   v s
J d|z  «       ‚d| j                  |<   y )Nzunsupported flag %sT)r  rê   ©rŠ   rP   s     rN   Ú_setFlagzAATAction._setFlagÙ  s-   € Ø�t—{‘{Ñ"Ð@Ð$9¸DÑ$@Ó@Ð"Ø"ˆ�‰�dÒrM   )r9   r:   r;   r  Ústaticmethodr  r  r  rL   rM   rN   r	  r	  É  s#   „ Ø€Fàñó ðò ó#rM   r	  c                   óž   — e Zd ZdZdZg d¢Zi dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“Zd"„ Zd#„ Zd$„ Z	d%„ Z
d&„ Zy')(ÚRearrangementMorphActionr-   r   )Ú	MarkFirstÚDontAdvanceÚMarkLastz	no changer   u	   Ax â‡’ xAr,   u	   xD â‡’ Dxrn   u   AxD â‡’ DxAu   ABx â‡’ xABr|   u   ABx â‡’ xBAé   u   xCD â‡’ CDxé   u   xCD â‡’ DCxr.   u   AxCD â‡’ CDxAé	   u   AxCD â‡’ DCxArV   u   ABxD â‡’ DxABé   u   ABxD â‡’ DxBArT   u   ABxCD â‡’ CDxABé   u   ABxCD â‡’ CDxBArœ   u   ABxCD â‡’ DCxABé   u   ABxCD â‡’ DCxBAc                 óX   — d| _         d| _        d| _        d| _        d| _        d| _        y ©Nr   F)ÚNewStateÚVerbr  r  r  r  r‰   s    rN   r‹   z!RearrangementMorphAction.__init__ö  s.   € ØˆŒØˆŒ	ØˆŒØ ˆÔØˆŒØˆÕrM   c                 óZ  — |�J ‚|j                  | j                  «       | j                  dk\  r| j                  dk  sJ | j                  «       ‚| j                  | j                  z  }| j                  r|dz  }| j
                  r|dz  }| j                  r|dz  }|j                  |«       y )Nr   r%  r‚   r8   r7   )ÚwriteUShortr(  r)  r  r  r  r  ©rŠ   rÏ   r¯   ÚactionIndexr�   s        rN   rÈ   z RearrangementMorphAction.compileþ  s˜   € ØÐ"Ð"Ð"Ø×Ñ˜4Ÿ=™=Ô)Ø�y‰y˜AŠ~ $§)¡)¨r¢/Ð<°4·9±9Ó<Ð1Ø—	‘	˜D×.Ñ.Ñ.ˆØ�>Š>Ø�V‰OˆEØ×ÒØ�V‰OˆEØ�=Š=Ø�V‰OˆEØ×Ñ˜5Õ!rM   c                 óð   — |�J ‚|j                  «       | _        |j                  «       }|dz  | _        t        |dz  «      | _        t        |dz  «      | _        t        |dz  «      | _        |dz  | _        y )Nr%  r‚   r8   r7   ið  )Ú
readUShortr(  r)  Úboolr  r  r  r  ©rŠ   Úreaderr¯   ÚactionReaderr�   s        rN   rº   z"RearrangementMorphAction.decompile  st   € ØÐ#Ð#Ð#Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆØ˜C‘KˆŒ	Ü˜e f™nÓ-ˆŒÜ ¨¡Ó/ˆÔÜ˜U V™^Ó,ˆŒØ" V™^ˆÕrM   c                 óÒ  —  |j                   |fi |¤Ž |j                  «        |j                  d| j                  ¬«       |j                  «        | j	                  |«       |j                  d| j
                  ¬«       | j                  j                  | j
                  «      }|�|j                  |«       |j                  «        |j                  |«       |j                  «        y )Nr(  r  r)  )
rÒ   rÌ   rË   r(  r  r)  Ú_VERBSrÞ   ÚcommentrÕ   )rŠ   rû   r¯   rÎ   rÍ   ÚverbComments         rN   rØ   zRearrangementMorphAction.toXML  s»   € Øˆ	×Ñ˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÔ<Ø×ÑÔØ×Ñ˜iÔ(Ø×Ñ˜F¨$¯)©)ÐÔ4Ø—k‘k—o‘o d§i¡iÓ0ˆØÐ"Ø×Ñ˜kÔ*Ø×ÑÔØ×Ñ˜ÔØ×ÑÕrM   c                 óÊ  — dx| _         x| _        | _        dx| _        x| _        | _        |D �cg c]  }t        |t        «      sŒ|‘Œ }}|D ]�  \  }}}|dk(  rt        |d   «      | _         Œ |dk(  rt        |d   «      | _        Œ9|dk(  rt        |d   «      | _        ŒR|dk(  sŒX|d   j                  d«      D ]!  }	| j                  |	j                  «       «       Œ# Œ‘ y c c}w )	Nr   Fr(  r·   r)  r  r  r  )r(  r)  r  r  r  r  rÝ   r«   r   Úsplitr  Ústrip©
rŠ   rÍ   rÎ   rß   r¯   ÚtÚeltNameÚeltAttrsÚ
eltContentrP   s
             rN   rá   z RearrangementMorphAction.fromXML#  sê   € Ø9:Ð:ˆŒÐ:˜œ	 DÔ$6Ø<AÐAˆŒÐA˜Ô)¨D¬MØ%Ö>˜¬°A´uÕ)=’1Ð>ˆÐ>Ø-4ò 		0Ñ)ˆG�X˜zØ˜*Ò$Ü (¨°'Ñ):Ó ;�•Ø˜FÒ"Ü$ X¨gÑ%6Ó7�•	Ø˜OÒ+Ü%-¨h°wÑ.?Ó%@�Õ"Ø˜GÓ#Ø$ WÑ-×3Ñ3°CÓ8ò 0�DØ—M‘M $§*¡*£,Õ/ñ0ñ		0ùò ?s   ¯C ÁC N)r9   r:   r;   Ú
staticSizeÚactionHeaderSizer  r5  r‹   rÈ   rº   rØ   rá   rL   rM   rN   r  r  Þ  sò   „ Ø€JØÐÚ5€FðØ	ˆ;ðà	ˆ;ðð 	
ˆ;ðð 	
ˆ=ð	ð
 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ?ðð 	
ˆ?ðð 	ˆOðð 	ˆOðð 	Ððð 	Ððð 	Ððð  	Ðð!€Fò&ò"ò,òó0rM   r  c                   ó:   — e Zd ZdZdZddgZd„ Zd„ Zd„ Zd„ Z	d	„ Z
y
)ÚContextualMorphActionr.   r   ÚSetMarkr  c                 ó\   — d| _         d\  | _        | _        d| _        d\  | _        | _        y )Nr   ©FF©r¼   r¼   )r(  rD  r  r  Ú	MarkIndexÚCurrentIndexr‰   s    rN   r‹   zContextualMorphAction.__init__8  s/   € ØˆŒØ)5Ñ&ˆŒ�dÔ&ØˆÔØ,:Ñ)ˆŒ˜Õ)rM   c                 ó,  — |�J ‚|j                  | j                  «       | j                  }| j                  r|dz  }| j                  r|dz  }|j                  |«       |j                  | j
                  «       |j                  | j                  «       y )Nr‚   r8   )r+  r(  r  rD  r  rH  rI  r,  s        rN   rÈ   zContextualMorphAction.compile>  s�   € ØÐ"Ð"Ð"Ø×Ñ˜4Ÿ=™=Ô)Ø×"Ñ"ˆØ�<Š<Ø�V‰OˆEØ×ÒØ�V‰OˆEØ×Ñ˜5Ô!Ø×Ñ˜4Ÿ>™>Ô*Ø×Ñ˜4×,Ñ,Õ-rM   c                 ó
  — |�J ‚|j                  «       | _        |j                  «       }t        |dz  «      | _        t        |dz  «      | _        |dz  | _        |j                  «       | _        |j                  «       | _        y )Nr‚   r8   iÿ?  )r/  r(  r0  rD  r  r  rH  rI  r1  s        rN   rº   zContextualMorphAction.decompileJ  sz   € ØÐ#Ð#Ð#Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆÜ˜E F™NÓ+ˆŒÜ ¨¡Ó/ˆÔØ" V™^ˆÔØ×*Ñ*Ó,ˆŒØ"×-Ñ-Ó/ˆÕrM   c                 ó¼  —  |j                   |fi |¤Ž |j                  «        |j                  d| j                  ¬«       |j                  «        | j	                  |«       |j                  d| j
                  ¬«       |j                  «        |j                  d| j                  ¬«       |j                  «        |j                  |«       |j                  «        y )Nr(  r  rH  rI  )rÒ   rÌ   rË   r(  r  rH  rI  rÕ   ©rŠ   rû   r¯   rÎ   rÍ   s        rN   rØ   zContextualMorphAction.toXMLT  s¶   € Øˆ	×Ñ˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÔ<Ø×ÑÔØ×Ñ˜iÔ(Ø×Ñ˜K¨t¯~©~ÐÔ>Ø×ÑÔØ×Ñ˜N°$×2CÑ2CÐÔDØ×ÑÔØ×Ñ˜ÔØ×ÑÕrM   c                 óþ  — dx| _         | _        dx| _        | _        d\  | _        | _        |D �cg c]  }t        |t        «      sŒ|‘Œ }}|D ]¨  \  }}}|dk(  rt        |d   «      | _         Œ |dk(  r9|d   j                  d«      D ]!  }	| j                  |	j                  «       «       Œ# Œ^|dk(  rt        |d   «      | _        Œw|d	k(  rt        |d   «      | _        Œ�|d
k(  sŒ–t        |d   «      | _        Œª y c c}w )Nr   FrG  r(  r·   r  r  r  rH  rI  )r(  r  rD  r  rH  rI  rÝ   r«   r   r9  r  r:  r;  s
             rN   rá   zContextualMorphAction.fromXMLa  s  € Ø-.Ð.ˆŒ˜Ô*Ø*/Ð/ˆŒ�tÔ'Ø,:Ñ)ˆŒ˜Ô)Ø%Ö>˜¬°A´uÕ)=’1Ð>ˆÐ>Ø-4ò 	@Ñ)ˆG�X˜zØ˜*Ò$Ü (¨°'Ñ):Ó ;�•Ø˜GÒ#Ø$ WÑ-×3Ñ3°CÓ8ò 0�DØ—M‘M $§*¡*£,Õ/ñ0à˜OÒ+Ü%-¨h°wÑ.?Ó%@�Õ"Ø˜KÒ'Ü!)¨(°7Ñ*;Ó!<�•Ø˜NÓ*Ü$,¨X°gÑ->Ó$?�Õ!ñ	@ùò ?s   °C:ÁC:N)r9   r:   r;   r@  rA  r  r‹   rÈ   rº   rØ   rá   rL   rM   rN   rC  rC  3  s1   „ Ø€JØÐØ˜Ð'€Fò;ò
.ò0òó@rM   rC  c                   ó   — e Zd Zd„ Zy)Ú	LigActionc                 ó    — d| _         d| _        y )NFr   )ÚStoreÚGlyphIndexDeltar‰   s    rN   r‹   zLigAction.__init__u  s   € ØˆŒ
ð  !ˆÕrM   Nr  rL   rM   rN   rP  rP  t  s   „ ó!rM   rP  c                   óV   — e Zd ZdZdZddgZd„ Zd„ Zd„ Ze	d„ «       Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚLigatureMorphActionr   rT   ÚSetComponentr  c                 óL   — d| _         d\  | _        | _        d| _        g | _        y )Nr   rF  )r(  rV  r  r  ÚActionsr‰   s    rN   r‹   zLigatureMorphAction.__init__‹  s(   € ØˆŒØ.:Ñ+ˆÔ˜4Ô+ØˆÔØˆ�rM   c                 ó–  — |€J ‚|j                  | j                  «       | j                  }| j                  r|dz  }| j                  r|dz  }t        | j                  «      dkD  r|dz  }|j                  |«       t        | j                  «      dkD  r%| j                  «       }|j                  ||   «       y |j                  d«       y )Nr‚   r8   r   r7   )r+  r(  r  rV  r  r©   rX  ÚcompileLigActions)rŠ   rÏ   r¯   r-  r�   Úactionss         rN   rÈ   zLigatureMorphAction.compile‘  s·   € ØÐ&Ð&Ð&Ø×Ñ˜4Ÿ=™=Ô)Ø×"Ñ"ˆØ×ÒØ�V‰OˆEØ×ÒØ�V‰OˆEÜˆt�|‰|Ó˜qÒ Ø�V‰OˆEØ×Ñ˜5Ô!Üˆt�|‰|Ó˜qÒ Ø×,Ñ,Ó.ˆGØ×Ñ˜{¨7Ñ3Õ4à×Ñ˜qÕ!rM   c                 ó4  — |€J ‚|j                  «       | _        |j                  «       }t        |dz  «      | _        t        |dz  «      | _        t        |dz  «      }|dz  | _        |j                  «       }|r| j                  ||«      | _        y g | _        y )Nr‚   r8   r7   iÿ  )r/  r(  r0  rV  r  r  Ú_decompileLigActionsrX  )rŠ   r2  r¯   r3  r�   ÚperformActionr-  s          rN   rº   zLigatureMorphAction.decompile¢  s–   € ØÐ'Ð'Ð'Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆÜ  ¨¡Ó0ˆÔÜ ¨¡Ó/ˆÔÜ˜U V™^Ó,ˆð # V™^ˆÔØ×'Ñ'Ó)ˆÙØ×4Ñ4°\À;ÓOˆD�LàˆD�LrM   c                 óŽ  — dt        «       i }}}|D ]C  }|j                  j                  «       D ]$  \  }}|j                  |j	                  «       «       Œ& ŒE t        |d„ ¬«      D ]O  }||vsŒt        dt        |«      d«      D ]*  }	||	d  }
t        |«      |	z   dz  }|j                  |
|«       Œ, ||z  }ŒQ t        |d«      }||fS )NrM   c                 ó   — t        | «       | fS r‡   ©r©   ©Úxs    rN   rg   z4LigatureMorphAction.compileActions.<locals>.<lambda>Æ  s   € ´°Q³°¸¨|€ rM   ©Úkeyr   r-   )
Úsetr  r­   ÚaddrZ  ÚsortedÚranger©   Ú
setdefaultr   )r¯   r  rî   r[  r-  ÚstateÚ_glyphClassÚtransÚar~   ÚsuffixÚsuffixIndexs               rN   r  z"LigatureMorphAction.compileActionsµ  sç   € à'*¬C«E°2˜�ˆØò 	7ˆEØ&+×&7Ñ&7×&=Ñ&=Ó&?ò 7Ñ"�˜UØ—‘˜E×3Ñ3Ó5Õ6ñ7ð	7ô ˜Ñ%;Ô<ò 	ˆAØ˜Ò#Ü˜q¤# a£&¨!Ó,ò @�AØ˜q˜r˜U�FÜ#& v£;°¡?°qÑ"8�KØ×*Ñ*¨6°;Õ?ð@ð ˜!‘‘ð	ô �V˜Q“ˆØ˜Ð$Ð$rM   c                 ó,  — g }t        | j                  «      D ]p  \  }}|t        | j                  «      dz
  k(  }|j                  dz  }||rdndz  }||j                  rdndz  }|j                  t        j                  d|«      «       Œr t        |«      S )Nr   éÿÿÿ?ì        r   é   @rl   )	rú   rX  r©   rS  rR  rÃ   rc   rd   r   )rŠ   rî   r~   ÚactionÚlastr·   s         rN   rZ  z%LigatureMorphAction.compileLigActionsÐ  s�   € ØˆÜ" 4§<¡<Ó0ò 	4‰IˆAˆvØœ˜DŸL™LÓ)¨AÑ-Ñ-ˆDØ×*Ñ*¨ZÑ7ˆEØ¡4‘Z¨QÑ.ˆEØ 6§<¢<‘Z°QÑ6ˆEØ�M‰Mœ&Ÿ+™+ d¨EÓ2Õ3ð	4ô ˜Ó Ð rM   c                 ó  — g }d}|j                  |j                  |dz  z   «      }|se|j                  «       }t        |dz  «      }t	        «       }|j                  |«       t        |dz  «      |_        |dz  }|dk\  rd|z   }||_        |sŒe|S )NFr-   rs  rt  rr  i    i   À)ÚgetSubReaderÚposÚ	readULongr0  rP  rÃ   rR  rS  )	rŠ   r3  r-  r[  rv  r2  r·   ru  Údeltas	            rN   r]  z(LigatureMorphAction._decompileLigActionsÚ  sŸ   € ØˆØˆØ×*Ñ*¨<×+;Ñ+;¸kÈA¹oÑ+MÓNˆÙØ×$Ñ$Ó&ˆEÜ˜ 
Ñ*Ó+ˆDÜ“[ˆFØ�N‰N˜6Ô"Ü ¨
Ñ 2Ó3ˆFŒLØ˜JÑ&ˆEØ˜
Ò"Ø# eÑ+�Ø%*ˆFÔ"ò ð ˆrM   c                 ó¬  — dx| _         | _        dx| _        | _        d| _        g | _        |D �cg c]  }t        |t        «      sŒ|‘Œ }}|D ]û  \  }}}|dk(  rt        |d   «      | _         Œ |dk(  r9|d   j                  d«      D ]!  }	| j                  |	j                  «       «       Œ# Œ^|dk(  rt        |d   «      | _        Œw|dk(  sŒ}t        «       }
|j                  dd	«      j                  d«      }|D �cg c]  }|j                  «       ‘Œ }}d
|v |
_        t        |d   «      |
_        | j                  j                  |
«       Œý y c c}w c c}w )Nr   Fr(  r·   r  r  r  ÚActionÚ rR  rS  )r(  r  rV  r  rX  rÝ   r«   r   r9  r  r:  rP  rÞ   rR  rS  rÃ   )rŠ   rÍ   rÎ   rß   r¯   r<  r=  r>  r?  rP   ru  r�   r  s                rN   rá   zLigatureMorphAction.fromXMLê  sL  € Ø-.Ð.ˆŒ˜Ô*Ø/4Ð4ˆÔ˜DÔ,ØˆÔØˆŒØ%Ö>˜¬°A´uÕ)=’1Ð>ˆÐ>Ø-4ò 	,Ñ)ˆG�X˜zØ˜*Ò$Ü (¨°'Ñ):Ó ;�•Ø˜GÒ#Ø$ WÑ-×3Ñ3°CÓ8ò 0�DØ—M‘M $§*¡*£,Õ/ñ0à˜OÒ+Ü%-¨h°wÑ.?Ó%@�Õ"Ø˜HÓ$Ü"›�Ø Ÿ™ W¨bÓ1×7Ñ7¸Ó<�Ø,1Ö2 q˜Ÿ™�Ð2�Ð2Ø&¨%Ð/�”Ü)1°(Ð;LÑ2MÓ)N�Ô&Ø—‘×#Ñ# FÕ+ñ	,ùò ?ùò 3s   ¯EÁEÃ9Ec                 óÆ  —  |j                   |fi |¤Ž |j                  «        |j                  d| j                  ¬«       |j                  «        | j	                  |«       | j
                  D ]P  }d|j                  fg}|j                  r|j                  d«       |j                  d|«       |j                  «        ŒR |j                  |«       |j                  «        y )Nr(  r  rS  )r  rR  r}  )
rÒ   rÌ   rË   r(  r  rX  rS  rR  rÃ   rÕ   )rŠ   rû   r¯   rÎ   rÍ   ru  Úattribss          rN   rØ   zLigatureMorphAction.toXML   sÆ   € Øˆ	×Ñ˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÔ<Ø×ÑÔØ×Ñ˜iÔ(Ø—l‘lò 	 ˆFØ)¨6×+AÑ+AÐBÐCˆGØ�|Š|Ø—‘Ð1Ô2Ø×Ñ ¨'Ô2Ø×ÑÕð	 ð 	×Ñ˜ÔØ×ÑÕrM   N)r9   r:   r;   r@  rA  r  r‹   rÈ   rº   r  r  rZ  r]  rá   rØ   rL   rM   rN   rU  rU  ƒ  sP   „ Ø€Jð Ðà˜mÐ,€Fòò"ò"ð& ñ%ó ð%ò4!òò ,ó,rM   rU  c                   óP   — e Zd ZdZdZg d¢Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zy)ÚInsertionMorphActionr.   r-   )rD  r  ÚCurrentIsKashidaLikeÚMarkedIsKashidaLikeÚCurrentInsertBeforeÚMarkedInsertBeforec                 óz   — d| _         | j                  D ]  }t        | |d«       Œ d| _        g g c| _        | _        y r'  )r(  r  r®   r  ÚCurrentInsertionActionÚMarkedInsertionActionr  s     rN   r‹   zInsertionMorphAction.__init__  sB   € ØˆŒØ—K‘Kò 	'ˆDÜ�D˜$ Õ&ð	'àˆÔØBDÀbÐ?ˆÔ# TÕ%?rM   c                 ó¾  — |€J ‚|j                  | j                  «       | j                  }| j                  r|dz  }| j                  r|dz  }| j
                  r|dz  }| j                  r|dz  }| j                  r|dz  }| j                  r|dz  }|t        | j                  «      dz  z  }|t        | j                  «      z  }|j                  |«       t        | j                  «      dkD  r|t        | j                  «         }nd	}|j                  |«       t        | j                  «      dkD  r|t        | j                  «         }nd	}|j                  |«       y )
Nr‚   r8   r7   r6   r5   r4   r|   r   r¼   )r+  r(  r  rD  r  rƒ  r„  r…  r†  r©   rˆ  r‰  r«   )rŠ   rÏ   r¯   r-  r�   ÚcurrentIndexÚmarkedIndexs          rN   rÈ   zInsertionMorphAction.compile#  sH  € ØÐ&Ð&Ð&Ø×Ñ˜4Ÿ=™=Ô)Ø×"Ñ"ˆØ�<Š<Ø�V‰OˆEØ×ÒØ�V‰OˆEØ×$Ò$Ø�V‰OˆEØ×#Ò#Ø�V‰OˆEØ×#Ò#Ø�V‰OˆEØ×"Ò"Ø�V‰OˆEØ”�T×0Ñ0Ó1°QÑ6Ñ6ˆØ”�T×/Ñ/Ó0Ñ0ˆØ×Ñ˜5Ô!Üˆt×*Ñ*Ó+¨aÒ/Ø&¤u¨T×-HÑ-HÓ'IÑJ‰Là!ˆLØ×Ñ˜<Ô(Üˆt×)Ñ)Ó*¨QÒ.Ø%¤e¨D×,FÑ,FÓ&GÑH‰Kà ˆKØ×Ñ˜;Õ'rM   c                 óì  — |€J ‚|j                  «       | _        |j                  «       }t        |dz  «      | _        t        |dz  «      | _        t        |dz  «      | _        t        |dz  «      | _        t        |dz  «      | _        t        |dz  «      | _        | j                  |||j                  «       |dz  dz	  ¬	«      | _
        | j                  |||j                  «       |d
z  ¬	«      | _        y )Nr‚   r8   r7   r6   r5   r4   ià  r|   )rù   Úcounté   )r/  r(  r0  rD  r  rƒ  r„  r…  r†  Ú_decompileInsertionActionrˆ  r‰  r1  s        rN   rº   zInsertionMorphAction.decompileA  s÷   € ØÐ'Ð'Ð'Ø×)Ñ)Ó+ˆŒØ×!Ñ!Ó#ˆÜ˜E F™NÓ+ˆŒÜ ¨¡Ó/ˆÔÜ$(¨°©Ó$8ˆÔ!Ü#'¨°©Ó#7ˆÔ Ü#'¨°©Ó#7ˆÔ Ü"& u¨v¡~Ó"6ˆÔØ&*×&DÑ&DØ˜$ f×&7Ñ&7Ó&9À5È6Á>ÐVWÑBWð 'Eó '
ˆÔ#ð &*×%CÑ%CØ˜$ f×&7Ñ&7Ó&9À%È&Á.ð &Dó &
ˆÕ"rM   c                 óœ   — |dk(  s|dk(  rg S |j                  |j                  |dz  z   «      }|j                  |j                  |«      «      S )Nr¼   r   r,   )rx  ry  ÚgetGlyphNameManyÚreadUShortArray)rŠ   r3  r¯   rù   rŽ  r2  s         rN   r�  z.InsertionMorphAction._decompileInsertionActionR  sO   € Ø�FŠ?˜e qšjØˆIØ×*Ñ*¨<×+;Ñ+;¸eÀa¹iÑ+GÓHˆØ×$Ñ$ V×%;Ñ%;¸EÓ%BÓCÐCrM   c                 óØ  —  |j                   |fi |¤Ž |j                  «        |j                  d| j                  ¬«       |j                  «        | j	                  |«       | j
                  D ]%  }|j                  d|¬«       |j                  «        Œ' | j                  D ]%  }|j                  d|¬«       |j                  «        Œ' |j                  |«       |j                  «        y )Nr(  r  rˆ  ©Úglyphr‰  )rÒ   rÌ   rË   r(  r  rˆ  r‰  rÕ   )rŠ   rû   r¯   rÎ   rÍ   Úgs         rN   rØ   zInsertionMorphAction.toXMLX  sÜ   € Øˆ	×Ñ˜4Ñ) 5Ò)Ø×ÑÔØ×Ñ˜J¨d¯m©mÐÔ<Ø×ÑÔØ×Ñ˜iÔ(Ø×,Ñ,ò 	 ˆAØ×ÑÐ 8ÀÐÔBØ×ÑÕð	 ð ×+Ñ+ò 	 ˆAØ×ÑÐ 7¸qÐÔAØ×ÑÕð	 ð 	×Ñ˜ÔØ×ÑÕrM   c                 óÎ  — | j                  «        |D �cg c]  }t        |t        «      sŒ|‘Œ }}|D ]«  \  }}}|dk(  rt        |d   «      | _        Œ |dk(  r9|d   j                  d«      D ]!  }	| j                  |	j                  «       «       Œ# Œ^|dk(  r| j                  j                  |d   «       Œ‚|dk(  r| j                  j                  |d   «       Œ¦J |«       ‚ y c c}w )Nr(  r·   r  r  rˆ  r–  r‰  )r‹   rÝ   r«   r   r(  r9  r  r:  rˆ  rÃ   r‰  r;  s
             rN   rá   zInsertionMorphAction.fromXMLg  sâ   € Ø�‰ŒØ%Ö>˜¬°A´uÕ)=’1Ð>ˆÐ>Ø-4ò 	&Ñ)ˆG�X˜zØ˜*Ò$Ü (¨°'Ñ):Ó ;�•Ø˜GÒ#Ø$ WÑ-×3Ñ3°CÓ8ò 0�DØ—M‘M $§*¡*£,Õ/ñ0àÐ4Ò4Ø×+Ñ+×2Ñ2°8¸GÑ3DÕEØÐ3Ò3Ø×*Ñ*×1Ñ1°(¸7Ñ2CÕDà%˜gÓ%�uñ	&ùò ?s
   •C"«C"c                 óŠ  — t        «       i d}}}|D ]…  }|j                  j                  «       D ]f  \  }}|j                  �$|j	                  t        |j                  «      «       |j                  €ŒC|j	                  t        |j                  «      «       Œh Œ‡ t        |d„ ¬«      D ]—  }||v rŒt        dt        |«      «      D ]G  }	t        |«      dz  |	z   }
t        |	t        |«      «      D ]  }||	|dz    }|j                  ||
«       Œ ŒI |D ],  }| j                  |«      }|t        j                  d|«      z  }Œ. Œ™ ||fS )NrM   c                 ó   — t        | «       | fS r‡   ra  rb  s    rN   rg   z5InsertionMorphAction.compileActions.<locals>.<lambda>ƒ  s   € ´c¸!³f°W¸a°L€ rM   rd  r   r,   r   rj   )rf  r  r­   rˆ  rg  r«   r‰  rh  ri  r©   rj  rÂ   rc   rd   )r¯   r  r[  r-  rî   rk  rl  rm  ru  ÚstartÚ
startIndexÚlimitÚglyphsr–  r²   s                  rN   r  z#InsertionMorphAction.compileActionsw  s[  € ä'*£u¨b°#˜f�ˆØò 	DˆEØ&+×&7Ñ&7×&=Ñ&=Ó&?ò DÑ"�˜UØ×/Ñ/Ð;Ø—K‘K¤ e×&BÑ&BÓ CÔDØ×.Ñ.Ñ:Ø—K‘K¤ e×&AÑ&AÓ BÕCñ	Dð	Dô ˜WÑ*@ÔAò 	5ˆFð ˜Ñ$ØÜ˜q¤# f£+Ó.ò ?�Ü! &›k¨QÑ.°%Ñ7�
Ü" 5¬#¨f«+Ó6ò ?�EØ# E¨E°A©IÐ6�FØ×*Ñ*¨6°:Õ>ñ?ð?ð
  ò 5�ØŸ/™/¨%Ó0�Øœ&Ÿ+™+ d¨GÓ4Ñ4‘ñ5ð	5ð" �{Ð"Ð"rM   N)r9   r:   r;   r@  rA  r  r‹   rÈ   rº   r�  rØ   rá   r  r  rL   rM   rN   r‚  r‚    sH   „ Ø€JØÐò€FòIò(ò<
ò"Dòò&ð  ñ#ó ñ#rM   r‚  c                   ó   — e Zd Zd„ Zdd„Zy)ÚFeatureParamsc                 óÄ   — t         j                  |d   «      | j                  k(  s$J d|d   ›d| j                  j                  ›�«       ‚t	        j
                  | ||«       y )NÚ
FeatureTagz&Wrong FeatureParams type for feature 'z': )ÚfeatureParamTypesrÞ   Ú	__class__r9   r   rÈ   ©rŠ   rÏ   r¯   s      rN   rÈ   zFeatureParams.compile˜  s[   € ä×!Ñ! &¨Ñ"6Ó7¸4¿>¹>ÒIñ	
ð �<Ó Ø�N‰N×#Ò#ð
ó	
ØIô
 	×Ñ˜$ ¨Õ-rM   Nc                 ó`   — t        j                  | |||| j                  j                  ¬«       y )N)rÍ   )r   rØ   r¤  r9   rM  s        rN   rØ   zFeatureParams.toXML¡  s    € Ü�‰˜˜i¨¨u¸4¿>¹>×;RÑ;RÖSrM   r  )r9   r:   r;   rÈ   rØ   rL   rM   rN   r   r   —  s   „ ò.ôTrM   r   c                   ó   — e Zd Zy)ÚFeatureParamsSizeN©r9   r:   r;   rL   rM   rN   r¨  r¨  ¥  ó   „ ØrM   r¨  c                   ó   — e Zd Zy)ÚFeatureParamsStylisticSetNr©  rL   rM   rN   r¬  r¬  ©  rª  rM   r¬  c                   ó   — e Zd Zy)ÚFeatureParamsCharacterVariantsNr©  rL   rM   rN   r®  r®  ­  rª  rM   r®  c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚCoverageNc                 ó,   — t        | d«      sg | _        y y )Nrž  )Úhasattrrž  r–   s     rN   rˆ   zCoverage.populateDefaults´  s   € Ü�t˜XÔ&ØˆD�Kð 'rM   c           	      óü  — | j                   dv r|d   | _        | ` y | j                   dv rªg x}| _        |d   }t        |d„ ¬«      }||k7  rt        j	                  d«       |}~|D ]i  }|j
                  }|j                  }|j                  |«      }	|j                  |«      dz   }
|j                  |j                  t        |	|
«      «      «       Œk | ` y g | _        t        j	                  d	| j                   «       | ` y )
N©r   rn   Ú
GlyphArray©r,   r-   ÚRangeRecordc                 ó   — | j                   S r‡   )ÚStartCoverageIndex©rn  s    rN   rg   z#Coverage.postRead.<locals>.<lambda>Á  s   € ¸×9MÑ9M€ rM   rd  ú.GSUB/GPOS Coverage is not sorted by glyph ids.r   zUnknown Coverage format: %s)ÚFormatrž  rh  ÚlogÚwarningÚStartÚEndrÂ   Úextendr’  ri  )rŠ   ÚrawTabler¯   rž  ÚrangesÚsorted_rangesÚrr›  ÚendÚstartIDÚendIDs              rN   ÚpostReadzCoverage.postRead¸  sû   € Ø�;‰;˜&Ñ Ø" <Ñ0ˆDŒKð* ‰Kð) �[‰[˜FÑ"Ø#%Ð%ˆF�T”[Ø˜mÑ,ˆFô # 6Ñ/MÔNˆMØ˜Ò&Ü—‘ÐLÔMØ&�ØØò L�ØŸ™�Ø—e‘e�ØŸ/™/¨%Ó0�ØŸ™¨Ó,¨qÑ0�Ø—‘˜d×3Ñ3´E¸'À5Ó4IÓJÕKðLð ‰Kð ˆDŒKÜ�K‰KÐ5°t·{±{ÔCØ‰KrM   c                 óN  — t        | dd «      }|€	g x}| _        d}d|i}|�r||j                  |«      }t        |«      |k7  }|d   }|gg}|dd  D ]2  }	|	|dz   k7  r&|d   j	                  |«       |j	                  |	g«       |	}Œ4 |d   j	                  |«       |j                  «       xr t        |«      dkD  xs t        |«      dkD  }
|st        |«      dz  t        |«      k  r¶d}t        |«      D ]h  \  }\  }}|
r
t        «       n	t        «       }||_        |j                  |«      |_        |j                  |«      |_        ||_        |||<   ||z   |z
  dz   }Œj |r(t         j#                  d«       |j%                  d	„ ¬
«       |D ]  }|`Œ |
rdnd}d|i}n|
rd}|| _        |S )Nrž  r   rµ  r   éÿÿÿÿr¼   rn   r»  c                 ó   — | j                   S r‡   )ÚStartIDrº  s    rN   rg   z#Coverage.preWrite.<locals>.<lambda>õ  s
   € ¨a¯i©i€ rM   rd  r-   r,   r·  )rÆ   rž  ÚgetGlyphIDManyrh  rÃ   ÚhasExtendedGlyphIDsÚmaxr©   rú   ÚRangeRecord2r·  rÍ  ÚgetGlyphNamer¿  rÀ  r¹  r½  r¾  Úsortr¼  )rŠ   r¯   rž  ÚformatrÂ  ÚglyphIDsÚbrokenOrderrv  rÃ  r²   Úextendedrù   r~   r›  rÆ  rÅ  s                   rN   ÚpreWritezCoverage.preWriteÑ  sß  € Ü˜˜x¨Ó.ˆØˆ>Ø#%Ð%ˆF�T”[ØˆØ  &Ð)ˆÚà×*Ñ*¨6Ó2ˆHÜ  Ó*¨hÑ6ˆKà˜A‘;ˆDØ�f�XˆFØ# A B˜<ò �Ø˜d Q™hÒ&Ø˜2‘J×%Ñ% dÔ+Ø—M‘M 7 )Ô,Ø‘ð	ð
 �2‰J×Ñ˜dÔ#à×/Ñ/Ó1ò Ü�H“ Ñ&Ò>¬#¨f«+¸Ñ*>ð ñ œc &›k¨A™o´°F³Ò;à�Ü'0°Ó'8ò 4‘O�A‘|˜˜sÙ*2œœ¼»�AØ %�A”IØ"×/Ñ/°Ó6�A”GØ ×-Ñ-¨cÓ2�A”EØ+0�AÔ(Ø !�F˜1‘IØ! C™K¨%Ñ/°!Ñ3‘Eð4ñ Ü—K‘KÐ PÔQØ—K‘KÑ$7�KÔ8Øò "�AØ™	ð"á&™¨A�Ø)¨6Ð2‘ÙØ�ØˆŒØˆrM   c                 ón   — t        | dg «      D ]%  }|j                  d|¬«       |j                  «        Œ' y )Nrž  ÚGlyphr  )rÆ   rË   rÌ   )rŠ   rû   r¯   rŽ   s       rN   ÚtoXML2zCoverage.toXML2ÿ  s9   € Ü   x°Ó4ò 	 ˆIØ×Ñ ¨yÐÔ9Ø×ÑÕñ	 rM   c                 ó\   — t        | dd «      }|€	g }|| _        |j                  |d   «       y )Nrž  r·   )rÆ   rž  rÃ   )rŠ   rÍ   rÎ   rß   r¯   rž  s         rN   rá   zCoverage.fromXML  s1   € Ü˜˜x¨Ó.ˆØˆ>ØˆFØ ˆDŒKØ�‰�e˜G‘nÕ%rM   r‡   ©r9   r:   r;   rˆ   rÉ  rØ  rÛ  rá   rL   rM   rN   r°  r°  ±  s   „ óòò2,ò\ ó
&rM   r°  l   ÿÿ c                   óB   — e Zd Zd	d„Zd„ Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
y)
ÚDeltaSetIndexMapNc                 ó,   — t        | d«      sg | _        y y ©Nr×   ©r²  r×   r–   s     rN   rˆ   z!DeltaSetIndexMap.populateDefaults  ó   € Ü�t˜YÔ'ØˆD�Lð (rM   c                 ó2   — |d   dz  dk(  sJ ‚|d   | _         y )NÚEntryFormatéÀÿ  r   r×   )r×   )rŠ   rÂ  r¯   s      rN   rÉ  zDeltaSetIndexMap.postRead  s&   € Ø˜Ñ'¨&Ñ0°QÒ6Ð6Ð6Ø 	Ñ*ˆ�rM   c                 óè   — d}| D ]  }||z  }Œ	 |dz  }d}|r|dz  }|dz  }|rŒt        |d«      }|dk  sJ ‚|d|z
  z	  |d|z  dz
  z  z  }|dk  rd}n|dk  rd}n
|dk  rd}nd	}|dz
  d	z  |dz
  z  S )
Nr   r¼   r   r/   éÿ   r,   iÿÿÿ rn   r-   )rÐ  )r×   ÚoredÚidxÚinnerÚ	innerBitsÚ	entrySizes         rN   ÚgetEntryFormatzDeltaSetIndexMap.getEntryFormat  sÈ   € àˆØò 	ˆCØ�C‰K‰Dð	ð �v‘ˆØˆ	ÙØ˜‰NˆIØ�a‰KˆEò ô ˜	 1Ó%ˆ	Ø˜BŠÐˆà˜˜i™Ñ(¨T°a¸9±nÈÑ5IÑ-JÑKˆØ�:ÒØ‰IØ�ZÒØ‰IØ�ZÒØ‰IàˆIà˜Q‘ 1Ñ$¨°Q©Ñ7Ð7rM   c                 óÜ   — t        | dd «      }|€	g x}| _        t        |«      dkD  rdnd| _        | j                  j                  «       }t        |«      |d<   | j                  |«      |d<   |S )Nr×   r¼   r   r   ÚMappingCountrå  )rÆ   r×   r©   r¼  rê   Úcopyrî  )rŠ   r¯   r×   rÂ  s       rN   rØ  zDeltaSetIndexMap.preWrite4  so   € Ü˜$ 	¨4Ó0ˆØˆ?Ø%'Ð'ˆG�d”lÜ˜w›<¨&Ò0‘a°aˆŒØ—=‘=×%Ñ%Ó'ˆÜ#& w£<ˆ�Ñ Ø"&×"5Ñ"5°gÓ">ˆ�ÑØˆrM   c                 ó  — |j                  d«       |j                  «        t        t        | dg «      «      D ]R  \  }}d|fg}|t        k7  r|j                  d|dz	  fd|dz  fg«       |j                  d|«       |j                  «        ŒT y )	Nz7Omitted values default to 0xFFFF/0xFFFF (no variations)r×   rù   Úouterr/   rë  r¼   ÚMap)r6  rÌ   rú   rÆ   r’   rÁ  rË   )rŠ   rû   r¯   r~   r·   rÎ   s         rN   rÛ  zDeltaSetIndexMap.toXML2>  s›   € ð 	×ÑÐSÔTØ×ÑÔÜ!¤'¨$°	¸2Ó">Ó?ò 
	 ‰HˆAˆuØ˜q�\�NˆEØÔ*Ò*Ø—‘à  %¨2¡+Ð.Ø  %¨&¡.Ð1ðôð ×Ñ  uÔ-Ø×ÑÕñ
	 rM   c                 óú   — t        | dd «      }|€	g x| _        }t        |d   «      }t        |j                  dd«      «      }t        |j                  dd«      «      }|dk  sJ ‚|j	                  ||dz  |z  «       y )Nr×   rù   ró  Ú0xFFFFrë  r¼   r/   )rÆ   r×   r   rÞ   Úinsert)	rŠ   rÍ   rÎ   rß   r¯   r×   rù   ró  rë  s	            rN   rá   zDeltaSetIndexMap.fromXMLO  s|   € Ü˜$ 	¨4Ó0ˆØˆ?Ø%'Ð'ˆDŒL˜7Ü˜˜w™Ó(ˆÜ˜Ÿ™ 7¨HÓ5Ó6ˆÜ˜Ÿ™ 7¨HÓ5Ó6ˆØ˜ŠÐˆØ�‰�u˜u¨™{¨eÑ3Õ4rM   c                 ó\   — |t        | j                  «      k  r| j                  |   S t        S r‡   )r©   r×   r’   )rŠ   r~   s     rN   Ú__getitem__zDeltaSetIndexMap.__getitem__Y  s&   € Ø"#¤c¨$¯,©,Ó&7Ò"7ˆt�|‰|˜A‰ÐOÔ=OÐOrM   r‡   )r9   r:   r;   rˆ   rÉ  r  rî  rØ  rÛ  rá   rù  rL   rM   rN   rß  rß    s5   „ óò+ð ñ8ó ð8ò2ò ò"5óPrM   rß  Úuint8c                   ó6   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)
Ú	VarIdxMapzæGlyph-id-indexed delta-set index map (HVAR/VVAR).

    Shares DeltaSetIndexMap's format-switching wire format (Format 0 / Format 1)
    but exposes a name-keyed ``.mapping`` dict, since here the map index is the
    glyph id.
    Nc                 ó,   — t        | d«      si | _        y y rá  râ  r–   s     rN   rˆ   zVarIdxMap.populateDefaultse  rã  rM   c                 óÚ   — |d   dz  dk(  sJ ‚|j                  «       }|d   }|j                  |d   gt        |«      t        |«      z
  z  «       t        t	        ||«      «      | _        | `y )Nrå  ræ  r   r×   rË  )ÚgetGlyphOrderrÁ  r©   ÚdictÚzipr×   r¼  )rŠ   rÂ  r¯   r§   ÚmapLists        rN   rÉ  zVarIdxMap.postReadi  sp   € Ø˜Ñ'¨&Ñ0°QÒ6Ð6Ð6Ø×'Ñ'Ó)ˆ
Ø˜9Ñ%ˆØ�‰˜ ™�}¬¨J«¼#¸g»,Ñ(FÑGÔHÜœC 
¨GÓ4Ó5ˆŒð ‰KrM   c                 ór  — t        | dd «      }|€	i x}| _        |j                  «       }|D �cg c]  }||   ‘Œ	 }}t        |«      dkD  r(|d   |d   k(  r|d= t        |«      dkD  r|d   |d   k(  rŒt        |«      dkD  rdnd| _        d|i}t        |«      |d<   t
        j                  |«      |d<   |S c c}w )	Nr×   r   éþÿÿÿrË  r¼   r   rð  rå  )rÆ   r×   rÿ  r©   r¼  rß  rî  )rŠ   r¯   r×   r§   r—  rÂ  s         rN   rØ  zVarIdxMap.preWritet  sÒ   € Ü˜$ 	¨4Ó0ˆØˆ?Ø%'Ð'ˆG�d”là×'Ñ'Ó)ˆ
Ø'1Ö2 !�7˜1“:Ð2ˆÐ2Ü�'‹l˜QÒ 7¨2¡;°'¸"±+Ò#=Ø˜�ô �'‹l˜QÒ 7¨2¡;°'¸"±+Ó#=ô ˜w›<¨&Ò0‘a°aˆŒØ˜wÐ'ˆÜ#& w£<ˆ�Ñ Ü"2×"AÑ"AÀ'Ó"Jˆ�ÑØˆùò 3s   ­B4c                 óÂ   — t        t        | di «      j                  «       «      D ]8  \  }}d|fd|dz	  fd|dz  ff}|j                  d|«       |j	                  «        Œ: y )Nr×   r–  ró  r/   rë  r¼   rô  )rh  rÆ   r­   rË   rÌ   )rŠ   rû   r¯   r–  r·   rÎ   s         rN   rÛ  zVarIdxMap.toXML2„  sq   € Ü"¤7¨4°¸BÓ#?×#EÑ#EÓ#GÓHò 	 ‰LˆE�5à˜%Ð Ø˜% 2™+Ð&Ø˜% &™.Ð)ðˆEð
 ×Ñ  uÔ-Ø×ÑÕñ	 rM   c                 óÖ   — t        | dd «      }|€	i }|| _        	 |d   }t        |d   «      }t        |d   «      }|dk  sJ ‚|dz  |z  ||<   y #  |j                  «       |d      }Y ŒIxY w)Nr×   r–  rù   ró  rë  r¼   r/   )rÆ   r×   rÿ  r   )	rŠ   rÍ   rÎ   rß   r¯   r×   r–  ró  rë  s	            rN   rá   zVarIdxMap.fromXMLŽ  s‰   € Ü˜$ 	¨4Ó0ˆØˆ?ØˆGØ"ˆDŒLð	9Ø˜'‘NˆEô ˜˜w™Ó(ˆÜ˜˜w™Ó(ˆØ˜ŠÐˆØ 2™+¨Ñ.ˆ�Šøð	9Ø×&Ñ&Ó(¨¨w©Ñ8ŠEús   šA ÁA(c                 óB   — | j                   j                  |t        «      S r‡   )r×   rÞ   r’   )rŠ   rŽ   s     rN   rù  zVarIdxMap.__getitem__œ  s   € Ø�|‰|×Ñ 	Ô+=Ó>Ð>rM   r‡   )
r9   r:   r;   Ú__doc__rˆ   rÉ  rØ  rÛ  rá   rù  rL   rM   rN   rü  rü  ]  s%   „ ñóò	òò  ò/ó?rM   rü  c                   ó   — e Zd Zd„ Zy)ÚVarRegionListc                 ó¨   — |j                  d«      }|rt        |j                  «      | _        i | j                  ¥dt        | j                  d«      i¥S )NÚfvarÚRegionAxisCount)rÞ   r©   Úaxesr  rê   r   )rŠ   r¯   Ú	fvarTables      rN   rØ  zVarRegionList.preWrite¡  sR   € ð —H‘H˜VÓ$ˆ	ÙÜ#& y§~¡~Ó#6ˆDÔ ð
Ø�m‰mð
àœ~¨d¯m©mÐ=NÓOñ
ð 	
rM   N©r9   r:   r;   rØ  rL   rM   rN   r
  r
     s   „ ó
rM   r
  c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚSingleSubstNc                 ó,   — t        | d«      si | _        y y rá  râ  r–   s     rN   rˆ   zSingleSubst.populateDefaults³  rã  rM   c                 óà  — i }t        |d   «      }| j                  dv ri|d   }|j                  |«      }| j                  dk(  rdnd}|D �cg c]
  }||z   |z  ‘Œ }	}|j                  |	«      }
t	        ||
«      D ]
  \  }}|||<   Œ nY| j                  dv r7t        |«      |d   k(  sJ d	«       ‚|d
   }t	        ||«      D ]
  \  }}|||<   Œ nJ d| j                  z  «       ‚|| _        | `y c c}w )Nr°  r´  ÚDeltaGlyphIDrn   é   é   r¶  Ú
GlyphCountzinvalid SingleSubst tableÚ
Substituteúunknown format: %s)Ú_getGlyphsFromCoverageTabler¼  rÎ  r’  r  r©   r×   )rŠ   rÂ  r¯   r×   Úinputr{  Ú	inputGIDSÚmodulusr²   ÚoutGIDSÚoutNamesÚinpÚoutÚsubstÚsubs                  rN   rÉ  zSingleSubst.postRead·  s  € ØˆÜ+¨H°ZÑ,@ÓAˆØ�;‰;˜&Ñ Ø˜^Ñ,ˆEØ×+Ñ+¨EÓ2ˆIØ#'§;¡;°!Ò#3‘i¸ˆGØBKÖL°w˜ %™¨7Ó2ÐLˆGÐLØ×,Ñ,¨WÓ5ˆHÜ  xÓ0ò #‘��SØ"�˜’ñ#à�[‰[˜FÑ"Ü�u“: ¨,Ñ!7Ò7ÐTÐ9TÓTÐ7Ø˜\Ñ*ˆEÜ  uÓ-ò #‘��SØ"�˜’ñ#ð 9Ð*¨T¯[©[Ñ8Ó8�1ØˆŒØ‰Kùò Ms   ÁC+c                 óÊ  — t        | dd «      }|€	i x}| _        t        |j                  «       «      }|j                  }|D ��cg c]  \  }} ||«       ||«      f‘Œ }}}t        t        ||«      «      }|j                  «       xr" t        |«      dkD  xs t        d„ |D «       «      }	|	rdnd}
|	rdnd}d }|D ]  \  }}|€||z
  |
z  }||z   |
z  |k7  sŒ n |€|	rdnd}n|	rdnd	}i }|| _
        t        «       }|D �cg c]
  }|d	   d
   ‘Œ }}|D �cg c]
  }|d	   d	   ‘Œ }}||_        ||d<   |dv r|€J ‚|dk(  r
|dk\  r|dz  }||d<   |S ||d<   |S c c}}w c c}w c c}w )Nr×   r¼   c              3   ó:   K  — | ]  \  }}|d kD  xs |d kD  –— Œ y­w©r¼   NrL   )rŸ   ÚinIDÚoutIDs      rN   r    z'SingleSubst.preWrite.<locals>.<genexpr>×  s$   è ø€ ÒO±{°t¸U�4˜&‘=Ò2 E¨F¡NÓ2ÑOùs   ‚r  r  r-   r,   rn   r   r   r°  r´  i  € r  r  )rÆ   r×   Úlistr­   rÂ   rh  r  rÏ  r©   Úanyr¼  r°  rž  )rŠ   r¯   r×   r­   rÂ   rn  ÚbÚgidItemsÚsortableItemsr×  r  rÔ  r{  r(  r)  rÂ  ÚcovÚitemr  r#  s                       rN   rØ  zSingleSubst.preWriteÌ  sÌ  € Ü˜$ 	¨4Ó0ˆØˆ?Ø%'Ð'ˆG�d”lÜ�W—]‘]“_Ó%ˆØ—_‘_ˆ
Ø?D×E±t°q¸!‘Z “]¡J¨q£MÒ2ÐEˆÑEÜœs 8¨UÓ3Ó4ˆà×+Ñ+Ó-ò 
Ü�‹J˜Ñò PÜÑOÀhÔOÓOð 	ñ  (‘)¨Wˆñ ‘ AˆØˆØ#ò 	.‰KˆD�%Øˆ}Ø ™¨Ñ0�à�u‘ Ñ'¨5Ó0Ùð	.ð ˆ}á&™¨A‘á&™¨A�àˆØˆŒÜ‹jˆØ(5Ö6 ��a‘˜“Ð6ˆÐ6Ø(5Ö6 ��a‘˜“Ð6ˆÐ6ØˆŒ
Ø"ˆ�ÑØ�VÑØÐ$Ð$Ð$ð ˜Š{˜u¨Ò0Ø˜Ñ"�Ø',ˆH�^Ñ$ð ˆð &+ˆH�\Ñ"ØˆùóS Fùò8 7ùÚ6s   ÁEÃ>EÄE c                 ó®   — t        | j                  j                  «       «      }|D ]-  \  }}|j                  dd|fd|fg«       |j	                  «        Œ/ y )NÚSubstitutionÚinr"  )rh  r×   r­   rË   rÌ   )rŠ   rû   r¯   r­   ÚinGlyphÚoutGlyphs         rN   rÛ  zSingleSubst.toXML2ý  sW   € Ü�t—|‘|×)Ñ)Ó+Ó,ˆØ!&ò 	 ÑˆG�XØ×Ñ °$¸°À5È(ÐBSÐ0TÔUØ×ÑÕñ	 rM   c                 óJ   — t        | dd «      }|€	i }|| _        |d   ||d   <   y )Nr×   r"  r3  )rÆ   r×   )rŠ   rÍ   rÎ   rß   r¯   r×   s         rN   rá   zSingleSubst.fromXML  s3   € Ü˜$ 	¨4Ó0ˆØˆ?ØˆGØ"ˆDŒLØ$ U™|ˆ��d‘ÒrM   r‡   rÝ  rL   rM   rN   r  r  ²  s   „ óòò*/òb ó,rM   r  c                   ó>   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zed	d„«       Z	y)
ÚMultipleSubstNc                 ó,   — t        | d«      si | _        y y rá  râ  r–   s     rN   rˆ   zMultipleSubst.populateDefaults  rã  rM   c                 óè   — i }| j                   dv r@t        |d   «      }|d   D �cg c]  }|j                  ‘Œ }}t        t	        ||«      «      }nJ d| j                   z  «       ‚|| _        | ` y c c}w )N©r   r,   r°  ÚSequencer  )r¼  r  r  r   r  r×   )rŠ   rÂ  r¯   r×   rž  Úsr#  s          rN   rÉ  zMultipleSubst.postRead  su   € ØˆØ�;‰;˜&Ñ Ü0°¸*Ñ1EÓFˆFØ+3°JÑ+?Ö@ a�Q—\“\Ð@ˆEÐ@Üœ3˜v uÓ-Ó.‰Gà8Ð*¨T¯[©[Ñ8Ó8�1ØˆŒØ‰Kùò As   ¦A/c                 óº  ‡— t        | dd «      }|€	i x}| _        t        «       }t        t	        |j                  «       «      ‰j                  ¬«      |_        ‰j                  «       xr2 t        |«      dkD  xs" t        ˆfd„|j                  «       D «       «      }|rdnd| _        ||j                  D �cg c]  }| j                  ||   |«      ‘Œ c}dœ}|S c c}w )Nr×   rd  r¼   c              3   ób   •K  — | ]&  \  }}|g|¢­D ]  }‰j                  |«      d kD  –— Œ Œ( y­wr'  ©rÂ   )rŸ   Ú
inputGlyphÚsubstitutesr–  r¯   s       €rN   r    z)MultipleSubst.preWrite.<locals>.<genexpr>#  sH   øè ø€ ò á+�J Ø(Ð7¨;Ñ7òð ð —‘ Ó&¨Õ/ðØ/ñùó   ƒ,/r,   r   )r°  r<  )rÆ   r×   r°  rh  r*  ÚkeysrÂ   rž  rÏ  r©   r+  r­   r¼  ÚmakeSequence_)rŠ   r¯   r×   r/  r×  r–  rÂ  s    `     rN   rØ  zMultipleSubst.preWrite  sÓ   ø€ Ü˜$ 	¨4Ó0ˆØˆ?Ø%'Ð'ˆG�d”lÜ‹jˆÜœD §¡£Ó0°d·o±oÔFˆŒ
Ø×+Ñ+Ó-ò 
Ü�‹L˜6Ñ!ò Üó à/6¯}©}«ôó ð 	ñ $‘a¨ˆŒààJMÏ*É*öØAF�×"Ñ" 7¨5¡>°8Õ<òñ
ˆð ˆùò	s   Â5Cc                 óÐ   — t        | j                  j                  «       «      }|D ]>  \  }}dj                  |«      }|j	                  dd|fd|fg«       |j                  «        Œ@ y )Nr  r2  r3  r"  )rh  r×   r­   r  rË   rÌ   )rŠ   rû   r¯   r­   r4  Ú	outGlyphsr"  s          rN   rÛ  zMultipleSubst.toXML22  sd   € Ü�t—|‘|×)Ñ)Ó+Ó,ˆØ"'ò 	 ÑˆG�YØ—(‘(˜9Ó%ˆCØ×Ñ °$¸°À5È#À,Ð0OÔPØ×ÑÕñ	 rM   c                 óJ  — t        | dd «      }|€	i }|| _        |dk(  rJg | _        |D ]=  }t        |t        «      sŒ|\  }}}	|dk(  sŒ | j                  j                  |d   «       Œ? y |dk(  rst        |j                  dt        |«      «      «      }
| j                  |
   }g x}||<   |D ]3  }t        |t        «      sŒ|\  }}}	|dk(  sŒ |j                  |d   «       Œ5 y |d   r|d   j                  d	«      ng }|D �cg c]  }|j                  «       ‘Œ c}||d
   <   y c c}w )Nr×   r°  rÚ  r·   r<  rù   r  r"  r  r3  )rÆ   r×   Úold_coverage_rÝ   r«   rÃ   ÚintrÞ   r©   r9  r:  )rŠ   rÍ   rÎ   rß   r¯   r×   ÚelementÚelement_nameÚelement_attrsr¹   rù   r–  Úglyph_mappingrG  r—  s                  rN   rá   zMultipleSubst.fromXML9  sL  € Ü˜$ 	¨4Ó0ˆØˆ?ØˆGØ"ˆDŒLð �:ÒØ!#ˆDÔØ"ò F�Ü! '¬5Ô1ØØ18Ñ.�˜m¨QØ 7Ó*Ø×&Ñ&×-Ñ-¨m¸GÑ.DÕEðFð Ø�:ÒÜ˜Ÿ	™	 '¬3¨w«<Ó8Ó9ˆEØ×&Ñ& uÑ-ˆEØ-/Ð/ˆM˜G E™NØ"ò A�Ü! '¬5Ô1ØØ18Ñ.�˜m¨QØ <Ó/Ø!×(Ñ(¨°wÑ)?Õ@ðAð ð 05°Uª|�E˜%‘L×&Ñ& sÔ+Àˆ	Ø3<Ö=¨a §¡¥	Ò=ˆ��d‘ÒùÒ=s   Ã?D c                 ó@   — |r
t        «       n	t        «       }| |_        |S r‡   )Ú	Sequence2r<  r  )r—  r×  Úseqs      rN   rE  zMultipleSubst.makeSequence_Y  s   € á%ŒiŒk¬8«:ˆØˆŒØˆ
rM   r‡   ©F)
r9   r:   r;   rˆ   rÉ  rØ  rÛ  rá   r  rE  rL   rM   rN   r8  r8    s0   „ óò	òò. ò>ð@ òó ñrM   r8  c                   ó2   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)	ÚClassDefNc                 ó,   — t        | d«      si | _        y y )NÚ	classDefs)r²  rV  r–   s     rN   rˆ   zClassDef.populateDefaultsa  ó   € Ü�t˜[Ô)ØˆD�Nð *rM   c                 óT  — i }| j                   dv ra|d   }|d   }|j                  |«      }|t        |«      z   }|j                  t	        ||«      «      }t        ||«      D ]  \  }	}
|
sŒ	|
||	<   Œ n®| j                   dv r€|d   }|D ]u  }|j                  }
|
sŒ|j                  }|j                  }|j                  |«      }|j                  |«      dz   }|j                  t	        ||«      «      }|D ]  }	|
||	<   Œ	 Œw n t        j                  d| j                   «       || _        | ` y )Nr´  Ú
StartGlyphÚClassValueArrayr¶  ÚClassRangeRecordr   zUnknown ClassDef format: %s)r¼  rÂ   r©   r’  ri  r  ÚClassr¿  rÀ  r½  r¾  rV  )rŠ   rÂ  r¯   rV  r›  Ú	classListrÇ  rÈ  Ú
glyphNamesrŽ   ÚclsÚrecordsÚrecrÆ  s                 rN   rÉ  zClassDef.postReade  s=  € Øˆ	à�;‰;˜&Ñ Ø˜\Ñ*ˆEØ Ð!2Ñ3ˆIØ—o‘o eÓ,ˆGØœc )›nÑ,ˆEØ×.Ñ.¬u°W¸eÓ/DÓEˆJÜ"% j°)Ó"<ò /‘�	˜3ÚØ+.�I˜iÒ(ñ/ð �[‰[˜FÑ"ØÐ1Ñ2ˆGØò 
/�Ø—i‘i�ÙØØŸ	™	�Ø—g‘g�ØŸ/™/¨%Ó0�ØŸ™¨Ó,¨qÑ0�Ø!×2Ñ2´5¸À%Ó3HÓI�
Ø!+ò /�IØ+.�I˜iÒ(ñ/ñ
/ô �K‰KÐ5°t·{±{ÔCØ"ˆŒØ‰KrM   c                 óÀ  — t        | dd «      }|€i | _        y |j                  }g }|j                  «       D ]"  \  }}|sŒ	|j	                   ||«      ||f«       Œ$ |r‚|j                  «        |d   \  }}}	|	||gg}
|dd  D ]C  \  }}}||dz   k7  s||	k7  r*|
d   j                  ||g«       |
j	                  |||g«       |}|}|}	ŒE |
d   j                  ||g«       |
S y )NrV  r   r   rË  )rÆ   rV  rÂ   r­   rÃ   rÓ  rÁ  )rŠ   r¯   rV  rÂ   r­   rŽ   r_  rv  ÚlastNameÚlastClsrÃ  r²   s               rN   Ú_getClassRangeszClassDef._getClassRanges„  s  € Ü˜D +¨tÓ4ˆ	ØÐØˆDŒNØØ—_‘_ˆ
ØˆØ'Ÿo™oÓ/ò 	B‰NˆI�sÙØØ�L‰L™* YÓ/°¸CÐ@ÕAð	Bñ Ø�J‰JŒLØ&+¨A¡hÑ#ˆD�(˜GØ  hÐ/Ð0ˆFØ+0°°¨9ò Ñ'�˜ CØ˜d Q™hÒ&¨#°ª.Ø˜2‘J×%Ñ% t¨XÐ&6Ô7Ø—M‘M 3¨°Ð";Ô<Ø�Ø$�Ø‘ðð �2‰J×Ñ˜t XÐ.Ô/ØˆMð rM   c                 ó¸  — d}dg i}| j                  |«      }|�r8|d   d   }|d   d   }||z
  dz   }t        d„ |D «       «      }|dkD  xs# |dkD  xs |dkD  xs t        |«      dkD  xs |dkD  }	d	t        |«      d
z  z   }
|	r!|dk  rdt        |«      dz  z   n
t        d«      }
|	rd|dz  z   nd
|dz  z   }|
|k  rTt	        |«      D ];  \  }\  }}}}}|	r
t        «       n	t        «       }||_        ||_        ||_	        |||<   Œ= |	rd	nd}d|i}nE|d   d   }dg|z  }|D ]'  \  }}}}}t        ||z
  ||z
  dz   «      D ]  }|||<   Œ	 Œ) |	rdnd}||dœ}|| _        |S )Nr,   r[  r   r   rË  rn   c              3   ó$   K  — | ]  ^}}|–— Œ
 y ­wr‡   rL   )rŸ   r_  r¹   s      rN   r    z$ClassDef.preWrite.<locals>.<genexpr>¥  s   è ø€ Ò5 7 3¨œ3Ñ5ùs   ‚r¼   r-   r   r|   r.   Úinf)rY  rZ  )re  rÐ  r©   rÓ   rú   ÚClassRangeRecord2r[  r¿  rÀ  r\  ri  r¼  )rŠ   r¯   rÔ  rÂ  rÃ  Ú
startGlyphÚendGlyphÚ
glyphCountÚmaxClassr×  Ú	rangeSizeÚ	arraySizer~   r_  r›  Ú	startNamerÆ  ÚendNamera  ÚstartGlyphNameÚclassesr—  s                         rN   rØ  zClassDef.preWrite�  sí  € ØˆØ&¨Ð+ˆØ×%Ñ% dÓ+ˆÚØ ™ 1™ˆJØ˜b‘z !‘}ˆHØ! JÑ.°Ñ2ˆJÜÑ5¨fÔ5Ó5ˆHà˜VÑ#ò %Ø˜fÑ$ò%à Ñ&ò%ô �v“; Ñ'ò%ð ˜fÑ$ð ð œC ›K¨!™OÑ+ˆIÙØ3;¸vÒ3E˜A¤ F£¨a¡Ò/Ì5ÐQVË<�	Ù08˜˜Z¨!™^Ò+¸qÀ:ÐPQÁ>Ñ?QˆIØ˜9Ò$ä@IÈ&Ó@Qò $Ñ<�AÑ<˜˜U I¨s°GÙ19Ô+Ô-Ô?OÓ?Q�CØ )�C”IØ%�C”GØ #�C”IØ #�F˜1’Ið$ñ '™¨A�Ø.°Ð7‘ð "(¨¡¨1¡�Ø˜# 
Ñ*�Ø;Aò )Ñ7�C˜ 	¨3°Ü" 5¨:Ñ#5°s¸ZÑ7GÈ!Ñ7KÓLò )˜Ø%(˜ š
ñ)ð)ñ '™¨A�Ø*8ÈWÑU�ØˆŒØˆrM   c                 ó®   — t        | j                  j                  «       «      }|D ]-  \  }}|j                  dd|fd|fg«       |j	                  «        Œ/ y )NrT  r–  Úclass)rh  rV  r­   rË   rÌ   )rŠ   rû   r¯   r­   rŽ   r_  s         rN   rÛ  zClassDef.toXML2Ç  sV   € Ü�t—~‘~×+Ñ+Ó-Ó.ˆØ#ò 	 ‰NˆI�sØ×Ñ 
¨g°yÐ-AÀGÈSÀ>Ð,RÔSØ×ÑÕñ	 rM   c                 ó\   — t        | dd «      }|€	i }|| _        t        |d   «      ||d   <   y )NrV  ru  r–  )rÆ   rV  rJ  )rŠ   rÍ   rÎ   rß   r¯   rV  s         rN   rá   zClassDef.fromXMLÍ  s9   € Ü˜D +¨tÓ4ˆ	ØÐØˆIØ&ˆDŒNÜ$'¨¨g©Ó$7ˆ	�%˜‘.Ò!rM   r‡   )	r9   r:   r;   rˆ   rÉ  re  rØ  rÛ  rá   rL   rM   rN   rT  rT  `  s!   „ ó òò>ò2(òT ó8rM   rT  c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚAlternateSubstNc                 ó,   — t        | d«      si | _        y y )NÚ
alternates)r²  rz  r–   s     rN   rˆ   zAlternateSubst.populateDefaultsÖ  s   € Ü�t˜\Ô*Ø ˆD�Oð +rM   c                 óþ   — i }| j                   dv rPt        |d   «      }|d   }t        |«      t        |«      k(  sJ ‚t        ||«      D ]  \  }}|j                  ||<   Œ nJ d| j                   z  «       ‚|| _        | ` y )Nr;  r°  ÚAlternateSetr  )r¼  r  r©   r  Ú	Alternaterz  )rŠ   rÂ  r¯   rz  r  Úaltsr!  Úalts           rN   rÉ  zAlternateSubst.postReadÚ  s‹   € Øˆ
Ø�;‰;˜&Ñ Ü/°¸Ñ0DÓEˆEØ˜NÑ+ˆDÜ�u“:¤ T£Ò*Ð*Ð*Ü  tÓ,ò 0‘��SØ"%§-¡-�
˜3’ñ0ð 9Ð*¨T¯[©[Ñ8Ó8�1Ø$ˆŒØ‰KrM   c                 ó€  ‡— t        | dd «      }|€	i x}| _        ‰j                  «       xr2 t        |«      dkD  xs" t	        ˆfd„|j                  «       D «       «      }|rdnd| _        t        |j                  «       «      }t        |«      D ]  \  }\  }}‰j                  |«      ||f||<   Œ! |j                  «        t        «       }|D �	cg c]  }	|	d   ‘Œ	 c}	|_        g }|D �	cg c]  }	|	d   ‘Œ	 }
}	|
D ]0  }|r
t        «       n	t        «       }||_        |j!                  |«       Œ2 d| _        ||dœS c c}	w c c}	w )Nrz  r¼   c              3   ób   •K  — | ]&  \  }}|g|¢­D ]  }‰j                  |«      d kD  –— Œ Œ( y­wr'  r@  )rŸ   rA  ÚalternateSetr–  r¯   s       €rN   r    z*AlternateSubst.preWrite.<locals>.<genexpr>í  sH   øè ø€ ò á,�J Ø(Ð8¨<Ñ8òð ð —‘ Ó&¨Õ/ðØ/ñùrC  r,   r   rË  )r°  r|  )rÆ   rz  rÏ  r©   r+  r­   r¼  r*  rú   rÂ   rÓ  r°  rž  ÚAlternateSet2r|  r}  rÃ   ÚsortCoverageLast)rŠ   r¯   rz  r×  r­   r~   rŽ   rf  r/  r0  ÚsetListr~  s    `          rN   rØ  zAlternateSubst.preWriteç  sQ  ø€ Ü˜T <°Ó6ˆ
ØÐØ+-Ð-ˆJ˜œØ×+Ñ+Ó-ò 
Ü�
‹O˜fÑ$ò Üó à0:×0@Ñ0@Ó0Bôó ð 	ñ $‘a¨ˆŒÜ�Z×%Ñ%Ó'Ó(ˆÜ#,¨UÓ#3ò 	BÑˆAÑ�	˜3Ø—‘ yÓ1°9¸cÐAˆE�!ŠHð	Bà�
‰
ŒÜ‹jˆØ*/Ö0 $�d˜1“gÒ0ˆŒ
Øˆ
Ø(-Ö. �4˜“8Ð.ˆÐ.Øò 	$ˆCÙ&.”=”?´L³NˆDØ ˆDŒNØ×Ñ˜dÕ#ð	$ð !"ˆÔØ°Ñ<Ð<ùò 1ùâ.s   ÃD6Ã'D;c                 ó:  — t        | j                  j                  «       «      }|D ]s  \  }}|j                  d|¬«       |j	                  «        |D ]%  }|j                  d|¬«       |j	                  «        Œ' |j                  d«       |j	                  «        Œu y )Nr|  r•  r}  )rh  rz  r­   rÒ   rÌ   rË   rÕ   )rŠ   rû   r¯   r­   rŽ   rz  r  s          rN   rÛ  zAlternateSubst.toXML2  s–   € Ü�t—‘×,Ñ,Ó.Ó/ˆØ%*ò 	 Ñ!ˆI�zØ×Ñ˜~°YÐÔ?Ø×ÑÔØ!ò $�Ø×#Ñ# K°sÐ#Ô;Ø×!Ñ!Õ#ð$ð ×Ñ˜^Ô,Ø×ÑÕñ	 rM   c                 ó°   — t        | dd «      }|€	i }|| _        |d   }g }|||<   |D ]-  }t        |t        «      sŒ|\  }}}|j	                  |d   «       Œ/ y )Nrz  r–  )rÆ   rz  rÝ   r«   rÃ   )	rŠ   rÍ   rÎ   rß   r¯   rz  rŽ   rf  rK  s	            rN   rá   zAlternateSubst.fromXML  sr   € Ü˜T <°Ó6ˆ
ØÐØˆJØ(ˆDŒOØ˜'‘Nˆ	ØˆØ #ˆ
�9ÑØò 	'ˆGÜ˜g¤uÔ-ØØ#*Ñ ˆD�%˜Ø�J‰J�u˜W‘~Õ&ñ		'rM   r‡   rÝ  rL   rM   rN   rx  rx  Õ  s   „ ó!òò=òB	 ó'rM   rx  c                   óP   ‡ — e Zd Zdˆ fd„	Zd	d„Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
ˆ xZS )
ÚLigatureSubstc                 ó¼   •— t         ‰| �  |«       |rJt        | di «      j                  «       D ]+  }t	        |t
        «      sŒ|D ]  }|j                  |«       Œ Œ- y y ©NÚ	ligatures)ÚsuperÚensureDecompiledrÆ   r¤   rÝ   r*  )rŠ   ÚrecurserŒ  Úligaturer¤  s       €rN   rŽ  zLigatureSubst.ensureDecompiled#  s`   ø€ Ü‰Ñ  Ô)Ùä$ T¨;¸Ó;×BÑBÓDò ;�	Ü˜i¬Õ.Ø$-ò ;˜Ø ×1Ñ1°'Õ:ñ;ñ;ð rM   c                 ó,   — t        | d«      si | _        y y r‹  )r²  rŒ  r–   s     rN   rˆ   zLigatureSubst.populateDefaults,  rW  rM   c                 ó  — i }| j                   dv rRt        |d   «      }|d   }t        |«      t        |«      k(  sJ ‚t        |«      D ]  \  }}||   j                  ||<   Œ nJ d| j                   z  «       ‚|| _        | ` y )Nr;  r°  ÚLigatureSetr  )r¼  r  r©   rú   ÚLigaturerŒ  )rŠ   rÂ  r¯   rŒ  r  ÚligSetsr~   r!  s           rN   rÉ  zLigatureSubst.postRead0  s�   € Øˆ	Ø�;‰;˜&Ñ Ü/°¸Ñ0DÓEˆEØ˜}Ñ-ˆGÜ�u“:¤ W£Ò-Ð-Ð-Ü# EÓ*ò 5‘��3Ø!(¨¡×!4Ñ!4�	˜#’ñ5ð 9Ð*¨T¯[©[Ñ8Ó8�1Ø"ˆŒØ‰KrM   c                 ó   — t        | «       S r‡   ra  ró   s    rN   Ú_getLigatureSortKeyz!LigatureSubst._getLigatureSortKey=  s   € ô6 �J“ÐÐrM   c                 ó˜  ‡— t        | dd «      }|€	i x}| _        |rªt        t        t	        |«      «      t
        «      rˆt        «       }t        |j                  «       | j                  ¬«      D ]T  }t        «       }|dd  |_        t        |«      |_        ||   |_        |j                  |d   g «      j!                  |«       ŒV |}‰j#                  «       xr2 t        |«      dkD  xs" t%        ˆfd„|j'                  «       D «       «      }|rdnd| _        t+        |j'                  «       «      }t-        |«      D ]  \  }\  }	}
‰j/                  |	«      |	|
f||<   Œ! |j1                  «        t3        «       }|D �cg c]  }|d   ‘Œ	 c}|_        g }|D �cg c]  }|d   ‘Œ	 }}|D ]�  }
|r
t7        «       n	t9        «       }g x}|_
        |
D ]Y  }|rt:        nt        }t        ||«      r|}n) |«       }|j                  |_        |j                  |_        |j!                  |«       Œ[ |j!                  |«       Œ’ d| _        ||d	œS c c}w c c}w )
NrŒ  rd  r   r   r¼   c              3   óš   •K  — | ]B  \  }}|D ]8  }||j                   g|j                  ¢­D ]  }‰j                  |«      d kD  –— Œ Œ: ŒD y­wr'  )ÚLigGlyphÚ	ComponentrÂ   )rŸ   ÚfirstComponentÚligatureSetr�  r–  r¯   s        €rN   r    z)LigatureSubst.preWrite.<locals>.<genexpr>o  ss   øè ø€ ò 	á/�N KØ +ò	ð à"Ø×%Ñ%ðð ×'Ñ'ñò		ð ð —‘ Ó&¨Õ/ð	Ø/ð	Ø/ñ	ùs   ƒAAr,   rË  )r°  r“  )rÆ   rŒ  rÝ   ÚnextÚiterr«   r   rh  rD  r—  r”  r›  r©   Ú	CompCountrš  rj  rÃ   rÏ  r+  r­   r¼  r*  rú   rÂ   rÓ  r°  rž  ÚLigatureSet2r“  Ú	Ligature2r„  )rŠ   r¯   rŒ  ÚnewLigaturesÚcompsr�  r×  r­   r~   rŽ   rf  r/  r0  r•  r…  ÚligSetÚligsÚligÚligatureClassr"  s    `                  rN   rØ  zLigatureSubst.preWriteZ  s;  ø€ Ü˜D +¨tÓ4ˆ	ØÐØ)+Ð+ˆI˜œáœ¤D¬¨i«Ó$9¼5ÔAô
  ›6ˆLÜ 	§¡Ó 0°d×6NÑ6NÔOò G�Ü#›:�Ø%*¨1¨2 Y�Ô"Ü%(¨£Z�Ô"Ø$-¨eÑ$4�Ô!Ø×'Ñ'¨¨a©°"Ó5×<Ñ<¸XÕFðGð %ˆIà×+Ñ+Ó-ò 
Ü�	‹N˜VÑ#ò 
Üó 	à3<·?±?Ó3Dô	ó 	ð 	ñ $‘a¨ˆŒä�Y—_‘_Ó&Ó'ˆÜ#,¨UÓ#3ò 	BÑˆAÑ�	˜3Ø—‘ yÓ1°9¸cÐAˆE�!ŠHð	Bà�
‰
ŒÜ‹jˆØ*/Ö0 $�d˜1“gÒ0ˆŒ
àˆØ(-Ö. �4˜“8Ð.ˆÐ.Øò 	#ˆCÙ'/”\”^´[³]ˆFØ%'Ð'ˆD�6”?Øò 	!�á-5¥	¼8�Ü˜c =Ô1Ø‘Cá'›/�CØ#&§<¡<�C”LØ$'§M¡M�C”MØ—‘˜CÕ ð	!ð �N‰N˜6Õ"ð	#ð" !"ˆÔØ°Ñ8Ð8ùò- 1ùò /s   Å9IÆIc           	      ó‚  — t        | j                  j                  «       «      }|D ]—  \  }}|j                  d|¬«       |j	                  «        |D ]I  }|j                  d|j                  dj                  |j                  «      ¬«       |j	                  «        ŒK |j                  d«       |j	                  «        Œ™ y )Nr“  r•  r”  r  )r–  rô   )
rh  rŒ  r­   rÒ   rÌ   rË   rš  r  r›  rÕ   )rŠ   rû   r¯   r­   rŽ   r•  r§  s          rN   rÛ  zLigatureSubst.toXML2™  s°   € Ü�t—~‘~×+Ñ+Ó-Ó.ˆØ"'ò 		 ÑˆI�wØ×Ñ˜}°IÐÔ>Ø×ÑÔØò $�Ø×#Ñ#Ø c§l¡l¸s¿x¹xÈÏÉÓ?Vð $ô ð ×!Ñ!Õ#ð	$ð
 ×Ñ˜]Ô+Ø×ÑÕñ		 rM   c                 óD  — t        | dd «      }|€	i }|| _        |d   }g }|||<   |D ]w  }t        |t        «      sŒ|\  }}}t	        «       }	|d   |	_        |d   }
|
r|
j                  d«      ng |	_        t        |	j                  «      |	_	        |j                  |	«       Œy y )NrŒ  r–  rô   r  )rÆ   rŒ  rÝ   r«   r”  rš  r9  r›  r©   r   rÃ   )rŠ   rÍ   rÎ   rß   r¯   rŒ  rŽ   r¦  rK  r§  rô   s              rN   rá   zLigatureSubst.fromXML¦  s°   € Ü˜D +¨tÓ4ˆ	ØÐØˆIØ&ˆDŒNØ˜'‘Nˆ	ØˆØ#ˆ	�)ÑØò 		ˆGÜ˜g¤uÔ-ØØ#*Ñ ˆD�%˜Ü“*ˆCØ  ™>ˆCŒLØ˜|Ñ,ˆJÙ5?˜J×,Ñ,¨SÔ1ÀRˆCŒMÜ §¡Ó.ˆCŒMØ�K‰K˜Õñ		rM   rR  r‡   )r9   r:   r;   rŽ  rˆ   rÉ  r  r—  rØ  rÛ  rá   Ú__classcell__©r¤  s   @rN   r‰  r‰  "  s6   ø„ õ;ó òð ñ ó ð ò8=9ò~ örM   r‰  c                   ó*   — e Zd Zd„ Zd„ Zddddefd„Zy)	ÚCOLRc                 ó.  — |j                  d¬«      }| j                  «       D ]O  }|j                  dk7  r|j                  |j                  «       Œ.|j                  ||i ¬«      ||j                  <    n t        d«      ‚t        j                  | ||«      S )Nr   )ÚoffsetÚLayerRecordCount)Ú	tableDictz$LayerRecordCount converter not found)	rx  ÚgetConvertersrÍ   Úadvancer@  ÚreadÚAssertionErrorr   rº   )rŠ   r2  r¯   Ú	subReaderÚconvs        rN   rº   zCOLR.decompile»  s–   € ð ×'Ñ'¨qÐ'Ó1ˆ	Ø×&Ñ&Ó(ò 	IˆDØ�y‰yÐ.Ò.Ø×!Ñ! $§/¡/Ô2ØØ $§	¡	¨)°TÀR 	Ó HˆF�4—9‘9ÑÙð	Iô !Ð!GÓHÐHÜ×"Ñ" 4¨°Ó6Ð6rM   c                 ó\   — d | _         i | j                  ¥dt        | j                  d«      i¥S )Nr±  )r±  rê   r   ©rŠ   r¯   s     rN   rØ  zCOLR.preWriteÌ  s8   € ð !%ˆÔð
Ø�m‰mð
à¤¨t¯}©}Ð>PÓ Qñ
ð 	
rM   ÚglyphSetr)   Úquantizationc                 óÐ  — | j                   dk(  ry i }| j                  j                  D ]2  }	 |j                  j	                  | ||«      }|€Œ$|||j                  <   Œ4 t        | d«      xr | j                  d u}|s|rd | _
        y y |s t        «       | _
        d| j                  _        || j                  _        y # t
        $ r!}ddlm}  |d|j                  ›�«      |‚d }~ww xY w)Nr   )Ú
TTLibErrorz#Failed to compute COLR ClipBox for ÚClipListr   )ÚVersionÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintÚcomputeClipBoxÚ	ExceptionÚfontTools.ttLibr¾  Ú	BaseGlyphr²  r¿  r¼  Úclips)	rŠ   r»  r¼  rÈ  ra  ÚclipBoxÚer¾  ÚhasClipLists	            rN   ÚcomputeClipBoxeszCOLR.computeClipBoxesÖ  sì   € Ø�<‰<˜1ÒØàˆØ×%Ñ%×:Ñ:ò 	/ˆCðØŸ)™)×2Ñ2°4¸À<ÓP�ð Ñ"Ø'.��c—m‘mÒ$ð	/ô ˜d JÓ/ÒM°D·M±MÈÐ4MˆÙÙØ $�•ð ñ Ü (£
�”Ø'(�—‘Ô$Ø"'ˆD�M‰MÕøô% ò Ý6á Ø9¸#¿-¹-Ð9JÐKóàðûðús   ­B;Â;	C%ÃC Ã C%N©r   )r9   r:   r;   rº   rØ  rJ  rÌ  rL   rM   rN   r®  r®  º  s   „ ò7ò"
ñ(¨ð (Àcô (rM   r®  c                   ó.   ‡ — e Zd Zed„ «       Zˆ fd„Zˆ xZS )Ú
LookupListc                 óî   — | j                   D ]a  }|j                  D ]P  }t        |«      j                  j	                  d«      r  yt        |«      j                  j	                  d«      sŒO  y Œc t
        ‚)NÚSubstÚGSUBÚPosÚGPOS)ÚLookupÚSubTablerè   r9   ÚendswithÚ
ValueError)rŠ   ÚlÚsts      rN   ÚtablezLookupList.tableô  sf   € à—‘ò 	"ˆAØ—j‘jò "�Ü˜“8×$Ñ$×-Ñ-¨gÔ6Ú!Ü˜“8×$Ñ$×-Ñ-¨eÕ4Ú!ñ	"ð	"ô ÐrM   c           
      ót  •— |rd|vst         |d   j                  vrt        ‰| �  ||«      S |d   j                  t            | j                     }| j                  «       D �]U  }|j                  rât        | |j                  g «      }t        |«      D ]¼  \  }}t        |«      |v rˆt        |t        |«         Ž }|j                  }	|j                  r|j                  › d|	› �}	|j                  r|j                  \  }
}}|	› d|› d|
› d|› d�}	|j                  |	«       |j                  «        |j!                  ||||j                  d|fg«       Œ¾ Œò|j"                  r"t%        |j"                  d t'        | «      «      s�Œ t        | |j                  d «      }|j!                  ||||j                  g «       �ŒX y )NÚDebgz: z in z (ú/ú)rù   )r"   r}   r�  rÛ  rÛ  r³  ÚrepeatrÆ   rÍ   rú   Ústrr!   ÚlocationÚfeaturer6  rÌ   ÚxmlWriteÚauxÚevalÚvars)rŠ   rû   r¯   Ú	debugDatar¸  r·   ÚlookupIndexr0  ÚinfoÚtagÚscriptÚlanguagerã  r¤  s                €rN   rÛ  zLookupList.toXML2þ  s   ø€ áØ˜TÑ!Ü$¨D°©L×,=Ñ,=Ñ=ä‘7‘> )¨TÓ2Ð2Ø˜‘L×%Ñ%Ô&;Ñ<¸T¿Z¹ZÑHˆ	Ø×&Ñ&Ó(ó 	EˆDØ�{Š{Ü  d§i¡i°Ó4�Ü)2°5Ó)9ò Ñ%�K Ü˜;Ó'¨9Ñ4Ü.°	¼#¸kÓ:JÑ0KÐL˜Ø"Ÿm™m˜ØŸ9š9Ø%)§Y¡Y K¨r°#°Ð"7˜CØŸ<š<Ø8<¿¹Ñ5˜F H¨gØ%( E¨¨g¨Y°b¸¸ÀÀ(ÀÈ1Ð"M˜CØ!×)Ñ)¨#Ô.Ø!×)Ñ)Ô+à—M‘MØ! 4¨¨t¯y©y¸GÀ[Ð;QÐ:Rõñð  —8’8¤D¨¯©°4¼¸d»Ô$DÙÜØ˜$Ÿ)™) Tó�ð —‘˜i¨¨u°d·i±iÀÖDñ1	ErM   )r9   r:   r;   ÚpropertyrÛ  rÛ  r«  r¬  s   @rN   rÏ  rÏ  ó  s!   ø„ Øñó ð÷ Eð  ErM   rÏ  c                   ó   — e Zd Zd„ Zy)ÚBaseGlyphRecordArrayc                 óv   ‡— t        | j                  ˆfd„¬«      | _        | j                  j                  «       S )Nc                 ó:   •— ‰j                  | j                  «      S r‡   ©rÂ   rÇ  ©ra  r¯   s    €rN   rg   z/BaseGlyphRecordArray.preWrite.<locals>.<lambda>$  s   ø€ °$·/±/À#Ç-Á-Ó2P€ rM   rd  )rh  ÚBaseGlyphRecordrê   rñ  rº  s    `rN   rØ  zBaseGlyphRecordArray.preWrite"  s1   ø€ Ü%Ø× Ñ Ó&Pô 
ˆÔð �}‰}×!Ñ!Ó#Ð#rM   Nr  rL   rM   rN   rð  rð  !  ó   „ ó$rM   rð  c                   ó   — e Zd Zd„ Zy)rÁ  c                 óv   ‡— t        | j                  ˆfd„¬«      | _        | j                  j                  «       S )Nc                 ó:   •— ‰j                  | j                  «      S r‡   ró  rô  s    €rN   rg   z(BaseGlyphList.preWrite.<locals>.<lambda>,  s   ø€ °t·±ÀsÇ}Á}Ó7U€ rM   rd  )rh  rÂ  rê   rñ  rº  s    `rN   rØ  zBaseGlyphList.preWrite*  s1   ø€ Ü$*Ø×%Ñ%Ó+Uô%
ˆÔ!ð �}‰}×!Ñ!Ó#Ð#rM   Nr  rL   rM   rN   rÁ  rÁ  )  rö  rM   rÁ  c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚClipBoxFormatr   r,   c                 ó   — | | j                   u S r‡   ©ÚVariabler‰   s    rN   Úis_variablezClipBoxFormat.is_variable5  s   € Ø�t—}‘}Ð$Ð$rM   c                 ó   — | j                   S r‡   rý  r‰   s    rN   Úas_variablezClipBoxFormat.as_variable8  s   € Ø�}‰}ÐrM   N)r9   r:   r;   ÚStaticrþ  rÿ  r  rL   rM   rN   rû  rû  1  s   „ Ø€FØ€Hò%órM   rû  c                   ó   — e Zd ZeZd„ Zd„ Zy)ÚClipBoxc                 óH   ‡ — t        ˆ fd„‰ j                  «       D «       «      S )Nc              3   óJ   •K  — | ]  }t        ‰|j                  «      –— Œ y ­wr‡   )rÆ   rÍ   )rŸ   r¸  rŠ   s     €rN   r    z#ClipBox.as_tuple.<locals>.<genexpr>@  s   øè ø€ ÒO°$”W˜T 4§9¡9×-ÑOùs   ƒ #)r«   r³  r‰   s   `rN   Úas_tuplezClipBox.as_tuple?  s   ø€ ÜÓO¸$×:LÑ:LÓ:NÔOÓOÐOrM   c                 óR   — | j                   j                  › | j                  «       › �S r‡   )r¤  r9   r  r‰   s    rN   Ú__repr__zClipBox.__repr__B  s#   € Ø—.‘.×)Ñ)Ð*¨4¯=©=«?Ð*;Ð<Ð<rM   N)r9   r:   r;   rû  Ú
formatEnumr  r	  rL   rM   rN   r  r  <  s   „ Ø€JòPó=rM   r  c                   ó4   — e Zd Zdd„Zd„ Zd„ Zd„ Zd	d„Zd„ Zy)
r¿  Nc                 ó,   — t        | d«      si | _        y y )NrÈ  )r²  rÈ  r–   s     rN   rˆ   zClipList.populateDefaultsG  s   € Ü�t˜WÔ%ØˆD�Jð &rM   c           	      ó¸  — i }|j                  «       }t        |d   «      D �]  \  }}|j                  |j                  kD  r-t        j                  d||j                  |j                  «       ŒMg }g }t        |j                  |j                  dz   «      D ]@  }		 ||	   }
|
|vr#t        j                  |j                  «      ||
<   Œ0|j                  |	«       ŒB |r*t        j                  d|t        |«      t        |«      «       |sŒæt        j                  d|t        |«      t        |«      «       �Œ || _        y # t        $ r |j                  |	«       Y ŒÃw xY w)NÚ
ClipRecordzCinvalid ClipRecord[%i].StartGlyphID (%i) > EndGlyphID (%i); skippedr   zqClipRecord[%i] overlaps previous records; ignoring redefined clip boxes for the following glyph ID range: [%i-%i]z:ClipRecord[%i] range references missing glyph IDs: [%i-%i])rÿ  rú   ÚStartGlyphIDÚ
EndGlyphIDr½  r¾  ri  Ú
IndexErrorrÃ   rñ  r  ÚminrÐ  rÈ  )rŠ   rÂ  r¯   rÈ  r§   r~   ra  ÚredefinedGlyphsÚmissingGlyphsr²   r–  s              rN   rÉ  zClipList.postReadK  sX  € ØˆØ×'Ñ'Ó)ˆ
Ü ¨Ñ 6Ó7ó %	‰FˆAˆsØ×Ñ #§.¡.Ò0Ü—‘ð/àØ×$Ñ$Ø—N‘Nôð Ø ˆOØˆMÜ  ×!1Ñ!1°3·>±>ÀAÑ3EÓFò 	4�ðØ& wÑ/�Eð  Ñ%Ü#'§9¡9¨S¯[©[Ó#9�E˜%’Là#×*Ñ*¨7Õ3ð	4ñ Ü—‘ð8ð Ü˜Ó(Ü˜Ó(ôò Ü—‘ØSØÜ˜Ó&Ü˜Ó&ö	ðA%	ðL ˆ�
øô/ "ò Ø!×(Ñ(¨Ô1Ùðús   ÂD<Ä<EÅEc                 ó0  — t        t        «      }i }| j                  j                  «       D ]3  \  }}|j	                  «       }||   j                  |«       ||vsŒ/|||<   Œ5 |j                  «       D ��ci c]  \  }}t        |«      ||   “Œ c}}S c c}}w r‡   )r   r*  rÈ  r­   r  rÃ   Ú	frozenset)rŠ   ÚglyphsByClipÚuniqueClipsrŽ   rÉ  re  rž  s          rN   ÚgroupszClipList.groupsv  s¢   € Ü"¤4Ó(ˆØˆØ"&§*¡*×"2Ñ"2Ó"4ò 	+ÑˆI�wØ×"Ñ"Ó$ˆCØ˜Ñ×$Ñ$ YÔ/Ø˜+Ò%Ø#*�˜CÒ ð		+ð DP×CUÑCUÓCW÷
Ù4?°C¸ŒI�fÓ˜{¨3Ñ/Ñ/ó
ð 	
ùó 
s   Á5Bc                 ót  ‡— t        | d«      si | _        i }|j                  «       Š| j                  «       j	                  «       D ]Œ  \  }}t        ˆfd„|D «       «      }|sŒ|d   }|gg}|dd  D ]2  }||dz   k7  r&|d   j                  |«       |j                  |g«       |}Œ4 |d   j                  |«       |D ]  \  }	}
|	|
f|vsJ ‚|||	|
f<   Œ ŒŽ g }t        |j	                  «       «      D ]8  \  \  }	}
}t        «       }|	|_        |
|_	        ||_
        |j                  |«       Œ: t        |«      |dœ}|S )NrÈ  c              3   ó2   •K  — | ]  }|‰v sŒ‰|   –— Œ y ­wr‡   rL   )rŸ   rŽ   ÚglyphMaps     €rN   r    z$ClipList.preWrite.<locals>.<genexpr>ˆ  s"   øè ø€ ò Ø(1¸yÈHÒ?T�˜Õ#ñùs   ƒ	�
r   r   rË  )Ú	ClipCountr  )r²  rÈ  ÚgetReverseGlyphMapr  r­   rh  rÃ   r  r  r  r  r©   )rŠ   r¯   ÚclipBoxRangesrž  rÉ  rÕ  rv  rÃ  r²   r›  rÆ  ÚclipRecordsÚrecordrÂ  r  s                 @rN   rØ  zClipList.preWrite‚  s{  ø€ Ü�t˜WÔ%ØˆDŒJØˆØ×*Ñ*Ó,ˆØ#Ÿ{™{›}×2Ñ2Ó4ò 	6‰OˆF�GÜó Ø5;ôó ˆHñ ØØ˜A‘;ˆDØ�f�XˆFØ# A B˜<ò �Ø˜d Q™hÒ&Ø˜2‘J×%Ñ% dÔ+Ø—M‘M 7 )Ô,Ø‘ð	ð
 �2‰J×Ñ˜dÔ#Ø$ò 6‘
��sØ˜s�|¨=Ñ8Ð8Ð8Ø.5�˜u c˜lÒ+ñ6ð	6ð$ ˆÜ%+¨M×,?Ñ,?Ó,AÓ%Bò 	'Ñ!‰LˆU�C˜'Ü“\ˆFØ"'ˆFÔØ #ˆFÔØ$ˆFŒNØ×Ñ˜vÕ&ð	'ô ˜[Ó)Ø%ñ
ˆð ˆrM   c                 ó*  — |r|n| j                   j                  }|€g }t        | d«      r|j                  d| j                  f«       |j                  ||«       |j                  «        t        | j                  «       j                  «       d„ ¬«      D ]Ü  \  }}|j                  d«       |j                  «        t        |«      D ]%  }|j                  d|¬«       |j                  «        Œ' |j                  dd|j                  fg«       |j                  «        |j                  ||«       |j                  d«       |j                  «        |j                  d«       |j                  «        ŒÞ |j                  |«       |j                  «        y )Nr¼  c                 ó   — t        | d   «      S )Nr   )r  )r0  s    rN   rg   z ClipList.toXML.<locals>.<lambda>°  s   € ´C¸¸Q¹³L€ rM   rd  ÚCliprÚ  r  r  )r¤  r9   r²  rÃ   r¼  rÒ   rÌ   rh  r  r­   rË   rÛ  rÕ   )	rŠ   rû   r¯   rÎ   rÍ   Ú	tableNamerž  rÉ  rŽ   s	            rN   rØ   zClipList.toXML¦  s]  € Ù ‘D d§n¡n×&=Ñ&=ˆ	Øˆ=ØˆEÜ�4˜Ô"Ø�L‰L˜( D§K¡KÐ0Ô1Ø×Ñ˜9 eÔ,Ø×ÑÔä%Ø�K‰K‹M×ÑÓ!Ñ'@ô 
ò 	 ‰OˆF�Gð ×Ñ˜vÔ&Ø×ÑÔÜ# F›^ò $�	Ø×#Ñ# G°9Ð#Ô=Ø×!Ñ!Õ#ð$ð ×Ñ˜y¨H°g·n±nÐ+EÐ*FÔGØ×ÑÔØ�N‰N˜9 dÔ+Ø×Ñ˜YÔ'Ø×ÑÔØ×Ñ˜VÔ$Ø×ÑÕð	 ð 	×Ñ˜Ô#Ø×ÑÕrM   c                 ó‚  — t        | dd «      }|€	i x| _        }|dk(  sJ ‚g }d }|D ]ˆ  }t        |t        «      sŒ|\  }}}|dk(  r|j	                  |d   «       Œ4|dk(  sŒ:t        «       }t        |d   «      |_        |D ]-  }t        |t        «      sŒ|\  }}}|j                  ||||«       Œ/ ŒŠ |r|D ]  }	|||	<   Œ	 y y )NrÈ  r$  rÚ  r·   r  r¼  )	rÆ   rÈ  rÝ   r«   rÃ   r  r   r¼  rá   )
rŠ   rÍ   rÎ   rß   r¯   rÈ  rž  rÉ  ÚelemrŽ   s
             rN   rá   zClipList.fromXMLÁ  sö   € Ü˜˜g tÓ,ˆØˆ=Ø!#Ð#ˆDŒJ˜Ø�vŠ~Ðˆ~ØˆØˆØò 	@ˆDÜ˜d¤EÔ*ØØ#'Ñ ˆD�%˜Ø�wŠØ—‘˜e G™nÕ-Ø˜Ó"Ü!›)�Ü!)¨%°©/Ó!:�”Ø#ò @�DÜ% d¬EÔ2Ø Ø+/Ñ(�D˜% Ø—O‘O D¨%°¸$Õ?ñ	@ð	@ñ Ø#ò +�	Ø#*��iÒ ñ+ð rM   r‡   r  )	r9   r:   r;   rˆ   rÉ  r  rØ  rØ   rá   rL   rM   rN   r¿  r¿  F  s"   „ óò)òV

ò"óHó6+rM   r¿  c                   ó   — e Zd ZdZdZdZy)Ú
ExtendModer   r   r,   N)r9   r:   r;   ÚPADÚREPEATÚREFLECTrL   rM   rN   r)  r)  Û  s   „ Ø
€CØ€FØ�GrM   r)  c                   ó|   — e 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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y)ÚCompositeModer   r   r,   rn   r-   r|   r   r!  r.   r"  rV   r#  rT   r$  rœ   r%  r/   é   é   é   é   é   é   é   r{   é   é   é   N)r9   r:   r;   ÚCLEARÚSRCÚDESTÚSRC_OVERÚ	DEST_OVERÚSRC_INÚDEST_INÚSRC_OUTÚDEST_OUTÚSRC_ATOPÚ	DEST_ATOPÚXORÚPLUSÚSCREENÚOVERLAYÚDARKENÚLIGHTENÚCOLOR_DODGEÚ
COLOR_BURNÚ
HARD_LIGHTÚ
SOFT_LIGHTÚ
DIFFERENCEÚ	EXCLUSIONÚMULTIPLYÚHSL_HUEÚHSL_SATURATIONÚ	HSL_COLORÚHSL_LUMINOSITYrL   rM   rN   r.  r.  ã  sŽ   „ Ø€EØ
€CØ€DØ€HØ€IØ€FØ€GØ€GØ€HØ€HØ€IØ
€CØ€DØ€FØ€GØ€FØ€GØ€KØ€JØ€JØ€JØ€JØ€IØ€HØ€GØ€NØ€IØ�NrM   r.  c                   óœ   — e 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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Z!d Z"d!Z#d"„ Z$d#„ Z%y$)%ÚPaintFormatr   r,   rn   r-   r|   r   r!  r.   r"  rV   r#  rT   r$  rœ   r%  r/   r/  r0  r1  r2  r3  r4  r5  r{   r6  r7  r8  é   é   é   r�  r0   é!   c                 ó8   — | j                   j                  d«      S )NÚPaintVar)rÍ   Ú
startswithr‰   s    rN   rÿ  zPaintFormat.is_variable%  s   € Ø�y‰y×#Ñ# JÓ/Ð/rM   c                 óŒ   — | j                  «       r| S 	 t        j                  d| j                  dd  › �   S # t        $ r Y y w xY w)Nr\  r|   )rÿ  rV  Ú__members__rÍ   ÚKeyErrorr‰   s    rN   r  zPaintFormat.as_variable(  sL   € Ø×ÑÔØˆKð	Ü×*Ñ*¨X°d·i±iÀÀ°m°_Ð+EÑFÐFøÜò 	Ùð	ús   ”"7 ·	AÁAN)&r9   r:   r;   ÚPaintColrLayersÚ
PaintSolidÚPaintVarSolidÚPaintLinearGradientÚPaintVarLinearGradientÚPaintRadialGradientÚPaintVarRadialGradientÚPaintSweepGradientÚPaintVarSweepGradientÚ
PaintGlyphÚPaintColrGlyphÚPaintTransformÚPaintVarTransformÚPaintTranslateÚPaintVarTranslateÚ
PaintScaleÚPaintVarScaleÚPaintScaleAroundCenterÚPaintVarScaleAroundCenterÚPaintScaleUniformÚPaintVarScaleUniformÚPaintScaleUniformAroundCenterÚ PaintVarScaleUniformAroundCenterÚPaintRotateÚPaintVarRotateÚPaintRotateAroundCenterÚPaintVarRotateAroundCenterÚ	PaintSkewÚPaintVarSkewÚPaintSkewAroundCenterÚPaintVarSkewAroundCenterÚPaintCompositeÚPaintGlyph2rÿ  r  rL   rM   rN   rV  rV    sÃ   „ Ø€OØ€JØ€MØÐØÐØÐØÐØÐØÐØ€JØ€NØ€NØÐØ€NØÐØ€JØ€MØÐØ "ÐØÐØÐØ$&Ð!Ø')Ð$Ø€KØ€NØ ÐØ!#ÐØ€IØ€LØÐØ!ÐØ€NØ€Kò0órM   rV  c            
       ó”   — e Zd ZeZd„ Zdd„Zdedee	j                     fd„Zded    fd„Zdefd„Zdefd	„Z	 dded
ddedee   fd„Zy)rÃ  c                 ó˜   — 	 | j                  | j                  «      j                  S # t        $ r t	        d| j                  › �«      ‚w xY w)NzUnknown Paint format: )r
  r¼  rÍ   rØ  ÚNotImplementedErrorr‰   s    rN   ÚgetFormatNamezPaint.getFormatName4  sI   € ð	NØ—?‘? 4§;¡;Ó/×4Ñ4Ð4øÜò 	NÜ%Ð(>¸t¿{¹{¸mÐ&LÓMÐMð	Nús	   ‚$' §"A	Nc                 ób  — |r|n| j                   j                  }|€g }|j                  d| j                  f«       |j	                  ||«       |j                  | j                  «       «       |j                  «        | j                  ||«       |j                  |«       |j                  «        y )Nr¼  )
r¤  r9   rÃ   r¼  rÒ   r6  r…  rÌ   rÛ  rÕ   )rŠ   rû   r¯   rÎ   rÍ   r%  s         rN   rØ   zPaint.toXML:  s�   € Ù ‘D d§n¡n×&=Ñ&=ˆ	Øˆ=ØˆEØ�‰�h §¡Ð,Ô-Ø×Ñ˜9 eÔ,Ø×Ñ˜$×,Ñ,Ó.Ô/Ø×ÑÔØ�‰�I˜tÔ$Ø×Ñ˜Ô#Ø×ÑÕrM   ÚcolrÚreturnc              #   ó$  K  — | j                   t        j                  k(  rcg }|j                  �|j                  j                  }d„ t        || j                  | j                  | j                  z    «      D «       E d {  –—†  y | j                   t        j                  k(  rq|j                  j                  D ]@  }|j                  | j                  k(  sŒt        j                  d|j                  ¬«      –—  y  t        | j                  ›d�«      ‚| j!                  «       D ]h  }|j"                  €Œt%        |j"                  t'        | «      «      sŒ0t)        | |j*                  «      }t        j                  |j*                  |¬«      –— Œj y 7 �Œ­w)Nc              3   óR   K  — | ]  \  }}t        j                  d ||¬«      –— Œ! y­w)ÚLayers)rÍ   r·   rù   N)r   ÚSubTableEntry)rŸ   r~   rf   s      rN   r    z+Paint.iterPaintSubTables.<locals>.<genexpr>L  s.   è ø€ ò á�A�qô ×'Ñ'¨X¸QÀa×HÐHñùs   ‚%'rÇ  )rÍ   r·   z not in colr.BaseGlyphList)r¼  rV  ra  Ú	LayerListrÃ  rú   ÚFirstLayerIndexÚ	NumLayersrk  rÁ  rÂ  rÇ  rÚ  r   rŒ  r`  r³  Ú
tableClassÚ
issubclassrè   rÆ   rÍ   )rŠ   r‡  Úlayersr!  r¸  r·   s         rN   ÚiterPaintSubTableszPaint.iterPaintSubTablesF  sL  è ø€ Ø�;‰;œ+×5Ñ5Ò5àˆFØ�~‰~Ð)ØŸ™×-Ñ-�ñä%Ø˜4×/Ñ/°$×2FÑ2FÈÏÉÑ2WÐXóô÷ ð ð à�;‰;œ+×4Ñ4Ò4Ø×,Ñ,×AÑAò L�Ø×#Ñ# t§z¡zÓ1Ü#×1Ñ1°{È&Ï,É,ÔWÒWÙðLô
  $§*¡* Ð/IÐJÓKÐKà×&Ñ&Ó(ò 	KˆDØ�‰Ñ*¬z¸$¿/¹/Ì4ÐPTË:Õ/VÜ  d§i¡iÓ0�Ü×-Ñ-°4·9±9ÀEÔJÓJñ	Kð!ûs&   ‚A;FÁ=FÁ>AFÃAFÄ1FÅ=Fc                 ó^   — | j                  |«      D �cg c]  }|j                  ‘Œ c}S c c}w r‡   )r“  r·   )rŠ   r‡  Úps      rN   ÚgetChildrenzPaint.getChildrena  s%   € à!%×!8Ñ!8¸Ó!>Ö?˜A�—“Ò?Ð?ùÒ?s   ”*c                 óŠ   ‡— t        |«      st        d«      ‚t        | ˆfd„¬«      D ]  }|d   j                  } ||«       Œ y)zEDepth-first traversal of graph rooted at self, callback on each node.zcallback must be callablec                 ó&   •— | j                  ‰«      S r‡   ©r“  ©Úpaintr‡  s    €rN   rg   z Paint.traverse.<locals>.<lambda>k  ó   ø€ °%×2JÑ2JÈ4Ó2P€ rM   ©Úiter_subtables_fnrË  N)ÚcallableÚ	TypeErrorr
   r·   )rŠ   r‡  ÚcallbackÚpathr›  s    `   rN   ÚtraversezPaint.traversee  sG   ø€ ä˜Ô!ÜÐ7Ó8Ð8ä"ØÓ$Pô
ò 	ˆDð ˜‘H—N‘NˆEÙ�U�Oñ		rM   c                 óÔ  — | j                   t        j                  k(  rX| j                  }t        |j                  |j
                  |j                  |j                  |j                  |j                  «      S | j                   t        j                  k(  r*t        j                  | j                  | j                  «      S | j                   t        j                  k(  r*t        j                  | j                  | j                   «      S | j                   t        j"                  k(  rtt        j                  | j$                  | j&                  «      j                  | j                  | j                   «      j                  | j$                   | j&                   «      S | j                   t        j(                  k(  rt        j                  | j                  «      S | j                   t        j*                  k(  rit        j                  | j$                  | j&                  «      j                  | j                  «      j                  | j$                   | j&                   «      S | j                   t        j,                  k(  r(t        j.                  t1        | j2                  «      «      S | j                   t        j4                  k(  rrt        j                  | j$                  | j&                  «      j/                  t1        | j2                  «      «      j                  | j$                   | j&                   «      S | j                   t        j6                  k(  r=t        j8                  t1        | j:                   «      t1        | j<                  «      «      S | j                   t        j>                  k(  r‡t        j                  | j$                  | j&                  «      j9                  t1        | j:                   «      t1        | j<                  «      «      j                  | j$                   | j&                   «      S t        | j                   «      jA                  «       rtC        d| j                   › �«      ‚t        S )NzVariable Paints not supported: )"r¼  rV  rl  r   ÚxxÚyxÚxyÚyyÚdxÚdyrn  r   Ú	translaterp  rR   rZ   r[   rr  ÚcenterXÚcenterYrt  rv  rx  Úrotater   Úanglerz  r|  ÚskewÚ
xSkewAngleÚ
ySkewAngler~  rÿ  r„  )rŠ   r<  s     rN   ÚgetTransformzPaint.getTransformp  sÔ  € Ø�;‰;œ+×4Ñ4Ò4Ø—‘ˆAÜ˜QŸT™T 1§4¡4¨¯©¨q¯t©t°Q·T±T¸1¿4¹4Ó@Ð@Ø�[‰[œK×6Ñ6Ò6Ü×%Ñ% d§g¡g¨t¯w©wÓ7Ð7Ø�[‰[œK×2Ñ2Ò2Ü—>‘> $§+¡+¨t¯{©{Ó;Ð;Ø�[‰[œK×>Ñ>Ò>ä×"Ñ" 4§<¡<°·±Ó>ß‘�t—{‘{ D§K¡KÓ0ß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðð
 �[‰[œK×9Ñ9Ò9Ü—>‘> $§*¡*Ó-Ð-Ø�[‰[œK×EÑEÒEä×"Ñ" 4§<¡<°·±Ó>ß‘�t—z‘zÓ"ß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðð
 �[‰[œK×3Ñ3Ò3Ü—?‘?¤7¨4¯:©:Ó#6Ó7Ð7Ø�[‰[œK×?Ñ?Ò?ä×"Ñ" 4§<¡<°·±Ó>ß‘œ §
¡
Ó+Ó,ß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðð
 �[‰[œK×1Ñ1Ò1Ü—=‘=¤¨$¯/©/Ð)9Ó!:¼GÀDÇOÁOÓ<TÓUÐUØ�[‰[œK×=Ñ=Ò=ä×"Ñ" 4§<¡<°·±Ó>ß‘”g˜tŸ™Ð.Ó/´¸¿¹Ó1IÓJß‘˜DŸL™L˜=¨4¯<©<¨-Ó8ðô
 �t—{‘{Ó#×/Ñ/Ô1Ü%Ð(GÈÏÉÀ}Ð&UÓVÐVäˆrM   r»  r)   r¼  c                 ó$  ‡— t        |«      }t        | ˆfd„¬«      D ]Œ  }|d   j                  }|j                  t        j
                  t        j                  hv sŒ?t        t        j                  d„ |D «       t        «      }||j                     j                  t        ||«      «       ŒŽ |j                  €y t        «       }t!        t"        j$                  «      |_        t'        |j                  |«      \  |_        |_        |_        |_        |S )Nc                 ó&   •— | j                  ‰«      S r‡   r™  rš  s    €rN   rg   z&Paint.computeClipBox.<locals>.<lambda>   rœ  rM   r�  rË  c              3   óP   K  — | ]  }|j                   j                  «       –— Œ  y ­wr‡   )r·   r³  )rŸ   rÚ  s     rN   r    z'Paint.computeClipBox.<locals>.<genexpr>©  s   è ø€ Ò<°�R—X‘X×*Ñ*×,Ñ<ùs   ‚$&)r   r
   r·   r¼  rV  rj  r�  r   r   r•   r   rÚ  Údrawr   Úboundsr  rJ  rû  r  r   ÚxMinÚyMinÚxMaxÚyMax)	rŠ   r‡  r»  r¼  Úpenr¢  r›  ÚtransformationÚcbs	    `       rN   rÄ  zPaint.computeClipBox›  së   ø€ ô ˜xÓ(ˆÜ"ØÓ$Pô
ò 	NˆDð ˜‘H—N‘NˆEØ�|‰|Ü×&Ñ&Ü×'Ñ'ð ò ô "(Ü×'Ñ'Ù<°tÔ<Üó"�ð
 ˜Ÿ™Ñ%×*Ñ*¬<¸¸^Ó+LÕMð	Nð �:‰:ÐØä‹YˆÜœ×,Ñ,Ó-ˆŒ	Ü-9¸#¿*¹*ÀlÓ-SÑ*ˆŒ�”˜"œ' 2¤7Øˆ	rM   r  rÍ  )r9   r:   r;   rV  r
  r…  rØ   r®  r%   r   rŒ  r“  r&   r–  r£  r   r³  rJ  r'   r  rÄ  rL   rM   rN   rÃ  rÃ  1  s�   „ Ø€JòNó
ðK tð K°¸×9PÑ9PÑ0Qó Kð6@ 4¨¡=ó @ð	˜Tó 	ð)˜ió )ðX HIñØðØ$1ðØADðà	�'Ñ	ôrM   rÃ  ÚPatchMap)zIFT ÚIFTXÚ	MarkArray)Ú
Mark1ArrayÚLangSys)ÚDefaultLangSys)ÚMarkCoverageÚBaseCoverageÚLigatureCoverageÚMark1CoverageÚMark2CoverageÚBacktrackCoverageÚInputCoverageÚLookAheadCoverageÚVertGlyphCoverageÚHorizGlyphCoverageÚTopAccentCoverageÚExtendedShapeCoverageÚMathKernCoverage)Ú	ClassDef1Ú	ClassDef2ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefÚGlyphClassDefÚMarkAttachClassDefÚAnchor)ÚEntryAnchorÚ
ExitAnchorÚ
BaseAnchorÚLigatureAnchorÚMark2AnchorÚ
MarkAnchorÚDevice)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDeviceÚXDeviceTableÚYDeviceTableÚDeviceTableÚAxis)Ú	HorizAxisÚVertAxisÚMinMax)ÚDefaultMinMaxÚ	BaseCoord)ÚMinCoordÚMaxCoordÚJstfLangSys)ÚDefJstfLangSysÚJstfGSUBModList)ÚShrinkageEnableGSUBÚShrinkageDisableGSUBÚExtensionEnableGSUBÚExtensionDisableGSUBÚJstfGPOSModList)ÚShrinkageEnableGPOSÚShrinkageDisableGPOSÚExtensionEnableGPOSÚExtensionDisableGPOSÚJstfMax)ÚShrinkageJstfMaxÚExtensionJstfMaxÚMathKern)ÚTopRightMathKernÚTopLeftMathKernÚBottomRightMathKernÚBottomLeftMathKernÚMathGlyphConstruction)ÚVertGlyphConstructionÚHorizGlyphConstructionc                 ót   — t        | |d «      }t        | |dz   d «      }t        | dd«      dk\  r|xs |S |xs |S )NÚ2rÀ  r   i  )rÆ   )rÛ  rÍ   Úcompactr×  s       rN   Ú_getLayoutListr  	  sI   € Ü�e˜T 4Ó(€GÜ�u˜d S™j¨$Ó/€HÜˆu�i Ó# zÒ1ØÒ"˜7Ð"ØÒ�hÐrM   c                 ó   — t        | d«      S )NrÏ  )r  )rÛ  s    rN   Ú_getLookupListr  	  s   € Ü˜% Ó.Ð.rM   c                 ó>  — d}|j                   }|j                  €|dz
  }|dk  r|S |j                  dk(  rd}n|j                  dk(  rd}t        | |j                     j                  «      j
                  }||   }|j                  d   j                  j                  k(  rm|dz
  }|dk  r7|j                  €)t        j                  d|j                  t        rdnd	«       |S ||   }|j                  d   j                  j                  |k(  rŒmt        |t        |«      «      D ]w  }||   }|j                  |k7  sŒ||_        t        |j                  «      D ]A  \  }}t        |j                     |   }	 |	«       }
d|
_        ||
_        |
|j                  |<   d}ŒC Œy |S )
a#  Either the offset from the LookupList to a lookup overflowed, or
    an offset from a lookup to a subtable overflowed.

    The table layout is::

      GPSO/GUSB
              Script List
              Feature List
              LookUpList
                      Lookup[0] and contents
                              SubTable offset list
                                      SubTable[0] and contents
                                      ...
                                      SubTable[n] and contents
                      ...
                      Lookup[n] and contents
                              SubTable offset list
                                      SubTable[0] and contents
                                      ...
                                      SubTable[n] and contents

    If the offset to a lookup overflowed (SubTableIndex is None)
            we must promote the *previous* lookup to an Extension type.

    If the offset from a lookup to subtable overflowed, then we must promote it
            to an Extension Lookup type.
    r   r   rÒ  r!  rÔ  r"  z‚%s LookupList offset overflowed and all lookups are already Extension lookups, so the overflow can't be resolved by promotion; %s.zreduce the number of lookupsz“install uharfbuzz to enable the HarfBuzz repacker (it can often pack such tables by sharing/duplicating subtables), or reduce the number of lookups)ÚLookupListIndexÚSubTableIndexÚ	tableTyper  rÛ  rÕ  rÖ  r¤  Ú
LookupTyper½  Úerrorr   ri  r©   rú   ÚlookupTypesr¼  ÚExtSubTable)ÚttfÚoverflowRecordÚokré  ÚextTypeÚlookupsÚlookupÚsiÚsubTableÚextSubTableClassÚextSubTables              rN   ÚfixLookupOverFlowsr   	  s½  € ð8 
€BØ ×0Ñ0€KØ×#Ñ#Ð+Ø! A‘oˆØ�Q‚Øˆ	Ø×Ñ 6Ò)Ø‰Ø	×	!Ñ	! VÒ	+Øˆä˜S ×!9Ñ!9Ñ:×@Ñ@ÓA×HÑH€GØ�[Ñ!€Fà
�/‰/˜!Ñ
×
&Ñ
&×
1Ñ
1°WÒ
<Ø! A‘oˆØ˜Š?ð ×+Ñ+Ð3Ü—	‘	ð%ð #×,Ñ,õ *ñ 7ðFôð ˆIØ˜Ñ%ˆð3 �/‰/˜!Ñ
×
&Ñ
&×
1Ñ
1°WÓ
<ô6 ˜[¬#¨g«,Ó7ò 
ˆØ˜Ñ%ˆØ×Ñ Ó'Ø 'ˆFÔÜ )¨&¯/©/Ó :ò ‘��HÜ#.¨~×/GÑ/GÑ#HÈÑ#QÐ Ù.Ó0�Ø%&�Ô"Ø*2�Ô'Ø&1�—‘ Ñ#Ø‘ñð	
ð €IrM   c                 óL  — d}t        | j                  j                  «       «      }t        |«      }|j                  dv r|dz  }n|j                  dk(  r|j
                  dz
  }i |_        t        |«      D ]+  }||   }|d   }	|d   |j                  |	<   | j                  |	= Œ- |S )Nr   ©r°  r·  r,   r<  r   )rh  r×   r­   r©   ÚitemNameÚ	itemIndexri  )
ÚoldSubTableÚnewSubTabler  r  Ú
oldMappingÚoldLenÚnewLenr~   r0  re  s
             rN   ÚsplitMultipleSubstr*  r	  s¼   € Ø	
€BÜ˜×+Ñ+×1Ñ1Ó3Ó4€JÜ�‹_€Fà×ÑÐ"=Ñ=ð ˜1‘‰à	×	 Ñ	  JÒ	.ð  ×)Ñ)¨AÑ-ˆà€KÔÜ�6˜6Ó"ò %ˆØ˜!‰}ˆØ�1‰gˆØ#'¨¡7ˆ×Ñ˜CÑ Ø×Ñ Ñ$ð	%ð €IrM   c                 ó†  — d}t        | d«      r| j                  |_        t        | j                  j	                  «       «      }t        |«      }|j                  dv r|dz  }n|j                  dk(  r|j                  dz
  }i |_        t        |«      D ]+  }||   }|d   }	|d   |j                  |	<   | j                  |	= Œ- |S )Nr   r„  r"  r,   r|  r   )	r²  r„  rh  rz  r­   r©   r#  r$  ri  )
r%  r&  r  r  ÚoldAltsr(  r)  r~   r0  re  s
             rN   ÚsplitAlternateSubstr-  Œ	  sÕ   € Ø	
€BÜˆ{Ð.Ô/Ø'2×'CÑ'CˆÔ$ä�[×+Ñ+×1Ñ1Ó3Ó4€GÜ�‹\€Fà×ÑÐ"=Ñ=ð ˜1‘‰à	×	 Ñ	  NÒ	2ð  ×)Ñ)¨AÑ-ˆà€KÔÜ�6˜6Ó"ò (ˆØ�q‰zˆØ�1‰gˆØ&*¨1¡gˆ×Ñ˜sÑ#Ø×"Ñ" 3Ñ'ð	(ð €IrM   c                 óL  — d}t        | j                  j                  «       «      }t        |«      }|j                  dv r|dz  }n|j                  dk(  r|j
                  dz
  }i |_        t        |«      D ]+  }||   }|d   }	|d   |j                  |	<   | j                  |	= Œ- |S )Nr   r"  r,   r“  r   )rh  rŒ  r­   r©   r#  r$  ri  )
r%  r&  r  r  ÚoldLigsr(  r)  r~   r0  re  s
             rN   ÚsplitLigatureSubstr0  ©	  s¼   € Ø	
€BÜ�[×*Ñ*×0Ñ0Ó2Ó3€GÜ�‹\€Fà×ÑÐ"=Ñ=ð ˜1‘‰à	×	 Ñ	  MÒ	1ð  ×)Ñ)¨AÑ-ˆà€KÔÜ�6˜6Ó"ò 'ˆØ�q‰zˆØ�1‰gˆØ%)¨!¡Wˆ×Ñ˜cÑ"Ø×!Ñ! #Ñ&ð	'ð €IrM   c                 ó*  — | j                   dk7  s"t        | j                  j                  «      dk  ry| j                   |_         | j                  |_        | j                  j                  }| j
                  }t        |«      dz  }| j                  j                  «       |_        ||d  |j                  _        ||d  |_        |d | | j                  _        |d | | _        t        | j
                  «      | _        t        |j
                  «      |_        y)Nr,   r   FT)r¼  r©   r°  rž  ÚValueFormatÚValuer¤  Ú
ValueCount)r%  r&  r  Úcoverager¤   ÚoldCounts         rN   ÚsplitSinglePosr7  Ã	  sû   € ð ×Ñ˜QÒ¤# k×&:Ñ&:×&AÑ&AÓ"BÀaÒ"GØà$×+Ñ+€KÔØ)×5Ñ5€KÔà×#Ñ#×*Ñ*€HØ×Ñ€FÜ�8‹} Ñ!€Hà&×/Ñ/×9Ñ9Ó;€KÔØ"*¨8¨9Ð"5€K×ÑÔØ˜x˜yÐ)€KÔà"*¨9¨HÐ"5€K×ÑÔØ˜y Ð)€KÔä  ×!2Ñ!2Ó3€KÔÜ  ×!2Ñ!2Ó3€KÔàrM   c           	      óô  ‡— | }d}| j                   |_         | j                   dk(  �rt        | j                  «      dkD  rëdD ]  }t        ||t	        | |«      «       Œ | j
                  j                  «       |_        | j
                  j                  }| j                  }t        | j                  «      dz  Š|d ‰ | j
                  _        |d ‰ | _        |‰d  |j
                  _        |‰d  |_        t        | j                  «      | _        t        |j                  «      |_        d}|S | j                   dk(  �r(t        | j                  «      dkD  �rt        | d«      s't        | j                  d   j                  «      | _        dD ]  }t        ||t	        | |«      «       Œ d| _        | j
                  j                  «       |_        | j                  j                  «       |_        | j
                  j                  }| j                  j                  }| j                  }t        | j                  «      dz  Št!        ˆfd	„|j#                  «       D «       «      }	|D �
cg c]	  }
|
|	vsŒ|
‘Œ c}
| j
                  _        |j#                  «       D ��ci c]  \  }}|‰k  sŒ||“Œ c}}| j                  _        |d ‰ | _	        |D �
cg c]	  }
|
|	v sŒ|
‘Œ c}
|j
                  _        |j#                  «       D ��ci c]  \  }}|‰kD  sŒ||‰z
  “Œ c}}|j                  _        |‰d  |_	        t        | j                  «      | _        t        |j                  «      |_        d}|S c c}
w c c}}w c c}
w c c}}w )
NFr   )ÚValueFormat1ÚValueFormat2r,   TÚClass2Countr   )r;  rÔ  r9  r:  c              3   ó4   •K  — | ]  \  }}|‰k\  sŒ|–— Œ y ­wr‡   rL   )rŸ   Úkrf   r6  s      €rN   r    zsplitPairPos.<locals>.<genexpr>
  s   øè ø€ ÒI™d˜a ¸1À»=œÑIùs   ƒ‘)r¼  r©   ÚPairSetr®   rÆ   r°  r¤  rž  ÚPairSetCountÚClass1Recordr²  ÚClass2Recordr;  Ú	DontSharerÓ  rV  rf  r­   ÚClass1Count)r%  r&  r  rÚ  r  rÍ   r5  r`  rV  Ú	newGlyphsr—  r=  rf   r6  s                @rN   ÚsplitPairPosrE  Þ	  s8  ø€ Ø	€BØ	€BØ$×+Ñ+€KÔØ×Ñ˜QÓ¤3 {×':Ñ':Ó#;¸aÒ#?Ø2ò 	CˆDÜ�K ¤w¨{¸DÓ'AÕBð	Cð
  +×3Ñ3×=Ñ=Ó?ˆÔà×'Ñ'×.Ñ.ˆØ×%Ñ%ˆä�{×*Ñ*Ó+¨qÑ0ˆà&.¨y°Ð&9ˆ×ÑÔ#Ø% i xÐ0ˆÔà&.¨x¨yÐ&9ˆ×ÑÔ#Ø% h iÐ0ˆÔä#& {×':Ñ':Ó#;ˆÔ Ü#& {×':Ñ':Ó#;ˆÔ àˆðT €IðQ 
×	Ñ	˜qÓ	 ¤S¨×)AÑ)AÓ%BÀQÓ%FÜ�{ MÔ2Ü&)¨+×*BÑ*BÀ1Ñ*E×*RÑ*RÓ&SˆKÔ#ØNò 	CˆDÜ�K ¤w¨{¸DÓ'AÕBð	Cð !%ˆÔð  +×3Ñ3×=Ñ=Ó?ˆÔØ +× 5Ñ 5× ?Ñ ?Ó AˆÔà×'Ñ'×.Ñ.ˆØ×)Ñ)×3Ñ3ˆ	Ø×*Ñ*ˆä�{×/Ñ/Ó0°AÑ5ˆÜÓI i§o¡oÓ&7ÔIÓIˆ	à2:Ö&Q¨Q¸aÀyÒ>P¢qÒ&Qˆ×ÑÔ#à&Ÿ_™_Ó.÷+
Ù�Q˜°!°h³,ˆAˆq‰Dó+
ˆ×ÑÔ'ð $+¨9¨HÐ#5ˆÔ à2:Ö&M¨Q¸aÀ9ºn¢qÒ&Mˆ×ÑÔ#à*3¯/©/Ó*;÷+
Ù"& ! Q¸qÀ8»|ˆA��H‘Ñó+
ˆ×ÑÔ'ð $+¨8¨9Ð#5ˆÔ ä"% k×&>Ñ&>Ó"?ˆÔÜ"% k×&>Ñ&>Ó"?ˆÔàˆà€Iùò# 'Rùó+
ùò
 'Nùó+
s0   É	M$É)M$ÊM)Ê M)Ë	M/ËM/Ë9M4ÌM4c                 ó^  — | j                   }|dk  ry|dz  }||z
  }g g }}g g }	}t        | j                  j                  | j                  j
                  «      D ]n  \  }
}|j                  |k  r#|j                  |
«       |j                  |«       Œ8|xj                  |z  c_        |j                  |
«       |	j                  |«       Œp g g }}| j                  j                  D ]l  }|j                  «       |j                  «       }}|j                  d | |_        |j                  |d  |_        |j                  |«       |j                  |«       Œn | j                  |_        || j                  _        | j                  j                  «       |_        ||j                  _        | j                  |_        || _         ||_         || j                  _        | j                  j                  «       |_        |	|j                  _        t        |«      | j                  _        t        |	«      |j                  _        || j                  _	        | j                  j                  «       |_        ||j                  _	        t        |«      | j                  _        t        |«      |j                  _        y)Nr,   FT)Ú
ClassCountr  rÆ  rž  rÂ  Ú
MarkRecordr\  rÃ   Ú	BaseArrayÚ
BaseRecordr¤  rÝ  r¼  rÇ  r©   Ú	MarkCountÚ	BaseCount)r%  r&  r  Ú
classCountÚoldClassCountÚnewClassCountÚoldMarkCoverageÚoldMarkRecordsÚnewMarkCoverageÚnewMarkRecordsrŽ   Ú
markRecordÚoldBaseRecordsÚnewBaseRecordsra  ÚoldBaseRecordÚnewBaseRecords                    rN   ÚsplitMarkBasePosrY  %
  s`  € à×'Ñ'€JØ�A‚~àà !‘O€MØ Ñ.€Mà&(¨"�^€OØ&(¨"�^€OÜ!$Ø× Ñ ×'Ñ'¨×)>Ñ)>×)IÑ)Ió"ò 	.Ñˆ	�:ð ×Ñ˜mÒ+Ø×"Ñ" 9Ô-Ø×!Ñ! *Õ-à×Ò Ñ-ÕØ×"Ñ" 9Ô-Ø×!Ñ! *Õ-ð	.ð &(¨�N€NØ×$Ñ$×/Ñ/ò -ˆØ'*§}¡}£¸¿¹»�}ˆØ#&§>¡>°.°=Ð#AˆÔ Ø#&§>¡>°-°.Ð#AˆÔ Ø×Ñ˜mÔ,Ø×Ñ˜mÕ,ð-ð %×+Ñ+€KÔà&5€K×ÑÔ#Ø*×7Ñ7×AÑAÓC€KÔØ&5€K×ÑÔ#ð  +×7Ñ7€KÔà*€KÔØ*€KÔà'5€K×ÑÔ$Ø'×1Ñ1×;Ñ;Ó=€KÔØ'5€K×ÑÔ$ä&)¨.Ó&9€K×ÑÔ#Ü&)¨.Ó&9€K×ÑÔ#à'5€K×ÑÔ$Ø'×1Ñ1×;Ñ;Ó=€KÔØ'5€K×ÑÔ$ä&)¨.Ó&9€K×ÑÔ#Ü&)¨.Ó&9€K×ÑÔ#àrM   )r,   rn   r-   )r   r,   r-   ©rÒ  rÔ  c                 ó®  — | |j                      j                  }t        |«      j                  |j                     }|j
                  }|j                  |   }t        |d«      sd|_        yt        |d«      r—|j                  j                  j                  }|}|j                  }t        |j                      |j                  j                     } |«       }	|j                  |	_        |	}
t        |j                      |   } |«       }||	_	        n5|j                  j                  }t        |j                      |   } |«       }|}
t        |d«      r|j                  dz   |_        	 t        |j                      |   } ||||«      }|r|j                  j'                  |dz   |
«       |S # t         $ r$ t"        j%                  d|j                   |«       Y yw xY w)zj
    An offset has overflowed within a sub-table. We need to divide this subtable into smaller parts.
    rB  Tr  ÚSubTableCountr   z)Don't know how to split %s lookup type %sF)r  rÛ  r  rÕ  r  r  rÖ  r²  rB  r  r¤  r  r  r¼  r\  Ú
splitTabler`  r½  r  r÷  )r  r  rÛ  r  ÚsubIndexÚsubtableÚsubTableTyper  ÚnewExtSubTableClassÚnewExtSubTableÚtoInsertÚnewSubTableClassr&  Ú	splitFuncr  s                  rN   ÚfixSubTableOverFlowsrf  z
  sÌ  € ð �×(Ñ(Ñ)×/Ñ/€EÜ˜EÓ"×)Ñ)¨.×*HÑ*HÑI€FØ×+Ñ+€HØ�‰˜xÑ(€Hô �8˜[Ô)Ø!ˆÔØäˆx˜Ô'ð  ×+Ñ+×5Ñ5×@Ñ@ˆØˆØ×*Ñ*ˆÜ)¨.×*BÑ*BÑCØ×!Ñ!×,Ñ,ñ
Ðñ -Ó.ˆØ +× 2Ñ 2ˆÔØ!ˆä& ~×'?Ñ'?Ñ@ÀÑNÐÙ&Ó(ˆØ%0ˆÕ"à×)Ñ)×4Ñ4ˆÜ& ~×'?Ñ'?Ñ@ÀÑNÐÙ&Ó(ˆØˆäˆv�Ô'Ø%×3Ñ3°aÑ7ˆÔðÜ˜~×7Ñ7Ñ8¸ÑFˆ	ñ 
�8˜[¨.Ó	9€BÙ	Ø�‰×Ñ˜x¨!™|¨XÔ6Ø€Iøô ò Ü�	‰	Ø7Ø×$Ñ$Øô	
ñ
 ðús   Å$F' Æ'*GÇGc                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚEntryIdStringDataz0IFT entry ID string data block (raw bytes pool).c                 óR   — t        |j                  |j                  d  «      | _        y r‡   )Úbytesr}   ry  )rŠ   r2  r¯   s      rN   rº   zEntryIdStringData.decompile½
  s   € ô ˜&Ÿ+™+ f§j¡j lÐ3Ó4ˆ�	rM   c                 ó:   — |j                  | j                  «       y r‡   )Ú	writeDatar}   r¥  s      rN   rÈ   zEntryIdStringData.compileÅ
  s   € Ø×Ñ˜Ÿ™Õ#rM   c                 óz   — |j                  d| j                  j                  «       ¬«       |j                  «        y )Nr}   r  )rË   r}   ÚhexrÌ   )rŠ   rû   r¯   s      rN   rÛ  zEntryIdStringData.toXML2È
  s+   € Ø×Ñ˜F¨$¯)©)¯-©-«/ÐÔ:Ø×ÑÕrM   c                 óJ   — |dk(  rt         j                  |d   «      | _        y y )Nr}   r·   )rj  Úfromhexr}   )rŠ   rÍ   rÎ   rß   r¯   s        rN   rá   zEntryIdStringData.fromXMLÌ
  s"   € Ø�6Š>ÜŸ™ e¨G¡nÓ5ˆD�Ið rM   N)r9   r:   r;   r  rº   rÈ   rÛ  rá   rL   rM   rN   rh  rh  º
  s   „ Ù:ò5ò$òó6rM   rh  c                  óÀ  — dd l } ddlm} | j                  d«      }t        «       }|D ]l  \  }}t        }|j                  |«      }|r+|j                  d«      }|d   j                  }t        |«      }||vsŒOt        ||fi «      }	|dv rd|	_	        |	||<   Œn |D ]I  \  }}
|j                  d«      sŒt        |«      dkD  sŒ'|dd  |v sŒ/||   }||dd     }||_        ||_        ŒK t        j                  «       D ]  \  }}||   }|D ]  }|||<   Œ	 Œ t         t"        t$        t&        t(        t*        t,        t.        d	œt0        t2        t4        t6        t8        t:        t<        t>        t@        d
œ	tB        tD        tF        tH        tJ        dœtB        tD        tF        tH        tJ        dœdœa&tL        d   tL        d<   tL        jO                  «       D ]!  }|j                  «       D ]  \  }}	||	_(        Œ Œ# dtR        ia*tW        dd«      D ]  }tX        tT        d|z  <   Œ tW        dd«      D ]  }tZ        tT        d|z  <   Œ ddl.m/} |D ]ž  \  }}|j                  |«      }|rk|ja                  «       \  }}tc        |«      }||   }	te        |	d«      si |	_3        i |	_4         ||dd  |«      \  }}||	jf                  |<   ||	jh                  |<   Œ„||   }	 |||«      \  |	_3        |	_4        Œ  y )Nr   r   )ÚotDataz([A-Za-z0-9]+)Format(\d+)$rZ  TÚVarrn   )r   r,   rn   r-   r|   r   r!  r.   )	r   r,   rn   r-   r|   r   r!  r.   r"  )r   r   r,   r-   r|   )rÒ  rÔ  ÚmortÚmorxrÔ  ÚJSTFÚsizer3  zss%02déd   zcv%02d)ÚbuildConvertersÚ
converters)5Úrerr  rÈ   Úglobalsr   ÚmatchÚgrouprè   r   rB  r]  r©   Ú	NoVarTypeÚVarTypeÚ_equivalentsr­   r  r8  rx  r‰  ÚContextSubstÚChainContextSubstÚExtensionSubstÚReverseChainSingleSubstÚ	SinglePosÚPairPosÚ
CursivePosÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosÚ
ContextPosÚChainContextPosÚExtensionPosÚRearrangementMorphÚContextualMorphÚLigatureMorphÚNoncontextualMorphÚInsertionMorphr  r¤   r  r¨  r£  ri  r¬  r®  ÚotConvertersry  r  rJ  r²  rz  ÚconvertersByName)r{  rr  Ú	formatPatÚ	namespacerÍ   ÚfieldsÚ	baseClassÚmÚ
formatTyper_  r¹   ÚvarTypeÚ	noVarTypeÚbaser~  r  Ú
lookupEnumÚenumr~   ry  rÔ  rz  r•  s                          rN   Ú_buildClassesr¡  Ñ
  s  € ÛÝà—
‘
Ð8Ó9€IÜ“	€Ið ò "‰ˆˆfÜˆ	Ø�O‰O˜DÓ!ˆÙà—7‘7˜1“:ˆDð   ™Ÿ™ˆJÜ8¸ÓDˆIØ�yÒ ä�t˜i˜\¨2Ó.ˆCØÐ'Ñ'Ø $�”Ø!ˆI�dŠOð!"ð& ò (‰ˆˆaØ�?‰?˜5Õ!¤c¨$£i°!£m¸¸Q¸R¸ÀIÒ8MØ ‘oˆGØ! $ q r (Ñ+ˆIØ )ˆGÔØ 'ˆIÕð(ô #×(Ñ(Ó*ò "‰
ˆˆdØ˜‰ˆØò 	"ˆCØ!ˆI�cŠNñ	"ð"ô ÜÜÜÜÜ ÜÜ&ñ	
ô ÜÜÜÜÜÜÜÜñ

ô "ÜÜÜ!Üñ
ô "ÜÜä!Üñ
ñ;%€KôL & fÑ-„K�ÑÜ!×(Ñ(Ó*ò "ˆ
Ø#×)Ñ)Ó+ò 	"‰IˆD�#Ø!ˆC�Nñ	"ð"ð 	Ô!ðÐô �1�fÓò DˆÜ*CÔ˜( Q™,Ò'ðDä�1�fÓò IˆÜ*HÔ˜( Q™,Ò'ðIõ .àò V‰ˆˆfØ�O‰O˜DÓ!ˆÙàŸ8™8›:‰LˆD�&Ü˜“[ˆFØ˜D‘/ˆCÜ˜3 Ô-Ø!#�”Ø')�Ô$Ù+:¸6À!À"¸:ÀyÓ+QÑ(ˆJÐ(Ø%/ˆC�N‰N˜6Ñ"Ø+;ˆC× Ñ  Ò(ð ˜D‘/ˆCÙ3BÀ6È9Ó3UÑ0ˆCŒN˜CÕ0ñ!VrM   c                 ó"   — | €g S | j                   S r‡   )rž  )r5  s    rN   r  r  G  s   € ØÐàˆ	à�‰ÐrM   )Šr  rñ  r   r   Ú	functoolsr   Úmathr   Ú	itertoolsÚcollectionsr   r   rÆ  r   Ú%fontTools.ttLib.tables.TupleVariationr	   Ú!fontTools.ttLib.tables.otTraverser
   ÚfontTools.misc.arrayToolsr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.transformr   r   r   ÚfontTools.misc.textToolsr   r   r   ÚfontTools.misc.vectorr   ÚfontTools.pens.boundsPenr   ÚfontTools.pens.transformPenr   ÚotBaser   r   r   r   r   r   ÚfontTools.misc.fixedToolsr   r�   r   r¿   r   rÔ   r    rÛ   Ú fontTools.feaLib.lookupDebugInfor!   r"   Úloggingrc   ÚarrayÚsysr#   Útypingr$   r%   r&   r'   r(   ÚfontTools.ttLib.ttGlyphSetr)   Ú	getLoggerr9   r½  r+   rO   r@   rA   rB   rD   rE   rI   rJ   rF   rG   r¬   rÄ   r¦   r€   rƒ   r…   rñ   Úobjectrþ   r  r	  r  rC  rP  rU  r‚  r   r¨  r¬  r®  r°  r’   rß  rü  r
  r  r8  rT  rx  r‰  r®  rÏ  rð  rÁ  rû  r  r¿  r)  r.  rV  rÃ  r�  r  r  r   r*  r-  r0  r7  rE  rY  r]  rf  rh  r¡  r  rL   rM   rN   ú<module>rº     s0  ðñó Ý Ý Ý Û ß /Ý /Ý @Ý <Ý 2Ý -ß MÑ Mß =Ñ =Ý (Ý 5Ý 4÷÷ ÷ó ÷ TÛ Û Û Û 
Ý ß ?Õ ?áÝ6ð €g×Ñ˜Ó!€ô*˜ô *ñ6 'ØÚ7óÐ ñ ,Ø×*Ñ*¨A¨q°!óñ ,Ø×*Ñ*¨A¨q°!óñ *Ð*;×*IÑ*IÈ2ÈsÐTUÓVÙ'Ð(9×(FÑ(FÈÈAÈqÓQÙ'Ð(9×(FÑ(FÈÈAÈqÓQÙ&Ð'8×'DÑ'DÀbÈ$ÐPQÓRÙ&Ð'8×'DÑ'DÀbÈ#ÈqÓQÙ)Ð*;×*JÑ*JÈAÈqÐRSÓTÙ)Ð*;×*JÑ*JÈAÈqÐRSÓTñÐ ñ$ &Ù%Ù)Ù%ñ	€ñ +Ù*Ù2Ù*ñ	€	ò$ò.>÷"{Bñ {B÷|.ñ .ôD"�Fô "ôˆvô ô
#�ô #ô*R0˜yô R0ôj>@˜Iô >@ôB!�ô !ôJ˜)ô JôZD#˜9ô D#ôNT�Iô Tô	˜ô 	ô	 ô 	ô	 ]ô 	ôX&Ð'ô X&ðz  Ð ôIPÑ7¸Ó@ô IPôX@?Ð ô @?ôF
�Iô 
ô$V,Ð*ô V,ôrRÐ,ô Rôjr8Ð'ô r8ôjJ'Ð-ô J'ôZUÐ,ô Uôp6(ˆ9ô 6(ôr+E�ô +Eô\$˜9ô $ô$�Iô $ô�Gô ô=Ñ.¨wÓ7ô =ôR+Ñ/°Ó8ô R+ôj�ô ô�Gô ô>,�'ô ,ô^CÑ,¨WÓ5ô CðXNØÐ ðNà�ðNð Ð"ðNð ð ð	Nð& ð ð'Nð8 ð ð9NðH ð ðINðZ ð ð[Nðb Ð ðcNðd ð ðeNðl Ð&ðmNðn ð ðoNðz ð ð{NðF ð ðGNðN ð ðONðZ ÐPð[N€òlò/òPòfò4ò:ò4ò6DòN9ð~ ØØñ		ð Øàñ	
ñ€
ò25ô@6˜	ô 6ò.oVñf „órM   