Ë
    £ëi&Q  ã                   ó’   — d Z ddl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mZ d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)u?   Parse and draw definitions: gradients, patterns, masks, usesâ€¦é    )Úcycle)ÚceilÚhypoté   )ÚMatrixé   )Úbounding_boxÚis_valid_bounding_box)Úalpha_valueÚcolorÚ	parse_urlÚsizeÚ	transformc                 óê  — ddl m} t        |j                  | j                  «      «      }t        | j                  «      }|j
                  dk(  rt        d«      }|d d dk(  xs |d d |d d k(  }|j                  r’|r�|j                  | j                  v r)| j                  |j                     j                  «       }|S 	 | j                  j                  |j                  «      j                  «       }|| j                  |j                  <   |S |j                  «       }	 | j                  |«      }	 ||	|«      }
|
j                  |«       |
j                  }|S # t        $ r Y y w xY w# t        $ r Y y w xY w)Nr   )ÚSVGÚdataÚ é   )r   r   r   )r   r   r   Úget_hrefÚurlÚschemeÚfragmentÚ	use_cacheÚcopyÚtreeÚ	get_childÚ	ExceptionÚgeturlÚurl_fetcherÚget_intrinsic_size)ÚsvgÚnodeÚ	font_sizer   Ú
parsed_urlÚsvg_urlÚsame_originr   r   Úbytestring_svgÚuse_svgs              úS/var/www/html/chat/reports/venv/lib/python3.12/site-packages/weasyprint/svg/defs.pyÚget_use_treer*      sg  € Ýä˜4Ÿ=™=¨¯©Ó1Ó2€JÜ˜Ÿ™Ó €GØ‡~�~˜ÒÜ˜B“-ˆà�2�Aˆ˜,Ñ&ò 	&Ø�2�Aˆ˜' " 1˜+Ñ%ð ð ×Ò™{Ø×Ñ #§-¡-Ñ/Ø—=‘= ×!4Ñ!4Ñ5×:Ñ:Ó<ˆDð& €Kð#:Ø—x‘x×)Ñ)¨*×*=Ñ*=Ó>×CÑCÓE�ð 6:�—‘˜j×1Ñ1Ñ2ð €Kð ×ÑÓ!ˆð	 Ø Ÿ_™_¨SÓ1ˆNÙ˜.¨#Ó.ˆGð ×&Ñ& yÔ1Ø—<‘<ˆDà€Køô ò Ùðûô ò 	Ùð	ús$   Â?3E ÄE& Å	E#Å"E#Å&	E2Å1E2c                 ó¼  — t        | ||«      x}€y|j                  dv rÁd|j                  v rGd|j                  v r9|j                  d   |j                  d<   |j                  d   |j                  d<   n[d|j                  _        t	        | ||d¬«      }t        |«      r0|d   |d	   z   |j                  d<   |d
   |d   z   |j                  d<   d|j                  _        |j                  |«       |j                  t        |f«      «       | j                  |j                  d«      |j                  d«      |«      \  }}| j                  j                  ||¬«       y)zDraw use tags.N)r!   ÚsymbolÚwidthÚheightÚgT©Ústroker   r   r   r   r!   ÚxÚy©ÚeÚf)r*   ÚtagÚattribÚ_etree_noder	   r
   ÚcascadeÚoverride_iterÚiterÚpointÚgetÚstreamr   )r!   r"   r#   r   Úboxr2   r3   s          r)   ÚuserA   -   s2  € ä˜S $¨	Ó2Ð2ˆÐ;Øà‡x�xÐ$Ñ$ð �d—k‘kÑ! h°$·+±+Ñ&=Ø#'§;¡;¨wÑ#7ˆD�K‰K˜Ñ Ø$(§K¡K°Ñ$9ˆD�K‰K˜Ò!à#&ˆD×ÑÔ Ü˜s D¨)¸DÔAˆCÜ$ SÔ)Ø'*¨1¡v°°A±¡�—‘˜GÑ$Ø(+¨A©°°Q±©�—‘˜HÑ%Ø$ˆ×ÑÔà‡L�L�ÔØ×Ñ”t˜T˜G“}Ô%Ø�9‰9�T—X‘X˜c“] D§H¡H¨S£M°9Ó=�D€A€qØ‡J�J×Ñ˜1 ÐÕ"ó    c                 ó°   — || j                   v rt        | || j                   |   |||«      S || j                  v rt        | || j                  |   |||«      S y)zDraw given gradient or pattern.N)Ú	gradientsÚdraw_gradientÚpatternsÚdraw_pattern)r!   r"   Únamer#   Úopacityr1   s         r)   Údraw_gradient_or_patternrJ   F   si   € àˆs�}‰}ÑÜØ��s—}‘} TÑ*¨I°wÀóHð 	Hà	�—‘Ñ	ÜØ��s—|‘| DÑ)¨9°g¸vóGð 	Gð 
rB   c                 óÎ  ‡6‡7— g }g }|D ]�  }|j                  t        |r|d   ndt        |j                  d«      |d«      «      «       t	        |j                  dd«      «      |z  }	t        |j                  dd«      «      }
|
xj                  |	z  c_        |j                  |
«       ŒŸ |syt        |«      dk(  r| j                  j                  |d   «       y	| j                  |||«      }t        |«      sy|j                  d
«      dk(  r+| j                  | j                  }}|dd \  }}t        «       }n d\  }}|\  }}}}d\  }}t        ||||¬«      }|j                  dd«      }|dv r]|d   dkD  r'|j                  dd«       |j                  d|d   «       |d   dk  r¶|j                  d«       |j                  |d   «       n�|d   |d   k(  rO|j                   dk(  r|j                  dd«       n|j                  d|d   dz
  «       |j                  d|d   «       |d   |d   k(  r+|j                  |d   dz   «       |j                  |d   «       d|j"                  v r,t%        |j                  d«      d|| j&                  «      }||z  }|j                   dk(  rŽd}t        |j                  dd«      ||«      t        |j                  dd«      ||«      }}t        |j                  dd«      ||«      t        |j                  dd«      ||«      }}t)        |||||||||«	      \  }}}nï|j                   dk(  sJ ‚d}t        |j                  dd «      ||«      t        |j                  d!d «      ||«      }}t        |j                  d"d «      |t+        ||«      «      }t        |j                  d#|«      ||«      t        |j                  d$|«      ||«      }!} t        |j                  d%d«      |t+        ||«      «      }"t-        |||| |!|"||||||«      \  }}}|D �#cg c]  }#|#d   ‘Œ	 }$}#t/        t        |$«      dz
  «      D �%cg c]  }%|$|%   |$|%dz      f‘Œ }&}%t/        t        |«      dz
  «      D �%cg c]  }%||%   dd ||%dz      dd dg‘Œ }'}%t1        |$«      D ]D  \  }%}(|(dk(  sŒ|%dkD  r|'|%dz
     d   |'|%dz
     d<   |%t        |«      dz
  k  sŒ7|'|%   d   |'|%   d<   ŒF t1        |&«      D ]"  \  }%\  })}*d|)|*fvsŒ|)|*fdk7  sŒ|)|*z  |'|%   d<   Œ$ d|j"                  v rj||z   ||z   },}+j2                  j5                  ||«      \  }}|j2                  j5                  |+|,«      \  }+},|+|z
  |,|z
  }}||+kD  r| }|+|}+}||,kD  r| }|,|},}| j                  j7                  |||||||| j                  j8                  z  «      }-|-j;                  ||||«      Š7|d   |d   fŠ6|dv}.t        |«      dz
  d&z  }/|dd }0ˆ6ˆ7fd'„|'D «       }1‰7j=                  ‰6|/|0|1«      }2‰7j?                  |d(‰6||.|2«      }3tA        d)„ |$D «       «      rƒ‰7jC                  ||||«      }4|d   |d   fŠ6|dv}.t        |«      dz
  d&z  }/|dd }0ˆ7fd*„|&D «       }1‰7j=                  ‰6|/|0|1«      }2|4j?                  |d+‰6||.|2«      }5d,|5jD                  › d-�g|4_        ‰7jG                  |3jD                  «       |-jI                  d«       |-jK                  ‰7jD                  «       | j                  jM                  d.|¬/«       | j                  jO                  |-jD                  |¬/«       y	c c}#w c c}%w c c}%w )0úDraw given gradient node.éÿÿÿÿr   Úoffsetr   zstop-opacityz
stop-colorÚblackFTÚgradientUnitsÚuserSpaceOnUseNr   )r   r   ©r   r   )ÚaÚdr5   r6   ÚspreadMethodÚpad©ÚrepeatÚreflectÚradialGradientéþÿÿÿÚgradientTransformú0 0ÚlinearGradientÚx1Úy1Úx2z100%Úy2r   Úcxz50%ÚcyÚrÚfxÚfyÚfr©r   r   c              3   óN   •K  — | ]  \  }}}‰j                  ‰|||«      –— Œ y ­w)N©Úcreate_interpolation_function)Ú.0Úc0Úc1ÚnÚdomainÚgroups       €€r)   ú	<genexpr>z draw_gradient.<locals>.<genexpr>Ï   s0   øè ø€ ò (áˆB��Að 	×+Ñ+¨F°B¸¸A×>ñ(ùs   ƒ"%ÚRGBc              3   ó&   K  — | ]	  }|d k7  –— Œ y­w)r   N© )rm   Úalphas     r)   rs   z draw_gradient.<locals>.<genexpr>×   s   è ø€ Ò
*˜%ˆ5�A�:Ñ
*ùs   ‚c              3   óP   •K  — | ]  \  }}‰j                  d |g|gd«      –— Œ y­w)ri   r   Nrk   )rm   rn   ro   rr   s      €r)   rs   z draw_gradient.<locals>.<genexpr>Ý   s2   øè ø€ ò )á��Bð ×/Ñ/°¸¸¸r¸dÀA×Fñ)ùs   ƒ#&ÚGrayú/z shÚPatternr0   )(ÚappendÚmaxr   r>   r   r   rw   Úlenr?   Ú	set_colorÚcalculate_bounding_boxr
   Úinner_widthÚinner_heightr   Úinsertr7   r8   r   Únormalized_diagonalÚspread_linear_gradientr   Úspread_radial_gradientÚrangeÚ	enumerateÚinvertÚtransform_pointÚadd_patternÚctmÚ	add_groupÚcreate_stitching_functionÚadd_shadingÚanyÚset_alpha_stateÚidÚpaint_shadingÚ	set_alphaÚdraw_x_objectÚset_color_spaceÚset_color_special)8r!   r"   Úgradientr#   rI   r1   Ú	positionsÚcolorsÚchildÚstop_opacityÚ
stop_colorr	   r-   r.   Úbx1Úby1Úmatrixr5   r6   rS   rT   ÚspreadÚtransform_matrixÚshading_typer_   r`   ra   rb   Úcoordsrc   rd   re   rf   rg   rh   r   ÚalphasÚiÚalpha_couplesÚcolor_couplesrw   Úa0Úa1Úbx2Úby2ÚpatternÚextendÚencodeÚboundsÚsub_functionsÚfunctionÚshadingÚalpha_streamÚalpha_shadingrq   rr   s8                                                         @@r)   rE   rE   P   s%  ù€ ð €IØ€FØò "ˆØ×ÑœÙ&ˆI�bŠM¨AÜ�—‘˜8Ó$ i°Ó3ó5ô 	6ô # 5§9¡9¨^¸QÓ#?Ó@À7ÑJˆÜ˜5Ÿ9™9 \°7Ó;Ó<ˆ
Ø×Ò˜LÑ(ÕØ�‰�jÕ!ð"ñ ØÜ	ˆV‹˜Ò	Ø�
‰
×Ñ˜V A™YÔ'Øà×-Ñ-¨d°I¸vÓF€LÜ  Ô.ØØ‡|�|�OÓ$Ð(8Ò8ØŸ™¨×)9Ñ)9ˆvˆØ  Ð#‰ˆˆSÜ“‰à‰ˆˆvØ!‰
ˆˆ1ˆa�Ø‰ˆˆSÜ˜!˜q A¨Ô+ˆà�\‰\˜.¨%Ó0€FØÐ&Ñ&Ø�Q‰<˜!ÒØ×Ñ˜Q Ô"Ø�M‰M˜!˜V A™YÔ'Ø�R‰=˜1ÒØ×Ñ˜QÔØ�M‰M˜& ™*Õ%ð �Q‰<˜9 Q™<Ò'Ø�|‰|Ð/Ò/à× Ñ   AÕ&à× Ñ   I¨a¡L°1Ñ$4Ô5Ø�M‰M˜!˜V A™YÔ'Ø�R‰=˜I b™MÒ)Ø×Ñ˜Y r™]¨QÑ.Ô/Ø�M‰M˜& ™*Ô%à˜hŸo™oÑ-Ü$Ø�L‰LÐ,Ó-¨u°iØ×#Ñ#ó%Ðð " FÑ*ˆà‡|�|Ð'Ò'Øˆä�—‘˜d AÓ&¨	°5Ó9Ü�—‘˜d AÓ&¨	°6Ó:ð ˆô �—‘˜d FÓ+¨Y¸Ó>Ü�—‘˜d AÓ&¨	°6Ó:ð ˆô %;Ø�I˜v r¨2¨r°2°|ÀVó%MÑ!ˆ	�6™6ð �|‰|Ð/Ò/Ð/Ð/Øˆä�—‘˜d EÓ*¨I°uÓ=Ü�—‘˜d EÓ*¨I°vÓ>ð ˆô �—‘˜c 5Ó)¨9´e¸EÀ6Ó6JÓKˆä�—‘˜d BÓ'¨°EÓ:Ü�—‘˜d BÓ'¨°FÓ;ð ˆô �(—,‘,˜t QÓ'¨´E¸%ÀÓ4HÓIˆÜ$:Ø�I˜v r¨2¨r°2°r¸1¸eÀVØó%Ñ!ˆ	�6˜6ð %+Ö+˜5ˆe�A‹hÐ+€FÐ+ô ”s˜6“{ Q‘Ó'ö)àð 
�‰�F˜1˜q™5‘MÒ"ð)€Mð )ô
 ”s˜6“{ Q‘Ó'ö)àð 
�‰�2�Aˆ˜˜q 1™u™ b qÐ)¨1Ò-ð)€Mð )ô
 ˜fÓ%ò :‰ˆˆ5Ø�A‹:Ø�1ŠuØ*7¸¸A¹Ñ*>¸qÑ*A�˜a !™eÑ$ QÑ'Ø”3�v“; ‘?Ó"Ø&3°AÑ&6°qÑ&9�˜aÑ  Ò#ð:ô ! Ó/ò *‰ˆ‰8ˆB�Ø�R˜�HÒ " b ¨VÓ!3Ø"$ r¡'ˆM˜!Ñ˜QÒð*ð ˜hŸo™oÑ-Ø˜‘;  f¡ˆSˆØ#×*Ñ*×:Ñ:¸3ÀÓD‰ˆˆSØ#×*Ñ*×:Ñ:¸3ÀÓD‰ˆˆSØ˜c™	 3¨¡9ˆvˆð �Š9Ø�FˆEØ˜C�ˆCØ�Š9Ø�WˆFØ˜C�ˆCà�j‰j×$Ñ$ØˆS�%˜ ¨°¸¿¹¿¹Ñ0GóI€Gà×Ñ˜c 3¨¨vÓ6€Eà˜‰l˜I b™MÐ*€FØÐ0Ð0€FÜ�&‹k˜A‰o Ñ'€FØ�q˜ˆ_€Fô(à&ô(€Mð ×.Ñ.Ø�˜ ó/€Hà×ÑØ�e˜V V¨V°Xó?€Gô Ñ
* 6Ô
*Ô*Ø×,Ñ,¨S°#°u¸fÓEˆØ˜A‘, 	¨"¡Ð.ˆØÐ4Ð4ˆÜ�f“+ ‘/ VÑ+ˆØ˜1˜R�ˆó)à'ô)ˆð ×2Ñ2Ø�F˜F Mó3ˆà$×0Ñ0Ø˜& &¨&°&¸(óDˆà!" =×#3Ñ#3Ð"4°CÐ8Ð9ˆÔà	×Ñ˜Ÿ
™
Ô#Ø×Ñ�aÔØ×Ñ˜%Ÿ(™(Ô#Ø‡J�J×Ñ˜y°ÐÔ8Ø‡J�J× Ñ  §¡°FÐ Ô;ØùòK ,ùò)ùò)s   Ð$]Ñ]Ñ:]"c	                 ój  — ddl m}	m}
  |
|«      \  }}}| dv �r_||k(  r |	||«      }dddg |gfS ||z
  }t        t	        |«      dz
  «      D �cg c]  }||dz      ||   z
  ‘Œ }}| dk(  rAt        dg|¢­«      }t        |«      }t        dg|ddd	…   ¢­«      }t        |ddd	…   «      }na| d
k(  sJ ‚t        dg|ddd	…   ¢d‘|¢­«      }t        |ddd	…   |z   «      }t        dg|¢d‘|ddd	…   ¢­«      }t        ||ddd	…   z   «      }|\  }}}}|dkD  r|||z   fn||z   |f\  }}|dkD  r|||z   fn||z   |f\  }}|j                  ||«      \  }}|j                  ||«      \  }}||} }||z
  ||z
  }"}!||k  r||fn||f\  }#}$||k  r||fn||f\  }%}&|#|z
  |!z  |%| z
  |"z  z   t        |!|"«      dz  z  }'|$|z
  |!z  |&| z
  |"z  z   t        |!|"«      dz  z  }(||(k  rJt        |«      })|j                  t        |«      «       |j                  |d	   |)z   «       ||)|z  z  }||(k  rŒJ||'kD  rLt        |«      })|j                  dt        |«      «       |j                  d|d   |)z
  «       ||)|z  z  }||'kD  rŒL|||z
  |z  z   |||z
  |z  z   }}|||z
  |z  z   |||z
  |z  z   }}||||f}*|||*fS c c}w )zRepeat linear gradient.r   ©Úgradient_average_colorÚnormalize_stop_positionsrW   r   ÚsolidNrX   r   rM   rY   )Úimagesr¸   r¹   r‡   r~   r   rŠ   r   Únextr|   rƒ   )+r¡   r™   rš   r_   r`   ra   rb   r	   r    r¸   r¹   ÚfirstÚlastÚaverage_colorÚstop_lengthr¦   Úposition_stepsÚ
next_stepsÚnext_colorsÚprevious_stepsÚprevious_colorsrž   rŸ   ÚbwÚbhr«   r¬   Útx1Úty1Útx2Úty2ÚxbÚybÚxvÚyvÚxa1Úxa2Úya1Úya2Ú
min_vectorÚ
max_vectorÚstepr¤   s+                                              r)   r…   r…   î   s©  € ÷ Já5°iÓ@Ñ€Eˆ4�ØÐ&Ò&ð �DŠ=Ù2°6¸9ÓEˆMØ�g˜t R¨-¨Ð8Ð8ð ˜U‘lˆô œ3˜y›>¨AÑ-Ó.ö0àð �a˜!‘eÑ˜y¨™|Ó+ð0ˆð 0ð
 �XÒÜ Ð3 NÑ3Ó4ˆJÜ ›-ˆKÜ" AÐ#=¨±t¸°tÑ(<Ñ#=Ó>ˆNÜ# F©4¨R¨4¡LÓ1‰Oà˜YÒ&Ð&Ð&Ü ÐM N±4°R°4Ñ$8ÐM¸!ÐM¸nÑMÓNˆJÜ ¡t¨ t¡¨vÑ 5Ó6ˆKÜ" AÐ#Q¨Ð#Q¸Ð#Q¸NÉ4ÈRÈ4Ñ<PÑ#QÓRˆNÜ# F¨V±D°b°D©\Ñ$9Ó:ˆOð (ÑˆˆS�"�bØ&(¨1¢f�C˜˜r™‘?°3¸±8¸S°/‰ˆˆSØ&(¨1¢f�C˜˜r™‘?°3¸±8¸S°/‰ˆˆSð ×)Ñ)¨"¨bÓ1‰ˆˆSØ×)Ñ)¨"¨bÓ1‰ˆˆSð �cˆBˆØ�s‘˜C #™IˆBˆØ!$ s¢�C˜‘:°°c°
‰ˆˆSØ!$ s¢�C˜‘:°°c°
‰ˆˆSØ˜R‘x 2‘o¨¨r©°R©Ñ7¼5ÀÀR»=ÈAÑ;MÑMˆ
Ø˜R‘x 2‘o¨¨r©°R©Ñ7¼5ÀÀR»=ÈAÑ;MÑMˆ
ð �ZÒÜ˜
Ó#ˆDØ�M‰Mœ$˜{Ó+Ô,Ø×Ñ˜Y r™]¨TÑ1Ô2Ø�D˜;Ñ&Ñ&ˆDð	 �ZÓð �jÒ Ü˜Ó'ˆDØ�M‰M˜!œT /Ó2Ô3Ø×Ñ˜Q 	¨!¡¨tÑ 3Ô4Ø�T˜KÑ'Ñ'ˆEð	 �jÓ ð �2˜‘7˜eÑ#Ñ# R¨2°©7°dÑ*:Ñ%:ˆ€BØ�2˜‘7˜eÑ#Ñ# R¨2°©7°dÑ*:Ñ%:ˆ€BØ�"�b˜"Ð€FØ�f˜fÐ$Ð$ùòi0s   ÁJ0c           
      óÎ  — ddl m}m}  ||«      \  }}}|||z
  |z  z   |||z
  |z  z   }}| dv �r”|j                  «       }|j                  «       }|j                  j                  |	|
«      \  }}t        t        t        |«      t        ||z
  «      «      t        t        |«      t        ||z
  «      «      «      }||z
  }t        ||z
  |z  «      }|dkD  rgd|z   }| dk(  r||z  }n+| dk(  sJ ‚g }t        |«      D ]  }||dd|dz  rd	nd…   z  }Œ t        |«      D ��cg c]  }|D ]  }||z   ‘Œ	 Œ }}}|||z  z  }|dk(  r||||||f}|||fS ||z  }d}t        |«      }|re| dk(  r	|||z  z  }n,| dk(  sJ ‚t        |«      D ]  }||dd||z   dz  rd	nd…   z  }Œ t        |«      D ��cg c]  }|D ]
  }||z
  |z   ‘Œ Œ c}}|z   }||z
  }|dk(  r||||||f}|||fS |d   |d	   fd
k(  sJ ‚d|cxk  rdk  sJ ‚ J ‚|ddd	…   }d|z
  }| dk(  r|ddd	…   }t        |d¬«      D ]ž  \  }}||k(  r)|| d |z   }|| d D �cg c]
  }||z
  dz
  ‘Œ } }| |z   } nm||k  sŒ:||    }!||dz
      }"||dz
      }#|!|!|"|"g}$||||#g}% ||$|%«      }&|&g||dz
   d ¢|¢}||dz
   d D �cg c]
  }|dz
  |z
  ‘Œ } }|dz
  |z
  g| ¢|¢} n ||||||f}|||fS c c}}w c c}}w c c}w c c}w )zRepeat radial gradient.r   r·   rW   r   r   rX   rY   NrM   ri   )Ústart)r»   r¸   r¹   r   r‰   rŠ   r   r}   Úabsr   r‡   Úintrˆ   )'r¡   r™   rš   rf   rg   rh   rc   rd   re   r-   r.   r    r¸   r¹   r½   r¾   Úoriginal_colorsÚoriginal_positionsÚtwÚthÚmax_distanceÚgradient_lengthÚrepeat_afterrX   r¦   Úpositionr¤   Úrepeat_beforeÚfull_repeatÚpartial_repeatÚreverseÚratioÚnew_positionsr   Ú
next_colorÚnext_positionÚaverage_colorsÚaverage_positionsÚ
zero_colors'                                          r)   r†   r†   5  s‰  € ÷ Já5°iÓ@Ñ€Eˆ4�Ø�!�b‘&˜EÑ!Ñ! 2¨¨R©°4©Ñ#7ˆ€BàÐ&Ò&à Ÿ+™+›-ˆØ&Ÿ^™^Ó-Ðð —‘×.Ñ.¨u°fÓ=‰ˆˆBÜÜ”�B“œ˜R "™W›Ó&¬¬C°«G´S¸¸b¹³\Ó(BóDˆà˜b™&ˆÜ˜\¨AÑ-°Ñ@ÓAˆØ˜!Òà˜Ñ%ˆFØ˜Ò!Ø˜&Ñ ‘à Ò*Ð*Ð*Ø�Ü˜v›ò D�AØ˜oÑ.B°a¸!²e±ÀÐ.BÑCÑC‘FðDô ',¨F£m÷OØ!"ÀIòOØ8@��H“ðOØðOˆIñ Oà� <Ñ/Ñ/ˆAà�Š7à˜"˜b " b¨!Ð,ˆFØ˜f fÐ,Ð,ð ˜_Ñ,ˆð ˆô ˜-Ó(ˆÙà˜Ò!Ø˜/¨KÑ7Ñ7‘à Ò*Ð*Ð*Ü˜{Ó+ò ?�AØ˜oÙ=  \Ñ!1°QÒ 6™"¸AÐ=ñ?ñ ?‘Fð?ô 5:¸+Ó4F÷4Ø/0Ø 2ò4àð �K‘ (Ó*ð4Ø*ó4à6?ñ@ˆIð
 '¨Ñ4ˆØ˜QÒà˜"˜b " b¨!Ð,ˆFØ˜f fÐ,Ð,ð
 # 1Ñ%Ð'9¸"Ñ'=Ð>À&ÒHÐHÐHØ�>Ô% AÒ%Ð%Ñ%Ð%Ð%Ø$¡T r TÑ*ˆØ�NÑ"ˆØ�YÒØ-©d°¨dÑ3ˆOÜ$ W°AÔ6ò 	‰KˆAˆxØ˜5Ò ð )¨!¨¨Ð-°Ñ6�ð %7¸°r°sÐ$;ö!=à ð ˜{Ñ*¨QÓ.ð!=�ð !=ð *¨IÑ5�	ÙØ˜%Óð (¨¨Ñ+�Ø,¨q°1©u¨XÑ6�
Ø 2°Q¸±U°8Ñ <�Ø"'¨°
¸JÐ!G�Ø%-¨u°e¸]Ð$KÐ!Ù3Ø"Ð$5ó7�
à$ÐK ¸¸Q¹°x°yÐ'AÐKÀFÐK�ð *¨A°©E¨(¨)Ð4ö!6Ø3;�H˜q‘L ;Ó.ð!6�ð !6ð # Q™Y¨Ñ4ÐQ°}ÐQÀyÐQ�	Ùð5	ð8 �"�b˜"˜b !Ð$€FØ�f˜fÐ$Ð$ùóWOùó44ùò2!=ùò"!6s   ÄKÆ)KÈ?KÊ#K"c           	      óö  — ddl m} d|j                  _        | j	                  |||«      }t        |«      sy|d   |d   }	}t        ||	¬«      }
|j                  d«      dk(  r;t        |j                  d	d«      |d«      }t        |j                  d
d«      |d«      }nª|d   |d   }}t        |j                  j                  d	d«      |d«      |z  }t        |j                  j                  d
d«      |d«      |z  }d|vrH||j                  d	<   ||j                  d
<   |j                  d«      dk(  rd|› d|› d�|j                  d<   |dk(  s|dk(  ryd|j                  v r,t        |j                  d«      d|| j                  «      }||
z  }
|
| j                  j                  z  }
| j                  j                  dd|||||
«      }|j!                  |«       |j#                  dd||«      } ||| «      j%                  |||| j&                  | j(                  «       |j+                  |j,                  «       | j                  j/                  d|¬«       | j                  j1                  |j,                  |¬«       y)rL   r   )r{   r!   Fr   r4   ÚpatternUnitsrQ   r-   r.   r   r   Ú1ÚviewBoxÚpatternContentUnitsÚobjectBoundingBoxzscale(z, ú)r   ÚpatternTransformr]   r{   r0   T)r   r{   r9   r7   r€   r
   r   r>   r   r8   Úpopr   Úinner_diagonalr?   rŒ   r‹   r”   r�   ÚdrawÚbase_urlÚcontextr•   r’   r–   r—   )r!   r"   r­   r#   rI   r1   r{   r	   r2   r3   r    Úpattern_widthÚpattern_heightr-   r.   r¢   Ústream_patternrr   s                     r)   rG   rG   ¢  sg  € åà#€G×ÑÔà×-Ñ-¨d°I¸vÓF€LÜ  Ô.ØØ˜‰?˜L¨™O€q€AÜ�a˜1Ô€FØ‡{�{�>Ó"Ð&6Ò6Ü˜WŸ[™[¨°!Ó4°iÀÓCˆÜ˜gŸk™k¨(°AÓ6¸	À1ÓE‰à$ Q™¨°a©ˆvˆä�—‘×#Ñ# G¨SÓ1°9¸aÓ@À5ÑHð 	ô �—‘×#Ñ# H¨cÓ2°I¸qÓAÀFÑJð 	à˜GÑ#Ø&3ˆG�N‰N˜7Ñ#Ø'5ˆG�N‰N˜8Ñ$Ø�{‰{Ð0Ó1Ð5HÒHØ06°u°g¸RÀ¸xÀqÐ.I�—‘˜{Ñ+ð ˜Ò˜^¨qÒ0Øà˜WŸ^™^Ñ+Ü$Ø�K‰KÐ*Ó+¨U°I¸s×?QÑ?QóSÐà! FÑ*ˆà�c—j‘j—n‘nÑ$€FØ—Z‘Z×+Ñ+Ø	ˆ1ˆm˜^¨]¸NØó€Nð ×Ñ˜WÔ%à×$Ñ$ Q¨¨=¸.ÓI€EÙˆG�SÓ×ÑØˆ}˜n¨c¯l©lØ�‰ôð × Ñ  §¡Ô*Ø‡J�J×Ñ˜y°ÐÔ8Ø‡J�J× Ñ  ×!2Ñ!2¸6Ð ÔBØrB   c                 ó²  — |D �]Q  }|j                   dk(  rÒ|j                  d«      dk(  rj| j                  ||«      }t        |«      rH|\  }}}}t	        |j                  dd«      |d«      |z  }	t	        |j                  dd«      |d«      |z  }
n;dx}	}
n6| j                  |j                  dd«      |j                  dd«      |«      \  }	}
| j                  j                  |	|
¬«       Œå|j                   d	k(  sŒõ|j                  d
d«      }|j                  dd«      j                  «       j                  dd«      }| j                  j                  |«       �ŒT y)z+Apply filters defined in given filter node.ÚfeOffsetÚprimitiveUnitsró   Údxr   r   Údyr4   ÚfeBlendÚmodeÚnormalú-ú r   N)r7   r>   r€   r
   r   r=   r?   r   ÚreplaceÚtitleÚset_blend_mode)r!   r"   Úfilter_noder#   r›   r	   Ú_r-   r.   r  r  r  s               r)   Úapply_filtersr  Õ  s8  € àó ,ˆØ�9‰9˜
Ò"Ø�‰Ð/Ó0Ð4GÒGØ"×9Ñ9¸$À	ÓJ�Ü(¨Ô6Ø*6Ñ'�A�q˜% Ü˜eŸi™i¨¨aÓ0°)¸QÓ?À%ÑG�BÜ˜eŸi™i¨¨aÓ0°)¸QÓ?À&ÑH‘Bà�K�B™àŸ™Ø—I‘I˜d AÓ&¨¯	©	°$¸Ó(:¸IóG‘��Bà�J‰J× Ñ  2¨Ð Õ,Ø�Y‰Y˜)Ó#Ø—9‘9˜V XÓ.ˆDØ—<‘<  SÓ)×/Ñ/Ó1×9Ñ9¸#¸rÓBˆDØ�J‰J×%Ñ% dÖ+ñ#,rB   c                 óÀ  — d|j                   _        |j                  d«      dk(  r| j                  | j                  }}n4| j                  |j                  d«      |j                  d«      |«      \  }}t        |j                  dd«      ||«      |j                  d<   t        |j                  dd«      ||«      |j                  d<   t        |j                  dd	«      ||«      |j                  d<   t        |j                  dd	«      ||«      |j                  d<   |j                  d«      dk(  r_|j                  d«      |j                  d«      }}|j                  d«      |j                  d«      }	}|› d
|› d
|› d
|	› �|j                  d<   n	d\  }}||}	}| j                  }
| j                  j                  ||||	«      | _        | j                  ||«       |
| _        y)zApply given mask node.r/   Ú	maskUnitsrQ   r-   r.   r2   z-10%r3   z120%r  rñ   rR   N)r9   r7   r>   r�   r‚   r=   r   r8   r?   r‘   Ú	draw_node)r!   r"   Úmaskr#   Ú	width_refÚ
height_refr2   r3   r-   r.   Ú
svg_streams              r)   Ú
paint_maskr  ë  sª  € à€D×ÑÔà‡x�x�ÓÐ 0Ò0Ø #§¡°×1AÑ1A�:‰	à #§	¡	Ø�H‰H�WÓ˜tŸx™x¨Ó1°9ó!>Ñˆ	�:ô ˜DŸH™H S¨&Ó1°9¸iÓH€D‡K�K�ÑÜ˜DŸH™H S¨&Ó1°9¸jÓI€D‡K�K�ÑÜ Ø�‰�˜6Ó" I¨zó;€D‡K�K�ÑäØ�‰�˜&Ó! 9¨ió9€D‡K�K�Ñð ‡x�x�ÓÐ 0Ò0Ø�x‰x˜‹}˜dŸh™h s›mˆ1ˆØŸ™ Ó)¨4¯8©8°HÓ+=ˆvˆØ$% 3 a¨ s¨!¨E¨7°!°F°8Ð!<ˆ�‰�IÒà‰ˆˆ1Ø! :ˆvˆà—‘€JØ—‘×+Ñ+¨A¨q°%¸Ó@€C„JØ‡M�M�$˜	Ô"Ø€C…JrB   N)Ú__doc__Ú	itertoolsr   Úmathr   r   r    r   r	   r
   Úutilsr   r   r   r   r   r*   rA   rJ   rE   r…   r†   rG   r  r  rv   rB   r)   ú<module>r     sP   ðÙ Eå ß å ß =ß AÕ AòòD#ò2Gò[ò|D%òNj%òZ0òf,ó,rB   