Ë
    ¡ëi  ã                   óJ  — d dl mZmZmZ d6d„Zd6d„Z	 	 d7d„Z G d„ d«      Zd	„ Z	 	 	 d8d
„Z	d dl
mZ edz  Zdez  Zdez  Zd„ Zd„ Zd„ Zd„ ZdZdez
  Z G d„ d«      Zd„ Zd9d„Zedk(  r¹d dl mZ d dlmZmZ  edd«      Z eeddddd d ee¬!«	        eed"d#dd$d d ee¬!«	       ej;                  d%gd&d'¬(«        e eg d)¢g d*¢g d+¢g«      «        e ed,d-gd.d/gg«      «        e ed0d-gd1d/gg«      «        e ed2d3gd/d4gg«      «        e eg d)¢d2d3gg d5¢g«      «       yy):é    )ÚDrawingÚPolygonÚLineNc                 ó2   — |€ddl m} | r || d|z
  «      }|S )Nr   )ÚBlackeré   )Úreportlab.lib.colorsr   )ÚcolÚshdÚshadingr   s       úa/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/charts/utils3d.pyÚ
_getShadedr      s!   € Ø
€{Ý0Ù‘g˜c ! G¡)Ó,�Ø€Jó    c                 ó2   — |€ddl m} | r || d|z
  «      }|S )Nr   )ÚWhiterr   )r	   r   )r
   r   Úlightingr   s       r   Ú_getLitr   	   s!   € Ø
€{Ý/Ù‘f˜S  8¡Ó,�Ø€Jr   r   c                 óT  — t        |d |«      }t        |d |dz  «      }| |	|
|fd„}t        ||«      }|s|r#||k7  r ||||||||¬«        ||||||||¬«       | j                  t        ||||||||f|	|
|d¬«      «       |s|r%| j                  t	        |||||
|	xs |¬«      «       y y )Ng       @c
                 ój   — |j                  t        | || |z   ||z   ||z   ||z   ||f|||	d¬«      «       y )Nr   )ÚstrokeWidthÚstrokeColorÚ	fillColorÚstrokeLineJoin)Úaddr   )
Úx1Úx2Úy1Úy2ÚxoffÚyoffÚGr   r   r   s
             r   Ú_add_3d_barz!_draw_3d_bar.<locals>._add_3d_bar   sD   € à	�‰Œg�r˜"˜b ™g b¨¡g¨r°$©w°r¸$±wÀÀ2ÐFØ#°È	Ðabôdõ 	er   )r   r   )r   r   r   r   )r   r   )r   Úmaxr   r   r   )r!   r   r   Úy0ÚyhighÚxdepthÚydepthr   ÚfillColorShadedr   r   r   ÚfillColorShadedTopr"   Úusds                  r   Ú_draw_3d_barr+      sØ   € ô ! ¨4°Ó8€OÜ# I¨d°7¸3±;Ó?Ðð  K¸[ÐT]óeô
 ˆb�%‹.€CÙ‘ØˆuŠ9Ù˜˜R  U¨F°FÀoÕVá�B˜˜C  f¨fÐ@RÕSà‡E�EŒ'�2�b˜˜B˜r %¨¨5Ð1Ø¨[ÀIÐ]^ô`ô añ ‘Ø	�‰Œd�B˜˜R °+È;ÒKiÐZiÔjÕkð r   c                   ó   — e Zd Zdd„Zy)Ú_YStripc                 ó`   — || _         || _        || _        || _        t	        |||«      | _        y ©N)r$   r   Úsloper   r   r(   )Úselfr$   r   r0   r   r(   r   s          r   Ú__init__z_YStrip.__init__)   s/   € ØˆŒØˆŒØˆŒ
Ø"ˆŒÜ)¨)°OÀGÓLˆÕr   N)çš™™™™™¹?)Ú__name__Ú
__module__Ú__qualname__r2   © r   r   r-   r-   (   s   „ ôMr   r-   c                 ó.   — | || |z   ||z   ||z   ||z   ||gS r/   r7   )Úx0r   r$   r   r   r    s         r   Ú_ystrip_polyr:   0   s)   € Øˆr�"�T‘'˜"˜T™' " T¡'¨"¨T©'°"°RÐ8Ð8r   c                 óÞ  — t        ||z
  «      }||z  }||z  }|dk(  xr dxs | t        |«      z  }t        ||z
  «      }|dk(  xr dxs ||z
  |z  }||kD  xr t        |	|
|«      xs |	}||z  }||z  }d}|€||fg}n•||z
  dz  ||z
  dz  z   dz  }||z  }||k  r||fg}nqt        |t        |«      z  «      dz   }t        ||z
  «      |z  }t        ||z
  «      |z  }g }|j                  }t        d|«      D ]  }  |||| z  z   ||| z  z   f«       Œ | j                  }||z   }!||z   }"|D ]>  \  }}#||z   }$|#|z   }%t        t        |!|$|"|%||«      |||¬«      }& |d|||!|"|&f«       |$}!|%}"Œ@ y )Nr   g¯–P.5�_g333333ã?é   ç      à?r   )r   r   r   )	ÚabsÚfloatr   ÚintÚappendÚranger   r   r:   )'r!   r9   r   r$   r   Úz0Úz1Útheta_xÚtheta_yr   r(   Ú	tileWidthr   r   ÚstrokeDashArrayr   Úzwidthr&   r'   Údepth_slopeÚxr0   ÚcÚzy0Úzx0ÚtileStrokeWidthÚDÚTÚnÚdxÚdyÚaÚiÚx_0Úy_0ÚyÚx_1Úy_1ÚPs'                                          r   Ú_make_3d_line_infor]   4   sç  € ô
 ��B‘‹Z€FØ�G‰^€FØ�G‰^€FØ˜1‘9Ò& Ò?¨6¨'´%¸³-Ñ*?€Käˆb�‰e‹€AØˆq‰DŠN�UÒ'˜r "™u a™i€EàˆkÑÒKœj¨°?À7ÓKÒXÈy€AØ
ˆW‰*€CØ
ˆW‰*€Cà€OØÐØ�ˆWˆI‰à�‰e�a‰Z˜˜B™ ™
Ñ" SÑ(ˆØ˜9Ñ$ˆØˆYŠ;Ø�R��	‰Aä�A”e˜IÓ&Ñ&Ó'¨Ñ)ˆAÜ�r˜"‘u“˜a‘ˆBÜ�r˜"‘u“˜a‘ˆBØˆAØ—‘ˆAÜ˜1˜Q“Zò %�Ù�2�b˜‘d‘7˜2˜b ™d™7Ð#Õ$ð%ð 	
�‰€AØ
ˆS‰&€CØ
ˆS‰&€CØò ‰ˆˆ!Ø�‰eˆØ�‰eˆÜ”L  c¨3°°V¸VÓDØ !¨q¸oôOˆá	ˆ1ˆR��3�s˜1Ð
ÔØˆØ‰ñr   )Úpir=   r<   g     €f@c                 ó   — | t         z  S r/   ©Ú_180_pi)Úangles    r   Ú_2radrc   g   s   € Ø”‰=Ðr   c                 ó4   — | t         z  } | dk  r	| t         z  } | S )Nç�íµ ÷Æ°¾)Ú_2pi)Úradianss    r   Úmod_2pirh   j   s   € Øœ‰n€GØˆu‚}�g¤‘o�gØ€Nr   c                 ó   — | t         z  S r/   r`   )Úos    r   Ú_2degrk   o   s   € ØŒW‰9Ðr   c                 ó$   — | dz  } | dk  r| dz  } | S )Nih  re   r7   ©rU   s    r   Ú_360rn   r   s   € Øˆ�H€AØˆ‚w��S‘�Ø€Hr   ç:Œ0âŽyE>c                   ó"   — e Zd Zd„ Zd„ ZeZd„ Zy)Ú_Segmentc                 ó(  — ||   }||dz
     d   }||dz
     d   }||   d   }||   d   }||k  r||||f\  }}}}t        ||z
  «      | _        t        ||z
  «      | _        || _        || _        || _        || _        || _        || _        || _	        y )Nr   r   )
r?   rU   Úbr9   r   r$   r   ÚseriesrV   Ús)	r1   ru   rV   ÚdataÚSr9   r$   r   r   s	            r   r2   z_Segment.__init__z   s´   € Ø�‰GˆØˆq�‰s‰V�A‰YˆØˆq�‰s‰V�A‰YˆØˆq‰T�!‰WˆØˆq‰T�!‰WˆØˆbŠ5Ø˜R  2˜+‰KˆBˆr�"�Rô �r˜"‘u“ˆŒÜ�r˜"‘u“ˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆ�r   c           	      óp   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d�	S )Nz[(ú,z),(z)])r9   r$   r   r   )r1   s    r   Ú__str__z_Segment.__str__�   s!   � Ø&*§g£g¨d¯g«g°d·g³g¸d¿g»gÐFÐFr   c                 ód  — | j                   }|j                   }||k  sJ ‚|| j                  kD  ry|j                  | j                  k(  r+|j                  | j                  dz
  | j                  dz   fv ry| j                  }| j
                  }|j                  }|j
                  }||z  ||z  z
  }	d|	cxk  rdk  ry ||z
  }
| j                  |j                  z
  }||z  ||
z  z
  |	z  }||z  ||
z  z
  |	z  }|dk  s|dkD  s
|dk  s|dkD  ry|||z  z   }| j                  ||z  z   }t        |cxk  r	t        k  r2n n/| j                  | j                  ||f}||vr|j                  |«       t        |cxk  r	t        k  r4n y|j                  |j                  ||f}||vr|j                  |«       yyy)z4try to find an intersection with _Segment o
        r   Ng:Œ0âŽyE¾ro   r   )
r9   r   ru   rV   rU   rs   r$   Ú_ZEROÚ_ONErA   )r1   rj   ÚIr9   Úox0rU   rs   ÚoaÚobÚdetrS   rT   ÚuÚourK   rY   Úts                    r   Ú	intersectz_Segment.intersect”   sŒ  € ð �W‰WˆØ�d‰dˆØ�3ŠwˆˆwØˆt�w‰wŠ;˜qØ�3‰3�—‘Š;˜1Ÿ3™3 4§6¡6¨!¡8¨D¯F©F°1©HÐ"5Ñ5°vØ�F‰FˆØ�F‰FˆØ�S‰SˆØ�S‰SˆØ�‰d�R˜‘T‰kˆØ�Œ>�TŠ>˜6ˆ>Ø�#‰XˆØ�W‰W�q—t‘t‰^ˆØ�‰U�R˜‘U‰]˜CÑˆØ�‰d�Q�r‘T‰k˜3ÑˆØˆQŠ3�!�A’#˜˜Aš  A¢ vØ��1‘‰HˆØ�G‰G�a˜‘c‰MˆÜ�Œ<”4�<Ø—‘�t—v‘v˜a Ð!ˆAØ˜‰z˜1Ÿ8™8 Aœ;Ü�Œ=”D�=Ø—‘�A—C‘C˜˜!�ˆAØ˜‰z˜AŸH™H Q�Kˆzð r   N)r4   r5   r6   r2   rz   Ú__repr__r†   r7   r   r   rq   rq   y   s   „ òò*Gð €Hó(r   rq   c                 óŠ   — | j                   | j                  | j                  | j                  | j                  | j
                  fS r/   )r9   r   r$   r   ru   rV   rm   s    r   Ú_segKeyr‰   °   s-   € Ø�D‰D�—‘�a—d‘d˜1Ÿ4™4 §¡ A§C¡CÐ(Ð(r   c                 ó  — g }|j                   }t        t        | «      «      D ]g  }| |   }|sŒt        |«      }|dk(  rŒt        d|«      D ]=  }t        ||| «      }|j                  t        |j                  «      z   |k\  sŒ6 ||«       Œ? Œi |j                  t        ¬«       g }	t        |«      }t        d|dz
  «      D ]5  }||   }t        |dz   |«      D ]  }
|j                  ||
   |	«      dk(  sŒ Œ5 Œ7 |	j                  «        |	S )aV  
    data is a sequence of series
    each series is a list of (x,y) coordinates
    where x & y are ints or floats

    find_intersections returns a sequence of 4-tuples
        i, j, x, y

    where i is a data index j is an insertion position for data[i]
    and x, y are coordinates of an intersection of series data[i]
    with some other series. If correctly implemented we get all such
    intersections. We don't count endpoint intersections and consider
    parallel lines as non intersecting (even when coincident).
    We ignore segments that have an estimated size less than small.
    r   )Úkeyr   )
rA   rB   Úlenrq   rU   r>   rs   Úsortr‰   r†   )rv   Úsmallrw   rU   ru   ÚdsrR   rV   Úsegr~   Újs              r   Úfind_intersectionsr’   ³   s  € ð$ 	€AØ	�‰€AÜ”3�t“9Óò /ˆØ�!‰WˆÙ�8Ü�‹GˆØˆaŠ4�Ü�q˜“ò 	/ˆAÜ˜1˜Q˜tÓ$ˆCØ�u‰u”S˜Ÿ™“ZÑ Ó&©¨#­ñ	/ð/ð ‡F�FŒw€FÔØ
€AÜˆA‹€AÜ�1�Q�q‘S‹\ò -ˆØˆa‰DˆÜ�q˜‘s˜1“ò 	-ˆAØ�{‰{˜1˜Q™4 Ó" AÓ%¡uñ	-ð-ð ‡F�F„HØ€Hr   Ú__main__)r   )Ú	lightgreyÚpinki,  éÈ   é
   é   é2   é   )r   r   é   é(   é-   Úpdfú.r+   )ÚformatsÚoutDirÚfnRoot))r   r=   )r   r=   )r=   r   )r=   r   ))g±:Ñ?çš™™™™™Ù?©r3   r£   ©r3   çš™™™™™É?©r   r   ©r   r   )©r   r   ©r£   r3   ©r   r3   r¥   r¤   r©   rª   )r¦   r£   ©r3   gš™™™™™é?r§   r¨   r«   )r¬   rª   r«   )Nr3   )NNNr   r3   )Nr   NNNr3   )r   )Úreportlab.graphics.shapesr   r   r   r   r   r+   r-   r:   r]   Úmathr^   Ú_pi_2rf   ra   rc   rh   rk   rn   r|   r}   rq   r‰   r’   r4   r	   r”   r•   rP   ÚsaveÚprintr7   r   r   ú<module>r²      sœ  ðß <Ñ <óóð 15Ø9<ól÷0Mñ Mò9ð @AØHLØó	,õ\ Ø
ˆ3‰€Øˆ�t€ØˆR‰€òòò
òð
 	€Øˆ�w€÷5(ñ 5(òn)ó$ðL ˆZÒÝ1ß4Ù��CÓ€AÙ��B˜˜B  A q°IÈ4ÕPÙ��B˜˜B  A q°IÈ4ÕPà‡F�F�E�7 #¨^€FÔ<á	Ñ
Ò?Ò@sò  uNð  Oó  Pô  QÙ	Ñ
˜z¨:Ð6¸ÀÐ8LÐMÓ
NÔOÙ	Ñ
˜z¨:Ð6¸ÀZÐ8PÐQÓ
RÔSÙ	Ñ
˜u U˜m¨Y°wÐ,?Ð@Ó
AÔBÙ	Ñ
Ò?ÀÀuÀÒNkÐlÓ
mÕnð r   