ó
    oñ:i¥°  ã                   óÞ  • S r SSK7  SSKJr  SSKJr  SSKJrJrJ	r	  SSK
Jr  SSKJrJr  SS	KJr  SS
KJrJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK J!r!J"r"J#r#  SSK$r$SSK%r%\$RL                  " S5      r'Sr(Sr)Sr*Sr+ " S S5      r,   S"S\(\)\+S/ S.S jjr-\" \-5      S 5       r.S r/S r0S#S  jr1\2S!:X  a*  SSK3r3\1" 5       r4\3Rj                  " \6" \7" \45      5      5        gg)$z¯
Tool to find wrong contour order between different masters, and
other interpolatability (or lack thereof) issues.

Call as:
$ fonttools varLib.interpolatable font1 font2 ...
é   )Ú*)Útest_contour_order)Útest_starting_pointé    )ÚRecordingPenÚDecomposingRecordingPenÚlerpRecordings)ÚTransformPen)ÚStatisticsPenÚStatisticsControlPen)ÚOpenContourError)ÚpiecewiseLinearMapÚnormalizeLocation)ÚfloatToFixedToStr)Ú	Transform)Údefaultdict)ÚSimpleNamespace)Úwraps)Úpformat)ÚsqrtÚatan2ÚpiNzfontTools.varLib.interpolatablegffffffî?g      à?gü©ñÒMb`?iè  c                   ó4   • \ rS rSrSrS rS rS rS	S jrSr	g)
ÚGlyphé'   )	Ú
recordingsÚ
greenStatsÚcontrolStatsÚgreenVectorsÚcontrolVectorsÚ	nodeTypesÚisomorphismsÚpointsÚopenContoursc                 óp   • Xl         U R                   H  n[        X/ 5        M     U R                  U5        g ©N)ÚnameÚITEMSÚsetattrÚ	_populate)ÚselfÚ	glyphnameÚglyphsetÚitems       Úb/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/varLib/interpolatable.pyÚ__init__ÚGlyph.__init__4   s+   € ØŒ	Ø—J”JˆDÜ�D Ö#ñ à�‰�xÕ ó    c                 ó’   • U R                    H7  n[        [        X5      5      U:X  d  M  [        X5      R                  S 5        M9     g r&   )r(   ÚlenÚgetattrÚappend)r+   Úixr.   s      r/   Ú_fill_inÚGlyph._fill_in:   s5   € Ø—J”JˆDÜ”7˜4Ó&Ó'¨2Õ-Ü˜Ó#×*Ñ*¨4Ö0ò r2   c                 óx  • XR                      nUS L U l        U R                  (       a  g [        [        US9n UR	                  USS9  UR                  U l        A[        U R                  5       GHÙ  u  pEUR                   VVs/ s H  u  pgUPM	     nnnU R                  R                  U5        [        US9n	[        US9n
 UR                  U	5        UR                  U
5        U R                  R                  S5        U R"                  R                  U	5        U R$                  R                  U
5        U R&                  R                  [)        U	5      5        U R*                  R                  [)        U
5      5        US   S:X  a  U R!                  U5        GM,  US   S:X  d   eUS   S	;   d   e[-        5       n[/        US5      nUR                  U5        U R0                  R                  UR                  5        / nU R2                  R                  U5        [5        UR                  US5        [5        UR                  US5        GMÜ     g ! [
         a    UR	                  U5         GN$f = fs  snnf ! [         a8  nU R                  R                  S5        U R!                  U5         S nAGMD  S nAff = f)
N©r-   T)ÚoutputImpliedClosingLineFr   ÚaddComponentÚmoveToéÿÿÿÿ)Ú	closePathÚendPath)r'   Údoesnt_existÚPerContourOrComponentPenr   ÚdrawÚ	TypeErrorÚvaluer   Ú	enumerater!   r6   r   r   Úreplayr$   r   r8   r   r   r   Úcontour_vector_from_statsr    ÚSimpleRecordingPointPenÚSegmentToPointPenr#   r"   Úadd_isomorphisms)r+   r-   ÚglyphÚperContourPenr7   ÚcontourÚopÚargr!   r   r   Úer#   Ú	converterr"   s                  r/   r*   ÚGlyph._populate?   sG  € ØŸ™Ñ#ˆØ! T˜MˆÔØ××Øä0´ÈÑQˆð	&Ø�J‰J�}¸tˆJÑDð (×-Ñ-ˆŒØä$ T§_¡_×5‰KˆBØ+2¯=ª=Ô9ª=¡ ›©=ˆIÑ9Ø�N‰N×!Ñ! )Ô,ä&°Ñ9ˆJÜ/¸ÑBˆLðØ—‘˜zÔ*Ø—‘˜|Ô,Ø×!Ñ!×(Ñ(¨Ô/ð
 �O‰O×"Ñ" :Ô.Ø×Ñ×$Ñ$ \Ô2Ø×Ñ×$Ñ$Ô%>¸zÓ%JÔKØ×Ñ×&Ñ&Ô'@ÀÓ'NÔOð ˜‰|˜~Ó-Ø—‘˜bÔ!Úà˜Q‘< 8Ó+Ð+Ð+Ø˜R‘=Ð$<Ó<Ð<Ð<Ü,Ó.ˆFÜ)¨&°%Ó8ˆIØ�N‰N˜9Ô%ð �K‰K×Ñ˜vŸ|™|Ô,àˆLØ×Ñ×$Ñ$ \Ô2ô ˜VŸ\™\¨<¸Ô?ä˜VŸ\™\¨<¸×>òQ 6øô ó 	&Ø�J‰J�}×%ð	&üó :øô $ó Ø×!Ñ!×(Ñ(¨Ô.Ø—‘˜bÔ!Þûðús/   ¹I ÂI1Ã=I7ÉI.É-I.É7
J9Ê,J4Ê4J9Nc                 ó�   • Uc%  U R                    H  nUR                  U5        M     g U R                   U   R                  U5        g r&   )r   rD   )r+   ÚpenÚcountor_idxrO   s       r/   rD   Ú
Glyph.draww   s;   € ØÑØŸ?œ?�Ø—‘˜SÖ!ò +ð �O‰O˜KÑ(×-Ñ-¨cÕ2r2   )rB   r'   r   r&   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r(   r0   r8   r*   rD   Ú__static_attributes__© r2   r/   r   r   '   s   † ð
€Eò!ò1ò
6?÷p3r2   r   F)Ú	locationsÚ	toleranceÚ	kinkinessÚupemÚshow_allÚdiscrete_axesc             #   óü  ^ ^\#   • US:¼  a  US-  nSUs=::  a  S::  d   e   eUS:¼  a  US-  nSU::  d   eU=(       d    T  V
s/ s H  n
[        U
5      PM     sn
nUc*  T  VV
s1 s H  o»R                  5         H  oªiM     M     nnn
[        T XIS9u  m\nU U\4S jnU G
HV  n[        R	                  SU5        T  Vs/ s H  n[        Xë5      PM     nn[        U Vs/ s H
  nUc  M  SPM     sn5      S::  a  M\  [        [        UT U5      5       HŠ  u  nu  nnnUR                  (       a!  U(       d  U[        R                  UUS.4v •  M<  S	n[        UR                  5       H*  u  nnU(       d  M  S
nU[        R                  UUUS.4v •  M,     U(       d  MŠ  MŒ     S /[        T 5      -  nU G	H@  nUU   nUb  UR                  (       d  M  U" UU5      nUc  M-  UU   nUb  UR                  (       d  MH  UR                  nUR                  n[        U5      [        U5      :w  a6  U[        R                  UU   UU   UU[        U5      [        U5      S.4v •  M®  UU:w  aÇ  [        [        UU5      5       H®  u  nu  nnUU:X  a  M  [        U5      [        U5      :w  a7  U[        R                   UUU   UU   UU[        U5      [        U5      S.4v •  M`  [        [        UU5      5       H5  u  n u  n!n"U!U":w  d  M  U[        R"                  UU UU   UU   UUU!U"S.	4v •  M7     M°     [%        UU5      u  n#n$U#U:  aC  U[        R&                  UU   UU   UU[)        [+        [        U$5      5      5      U$U#S.4v •  U$UU'   UR,                  n%UR,                  n&UR.                  n'UR.                  n(UR0                  n)UR0                  n*UU   n$U$bF  U&(       a?  U$ V+s/ s H  n+U&U+   PM
     n&n+U$ V+s/ s H  n+U(U+   PM
     n(n+U$ V+s/ s H  n+U*U+   PM
     n*n+/ n,[        U)U*5       HP  u  n-n. [3        5       n/[)        [5        U-R6                  U.R6                  5      5      U/l        U,R9                  U/5        MR     [        [        U%U&5      5       GHÇ  u  nu  n0n1U0b*  U1b'  [        U05      S:X  d  [        U05      [        U15      :w  a  M9  [=        UUUUU$5      u  n#n2n3U#U:  a%  U[        R>                  UUU   UU   UUSU2U3U#S.
4v •  U,U   n4U4(       d  M…  U'U   S   S:  U(U   S   S:  :X  d  MŸ  [A        S S9n5U4RC                  U55        [E        U55      n6U'U   n7U(U   n8U7S   U7S   -  n9U8S   U8S   -  n:U6S   U6S   -  n;[        [        RF                  [        RH                  45       H«  u  n<n=U<(       a  [K        U9U:5      n>M  [M        U9U:-  5      n>[        RO                  SU=U;U>U9U:5        U<(       d  U>U-  U;S-   :”  d  U<(       d  M_  SU>U-  -   U;:  d  Mm   U<(       a  U>U;-  n#OU;U>-  n# [        RO                  SU#5        UU=UUU   UU   UUU#S.4v •  M­     GMÊ     URR                  nURR                  nUU   b  U(       a  UU    V+s/ s H  n+UU+   PM
     nn+Sn?U[T        -  [V        -  U-  n@[        [        UU5      5       GHþ  u  nu  n0n1U0b*  U1b'  [        U05      S:X  d  [        U05      [        U15      :w  a  M9  [+        [        U05      5       GH¬  n+U0U+   nAU1U+   nBUAS   (       a
  WBS   (       d  M$  U0U+S-
     nCU1U+S-
     nDU0U+S-   [        U05      -     nEU1U+S-   [        U15      -     nFUCS   (       a  WDS   (       a  Mr  WCS   (       a  WDS   (       a  Mˆ  [Y        WAS   6 nA[Y        WBS   6 nB[Y        WCS   6 nC[Y        WDS   6 nD[Y        WES   6 nE[Y        WFS   6 nFUAUC-
  nGUEUA-
  nHUBUD-
  nIUFUB-
  nJUGRZ                  UHR\                  -  UGR\                  UHRZ                  -  -
  nKUIRZ                  UJR\                  -  UIR\                  UJRZ                  -  -
  nL UK[_        UG5      [_        UH5      -  -  nKUL[_        UI5      [_        UJ5      -  -  nL[_        WK5      U?:”  d  [_        WL5      U?:”  a  GMš  WGRZ                  WHRZ                  -  UGR\                  UHR\                  -  -   nMWIRZ                  WJRZ                  -  UIR\                  UJR\                  -  -   nNUMS:  d  WNS:  a  GM  [_        WG5      [_        UG5      [_        WH5      -   -  nO[_        WI5      [_        UI5      [_        WJ5      -   -  nP[_        UOUP-
  5      nQ[_        UQ5      U?:  a  GMu  WAWB-   S-  nRWCWD-   S-  nSWEWF-   S-  nTURUS-
  nUUTUR-
  nVUURZ                  UVR\                  -  UUR\                  UVRZ                  -  -
  nW UW[_        UU5      [_        UV5      -  -  nW[_        WW5      XV-  -  U?::  a  GMü  WW[_        WU5      -  [_        WV5      -  nX[_        UUUV-   5      nY[_        UXUY-  5      nZUZW@:  a  GM;  WZWY-  n[U[U?:”  a  GMI  U?[_        WW5      U-  -  n#[        RO                  SWZW[UWWQ5        [        RO                  SU#5        U[        R`                  UUU   UU   UUU+U#S.4v •  GM¯     GM     U(       d  G	M   U[        Rb                  UU   UU   UUS.4v •  G	MC     G
MY     g s  sn
f s  sn
nf s  snf s  snf s  sn+f s  sn+f s  sn+f ! [:         a    U,R9                  S 5         GM  f = f! [P         a    Sn# GN(f = fs  sn+f ! [P         a     GMX  f = f! [P         a     GMj  f = f7f)Né
   g{®Gáz„?r   r   )rd   c                 ól   >• U c  g TU    n U c  g TU    b  TU    U   c  TU    n TU    b  TU    U   c  M  U $ r&   r^   )Úir,   Ú	glyphsetsÚparentss     €€r/   Úgrand_parentÚtest_gen.<locals>.grand_parentž   s\   ø€ Ø‰9ØØ�A‰JˆØ‰9ØØ�a‰jÑ$¨°1©°iÑ)@Ñ)HØ˜‘
ˆAð �a‰jÑ$¨°1©°iÑ)@Ó)Hàˆr2   zTesting glyph %s)ÚtypeÚmasterÚ
master_idxFT)rm   rn   ro   rO   )rm   Úmaster_1Úmaster_2Úmaster_1_idxÚmaster_2_idxÚvalue_1Úvalue_2)rm   Úpathrp   rq   rr   rs   rt   ru   )	rm   rv   Únoderp   rq   rr   rs   rt   ru   )rm   rp   rq   rr   rs   rt   ru   r`   )
rm   rO   rp   rq   rr   rs   rt   ru   Úreversedr`   r;   z;%s: actual size %g; threshold size %g, master sizes: %g, %ggñhãˆµøä>ztolerance %g)rm   rO   rp   rq   rr   rs   r`   gš™™™™™¹?é   z=kink: deviation %g; deviation_ratio %g; sin_mid %g; r_diff %g)rm   rO   rp   rq   rr   rs   rF   r`   )rm   rp   rq   rr   rs   )2ÚreprÚkeysÚfind_parents_and_orderÚlogÚinfor   r4   rG   ÚziprB   ÚInterpolatableProblemÚMISSINGr$   Ú	OPEN_PATHr!   Ú
PATH_COUNTÚ
NODE_COUNTÚNODE_INCOMPATIBILITYr   ÚCONTOUR_ORDERÚlistÚranger"   r   r   r   r	   rF   r6   Ú
ValueErrorr   ÚWRONG_START_POINTr   rH   rI   ÚUNDERWEIGHTÚ
OVERWEIGHTÚmaxr   ÚdebugÚZeroDivisionErrorr#   ÚDEFAULT_KINKINESS_LENGTHÚDEFAULT_KINKINESSÚcomplexÚrealÚimagÚabsÚKINKÚNOTHING)]ri   ÚglyphsÚnamesÚignore_missingr_   r`   ra   rb   rc   rd   Úgr-   Úorderrk   Ú
glyph_nameÚ	allGlyphsrM   ro   r'   Úhas_openr7   ÚopenÚ	matchingsÚm1idxÚglyph1Úm0idxÚglyph0Úm1Úm0ÚpathIxÚnodes1Únodes2ÚnodeIxÚn1Ún2Úthis_toleranceÚmatchingÚm0IsomorphismsÚm1IsomorphismsÚ	m0VectorsÚ	m1VectorsÚ
recording0Ú
recording1rh   ÚmidRecordingÚc0Úc1ÚrÚcontour0Úcontour1Úproposed_pointÚreverserO   ÚmidStatsÚ	midVectorÚm0VecÚm1VecÚsize0Úsize1ÚmidSizeÚ
overweightÚproblem_typeÚexpectedSizeÚtÚdeviation_thresholdÚpt0Úpt1Úpt0_prevÚpt1_prevÚpt0_nextÚpt1_nextÚd0_prevÚd0_nextÚd1_prevÚd1_nextÚsin0Úsin1Údot0Údot1Úr0Úr1Úr_diffÚmidÚmid_prevÚmid_nextÚmid_d0Úmid_d1Úsin_midÚcrossÚarc_lenÚ	deviationÚdeviation_ratiorj   s]   `                                                                                           @r/   Útest_genrå      sA  ùé € ð �BƒØ�TÑˆ	Ø�	Õ˜QÓÐÑÐÐØ�BƒØ�TÑˆ	Ø�	‹>Ðˆ>à×1¡yÓ1¢y !”d˜1–g¡yÑ1€Eà�~ñ %.ÔG¢I˜·}±}·°!’!±‘!¡IˆÑGä+Ø�9ñ�N€GˆUöô ˆ
Ü�‰Ð# ZÔ0ÙAJÓKÂ°X”U˜:Ö0Áˆ	ÐKÜ™yÓ>šy�e¨E—™yÑ>Ó?À1ÓDÙÜ3<Ü�	˜9 eÓ,ö4
Ñ/ˆJÑ/˜ ¨$ð ×!×!Þ%à"ä$9×$AÑ$AØ&*Ø*4ñðò ñ àˆHÜ% e×&8Ñ&8Ö9‘��DÞÙØ�àä 5× ?Ñ ?Ø"&Ø&0Ø#%ñ	ðô ñ	 :÷ ˆxÙñ=4
ð@ �FœS ›^Ñ+ˆ	äˆEØ˜uÑ%ˆFØ‰~ V×%5×%5ÙÙ  ¨
Ó3ˆEØ‰}ÙØ˜uÑ%ˆFØ‰~ V×%5×%5Ùð ×!Ñ!ˆBØ×!Ñ!ˆBÜ�2‹wœ#˜b›'Ó!àä 5× @Ñ @Ø$)¨%¡LØ$)¨%¡LØ(-Ø(-Ü#& r£7Ü#& r£7ñðò ñ à�R‹xÜ09¼#¸bÀ"»+Ö0FÑ,�FÑ,˜V VØ Ó'Ù Ü˜6“{¤c¨&£kÓ1à&ä(=×(HÑ(HØ(.Ø,1°%©LØ,1°%©LØ05Ø05Ü+.¨v«;Ü+.¨v«;ñ	ðò ñ !Ü,5´c¸&À&Ó6IÖ,JÑ(˜¡  RØ �8à *ä,A×,VÑ,VØ,2Ø,2Ø05°e±Ø05°e±Ø49Ø49Ø/1Ø/1ñ
!"ð#ò ñ %ó! -Kñ% 1GôP (:¸&À&Ó'IÑ$ˆN˜HØ 	Ó)àä 5× CÑ CØ$)¨%¡LØ$)¨%¡LØ(-Ø(-Ü#'¬¬c°(«mÓ(<Ó#=Ø#+Ø%3ñ	ðò ð $,�	˜%Ñ ð $×0Ñ0ˆNØ#×0Ñ0ˆNØ×+Ñ+ˆIØ×+Ñ+ˆIØ×*Ñ*ˆJØ×*Ñ*ˆJð ! Ñ'ˆHàÑ$®á=EÓ!FºX¸ .°Ô"3¹X�Ð!FÙ3;Ó<²8¨a˜Y qœ\±8�	Ð<Ù5=Ó>²X°˜j¨œm±X�
Ð>àˆLÜ˜j¨*Ö5‘��Bð.Ü$›�AÜ"¤>°"·(±(¸B¿H¹HÓ#EÓF�A”GØ ×'Ñ'¨Ö*ñ	 6ô -6Ü�N NÓ3÷-Ñ(�Ñ(�X˜xð Ñ$ØÑ'Ü˜8“}¨Ó)Ü˜8“}¬¨H«Ó5ñ ä:MØ˜F B¨	°8ó;Ñ7� °ð " IÓ-à"ä$9×$KÑ$KØ')Ø(-¨e©Ø(-¨e©Ø,1Ø,1Ø'(Ø'5Ø(/Ø)7ñðò ð. ' rÑ*�ç�7 	¨"¡¨aÑ 0°1Ñ 4¸)ÀB¹-ÈÑ:JÈQÑ:NÕOÜ,°dÑ;�HØ—N‘N 8Ô,ä 9¸(Ó C�Ià% b™M�EØ% b™M�EØ! !™H u¨Q¡xÑ/�EØ! !™H u¨Q¡xÑ/�EØ'¨™l¨Y°q©\Ñ9�Gä4=ä1×=Ñ=Ü1×<Ñ<ðö5Ñ0˜
 Lö &Ü+.¨u°eÓ+<˜LÙ$ä+/°¸±Ó+>˜LäŸ	™	ØYØ(Ø#Ø(Ø!Ø!ôö !+¨|¸iÑ/GÈ'ÐTXÉ.Ó/Xß(˜j¨T°LÀ9Ñ4LÑ-LÈwÕ-Vð3Þ#-Ø5AÀGÑ5K¡Nà5<¸|Ñ5K¡Nô  ŸI™I n°nÔEà *à,8Ø/1Ø05°e±Ø05°e±Ø49Ø49Ø1?ñ!"ð#ô ôA5ño-ðN —‘ˆBØ—‘ˆBð ˜ÑÑ+¶Ø%.¨uÒ%5Ó6Ò%5 �b˜”eÑ%5�Ð6àˆAàÔ/Ñ/Ô2CÑCÀiÑOð  ô -6´c¸"¸b³k×,BÑ(�Ñ(�X˜xàÑ$ØÑ'Ü˜8“}¨Ó)Ü˜8“}¬¨H«Ó5ñ ô
 œs 8›}×-�AØ" 1™+�CØ" 1™+�CØ˜qŸ6¨¨Q¯á Ø'¨¨A©™�HØ'¨¨A©™�HØ'¨¨Q©´#°h³-Ñ(?Ñ@�HØ'¨¨Q©´#°h³-Ñ(?Ñ@�Hà —{ x°§{á Ø —{ x°§{á ä! 3 q¡6Ð*�CÜ! 3 q¡6Ð*�CÜ&¨°©Ð4�HÜ&¨°©Ð4�HÜ&¨°©Ð4�HÜ&¨°©Ð4�Hð " H™n�GØ&¨™n�GØ! H™n�GØ&¨™n�Gà"Ÿ<™<¨'¯,©,Ñ6¸¿¹ÈÏÉÑ9TÑT�DØ"Ÿ<™<¨'¯,©,Ñ6¸¿¹ÈÏÉÑ9TÑT�Dð!Ø¤ G£¬s°7«|Ñ ;Ñ;˜Ø¤ G£¬s°7«|Ñ ;Ñ;˜ô ˜4“y 1“}¬¨D«	°A«â ð #Ÿ<™<¨'¯,©,Ñ6¸¿¹ÈÏÉÑ9TÑT�DØ"Ÿ<™<¨'¯,©,Ñ6¸¿¹ÈÏÉÑ9TÑT�DØ˜a“x 4¨!£8â ô ˜W›¬¨W«¼¸G»Ñ)DÑE�BÜ˜W›¬¨W«¼¸G»Ñ)DÑE�BÜ   b¡›\�FÜ˜6“{ Q“â à ™9¨™/�CØ (¨8Ñ 3°qÑ8�HØ (¨8Ñ 3°qÑ8�Hà  8™^�FØ%¨™^�Fà$Ÿk™k¨F¯K©KÑ7¸&¿+¹+ÈÏÉÑ:SÑS�Gð!Ø¤3 v£;´°V³Ñ#<Ñ<˜ô
 ˜7“| yÑ'<Ñ=ÀÓBâ ð $¤c¨&£kÑ1´C¸³KÑ?�EÜ! &¨6¡/Ó2�GÜ # E¨G¡OÓ 4�IØ Ð#6Ó6Ú Ø&/°'Ñ&9�OØ&¨Ó*Ú à%&¬#¨g«,¸Ñ*BÑ%C�Nä—I‘IØWØ!Ø'ØØôô —I‘I˜n¨nÔ=à"ä$9×$>Ñ$>Ø')Ø(-¨e©Ø(-¨e©Ø,1Ø,1Ø%&Ø)7ñ	ðõ ôE .ñ -C÷D ‰xàä 5× =Ñ =Ø$)¨%¡LØ$)¨%¡LØ(-Ø(-ñð	õ 	ô] òO ùò+ 2ùó
 Hùò$ LùÚ>ùò\ "GùÚ<ùÚ>øô "ó .à ×'Ñ'¨×-Ð-ð.ûôp $5ó 3Ø12£ð3üò0 7øôt -ó !Û ð!ûô@ -ó !Û ð!üs6  „>m<Ák9Ám<Á""k>Â7m<Â;lÃm<Ãl	
Ã&l	
Ã,B)m<ÆE m<Ë=Cm<ÏlÏ+m<Ï1lÐ m<ÐlÐm<Ð,A	lÑ5Bm<Ôm<Ô-Cm<Ø
m<Øm Ø m<Ø!m Ø&A m<ÚmÚF=m<á4mâEm<çm*ç3Cm<ëAm<ìl=	ì8m<ì<l=	ì=m<í mím<ímím<í
m'í"m<í&m'í'm<í*
m9í4m<í8m9í9m<c                  ór   • [        [        5      n[        U 0 UD6 H  u  p4X#   R                  U5        M     U$ r&   )r   r‡   rå   r6   )ÚargsÚkwargsÚproblemsr,   Úproblems        r/   Útestrë   I  s9   € äœ4Ó €HÜ&¨Ð7°Ô7Ñˆ	ØÑ×"Ñ" 7Ö+ñ 8à€Or2   c                 óv   • X;   a  g X    X'   [        X0   S/ 5       H  n[        UR                  XU5        M     g )NÚ
components)r5   ÚrecursivelyAddGlyphÚ	glyphName)r,   r-   Ú
ttGlyphSetÚglyfÚ	components        r/   rî   rî   Q  s>   € ØÓØØ$Ñ/€HÑä˜T™_¨l¸BÖ?ˆ	Ü˜I×/Ñ/°ÀtÖLò @r2   c                 ó|   • [         R                  R                  U 5      nU(       a  [         R                  " USS9  U $ )NT)Úexist_ok)Úosrv   ÚdirnameÚmakedirs)rv   rö   s     r/   Úensure_parent_dirrø   Z  s*   € Ü�g‰g�o‰o˜dÓ#€GÞÜ
�Š�G dÒ+Ø€Kr2   c                 ó¬*  ^^b^c• SSK nSSKnUR                  S[        R                  S9nUR                  SSSS9  UR                  S	S
SS9  UR                  SS[        S[        -  S9  UR                  SS[        S[        -  S9  UR                  SS
SS9  UR                  SSSS9  UR                  SSSS9  UR                  SSSS9  UR                  SS
SS9  UR                  SSSS9  UR                  SS
SS9  UR                  SS [        S!S"S#9  UR                  S$S%[        S&S'S(9  UR                  S)S*S
S+S9  UR                  S,S
S-S9  UR                  U 5      n SS.KJn  U" U R                  (       a  S/OS0S19  U R                  (       a  U" S2S19  U R                  (       a  U R                  R!                  5       OSnSS3KJn  / n/ n/ n	['        5       n
[(        n[+        U R,                  5      n[/        U R,                  5      S4:X  GaI  SnU R,                  S   R1                  S55      (       Gav  SS6KJn  UR7                  U R,                  S   5      nUR8                   Vs/ s H  oÿR:                  PM     snU l        UR8                   Vs/ s H  oÿR<                  PM     n	nUR>                   Vs1 s H"  n[A        US75      (       a  M  URB                  iM$     n
nUR>                   Vs0 s HC  nURB                  U
;  d  M  URB                  URD                  URF                  URH                  4_ME     nnUR>                   Vs0 s H  nURB                  URJ                  _M     snmcURM                  5        V^Vs0 s H  u  mnT[+        UcU4S8 jU 5       5      _M     nnnGO­U R,                  S   R1                  S95      (       Ga{  SS:K'J(nJ)n  U" U R,                  S   5      nURT                  nU" U5      nUR8                   Vs/ s H  nURV                  PM     nnU Vs/ s H4  nURX                  RZ                  < S;URX                  R\                  < 3PM6     nn/ U l        UR8                   Vs/ s H  oÿR<                  PM     n	nUR>                   Vs0 s H1  nURB                  URD                  URF                  URH                  4_M3     nnUR>                   Vs0 s H  nURB                  URJ                  _M     snmcURM                  5        V^Vs0 s H  u  mnT[+        UcU4S< jU 5       5      _M     nnnGOU R,                  S   R1                  S=5      (       d$  U R,                  S   R1                  S>5      (       GaÇ  SS?K/J0n  U" U R,                  S   5      nUS@   Rb                  nUSA   n0 mbUR>                   H4  nURd                  URf                  URh                  SB.TbURj                  '   M6     SCnSDU;   aŸ  USD   n[m        URn                  SES5      (       a  Tb Vs0 s H
  nUSFSS4SB._M     snmbSGnOcURp                  RM                  5        HE  u  n n!TbU    Rs                  5       n"U!RM                  5        H  u  n#n$[u        U#U"5      TbU    U$'   M     MG     0 n%[w        [x        5      n&SHU;   aÙ  USH   n'USI   n(Uc#  [{        U'R|                  R                  5       5      nU H¡  n)U'R|                  U)    H‹  n*0 n+/ n,[{        U*R>                  RM                  5       5       H$  u  nn-U-S4   U+U'   U,R�                  UU-S4   45        M&     [+        U,5      n.U.U%;  a  URƒ                  U+SGSCSJ9U%U.'   […        U)U&U.   U%U.   U(5        M�     M£     GOàSKU;   GaÙ  USA   R>                  n/USK   R†                  Rˆ                  S   n0U0RŠ                  n1Uc  [{        U1R                  5       5      nU GH  n)U1U)   n2U2RŒ                  n3[m        U3SLS5      1n4[m        U3SLS5      n5Sn6[�        U2R�                  5       H<  n7U7SM:X  a  U4R“                  U55        OU7SL:X  a  [•        U6[–        5      (       d   eU6n5U7n6M>     [A        U3SN5      (       d  Mš  U3R˜                  Rš                  n8U4 HÉ  n5U8Rœ                  U5   n9U9Rž                   H§  n:U8R                   R¢                  U:   n;0 n+/ n,[�        U;R¤                  5       H9  u  n<nU/U<   Rj                  nUR¦                  n-U-U+U'   U,R�                  UU-45        M;     [+        U,5      n.U.U%;  a  URƒ                  U+SGSCSJ9U%U.'   U&U.   n=U%U.   U)   U=U)'   M©     MË     GM‚     SO/nURƒ                  5       /n0 /n	[{        TbR                  5       5       Vs0 s H  nUSB_M     nn[{        U&R                  5       SP SQ9 Ho  n.SRSSR©                  Ub4ST jU. 5       5      -   SR-   n>U(       a  U>SU-  n>UR�                  U>5        UR�                  U&U.   5        U	R�                  [y        U.5      5        Mq     SGU lU        / U l        U	(       d  U V?s/ s H  n?0 PM     n	n?U R,                   H¸  n@U@R1                  SV5      (       aG  SSWKVJWnA  UA" W@5      n[±        5       nBUR³                  UB5        UBRb                  nUR�                  U5        O.SS?K/J0n  U" W@5      nUS@   Rb                  nUR�                  U5        UR�                  U" W@5      Rµ                  SXS45      S   5        Mº     [/        U5      SY:  a  [¶        R¹                  SZ5        g/ n&U H[  n[A        US[5      (       a  URƒ                  5       n=OUn=U&R�                  U=R                  5        Vs0 s H	  nUU=U   _M     sn5        M]     U RB                  (       a€  ['        U RB                  5      nC[»        UU&5       V>V=s/ s H  u  n>n=U>WC;   d  M  U=PM     n&n>n=[»        X‰5       V>V#s/ s H  u  n>n#U>WC;   d  M  U#PM     n	n>n#U V>s/ s H  n>U>WC;   d  M  U>PM     nn>U(       d?  [{        ['        U& V=VDs/ s H  n=U=R                  5         H  nDUDPM     M     snDn=5      5      n['        U5      nEU& H8  n=['        U=R                  5       5      nFWEUF-
  nGUG(       d  M*  WG H  nDSU=UD'   M
     M:     U	 V,VVHs/ s H@  n,0 [½        U,W5      EU,RM                  5        VVHs0 s H  u  nnHUU
;   d  M  UWH_M     snHnEPMB     n	nn,nHU R¾                  =(       d    [        nIU RÀ                  b  U RÀ                  O[        nJ [¶        RY                  S\[/        U&5      5        [¶        RY                  S][Ã        U	5      5        [Å        U&UUU	UU Rª                  WIUJU RÆ                  U
S^9
nK[w        [È        5      nLU RÊ                  c  URÌ                  O[Ï        [Ñ        U RÊ                  5      S_5      nU RÒ                  (       Gd.  U RÔ                  (       a?  SSKjnMWK H  u  n)nNWLU)   R�                  UN5        M     [×        WMRÙ                  WL5      US`9  GOþSnOWK GHÔ  u  n)nPWLU)   R�                  UP5        U)WO:w  a  [×        SaU) Sb3US`9  U)nOSnQScWP;   a  WPSc   4O	WPSd   UPSe   4nRURWQ:w  a4  SfWP;   a  WPSf   4O	WPSg   UPSh   4nS[×        SiSjR©                  US5      -  US`9  WRnQWPSk   [Ú        RÜ                  :X  a  [×        SlWPSf   -  US`9  M¬  WPSk   [Ú        RÞ                  :X  a  [×        SmWPSf   -  US`9  MÕ  WPSk   [Ú        Rà                  :X  a   [×        SnWPSo   UPSg   UPSp   UPSh   4-  US`9  GM  WPSk   [Ú        Râ                  :X  a$  [×        SqWPSr   UPSo   UPSg   UPSp   UPSh   4-  US`9  GMG  WPSk   [Ú        Rä                  :X  a(  [×        SsWPSt   UPSr   UPSo   UPSg   UPSp   UPSh   4-  US`9  GM†  WPSk   [Ú        Ræ                  :X  a)  [×        SuWPSo   < SvUPSg   < SjUPSp   < SvUPSh   < 3US`9  GMÆ  WPSk   [Ú        Rè                  :X  a(  [×        SwWPSx   UPSo   UPSg   UPSp   UPSh   UPSy   4-  US`9  GM  WPSk   [Ú        Rê                  :X  a  [×        SzWPSx   UPSg   UPSh   4-  US`9  GM8  WPSk   [Ú        Rì                  :X  a  [×        S{WPSx   UPSg   UPSh   4-  US`9  GMk  WPSk   [Ú        Rî                  :X  a   [×        S|WPSx   UPS}   UPSg   UPSh   4-  US`9  GM¢  WPSk   [Ú        Rð                  :X  d  GM¼  [×        S~WPSg   < SUPSh   < 3US`9  GM×     O WK H  u  n)nNWLU)   R�                  UN5        M     [ó        WL5      nLS€ Hò  nP[m        U UP5      nTUTc  M  [¶        RY                  S�WPRõ                  5       WT5        S4S‚K{J|nUJ}nV  UPSƒ:X  a  WUOWVnWUW" [Ñ        WT5      U&US„9 nXUXRý                  UWIWJS…9  WL(       a  WXRÿ                  WL5        WXGR                  WL5        UL(       d"  U RÒ                  (       d  WXGR                  5         WL(       a"  WXGR                  5         UXGR                  5         SSS5        Mô     U GR                  (       GaÕ  [¶        RY                  S†U GR                  5        S4S‡K{J…nY  / nZ0 n[UY" UZU&US„9 n\U\Rý                  USCWIWJSˆ9  WLRM                  5        H(  u  n]n^U]W[[/        WZ5      '   W\GR                  U]U^0SCSCS‰9  M*     WL(       d"  U RÒ                  (       d  W\GR                  5         SSS5        SSK†n_[Ï        [Ñ        U GR                  5      SŠ5       nUGR                  S‹5        UGR                  SŒ5        UGR                  S�5        [�        WZ5       H�  u  n`n\U`W[;   a)  UGR                  SŽW[W`    S�3GR                  S�5      5        UGR                  S‘GR                  S�5      5        UGR                  W_GR                  W\5      5        UGR                  S’5        UGR                  S“5        MŸ     UGR                  S”5        SSS5        O WL(       a  WL$ gs  snf s  snf s  snf s  snf s  snf s  snnf s  snf s  snf s  snf s  snf s  snf s  snnf s  snf s  snf s  sn?f s  snf s  sn=n>f s  sn#n>f s  sn>f s  snDn=f s  snHnf s  snHnn,f ! , (       d  f       GMo  = f! , (       d  f       GNÅ= f! , (       d  f       N³= f! G[         a2  naUa=GR                  U-  sl‹        [¶        GR                  Ua5        e SnaAaff = f)•z/Test for interpolatability issues between fontsr   Nzfonttools varLib.interpolatable)Údescriptionz--glyphsÚstorez&Space-separate name of glyphs to check)ÚactionÚhelpz
--show-allÚ
store_truez3Show all glyph pairs, even if no problems are foundz--tolerancez,Error tolerance. Between 0 and 1. Default %s)rü   rm   rý   z--kinkinessz)How aggressively report kinks. Default %sz--jsonzOutput report in JSON formatz--pdfzOutput report in PDF formatz--psz"Output report in PostScript formatz--htmlzOutput report in HTML formatz--quietz%Only exit with code 1 or 0, no outputz--outputz3Output file for the problem report; Default: stdoutz--ignore-missingz<Will not report glyphs missing from sparse masters as errorsÚinputsÚFILEÚ+zSInput a single variable font / DesignSpace / Glyphs file, or multiple TTF/UFO files)Úmetavarrm   Únargsrý   z--nameÚNAMEr6   zGName of the master to use in the report. If not provided, all are used.)r  rm   rü   rý   z-vz	--verbosezRun verbosely.z--debugzRun with debug output.)ÚconfigLoggerÚINFOÚWARNING)ÚlevelÚDEBUG)Úbasenamer   z.designspace)ÚDesignSpaceDocumentÚminimumc              3   óT   >#   • U  H  n[        U[        TT   5      5      v •  M     g 7fr&   ©r   Údict©Ú.0ÚvÚaxis_mappingsÚks     €€r/   Ú	<genexpr>Úmain.<locals>.<genexpr>Ú  ó(   øé € ÐSÒPRÈ1Ô+¨A¬t°MÀ!Ñ4DÓ/E×FÐFÒPRùó   ƒ%()z.glyphsz.glyphspackage)ÚGSFontÚto_designspaceÚ-c              3   óT   >#   • U  H  n[        U[        TT   5      5      v •  M     g 7fr&   r  r  s     €€r/   r  r  í  r  r  z.ttfz.otf)ÚTTFontÚheadÚfvar)r?   r   r   FÚavarÚVarStorer?   TÚgvarrñ   )ÚlocationÚ
normalizedÚrecalcBoundsÚCFF2ÚvsindexÚblendÚvstorez''c                 ó   • [        U 5      U 4$ r&   )r4   )r  s    r/   Ú<lambda>Úmain.<locals>.<lambda>e  s   € ÄCÈÃFÈAÁ;r2   )ÚkeyÚ'Ú c           
   3   óh   >#   • U  H'  u  pU< S [        [        UTU   5      S5      < 3v •  M)     g7f)Ú=é   N)r   r   )r  r  r  ÚaxisMappings      €r/   r  r  h  s;   øé € ð 	ò %-™D˜Aó Ü-Ü 2°1°kÀ!±nÓ EÀrõõò %-ùs   ƒ/2z (normalized)z.ufo)Ú	UFOReaderÚ.ry   z9Font file does not seem to be variable. Nothing to check.ÚgetGlyphSetzRunning on %d glyphsetszLocations: %s)	r˜   r™   r_   rb   rš   r`   ra   rc   rd   Úw)ÚfilezGlyph z was not compatible:ro   rr   rs   rn   rp   rq   z  Masters: %s:z, rm   z"    Glyph was missing in master %sz'    Glyph has an open path in master %sz*    Path count differs: %i in %s, %i in %srt   ru   z5    Node count differs in path %i: %i in %s, %i in %srv   z7    Node %o incompatible in path %i: %s in %s, %s in %srw   z    Contour order differs: z in zD    Contour %d start point differs: %s in %s, %s in %s; reversed: %srO   rx   z3    Contour %d interpolation is underweight: %s, %sz2    Contour %d interpolation is overweight: %s, %sz'    Contour %d has a kink at %s: %s, %srF   z    Showing z and )ÚpsÚpdfzWriting %s to %s)ÚInterpolatablePSÚInterpolatablePDFr9  )ri   r™   )r`   ra   zWriting HTML to %s)ÚInterpolatableSVG)Úshow_tolerancer`   ra   )r>  Úshow_page_numberÚwbs   <!DOCTYPE html>
sN   <html><body align="center" style="font-family: sans-serif; text-color: #222">
s6   <title>fonttools varLib.interpolatable report</title>
z
<h1>Glyph z</h1>
zutf-8z$<img src='data:image/svg+xml;base64,s   ' />
s   <hr>
s   </body></html>
)�ÚargparseÚsysÚArgumentParserÚmainÚ__doc__Úadd_argumentÚfloatÚDEFAULT_TOLERANCEr‘   ÚstrÚ
parse_argsÚ	fontToolsr  ÚverboserŽ   r˜   ÚsplitÚos.pathr
  ÚsetÚDEFAULT_UPEMÚtuplerÿ   r4   ÚendswithÚfontTools.designspaceLibr  ÚfromfileÚsourcesrv   r#  ÚaxesÚhasattrr'   r  ÚdefaultÚmaximumÚmapÚitemsÚ	glyphsLibr  r  ÚupmÚfontr~   Ú
familyNameÚ	styleNameÚfontTools.ttLibr  Ú
unitsPerEmÚminValueÚdefaultValueÚmaxValueÚaxisTagr5   ÚtableÚsegmentsÚcopyr   r   r  ÚsortedÚ
variationsr{   r6   r6  rî   ÚcffÚtopDictIndexÚCharStringsÚprivaterG   ÚprogramÚaddÚ
isinstanceÚintr)  Ú
otVarStoreÚVarDataÚVarRegionIndexÚVarRegionListÚRegionÚVarRegionAxisÚ	PeakCoordÚjoinrš   ÚfontTools.ufoLibr4  r   ÚreadInfoÚrsplitr}   Úwarningr   r   r`   ra   r   rå   rc   r‡   ÚoutputÚstdoutr    rø   ÚquietÚjsonÚprintÚdumpsr€   r�   r‚   rƒ   r„   r…   r†   rŠ   r‹   rŒ   r–   r—   Úsort_problemsÚupperÚinterpolatablePlotr;  r<  Úadd_title_pageÚadd_summaryÚadd_problemsÚdraw_cupcakeÚ	add_indexÚadd_table_of_contentsÚhtmlr=  Úbase64ÚwriteÚencodeÚ	b64encodeÚ	Exceptionrç   Úerror)drç   rA  rB  Úparserr  r˜   r
  Úfontsr™   r_   rd   rb   Úoriginal_args_inputsÚdesignspacer  rn   ÚaÚaxis_triplesr  Úvvr  r  ÚgsfontÚsourceÚfr  r^  r  Úaxisr$  r   Útagrf  rh  ÚfvarMappingr#  rF   ÚttGlyphSetsri   r"  rñ   r,   ÚvarÚlocDictÚlocÚvalÚlocTupleÚfvarAxesÚcff2ÚcharstringsÚcsro  Ú	vsindicesr'  Úlast_oprP   ÚvarStoreÚvarDataÚregionIndexÚregionÚ	axisIndexr-   r'   Ú_Úfilenamer4  r~   Úaccepted_namesÚgnÚ	glyphsSetÚglyphSetGlyphNamesÚdiffr  r`   ra   Úproblems_genré   rƒ  rê   Úlast_glyphnameÚpÚlast_master_idxsÚmaster_idxsÚmaster_namesrQ   r;  r<  ÚPlotterClassÚdocr=  ÚsvgsÚglyph_startsÚsvgrM   Úglyph_problemsr�  rh   rR   r3  r  sd                     `                                                                               @@r/   rD  rD  a  sW  ú€ ãÛà×$Ñ$Ø)Ü—L‘Lð %ð €Fð ×ÑØØØ5ð ñ ð
 ×ÑØØØBð ñ ð
 ×ÑØØÜØ;Ô>OÑOð	 ñ ð ×ÑØØÜØ8Ô;LÑLð	 ñ ð ×ÑØØØ+ð ñ ð
 ×ÑØØØ*ð ñ ð
 ×ÑØØØ1ð ñ ð
 ×ÑØØØ+ð ñ ð
 ×ÑØØØ4ð ñ ð
 ×ÑØØØBð ñ ð
 ×ÑØØØKð ñ ð
 ×ÑØØÜØØbð ñ ð ×ÑØØÜØØVð ñ ð ×Ñ˜˜k°,ÐEUÐÑVØ
×Ñ˜	¨,Ð=UÐÑVà×Ñ˜TÓ"€Då&á $§,§,™°IÒ?Ø‡z‡zÙ˜7Ò#à$(§K§KˆT�[‰[×ÑÔ °T€Få à€EØ€EØ€IÜ“E€MÜ€Dä  §¡Ó-Ðä
ˆ4�;‰;Ó˜1ÔØˆØ�;‰;�q‰>×"Ñ" >×2Ò2ÝDà-×6Ñ6°t·{±{À1±~ÓFˆKØ5@×5HÒ5HÓIÒ5H¨6Ÿ;œ;Ñ5HÑIˆDŒKØ7B×7JÒ7JÓKÒ7J¨VŸœÑ7JˆIÐKà +× 0Ò 0óÚ 0˜1¼ÀÀ9×8M“�—”Ñ 0ð ð ð
 %×)Ò)óâ)�AØ—6‘6 Ñ.ó :�—‘˜Ÿ™ A§I¡I¨q¯y©yÐ9Ò9Ù)ð ð ð
 5@×4DÒ4DÓEÒ4D¨q˜QŸV™V Q§U¡Uš]Ñ4DÑEˆMð *×/Ñ/Ô1õâ1‘E�A�rð ”5ÕSÑPRÓSÓSÒSÙ1ð ñ ‰Lð
 �[‰[˜‰^×$Ñ$Ð%B×CÒCß8á˜DŸK™K¨™NÓ+ˆFØ—:‘:ˆDÙ(¨Ó0ˆKØ/:×/BÒ/BÓCÒ/B V�V—[”[Ñ/BˆEÐCÙNSÓTÊeÈ §¡× 1Ô 1°1·6±6×3CÓ3CÓDÉeˆEÐTØˆDŒKØ7B×7JÒ7JÓKÒ7J¨VŸœÑ7JˆIÐKàCN×CSÒCSóÚCS¸a�—‘˜Ÿ™ A§I¡I¨q¯y©yÐ9Ò9ÑCSð ð ð 5@×4DÒ4DÓEÒ4D¨q˜QŸV™V Q§U¡Uš]Ñ4DÑEˆMð *×/Ñ/Ô1õâ1‘E�A�rð ”5ÕSÑPRÓSÓSÒSÙ1ð ñ ‰Lð
 �[‰[˜‰^×$Ñ$ V×,Ñ,°·±¸A±×0GÑ0GÈ×0OÒ0OÝ.ñ ˜$Ÿ+™+ a™.Ó)ˆDØ˜‘<×*Ñ*ˆDà˜‘<ˆDØˆKØŸ	œ	�àŸ™Ø×(Ñ(Ø—}‘}ñ-�˜DŸL™LÓ)ñ "ð ˆJØ˜‹~Ø˜F‘|�Ü˜4Ÿ:™: z°4×8Ñ8ÙHSÓ"TÊÀ 3¨R°A¸!Ñ(<Ò#<ÉÑ"T�KØ!%‘Jà-1¯]©]×-@Ñ-@Ö-BÑ)˜ Ø&1°'Ñ&:×&?Ñ&?Ó&A˜Ø/7¯~©~Ö/?™O˜H eÜ:LØ (¨+ó;˜K¨Ñ0°Ó7ó 0@ñ .Cð ˆKÜ#¤DÓ)ˆIà˜‹~Ø˜F‘|�Ø˜F‘|�à‘>Ü# D§O¡O×$8Ñ$8Ó$:Ó;�FÛ!'�IØ#Ÿ™¨yÔ9˜Ø"$˜Ø ˜Ü(.¨s¯x©x¯~©~Ó/?Ö(@™H˜C Ø+.¨q©6˜G C™LØŸJ™J¨¨S°©V }Ö5ñ )Aô $)¨£:˜Ø#¨;Ó6Ø48×4DÑ4DØ)0¸TÐPUð 5Eð 5˜K¨Ñ1ô ,Ø% y°Ñ':¸KÈÑ<QÐSWöó  :ó "(ð$ ˜4”Ø ™<×,Ñ,�Ø˜F‘|×'Ñ'×4Ñ4°QÑ7�Ø"×.Ñ.�à‘>Ü# K×$4Ñ$4Ó$6Ó7�FÜ!'�IØ$ YÑ/�BØ Ÿj™j�Gô ")¨°)¸QÓ!?Ð @�IÜ% g¨y¸!Ó<�GØ�Gô (¨¯
©
Ö3˜Ø ›=Ø%ŸM™M¨'Õ2Ø 9›_Ü#-¨g´s×#;Ñ#;Ð;Ð#;Ø&-˜GØ"$šñ 4ô # 7¨H×5Ñ5Ù à&Ÿ~™~×8Ñ8�HÛ#,˜Ø"*×"2Ñ"2°7Ñ";˜Ø+2×+AÔ+A˜KØ%-×%;Ñ%;×%BÑ%BÀ;Ñ%O˜Fà&(˜GØ"$˜CÜ3<¸V×=QÑ=QÖ3R¡ 	¨4Ø&.¨yÑ&9×&AÑ&A Ø&*§n¡n Ø/2 ¨¡Ø #§
¡
¨C°¨:Ö 6ñ	 4Sô (-¨S£z˜HØ'¨{Ó:Ø8<×8HÑ8HØ-4Ø/3Ø16ð 9Ið 9" ¨HÑ 5ð (1°Ñ':˜HØ2=¸hÑ2GÈ	Ñ2R˜H YÓ/ó) ,Bô $-ñ/ "(ð^ �FˆEØ×%Ñ%Ó'Ð(ˆEØ˜ˆIÜ4:¸;×;KÑ;KÓ;MÔ4NÓOÒ4N¨q˜A˜{šNÑ4NˆLÐOÜ" 9§>¡>Ó#3Ñ9NÔO�àØ—h‘hô 	ñ %-ó	ó 	ñ
ð ñð ö Ø˜OÑ+�DØ—‘˜TÔ"Ø—‘˜Y xÑ0Ô1Ø× Ñ ¤ h£Ö0ñ' Pð* #'ˆDÔØˆDŒKæÙ!&Ó'¢˜A“R¡ˆ	Ð'à—K”KˆØ×Ñ˜V×$Ñ$Ý2á˜XÓ&ˆDÜ"Ó$ˆDØ�M‰M˜$ÔØ—?‘?ˆDØ�L‰L˜Õå.á˜(Ó#ˆDØ˜‘<×*Ñ*ˆDØ�L‰L˜Ôà�‰‘X˜hÓ'×.Ñ.¨s°AÓ6°qÑ9Ö:ñ!  ô$ ˆ5ƒz�Aƒ~Ü�‰ÐOÔPØà€IÛˆÜ�4˜×'Ñ'Ø×'Ñ'Ó)‰HàˆHØ×Ñ°(·-±-´/ÓB²/¨Q˜!˜X a™[š.±/ÑBÖCñ ð ‡y‡yÜ˜TŸY™Y›ˆô #& e¨YÔ"7ô
â"7‘��hØ�~Ñ%÷ Ù"7ð 	ñ 
ô #& eÔ"7ô
â"7‘��hØ�~Ñ%÷ Ù"7ð 	ñ 
ñ
 #(ÓB¢%˜$¨4°>Ñ+A—¡%ˆÐBæÜœ±	ÔT²	 HÀHÇMÁMÇO¸b›RÁO™R±	ÒTÓUÓVˆä�F“€IÛˆÜ  §¡£Ó1ÐØÐ-Ñ-ˆßˆ4Û�Ø#�˜“ó ñ	 ñ õò
 ˆCð		
Ü  \Ó2ð	
à #§	¡	¤ÔB¢™˜˜1¨q°MÑ/A‹tˆq�!Št¡ÒBó	
ñ ð ò ð —‘×3Ô"3€IØ"&§.¡.Ñ"<�—’ÔBS€IðmÜ�‰Ð*¬C°	«NÔ;Ü�‰�¤'¨)Ó"4Ô5ÜØØØØØØ×.Ñ.ØØØ—]‘]Ø'ñ
ˆô œtÓ$ˆð �{‰{Ñ"ð �JŠJäÔ'¨¯©Ó4°cÓ:ð 	
ð �z�zˆzØ�y�yÛã*6Ñ&�I˜wØ˜YÑ'×.Ñ.¨wÖ7ñ +7ô �d—j‘j Ó*°Ô3à!%�Ü$0‘L�I˜qØ˜YÑ'×.Ñ.¨qÔ1à  NÓ2Ü  y kÐ1EÐFÈQÒOØ)2˜Ø+/Ð(ð (¨1Ó,ð ˜<™Ñ*à Ñ/°°>Ñ1BÐCð  ð
 #Ð&6Ó6ð  (¨1›}ð ˜x™[™Nà"# J¡-°°:±Ð!?ð %ô
  °$·)±)¸LÓ2IÑIÐPQÒRØ+6Ð(à˜‘yÔ$9×$AÑ$AÓAÜØ@À1ÀXÁ;ÑNÐUVôð ˜6™Ô&;×&EÑ&EÓEÜØEÈÈ(ÉÑSØ!"ôð ˜6™Ô&;×&FÑ&FÓFÜØHà ! )¡Ø ! *¡Ø ! )¡Ø ! *¡ð	ñð "#õ	ð ˜6™Ô&;×&FÑ&FÓFÜØSà ! &¡	Ø ! )¡Ø ! *¡Ø ! )¡Ø ! *¡ðñð "#õ
ð ˜6™Ô&;×&PÑ&PÓPÜØUà ! &¡	Ø ! &¡	Ø ! )¡Ø ! *¡Ø ! )¡Ø ! *¡ðñð "#õð ˜6™Ô&;×&IÑ&IÓIÝð !" )¤Ø ! *¤Ø ! )¤Ø ! *£ðð "#õ	ð ˜6™Ô&;×&MÑ&MÓMÜØbà ! )¡Ø ! )¡Ø ! *¡Ø ! )¡Ø ! *¡Ø ! *¡ðñð "#õð ˜6™Ô&;×&GÑ&GÓGÜØQà ! )¡Ø ! *¡Ø ! *¡ðñð "#õð ˜6™Ô&;×&FÑ&FÓFÜØPà ! )¡Ø ! *¡Ø ! *¡ðñð "#õð ˜6™Ô&;×&@Ñ&@Ó@ÜØEà ! )¡Ø ! '¡
Ø ! *¡Ø ! *¡ð	ñð "#õ	ð ˜6™Ô&;×&CÑ&CÖCÝð !" *¤Ø ! *£ðð
 "#õòw %1óH '3Ñ"�	˜7Ø˜Ñ#×*Ñ*¨7Ö3ñ '3ô ! Ó*ˆãˆAÜ˜$ Ó"ˆCØ‰{ÙÜ�H‰HÐ'¨¯©«°CÔ8ßOà/0°D«yÑ+Ð>OˆLáÜ! #Ó&°)À5òàØ×"Ñ"Ø(°IÈð #ñ ö Ø—O‘O HÔ-Ø× Ò  Ô*Þ¨¯
¯
Ø×$Ò$Ô&ÞØ—M’M”OØ×-Ò-Ô/÷ñ ñ ð0 �9�9‰9Ü�H‰HÐ)¨4¯9ª9Ô5Ý=àˆDØˆLÙ" 4°9ÀEÒJÈcØ×"Ñ"Ø(Ø#(Ø'Ø'ð	 #ñ ð .6¯^©^Ö-=Ñ)�E˜>Ø.3�L¤ T£Ñ+Ø×$Ò$Ø Ð/Ø',Ø).ð %ó ñ .>ö  ¨¯
¯
Ø×$Ò$Ô&÷ Kó" äÔ'¨¯	ª	Ó2°DÔ9¸QØ—’Ð,Ô-Ø—’Øfôð —’ÐRÔSÜ'¨žo‘F�A�sØ˜LÓ(ØŸš *¨\¸!©_Ð,=¸WÐ E× LÒ LÈWÓ UÔVØ—G’GÐB×IÒIÈ'ÓRÔSØ—G’G˜F×,Ò,¨SÓ1Ô2Ø—G’G˜IÔ&Ø—G’G˜IÖ&ñ .ð —’Ð+Ô,÷ :Ð9ð3 öZ Øˆð ùòG JùÚKùòùòùò
 Fùóùò DùÚTùâKùòùò Fùóùò2 #Uùò~ Pùò4 (ùò< Cùó
ùó

ùò
 Cùó Uùó Cùô÷z÷ ú÷* KÖJú÷& :Õ9ûõ ó Ø	�‹Ð&Ñ&�Ü�	Š	�!ŒØûðúsh  É%AQ*ÊAQ/Ê5AQ4ËAQ4Ë.AQ9Ì2AQ9Í!AQ>Î $ARÐAR	Ð(;ARÑ:ARÒ8ARÓ'!ARÔ$AR"Ø1AR(æ-AR-é!AR2î$AR7
ï4AR<ðAR<ðASð-ASð:
ASñASñ&$ASó%&ASôASôASô#	ASõ)OAT ÁD6B'AT ÁGBAS ÁI+AAT ÁJ=A8AS3ÁL5,AT ÁM!C5ATÁQAT ÁSASÁS 
AS0	ÁS*	AT ÁS3
ATÁS=AT ÁT
ATÁTAT ÁTAT ÁTAUÁT!-AUÁUAUÚ__main__)NNFr&   )8rE  ÚinterpolatableHelpersÚinterpolatableTestContourOrderr   ÚinterpolatableTestStartingPointr   ÚfontTools.pens.recordingPenr   r   r	   ÚfontTools.pens.transformPenr
   ÚfontTools.pens.statisticsPenr   r   ÚfontTools.pens.momentsPenr   ÚfontTools.varLib.modelsr   r   ÚfontTools.misc.fixedToolsr   ÚfontTools.misc.transformr   Úcollectionsr   Útypesr   Ú	functoolsr   Úpprintr   Úmathr   r   r   Úloggingrõ   Ú	getLoggerr}   rH  r‘   r�   rP  r   rå   rë   rî   rø   rD  rY   rB  ré   Úexitrs  Úboolr^   r2   r/   Ú<module>rÛ     s  ðñô %Ý >Ý @÷ñ õ
 5ß LÝ 6ß IÝ 7Ý .Ý #Ý !Ý Ý ß  Ñ  Û Û 	à×ÒÐ9Ó:€àÐ ØÐ Ø Ð Ø€÷U3ñ U3ðt Ø
Øð	Gð ØØØ	ØØöGñT €xƒñó ðòMòôQ	ðh ˆzÓÛá‹v€HØ‡H‚H‰S‘�h“Ó Õ!ð	 r2   