Ë
    ÚÍ:j.(  ã                   óÀ  — d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZmZmZmZ d dlZd dlZ ej0                  d	«      Z G d
„ d«      Zd„ Zd„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%	 d dl&m'Z' e#Z(d„ Z,d„ Z-d„ Z.dZ/d „ Z0d!„ Z1 e2«       d"œd#„Z3y# e)$ r 	 d dl*m+Z+ e$Z(n# e)$ r e%Z(Y nw xY wY Œ;w xY w)$é    )ÚLerpGlyphSet)ÚAbstractPenÚBasePenÚDecomposingPen)ÚAbstractPointPenÚSegmentToPointPen)ÚRecordingPenÚDecomposingRecordingPen)Ú	Transform)ÚdefaultdictÚdeque)ÚsqrtÚcopysignÚatan2ÚpiNzfontTools.varLib.interpolatablec                   óh   — 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ededededede	de
dedededediZy)ÚInterpolatableProblemÚnothingÚmissingÚ	open_pathÚ
path_countÚ
node_countÚnode_incompatibilityÚcontour_orderÚwrong_start_pointÚkinkÚunderweightÚ
overweighté   é   é   é   é   é   é   é   é	   é
   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNOTHINGÚMISSINGÚ	OPEN_PATHÚ
PATH_COUNTÚ
NODE_COUNTÚNODE_INCOMPATIBILITYÚCONTOUR_ORDERÚWRONG_START_POINTÚKINKÚUNDERWEIGHTÚ
OVERWEIGHTÚseverity© ó    ú{/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/varLib/interpolatableHelpers.pyr   r      s{   „ Ø€GØ€GØ€IØ€JØ€JØ1ÐØ#€MØ+ÐØ€DØ€KØ€Jð 	�Ø�1Ø�AØ�AØ˜aØ�qØ˜1ØˆaØ�QØ�BØ�ð�Hr:   r   c                 óN   — t        t        | j                  «       d„ d¬«      «      S )z6Sort problem groups by their most severe problem type.c                 ó.   — t        d„ | d   D «       «       S )Nc              3   ón   K  — | ]-  }t         j                  |d       |j                  dd«      z   –— Œ/ y­w)ÚtypeÚ	tolerancer   N)r   r8   Úget)Ú.0Úps     r;   ú	<genexpr>z2sort_problems.<locals>.<lambda>.<locals>.<genexpr>1   s8   è ø€ ò àô +×3Ñ3°A°f±IÑ>ÀÇÁÀ{ÐTUÓAVÕVñùs   ‚35r   )Úmin)Ú_s    r;   ú<lambda>zsort_problems.<locals>.<lambda>0   s!   € œ3ñà˜q™Tôóð € r:   T)ÚkeyÚreverse)ÚdictÚsortedÚitems)Úproblemss    r;   Úsort_problemsrN   +   s+   € äÜØ�N‰NÓñð ô		
óð r:   c                 ó   — | | d | d|  z   S )z{Rotate list by k items forward.  Ie. item at position 0 will be
    at position k in returned list.  Negative k is allowed.Nr9   )ÚlÚks     r;   Úrot_listrR   ;   s   € ð ˆaˆRˆSˆ6�A�c˜�r�F‰?Ðr:   c                   ó>   — e Zd Zd
d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
y)ÚPerContourPenNc                 óZ   — t        j                  | |«       || _        d | _        g | _        y ©N)r   Ú__init__Ú_PenÚ_penÚvalue)ÚselfÚPenÚglyphsets      r;   rW   zPerContourPen.__init__B   s'   € Ü×Ñ˜˜xÔ(ØˆŒ	ØˆŒ	Øˆ�
r:   c                 óZ   — | j                  «        | j                  j                  |«       y rV   )Ú_newItemrY   ÚmoveTo)r[   Úp0s     r;   Ú_moveTozPerContourPen._moveToH   s   € Ø�‰ŒØ�	‰	×Ñ˜Õr:   c                 ó:   — | j                   j                  |«       y rV   )rY   ÚlineTo)r[   Úp1s     r;   Ú_lineTozPerContourPen._lineToL   s   € Ø�	‰	×Ñ˜Õr:   c                 ó<   — | j                   j                  ||«       y rV   )rY   ÚqCurveTo)r[   re   Úp2s      r;   Ú_qCurveToOnezPerContourPen._qCurveToOneO   s   € Ø�	‰	×Ñ˜2˜rÕ"r:   c                 ó>   — | j                   j                  |||«       y rV   )rY   ÚcurveTo)r[   re   ri   Úp3s       r;   Ú_curveToOnezPerContourPen._curveToOneR   s   € Ø�	‰	×Ñ˜"˜b "Õ%r:   c                 óF   — | j                   j                  «        d | _         y rV   )rY   Ú	closePath©r[   s    r;   Ú
_closePathzPerContourPen._closePathU   s   € Ø�	‰	×ÑÔØˆ�	r:   c                 óF   — | j                   j                  «        d | _         y rV   )rY   ÚendPathrq   s    r;   Ú_endPathzPerContourPen._endPathY   s   € Ø�	‰	×ÑÔØˆ�	r:   c                 óh   — | j                  «       x| _        }| j                  j                  |«       y rV   )rX   rY   rZ   Úappend)r[   Úpens     r;   r_   zPerContourPen._newItem]   s&   € ØŸ)™)›+Ð%ˆŒ	�CØ�
‰
×Ñ˜#Õr:   rV   )r*   r+   r,   rW   rb   rf   rj   rn   rr   ru   r_   r9   r:   r;   rT   rT   A   s*   „ óòòò#ò&òòór:   rT   c                   ó   — e Zd Zd„ Zy)ÚPerContourOrComponentPenc                 ób   — | j                  «        | j                  d   j                  ||«       y )Néÿÿÿÿ)r_   rZ   ÚaddComponent)r[   Ú	glyphNameÚtransformations      r;   r}   z%PerContourOrComponentPen.addComponentc   s#   € Ø�‰ŒØ�
‰
�2‰×#Ñ# I¨~Õ>r:   N)r*   r+   r,   r}   r9   r:   r;   rz   rz   b   s   „ ó?r:   rz   c                   ó*   — e Zd Zd„ Zdd„Zdd„Zdd„Zy)ÚSimpleRecordingPointPenc                 ó   — g | _         y rV   )rZ   rq   s    r;   rW   z SimpleRecordingPointPen.__init__i   s	   € Øˆ�
r:   Nc                  ó   — y rV   r9   )r[   Ú
identifierÚkwargss      r;   Ú	beginPathz!SimpleRecordingPointPen.beginPathl   ó   € Ør:   c                  ó   — y rV   r9   rq   s    r;   rt   zSimpleRecordingPointPen.endPatho   r‡   r:   c                 óR   — | j                   j                  ||€df«       y df«       y )NFT)rZ   rw   )r[   ÚptÚsegmentTypes      r;   ÚaddPointz SimpleRecordingPointPen.addPointr   s&   € Ø�
‰
×Ñ˜2¨Ð(;˜uÐFÕGÀÐFÕGr:   rV   )ÚreturnN)r*   r+   r,   rW   r†   rt   rŒ   r9   r:   r;   r�   r�   h   s   „ òóóôHr:   r�   c                 óL   — d}t        | |«      D ]  \  }}||z
  }|||z  z  }Œ |S ©Nr   )Úzip©Úv0Úv1ÚsÚx0Úx1Úds         r;   Úvdiff_hypot2r˜   v   s=   € Ø	€AÜ�b˜"“+ò ‰ˆˆBØ�‰GˆØ	ˆQ�‰U‰
‰ðð €Hr:   c                 ó¨   — d}t        | |«      D ]@  \  }}||z
  }||j                  |j                  z  |j                  |j                  z  z   z  }ŒB |S r�   )r�   ÚrealÚimagr‘   s         r;   Úvdiff_hypot2_complexrœ   ~   sW   € Ø	€AÜ�b˜"“+ò /‰ˆˆBØ�‰GˆØ	ˆQ�V‰V�a—f‘f‰_˜qŸv™v¨¯©™Ñ.Ñ.‰ð/ð
 €Hr:   c                 ó>   ‡ — t        ˆ fd„t        |«      D «       «      S )Nc              3   ó4   •K  — | ]  \  }}‰|   |   –— Œ y ­wrV   r9   )rB   ÚiÚjÚGs      €r;   rD   z matching_cost.<locals>.<genexpr>‰   s   øè ø€ Ò7™4˜1˜aˆq�‰t�A�wÑ7ùs   ƒ)ÚsumÚ	enumerate)r¡   Úmatchings   ` r;   Úmatching_costr¥   ˆ   s   ø€ ÜÓ7¤9¨XÓ#6Ô7Ó7Ð7r:   c                 óÔ   — t        | «      }t        | «      \  }}|t        t        |«      «      k(  j	                  «       sJ ‚t        d„ |D «       «      }t        |«      t        | |«      fS )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrV   )Úint)rB   Úes     r;   rD   z<min_cost_perfect_bipartite_matching_scipy.<locals>.<genexpr>’   s   è ø€ Ò%˜1”�A—Ñ%ùs   ‚)ÚlenÚlinear_sum_assignmentÚlistÚrangeÚallr¥   )r¡   ÚnÚrowsÚcolss       r;   Ú)min_cost_perfect_bipartite_matching_scipyr²   Œ   s`   € ÜˆA‹€AÜ& qÓ)�J€Dˆ$Ø”Dœ˜q›“NÑ"×'Ñ'Ô)Ð)Ð)ô Ñ% Ô%Ó%€DÜ�‹:”} Q¨Ó-Ð-Ð-r:   c                 óŒ   — t        | «      }d g|z  }t        «       j                  | «      D ]
  \  }}|||<   Œ |t        | |«      fS rV   )rª   ÚMunkresÚcomputer¥   )r¡   r¯   r±   ÚrowÚcols        r;   Ú+min_cost_perfect_bipartite_matching_munkresr¸   –   sQ   € ÜˆA‹€AØˆ6�A‰:€DÜ“I×%Ñ% aÓ(ò ‰ˆˆSØˆˆSŠ	ðà”˜q $Ó'Ð'Ð'r:   c                 ó  — t        | «      }|dkD  rt        d«      ‚t        j                  t	        |«      «      }t        t        |«      «      }t        | |«      }|D ]!  }t        | |«      }||k  sŒt        |«      |}}Œ# ||fS )Nr$   z4Install Python module 'munkres' or 'scipy >= 0.17.0')rª   Ú	ExceptionÚ	itertoolsÚpermutationsr­   r¬   Únextr¥   )r¡   r¯   r¼   ÚbestÚ	best_costrC   Úcosts          r;   Ú.min_cost_perfect_bipartite_matching_bruteforcerÁ   ž   s‹   € ÜˆA‹€Aàˆ1‚uÜÐNÓOÐOô ×)Ñ)¬%°«(Ó3€LÜ”�\Ó"Ó#€DÜ˜a Ó&€IØò ,ˆÜ˜Q Ó"ˆØ�)ÓÜ" 1›g t�)‰Dð,ð �ˆ?Ðr:   )r«   )r´   c                 óì   — t        t        | j                  «      «      }t        || j                  «      | j                  | j
                  | j                  dz  | j                  dz  | j                  |z  fS )Nr    )	r   ÚabsÚarear   ÚmeanXÚmeanYÚstddevXÚstddevYÚcorrelation)ÚstatsÚsizes     r;   Úcontour_vector_from_statsrÌ   Ã   sb   € ô ”�E—J‘J“Ó €Dä�$˜Ÿ™Ó$Ø�‰Ø�‰Ø�‰˜ÑØ�‰˜ÑØ×Ñ˜DÑ ðð r:   c                 óä   ‡— t        | «      }| D ��cg c]  }|D �cg c]  }t        ||«      ‘Œ c}‘Œ c}}Št        ‰«      \  }}t        ˆfd„t	        |«      D «       «      }|||fS c c}w c c}}w )Nc              3   ó.   •K  — | ]  }‰|   |   –— Œ y ­wrV   r9   )rB   rŸ   Úcostss     €r;   rD   z'matching_for_vectors.<locals>.<genexpr>Ú   s   øè ø€ Ò6¨˜˜a™ �Ñ6ùs   ƒ)rª   r˜   Ú#min_cost_perfect_bipartite_matchingr¢   r­   )	Úm0Úm1r¯   r’   r“   r¤   r¥   Úidentity_costrÏ   s	           @r;   Úmatching_for_vectorsrÔ   Ò   sl   ø€ ÜˆB‹€Aà;=×>°R¨RÖ0 rŒl˜2˜rÕ"Ô0Ó>€Eô 	,¨EÓ2ñØØäÓ6¬U°1«XÔ6Ó6€MØ�] MÐ1Ð1ùò 1ùÓ>s   ’	A,›A'®A,Á'A,c                 ó@   — d}t        | «      D ]  \  }}|dz  |z  }Œ |S )Nr   r   )Úreversed)ÚpointsÚbitsrŠ   Úbs       r;   Úpoints_characteristic_bitsrÚ   Þ   s1   € Ø€DÜ˜&Ó!ò ‰ˆˆAØ˜‘	˜Q‰‰ðà€Kr:   r"   c                 óÎ  — g }| s|S | D ��cg c]  \  }}t        |Ž ‘Œ } }}t        | «      }t        dk(  sJ ‚| j                  | d t        dz
   «       t        | «      t        k  r.| j                  | d t        dz
   «       t        | «      t        k  rŒ.t	        |«      D ]¿  }| |   }|j                  |«       | |dz      }||z
  }|j                  |dz  «       | |dz      }	|	|z
  }
|j                  |
|z
  «       |j                  |
j                  z  |j                  |
j                  z  z
  }t        t        t        |«      «      |«      }|j                  |dz  «       ŒÁ |S c c}}w )Nr"   r   r!   r    )Úcomplexrª   Ú$_NUM_ITEMS_PER_POINTS_COMPLEX_VECTORÚextendr­   rw   rš   r›   r   r   rÃ   )r×   ÚvectorrŠ   rF   r¯   rŸ   ra   re   Úd0ri   Úd1Úcrosss               r;   Úpoints_complex_vectorrã   è   sb  € Ø€FÙØˆØ(.×/™u˜r 1Œg�rŠlÐ/€FÑ/ÜˆF‹€AÜ/°1Ò4Ð4Ð4Ø
‡M�M�&ÐCÔ?À!ÑCÐDÔEÜ
ˆf‹+Ô<Ò
<Ø�‰�fÐGÔCÀaÑGÐHÔIô ˆf‹+Ô<Ó
<ä�1‹Xò !ˆð �A‰YˆØ�‰�bÔð �A˜‘E‰]ˆØ�"‰WˆØ�‰�b˜1‘fÔð �A˜‘E‰]ˆØ�"‰WˆØ�‰�b˜2‘gÔð —‘˜"Ÿ'™'Ñ! B§G¡G¨b¯g©gÑ$5Ñ5ˆÜœœc %›jÓ)¨5Ó1ˆØ�‰�e˜a‘iÕ ð+!ð. €Mùó; 0s   ŒE!c                 ón  — t        | «      }t        | «      }|r| d d d…   } t        | «      }n|}t        | «      }t        |«      |z  dk(  sJ ‚t        |«      |z  }d|z  dz
  }t        |«      D ]E  }	|||	z
  z  |z  ||	z	  z  }
|
|k(  sŒ|j	                  t        ||	 |z  «      |r|dz
  |	z
  n|	|f«       ŒG y )Nr|   r   r   )rÚ   rª   rã   r­   rw   rR   )r×   ÚisomorphismsrI   Úreference_bitsr¯   rØ   rß   ÚmultÚmaskrŸ   rÙ   s              r;   Úadd_isomorphismsré     sØ   € Ü/°Ó7€NÜˆF‹€Añ
 Ø™˜"˜‘ˆÜ)¨&Ó1‰àˆä" 6Ó*€Fäˆv‹;˜‰?˜aÒÐÐÜˆv‹;˜!Ñ€DØ�‰F�a‰<€Dä�1‹Xò ˆØ�q˜1‘u‰o Ñ%¨$°!©)Ñ4ˆØ�ÓØ×ÑÜ˜& 1 " t¡)Ó,¹7¨a°!©e°aªiÈÈ7ÐSõñr:   )Údiscrete_axesc          	      ó²  ‡‡— d gt        t        t        | «      dz
  «      «      z   }t        t        t        | «      «      «      }|�rãt        |«      D ��cg c])  \  }}t	        ˆfd„|j                  «       D «       «      r|‘Œ+ }}}|r!t        j                  dt        |«      |«       nt        j                  d«       	 ddl	m
} t        t        |«      «      D �	cg c]  }	dgt        |«      z  ‘Œ }
}	t        «       }|D ]!  Š|j                  ‰j                  «       «       Œ# t        |«      }|D �‡cg c]  Št        ˆfd„|D «       «      ‘Œ }}t!        j"                  t        t        |«      «      d«      D ]q  \  }}t%        |||   «      D ��ci c]  \  }}|‰v sŒ||“Œ }}}t%        |||   «      D ��ci c]  \  }}|‰v sŒ||“Œ }}}||k7  rŒZt'        ||   ||   «      |
|   |<   Œs  ||
d	¬
«      }|j)                  «       \  }}t+        t        «      }
t%        ||«      D ]-  \  }}|
|   j-                  |«       |
|   j-                  |«       Œ/ d gt        |«      z  }g }t        «       }t/        |«      }|rc|j1                  «       }|j-                  |«       |j3                  |«       t        |
|   «      D ]  }||vsŒ|||<   |j3                  |«       Œ |rŒct        |«      t        |«      k(  sJ d«       ‚	 t        j                  d|«       t        j                  d|«       ||fS c c}}w c c}	w c c}w c c}}w c c}}w # t4        $ r Y ŒWw xY w)Nr   c              3   ó8   •K  — | ]  \  }}|‰vsŒ|d k(  –— Œ y­w©r   Nr9   )rB   rQ   Úvrê   s      €r;   rD   z)find_parents_and_order.<locals>.<genexpr>/  s    øè ø€ ÒJ™d˜a °1¸MÒ3I�1˜•6ÑJùs   ƒ�
zFound %s base masters: %szNo base master location foundr   )Úminimum_spanning_treec              3   óB   •K  — | ]  }‰j                  |d «      –— Œ y­wrí   )rA   )rB   rQ   rP   s     €r;   rD   z)find_parents_and_order.<locals>.<genexpr>?  s   øè ø€ Ò7¨Q˜QŸU™U 1 aŸ[Ñ7ùs   ƒr    T)Ú	overwritez.Not all masters are reachable; report an issuezParents: %sz	Order: %s)r¬   r­   rª   r£   r®   rL   ÚlogÚinfoÚwarningÚscipy.sparse.csgraphrï   ÚsetÚupdateÚkeysrK   Útupler»   Úcombinationsr�   r˜   Únonzeror   Úaddr   Úpopleftrw   ÚImportError)Ú	glyphsetsÚ	locationsrê   ÚparentsÚorderrŸ   rP   Úbasesrï   rF   ÚgraphÚaxesÚvectorsr    rQ   rî   Úi_discrete_locationÚj_discrete_locationÚtreer°   r±   r¶   r·   ÚvisitedÚqueues     `   `                  r;   Úfind_parents_and_orderr  '  sB  ù€ Øˆf”tœE¤# i£.°1Ñ"4Ó5Ó6Ñ6€GÜ””s˜9“~Ó&Ó'€EÚô " )Ó,÷
á��1ÜÓJ a§g¡g£iÔJÔJò ð
ˆñ 
ñ
 Ü�H‰HÐ0´#°e³*¸eÕDä�K‰KÐ7Ô8ð-	ÝBä38¼¸Y»Ó3HÖI¨a�a�Sœ3˜y›>Ó)ÐIˆEÐIÜ“5ˆDØò &�Ø—‘˜AŸF™F›HÕ%ð&ä˜$“<ˆDØAJ×K¸A”uÓ7°$Ô7Õ7ÐKˆGÐKÜ!×.Ñ.¬u´S¸³^Ó/DÀaÓHò 	C‘��1ä%(¨¨w°q©zÓ%:÷'Ù!˜Q ¸aÀ=Ò>P�A�q‘Dð'Ð#ñ 'ô &)¨¨w°q©zÓ%:÷'Ù!˜Q ¸aÀ=Ò>P�A�q‘Dð'Ð#ñ 'ð 'Ð*=Ò=ØÜ*¨7°1©:°w¸q±zÓB��a‘˜’ð	Cñ )¨¸$Ô?ˆDØŸ™›‰JˆD�$Ü¤Ó$ˆEÜ  d›Oò $‘��SØ�c‘
—‘˜sÔ#Ø�c‘
—‘˜sÕ#ð$ð
 �fœs 9›~Ñ-ˆGØˆEÜ“eˆGÜ˜%“LˆEÙØ—M‘M“O�Ø—‘˜A”Ø—‘˜Q”Ü  a¡Ó)ò (�AØ Ò'Ø%&˜ ™
ØŸ™ Q�ð(ò	 ô �u“:¤Øó"ò ð @à?ó@ñ ô 	�‰� Ô(Ü�‰�˜eÔ$Ø�Eˆ>Ðùóy
ùò Jùò
 Lùó'ùó'øô> ò 	Ùð	úsi   Á.L.Â?M
 ÃL4Ã1AM
 Ä3L9ÅAM
 ÆL>ÆL>Æ"M
 Æ7MÇMÇ	C:M
 ËM
 ËM
 Ì4M
 Í
	MÍM)4ÚfontTools.ttLib.ttGlyphSetr   ÚfontTools.pens.basePenr   r   r   ÚfontTools.pens.pointPenr   r   ÚfontTools.pens.recordingPenr	   r
   ÚfontTools.misc.transformr   Úcollectionsr   r   Úmathr   r   r   r   r»   ÚloggingÚ	getLoggerrò   r   rN   rR   rT   rz   r�   r˜   rœ   r¥   r²   r¸   rÁ   Úscipy.optimizer«   rÐ   rþ   Úmunkresr´   rÌ   rÔ   rÚ   rÝ   rã   ré   rö   r  r9   r:   r;   ú<module>r     s  ðÝ 3ß GÑ Gß Gß MÝ .ß *ß *Ó *Û ã à€g×ÑÐ9Ó:€÷ñ ò8ò ô�Gô ôB?˜}ô ?ôHÐ.ô Hòòò8ò.ò(òð(
Ý4à*SÐ'òò	2òð ()Ð $ò!òHñ6 CFÃ%õ Aøðc ò 

ð	
Ý#ð 8ñ 	,øð ò 
à:ò 	,ð
üð

ús6   ÂB> Â>CÃCÃCÃCÃCÃCÃCÃC