§
    aÒ³g#¥  ã                  óN  — U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ dd	lmZ d
ed<   	 ej        j        Zn# e$ r dZY nw xY we	rddlmZmZ eeeedf         e f         Z!	  G d„ d¦  «        Z"d0d1d„Z#	 d2d3d„Z$	 	 d4d5d%„Z%d6d,„Z&d7d/„Z'dS )8é    )ÚannotationsN)ÚSequence)Ú
ModuleType)ÚTYPE_CHECKINGÚAnyÚAnyStrÚCallableÚUnionÚcasté   )ÚImageÚ
ImageColor)Ú	deprecate)ÚCoordsz(Callable[[], Image.core._Outline] | NoneÚOutline)Ú
ImageDraw2Ú	ImageFont.c                  óÌ  — e Zd ZU dZded<   dZd[d
„Zd\d„Zd]d„Z	 dZd^d„Z	 	 d_d`d„Z		 dZdad „Z
	 	 	 dbdcd"„Z	 	 	 dbddd#„Z	 	 	 dbded&„Z	 	 	 dfdgd)„Z	 	 dhdid,„Z	 	 	 dbdcd-„ZdZdjd.„Z	 	 	 dbddd/„Z	 	 	 	 dkdld4„Z	 	 	 dbddd5„Z	 	 	 	 dkdd6œdmd9„Zdnd=„Zdod?„ZdpdB„Z	 	 	 	 	 	 	 	 	 	 	 dqdrdS„Z	 	 	 	 	 	 	 	 	 	 	 dqddTœdsdU„Z	 	 	 	 	 dtddTœdudV„Z	 	 	 	 	 	 	 	 	 dvddTœdwdX„Z	 	 	 	 	 	 	 	 	 dvddTœdwdY„ZdS )xÚ	ImageDrawNúNImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | NoneÚfontÚimúImage.ImageÚmodeú
str | NoneÚreturnÚNonec                óP  — |                      ¦   «          |j        r|                     ¦   «          d}|€|j        }||j        k    r%|dk    r|j        dk    rd}nd}t	          |¦  «        ‚|dk    r|j        | _        nd| _        || _        |j        | _        t          j	         
                    | j        |¦  «        | _
        || _        |dv r | j
                             d¦  «        | _        n| j
                             d	¦  «        | _        |d
v rd| _        nd| _        d| _        dS )a˜  
        Create a drawing instance.

        :param im: The image to draw in.
        :param mode: Optional mode to use for color values.  For RGB
           images, this argument can be RGB or RGBA (to blend the
           drawing into the image).  For all other modes, this argument
           must be the same as the image mode.  If omitted, the mode
           defaults to the mode of the image.
        r   NÚRGBAÚRGBr   zmode mismatchÚP)ÚIÚFéÿÿÿÿ)Ú1r!   r"   r#   r%   ÚLF)ÚloadÚreadonlyÚ_copyr   Ú
ValueErrorÚpaletteÚ_imager   r   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr   r   ÚblendÚmsgs        úK/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/PIL/ImageDraw.pyÚ__init__zImageDraw.__init__E   s  € ð 	�Š‰	Œ	ˆ	ØŒ;ð 	Ø�HŠH‰JŒJˆJØˆØˆ<Ø”7ˆDØ�2”7Š?ˆ?Ø�vŠ~ˆ~ "¤'¨UÒ"2Ð"2Ø��à%�Ý  ‘o”oÐ%Ø�3Š;ˆ;Øœ:ˆDŒLˆLàˆDŒLØˆŒØ”%ˆŒÝ”J—O’O D¤G¨UÑ3Ô3ˆŒ	ØˆŒ	Ø�:ÐÐØ”y×)Ò)¨!Ñ,Ô,ˆDŒHˆHà”y×)Ò)¨"Ñ-Ô-ˆDŒHØÐ'Ð'Ð'àˆDŒMˆMàˆDŒMØˆŒ	ˆ	ˆ	ó    úGImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFontc                óR   — | j         sddlm}  |j        ¦   «         | _         | j         S )a=  
        Get the current default font.

        To set the default font for this ImageDraw instance::

            from PIL import ImageDraw, ImageFont
            draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

        To set the default font for all future ImageDraw instances::

            from PIL import ImageDraw, ImageFont
            ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

        If the current default font is ``None``,
        it is initialized with ``ImageFont.load_default()``.

        :returns: An image font.r   ©r   )r   Ú r   Úload_default)r3   r   s     r6   ÚgetfontzImageDraw.getfonto   s:   € ð( Œyð 	1à#Ð#Ð#Ð#Ð#Ð#à.˜	Ô.Ñ0Ô0ˆDŒIØŒyÐr8   Ú	font_sizeúfloat | Nonec                óZ   — |�ddl m}  |j        |¦  «        S |                      ¦   «         S )Nr   r;   )r<   r   r=   r>   )r3   r?   r   s      r6   Ú_getfontzImageDraw._getfontŠ   s=   € ð Ð Ø#Ð#Ð#Ð#Ð#Ð#à)�9Ô)¨)Ñ4Ô4Ð4à—<’<‘>”>Ð!r8   r0   ú_Ink | Noner2   útuple[int | None, int | None]c                óh  — d }d }|€|€| j         r	| j        }�n| j        }�n|�…t          |t          ¦  «        rt	          j        || j        ¦  «        }| j        r5t          |t          ¦  «        r | j                             || j	        ¦  «        }| j
                             |¦  «        }|�…t          |t          ¦  «        rt	          j        || j        ¦  «        }| j        r5t          |t          ¦  «        r | j                             || j	        ¦  «        }| j
                             |¦  «        }||fS ©N)r2   r0   Ú
isinstanceÚstrr   Úgetcolorr   r+   Útupler,   r.   r/   )r3   r0   r2   Ú
result_inkÚresult_fills        r6   Ú_getinkzImageDraw._getink”   s,  € ð ˆ
ØˆØˆ;˜4˜<ØŒyð &Ø"œh�‘à!œX�
‘
àˆÝ˜c¥3Ñ'Ô'ð >Ý$Ô-¨c°4´9Ñ=Ô=�CØ”<ð B¥J¨sµEÑ$:Ô$:ð BØœ,×/Ò/°°T´[ÑAÔA�CØ!œY×/Ò/°Ñ4Ô4�
ØÐÝ˜d¥CÑ(Ô(ð @Ý%Ô.¨t°T´YÑ?Ô?�DØ”<ð D¥J¨tµUÑ$;Ô$;ð DØœ<×0Ò0°°t´{ÑCÔC�DØ"œi×0Ò0°Ñ6Ô6�Ø˜;Ð&Ð&r8   r   Úxyr   ÚstartÚfloatÚendÚwidthÚintc                óz   — |                       |¦  «        \  }}|� | j                             |||||¦  «         dS dS )zDraw an arc.N)rM   r.   Údraw_arc)r3   rN   rO   rQ   r2   rR   r0   s          r6   ÚarczImageDraw.arc­   sI   € ð —L’L Ñ&Ô&‰	ˆˆTØˆ?ØŒI×Ò˜r 5¨#¨s°EÑ:Ô:Ð:Ð:Ð:ð ˆ?r8   úSequence[int]Úbitmapc                ó°   — |                      ¦   «          |                      |¦  «        \  }}|€|}|�#| j                             ||j        |¦  «         dS dS )zDraw a bitmap.N)r'   rM   r.   Údraw_bitmapr   )r3   rN   rX   r2   r0   s        r6   rX   zImageDraw.bitmapº   s^   € ð 	�Š‰ŒˆØ—L’L Ñ&Ô&‰	ˆˆTØˆ;ØˆCØˆ?ØŒI×!Ò! " f¤i°Ñ5Ô5Ð5Ð5Ð5ð ˆ?r8   Úoutlinec                óÞ   — |                       ||¦  «        \  }}|�| j                             ||||d¦  «         |�-||k    r)|dk    r%| j                             ||||d|¦  «         dS dS dS dS )zDraw a chord.Nr   r   )rM   r.   Ú
draw_chord©	r3   rN   rO   rQ   r2   r[   rR   r0   Úfill_inks	            r6   ÚchordzImageDraw.chordÅ   s‰   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI× Ò   U¨C°¸1Ñ=Ô=Ð=Øˆ?˜s hš˜°5¸A²:°:ØŒI× Ò   U¨C°°a¸Ñ?Ô?Ð?Ð?Ð?ð ˆ?˜˜°:°:r8   c                óÖ   — |                       ||¦  «        \  }}|�| j                             ||d¦  «         |�+||k    r'|dk    r#| j                             ||d|¦  «         dS dS dS dS )zDraw an ellipse.Nr   r   )rM   r.   Údraw_ellipse©r3   rN   r2   r[   rR   r0   r_   s          r6   ÚellipsezImageDraw.ellipseÕ   s�   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×"Ò" 2 x°Ñ3Ô3Ð3Øˆ?˜s hš˜°5¸A²:°:ØŒI×"Ò" 2 s¨A¨uÑ5Ô5Ð5Ð5Ð5ð ˆ?˜˜°:°:r8   úSequence[float]Úradiusc                óŠ   — |d         |z
  |d         |z
  |d         |z   |d         |z   f}|                       ||||¦  «         dS )z4Draw a circle given center coordinates and a radius.r   r   N)rd   )r3   rN   rf   r2   r[   rR   Ú
ellipse_xys          r6   ÚcirclezImageDraw.circleã   sP   € ð ˜”e˜f‘n b¨¤e¨f¡n°b¸´e¸f±nÀbÈÄeÈfÁnÐUˆ
Ø�Š�Z  w°Ñ6Ô6Ð6Ð6Ð6r8   r   Újointc                ó  ‡‡— |                       |¦  «        d         }|��b| j                             ‰|‰¦  «         |dk    �rA‰dk    �r<t          ‰d         t          t
          f¦  «        r,t          t          t          t                            ‰¦  «        }n*ˆfd„t          dt          ‰¦  «        d¦  «        D ¦   «         }t          dt          |¦  «        dz
  ¦  «        D �]¤}||         }d„ ||dz
           |f|||dz            ffD ¦   «         }	|	d         |	d         k    rŒBdˆfd„}
|	d         |	d         k    o|	d         dz
  |	d         k    p&|	d         |	d         k     o|	d         dz   |	d         k    }|d         ‰dz  z
  dz   |d         ‰dz  z
  dz   f|d         ‰dz  z   dz
  |d         ‰dz  z   dz
  fg}|r|	d         dz   |	d         dz   }}n|	d         dz
  |	d         dz
  }}|                      ||dz
  |dz
  |¦  «         ‰dk    rq|r, |
||	d         dz   ¦  «        | |
||	d         dz   ¦  «        g}n+ |
||	d         dz
  ¦  «        | |
||	d         dz
  ¦  «        g}|                      ||d¬¦  «         �Œ dS dS dS dS )z6Draw a line, or a connected sequence of line segments.r   NÚcurveé   c                ó€   •— g | ]:}t          t          t                   t          ‰||d z   …         ¦  «        ¦  «        ‘Œ;S )é   )r   r   rP   rJ   )Ú.0ÚirN   s     €r6   ú
<listcomp>z"ImageDraw.line.<locals>.<listcomp>ÿ   sK   ø€ ð ð ð àõ �X¥eœ_­e°B°q¸1¸q¹5°y´MÑ.BÔ.BÑCÔCðð ð r8   ro   r   c           
     ó¤   — g | ]M\  }}t          j        t          j        |d          |d          z
  |d         |d         z
  ¦  «        ¦  «        dz  ‘ŒNS )r   r   éh  )ÚmathÚdegreesÚatan2)rp   rO   rQ   s      r6   rr   z"ImageDraw.line.<locals>.<listcomp>  sg   € ð ð ð ñ '˜E 3õ œ¥T¤Z°°A´¸¸q¼Ñ0AÀ5ÈÄ8ÈcÐRSÌfÑCTÑ%UÔ%UÑVÔVØñðð ð r8   Úcoordre   ÚanglerP   r   útuple[float, ...]c                ó  •— | \  }}|dz  }‰dz  dz
  }t          d„ ||t          j        t          j        |¦  «        ¦  «        z  f||t          j        t          j        |¦  «        ¦  «        z  ffD ¦   «         ¦  «        S )NéZ   ro   r   c              3  ó~   K  — | ]8\  }}||d k    rt          j        |¦  «        nt          j        |¦  «        z   V — Œ9dS )r   N)ru   ÚfloorÚceil)rp   ÚpÚp_ds      r6   ú	<genexpr>z9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>  s[   è è € ð %ð %á &  3ð °C¸!²G°G¥¤¨C¡¤ ÅÄÈ3ÁÄÑPð%ð %ð %ð %ð %ð %r8   )rJ   ru   ÚcosÚradiansÚsin)rx   ry   ÚxÚyÚdistancerR   s        €r6   Úcoord_at_anglez&ImageDraw.line.<locals>.coord_at_angle  s˜   ø€ ð  %™˜˜1Ø ™˜Ø#(¨1¡9¨q¡=˜Ý$ð %ð %ð "# H­t¬x½¼ÀUÑ8KÔ8KÑ/LÔ/LÑ$LÐ MØ!" H­t¬x½¼ÀUÑ8KÔ8KÑ/LÔ/LÑ$LÐ Mð+ð%ñ %ô %ñ  ô  ð r8   é´   r|   é   é   )rR   )rx   re   ry   rP   r   rz   )rM   r.   Ú
draw_linesrG   ÚlistrJ   r   r   rP   ÚrangeÚlenÚpiesliceÚline)r3   rN   r2   rR   rj   r0   Úpointsrq   ÚpointÚanglesr‰   ÚflippedÚcoordsrO   rQ   Ú
gap_coordss    ` `            r6   r’   zImageDraw.lineï   s7  øø€ ð �lŠl˜4Ñ Ô  Ô#ˆØ‰?ØŒI× Ò   S¨%Ñ0Ô0Ð0Ø˜ÒÑ E¨A¢I¡Iå˜b œe¥d­E ]Ñ3Ô3ð Ý!¥(­8µE¬?Ô";¸RÑ@Ô@�F�Fðð ð ð å!& q­#¨b©'¬'°1Ñ!5Ô!5ðñ ô �Fõ ˜q¥# f¡+¤+°¡/Ñ2Ô2ð 7=ñ 7=�AØ" 1œI�Eðð ð $ A¨¡Eœ]¨EÐ2Ø" F¨1¨q©5¤MÐ2ð+ðñ ô �Fð ˜a”y F¨1¤IÒ-Ð-à ðð ð ð ð ð ð ˜qœ	 F¨1¤IÒ-ÐM°&¸´)¸c±/ÀFÈ1ÄIÒ2MðQà  œ) f¨Q¤iÒ/ÐO°F¸1´IÀ±OÀfÈQÄiÒ4Oð ð ˜qœ E¨A¡IÑ-°Ñ1°5¸´8¸eÀa¹iÑ3GÈ!Ñ3KÐLØ˜qœ E¨A¡IÑ-°Ñ1°5¸´8¸eÀa¹iÑ3GÈ!Ñ3KÐLð�Fð ð FØ&,¨Q¤i°"¡n°f¸Q´iÀ"±n˜s˜˜à&,¨Q¤i°"¡n°f¸Q´iÀ"±n˜s˜Ø—M’M &¨%°"©*°c¸B±hÀÑEÔEÐEà˜q’y�yà"ð à . ¨u°f¸Q´iÀ"±nÑ EÔ EØ %Ø . ¨u°f¸Q´iÀ"±nÑ EÔ Eð*˜J˜Jð !/ ¨u°f¸Q´iÀ"±nÑ EÔ EØ %Ø . ¨u°f¸Q´iÀ"±nÑ EÔ Eð*˜Jð
 Ÿ	š	 *¨d¸!˜	Ñ<Ô<Ð<ùðE ˆ?àÐ I Ið7=ð 7=r8   ÚshapeúImage.core._Outlinec                óì   — |                      ¦   «          |                      ||¦  «        \  }}|�| j                             ||d¦  «         |�$||k    r | j                             ||d¦  «         dS dS dS )z(Experimental) Draw a shape.Nr   r   )ÚcloserM   r.   Údraw_outline)r3   r™   r2   r[   r0   r_   s         r6   r™   zImageDraw.shape<  s€   € ð 	�Š‰ŒˆØŸš W¨dÑ3Ô3‰ˆˆXØÐØŒI×"Ò" 5¨(°AÑ6Ô6Ð6Øˆ?˜s hš˜ØŒI×"Ò" 5¨#¨qÑ1Ô1Ð1Ð1Ð1ð ˆ?˜˜r8   c                óÞ   — |                       ||¦  «        \  }}|�| j                             ||||d¦  «         |�-||k    r)|dk    r%| j                             ||||d|¦  «         dS dS dS dS )zDraw a pieslice.Nr   r   )rM   r.   Údraw_pieslicer^   s	            r6   r‘   zImageDraw.piesliceJ  s‰   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×#Ò# B¨¨s°H¸aÑ@Ô@Ð@Øˆ?˜s hš˜°5¸A²:°:ØŒI×#Ò# B¨¨s°C¸¸EÑBÔBÐBÐBÐBð ˆ?˜˜°:°:r8   c                ót   — |                       |¦  «        \  }}|�| j                             ||¦  «         dS dS )z#Draw one or more individual pixels.N)rM   r.   Údraw_points)r3   rN   r2   r0   s       r6   r”   zImageDraw.pointZ  sA   € à—L’L Ñ&Ô&‰	ˆˆTØˆ?ØŒI×!Ò! " cÑ*Ô*Ð*Ð*Ð*ð ˆ?r8   c                ó¬  — |                       ||¦  «        \  }}|�| j                             ||d¦  «         |��“||k    �rŽ|dk    �r‰|dk    r| j                             ||d|¦  «         dS | j        ��^t	          j        d| j        j        ¦  «        }|                       d¦  «        d         }|                     ¦   «         }	t          |	¦  «        }
|
j                             ||d¦  «         |                     ¦   «         }t          |¦  «        }
|dz  dz
  }|
j                             ||d|¦  «         | 	                    ||	¬¦  «         t	          j        | j
        | j        j        ¦  «        }t          |¦  «        }
|
j                             ||d|¦  «         | j         	                    |j        d|j        z   |j        ¦  «         dS dS dS dS dS )zDraw a polygon.Nr   r   r%   ro   )Úmask©r   r   )rM   r.   Údraw_polygonr   r   ÚnewÚsizeÚcopyÚDrawÚpaster   )r3   rN   r2   r[   rR   r0   r_   r£   Úmask_inkÚfill_imr.   Úink_imr   s                r6   ÚpolygonzImageDraw.polygon`  sµ  € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×"Ò" 2 x°Ñ3Ô3Ð3Ø‰?˜s hš™°5¸A²:±:Ø˜ŠzˆzØ”	×&Ò& r¨3°°5Ñ9Ô9Ð9Ð9Ð9Ø”Ñ$õ ”y  d¤g¤lÑ3Ô3�ØŸ<š<¨™?œ?¨1Ô-�àŸ)š)™+œ+�Ý˜G‘}”}�Ø”	×&Ò& r¨8°QÑ7Ô7Ð7àŸš™œ�Ý˜F‘|”|�Ø ™	 A™�Ø”	×&Ò& r¨8°Q¸Ñ>Ô>Ð>à—
’
˜6¨�
Ñ0Ô0Ð0å”Y˜tœy¨$¬'¬,Ñ7Ô7�Ý˜B‘x”x�Ø”	×&Ò& r¨3°°5Ñ9Ô9Ð9Ø”—’˜bœe V¨b¬gÑ%5°t´wÑ?Ô?Ð?Ð?Ð?ð/ ˆ?˜˜°:°:ð %Ð$r8   Úbounding_circleú!Sequence[Sequence[float] | float]Ún_sidesÚrotationc                óX   — t          |||¦  «        }|                      ||||¦  «         dS )zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr®   )r3   r¯   r±   r²   r2   r[   rR   rN   s           r6   Úregular_polygonzImageDraw.regular_polygon„  s3   € õ /¨ÀÈÑRÔRˆØ�Š�R˜˜w¨Ñ.Ô.Ð.Ð.Ð.r8   c                óÖ   — |                       ||¦  «        \  }}|�| j                             ||d¦  «         |�+||k    r'|dk    r#| j                             ||d|¦  «         dS dS dS dS )zDraw a rectangle.Nr   r   )rM   r.   Údraw_rectanglerc   s          r6   Ú	rectanglezImageDraw.rectangle‘  s�   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×$Ò$ R¨°1Ñ5Ô5Ð5Øˆ?˜s hš˜°5¸A²:°:ØŒI×$Ò$ R¨¨a°Ñ7Ô7Ð7Ð7Ð7ð ˆ?˜˜°:°:r8   )Úcornersr¹   ú$tuple[bool, bool, bool, bool] | Nonec               ó$	  ‡ ‡‡‡‡‡‡‡‡‡‡‡— t          |d         t          t          f¦  «        r5t          t          t          t
                            |¦  «        \  \  ŠŠ\  ŠŠn%t          t          t
                   |¦  «        \  ŠŠŠŠ‰‰k     rd}t          |¦  «        ‚‰‰k     rd}t          |¦  «        ‚‰€dŠ|dz  Št          ‰¦  «        Št          ‰¦  «        Št          ‰¦  «        Št          ‰¦  «        Šd\  ŠŠt          ‰¦  «        rB‰‰‰z
  dz
  k    Š‰r‰‰z
  Š‰‰‰z
  dz
  k    Š‰r‰‰z
  Š‰r‰r‰  	                    |||‰¦  «        S ‰dk    st          ‰¦  «        s‰                      |||‰¦  «        S t          ‰dz  ¦  «        }‰                      ||¦  «        \  ŠŠdˆˆˆˆˆˆˆ ˆˆˆˆˆfd„}	‰��2 |	d¦  «         ‰r-‰ j                             ‰‰|z   dz   ‰‰|z
  dz
  f‰d¦  «         n>‰|z
  dz
  ‰|z   dz   k    r,‰ j                             ‰|z   dz   ‰‰|z
  dz
  ‰f‰d¦  «         ‰s¸‰s¶‰‰‰|z   ‰g}
‰d         r|
dxx         |dz   z  cc<   ‰d         r|
dxx         |dz   z  cc<   ‰ j                             |
‰d¦  «         ‰|z
  ‰‰‰g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         ‰��—‰‰k    �r’‰dk    �r� |	d¦  «         ‰s¼‰‰‰‰‰z   dz
  g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         ‰‰‰z
  dz   ‰‰g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         ‰sÄ‰‰‰‰z   dz
  ‰g}
‰d         r|
dxx         |dz   z  cc<   ‰d         r|
dxx         |dz   z  cc<   ‰ j                             |
‰d¦  «         ‰‰z
  dz   ‰‰‰g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         dS dS dS dS dS )zDraw a rounded rectangle.r   z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTro   )FFr   r‘   Úboolr   r   c                ó¬  •— ‰r‰‰‰‰z   ‰‰z   fddf‰‰‰z
  ‰‰z   ‰fddff}n�‰r‰‰‰‰z   ‰‰z   fddf‰‰z
  ‰‰‰‰z   fddff}n`t          ˆfd„t          ‰‰‰‰z   ‰‰z   fddf‰‰z
  ‰‰‰‰z   fddf‰‰z
  ‰‰z
  ‰‰fddf‰‰‰z
  ‰‰z   ‰fddff¦  «        D ¦   «         ¦  «        }|D ]-}| r ‰	j        j        |‰dfz   Ž  Œ ‰	j        j        |‰‰
fz   Ž  Œ.d S )NrŠ   rt   r   r|   é  c              3  ó2   •K  — | ]\  }}‰|         ¯|V — Œd S rF   © )rp   rq   Úpartr¹   s      €r6   r‚   zDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>ä  sG   øè è € ð ð á˜˜4ð ˜q”zðØðð ð ð ð ð r8   r   )rJ   Ú	enumerater.   rŸ   rU   )r‘   ÚpartsrÁ   r¹   Údr_   Úfull_xÚfull_yr0   r3   rR   Úx0Úx1Úy0Úy1s      €€€€€€€€€€€€r6   Údraw_cornersz1ImageDraw.rounded_rectangle.<locals>.draw_cornersÔ  s¨  ø€ àð ð ˜"˜b 1™f b¨1¡fÐ-¨s°CÐ8Ø˜"˜q™& " q¡&¨"Ð-¨q°#Ð6ð��ð ð ð ˜"˜b 1™f b¨1¡fÐ-¨r°3Ð7Ø˜1‘f˜b " b¨1¡fÐ-¨s°BÐ7ð��õ ð ð ð ð å#,à  " b¨1¡f¨b°1©fÐ5°s¸CÐ@Ø  1™f b¨"¨b°1©fÐ5°s¸CÐ@Ø  1™f b¨1¡f¨b°"Ð5°q¸"Ð=Ø  " q¡&¨"¨q©&°"Ð5°r¸3Ð?ð	ñ$ô $ðñ ô ñ ô �ð ð ?ð ?�Øð ?Ø+�D”IÔ+¨d°hÀ°]Ñ.BÐDÐDÐDà&�D”IÔ&¨°°e°Ñ)<Ð>Ð>Ð>ð	?ð ?r8   TrŒ   F)r‘   r¼   r   r   )rG   rŽ   rJ   r   r   rP   r*   ÚroundÚallrd   Úanyr¸   rS   rM   r.   r·   )r3   rN   rf   r2   r[   rR   r¹   r5   ÚrrË   ÚleftÚrightÚtopÚbottomrÄ   r_   rÅ   rÆ   r0   rÇ   rÈ   rÉ   rÊ   s   `    ``       @@@@@@@@@r6   Úrounded_rectanglezImageDraw.rounded_rectangleŸ  sô  øøøøøøøøøøøø€ õ �b˜”e�d¥E˜]Ñ+Ô+ð 	7Ý!%¥h­x½¬Ô&?ÀÑ!DÔ!DÑ‰HˆR�‘h�r˜2˜2å!¥(­5¤/°2Ñ6Ô6‰NˆB��B˜Ø�Š7ˆ7Ø:ˆCÝ˜S‘/”/Ð!Ø�Š7ˆ7Ø:ˆCÝ˜S‘/”/Ð!Øˆ?Ø.ˆGà�Q‰Jˆå�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆØ%‰ˆ�Ýˆw‰<Œ<ð 	>Ø˜"˜r™' A™+Ò%ˆFØð à˜‘G�Ø˜"˜r™' A™+Ò%ˆFØð à˜‘G�Øð >˜&ð >à—|’| B¨¨g°uÑ=Ô=Ð=à�Š6ˆ6�˜W™œˆ6ð —>’> " d¨G°UÑ;Ô;Ð;å��Q‘‰KŒKˆØŸš W¨dÑ3Ô3‰ˆˆXð 	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ðD ÑØˆL˜ÑÔÐàð XØ”	×(Ò(¨"¨b°1©f°q©j¸"¸bÀ1¹fÀq¹jÐ)IÈ8ÐUVÑWÔWÐWÐWØ�a‘˜!‘˜b 1™f q™jÒ(Ð(Ø”	×(Ò(¨"¨q©&°1©*°b¸"¸q¹&À1¹*ÀbÐ)IÈ8ÐUVÑWÔWÐWØð = &ð =Ø˜B  Q¡¨Ð+�Ø˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ”	×(Ò(¨¨x¸Ñ;Ô;Ð;à˜a™  R¨Ð,�Ø˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ”	×(Ò(¨°¸!Ñ<Ô<Ð<Ø‰?˜s hš™°5¸A²:±:ØˆL˜ÑÔÐàð 9Ø˜2˜r 2¨¡:°¡>Ð2�Ø˜1”:ð $Ø˜�F�F”F˜a !™e‘O�F�F‘FØ˜1”:ð $Ø˜�F�F”F˜a !™e‘O�F�F‘FØ”	×(Ò(¨¨c°1Ñ5Ô5Ð5à˜b 5™j¨1™n¨b°"Ð5�Ø˜1”:ð 'Ø˜1�I�I”I  Q¡Ñ&�I�I‘IØ˜1”:ð 'Ø˜1�I�I”I  Q¡Ñ&�I�I‘IØ”	×(Ò(¨°°aÑ8Ô8Ð8Øð 8Ø˜B  U¡
¨Q¡°Ð3�Ø˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ”	×(Ò(¨¨s°AÑ6Ô6Ð6à˜e™ a™¨¨R°Ð4�Ø˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ”	×(Ò(¨°°QÑ7Ô7Ð7Ð7Ð7ð= ˆ?˜˜°:°:ð"8ð 8r8   Útextr   r¼   c                ó<   — t          |t          ¦  «        rdnd}||v S ©Nú
ó   
)rG   rH   )r3   rÕ   Úsplit_characters      r6   Ú_multiline_checkzImageDraw._multiline_check+  s%   € Ý",¨Tµ3Ñ"7Ô"7ÐB˜$˜$¸Uˆà $Ð&Ð&r8   úlist[AnyStr]c                óZ   — |                      t          |t          ¦  «        rdnd¦  «        S r×   )ÚsplitrG   rH   )r3   rÕ   s     r6   Ú_multiline_splitzImageDraw._multiline_split0  s'   € Ø�zŠz¥*¨Tµ3Ñ"7Ô"7ÐB˜$˜$¸UÑCÔCÐCr8   ÚspacingÚstroke_widthc                óL   — |                       dd||¬¦  «        d         |z   |z   S )Nr¤   ÚA)rá   rŒ   )Útextbbox)r3   r   rà   rá   s       r6   Ú_multiline_spacingzImageDraw._multiline_spacing3  s5   € ð �MŠM˜& # t¸,ˆMÑGÔGÈÔJØñàñð	
r8   rm   rÐ   Fútuple[float, float]ÚanchorÚalignrH   Ú	directionÚfeaturesúlist[str] | NoneÚlanguageÚstroke_fillÚembedded_colorÚargsr   Úkwargsc                óÔ  ‡ ‡‡‡‡‡‡	‡
‡‡‡— ‰r‰ j         dvrd}t          |¦  «        ‚‰€(‰                      ‰                     d¦  «        ¦  «        Š‰                      ‰¦  «        r!‰                      ‰‰|‰‰||‰‰	‰
||‰¦  «        S dˆ fd	„}ddˆˆˆˆˆ	ˆˆˆ
ˆ ˆˆfd„} ||¦  «        }|�<d}|r|� ||¦  «        n|}|� |||¦  «          ||d
¦  «         dS  ||¦  «         dS dS )z
Draw text.©r    r   ú3Embedded color supported only in RGB and RGBA modesNr?   r2   rC   r   rS   c                óH   •— ‰                      | ¦  «        \  }}|€|€J ‚|S |S rF   )rM   )r2   r0   r_   r3   s      €r6   ÚgetinkzImageDraw.text.<locals>.getinko  s3   ø€ Ø ŸLšL¨Ñ.Ô.‰MˆC�Øˆ{ØÐ+Ð+Ð+Ø�ØˆJr8   r   r0   rá   rP   r   c                ó²  •— ‰j         }|dk    r‰rd}g }t          d¦  «        D ]*}|                     t          ‰|         ¦  «        ¦  «         Œ+t	          j        ‰d         ¦  «        d         t	          j        ‰d         ¦  «        d         f}	  ‰j        ‰|g‰¢R ‰‰‰|‰| |dœ‰¤Ž\  }}|d         |d         z   |d         |d         z   g}nQ# t          $ rD 	  ‰j        ‰|‰‰‰|‰| g‰¢R d|i‰¤Ž}n%# t          $ r ‰                     ‰¦  «        }Y nw xY wY nw xY w|dk    r”|| 
                    d¦  «        }}t          j        d| ¦  «        d         }	|                     d|	¦  «         |\  }
}‰j        �>‰j                             ||
||
|j        d         z   ||j        d         z   f|¦  «         d S d S ‰j                             ||| ¦  «         d S )	Nr   r   ro   r   )ré   rê   rì   rá   rç   r0   rO   rO   rŒ   rq   )r1   r�   ÚappendrS   ru   ÚmodfÚgetmask2ÚAttributeErrorÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr   rª   r§   r.   rZ   )r0   rá   r   rx   rq   rO   r£   ÚoffsetÚcolorÚ	ink_alphar†   r‡   rç   rï   ré   rî   rê   r   rð   rì   r3   rÕ   rN   s               €€€€€€€€€€€r6   Ú	draw_textz!ImageDraw.text.<locals>.draw_textv  s‚  ø€ Ø”=ˆDØ˜qÒ Ð  ^Ð Ø�ØˆEÝ˜1‘X”Xð )ð )�Ø—’�S  A¤™ZœZÑ(Ô(Ð(Ð(Ý”Y˜r !œuÑ%Ô% aÔ(­$¬)°B°q´EÑ*:Ô*:¸1Ô*=Ð>ˆEð.Ø,˜tœ}ØØð ð ð ð  ð (Ø%Ø%Ø!-Ø!ØØð ð  ð ð ð  ‘��fð ˜qœ F¨1¤IÑ-¨u°Q¬x¸&À¼)Ñ/CÐD��øÝ!ð .ð .ð .ð.Ø'˜4œ<ØØØ!Ø Ø Ø$ØØðð ðð ð ð $ðð !ðð �D�Døõ !ð .ð .ð .ØŸ<š<¨Ñ-Ô-�D�D�Dð.øøøøøð.øøøð" �vŠ~ˆ~ð # D§L¢L°¡O¤O�t�Ý"œK¨¨SÑ1Ô1°!Ô4�	Ø—’˜q )Ñ,Ô,Ð,Ø‘��1Ø”7Ð&Ø”G—M’MØ  1 a¨$¬)°A¬,Ñ&6¸¸D¼IÀa¼LÑ8HÐIÈ4ñô ð ð ð ð 'Ð&ð
 ”	×%Ò% e¨T°3Ñ7Ô7Ð7Ð7Ð7s6   Â?C Ã
DÃC6Ã5DÃ6DÄDÄDÄDÄD)r2   rC   r   rS   )r   )r0   rS   rá   rP   r   r   )r   r*   rB   ÚgetrÛ   Úmultiline_text)r3   rN   rÕ   r2   r   rç   rà   rè   ré   rê   rì   rá   rí   rî   rï   rð   r5   rõ   r  r0   Ú
stroke_inks   ``` ``  ```  ```     r6   rÕ   zImageDraw.text?  s§  øøøøøøøøøøø€ ð0 ð 	"˜dœi¨Ð>Ð>ØGˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= §¢¨KÑ!8Ô!8Ñ9Ô9ˆDà× Ò  Ñ&Ô&ð 	Ø×&Ò&ØØØØØØØØØØØØØñô ð ð 	ð 	ð 	ð 	ð 	ð 	ð4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ð 4	8ðl ˆf�T‰lŒlˆØˆ?ØˆJØð UØ4?Ð4K˜V˜V KÑ0Ô0Ð0ÐQT�
àÐ%à�	˜* lÑ3Ô3Ð3ð �	˜#˜qÑ!Ô!Ð!Ð!Ð!ð �	˜#‘”���ð ˆ?r8   )r?   c               óÊ  — |dk    rd}t          |¦  «        ‚|€d}n?t          |¦  «        dk    rd}t          |¦  «        ‚|d         dv rd}t          |¦  «        ‚|€|                      |¦  «        }g }d	}|                      |¦  «        }|                      |||¦  «        }|D ]A}|                      ||||	|
¬
¦  «        }|                     |¦  «         t          ||¦  «        }ŒB|d         }|d         dk    r|t          |¦  «        dz
  |z  dz  z  }n$|d         dk    r|t          |¦  «        dz
  |z  z  }t          |¦  «        D ]˜\  }}|d	         }|||         z
  }|d	         dk    r	||dz  z  }n|d	         dk    r||z  }|dk    rn,|dk    r	||dz  z  }n|dk    r||z  }nd}t          |¦  «        ‚|  	                    ||f||||||	|
|||¬¦  «         ||z  }Œ™d S )NÚttbú/ttb direction is unsupported for multiline textÚlaro   ú#anchor must be a 2 character stringr   Útbú'anchor not supported for multiline textr   )ré   rê   rì   Úmç       @rÄ   rÏ   rÐ   ÚcenterrÑ   ú)align must be "left", "center" or "right")ré   rê   rì   rá   rí   rî   )
r*   r�   rB   rß   rå   Ú
textlengthr÷   ÚmaxrÂ   rÕ   )r3   rN   rÕ   r2   r   rç   rà   rè   ré   rê   rì   rá   rí   rî   r?   r5   ÚwidthsÚ	max_widthÚlinesÚline_spacingr’   Ú
line_widthrÒ   ÚidxrÐ   Úwidth_differences                             r6   r  zImageDraw.multiline_text¼  sŒ  € ð. ˜ÒÐØCˆCÝ˜S‘/”/Ð!àˆ>ØˆFˆFÝ�‰[Œ[˜AÒÐØ7ˆCÝ˜S‘/”/Ð!Ø�AŒY˜$ÐÐØ;ˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDàˆØˆ	Ø×%Ò% dÑ+Ô+ˆØ×.Ò.¨t°W¸lÑKÔKˆØð 	3ð 	3ˆDØŸšØ�d i¸(ÈXð )ñ ô ˆJð �MŠM˜*Ñ%Ô%Ð%Ý˜I zÑ2Ô2ˆIˆIà�ŒeˆØ�!Œ9˜ÒÐØ•C˜‘J”J ‘N lÑ2°SÑ8Ñ8ˆCˆCØ�AŒY˜#ÒÐØ•C˜‘J”J ‘N lÑ2Ñ2ˆCå" 5Ñ)Ô)ð "	 ð "	 ‰IˆC�Ø�a”5ˆDØ(¨6°#¬;Ñ6Ðð �aŒy˜CÒÐØÐ(¨3Ñ.Ñ.��Ø˜”˜cÒ!Ð!ØÐ(Ñ(�ð ˜ŠˆØØ˜(Ò"Ð"ØÐ(¨3Ñ.Ñ.��Ø˜'Ò!Ð!ØÐ(Ñ(��àA�Ý  ‘o”oÐ%à�IŠIØ�s�ØØØØØ#Ø!Ø!Ø)Ø'Ø-ð ñ ô ð ð �<ÑˆCˆCðE"	 ð "	 r8   c               óü   — |                       |¦  «        rd}t          |¦  «        ‚|r| j        dvrd}t          |¦  «        ‚|€|                      |¦  «        }|rdn| j        }	|                     ||	|||¦  «        S )z@Get the length of a given string, in pixels with 1/64 precision.z&can't measure length of multiline textrò   ró   Nr   )rÛ   r*   r   rB   r1   Ú	getlength)
r3   rÕ   r   ré   rê   rì   rî   r?   r5   r   s
             r6   r  zImageDraw.textlength  s�   € ð" × Ò  Ñ&Ô&ð 	"Ø:ˆCÝ˜S‘/”/Ð!Øð 	"˜dœi¨Ð>Ð>ØGˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDØ'Ð:ˆvˆv¨T¬]ˆØ�~Š~˜d D¨)°X¸xÑHÔHÐHr8   ú!tuple[float, float, float, float]c               ó   — |r| j         dvrd}t          |¦  «        ‚|€|                      |¦  «        }|                      |¦  «        r|                      |||||||||	|
|¦  «        S |rdn| j        }|                     |||||	|
|¦  «        }|d         |d         z   |d         |d         z   |d         |d         z   |d         |d         z   fS )	z2Get the bounding box of a given string, in pixels.rò   ró   Nr   r   r   ro   rŒ   )r   r*   rB   rÛ   Úmultiline_textbboxr1   Úgetbbox)r3   rN   rÕ   r   rç   rà   rè   ré   rê   rì   rá   rî   r?   r5   r   Úbboxs                   r6   rä   zImageDraw.textbbox5  s  € ð, ð 	"˜dœi¨Ð>Ð>ØGˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDà× Ò  Ñ&Ô&ð 	Ø×*Ò*ØØØØØØØØØØØñô ð ð (Ð:ˆvˆv¨T¬]ˆØ�|Š|Ø�$˜	 8¨X°|ÀVñ
ô 
ˆð �AŒw˜˜Aœ‰  Q¤¨"¨Q¬%¡°°a´¸2¸a¼5±À$ÀqÄ'ÈBÈqÌEÁ/ÐQÐQr8   c               óö  — |dk    rd}t          |¦  «        ‚|€d}n?t          |¦  «        dk    rd}t          |¦  «        ‚|d         dv rd}t          |¦  «        ‚|€|                      |¦  «        }g }d	}|                      |¦  «        }|                      |||
¦  «        }|D ]B}|                      |||||	|¬
¦  «        }|                     |¦  «         t          ||¦  «        }ŒC|d         }|d         dk    r|t          |¦  «        dz
  |z  dz  z  }n$|d         dk    r|t          |¦  «        dz
  |z  z  }d }t          |¦  «        D �]
\  }}|d	         }|||         z
  }|d	         dk    r	||dz  z  }n|d	         dk    r||z  }|dk    rn,|dk    r	||dz  z  }n|dk    r||z  }nd}t          |¦  «        ‚|  	                    ||f||||||	|
|¬¦	  «	        }|€|}nnt          |d	         |d	         ¦  «        t          |d         |d         ¦  «        t          |d         |d         ¦  «        t          |d         |d         ¦  «        f}||z  }�Œ|€|d	         |d         |d	         |d         fS |S )Nr	  r
  r  ro   r  r   r  r  r   )ré   rê   rì   rî   r  r  rÄ   rÏ   rÐ   r  rÑ   r  )ré   rê   rì   rá   rî   rŒ   )r*   r�   rB   rß   rå   r  r÷   r  rÂ   rä   Úmin)r3   rN   rÕ   r   rç   rà   rè   ré   rê   rì   rá   rî   r?   r5   r  r  r  r  r’   r  rÒ   r"  r  rÐ   r  Ú	bbox_lines                             r6   r   zImageDraw.multiline_textbboxg  s  € ð* ˜ÒÐØCˆCÝ˜S‘/”/Ð!àˆ>ØˆFˆFÝ�‰[Œ[˜AÒÐØ7ˆCÝ˜S‘/”/Ð!Ø�AŒY˜$ÐÐØ;ˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDàˆØˆ	Ø×%Ò% dÑ+Ô+ˆØ×.Ò.¨t°W¸lÑKÔKˆØð 
	3ð 
	3ˆDØŸšØØØ#Ø!Ø!Ø-ð )ñ ô ˆJð �MŠM˜*Ñ%Ô%Ð%Ý˜I zÑ2Ô2ˆIˆIà�ŒeˆØ�!Œ9˜ÒÐØ•C˜‘J”J ‘N lÑ2°SÑ8Ñ8ˆCˆCØ�AŒY˜#ÒÐØ•C˜‘J”J ‘N lÑ2Ñ2ˆCà9=ˆå" 5Ñ)Ô)ð *	 ñ *	 ‰IˆC�Ø�a”5ˆDØ(¨6°#¬;Ñ6Ðð �aŒy˜CÒÐØÐ(¨3Ñ.Ñ.��Ø˜”˜cÒ!Ð!ØÐ(Ñ(�ð ˜ŠˆØØ˜(Ò"Ð"ØÐ(¨3Ñ.Ñ.��Ø˜'Ò!Ð!ØÐ(Ñ(��àA�Ý  ‘o”oÐ%àŸšØ�s�ØØØØ#Ø!Ø!Ø)Ø-ð &ñ 
ô 
ˆIð ˆ|Ø ��õ ˜˜Qœ ¨1¤Ñ.Ô.Ý˜˜Qœ ¨1¤Ñ.Ô.Ý˜˜Qœ ¨1¤Ñ.Ô.Ý˜˜Qœ ¨1¤Ñ.Ô.ð	�ð �<ÑˆC‰Càˆ<Ø�a”5˜"˜Qœ%  A¤¨¨1¬Ð-Ð-Øˆr8   rF   )r   r   r   r   r   r   )r   r9   )r?   r@   r   r9   )r0   rC   r2   rC   r   rD   )Nr   )rN   r   rO   rP   rQ   rP   r2   rC   rR   rS   r   r   )rN   rW   rX   r   r2   rC   r   r   )NNr   )rN   r   rO   rP   rQ   rP   r2   rC   r[   rC   rR   rS   r   r   )
rN   r   r2   rC   r[   rC   rR   rS   r   r   )rN   re   rf   rP   r2   rC   r[   rC   rR   rS   r   r   )Nr   N)
rN   r   r2   rC   rR   rS   rj   r   r   r   ©NN)r™   rš   r2   rC   r[   rC   r   r   )rN   r   r2   rC   r   r   )r   NNr   )r¯   r°   r±   rS   r²   rP   r2   rC   r[   rC   rR   rS   r   r   )rN   r   rf   rP   r2   rC   r[   rC   rR   rS   r¹   rº   r   r   )rÕ   r   r   r¼   )rÕ   r   r   rÜ   )r   r9   rà   rP   rá   rP   r   rP   )NNNrm   rÐ   NNNr   NF) rN   ræ   rÕ   r   r2   rC   r   r   rç   r   rà   rP   rè   rH   ré   r   rê   rë   rì   r   rá   rP   rí   rC   rî   r¼   rï   r   rð   r   r   r   )rN   ræ   rÕ   r   r2   rC   r   r   rç   r   rà   rP   rè   rH   ré   r   rê   rë   rì   r   rá   rP   rí   rC   rî   r¼   r?   r@   r   r   )NNNNF)rÕ   r   r   r   ré   r   rê   rë   rì   r   rî   r¼   r?   r@   r   rP   )	NNrm   rÐ   NNNr   F)rN   ræ   rÕ   r   r   r   rç   r   rà   rP   rè   rH   ré   r   rê   rë   rì   r   rá   rP   rî   r¼   r?   r@   r   r  )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r7   r>   rB   rM   rV   rX   r`   rd   ri   r’   r™   r‘   r”   r®   rµ   r¸   rÔ   rÛ   rß   rå   rÕ   r  r  rä   r   rÀ   r8   r6   r   r   @   s;  € € € € € € ð 	ð 	ð ð ð ñ ð(ð (ð (ð (ð (ðTð ð ð ð6"ð "ð "ð "ð 59ð'ð 'ð 'ð 'ð 'ð< !Øð;ð ;ð ;ð ;ð ;ð KOð	6ð 	6ð 	6ð 	6ð 	6ð  !Ø#Øð@ð @ð @ð @ð @ð& !Ø#Øð6ð 6ð 6ð 6ð 6ð$ !Ø#Øð
7ð 
7ð 
7ð 
7ð 
7ð !ØØ ðK=ð K=ð K=ð K=ð K=ð` !Ø#ð	2ð 2ð 2ð 2ð 2ð& !Ø#ØðCð Cð Cð Cð Cð +ð +ð +ð +ð +ð !Ø#Øð"@ð "@ð "@ð "@ð "@ðP Ø Ø#Øð/ð /ð /ð /ð /ð  !Ø#Øð8ð 8ð 8ð 8ð 8ð" Ø Ø#ØðJ8ð 9=ðJ8ð J8ð J8ð J8ð J8ð J8ðX'ð 'ð 'ð 'ð
Dð Dð Dð Dð

ð 

ð 

ð 

ð  !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'{ð {ð {ð {ð {ðB !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'Z ð* #'ð+Z ð Z ð Z ð Z ð Z ð Z ðH Ø $Ø%)Ø#Ø$ðIð #'ðIð Ið Ið Ið Ið IðL Ø!ØØØ $Ø%)Ø#ØØ$ð#0Rð& #'ð'0Rð 0Rð 0Rð 0Rð 0Rð 0Rðv Ø!ØØØ $Ø%)Ø#ØØ$ð#kð& #'ð'kð kð kð kð kð kð kð kr8   r   r   r   r   r   r   c                óv   — 	  t          | d¦  «        |¦  «        S # t          $ r t          | |¦  «        cY S w xY w)a‹  
    A simple 2D drawing interface for PIL images.

    :param im: The image to draw in.
    :param mode: Optional mode to use for color values.  For RGB
       images, this argument can be RGB or RGBA (to blend the
       drawing into the image).  For all other modes, this argument
       must be the same as the image mode.  If omitted, the mode
       defaults to the mode of the image.
    Úgetdraw)Úgetattrrú   r   )r   r   s     r6   r©   r©   Õ  sR   € ð#Ø%�w�r˜9Ñ%Ô% dÑ+Ô+Ð+øÝð #ð #ð #Ý˜˜TÑ"Ô"Ð"Ð"Ð"ð#øøøs   ‚ ›8·8úImage.Image | NoneÚhintsrë   ú)tuple[ImageDraw2.Draw | None, ModuleType]c                ób   — |�t          dd¦  «         ddlm} | � |j        | ¦  «        nd}||fS )z¦
    :param im: The image to draw in.
    :param hints: An optional list of hints. Deprecated.
    :returns: A (drawing context, drawing resource factory) tuple.
    Nz'hints' parameteré   r   )r   )r   r<   r   r©   )r   r/  r   r.   s       r6   r,  r,  æ  sR   € ð ÐÝÐ% rÑ*Ô*Ð*ØÐÐÐÐÐà"$ .ˆ?ˆ:Œ?˜2ÑÔÐ°d€DØ�ÐÐr8   ÚimagerN   útuple[int, int]Úvalueúfloat | tuple[int, ...]Úborderúfloat | tuple[int, ...] | NoneÚthreshrP   r   c                óz  — |                       ¦   «         }|€J ‚|\  }}	 |||f         }t          ||¦  «        |k    rdS ||||f<   n# t          t          f$ r Y dS w xY w||fh}	t	          ¦   «         }
|	rÇt	          ¦   «         }|	D ]®\  }}|dz   |f|dz
  |f||dz   f||dz
  ffD ]Ž\  }}||f|
v s|dk     s|dk     rŒ	 |||f         }|
                     ||f¦  «         |€t          ||¦  «        |k    }n|||fv}|r||||f<   |                     ||f¦  «         Œx# t          t          f$ r Y Œ‹w xY wŒ¯|	}
|}	|	°ÅdS dS )aï  
    .. warning:: This method is experimental.

    Fills a bounded region with a given color.

    :param image: Target image.
    :param xy: Seed position (a 2-item coordinate tuple). See
        :ref:`coordinate-system`.
    :param value: Fill color.
    :param border: Optional border value.  If given, the region consists of
        pixels with a color different from the border color.  If not given,
        the region consists of pixels having the same color as the seed
        pixel.
    :param thresh: Optional threshold value which specifies a maximum
        tolerable difference of a pixel value from the 'background' in
        order for it to be replaced. Useful for filling regions of
        non-homogeneous, but similar, colors.
    Nr   r   )r'   Ú_color_diffr*   Ú
IndexErrorÚsetÚadd)r3  rN   r5  r7  r9  Úpixelr†   r‡   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtr€   r2   s                   r6   Ú	floodfillrF  ö  sõ  € ð6 �JŠJ‰LŒL€EØÐÐÐØ�D€A€qðØ˜1˜a˜4”[ˆ
Ý�u˜jÑ)Ô)¨VÒ3Ð3ØˆFØˆˆa�ˆd‰ˆøÝ�
Ð#ð ð ð Øˆˆðøøøà�ˆFˆ8€Dõ ‘”€IØ
ð Ý‘5”5ˆØð 	-ð 	-‰DˆAˆqØ˜a™% ˜ a¨!¡e¨Q Z°!°Q¸±U°¸aÀÀQÁ¸ZÐHð -ð -‘��1à�q�6˜YÐ&Ð&¨!¨aª%¨%°1°q²5°5Øð-Ø˜a ˜dœ�Að —M’M 1 a &Ñ)Ô)Ð)Ø�~Ý*¨1¨jÑ9Ô9¸VÒC˜˜à ¨°¨Ð7˜Øð -Ø&+˜˜a ˜d™Ø Ÿš a¨ VÑ,Ô,Ð,øøõ #¥JÐ/ð ð ð Ø�Dðøøøð-ð" ˆ	Øˆð+ ð ð ð ð ð s(   ŸA ¿A ÁAÁAÂ<
DÄD/Ä.D/r¯   r°   r±   rS   r²   úlist[tuple[float, float]]c                ó¼  ‡‡‡‡	— t          |t          ¦  «        sd}t          |¦  «        ‚|dk     rd}t          |¦  «        ‚t          | t          t
          f¦  «        sd}t          |¦  «        ‚t          | ¦  «        dk    r\t          d„ | D ¦   «         ¦  «        sd}t          |¦  «        ‚t          t          t                   t	          | ¦  «        ¦  «        �^ ŠŠ	�nt          | ¦  «        dk    rít          | d         t          t
          f¦  «        rËt          d	„ | d         D ¦   «         ¦  «        r"t          | d
         t          t          f¦  «        sd}t          |¦  «        ‚t          | d         ¦  «        dk    rd}t          |¦  «        ‚t          t          t                   t	          | d         ¦  «        ¦  «        Št          t          | d
         ¦  «        Š	nd}t          |¦  «        ‚‰	dk    rd}t          |¦  «        ‚t          |t          t          f¦  «        sd}t          |¦  «        ‚dˆfd„Šdˆˆ	fd„Šdd„} |||¦  «        }ˆfd„|D ¦   «         S ) u‘  
    Generate a list of vertices for a 2D regular polygon.

    :param bounding_circle: The bounding circle is a sequence defined
        by a point and radius. The polygon is inscribed in this circle.
        (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``)
    :param n_sides: Number of sides
        (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon)
    :param rotation: Apply an arbitrary rotation to the polygon
        (e.g. ``rotation=90``, applies a 90 degree rotation)
    :return: List of regular polygon vertices
        (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``)

    How are the vertices computed?
    1. Compute the following variables
        - theta: Angle between the apothem & the nearest polygon vertex
        - side_length: Length of each polygon edge
        - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle)
        - polygon_radius: Polygon radius (last element of bounding_circle)
        - angles: Location of each polygon vertex in polar grid
            (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0])

    2. For each angle in angles, get the polygon vertex at that angle
        The vertex is computed using the equation below.
            X= xcos(Ï†) + ysin(Ï†)
            Y= âˆ’xsin(Ï†) + ycos(Ï†)

        Note:
            Ï† = angle in degrees
            x = 0
            y = polygon_radius

        The formula above assumes rotation around the origin.
        In our case, we are rotating around the centroid.
        To account for this, we use the formula below
            X = xcos(Ï†) + ysin(Ï†) + centroid_x
            Y = âˆ’xsin(Ï†) + ycos(Ï†) + centroid_y
    zn_sides should be an intrŒ   zn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S rF   ©rG   rS   rP   ©rp   rq   s     r6   r‚   z4_compute_regular_polygon_vertices.<locals>.<genexpr>o  s0   è è € ÐHÐH°1•:˜a¥#¥u Ñ.Ô.ÐHÐHÐHÐHÐHÐHr8   z0bounding_circle should only contain numeric dataro   r   c              3  óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S rF   rJ  rK  s     r6   r‚   z4_compute_regular_polygon_vertices.<locals>.<genexpr>u  sA   è è € ð 
ð 
Ø,-�J�q�3¥˜,Ñ'Ô'ð
ð 
ð 
ð 
ð 
ð 
r8   r   zBbounding_circle centre should contain 2D coordinates (e.g. (x, y))z[bounding_circle should contain 2D coordinates and a radius (e.g. (x, y, r) or ((x, y), r) )z$bounding_circle radius should be > 0z"rotation should be an int or floatr”   úlist[float]rv   rP   r   ræ   c                óô  •— t          | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  z
  ‰d         z   d¦  «        t          | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  z   ‰d         z   d¦  «        fS )Nr   rt   r   ro   )rÌ   ru   rƒ   r„   r…   )r”   rv   Úcentroids     €r6   Ú_apply_rotationz:_compute_regular_polygon_vertices.<locals>._apply_rotation’  sç   ø€ åØ�a”�4œ8¥D¤L°°w±Ñ$?Ô$?Ñ@Ô@Ñ@Ø˜”(�TœX¥d¤l°3¸±=Ñ&AÔ&AÑBÔBÑBñCà˜1”+ñð ñ	ô õ Ø�a”�4œ8¥D¤L°°w±Ñ$?Ô$?Ñ@Ô@Ñ@Ø˜”(�TœX¥d¤l°3¸±=Ñ&AÔ&AÑBÔBÑBñCà˜1”+ñð ñ	ô ð
ð 	
r8   ry   c                ó$   •— ‰dg} ‰|| ¦  «        S ©Nr   rÀ   )ry   Ústart_pointrP  Úpolygon_radiuss     €€r6   Ú_compute_polygon_vertexzB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertex¢  s   ø€ Ø% qÐ)ˆØˆ˜{¨EÑ2Ô2Ð2r8   r±   rS   r²   c                óš   — g }d| z  }dd|z  z
  |z   }t          d| ¦  «        D ]'}|                     |¦  «         ||z  }|dk    r|dz  }Œ(|S )Nrt   r¾   g      à?r   )r�   r÷   )r±   r²   r•   rv   Úcurrent_angleÚ_s         r6   Ú_get_anglesz6_compute_regular_polygon_vertices.<locals>._get_angles¦  ss   € ØˆØ˜‘-ˆà˜s W™}Ñ,°Ñ8ˆÝ�q˜'Ñ"Ô"ð 	%ð 	%ˆAØ�MŠM˜-Ñ(Ô(Ð(Ø˜WÑ$ˆMØ˜sÒ"Ð"Ø Ñ$�øØˆr8   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rÀ   rÀ   )rp   ry   rU  s     €r6   rr   z5_compute_regular_polygon_vertices.<locals>.<listcomp>¶  s%   ø€ Ð?Ð?Ð?¨uÐ#Ð# EÑ*Ô*Ð?Ð?Ð?r8   )r”   rM  rv   rP   r   ræ   )ry   rP   r   ræ   )r±   rS   r²   rP   r   rM  )
rG   rS   rü   r*   rŽ   rJ   r�   rÍ   r   rP   )
r¯   r±   r²   r5   rY  r•   rP  rU  rO  rT  s
         @@@@r6   r´   r´   7  s¢  øøøø€ õV �g�sÑ#Ô#ð Ø(ˆÝ˜‰nŒnÐØ�‚{€{Ø,ˆÝ˜‰oŒoÐõ �o­­e }Ñ5Ô5ð Ø4ˆÝ˜‰nŒnÐå
ˆ?ÑÔ˜qÒ Ð ÝÐHÐH¸ÐHÑHÔHÑHÔHð 	"ØDˆCÝ˜S‘/”/Ð!å$(­­e¬µd¸?Ñ6KÔ6KÑ$LÔ$LÑ!ˆ�>‘>Ý	ˆ_Ñ	Ô	 Ò	"Ð	"¥z°/À!Ô2DÅtÍUÀmÑ'TÔ'TÐ	"Ýð 
ð 
Ø1@ÀÔ1Cð
ñ 
ô 
ñ 
ô 
ð 	"å˜O¨AÔ.µµe°Ñ=Ô=ð	"ð EˆCÝ˜S‘/”/Ð!åˆ˜qÔ!Ñ"Ô" aÒ'Ð'ØVˆCÝ˜S‘/”/Ð!å��Uœ¥T¨/¸!Ô*<Ñ%=Ô%=Ñ>Ô>ˆÝ�e _°QÔ%7Ñ8Ô8ˆˆð<ð 	õ ˜‰oŒoÐà˜ÒÐØ4ˆÝ˜‰oŒoÐõ �h¥¥e Ñ-Ô-ð Ø2ˆÝ˜‰oŒoÐð
ð 
ð 
ð 
ð 
ð 
ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð
ð 
ð 
ð 
ð ˆ[˜ (Ñ+Ô+€Fð @Ð?Ð?Ð?¸Ð?Ñ?Ô?Ð?r8   Úcolor1Úcolor2c           	     óÜ   ‡‡— t          | t          ¦  «        r| n| fŠt          |t          ¦  «        r|n|fŠt          ˆˆfd„t          dt	          ‰¦  «        ¦  «        D ¦   «         ¦  «        S )zJ
    Uses 1-norm distance to calculate difference between two values.
    c              3  óT   •K  — | ]"}t          ‰|         ‰|         z
  ¦  «        V — Œ#d S rF   )Úabs)rp   rq   ÚfirstÚseconds     €€r6   r‚   z_color_diff.<locals>.<genexpr>Â  s8   øè è € ÐHÐH¨Q�s�5˜”8˜f QœiÑ'Ñ(Ô(ÐHÐHÐHÐHÐHÐHr8   r   )rG   rJ   Úsumr�   r�   )r[  r\  r`  ra  s     @@r6   r;  r;  ¹  sp   øø€ õ ! ­Ñ/Ô/Ð>ˆFˆF°f°Y€EÝ! &­%Ñ0Ô0Ð?ˆVˆV°v°i€FåÐHÐHÐHÐHÐHµ%¸½3¸v¹;¼;Ñ2GÔ2GÐHÑHÔHÑHÔHÐHr8   rF   )r   r   r   r   r   r   r&  )r   r.  r/  rë   r   r0  rR  )r3  r   rN   r4  r5  r6  r7  r8  r9  rP   r   r   )r¯   r°   r±   rS   r²   rP   r   rG  )r[  r6  r\  r6  r   rP   )(Ú
__future__r   ru   rþ   Úcollections.abcr   Útypesr   Útypingr   r   r   r	   r
   r   r<   r   r   Ú
_deprecater   Ú_typingr   r*  r-   r[   r   rú   r   r   rP   rJ   rS   rH   Ú_Inkr   r©   r,  rF  r´   r;  rÀ   r8   r6   ú<module>rj     s  ðð@ #Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ð 2Ð 1Ð 1Ñ 1ðØŒjÔ €G€GøØð ð ð Ø€G€G€Gðøøøð ð (Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'àˆU�E˜#˜s˜(”O SÐ(Ô)€ððRð Rð Rð Rð Rñ Rô Rð Rðj#ð #ð #ð #ð #ð$ >Bðð ð ð ð ð( .2Øð>ð >ð >ð >ð >ðB@ð @ð @ð @ðD	Ið 	Ið 	Ið 	Ið 	Ið 	Is   ÁA ÁAÁA