§
    ¥”jI3  ã                   óÐ   — d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZ eeddf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eeeeeeeeeeeeedœZdS )z%Calculate bounding boxes of SVG tags.é    )
ÚatanÚatan2ÚcosÚinfÚisinfÚpiÚradiansÚsinÚsqrtÚtané   )ÚPATH_LETTERS)Ú	normalizeÚpointc                 óÌ  — |j         t          vrt          S t          |j                  | ||¦  «        }t          |¦  «        st          S |rš|j         dk    r�t	          |                      |                     d¦  «        ¦  «        ¦  «        rZ|                      |                     dd¦  «        |¦  «        }|d         |dz  z
  |d         |dz  z
  |d         |z   |d         |z   f}|S )	zBounding box for any node.ÚgÚstrokezstroke-widthÚ1pxr   é   r   é   )ÚtagÚBOUNDING_BOX_METHODSÚEMPTY_BOUNDING_BOXÚis_valid_bounding_boxÚanyÚ	get_paintÚgetÚlength)ÚsvgÚnodeÚ	font_sizer   ÚboxÚstroke_widths         új/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/svg/bounding_box.pyÚbounding_boxr%      sá   € à„xÕ+Ð+Ð+Ý!Ð!Ý
˜tœxÔ
(¨¨d°IÑ
>Ô
>€CÝ  Ñ%Ô%ð "Ý!Ð!Øð :�$”(˜c’/�/¥c¨#¯-ª-¸¿ºÀÑ8JÔ8JÑ*KÔ*KÑ&LÔ&L�/Ø—z’z $§(¢(¨>¸5Ñ"AÔ"AÀ9ÑMÔMˆà�ŒF�\ AÑ%Ñ% s¨1¤v°¸qÑ0@Ñ'@Ø�ŒF�\Ñ! 3 q¤6¨LÑ#8ð:ˆð €Jó    c                 ó  — |                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}|                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}||||fS )zBounding box for rect node.ÚxÚyÚwidthÚheight©r   r   )r   r    r!   r(   r)   r*   r+   s          r$   Úbounding_box_rectr-      st   € à�9Š9�T—X’X˜c‘]”] D§H¢H¨S¡M¤M°9Ñ=Ô=�D€A€qØ—I’IØ�Š�ÑÔ˜4Ÿ8š8 HÑ-Ô-¨yñ:ô :�M€Eˆ6àˆa�˜ÐÐr&   c                 óø   — |                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}|                      |                     d¦  «        |¦  «        }||z
  ||z
  d|z  d|z  fS )zBounding box for circle node.ÚcxÚcyÚrr   )r   r   r   )r   r    r!   r/   r0   r1   s         r$   Úbounding_box_circler2   "   sk   € à�YŠY�t—x’x ‘~”~ t§x¢x°¡~¤~°yÑAÔA�F€BˆØ�
Š
�4—8’8˜C‘=”= )Ñ,Ô,€AØ�‰6�2˜‘6˜1˜q™5 ! a¡%Ð'Ð'r&   c                 ó&  — |                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}|                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}||z
  ||z
  d|z  d|z  fS )zBounding box for ellipse node.ÚrxÚryr/   r0   r   r,   )r   r    r!   r4   r5   r/   r0   s          r$   Úbounding_box_ellipser6   )   s{   € à�YŠY�t—x’x ‘~”~ t§x¢x°¡~¤~°yÑAÔA�F€BˆØ�YŠY�t—x’x ‘~”~ t§x¢x°¡~¤~°yÑAÔA�F€BˆØ�‰7�B˜‘G˜Q ™V Q¨¡VÐ+Ð+r&   c                 óš  — |                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}|                       |                     d¦  «        |                     d¦  «        |¦  «        \  }}t          ||¦  «        t          ||¦  «        }}t          ||¦  «        |z
  t          ||¦  «        |z
  }
}	|||	|
fS )zBounding box for line node.Úx1Úy1Úx2Úy2)r   r   ÚminÚmax)r   r    r!   r8   r9   r:   r;   r(   r)   r*   r+   s              r$   Úbounding_box_liner>   0   s¥   € à�YŠY�t—x’x ‘~”~ t§x¢x°¡~¤~°yÑAÔA�F€BˆØ�YŠY�t—x’x ‘~”~ t§x¢x°¡~¤~°yÑAÔA�F€BˆÝˆr�2‰;Œ;�˜B ™œ€q€AÝ˜˜B‘K”K !‘O¥S¨¨R¡[¤[°1¡_ˆ6€EØˆa�˜ÐÐr&   c                 óÚ   — t           }g }t          |                     dd¦  «        ¦  «        }|r.t          | ||¦  «        \  }}}|                     ||f¦  «         |°.t          ||¦  «        S )zBounding box for polyline node.ÚpointsÚ )r   r   r   r   ÚappendÚextend_bounding_box)r   r    r!   r%   r@   Únormalized_pointsr(   r)   s           r$   Úbounding_box_polylinerE   9   s|   € å%€LØ€FÝ! $§(¢(¨8°RÑ"8Ô"8Ñ9Ô9ÐØ
ð Ý"'¨Ð->À	Ñ"JÔ"JÑˆˆ1ÐØ�Š�q˜!�fÑÔÐð ð õ ˜|¨VÑ4Ô4Ð4r&   c                 ó"	  — |                      dd¦  «        }t          D ]}|                     |d|› d�¦  «        }Œt          |¦  «        }t          }d}d}d}|�r5|                     ¦   «         }|                     dd¦  «        d         t          v r|› d�                     dd¦  «        \  }}|dv �rët          | ||¦  «        \  }}	}|                     dd¦  «        \  }
}t          t          |
¦  «        ¦  «        }
|d         |dd…                              ¦   «         }}|d	          
                    ¦   «         sA||d         z   |dd…                              ¦   «         }}|d	          
                    ¦   «         ¯A|d         |dd…                              ¦   «         }}|d	          
                    ¦   «         sA||d         z   |dd…                              ¦   «         }}|d	          
                    ¦   «         ¯At          t          |¦  «        ¦  «        t          t          |¦  «        ¦  «        }}t          | ||¦  «        \  }}}|d
k    r
||z  }||z  }t          ||||	|
||||¦	  «	        }|\  }}}}||z   }||z   }||f||ff}t          ||¦  «        }|}|}�nÛ|dv r‚t          | ||¦  «        \  }}}t          | ||¦  «        \  }}}t          | ||¦  «        \  }}}|dk    r||z  }||z  }||z  }||z  }||z  }||z  }t          |||f||f||ff¦  «        }|}|}�nU|dv rW|› d�                     dd¦  «        \  }}|                      |d|¦  «        \  }}|dk    r||z  }t          |||ff¦  «        }|}nú|dv r;t          | ||¦  «        \  }}}|dv r
||z  }||z  }t          |||ff¦  «        }|}|}n»|dv r]t          | ||¦  «        \  }}}t          | ||¦  «        \  }}}|dv r||z  }||z  }||z  }||z  }t          |||f||ff¦  «        }|}|}nZ|dv rV|› d�                     dd¦  «        \  }}|                      d||¦  «        \  }}|dk    r||z  }t          |||ff¦  «        }|}|                     ¦   «         }|�°5|S )zBounding box for path node.ÚdrA   ú r   ÚMr   ÚaANéÿÿÿÿÚaÚcCÚcÚhHÚhÚlLmMtTÚlmtÚqQsSÚqsÚvVÚv)r   r   Úreplacer   r   ÚstripÚsplitr   r	   ÚfloatÚisdigitÚboolÚintÚ_bounding_box_elliptical_arcrC   )r   r    r!   Ú	path_dataÚletterr%   Ú
previous_xÚ
previous_yr4   r5   ÚrotationÚlargeÚsweepr(   r)   Úarc_bounding_boxr8   r9   r*   r+   r:   r;   r@   Ú_s                           r$   Úbounding_box_pathrh   D   s©  € à—’˜˜bÑ!Ô!€Iõ ð =ð =ˆØ×%Ò% f¨m°&¨m¨m¨mÑ<Ô<ˆ	ˆ	Ý˜)Ñ$Ô$€Iå%€LØ€JØ€JØ€FØ
ñ y&Ø—O’OÑ%Ô%ˆ	Ø�?Š?˜3 Ñ"Ô" 1Ô%­Ð5Ð5Ø$-   × 7Ò 7¸¸QÑ ?Ô ?ÑˆF�Ià�Tˆ>‰>å % c¨9°iÑ @Ô @ÑˆB��IØ"+§/¢/°#°qÑ"9Ô"9ÑˆH�iÝ�u X™œÑ/Ô/ˆHð  )¨œ|¨Y°q°r°r¬]×-@Ò-@Ñ-BÔ-B�9ˆEØ˜B”i×'Ò'Ñ)Ô)ð OØ#(¨9°Q¬<Ñ#7¸À1À2À2¼×9LÒ9LÑ9NÔ9N�y�ð ˜B”i×'Ò'Ñ)Ô)ð Oà(¨œ|¨Y°q°r°r¬]×-@Ò-@Ñ-BÔ-B�9ˆEØ˜B”i×'Ò'Ñ)Ô)ð OØ#(¨9°Q¬<Ñ#7¸À1À2À2¼×9LÒ9LÑ9NÔ9N�y�ð ˜B”i×'Ò'Ñ)Ô)ð Oõ  ¥ E¡
¤
Ñ+Ô+­Tµ#°e±*´*Ñ-=Ô-=�5ˆEå# C¨°IÑ>Ô>‰OˆAˆq�)ð ˜Š}ˆ}Ø�Z‘�Ø�Z‘�õ  <Ø˜J¨¨B°¸%ÀÈÈ1ñ Nô  NÐà$4Ñ!ˆB��E˜6Ø�e‘ˆBØ�f‘ˆBØ˜"�X  B˜xÐ'ˆFÝ.¨|¸VÑDÔDˆLØˆJØˆJ‰Jà�tˆ^ˆ^å % c¨9°iÑ @Ô @ÑˆB��IÝ % c¨9°iÑ @Ô @ÑˆB��IÝ# C¨°IÑ>Ô>‰OˆAˆq�)ð ˜Š}ˆ}Ø�jÑ �Ø�jÑ �Ø�jÑ �Ø�jÑ �Ø�Z‘�Ø�Z‘�õ /Ø  B˜x¨"¨b¨°A°q°6Ð:ñ<ô <ˆLàˆJØˆJ‰Jà�tˆ^ˆ^à(˜O˜O˜O×2Ò2°3¸Ñ:Ô:‰LˆAˆyØ—9’9˜Q  9Ñ-Ô-‰DˆAˆqð ˜Š}ˆ}Ø�Z‘�õ /Ø  :˜Ð0ñ2ô 2ˆLàˆJˆJà�xÐÐå# C¨°IÑ>Ô>‰OˆAˆq�)ð ˜ˆˆØ�Z‘�Ø�Z‘�õ /¨|¸qÀ!¸f¸YÑGÔGˆLØˆJØˆJˆJà�vÐÐå % c¨9°iÑ @Ô @ÑˆB��IÝ# C¨°IÑ>Ô>‰OˆAˆq�)ð ˜ˆ~ˆ~Ø�jÑ �Ø�jÑ �Ø�Z‘�Ø�Z‘�õ /Ø  B˜x¨!¨Q¨Ð0ñ2ô 2ˆLàˆJØˆJˆJà�tˆ^ˆ^à(˜O˜O˜O×2Ò2°3¸Ñ:Ô:‰LˆAˆyØ—9’9˜Q  9Ñ-Ô-‰DˆAˆqð ˜Š}ˆ}Ø�Z‘�õ /Ø 
¨A˜Ð0ñ2ô 2ˆLàˆJà—O’OÑ%Ô%ˆ	ðs ñ y&ðv Ðr&   c                 ó$   — t          |dd¦  «        S )zBounding box for text node.Útext_bounding_boxN)Úgetattr)r   r    r!   s      r$   Úbounding_box_textrl   Ï   s   € å�4Ð,¨dÑ3Ô3Ð3r&   c                 ó¶   — t           }|D ]N}|                      ||¦  «        }t          |¦  «        r'|\  }}}}	||z   ||	z   }}
t          |||f|
|ff¦  «        }ŒO|S )zBounding box for g node.)r   Úcalculate_bounding_boxr   rC   )r   r    r!   r%   ÚchildÚchild_bounding_boxÚminxÚminyr*   r+   ÚmaxxÚmaxys               r$   Úbounding_box_gru   Ô   s„   € å%€LØð <ð <ˆØ ×7Ò7¸¸yÑIÔIÐÝ Ð!3Ñ4Ô4ð 	<Ø(:Ñ%ˆD�$˜˜vØ ™ t¨f¡}�$ˆDÝ.Ø  d˜|¨d°D¨\Ð:ñ<ô <ˆLøàÐr&   c                 ó&  — ddl m}  || ||¦  «        x}€t          S |                      |                     d¦  «        |                     d¦  «        |¦  «        \  }}t          | ||d¦  «        }|d         |z   |d         |z   |d         |d	         fS )
zBounding box for use node.r   )Úget_use_treeNr(   r)   Tr   r   r   )Údefsrw   r   r   r   r%   )r   r    r!   rw   Útreer(   r)   r"   s           r$   Úbounding_box_userz   á   sš   € à"Ð"Ð"Ð"Ð"Ð"à�˜S $¨	Ñ2Ô2Ð2ˆÐ;Ý!Ð!à�yŠy˜Ÿš #™œ¨¯ª°©¬°yÑAÔA‰ˆˆ1Ý˜3  i°Ñ6Ô6ˆØ�1Œv˜‰z˜3˜qœ6 A™: s¨1¤v¨s°1¬vÐ5Ð5r&   c	                 ó\  — t          |¦  «        t          |¦  «        }}d||fv rBt          || ¦  «        t          ||¦  «        t          || z
  ¦  «        t          ||z
  ¦  «        fS t          |¦  «        | |z
  z  dz  t          |¦  «        ||z
  z  dz  z   }	t          |¦  «         | |z
  z  dz  t          |¦  «        ||z
  z  dz  z   }
|dz  |dz  z  |dz  |
dz  z  z
  |dz  |	dz  z  z
  }||dz  |
dz  z  |dz  |	dz  z  z   z  }dx}}|dk     rs||z  }|
dz  |	dz  |dz  z  z   }|dk     rBt          || ¦  «        t          ||¦  «        t          || z
  ¦  «        t          ||z
  ¦  «        fS t	          |¦  «        }||z  }n1||k    rdndt	          |¦  «        z  }||z  |
z  |z  }| |z  |	z  |z  }|t          |¦  «        z  |t          |¦  «        z  z
  | |z   dz  z   }|t          |¦  «        z  |t          |¦  «        z  z   ||z   dz  z   }|dt
          fv rX||z
  }t          d| ¦  «        }||z   }t          d|¦  «        }||z
  }t          | d¦  «        }||z   }t          |d¦  «        }�n¾|t
          dz  dt
          z  dz  fv rX||z
  }t          d| ¦  «        }||z   }t          d|¦  «        }||z
  }t          | d¦  «        }||z   }t          |d¦  «        }�nMt          |t          |¦  «        z  |z  ¦  «         }t
          t          |t          |¦  «        z  |z  ¦  «        z
  }||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z
  }||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z
  }||k    r||}}||}}||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z   }t          ||z
  ||z
  ¦  «        }||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z   }t          ||z
  ||z
  ¦  «        }t          |t          |¦  «        |z  z  ¦  «        }t          |t          |¦  «        |z  z  ¦  «        t
          z   }||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z   }||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z   }||k    r||}}||}}||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z
  }t          ||z
  ||z
  ¦  «        }||t          |¦  «        z  t          |¦  «        z  z   |t          |¦  «        z  t          |¦  «        z  z
  }t          ||z
  ||z
  ¦  «        }t          ||z
  | |z
  ¦  «        }t          ||z
  ||z
  ¦  «        }|s||}}d}||k    r||}}d}|s||k    s||k     s|r||k    s||k     st          || ¦  «        }|s||k    s||k     s|r||k    s||k     st          || ¦  «        }|s||k    s||k     s|r||k    s||k     st          ||¦  «        }|s||k    s||k     s|r||k    s||k     st          ||¦  «        }||||z
  ||z
  fS )z/Bounding box of an elliptical arc in path node.r   r   rK   r   r   FT)
Úabsr<   r   r
   r   r   r   r   r   r=   )r8   r9   r4   r5   Úphird   re   r(   r)   Úx1primeÚy1primeÚradicantÚcxprimeÚcyprimeÚratioÚfactorr/   r0   rq   Útminxrs   Útmaxxrr   Útminyrt   ÚtmaxyÚtmp_yÚtmp_xÚangle1Úangle2Ú	other_arcs                                  r$   r^   r^   í   sn  € å�‰WŒW•c˜"‘g”gˆ€BØˆR�ˆH€}€}Ý�1�b‰zŒz�3˜q "™:œ:¥s¨1¨r©6¡{¤{µC¸¸B¹±K´KÐ?Ð?å�#‰hŒh˜"˜q™&Ñ! AÑ%­¨C©¬°B¸±FÑ(;¸aÑ(?Ñ?€GÝ�3‰xŒxˆi˜2 ™6Ñ" QÑ&­¨S©¬°R¸!±VÑ)<¸qÑ)@Ñ@€Gð 	ˆa‰�"˜‘'Ñ˜B !™G g°¡lÑ2Ñ2°R¸1±W¸wÈ!¹|Ñ5KÑKð à��a‘˜' Q™,Ñ&¨¨q©°7¸a±<Ñ)?Ñ?Ñ?€HØÐ€Gˆgà�!‚|€|Ø�R‘ˆØ˜a‘< '¨Q¡,°¸!±Ñ";Ñ;ˆØ�aŠ<ˆ<Ý�q˜"‘:”:�s 1 b™zœz­3¨q°2©v©;¬;½¸AÀ¹F¹¼ÐCÐCÝ�(‰^Œ^ˆØ�R‰Zˆˆà š˜�"�"¨Aµ°h±´Ñ?ˆà˜2‘+ Ñ'¨"Ñ,ˆØ�'˜B‘, Ñ(¨2Ñ-ˆà	•3�s‘8”8Ñ	˜g­¨C©¬Ñ0Ñ	0°B¸±F¸a±<Ñ	?€BØ	•3�s‘8”8Ñ	˜g­¨C©¬Ñ0Ñ	0°B¸±F¸a±<Ñ	?€Bà
ˆq•"ˆg€~€~Ø�B‰wˆÝ�a˜"˜‘”ˆØ�B‰wˆÝ�a˜‘”ˆØ�B‰wˆÝ�r�c˜1‘”ˆØ�B‰wˆÝ�b˜!‘”ˆ‰Ø	•�a‘˜�R™ !™Ð$Ð	$Ð	$Ø�B‰wˆÝ�a˜"˜‘”ˆØ�B‰wˆÝ�a˜‘”ˆØ�B‰wˆÝ�r�c˜1‘”ˆØ�B‰wˆÝ�b˜!‘”ˆ‰å�b�3˜s™8œ8‘m bÑ(Ñ)Ô)Ð)ˆÝ•T˜"�s 3™xœx™-¨"Ñ,Ñ-Ô-Ñ-ˆØ�B�˜U™œ‘O¥c¨#¡h¤hÑ.Ñ.°µc¸%±j´j±Å3ÀsÁ8Ä8Ñ1KÑKˆØ�B�˜U™œ‘O¥c¨#¡h¤hÑ.Ñ.°µc¸%±j´j±Å3ÀsÁ8Ä8Ñ1KÑKˆØ�$Š;ˆ;Ø˜t�$ˆDØ  %�5ˆEØ�R�#˜e™*œ*‘_¥s¨3¡x¤xÑ/Ñ/°"µs¸5±z´z±/ÅCÈÁHÄHÑ2LÑLˆÝ�d˜R‘i ¨¡Ñ,Ô,ˆØ�R�#˜e™*œ*‘_¥s¨3¡x¤xÑ/Ñ/°"µs¸5±z´z±/ÅCÈÁHÄHÑ2LÑLˆÝ�d˜R‘i ¨¡Ñ,Ô,ˆå�R�3˜s™8œ8 b™=Ñ)Ñ*Ô*ˆÝ�R�3˜s™8œ8 b™=Ñ)Ñ*Ô*­RÑ/ˆØ�B�˜U™œ‘O¥c¨#¡h¤hÑ.Ñ.°µc¸%±j´j±Å3ÀsÁ8Ä8Ñ1KÑKˆØ�B�˜U™œ‘O¥c¨#¡h¤hÑ.Ñ.°µc¸%±j´j±Å3ÀsÁ8Ä8Ñ1KÑKˆØ�$Š;ˆ;Ø˜t�$ˆDØ  %�5ˆEØ�R�#˜e™*œ*‘_¥s¨3¡x¤xÑ/Ñ/°"µs¸5±z´z±/ÅCÈÁHÄHÑ2LÑLˆÝ�e˜b‘j $¨¡)Ñ,Ô,ˆØ�R�#˜e™*œ*‘_¥s¨3¡x¤xÑ/Ñ/°"µs¸5±z´z±/ÅCÈÁHÄHÑ2LÑLˆÝ�d˜R‘i ¨¡Ñ,Ô,ˆå�2˜‘7˜B ™GÑ$Ô$€FÝ�1�r‘6˜1˜r™6Ñ"Ô"€Fàð (Ø �ˆà€IØ�‚€Ø �ˆØˆ	àð ˜F UšN˜N¨f°uªn¨nØð /=Ø &¨¢ °&¸5².°.Ý�1�b‰zŒzˆØð ˜F UšN˜N¨f°uªn¨nØð /=Ø &¨¢ °&¸5².°.Ý�1�b‰zŒzˆØð ˜F UšN˜N¨f°uªn¨nØð /=Ø &¨¢ °&¸5².°.Ý�1�b‰zŒzˆØð ˜F UšN˜N¨f°uªn¨nØð /=Ø &¨¢ °&¸5².°.Ý�1�b‰zŒzˆà��t˜d‘{ D¨4¡KÐ/Ð/r&   c                 ó  — | \  }}}}t          |¦  «        rt           n||z   t          |¦  «        rt           n||z   }}t          |Ž \  }}	t          |g|¢R Ž t          |g|	¢R Ž t	          |g|¢R Ž t	          |g|	¢R Ž f\  }}}}||||z
  ||z
  fS )z.Extend a bounding box to include given points.)r   r   Úzipr<   r=   )
r%   r@   rq   rr   r*   r+   rs   rt   Úx_listÚy_lists
             r$   rC   rC   Q  sÉ   € à ,Ñ€Dˆ$��vå�d‘”Ð-�ˆˆ ¨¡Ý�d‘”Ð.�ˆˆ ¨¡ð €Dõ ˜&�\�N€FˆFåˆDÐ�6ÐÐÐ�C Ð. vÐ.Ð.Ð.ÝˆDÐ�6ÐÐÐ�C Ð. vÐ.Ð.Ð.ð0Ñ€Dˆ$��dð ��t˜d‘{ D¨4¡KÐ/Ð/r&   c                 óD   — | ot          | d         | d         z   ¦  «         S )u=   Check that a bounding box doesnâ€™t have infinite boundaries.r   r   )r   )r%   s    r$   r   r   ^  s%   € àÐH¥ l°1¤o¸ÀQ¼Ñ&GÑ HÔ HÐHÐHr&   )ÚrectÚcircleÚellipseÚlineÚpolylineÚpolygonÚpathr   ÚuseÚmarkerÚtextÚtspanÚtextPathN) Ú__doc__Úmathr   r   r   r   r   r   r	   r
   r   r   r™   r   Úutilsr   r   r   r%   r-   r2   r6   r>   rE   rh   rl   ru   rz   r^   rC   r   r   © r&   r$   ú<module>r£      s•  ðØ +Ð +à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jà Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #à˜#˜q !�^Ð ðð ð ðð ð ð(ð (ð (ð,ð ,ð ,ðð ð ð5ð 5ð 5ðHð Hð HðV4ð 4ð 4ð

ð 
ð 
ð	6ð 	6ð 	6ða0ð a0ð a0ðH
0ð 
0ð 
0ðIð Ið Ið Ø!Ø#ØØ%Ø$ØØ	ØØØØØ!ðð Ð Ð Ð r&   