§
    £”jEç  ã                   óx  — d Z dZddlZddlZddlmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZ ddlmZ ddlmZ dd	lT dd
lmZmZ  e edd¦  «        ¦  «        Zdd	lT ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'  e$edd¦  «        Z( e$edd¦  «        Z) e$edd¦  «        Z*dZ+dZ,i dd“dej-        “dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!ej-        “d"e&“d#d“d$e“d%d&“Z.dd	l/T d'„ Z0d(„ Z1 G d)„ d*¦  «        Z2 G d+„ d,¦  «        Z3d-„ Z4d.„ Z5d/„ Z6d0„ Z7 G d1„ d2e3e2¦  «        Z8 G d3„ d4e8¦  «        Z9dmd5„Z:dmd6„Z;dnd8„Z<d9„ Z= G d:„ d;e9e¦  «        Z> G d<„ d=¦  «        Z? G d>„ d?e@¦  «        ZA eA¦   «         ZA G d@„ dAe8¦  «        ZB G dB„ dCeB¦  «        ZC G dD„ dEeB¦  «        ZD eE eFdF¦  «        ¦  «        \  ZGZHZIZJdGZKg dH¢ZLdodI„ZMdde'e'dJe'dKe'e&e&dLe&dMe&iZN G dN„ dOeD¦  «        ZO eO¦   «         ZPdpdP„ZQ G dQ„ dReO¦  «        ZRg dddfdS„ZS G dT„ dUeD¦  «        ZT G dV„ dWeD¦  «        ZU G dX„ dYeD¦  «        ZV G dZ„ d[eD¦  «        ZW G d\„ d]eD¦  «        ZX G d^„ d_eD¦  «        ZY G d`„ daeB¦  «        ZZ G db„ dceO¦  «        Z[defdd„Z\ G de„ dfe8¦  «        Z] G dg„ dhe2¦  «        Z^ G di„ dje8¦  «        Z_dk„ Z`eadlk    r e`¦   «          dS dS )qz3.5.60z9Core of the graphics library - defines Drawing and Shapesé    N)ÚpiÚcosÚsinÚsqrtÚradiansÚfloor)ÚFlowable)ÚshapeCheckingÚverboseÚdefaultGraphicsFontNameÚ_unset_ÚdecimalSymbol)Úlogger)Úcolors)Ú*)ÚisSeqÚasBytesé   )Úfp_str)ÚstringWidth)Útt2ps)ÚFILL_EVEN_ODDÚFILL_NON_ZEROzNon-Zero WindingzEven-OddÚ	transform©r   r   r   r   r   r   ÚstrokeColorÚstrokeWidthÚstrokeLineCapÚstrokeLineJoinÚstrokeMiterLimité
   ÚstrokeDashArrayÚstrokeOpacityÚfillOpacityÚfillOverprintFÚstrokeOverprintÚoverprintMaskÚ	fillColorÚfillModeÚfontSizeÚfontNameÚ
textAnchorÚstartc           	      ó¸  — d}| D ]!}t          |t          |||¦  «        ¦  «        }Œ"t          | ¦  «        |z  }|}	|d         dk    r	| }
|	|z
  }	n|d         dk    rd}
n| dz  }
|	|
z   }	|d         dk    r| }|dk    rd}nR|dk    r| }nH| dz  }nA|d         d	k    rd}|dk    r|}n*|dk    rd}n!|dz  }n| dz  }|dk    r| }n|dk    r|}nd}||
||||	fS )
Nr   ÚsÚng       @éÿÿÿÿÚeÚendr-   Úw)Úmaxr   Úlen)ÚtextÚfontr*   Úleadingr,   Ú	boxAnchorr4   ÚtÚhÚytÚybÚxbÚxts                úh/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/graphics/shapes.pyÚ_textBoxLimitsrB   C   sb  € Ø	€AØð 1ð 1ˆÝ�•+˜a  hÑ/Ô/Ñ0Ô0ˆˆåˆD‰	Œ	�'Ñ€AØ	€BØ�„|�SÒÐØˆRˆØ�!‰VˆˆØ	�1Œ�sÒ	Ð	ØˆˆàˆR�‰VˆØ�"‰Wˆà�„}�cÒÐØˆRˆØ�uÒÐ 1˜b˜bØ˜Ò Ð ¨ r " "Ø�2�c‘6ˆbˆbØ	�2Œ˜Ò	Ð	ØˆØ�uÒÐ 1˜b˜bØ˜Ò Ð  q " "Ø�S‘5ˆbˆbàˆR�‰VˆØ�uÒÐ B 3˜b˜bØ˜Ò Ð  r " "Øˆbàˆr�1�a˜˜RÐÐó    c           	      ó  — t          t          |¦  «        | |f| |z   |f| |z   ||z   f| ||z   ff¦  «        }d„ |D ¦   «         }d„ |D ¦   «         }t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        |fS )z�
    Find the corner points of the rotated w x h sized box at x,y
    return the corner points and the min max points in the original space
    c                 ó   — g | ]
}|d          ‘ŒS ©r   © ©Ú.0Úxs     rA   ú
<listcomp>z%_rotatedBoxLimits.<locals>.<listcomp>k   ó   € ÐÐÐ�!ˆˆ1ŒÐÐÐrC   c                 ó   — g | ]
}|d          ‘ŒS ©r   rG   rH   s     rA   rK   z%_rotatedBoxLimits.<locals>.<listcomp>l   rL   rC   )ÚzTransformPointsÚrotateÚminr5   )rJ   Úyr4   r<   ÚangleÚCÚXÚYs           rA   Ú_rotatedBoxLimitsrW   e   s‘   € õ
 	� ™œ¨¨1¨¨q°©s°1¨g°q¸±s¸1¸Q¹3°iÀÀ1ÀQÁ3ÀÐ'HÑIÔI€AØÐ�qÐÑÔ€AØÐ�qÐÑÔ€AÝˆq‰6Œ6•3�q‘6”6�3˜q™6œ6¥3 q¡6¤6¨1Ð,Ð,rC   c                   ó   — e Zd ZdZd„ ZdS )Ú_DrawTimeResizeablez:Addin class to provide the horribleness of _drawTimeResizec                 ó´   — t          | d¦  «        rE| j        }|j        }||c|_        |_        t          |d¦  «        r|                     ||¦  «         d S d S d S )NÚ_canvasÚ_drawTimeResize)Úhasattrr[   Ú_drawingÚwidthÚheightr\   )Úselfr4   r<   ÚcanvasÚdrawings        rA   r\   z#_DrawTimeResizeable._drawTimeResizeq   su   € Ý�4˜	Ñ"Ô"ð 	,Ø”\ˆFØ”oˆGØ,-¨qÐ)ˆGŒM˜7œ>Ý�vÐ/Ñ0Ô0ð ,Ø×&Ò& q¨Ñ+Ô+Ð+Ð+Ð+ð	,ð 	,ð,ð ,rC   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r\   rG   rC   rA   rY   rY   o   s)   € € € € € ØDÐDð,ð ,ð ,ð ,ð ,rC   rY   c                   ó   — e Zd Zi fd„ZdS )Ú_SetKeyWordArgsc                 ó\   — |                      ¦   «         D ]\  }}t          | ||¦  «         ŒdS )z9In general properties may be supplied to the constructor.N)ÚitemsÚsetattr)ra   ÚkeywordsÚkeyÚvalues       rA   Ú__init__z_SetKeyWordArgs.__init__z   s>   € à"Ÿ.š.Ñ*Ô*ð 	&ð 	&‰JˆC�Ý�D˜#˜uÑ%Ô%Ð%Ð%ð	&ð 	&rC   N)rd   re   rf   rp   rG   rC   rA   ri   ri   y   s+   € € € € € Ø "ð &ð &ð &ð &ð &ð &rC   ri   c                 ó¬   — d„ | D ¦   «         }|sd S |d         \  }}}}|dd …         D ]'\  }}}}	||k     r|}||k    r|}||k     r|}|	|k    r|	}Œ(||||fS )Nc                 ó   — g | ]}|®|‘ŒS ©NrG   rH   s     rA   rK   z"getRectsBounds.<locals>.<listcomp>‡   s   € Ð.Ð.Ð.ˆq  ˆ   rC   r   r   rG   )
ÚrectListÚLÚxMinÚyMinÚxMaxÚyMaxÚx1Úy1Úx2Úy2s
             rA   ÚgetRectsBoundsr~   …   s™   € à.Ð.�HÐ.Ñ.Ô.€AØÐ�T�Tà˜qœTÑ€Dˆ$��dØ˜a˜b˜bœEð ð ÑˆˆR��RØ�Š9ˆ9ØˆDØ�Š9ˆ9ØˆDØ�Š9ˆ9ØˆDØ�Š9ˆ9ØˆDøØ�$˜˜dÐ#Ð#rC   c                 óô  — |d||z
  z  z
  | z
  }d|d|z  z
  | z   z  }|| z
  }| g}||z  d|z  |z  z
  }|dk    rªt          |¦  «        }|dk     r| }d||z   z  }	g }
	 |
                     |	|z  ¦  «         n#  Y nxY w	 |
                     ||	z  ¦  «         n#  Y nxY w|dz  }|dz  }|
D ]9}d|cxk    rdk    r*n Œ|                     ||||z  |z   z  |z   z  | z   ¦  «         Œ:|                     |¦  «         |S )ag  
    this is used to find if a curveTo path operator has extrema in its range
    The curveTo operator is defined by the points y0, y1, y2, y3

        B(t):=(1-t)^3*y0+3*(1-t)^2*t*y1+3*(1-t)*t^2*y2+t^3*y3
            :=t^3*(y3-3*y2+3*y1-y0)+t^2*(3*y2-6*y1+3*y0)+t*(3*y1-3*y0)+y0
    and is a cubic bezier curve.

    The differential is a quadratic
        t^2*(3*y3-9*y2+9*y1-3*y0)+t*(6*y2-12*y1+6*y0)+3*y1-3*y0

    The extrema must be at real roots, r, of the above which lie in 0<=r<=1

    The quadratic coefficients are
        a=3*y3-9*y2+9*y1-3*y0 b=6*y2-12*y1+6*y0 c=3*y1-3*y0
    or
        a=y3-3*y2+3*y1-y0 b=2*y2-4*y1+2*y0 c=y1-y0  (remove common factor of 3)
    or
        a=y3-3*(y2-y1)-y0 b=2*(y2-2*y1+y0) c=y1-y0

    The returned value is [y0,x1,x2,y3] where if found x1, x2 are any extremals that were found;
    there can be 0, 1 or 2 extremals
    é   é   é   r   g      à¿g      ø?r   )r   Úappend)Úy0r{   r}   Úy3ÚaÚbÚcrV   ÚdÚqÚRr;   s               rA   Ú_getBezierExtremarŒ   –   sT  € ð0 	ˆˆBˆr‰E‰�l�2�o€AØˆˆAˆb‰D‰�‰�n€AØˆ�e€AØ	ˆ€Að 	
ˆ!‰ˆa�‰c�!‰e‰€AØˆ!‚t€tÝ�‰GŒGˆØˆQŠ3ˆ3�Q�B�Ø�!�A‘#‰JˆØˆð	Ø�HŠH�Q�q‘S‰MŒMˆMˆMøð	ØˆDøøøð	Ø�HŠH�Q�q‘S‰MŒMˆMˆMøð	ØˆDøøøØ	ˆS‰ˆØ	ˆQ‰ˆØð 	-ð 	-ˆAØ�!ˆwˆwŠwˆw�QŠwˆwˆwˆwˆwà—’˜˜A˜q ™s 1™u™I a™K™¨Ñ+Ñ,Ô,Ð,øØ‡H‚HˆR�L„L€LØ€Hs   ÁA5 Á5A9Á=B ÂBc           
      óN  — t          | ¦  «        }| fd„}t          t          |t          d|d¦  «        ¦  «        ¦  «        }t          t          |t          d|d¦  «        ¦  «        ¦  «        }t	          |¦  «        t	          |¦  «        t          |¦  «        t          |¦  «        fS )Nc                 ó   — ||          S rs   rG   )ÚiÚps     rA   ú<lambda>zgetPathBounds.<locals>.<lambda>Í   s
   € ˜Q˜qœT€ rC   r   r�   r   )r6   ÚlistÚmapÚrangerQ   r5   )Úpointsr0   ÚfÚxsÚyss        rA   ÚgetPathBoundsr™   Ë   s„   € ÝˆF‰Œ€AØÐ!Ð!Ð!€AÝ	�c�!•E˜!˜A˜a‘L”LÑ!Ô!Ñ	"Ô	"€BÝ	�c�!•E˜!˜A˜a‘L”LÑ!Ô!Ñ	"Ô	"€BÝ�‰GŒG•S˜‘W”W�c "™gœg¥s¨2¡w¤wÐ/Ð/rC   c                 óò   — | d         }t          |¦  «        rRd„ | D ¦   «         }d„ | D ¦   «         }t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        fS t          | ¦  «        S )z"Helper function for list of pointsr   c                 ó   — g | ]
}|d          ‘ŒS rF   rG   ©rI   Úxys     rA   rK   z#getPointsBounds.<locals>.<listcomp>Ö   ó   € Ð(Ð(Ð(˜ˆb�ŒeÐ(Ð(Ð(rC   c                 ó   — g | ]
}|d          ‘ŒS rN   rG   rœ   s     rA   rK   z#getPointsBounds.<locals>.<listcomp>×   rž   rC   )r   rQ   r5   r™   )Ú	pointListÚfirstr—   r˜   s       rA   ÚgetPointsBoundsr¢   Ò   st   € à�aŒL€EÝˆU�|„|ð (Ø(Ð(˜iÐ(Ñ(Ô(ˆØ(Ð(˜iÐ(Ñ(Ô(ˆÝ�B‘”�˜R™œ¥# b¡'¤'­3¨r©7¬7Ð3Ð3å˜YÑ'Ô'Ð'rC   c                   óZ   — e Zd ZdZ e¦   «         Zd„ Zdd„Zd„ Zdd„Z	d„ Z
er	 d	„ Zd
„ ZdS )ÚShapea1  Base class for all nodes in the tree. Nodes are simply
    packets of data to be created, stored, and ultimately
    rendered - they don't do anything active.  They provide
    convenience methods for verification but do not
    check attribiute assignments or use any clever setattr
    tricks this time.c                 ó:   — t          d| j        j        z  ¦  «        ‚)zReturn a clone of this shape.z!No copy method implemented for %s)ÚNotImplementedErrorÚ	__class__rd   ©ra   s    rA   Úcopyz
Shape.copyê   s   € õ "Ð"EÈÌÔH_Ñ"_Ñ`Ô`Ð`rC   r   c                 ón   — i }| j                              ¦   «         D ]\  }}|dd…         dk    r|||<   Œ|S )zDInterface to make it easy to extract automatic
        documentationr   r   Ú_)Ú__dict__rk   )ra   ÚrecurÚpropsrn   ro   s        rA   ÚgetPropertieszShape.getPropertiesð   sJ   € ð ˆØœ-×-Ò-Ñ/Ô/ð 	#ð 	#‰JˆC�Ø�1�Q�3Œx˜3ŠˆØ"��c‘
øØˆrC   c                 ó:   — | j                              |¦  «         dS )zfSupports the bulk setting if properties from,
        for example, a GUI application or a config file.N)r¬   Úupdate)ra   r®   s     rA   ÚsetPropertieszShape.setPropertiesý   s    € ð 	Œ×Ò˜UÑ#Ô#Ð#Ð#Ð#rC   Ú c                 óÞ   — t          |                      ¦   «                              ¦   «         ¦  «        }|                     ¦   «          |r|dz   }|D ]\  }}t	          |›|›d|›�¦  «         ŒdS )z�Convenience. Lists them on standard output.  You
        may provide a prefix - mostly helps to generate code
        samples for documentation.ú.z = N)r’   r¯   rk   ÚsortÚprint)ra   ÚprefixÚpropListÚnamero   s        rA   ÚdumpPropertieszShape.dumpProperties  s„   € õ
 ˜×*Ò*Ñ,Ô,×2Ò2Ñ4Ô4Ñ5Ô5ˆØ�Š‰ŒˆØð 	"Ø˜c‘\ˆFØ%ð 	7ð 	7‰MˆT�5Ý  ¨¨¨¨u¨uÐ5Ñ6Ô6Ð6Ð6ð	7ð 	7rC   c                 óœ  — | j         �Â| j                             ¦   «         D ]'}|d         dk    r|| j         v sJ d|›d| ›�¦   «         ‚Œ(| j                              ¦   «         D ]i\  }}t	          | |¦  «        sJ d|›d| ›�¦   «         ‚t          | |¦  «        }|                     |¦  «        sJ d|›d	|›d
| j        j        ›�¦   «         ‚ŒhdS dS )a.  If the programmer has provided the optional
        _attrMap attribute, this checks all expected
        attributes are present; no unwanted attributes
        are present; and (if a checking function is found)
        checks each attribute.  Either succeeds or raises
        an informative exception.Nr   r«   zUnexpected attribute z
 found in zMissing attribute z from zInvalid value z for attribute z
 in class )	Ú_attrMapr¬   Úkeysrk   r]   ÚgetattrÚvalidater§   rd   )ra   rn   ÚattrÚ	metavaluero   s        rA   ÚverifyzShape.verify  sF  € ð Œ=Ð$Ø”}×)Ò)Ñ+Ô+ð eð e�Ø�q”6˜S’=�=Ø $¤-Ð/Ð/Ð/Ð/ÐZ]ÐZ]ÐZ]Ð_cÐ_cÐ1dÑ/Ô/Ð/øØ#'¤=×#6Ò#6Ñ#8Ô#8ð Kð K‘��iÝ˜t TÑ*Ô*ÐYÐYÐYÈdÈdÈdÐTXÐTXÐ,YÑYÔYÐYÝ  dÑ+Ô+�Ø ×)Ò)¨%Ñ0Ô0ð  Kð  Kð  KÐejÐejÐejÐlpÐlpÐlpÐrvô  sAô  sJð  sJð  3Kñ  Kô  Kð  Kð  Kð %Ð$ðKð KrC   c                 ó(   — t          | ||¦  «         dS )zSBy default we verify.  This could be off
            in some parallel base classes.N)ÚvalidateSetattr)ra   rÁ   ro   s      rA   Ú__setattr__zShape.__setattr__%  s   € õ ˜D  eÑ,Ô,Ð,Ð,Ð,rC   c                 ó    — t          d¦  «        ‚)ú5Returns bounding rectangle of object as (x1,y1,x2,y2)z+Shapes and widgets must implement getBounds©r¦   r¨   s    rA   Ú	getBoundszShape.getBounds*  s   € å!Ð"OÑPÔPÐPrC   NrN   )r³   )rd   re   rf   rg   ÚAttrMapr½   r©   r¯   r²   r»   rÃ   r
   rÆ   rÊ   rG   rC   rA   r¤   r¤   á   s¸   € € € € € ðð ð ˆw‰yŒy€Hðað að aðð ð ð ð$ð $ð $ð
7ð 
7ð 
7ð 
7ðKð Kð Kð" ð -ð	6ð	-ð 	-ð 	-ð
Qð Qð Qð Qð QrC   r¤   c                   ó*  — e Zd ZdZ e eedd¬¦  «         eed¬¦  «         eed¬¦  «         eedd¬¦  «         eed	d¬¦  «        ¬
¦  «        Z	d„ Z
d„ Zd!d„Zd!d„Zd!d„Zd„ Zd„ Zd„ Zd"d„Zd„ Zd„ Zd#d„Zd$d„Zd%d„Zd$d„Zd$d„Zd„ Zd„ Zd „ ZdS )&ÚGroupa  Groups elements together.  May apply a transform
    to its contents.  Has a publicly accessible property
    'contents' which may be used to iterate over contents.
    In addition, child nodes may be given a name in which
    case they are subsequently accessible as properties.z"Coordinate transformation to applyr   ©ÚdescÚadvancedUsagezContained drawable elements©rÏ   úTurn on stroke overprintingúTurn on fill overprintingúoverprinting for ordinary CMYK)r   Úcontentsr&   r%   r'   c                 óÈ   — | j                              ¦   «         | _         g | _        d| _        |D ]}|                      |¦  «         Œt
                               | |¦  «         dS )z‰Initial lists of elements may be provided to allow
        compact definitions in literal Python code.  May or
        may not be useful.r   N)r½   ÚclonerÕ   r   Úaddri   rp   )ra   Úelementsrm   Úelts       rA   rp   zGroup.__init__=  se   € ð œ×+Ò+Ñ-Ô-ˆŒØˆŒØ&ˆŒØð 	ð 	ˆCØ�HŠH�S‰MŒMˆMˆMõ 	× Ò   xÑ0Ô0Ð0Ð0Ð0rC   c                 óz   — |r8|| j         vrt          t          ¦  «        | j         |<   t          | ||¦  «         dS dS )zLif name is not None add an attribute pointing to node and add to the attrMapN)r½   ÚAttrMapValueÚisValidChildrl   )ra   rº   Únodes      rA   Ú_addNamedNodezGroup._addNamedNodeM  sM   € àð 	&Ø˜4œ=Ð(Ð(Ý&2µ<Ñ&@Ô&@�”˜dÑ#Ý�D˜$ Ñ%Ô%Ð%Ð%Ð%ð	&ð 	&rC   Nc                 ó    — |�Kt          |¦  «        s
J d¦   «         ‚| j                             |¦  «         |                      ||¦  «         dS dS )z“Appends non-None child node to the 'contents' attribute. In addition,
        if a name is provided, it is subsequently accessible by name
        Nz1Can only add Shape or UserNode objects to a Group)rÝ   rÕ   rƒ   rß   ©ra   rÞ   rº   s      rA   rØ   z	Group.addT  sa   € ð
 ÐÝ Ñ%Ô%ÐZÐZÐ'ZÑZÔZÐZØŒM× Ò  Ñ&Ô&Ð&Ø×Ò˜t DÑ)Ô)Ð)Ð)Ð)ð ÐrC   c                 óJ   — |                       ||¬¦  «         | j        d         S )N)rº   r1   )rØ   rÕ   rá   s      rA   Ú_nnz	Group._nn^  s%   € Ø�Š�˜DˆÑ!Ô!Ð!ØŒ}˜RÔ Ð rC   c                 óÊ   — |�`t          |¦  «        s
J d¦   «         ‚|dk     r|g| j        ||…<   n| j                             ||¦  «         |                      ||¦  «         dS dS )z4Inserts sub-node n in contents at specified locationNz4Can only insert Shape or UserNode objects in a Groupr   )rÝ   rÕ   Úinsertrß   )ra   r�   r0   rº   s       rA   rå   zGroup.insertb  s{   € àˆ=Ý ‘?”?ÐZÐZÐ$ZÑZÔZÐZØ�ŠsˆsØ%& C�”˜a ˜cÑ"Ð"à”×$Ò$ Q qÑ)Ô)Ð)Ø×Ò˜t AÑ&Ô&Ð&Ð&Ð&ð ˆ=rC   c                 óD  — t          | t          ¦  «        rt          | j        | j        ¦  «        pt	          ¦   «         }| j                             ¦   «         |_        t          |d¦  «        r| j        dd…         |_        | j	        }|j	        j
        }|D ]u}t          |t          ¦  «        r|                     ¦   «         }n>t          |t          ¦  «        r|                     ¦   «         }n|                     ¦   «         } ||¦  «         Œv|                      |¦  «         |S )z9Return a new object which only contains primitive shapes.r   N)Ú
isinstanceÚDrawingr_   r`   rÍ   r½   r×   r]   r   rÕ   rƒ   ÚUserNodeÚprovideNodeÚexpandUserNodesr©   Ú_copyNamedContents)ra   ÚobjÚself_contentsr†   ÚchildÚnewChilds         rA   rë   zGroup.expandUserNodesl  s  € õ ˜�gÑ&Ô&ÐJ­7°4´:¸d¼kÑ+JÔ+JÐUÍeÉgÌgˆØ”}×*Ò*Ñ,Ô,ˆŒÝ�3�{Ñ#Ô#ÐF°T´^ÀAÀAÀAÔ5F S¤]àœˆØŒLÔˆØ"ð 	ð 	ˆEÝ˜%¥Ñ*Ô*ð (Ø ×,Ò,Ñ.Ô.��Ý˜E¥5Ñ)Ô)ð (Ø ×0Ò0Ñ2Ô2��à Ÿ:š:™<œ<�ØˆAˆh‰KŒKˆKˆKà×Ò Ñ$Ô$Ð$Øˆ
rC   c                 ó†  — t          ¦   «         }t          | d¦  «        r| j        |_        t          |d¦  «        r| j        dd…         |_        |                      ¦   «         dd…         }|rÔ|                     d¦  «        }t          |t          ¦  «        r)|                     d| 	                    ¦   «         ¦  «         nt          |t           ¦  «        rU| 
                    ¦   «         }|j        dk    r |j                             |j        ¦  «         n+|                     |¦  «         n|                     |¦  «         |°Ô|S )z return a fully expanded objectÚ	__label__r   Nr   r   )rÍ   r]   rò   r   ÚgetContentsÚpoprç   ré   rå   rê   Ú_exploderÕ   ÚextendrØ   )ra   rí   ÚPr0   s       rA   rõ   zGroup._explode‚  s!  € å‰gŒgˆÝ�4˜Ñ$Ô$ð 	)Øœ.ˆCŒMÝ�3�{Ñ#Ô#ÐF°T´^ÀAÀAÀAÔ5F S¤]Ø×ÒÑÔ˜q˜q˜qÔ!ˆØð 	Ø—’�a‘”ˆAÝ˜!�XÑ&Ô&ð 	Ø—’˜˜1Ÿ=š=™?œ?Ñ+Ô+Ð+Ð+Ý˜A�uÑ%Ô%ð Ø—J’J‘L”L�Ø”; Ò-Ð-Ø”L×'Ò'¨¬
Ñ3Ô3Ð3Ð3à—G’G˜A‘J”J�J�Jà—’˜‘
”
�
ð ð 	ð ˆ
rC   c                 óN   — | j         D ]}|j                              |¦  «         Œd S rs   )rÕ   rƒ   )ra   rí   rï   s      rA   Ú_copyContentszGroup._copyContents—  s6   € Ø”]ð 	'ð 	'ˆEØŒL×Ò Ñ&Ô&Ð&Ð&ð	'ð 	'rC   ©rÕ   c                 ó^  — ddl m } | j        }|s&t          | j                             ¦   «         ¦  «        }| j                             ¦   «         D ]]\  }}||v r2|                     |¦  «        }t          |||j        |         ¦  «         Œ;||v r||vrt          || ||¦  «        ¦  «         Œ^d S )Nr   )r©   )	r©   rÕ   r’   r½   r¾   r¬   rk   Úindexrl   )	ra   rí   ÚaKeysÚnoCopyr©   rî   ÚkÚvÚposs	            rA   rì   zGroup._copyNamedContents›  sÌ   € ØÐÐÐÐÐØœˆØÐ8�d 4¤=×#5Ò#5Ñ#7Ô#7Ñ8Ô8�eØ”M×'Ò'Ñ)Ô)ð 	)ð 	)‰DˆAˆqØ�MÐ!Ð!Ø#×)Ò)¨!Ñ,Ô,�Ý˜˜Q ¤¨SÔ 1Ñ2Ô2Ð2Ð2Ø�e�� ¨  Ý˜˜Q   Q¡¤Ñ(Ô(Ð(øð	)ð 	)rC   c                 ó–   — | j                              ¦   «         |_         |                      |¦  «         |                      |¦  «         |S )zcopies to obj)r½   r×   rù   rì   ©ra   rí   s     rA   Ú_copyzGroup._copy¦  sD   € à”}×*Ò*Ñ,Ô,ˆŒØ×Ò˜3ÑÔÐØ×Ò Ñ$Ô$Ð$Øˆ
rC   c                 óP   — |                       |                      ¦   «         ¦  «        S )zreturns a copy)r  r§   r¨   s    rA   r©   z
Group.copy­  s   € à�zŠz˜$Ÿ.š.Ñ*Ô*Ñ+Ô+Ð+rC   r   c                 óX   — t          | j        t          |||¦  «        ¦  «        | _        dS ©z&Convenience to help you set transformsN)Úmmultr   rP   )ra   ÚthetaÚcxÚcys       rA   rP   zGroup.rotate±  s%   € å˜tœ~­v°e¸B¸rÑ/BÔ/BÑCÔCˆŒˆˆrC   c                 óV   — t          | j        t          ||¦  «        ¦  «        | _        dS r  )r  r   Ú	translate)ra   ÚdxÚdys      rA   r  zGroup.translateµ  s#   € å˜tœ~­y¸¸RÑ/@Ô/@ÑAÔAˆŒˆˆrC   c                 óV   — t          | j        t          ||¦  «        ¦  «        | _        dS r  )r  r   Úscale)ra   ÚsxÚsys      rA   r  zGroup.scale¹  s!   € å˜tœ~­u°R¸©}¬}Ñ=Ô=ˆŒˆˆrC   c                 óŠ   — t          t          | j        t          |¦  «        ¦  «        t          |¦  «        ¦  «        | _        dS r  )r  r   ÚskewXÚskewY)ra   ÚkxÚkys      rA   Úskewz
Group.skew½  s/   € å�u T¤^µU¸2±Y´YÑ?Ô?ÅÀbÁ	Ä	ÑJÔJˆŒˆˆrC   c                 ó8   — | j         dd…         ||fz   | _         dS )z2Convenience function to set the origin arbitrarilyNéþÿÿÿ)r   ©ra   rJ   rR   s      rA   ÚshiftzGroup.shiftÁ  s!   € àœ¨¨¨Ô,¨a°¨UÑ2ˆŒˆˆrC   c                 óŒ   — t           | _        | j                             t	          | di ¦  «        ¦  «         || _        || _        dS )z| Convenience function to make a drawing from a group
            After calling this the instance will be a drawing!
        Ú_xtraAttrMapN)rè   r§   r½   r±   r¿   r_   r`   )ra   r_   r`   s      rA   Ú	asDrawingzGroup.asDrawingÅ  s?   € õ !ˆŒØŒ×Ò�W T¨.¸Ñ<Ô<Ñ=Ô=Ð=ØˆŒ
ØˆŒˆˆrC   c                 óN   — t          | dd¦  «        }| j        }|r
||vr|g|z   }|S )z[Return the list of things to be rendered
        override to get more complicated behaviourÚ
backgroundN)r¿   rÕ   )ra   r‡   rT   s      rA   ró   zGroup.getContentsÎ  s9   € õ �D˜ dÑ+Ô+ˆØŒMˆØÐ&�˜!�� !  Q¡˜QØˆrC   c                 óJ  — | j         r›g }| j         D ])}|                     |                     ¦   «         ¦  «         Œ*t          |¦  «        }|€d S |\  }}}}| j        }||g||g||g||gg}g }	|D ]%}
|	                     t          ||
¦  «        ¦  «         Œ&t          |	¦  «        S d S rs   )rÕ   rƒ   rÊ   r~   r   ÚtransformPointr¢   )ra   r‡   Úelemrz   r{   r|   r}   ÚtransÚcornersÚ
newCornersÚcorners              rA   rÊ   zGroup.getBoundsÖ  sÕ   € ØŒ=ð 	ØˆAØœð +ð +�Ø—’˜ŸšÑ)Ô)Ñ*Ô*Ð*Ð*Ý Ñ"Ô"ˆBØˆz $ $Ø‰NˆB��B˜Ø”NˆEØ˜2�w  R ¨2¨r¨(°R¸°GÐ<ˆGØˆJØ!ð Að A�Ø×!Ò!¥.°¸Ñ"?Ô"?Ñ@Ô@Ð@Ð@Ý" :Ñ.Ô.Ð.ð �4rC   rs   )Nrú   ©r   r   rF   rN   )rd   re   rf   rg   rË   rÜ   ÚisTransformÚisListOfShapesÚ	isBooleanr½   rp   rß   rØ   rã   rå   rë   rõ   rù   rì   r  r©   rP   r  r  r  r  r   ró   rÊ   rG   rC   rA   rÍ   rÍ   .  sô  € € € € € ð<ð <ð ˆwØ �L Ð2VÐefÐgÑgÔgØ�< Ð4QÐRÑRÔRØ&˜, yÐ6SÐTÑTÔTØ$˜ YÐ4OÐ^_Ð`Ñ`Ô`Ø$˜ YÐ4TÐcdÐeÑeÔeð
ñ 
ô 
€Hð1ð 1ð 1ð &ð &ð &ð*ð *ð *ð *ð!ð !ð !ð !ð'ð 'ð 'ð 'ðð ð ð,ð ð ð*'ð 'ð 'ð	)ð 	)ð 	)ð 	)ðð ð ð,ð ,ð ,ðDð Dð Dð DðBð Bð Bð Bð>ð >ð >ð >ðKð Kð Kð Kð3ð 3ð 3ð 3ðð ð ðð ð ðð ð ð ð rC   rÍ   c                 ó¸   — ddl m} | j        } ||¦  «        j        }|p|j        }||vr|g||<   dS |||         vr||                              |¦  «         dS dS )z7add an import of obj's class to a dictionary of importsr   )Ú	getmoduleN)Úinspectr/  r§   rd   rƒ   )rí   ÚIr0   r/  rˆ   Úms         rA   Ú_addObjImportr3  ë  sy   € à!Ð!Ð!Ð!Ð!Ð!ØŒ€AØˆ	�!‰ŒÔ€AØ	ˆˆQŒZ€AØ�€z€zØˆsˆˆ!‰ˆˆØ	
�!�A”$ˆˆØ	ˆ!Œ�Š�A‰Œˆˆˆð 
ˆrC   c                 óf  ‡‡— t          | t          ¦  «        rt          | ¦  «        S t          | ¦  «        rYd                     ˆfd„| D ¦   «         ¦  «        }t          | t
          ¦  «        rd|› d�S d|› t          | ¦  «        dk    rdnd› d�S | t          u r‰rt          | ‰d	¦  «         d	S t          | t          ¦  «        râ‰rt          | ‰¦  «         d
dl
m}  || j        ¦  «        \  }}}}}}	}
|r,|t          |¦  «         d…         }|t          |¦  «         d…= ng }|                      ¦   «         Šˆˆfd„|dd…         D ¦   «         ˆˆfd„|D ¦   «         z   ˆˆfd„‰                     ¦   «         D ¦   «         z   }| j        j        › dd                     |¦  «        › d�S t#          | ¦  «        S )zEreturn a repr style string with named fixed args first, then keywordsú,c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S rs   ©Ú_repr)rI   r   r1  s     €rA   ú	<genexpr>z_repr.<locals>.<genexpr>û  s+   øè è € Ð/Ð/ Q•e˜A˜a‘j”jÐ/Ð/Ð/Ð/Ð/Ð/rC   ú[ú]ú(r   r³   ú)ÚEmptyClipPathr   )ÚgetfullargspecNc                 óX   •— g | ]&}t          ‰                     |d ¦  «        ‰¦  «        ‘Œ'S rs   ©r8  rô   ©rI   r0   r1  r÷   s     €€rA   rK   z_repr.<locals>.<listcomp>  s/   ø€ Ð7Ð7Ð7¨�e�A—E’E˜!˜D‘M”M !Ñ$Ô$Ð7Ð7Ð7rC   c           
      ób   •— g | ]+}|› d t          ‰                     |d¦  «        ‰¦  «        › �‘Œ,S )ú=NrA  rB  s     €€rA   rK   z_repr.<locals>.<listcomp>  s=   ø€ Ð=Ð=Ð=°!�Ð-Ð-•U˜1Ÿ5š5  4™=œ=¨Ñ+Ô+Ð-Ð-Ð=Ð=Ð=rC   c                 óL   •— g | ] \  }}|› d t          ‰|         ‰¦  «        › �‘Œ!S )rD  r7  )rI   r0   r   r1  r÷   s      €€rA   rK   z_repr.<locals>.<listcomp>  s7   ø€ Ð:Ð:Ð:©¨¨1�Ð$Ð$•U˜1˜Qœ4 ‘]”]Ð$Ð$Ð:Ð:Ð:rC   )rç   Úfloatr   r   Újoinr’   r6   r>  r3  r¤   r0  r?  rp   r¯   rk   r§   rd   Úrepr)ra   r1  r/   r?  ÚargsÚvarargsÚvarkwÚdefaultsÚ
kwonlyargsÚkwonlydefaultsÚannotationsÚkargsr÷   s    `          @rA   r8  r8  ö  s	  øø€ å�$•uÑÔð Ý�d‰|Œ|ÐÝ	ˆt‰Œð Ø�HŠHÐ/Ð/Ð/Ð/¨$Ð/Ñ/Ô/Ñ0Ô0ˆÝ�d�4Ñ Ô ð 	9Ø�q�8�8�8ˆOà7�qÐ7¥ T¡¤¨A¢ ˜#˜#°"Ð7Ð7Ð7Ð7Ø	•Ð	Ð	ØÐ3�m˜D  ?Ñ3Ô3Ð3ØˆÝ	�D�Ñ	Ô	ð ØÐ#�m˜D Ñ#Ô#Ð#Ø*Ð*Ð*Ð*Ð*Ð*ØR`ÐR`ÐaeÔanÑRoÔRoÑOˆˆg�u˜h¨
°NÀKØð 	Ø�#˜h™-œ-˜˜˜Ô)ˆEØ•c˜(‘m”m�^�_�_Ð%Ð%àˆEØ×ÒÑ Ô ˆØ7Ð7Ð7Ð7Ð7¨d°1°2°2¬hÐ7Ñ7Ô7Ø=Ð=Ð=Ð=Ð=°uÐ=Ñ=Ô=ñ>à:Ð:Ð:Ð:Ð:°·²±	´	Ð:Ñ:Ô:ñ;ˆð ”.Ô)Ð:Ð:¨C¯HªH°Q©K¬KÐ:Ð:Ð:Ð:å�D‰zŒzÐrC   ú		c           	      óŽ  — d}t          | dd ¦  «        }|r||› |› dt          |¦  «        › d�z  }|                      ¦   «         D ]€}t          |t          ¦  «        rNd|› �}|dz  }t          |dd¦  «        }	|	rd|	z   }	||› |› d	|› d
|	› d�z  }|t          |||||¦  «        z  }|dz  }Œe||› |› dt          ||¦  «        › d�z  }Œ�|S )Nr³   r   z.transform = ú
r   r   rò   ú#rD  z._nn(Group())z.add(z)
)r¿   r8  ró   rç   rÍ   Ú_renderGroupPy)
ÚGÚpfxr1  r�   Úindentr/   rT   r0   ÚnpfxÚls
             rA   rU  rU    s  € Ø
€AÝ��+˜dÑ#Ô#€AØÐ8ˆ!�&Ð8˜#Ð8Ð8­E°!©H¬HÐ8Ð8Ð8Ñ
8ˆ!Ø�]Š]‰_Œ_ð 
6ð 
6ˆÝ�a�ÑÔð 		6Ø�q�7�7ˆDØ�‰FˆAÝ˜˜+ bÑ)Ô)ˆAØˆM�C˜‘E�!Ø�FÐ:˜DÐ:Ð: 3Ð:Ð:°QÐ:Ð:Ð:Ñ:ˆAØ•  $ q¨¨6Ñ2Ô2Ñ2ˆAØ�‰FˆAˆAà�FÐ5˜CÐ5Ð5¥e¨A¨a¡j¤jÐ5Ð5Ð5Ñ5ˆAˆAØ€HrC   c                 óš   ‡‡— |                      | j        ¦  «         t          ‰¦  «        Šˆˆfd„|                     ¦   «         D ¦   «         S )Nc                 óV   •— i | ]%\  }}|                      ‰¦  «        ¯|‰d …         |“Œ&S rs   )Ú
startswith)rI   rÿ   r   r0   rW  s      €€rA   ú
<dictcomp>z_extraKW.<locals>.<dictcomp>(  s8   ø€ Ð?Ð?Ð?™˜˜!¨Q¯\ª\¸#Ñ->Ô->Ð?ˆAˆaˆbˆbŒE�!Ð?Ð?Ð?rC   )r±   r¬   r6   rk   )ra   rW  Úkwr0   s    ` @rA   Ú_extraKWr`  %  sH   øø€ Ø‡I‚IˆdŒmÑÔÐÝˆC‰Œ€AØ?Ð?Ð?Ð?Ð?˜rŸxšx™zœzÐ?Ñ?Ô?Ð?rC   c                   ó  — e Zd ZdZh d£Zeh d£z
  Z e eed¬¦  «         eed¬¦  «         ed¦  «         ee	d¬¦  «         e e
d	d
dd¦  «        d¬¦  «         e e
dddd¦  «        d¬¦  «         eed¬¦  «         eed¬¦  «         eed¬¦  «        ¬¦	  «	        Z ee e e e
eŽ dd¬¦  «        d¬¦  «        ¬¦  «        Ze                     e¦  «         d(d„Zd„ Zefd„Zd„ Zd „ Zd!„ Zd"„ Zd)d$„Zd*d%„Zd+d'„ZdS ),rè   zOutermost container; the thing a renderer works on.
    This has no properties except a height, width and list
    of contents.>   ÚpsÚpyÚbmpÚepsÚgifÚjpgÚpctÚpdfÚpngÚsvgÚtifÚjpegÚpictÚtiffÚtiff1ÚtifflÚtiffp>   rb  rc  re  ri  rk  zDrawing width in points.rÑ   zDrawing height in points.Nz=Background widget for the drawing e.g. Rect(0,0,width,height)ÚLEFTÚRIGHTÚCENTERÚCENTREz+Horizontal alignment within parent documentÚTOPÚBOTTOMz)Vertical alignment within parent documentzGlobal scaling for renderingz.override the STATE_DEFAULTS value for fontNamez.override the STATE_DEFAULTS value for fontSize)	r_   r`   Úcanvr"  ÚhAlignÚvAlignÚrenderScaleÚinitialFontNameÚinitialFontSizer   r   )ÚloÚemptyOKzOne or more plot modes)ÚBASEÚformatsé�  éÈ   c                 ó„   — d | _         t          j        | g|¢R i |¤Ž || _        || _        d| _        d| _        d| _        d S )Nrs  rx  ç      ð?)r"  rÍ   rp   r_   r`   rz  r{  r|  )ra   r_   r`   Únodesrm   s        rA   rp   zDrawing.__init__Z  sS   € ØˆŒÝŒ�tÐ.˜UÐ.Ð.Ð. XÐ.Ð.Ð.ØˆŒ
ØˆŒØˆŒØˆŒØˆÔÐÐrC   c                 óL  — g d¢g d¢dœ}t          |                      ¦   «         d|¦  «        }d| j        j        z   }d}|d                     d„ |                     ¦   «         D ¦   «         ¦  «        z  }|d	|› d
�z  }|d| j        › d| j        › d�z  }|dz  }||z  }|d|› d�z  }|S )N)Ú_DrawingEditorMixinrè   rÍ   )ÚColorÚ	CMYKColorÚ
PCMYKColor)zreportlab.graphics.shapeszreportlab.lib.colorsra   ÚExplodedDrawing_z0#Autogenerated by ReportLab guiedit do not edit
r³   c              3   óT   K  — | ]#\  }}d |› dd                      |¦  «        › d�V — Œ$dS )zfrom z import z, rS  N)rG  )rI   r2  Úos      rA   r9  z$Drawing._renderPy.<locals>.<genexpr>k  sD   è è € ÐPÐP¹d¸aÀÐ9˜aÐ9Ð9¨¯ª°1©¬Ð9Ð9Ð9ÐPÐPÐPÐPÐPÐPrC   z
class z(_DrawingEditorMixin,Drawing):
z	def __init__(self,width=z,height=z,*args,**kw):
z1		Drawing.__init__(self,width,height,*args,**kw)
z(

if __name__=="__main__": #NORUNTESTS
	z0().save(formats=['pdf'],outDir='.',fnRoot=None)
)rU  rõ   r§   rd   rG  rk   r_   r`   )ra   r1  rV  r0   r/   s        rA   Ú	_renderPyzDrawing._renderPyc  sã   € à)RÐ)RÐ)RØ$FÐ$FÐ$Fðð ˆõ ˜4Ÿ=š=™?œ?¨6°!Ñ4Ô4ˆØ ¤Ô!8Ñ8ˆØ?ˆØ	ˆR�WŠWÐPÐPÀaÇgÂgÁiÄiÐPÑPÔPÑQÔQÑQˆØ	Ð;˜Ð;Ð;Ð;Ñ;ˆØ	ÐZ¨$¬*ÐZÐZ¸d¼kÐZÐZÐZÑZˆØ	ÐCÑCˆØ	ˆQ‰ˆØ	Ðt¸AÐtÐtÐtÑtˆØˆrC   c                 óŽ   — ddl m} |                     | | j        dd|t          ur|nt          | dt          ¦  «        ¬¦  «         dS )zšThis is used by the Platypus framework to let the document
        draw itself in a story.  It is specific to PDF and should not
        be used directly.r   ©Ú	renderPDFÚ_showBoundary©ÚshowBoundaryN)Úreportlab.graphicsr“  Údrawry  r   r¿   )ra   r–  r“  s      rA   r˜  zDrawing.draws  sj   € ð 	1Ð0Ð0Ð0Ð0Ð0Ø�Š�t˜TœY¨¨1Ø-9ÅÐ-HÐ-H˜\˜\ÍgÐVZÐ[jÕkrÑNsÔNsð 	ñ 	uô 	uð 	uð 	uð 	urC   c                 óT   — | j         }| j        }| j        }|dk    r
||z  }||z  }||fS )Nr†  )r_   r`   r|  )ra   Ú
availWidthÚavailHeightr_   r`   r|  s         rA   ÚwrapzDrawing.wrap{  sA   € Ø”
ˆØ”ˆØÔ&ˆØ˜ÒÐØ�[Ñ ˆEØ�kÑ!ˆFØ�fˆ}ÐrC   c                 ój   — t                                | ¦  «        }| j        |_        | j        |_        |S )z:Return a new drawing which only contains primitive shapes.)rÍ   rë   r_   r`   r  s     rA   rë   zDrawing.expandUserNodes„  s,   € å×#Ò# DÑ)Ô)ˆØ”JˆŒ	Ø”[ˆŒ
Øˆ
rC   c                 óh   — |                       |                      | j        | j        ¦  «        ¦  «        S )zReturns a copy)r  r§   r_   r`   r¨   s    rA   r©   zDrawing.copy‹  s&   € à�zŠz˜$Ÿ.š.¨¬°T´[ÑAÔAÑBÔBÐBrC   c                 ó@   — |                       t          |i |¤Ž¦  «        S rs   )r  rÍ   )ra   rI  r_  s      rA   ÚasGroupzDrawing.asGroup�  s!   € Ø�zŠz�% Ð+¨Ð+Ð+Ñ,Ô,Ð,rC   r³   c                 óÄ  — |                      dd¦  «        }t          |t          ¦  «        rd|z  }nd}|dz  }ddlm} d}	|s«t          | d| j        j        dz   ¦  «        }t          | d	d¦  «        }
t          |
d
¦  «        r |
| ¦  «        }
t          |d
¦  «        r ||
¦  «        }nE	 ||
z  }n># t          $ r1}t          |¦  «                             d¦  «        dk     r‚ Y d}~nd}~ww xY w|€t          | dd¦  «        }t          |d
¦  «        r || ¦  «        }t          j                             |¦  «        r#t          j                             |¦  «        \  }}n|pt          | dd¦  «        }|                     ¦   «                              t          j        ¦  «        }|sd}t          j                             |¦  «        s\t          j                             t          | dt          j                             t(          j        d         ¦  «        ¦  «        |¦  «        }t          j                             |¦  «        st          j        |¦  «         t          j                             t          j                             ||¦  «        ¦  «        }t          j                             |¦  «        }|d         dd…                              ¦   «         | j        v r|d         }d„ |pt          | ddg¦  «        D ¦   «         }|dur|fpt          | d|¦  «        fd         }t8          j        j        t8          j        j        f}|xt8          j        _        t8          j        _        d|v r®ddl m!} |dz   }|rtE          |d|fz  ¦  «          |j#        | ||fdt          | d|j$        ¦  «        itK          | dfi |¤Ž¤Ž |	dz   }	t(          j&        dk    rFddl'}ddl(}| )                    |¦  «         *                    dd¦  «         | +                    |¦  «         | j,        D ]Ë}||v rÅddl m-} |›d|›�}|rtE          |||fz  ¦  «         t          | d d¦  «        }|r>t          |d|g¦  «        }||v r&t          |d!d¦  «        s| .                    ¦   «          nd} |j#        | |f|t          | d|j$        ¦  «        d"œtK          | d#fi |¤Ž¤Ž |	d$z   |z   }	|r| /                    |¦  «         ŒÌd%|v rÉ	 dd&l0m1} n# td          $ r	 dd'l m3} Y nw xY w|d(z   }|rtE          |d)|fz  ¦  «          |j#        | |f|t          | d*d+g¦  «        d         t          | d*dd,g¦  «        d         t          | d-|j4        ¦  «        t          | d|j$        ¦  «        t          | d.|j5        ¦  «        d/œtK          | d0fi |¤Ž¤Ž |	d1z   }	d2|v rWdd3l m6} |d4z   }|rtE          |d5|fz  ¦  «          |j#        | |fdt          | d|j$        ¦  «        itK          | d6fi |¤Ž¤Ž |	d7z   }	d8|v rWdd'l m3} |d9z   }|rtE          |d)|fz  ¦  «          |j#        | |fdt          | d|j$        ¦  «        itK          | d0fi |¤Ž¤Ž |	d:z   }	d;|v rš|d<z   }|rtE          |d;|fz  ¦  «         to          |d=¦  «        5 }| 8                    ts          |  :                    ¦   «          ;                    d>t          j<        ¦  «        ¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |	d?z   }	|\  t8          j        _        t8          j        _        t          | d@¦  «        r|  =                    ||	¦  «         |	r||	dd…         z   pdS )AzÞSaves copies of self in desired location and formats.
        Multiple formats can be supported in one call

        the extra keywords can be of the form
        _renderPM_dpi=96 (which passes dpi=96 to renderPM)
        Ú	seqNumberr³   z%4d: zgenerating %s file %sr   ©Ú	rl_configÚfileNamePatternz%03dÚchartIdÚ__call__znot all arguments convertedNÚoutDirrµ   Ú_override_CWDr   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rG   )ÚlowerrH   s     rA   rK   z Drawing.save.<locals>.<listcomp>Á  s    € ÐTÐTÐT !�A—G’G‘I”IÐTÐTÐTrC   r‚  ri  r   r’  z.pdfÚPDFr–  Ú
showBorderÚ_renderPDF_z/.pdfÚmacÚCAROzPDF ©ÚrenderPMÚ_drawTimeCollectorÚdisabled©Úfmtr–  Ú
_renderPM_z/.re  ©ÚrenderPS_SEP©ÚrenderPSz.epsÚEPSÚEPS_infoÚTestingÚ	ReportLabÚpreviewÚ	ttf_embed)ÚtitleÚdeptÚcompanyrÀ  r–  rÁ  Ú
_renderPS_z/.epsrk  ©Ú	renderSVGz.svgÚSVGÚ_renderSVG_z/.svgrb  z.psz/.psrc  z.pyÚwbrS  z/.pyÚ
saveLogger)>rô   rç   ÚintÚ	reportlabr¤  r¿   r§   rd   r]   Ú	TypeErrorÚstrÚfindÚosÚpathÚisabsÚsplitÚrstripÚseprG  ÚdirnameÚsysÚargvÚisdirÚmakedirsÚnormpathÚsplitextr«  Ú
_saveModesr   ÚwarnOnceÚenabledÚinfoOncer—  r“  r·   Ú
drawToFiler–  r`  ÚplatformÚmacfsÚ
macostoolsÚFSSpecÚSetCreatorTypeÚtouchedÚ_bmModesr²  ÚclearÚsaveÚrlextra.graphicsr¹  ÚImportErrorr»  Úeps_previewÚeps_ttf_embedrÇ  ÚopenÚwriter   r�  ÚreplaceÚlineseprË  )ra   r‚  r   ÚfnRootr¨  rÂ  r_  ÚgenFmtr¤  Úextr¦  ÚerrÚfnrootÚplotModeÚ_savedr“  Úfilenamerä  rå  ÚbmFmtr²  ÚdtcÚdtcfmtsr»  rÇ  r–   s                             rA   rë  zDrawing.save’  sž	  € ð —’˜ BÑ'Ô'ˆÝ�f�SÑ!Ô!ð 	Ø˜vÑ%ˆFˆFàˆFØÐ)Ñ)ˆØ'Ð'Ð'Ð'Ð'Ð'ØˆØð 	OÝ˜TÐ"3°T´^Ô5LÈVÑ5SÑUÔUˆFÝ˜d 9¨QÑ/Ô/ˆGÝ�w˜zÑ*Ô*ð (Ø!˜' $™-œ-�Ý�v˜jÑ)Ô)ð OØ˜ ™œ��ðOØ# gÑ-�F�FøÝ ð Oð Oð Oõ ˜3‘x”x—}’}Ð%BÑCÔCÀaÒGÐGÈÐGÐGÐGÐGÐGøøøøðOøøøð
 ˆ>Ý˜T (¨4Ñ0Ô0ˆFÝ�6˜*Ñ%Ô%ð 	"Ø�V˜D‘\”\ˆFÝŒ7�=Š=˜Ñ Ô ð 	:ÝœWŸ]š]¨6Ñ2Ô2‰NˆF�F�FàÐ9�w t¨H°SÑ9Ô9ˆFØ—’‘”×'Ò'­¬Ñ/Ô/ˆØÐ# �vÝŒw�}Š}˜VÑ$Ô$Ð~­r¬w¯|ª|½GÀDÈÕY[ÔY`×YhÒYhÕilÔiqÐrsÔitÑYuÔYuÑ<vÔ<vÐw}Ñ/~Ô/~ fÝŒw�}Š}˜VÑ$Ô$Ð9¥b¤k°&Ñ&9Ô&9Ð&9Ý”×!Ò!¥"¤'§,¢,¨v°fÑ"=Ô"=Ñ>Ô>ˆÝ”7×#Ò# FÑ+Ô+ˆØ�AŒ;�q�r�rŒ?× Ò Ñ"Ô" d¤oÐ5Ð5Ø˜a”[ˆFàTÐT¨Ð(Rµ7¸4À	È5È'Ñ3RÔ3RÐTÑTÔTˆØ $Ð&Ð5¨G¨:Ð[½'À$ÀyÐQXÑ:YÔ:YÐ9[Ð]^Ô_ˆÝ”Ô(­&¬/Ô*AÐAˆØ<CÐC�ŒÔ¥&¤/Ô"9Ø�HÐÐØ4Ð4Ð4Ð4Ð4Ð4Ø˜f‘}ˆHØÐ8�˜f¨¨hÐ'7Ñ7Ñ8Ô8Ð8Ø ˆIÔ   x°ð  \ð  \ÅWÈTÐR^Ð_hÔ_uÑEvÔEvð  \õ  zBð  CGð  HUð  z[ð  z[ð  XZð  z[ð  z[ð  \ð  \ð  \Ø˜‘.ˆCÝŒ|˜UÒ"Ð"Ø(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø—’˜XÑ&Ô&×5Ò5°f¸fÑEÔEÐEØ×"Ò" 8Ñ,Ô,Ð,à”]ð 	+ð 	+ˆEØ˜Ð Ð Ø7Ð7Ð7Ð7Ð7Ð7Ø&, f f¨U¨UÐ3�ØÐ<�E &¨E°(Ð+;Ñ";Ñ<Ô<Ð<Ý˜dÐ#7¸Ñ=Ô=�Øð #Ý% c¨)°U°GÑ<Ô<�GØ Ð'Ð'µ¸¸JÀqÑ0IÔ0IÐ'ØŸ	š	™œ˜˜à"˜Ø#�Ô# D¨(ð  `°uÍ'ÐRVÐWcÐdmÔdzÑJ{ÔJ{ð  `ð  `õ  Gð  HLð  MYð  _ð  _ð  \^ð  _ð  _ð  `ð  `ð  `Ø˜D‘j 5Ñ(�ØÐ*˜Ÿš Ñ*Ô*Ð*øà�HÐÐð8ØEÐEÐEÐEÐEÐEÐEøÝð 8ð 8ð 8Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð8øøøà˜f‘}ˆHØÐ8�˜f¨¨hÐ'7Ñ7Ñ8Ô8Ð8ØˆHÔ Ø (ðDà(.Ý'.¨t°JÀ	¸{Ñ'KÔ'KÈAÔ'NÝ*1°$°zÀ2ÀkÐBRÑ*SÔ*SÐTUÔ*VÝ*1°$°yÀÔAVÑ*WÔ*WÝ-4°T¸,ÀyÔG]Ñ-^Ô-^Ý*1°$°{À9ÔCZÑ*[Ô*[ðDð Dõ #+¨4°Ð"BÐ"B¸rÐ"BÐ"BðDð Dð Dð ˜‘.ˆCà�HÐÐØ4Ð4Ð4Ð4Ð4Ð4Ø˜f‘}ˆHØÐ8�˜f¨¨hÐ'7Ñ7Ñ8Ô8Ð8Ø ˆIÔ  Ø (ðDð Då-4°T¸,ÀyÔG]Ñ-^Ô-^ðDåaiÐjnÐo|ð  bCð  bCð  @Bð  bCð  bCðDð Dð Dð ˜‘.ˆCà�8ÐÐØ3Ð3Ð3Ð3Ð3Ð3Ø˜e‘|ˆHØÐ8�˜f¨¨hÐ'7Ñ7Ñ8Ô8Ð8ØˆHÔ  hð  Sð  S½WÀTÈ,ÐW`ÔWmÑ=nÔ=nð  SÕqyÐz~ð  @Lð  rRð  rRð  OQð  rRð  rRð  Sð  Sð  SØ˜‘-ˆCà�8ÐÐØ˜e‘|ˆHØÐ7�˜f¨¨X Ñ6Ñ7Ô7Ð7Ý�h˜tÑ$Ô$ð L¨Ø—’� §¢Ñ 0Ô 0× 8Ò 8¸½b¼jÑ IÔ IÑJÔJÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Là˜‘-ˆCà;AÑ8�ŒÔ¥¤Ô!8Ý�4˜Ñ%Ô%ð 	(Ø�OŠO˜F 3Ñ'Ô'Ð'ØÐ%�v˜c ! " "œg‘~Ð+¨Ð+s=   Â*B0 Â0
C+Â:'C&Ã&C+Ó,S3 Ó3TÔTÚA[8Û8[<Û?[<c           	      ó  — || j         v sJ d|z  ¦   «         ‚ddlm} |dk    rMddlm} |                     dd¦  «        } |j        | |fdt          | d	|j        ¦  «        it          | d
fi |¤Ž¤ŽS || j
        v r7ddlm}  |j        | f|t          | d	|j        ¦  «        dœt          | dfi |¤Ž¤ŽS |dk    rJ	 ddlm}	 n# t          $ r	 ddlm}	 Y nw xY w|	                     | |t          | d	|j        ¦  «        ¬¦  «        S |dk    r1ddlm}	 |	                     | t          | d	|j        ¦  «        ¬¦  «        S |dk    r|                      ¦   «         S |dk    r6ddlm}
  |
j        | fdt          | d	|j        ¦  «        it          | dfi |¤Ž¤ŽS dS )z,Converts to an 8 bit string in given format.zUnknown file format "%s"r   r£  ri  r’  rÂ  r³   r–  r­  r®  r±  rµ  r·  re  r¸  rº  )rÀ  r–  rb  r•  rc  rk  rÆ  rÉ  N)rÞ  rÍ  r¤  r—  r“  rô   ÚdrawToStringr¿   r–  r`  ré  r²  rì  r¹  rí  r»  r�  rÇ  )ra   Úformatr   rÀ  r_  r¤  r“  rÂ  r²  r»  rÇ  s              rA   ÚasStringzDrawing.asString  sÜ  € à˜œÐ(Ð(Ð(Ð*DÀvÑ*MÑ(Ô(Ð(Ø'Ð'Ð'Ð'Ð'Ð'à�UŠ?ˆ?Ø4Ð4Ð4Ð4Ð4Ð4Ø—F’F˜7 2Ñ&Ô&ˆEØ)�9Ô)¨$°ð  [ð  [ÅGÈDÐQ]Ð^gÔ^tÑDuÔDuð  [õ  yAð  BFð  GTð  yZð  yZð  WYð  yZð  yZð  [ð  [ð  [Ø�t”}Ð$Ð$Ø3Ð3Ð3Ð3Ð3Ð3Ø(�8Ô(¨ð X°6ÅwÈtÐT`Ø%Ô2ñH4ô H4ð Xð XÝ6>¸tÀLÐ6VÐ6VÐSUÐ6VÐ6VðXð Xð Xà�uŠ_ˆ_ð8ØEÐEÐEÐEÐEÐEÐEøÝð 8ð 8ð 8Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð8øøøð ×(Ò(¨Ø*1Ý-4°T¸,ÀyÔG]Ñ-^Ô-^ð )ñ `ô `ð `ð �tŠ^ˆ^Ø3Ð3Ð3Ð3Ð3Ð3Ø×(Ò(¨½GÀDÈÐV_ÔVlÑ<mÔ<mÐ(ÑnÔnÐnØ�tŠ^ˆ^Ø—>’>Ñ#Ô#Ð#Ø�uŠ_ˆ_Ø4Ð4Ð4Ð4Ð4Ð4Ø)�9Ô)¨$ð  Sð  S½GÀDÈÐV_ÔVlÑ<mÔ<mð  SÕpxÐy}ð  Lð  qRð  qRð  OQð  qRð  qRð  Sð  Sð  Sð ˆ_s   Â7B> Â>CÃCÚfitc                 óB  — |                       ¦   «         }| j        }| j        }t          ||g|¢R Ž }	|	                     ¦   «         \  }
}}}|dk    s$|dk    rR|
|k     s|||z
  k    s||k     s	|||z
  k    r4||
z
  |z   |z   |	_        ||z
  |z   |z   |	_        dddd||
z
  ||z
  f|	_        nw|dk    s|dk    r0|
|k     s	|||z
  k    r!||
z
  |z   |z   |	_        dddd||
z
  df|	_        n;|dk    s|dk    r/||k     s	|||z
  k    r ||z
  |z   |z   |	_        ddddd||z
  f|	_        |	S )	z?return a base class drawing which ensures all the contents fitsr  Úexpandr   r   ÚfitxÚexpandxÚfityÚexpandy)ró   r_   r`   rè   rÊ   r   )ra   ÚkindÚlpadÚrpadÚbpadÚtpadrT   ÚoWÚoHrc   ÚxLÚyLÚxHÚyHs                 rA   ÚresizedzDrawing.resized-  s€  € à×ÒÑÔˆØŒZˆØŒ[ˆÝ˜"˜RÐ# Ð#Ð#Ð#ˆØ×'Ò'Ñ)Ô)‰ˆˆ2ˆb�Ø�Š;ˆ;˜4 š>˜>¨r°$ªw¨w¸"¸RÀ¹Wº*¸*ÈÈ4ÊÈÐSUÐVXÐY]ÑV]ÒS]ÐS]Ø˜r™E $™J t™OˆGŒMØ ™U 4™Z¨™_ˆGŒNØ!" 1 Q q¨¨b©°°b±Ð 9ˆGÔÐØ�6Š\ˆ\˜d Išo˜o°2°d²7°7¸bÀÀDÁºj¸jØ˜r™E $™J t™OˆGŒMØ!" 1 Q q¨¨b©°Ð 3ˆGÔÐØ�6Š\ˆ\˜d Išo˜o°2°d²7°7¸bÀÀDÁºj¸jØ ™U 4™Z¨™_ˆGŒNØ!" 1 Q q¨¨4°©7Ð 3ˆGÔØˆrC   )rƒ  r„  )NNNNr³   )Nr   )r  r   r   r   r   )rd   re   rf   rg   rÞ  ré  rË   rÜ   ÚisNumberÚisValidChildOrNoneÚOneOfÚisStringOrNoneÚisNumberOrNoner  rÍ   Ú
SequenceOfr½   r±   rp   r�  r   r˜  rœ  rë   r©   r   rë  r  r  rG   rC   rA   rè   rè   *  sN  € € € € € ðð ðð ð €Jð( Ð9Ð9Ð9Ñ9€Hà�7Ø�˜XÐ+EÐFÑFÔFØ�˜hÐ,GÐHÑHÔHØˆ|˜DÑ!Ô!Ø!�\Ð"4Ð:yÐzÑzÔzØ�˜e˜e F¨G°X¸xÑHÔHÐO|Ð}Ñ}Ô}Ø�˜e˜e E¨8°X¸xÑHÔHÐOzÐ{Ñ{Ô{ð #�l 8Ð1OÐPÑPÔPØ&˜, ~Ð;kÐlÑlÔlØ&˜, ~Ð;kÐlÑlÔlð
ñ 
ô 
€Lð ˆw˜EØ"�l : :Ø��zÐ"Ø˜Qð$ ñ $ ô $ à&>ð@ñ @ô @ðñ ô €Hð
 ‡O‚O�LÑ!Ô!Ð!ðð ð ð ðð ð ð   'ð uð uð uð uðð ð ðð ð ðCð Cð Cð-ð -ð -ðz,ð z,ð z,ð z,ðxSð Sð Sð Sð>ð ð ð ð ð rC   rè   c                   ó   — e Zd ZdZdd„ZdS )r‰  z<This is a mixin to provide functionality for edited drawingsNc                 óª  — t          |¦  «        }|rZt          |d¦  «        rJd|j        vr|j                             ¦   «         |_        |r	|€t           }t          ||¦  «        |j        |<   t          |d¦  «        r5|r3|r|                     |||¦  «         dS |                     ||¦  «         dS |rt          |||¦  «         dS t          d¦  «        ‚)zb
        effectively setattr(obj,name,value), but takes care of things with _attrMaps etc
        r½   NrØ   zCan't add, need name)
rÝ   r]   r¬   r½   r×   rÜ   rå   rØ   rl   Ú
ValueError)ra   rí   ro   rº   rÀ   rÏ   r  Úivcs           rA   Ú_addz_DrawingEditorMixin._addB  s÷   € õ ˜5Ñ!Ô!ˆØð 	=•G˜C 
Ñ+Ô+ð 	=Ø ¤Ð-Ð-Ø"œ|×1Ò1Ñ3Ô3�”ØÐ@�xÐ'µL¨Ý!-¨h°tÑ!<Ô!<ˆCŒL˜ÑÝ�3�uÑÔð 	5 #ð 	5Øð $Ø—
’
˜3˜u TÑ*Ô*Ð*Ð*Ð*à—’˜˜dÑ#Ô#Ð#Ð#Ð#Øð 	5Ý�C˜˜UÑ#Ô#Ð#Ð#Ð#åÐ3Ñ4Ô4Ð4rC   ©NNNN)rd   re   rf   rg   r   rG   rC   rA   r‰  r‰  @  s.   € € € € € ØFÐFð5ð 5ð 5ð 5ð 5ð 5rC   r‰  c                   ó   — e Zd Zd„ ZdS )ÚisStrokeDashArrayc                 óÂ   — t                                |¦  «        pEt          |t          t          f¦  «        o)t          |d         ¦  «        ot          |d         ¦  «        S )Nr   r   )ÚisListOfNumbersOrNoneÚtestrç   r’   Útupler  ÚisListOfNumbers)ra   rJ   s     rA   r&  zisStrokeDashArray.testW  sS   € Ý$×)Ò)¨!Ñ,Ô,Ðyµ¸A½tÅE¸lÑ1KÔ1KÐ1xÕPXÐYZÐ[\ÔY]ÑP^ÔP^Ð1xÕcrÐstÐuvÔswÑcxÔcxÐyrC   N)rd   re   rf   r&  rG   rC   rA   r#  r#  V  s(   € € € € € ðzð zð zð zð zrC   r#  c                   ó(  — e Zd Z e ee¦  «         ee¦  «         e eddd¦  «        d¬¦  «         e eddd¦  «        d¬¦  «         eed¬¦  «         eed¬¦  «         ee	d	¬¦  «         ee
d
¬¦  «         ee
dd¬¦  «        ¬¦	  «	        Zd„ ZdS )Ú	LineShaper   r   r�   z#Line cap 0=butt, 1=round & 2=squarerÑ   z$Line join 0=miter, 1=round & 2=bevelz$miter limit control miter line joinsz[numbers] or [phase,[numbers]]zEThe level of transparency of the line, any real number betwen 0 and 1rÒ   rÔ   rÎ   )	r   r   r   r   r    r"   r#   r&   r'   c                 ó¨   — t           d         | _        d| _        d| _        d| _        d| _        d | _        d | _        |                      |¦  «         d S )Nr   r   r   )	ÚSTATE_DEFAULTSr   r   r   r   r    r"   r#   r²   ©ra   r_  s     rA   rp   zLineShape.__init__j  sY   € Ý)¨-Ô8ˆÔØˆÔØˆÔØˆÔØ !ˆÔØ#ˆÔØ!ˆÔØ×Ò˜2ÑÔÐÐÐrC   N)rd   re   rf   rË   rÜ   ÚisColorOrNoner  r  r#  Ú	isOpacityr-  r½   rp   rG   rC   rA   r*  r*  [  sö   € € € € € ð ˆwØ"�l =Ñ1Ô1Ø"�l 8Ñ,Ô,Ø$˜ U U¨1¨Q¨q¡\¤\Ð7\Ð]Ñ]Ô]Ø%˜ e e¨A¨a°¡l¤lÐ8^Ð_Ñ_Ô_Ø'˜<¨Ð6\Ð]Ñ]Ô]Ø&˜,Ð'8Ð>^Ð_Ñ_Ô_Ø$˜ YÐ4{Ð|Ñ|Ô|Ø&˜, yÐ6SÐTÑTÔTØ$˜ YÐ4TÐcdÐeÑeÔeð

ñ 

ô 

€Hðð ð ð ð rC   r*  c            
       ó’   — e Zd Z ee eed¬¦  «         eed¬¦  «         eed¬¦  «         eed¬¦  «        ¬¦  «        Zd„ Zd„ Z	dS )ÚLiner³   rÑ   )r�  rz   r{   r|   r}   c                 ót   — t                                | |¦  «         || _        || _        || _        || _        d S rs   )r*  rp   rz   r{   r|   r}   )ra   rz   r{   r|   r}   r_  s         rA   rp   zLine.__init__|  s8   € Ý×Ò˜4 Ñ$Ô$Ð$ØˆŒØˆŒØˆŒØˆŒˆˆrC   c                 ó6   — | j         | j        | j        | j        fS )rÈ   )rz   r{   r|   r}   r¨   s    rA   rÊ   zLine.getBoundsƒ  s   € à”˜œ $¤'¨4¬7Ð3Ð3rC   N)
rd   re   rf   rË   r*  rÜ   r  r½   rp   rÊ   rG   rC   rA   r1  r1  t  s’   € € € € € Øˆw˜IØˆ\˜(¨Ð+Ñ+Ô+Øˆ\˜(¨Ð+Ñ+Ô+Øˆ\˜(¨Ð+Ñ+Ô+Øˆ\˜(¨Ð+Ñ+Ô+ð	
ñ 
ô 
€Hðð ð ð4ð 4ð 4ð 4ð 4rC   r1  c                   ó¶   — e Zd Z ee eed¬¦  «         eed¬¦  «         eed¬¦  «         eedd¬¦  «         e e	e
e¦  «        ¦  «        ¬¦  «        Zd	„ Zd
S )Ú
SolidShapez$filling color of the shape, e.g. redrÑ   zGthe level of transparency of the color, any real number between 0 and 1rÓ   rÔ   r   rÎ   )r�  r(   r$   r%   r'   r)   c                 ón   — t           d         | _        d | _        t                               | |¦  «         d S )Nr(   )r,  r(   r$   r*  rp   r-  s     rA   rp   zSolidShape.__init__’  s4   € Ý'¨Ô4ˆŒØˆÔõ 	×Ò˜4 Ñ$Ô$Ð$Ð$Ð$rC   N)rd   re   rf   rË   r*  rÜ   r.  r/  r-  r  r   r   r½   rp   rG   rC   rA   r5  r5  ‡  s¥   € € € € € ð ˆw˜IØ �L Ð4ZÐ[Ñ[Ô[Ø"�l 9Ð2{Ð|Ñ|Ô|Ø$˜ YÐ4OÐPÑPÔPØ$˜ YÐ4TÐcdÐeÑeÔeØ�<   m°MÑ BÔ BÑCÔCð
ñ 
ô 
€Hð%ð %ð %ð %ð %rC   r5  r‚   )r�   r�   é   r   )ÚmoveToÚlineToÚcurveToÚ	closePathc                 ó€  — | j         }d}d}d}| }| j        D ]v}	|	t          k    r0|r)|r'|
t          k    r|dz  }|r |t                   ¦   «          |dz  }t          |	         }||z   } ||	         |||…         Ž  |}|	t          k    r|dz  }|	}
Œw|r)|r'|
t          k    r|dz  }|r |t                   ¦   «          ||k    S )zHelper function for renderers.r   r   )r•   Ú	operatorsÚ_MOVETOÚ
_CLOSEPATHÚ_PATH_OP_ARG_COUNT)rÒ  Ú	drawFuncsÚ	countOnlyÚ
forceCloser•   r�   ÚhadClosePathÚ	hadMoveToÚactiveÚoprô   ÚnArgsÚjs                rA   Ú_renderPathrJ  ž  s  € ð Œ[€FØ	€AØ€LØ€IØˆ]€FØŒnð ð ˆØ•Š=ˆ=Øð 0Øð 0 ¥j¢ Ø  AÑ%�LØð 0Ø-˜	¥*Ô-Ñ/Ô/Ð/Ø˜‰NˆIÝ" 2Ô&ˆØ�‰IˆØˆ	�"Œ�v˜a ˜c”{Ð#Ð#ØˆØ•ÒÐØ˜AÑˆLØˆˆØð $�ið $ C­¢O OØ˜ÑˆØð 	$Ø!ˆI•jÔ!Ñ#Ô#Ð#Ø˜Ò$Ð$rC   znon-zeroÚnonzerozeven-oddÚevenoddc                   óþ   — e Zd ZdZ ee ee¦  «         ee¦  «         ee¦  «         e e	 e
dd¦  «        ¦  «        ¦  «         e e
ee¦  «        ¦  «        ¬¦  «        Zddddefd„Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚPathz2Path, made up of straight lines and bezier curves.rk  ri  )r�  r•   r=  Ú
isClipPathÚ	autocloser)   Nr   c                 óÒ   — t                                | |¦  «         |€g }|€g }t          |¦  «        dz  dk    s
J d¦   «         ‚|| _        || _        || _        || _        || _        d S ©Nr�   r   ú-Point list must have even number of elements!)r5  rp   r6   r•   r=  rO  rP  r)   )ra   r•   r=  rO  rP  r)   r_  s          rA   rp   zPath.__init__Ð  sx   € Ý×Ò˜D "Ñ%Ô%Ð%Øˆ>ØˆFØÐØˆIÝ�6‰{Œ{˜Q‰ !Ò#Ð#Ð#Ð%TÑ#Ô#Ð#ØˆŒØ"ˆŒØ$ˆŒØ ˆŒØ ˆŒˆˆrC   c                 ó´   — |                       | j        d d …         | j        d d …         ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   r•   r=  r²   r¯   ©ra   Únews     rA   r©   z	Path.copyÝ  sO   € Ø�nŠn˜Tœ[¨¨¨œ^¨T¬^¸A¸A¸AÔ->Ñ?Ô?ˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 ó|   — | j                              ||g¦  «         | j                             t          ¦  «         d S rs   )r•   rö   r=  rƒ   r>  r  s      rA   r8  zPath.moveToâ  ó8   € ØŒ×Ò˜A˜q˜6Ñ"Ô"Ð"ØŒ×Ò�gÑ&Ô&Ð&Ð&Ð&rC   c                 ó|   — | j                              ||g¦  «         | j                             t          ¦  «         d S rs   )r•   rö   r=  rƒ   Ú_LINETOr  s      rA   r9  zPath.lineToæ  rX  rC   c                 ó„   — | j                              ||||||g¦  «         | j                             t          ¦  «         d S rs   )r•   rö   r=  rƒ   Ú_CURVETO)ra   rz   r{   r|   r}   Úx3r…   s          rA   r:  zPath.curveToê  sA   € ØŒ×Ò˜B  B¨¨B°Ð3Ñ4Ô4Ð4ØŒ×Ò�hÑ'Ô'Ð'Ð'Ð'rC   c                 óD   — | j                              t          ¦  «         d S rs   )r=  rƒ   r?  r¨   s    rA   r;  zPath.closePathî  s   € ØŒ×Ò�jÑ)Ô)Ð)Ð)Ð)rC   c           	      ó\  — | j         }	 g }|j        }|j        }g }|j        }|j        }d}| j        D ]«}	t          |	         }
||
z   }|
dk    r& |||         ¦  «          |||dz            ¦  «         ni|
dk    rc|||d…         \  }}} |t          |d         |||¦  «        ¦  «         ||dz   |d…         \  }}} |t          |d         |||¦  «        ¦  «         |}Œ¬t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        fS #  t          |¦  «        cY S xY w)Nr   r�   r   r7  r1   )	r•   rƒ   rö   r=  r@  rŒ   rQ   r5   r™   )ra   r•   rU   ÚaXÚeXrV   ÚaYÚeYr�   rG  rH  rI  rz   r|   r]  r{   r}   r…   s                     rA   rÊ   zPath.getBoundsñ  sV  € Ø”ˆð	)ØˆAØ”ˆBØ”ˆBØˆAØ”ˆBØ”ˆBØˆAØ”nð ð �Ý*¨2Ô.�Ø˜‘I�Ø˜!’8�8à�B�v˜a”y‘M”M�MØ�B�v˜a ™c”{‘O”O�O�OØ˜A’X�Xà% a¨¨! eœ}‘H�B�r˜"Ø�BÕ(¨¨2¬¨r°"°RÑ8Ô8Ñ9Ô9Ð9Ø% a¨¡c¨!¨A gœ‘H�B�r˜"Ø�BÕ(¨¨2¬¨r°"°RÑ8Ô8Ñ9Ô9Ð9Ø��Ý�q‘6”6�#˜a™&œ&¥ Q¡¤­¨A©¬Ð.Ð.øð	)Ý  Ñ(Ô(Ð(Ð(Ð(øøøs   ‰DD ÄD+)rd   re   rf   rg   rË   r5  rÜ   r(  r-  ÚNoneOrr  r   r   r½   rp   r©   r8  r9  r:  r;  rÊ   rG   rC   rA   rN  rN  Å  s  € € € € € Ø<Ð<àˆw˜JØ�˜oÑ.Ô.Ø �L Ñ1Ô1Ø!�\ )Ñ,Ô,Ø �L  ¨¨¨e°EÑ(:Ô(:Ñ!;Ô!;Ñ<Ô<Ø�<   m°MÑ BÔ BÑCÔCð
ñ 
ô 
€Hð #¨d¸qÈDÐ[hð !ð !ð !ð !ðð ð ð
'ð 'ð 'ð'ð 'ð 'ð(ð (ð (ð*ð *ð *ð)ð )ð )ð )ð )rC   rN  c           	      ó  — |€|}g }t           dz  }	||	z  }
||	z  }||
k     r|dt           z  z   }||
k     °t          ||
z
  ¦  «        }|j        }|dk    rEt          ||pd¦  «        }||	z  }t	          t          ||z  dz   ¦  «        d¦  «        }||z  }|dz  }nd}d}t          |¦  «        D ]=}|
||z  z   } || |t          |¦  «        z  z   ||t          |¦  «        z  z   f¦  «         Œ>|r| 	                    ¦   «          |S )Nç     €f@r�   çü©ñÒMbP?r†  ç      à?r   r   )
r   rF  rƒ   rQ   r5   rÌ  r”   r   r   Úreverse)ÚcenterxÚcenteryÚradiusÚstartangledegreesÚendangledegreesÚyradiusÚdegreedeltari  r•   ÚdegreestoradiansÚ
startangleÚendanglerS   r†   Úradiansdeltar0   s                   rA   ÚgetArcPointsru    sM  € Ø€ &˜Ø€FÝ˜%‘xÐØ"Ð#3Ñ3€JØÐ/Ñ/€HØ
�:Ò
Ð
Ø˜A�b™D‘=ˆð �:Ò
Ð
å�(˜ZÑ'Ñ(Ô(€EØŒ€AØˆT‚z€zÝ˜% Ð 1¨rÑ2Ô2ˆØ"Ð#3Ñ3ˆÝ•�E˜,Ñ& sÑ*Ñ+Ô+¨AÑ.Ô.ˆØ˜Q‘wˆØ	ˆQ‰ˆˆàˆØˆå�q‘”ð Bð BˆØ˜5 Ñ-Ñ-ˆØ	ˆˆ7�6�#˜e™*œ*Ñ$Ñ$ W¨WµS¸±Z´ZÑ-?Ñ%?Ð
@ÑAÔAÐAÐAàÐ �—’Ñ Ô Ð Ø€MrC   c                   ó   — e Zd ZdZdd„ZdS )ÚArcPathzPath with an addArc methodNc
           
      óþ   — t          ||||||||	¬¦  «        }
|st          | j        ¦  «        s1|                      |
d         d         |
d         d         ¦  «         |
d= |
D ]\  }}|                      ||¦  «         Œd S )N)ro  rp  ri  r   r   )ru  r6   r=  r8  r9  )ra   rj  rk  rl  rm  rn  ro  rp  r8  ri  r÷   rJ   rR   s                rA   ÚaddArczArcPath.addArc,  s    € Ý˜ '¨6Ð3DÀoÐ_fÐtð  JQð  Rñ  Rô  RˆØð 	�˜Tœ^Ñ,Ô,ð 	Ø�KŠK˜˜!œ˜Qœ  !¤ Q¤Ñ(Ô(Ð(Ø�!�ØÐ'Ð'‰DˆAˆq�t—{’{ 1 QÑ'Ô'Ð'Ð'Ð'Ð'rC   r!  )rd   re   rf   rg   ry  rG   rC   rA   rw  rw  *  s.   € € € € € Ø$Ð$ð(ð (ð (ð (ð (ð (rC   rw  c                 ó*  — g }g }| D ]Ó}t          |¦  «        s|}g }	n|d         }|dd …         }	|t          vrt          d|z  ¦  «        ‚t                               |¦  «        }
t	          |	¦  «        t
          |
         k    r!t          |›dt          |	¦  «        ›�¦  «        ‚|                     |
¦  «         |                     t          |	¦  «        ¦  «         ŒÔ|df|dffD ]4\  }}t          |t	          |¦  «        d¦  «        D ]}||         |z   ||<   ŒŒ5|                     dd ¦  «        }|�rUdD �]Q}||         ||dz            f}|d         €	|d         €Œ'||d d…         }t          |¦  «        t          |¦  «        }}|d         �ª|d         �¢t          |¦  «        t          |¦  «        }}||z
  }t          |¦  «        dk    r>||z
  |z  }t          |t	          |¦  «        d¦  «        D ]}||||         |z
  z  z   ||<   ŒŒÔt          |t	          |¦  «        d¦  «        D ]}||z   d	z  ||<   Œ�Œ|d         �|d         |z
  n
|d         |z
  }t          |t	          |¦  «        d¦  «        D ]}||xx         |z  cc<   Œ�ŒSt          |||fi |¤ŽS )
Nr   r   zbad operator name %sz bad arguments r�   Úbbox)r   r   g�íµ ÷Æ°>rh  )r   Ú_PATH_OP_NAMESr  rü   r6   r@  rÏ  rƒ   rö   r’   r”   rô   rQ   r5   ÚabsrN  )ÚpathSegsrO  r  r  r_  ÚOr÷   ÚsegÚopNamerI  rG  r‰   r�  r�   r{  rI  r†   r‡   rˆ   Úfacs                       rA   Ú
definePathrƒ  3  sõ  € Ø
€AØ
€AØð ð ˆÝ�S‰zŒzð 	ØˆFØˆDˆDà˜”VˆFØ�q�r�r”7ˆDØ�Ð'Ð'ÝÐ3°fÑ<Ñ=Ô=Ð=Ý×!Ò! &Ñ)Ô)ˆÝˆt‰9Œ9Õ(¨Ô,Ò,Ð,Ý°f°f°f½SÀ¹Y¼Y¸YÐGÑHÔHÐHØ	�Š�‰ŒˆØ	�Š•�d‘”ÑÔÐÐØ�1ˆv˜˜1�vˆ~ð ð ‰ˆˆ!Ý�q�˜Q™œ Ñ"Ô"ð 	ð 	ˆAØ�Q”4˜‘6ˆAˆa‰DˆDð	ð
 �6Š6�&˜ÑÔ€DØñ Øð 	ñ 	ˆAØ�Q”˜˜Q˜q™Sœ	Ð!ˆAØ�Œtˆ|  !¤ ¨hØ�!�$�Q�$”ˆAÝ�q‘6”6�3˜q™6œ6ˆqˆAØ�ŒtÐ A a¤DÐ$4Ý˜1‘v”v�s 1™vœv�1�Ø˜‘s�Ý�s‘8”8˜T’>�>Ø˜Q™3 ™)�CÝ" 1¥S¨¡V¤V¨AÑ.Ô.ð 0ð 0˜Ø  3¨¨!¬¨Q©¡<Ñ/˜˜!™˜ð0õ # 1¥S¨¡V¤V¨AÑ.Ô.ð +ð +˜Ø ! A¡ s™{˜˜!™˜ñ+ð
 !" !¤Ð 0�A�a”D˜1‘H�H°a¸´d¸Q±h�Ý˜q¥ Q¡¤¨Ñ*Ô*ð ð �AØ�a�D�D”D˜A‘I�D�D‘D�Dñõ ��!�JÐ$Ð$ Ð$Ð$Ð$rC   c                   ó¾   — e Zd ZdZ ee ee¦  «         ee¦  «         eed¬¦  «         eed¬¦  «         ee¦  «         ee¦  «        ¬¦  «        Zdd„Z	d„ Z
d	„ Zd
S )ÚRectz)Rectangle, possibly with rounded corners.úwidth of the object in pointsrÑ   úheight of the objects in points)r�  rJ   rR   r_   r`   ÚrxÚryr   c                 ó�   — t                                | |¦  «         || _        || _        || _        || _        || _        || _        d S rs   )r5  rp   rJ   rR   r_   r`   rˆ  r‰  )ra   rJ   rR   r_   r`   rˆ  r‰  r_  s           rA   rp   zRect.__init__q  sF   € Ý×Ò˜D "Ñ%Ô%Ð%ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØˆŒˆˆrC   c                 ó¬   — |                       | j        | j        | j        | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   rJ   rR   r_   r`   r²   r¯   rU  s     rA   r©   z	Rect.copyz  sF   € Ø�nŠn˜TœV T¤V¨T¬Z¸¼ÑEÔEˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 óV   — | j         | j        | j         | j        z   | j        | j        z   fS rs   ©rJ   rR   r_   r`   r¨   s    rA   rÊ   zRect.getBounds  s'   € Ø”˜œ ¤¨¬Ñ 3°T´V¸d¼kÑ5IÐJÐJrC   Nr*  )rd   re   rf   rg   rË   r5  rÜ   r  r½   rp   r©   rÊ   rG   rC   rA   r…  r…  e  sÃ   € € € € € Ø3Ð3àˆw˜JØˆL˜Ñ"Ô"ØˆL˜Ñ"Ô"Ø�˜XÐ+JÐKÑKÔKØ�˜hÐ,MÐNÑNÔNØˆ\˜(Ñ#Ô#Øˆ\˜(Ñ#Ô#ð
ñ 
ô 
€Hðð ð ð ðð ð ð
Kð Kð Kð Kð KrC   r…  c            
       ó¨   — e Zd ZdZ ee ee¦  «         ee¦  «         eed¬¦  «         eed¬¦  «         ed¦  «        ¬¦  «        Z	d„ Z
d„ Zd	„ ZdS )
ÚImagezBitmap image.r†  rÑ   r‡  N)r�  rJ   rR   r_   r`   rÒ  c                 ó‚   — t                                | |¦  «         || _        || _        || _        || _        || _        d S rs   )r5  rp   rJ   rR   r_   r`   rÒ  )ra   rJ   rR   r_   r`   rÒ  r_  s          rA   rp   zImage.__init__�  s?   € Ý×Ò˜D "Ñ%Ô%Ð%ØˆŒØˆŒØˆŒ
ØˆŒØˆŒ	ˆ	ˆ	rC   c                 ó¸   — |                       | j        | j        | j        | j        | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   rJ   rR   r_   r`   rÒ  r²   r¯   rU  s     rA   r©   z
Image.copy•  sJ   € Ø�nŠn˜TœV T¤V¨T¬Z¸¼ÀdÄiÑPÔPˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 óV   — | j         | j        | j         | j        z   | j        | j        z   fS rs   r�  r¨   s    rA   rÊ   zImage.getBoundsš  s'   € à”˜œ ¤¨¬Ñ 3°T´V¸d¼kÑ5IÐJÐJrC   )rd   re   rf   rg   rË   r5  rÜ   r  r  r½   rp   r©   rÊ   rG   rC   rA   r�  r�  ‚  s±   € € € € € ØÐàˆw˜JØˆL˜Ñ"Ô"ØˆL˜Ñ"Ô"Ø�˜^Ð1PÐQÑQÔQØ�˜nÐ2SÐTÑTÔTØˆ|˜DÑ!Ô!ð
ñ 
ô 
€Hðð ð ðð ð ð
Kð Kð Kð Kð KrC   r�  c            	       ó€   — e Zd Z ee eed¬¦  «         eed¬¦  «         eed¬¦  «        ¬¦  «        Zd„ Zd„ Z	d„ Z
d	S )
ÚCircleúx of the centrerÑ   úy of the centreúradius in points)r�  r
  r  Úrc                 óf   — t                                | |¦  «         || _        || _        || _        d S rs   )r5  rp   r
  r  r˜  )ra   r
  r  r˜  r_  s        rA   rp   zCircle.__init__¦  s1   € Ý×Ò˜D "Ñ%Ô%Ð%ØˆŒØˆŒØˆŒˆˆrC   c                 ó    — |                       | j        | j        | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   r
  r  r˜  r²   r¯   rU  s     rA   r©   zCircle.copy¬  sB   € Ø�nŠn˜TœW d¤g¨t¬vÑ6Ô6ˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 óv   — | j         | j        z
  | j        | j        z
  | j         | j        z   | j        | j        z   fS rs   )r
  r˜  r  r¨   s    rA   rÊ   zCircle.getBounds±  s7   € Ø”˜$œ&Ñ  $¤'¨D¬FÑ"2°D´G¸d¼fÑ4DÀdÄgÐPTÔPVÑFVÐWÐWrC   N©rd   re   rf   rË   r5  rÜ   r  r½   rp   r©   rÊ   rG   rC   rA   r”  r”  ž  s—   € € € € € àˆw˜JØˆ\˜(Ð(9Ð:Ñ:Ô:Øˆ\˜(Ð(9Ð:Ñ:Ô:ØˆL˜Ð'9Ð:Ñ:Ô:ð
ñ 
ô 
€Hðð ð ðð ð ð
Xð Xð Xð Xð XrC   r”  c            
       ó˜   — e Zd Z ee eed¬¦  «         eed¬¦  «         eed¬¦  «         eed¬¦  «        ¬¦  «        Zd„ Zd„ Z	d	„ Z
d
S )ÚEllipser•  rÑ   r–  zx radiuszy radius)r�  r
  r  rˆ  r‰  c                 ót   — t                                | |¦  «         || _        || _        || _        || _        d S rs   )r5  rp   r
  r  rˆ  r‰  )ra   r
  r  rˆ  r‰  r_  s         rA   rp   zEllipse.__init__¼  s8   € Ý×Ò˜D "Ñ%Ô%Ð%ØˆŒØˆŒØˆŒØˆŒˆˆrC   c                 ó¬   — |                       | j        | j        | j        | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   r
  r  rˆ  r‰  r²   r¯   rU  s     rA   r©   zEllipse.copyÃ  sF   € Ø�nŠn˜TœW d¤g¨t¬w¸¼Ñ@Ô@ˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 óv   — | j         | j        z
  | j        | j        z
  | j         | j        z   | j        | j        z   fS rs   )r
  rˆ  r  r‰  r¨   s    rA   rÊ   zEllipse.getBoundsÈ  s7   € Ø”G˜dœgÑ% t¤w°´Ñ'8¸$¼'ÀDÄGÑ:KÈTÌWÐW[ÔW^ÑM^Ð_Ð_rC   Nrœ  rG   rC   rA   rž  rž  ´  s¨   € € € € € Øˆw˜JØˆ\˜(Ð(9Ð:Ñ:Ô:Øˆ\˜(Ð(9Ð:Ñ:Ô:Øˆ\˜(¨
Ð3Ñ3Ô3Øˆ\˜(¨
Ð3Ñ3Ô3ð	
ñ 
ô 
€Hðð ð ðð ð ð
`ð `ð `ð `ð `rC   rž  c                   ó  — e Zd ZdZ ee eed¬¦  «         eed¬¦  «         eed¬¦  «         ee¦  «         ee¦  «         ee¦  «         ee¦  «         ee¦  «         ee	d¬¦  «        ¬¦
  «
        Z
dZ	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd	S )ÚWedgeznA "slice of a pie" by default translates to a polygon moves anticlockwise
       from start angle to end angler•  rÑ   r–  r—  ztreat as annular ring)
r�  rj  rk  rl  rm  rn  ro  Úradius1Úyradius1Úannularr   NFc                 óÆ   — t                                | |¦  «         ||k     r|dz   }||k     °|||||f\  | _        | _        | _        | _        | _        || _        || _        d S )Nih  )	r5  rp   rj  rk  rl  rm  rn  ro  r¦  )	ra   rj  rk  rl  rm  rn  ro  r¦  r_  s	            rA   rp   zWedge.__init__Ý  s{   € å×Ò˜D "Ñ%Ô%Ð%ØÐ/Ò/Ð/Ø-¨cÑ1ˆOð Ð/Ò/Ð/ð �W˜fÐ&7¸ÐHñ 	^ˆŒ�d”l D¤K°Ô1GÈÔI]àˆŒØˆŒˆˆrC   c                 óŒ   — t          | dd ¦  «        }|€| j        }t          | dd ¦  «        }t          | d|¦  «        }|€|}|||fS )Nro  r¤  r¥  )r¿   rl  )ra   ro  r¤  r¥  s       rA   Ú
_xtraRadiizWedge._xtraRadiiè  sV   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ? d¤k˜GÝ˜$˜y¨$Ñ/Ô/ˆÝ˜4 
¨7Ñ3Ô3ˆØˆ? h˜GØ˜ Ð)Ð)rC   c                 óÂ  — | j         }| j        }| j        }|                      ¦   «         \  }}}| j        }| j        }t          dz  }	||	z  }
||	z  }||
k     r|dt          z  z   }||
k     °t          ||
z
  ¦  «        }g }|dk    rJt          | j	        pd|¦  «        }||	z  }t          dt          ||z  dz   ¦  «        ¦  «        }||z  }|dz  }nd}d}g }|j        }|j        }t          |¦  «        D ]1}|
||z  z   } |t          |¦  «        t          |¦  «        f¦  «         Œ2|D ]'\  }} ||||z  z   ¦  «          ||||z  z   ¦  «         Œ(|dk    s|€|dk    s|€ ||¦  «          ||¦  «         n>|                     ¦   «          |D ]'\  }} ||||z  z   ¦  «          ||||z  z   ¦  «         Œ(| j        �rt%          t'          | dt(          ¦  «        ¬	¦  «        }|                     |d         |d         ¦  «         t          dd|z  d¦  «        D ]'}|                     ||         ||dz            ¦  «         Œ(|                     ¦   «          |                     |d|z           |d|z  dz            ¦  «         t          d|z  dz   d
|z  d¦  «        D ]'}|                     ||         ||dz            ¦  «         Œ(|                     ¦   «          |S t1          |¦  «        S )Nrf  r�   rg  r†  r   rh  r   r)   )r)   r‚   )rj  rk  rl  r©  rm  rn  r   rF  rQ   rp  r5   rÌ  rƒ   r”   r   r   ri  r¦  rN  r¿   r   r8  r9  r;  ÚPolygon)ra   rj  rk  rl  ro  r¤  r¥  rm  rn  rq  rr  rs  rS   r•   rp  rt  r0   ÚCAÚCAAr†   rˆ   r/   r÷   rJ   s                           rA   Ú	asPolygonzWedge.asPolygonô  sP  € à”ˆØ”,ˆØ”ˆØ%)§_¢_Ñ%6Ô%6Ñ"ˆ�˜(Ø Ô2ÐØÔ.ˆÝ˜e™8ÐØ&Ð'7Ñ7ˆ
Ø"Ð#3Ñ3ˆØ�zÒ!Ð!Ø ¥"¡‘}ˆHð �zÒ!Ð!å�h˜zÑ)Ñ*Ô*ˆØˆØ�Š;ˆ;Ý˜dÔ.Ð4°"°UÑ;Ô;ˆKØ&Ð'7Ñ7ˆLÝ�A•c˜% Ñ,¨SÑ0Ñ1Ô1Ñ2Ô2ˆAØ  ™7ˆLØ�‰FˆAˆAàˆAØˆLØˆØŒiˆØŒMˆÝ˜1‘X”Xð 	)ð 	)ˆEØ˜u \Ñ1Ñ1ˆEØˆC•�U‘”�C ™JœJÐ'Ñ(Ô(Ð(Ð(Øð 	!ð 	!‰CˆAˆaØˆAˆg�f˜Q‘hÑÑÔÐØˆAˆg�g˜a‘iÑÑ Ô Ð Ð Ø�QŠJˆJ˜'˜/°¸!²°¸xÐ?OØˆAˆg‰JŒJˆJ˜˜˜'™
œ
˜
˜
à�JŠJ‰LŒLˆLØð &ð &‘��!Ø��'˜' !™)Ñ#Ñ$Ô$Ð$Ø��'˜( 1™*Ñ$Ñ%Ô%Ð%Ð%ØŒ<ñ 	#Ý�g d¨:µ}ÑEÔEÐFÑFÔFˆAØ�HŠH�V˜A”Y˜v aœyÑ)Ô)Ð)Ý˜1˜Q˜q™S ‘^”^ð 0ð 0�Ø—’˜ œ 6¨!¨A©#¤;Ñ/Ô/Ð/Ð/Ø�KŠK‰MŒMˆMØ�HŠH�V˜A˜a™C”[ ¨¨!©¨A©¤Ñ/Ô/Ð/Ý˜1˜Q™3˜q™5  1¡ QÑ'Ô'ð 0ð 0�Ø—’˜ œ 6¨!¨A©#¤;Ñ/Ô/Ð/Ð/Ø�KŠK‰MŒMˆMØˆHå˜6‘?”?Ð"rC   c                 ó¸   — |                       | j        | j        | j        | j        | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   rj  rk  rl  rm  rn  r²   r¯   rU  s     rA   r©   z
Wedge.copy*  sV   € Ø�nŠn˜Tœ\Ø”LØ”KØÔ*ØÔ(ñ	*ô *ˆð
 	×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 óN   — |                       ¦   «                              ¦   «         S rs   )r®  rÊ   r¨   s    rA   rÊ   zWedge.getBounds3  s   € Ø�~Š~ÑÔ×)Ò)Ñ+Ô+Ð+rC   )NF)rd   re   rf   rg   rË   r5  rÜ   r  r  r-  r½   rp  rp   r©  r®  r©   rÊ   rG   rC   rA   r£  r£  Ë  s#  € € € € € ð(ð (ð ˆw˜JØ�,˜xÐ->Ð?Ñ?Ô?Ø�,˜xÐ->Ð?Ñ?Ô?Ø�˜hÐ,>Ð?Ñ?Ô?Ø(˜L¨Ñ2Ô2Ø&˜, xÑ0Ô0Ø�,˜~Ñ.Ô.Ø�,˜~Ñ.Ô.Ø�< Ñ/Ô/Ø�,˜yÐ.EÐFÑFÔFð

ñ 

ô 

€Hð €Kà]aØð	ð 	ð 	ð 	ð*ð *ð *ð4#ð 4#ð 4#ðlð ð ð,ð ,ð ,ð ,ð ,rC   r£  c                   óX   — e Zd ZdZ ee eed¬¦  «        ¬¦  «        Zg fd„Z	d„ Z
d„ ZdS )	r«  zKDefines a closed shape; Is implicitly
    joined back to the start for you.ú5list of numbers in the form x1, y1, x2, y2 ... xn, ynrÑ   ©r�  r•   c                 óŽ   — t                                | |¦  «         t          |¦  «        dz  dk    s
J d¦   «         ‚|pg | _        d S rR  )r5  rp   r6   r•   )ra   r•   r_  s      rA   rp   zPolygon.__init__>  sK   € Ý×Ò˜D "Ñ%Ô%Ð%Ý�6‰{Œ{˜Q‰ !Ò#Ð#Ð#Ð%TÑ#Ô#Ð#Ø�l ˆŒˆˆrC   c                 óˆ   — |                       | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   ©r§   r•   r²   r¯   rU  s     rA   r©   zPolygon.copyC  ó:   € Ø�nŠn˜Tœ[Ñ)Ô)ˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c                 ó*   — t          | j        ¦  «        S rs   ©r¢   r•   r¨   s    rA   rÊ   zPolygon.getBoundsH  ó   € Ý˜tœ{Ñ+Ô+Ð+rC   N)rd   re   rf   rg   rË   r5  rÜ   r(  r½   rp   r©   rÊ   rG   rC   rA   r«  r«  6  s‚   € € € € € ð)ð )ð ˆw˜JØ�˜oÐ3jÐkÑkÔkð
ñ 
ô 
€Hð !ð #ð #ð #ð #ð
ð ð ð
,ð ,ð ,ð ,ð ,rC   r«  c                   óX   — e Zd ZdZ ee eed¬¦  «        ¬¦  «        Zg fd„Z	d„ Z
d„ ZdS )	ÚPolyLinez–Series of line segments.  Does not define a
    closed shape; never filled even if apparently joined.
    Put the numbers in the list, not two-tuples.r²  rÑ   r³  c                 óL  — t                                | |¦  «         |pg }t          |¦  «        }|rlt          |d         ¦  «        r7g }|D ]/\  }}|                     |¦  «         |                     |¦  «         Œ0|}n t          |¦  «        dz  dk    s
J d¦   «         ‚|| _        d S )Nr   r�   rS  )r*  rp   r6   r   rƒ   r•   )ra   r•   r_  Ú	lenPointsru   rJ   rR   s          rA   rp   zPolyLine.__init__T  s¸   € Ý×Ò˜4 Ñ$Ô$Ð$Ø�˜2ˆÝ˜‘K”Kˆ	Øð 	]Ý�V˜A”YÑÔð ]Ø�Ø#ð  ð  ‘E�Q�qØ—H’H˜Q‘K”K�KØ—H’H˜Q‘K”K�K�KØ��å˜6‘{”{ Q‘¨!Ò+Ð+Ð+Ð-\Ñ+Ô+Ð+ØˆŒˆˆrC   c                 óˆ   — |                       | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   r¶  rU  s     rA   r©   zPolyLine.copyc  r·  rC   c                 ó*   — t          | j        ¦  «        S rs   r¹  r¨   s    rA   rÊ   zPolyLine.getBoundsh  rº  rC   N)rd   re   rf   rg   rË   r*  rÜ   r(  r½   rp   r©   rÊ   rG   rC   rA   r¼  r¼  K  s‚   € € € € € ð4ð 4ð ˆw˜IØ�˜oÐ3jÐkÑkÔkð
ñ 
ô 
€Hð !ð ð ð ð ðð ð ð
,ð ,ð ,ð ,ð ,rC   r¼  c                   óÞ   — e Zd ZdZ ee e ee e	ed¬¦  «        fd¦  «        d¬¦  «         e ee
edf¦  «        d¬¦  «         e ee
ed	f¦  «        d
¬¦  «        ¬¦  «        Zddg fd„ZdS )ÚHatchingz\define a hatching of a set of polygons defined by lists of the form [x0,y0,x1,y1,....,xn,yn]r   )r  z
xy list(s)z8list(s) of numbers in the form x1, y1, x2, y2 ... xn, ynrÑ   zangle(s)zCthe angle or list of angles at which hatching lines should be drawnzspacings(s)z-orthogonal distance(s) between hatching lines)r�  ÚxyListsÚanglesÚspacingsr�   é-   c           
      óD  — t          j        | fi |¤Ž t          |¦  «        r|f}t          |¦  «        r|f}t          |¦  «        r|f}t	          |¦  «        t	          |¦  «        z
  }|dk    rt          |¦  «        ||d         gz  z   }|| _        || _        || _        | j	        }| j
        }t          |¦  «        D �]b\  }}||         }	t          |¦  «        }t          |¦  «        }
t          |¦  «        }d}| }|D ]]}t          dt	          |¦  «        d¦  «        D ]<}||dz            |
z  ||         |z  z
  }t!          ||¦  «        }t#          ||¦  «        }Œ=Œ^t%          t'          ||	z  ¦  «        ¦  «        dz
  }t%          t'          ||	z  ¦  «        ¦  «        dz   }t          ||¦  «        D �]l}g }|	|z  }|D ]È}t	          |¦  «        dz
  }t          dt	          |¦  «        d¦  «        D ]•}||         }||dz            }||
z  ||z  z   }||
z  ||z  z
  }||         }||dz            }||
z  ||z  z   }||
z  ||z  z
  }||k     r||k    s||k     r-||k    r'|                     |||z
  ||z
  z  ||z
  z  z   ¦  «         |}Œ–ŒÉ|                     ¦   «          t          dt	          |¦  «        d¦  «        D ]d}||         |
z  ||z  z
  }||
z  ||         |z  z   }||dz            |
z  ||z  z
  }||
z  ||dz            |z  z   } |||¦  «          |||¦  «         Œe�Œn�Œdd S )Nr   r1   iÿÿÿr�   r   )rN  rp   r(  r  r6   r’   rÃ  rÄ  rÅ  r8  r9  Ú	enumerater   r   r   r”   rQ   r5   rÌ  r   rƒ   r¶   )ra   rÅ  rÄ  rÃ  Úkwdsr�   r8  r9  r	  ÚspacingÚcosThetaÚsinThetaÚspanMinÚspanMaxr÷   rI  rR   Ú	spanStartÚspanEndÚstepÚnodeXÚstripeYrÿ   r†   r‡   Úa1Úb1rJ   rz   r{   s                                 rA   rp   zHatching.__init__t  sÆ  € ÝŒ�dÐ#Ð#˜dÐ#Ð#Ð#Ý˜7Ñ#Ô#ð 	"Ø�zˆGÝ�FÑÔð 	Ø�YˆFÝ�HÑÔð 	#Ø �{ˆHÝ�‰KŒK�˜H™œÑ%ˆØˆQŠ3ˆ3Ý˜H‘~”~ a¨°"¬¨Ñ&6Ñ6ˆHàˆŒØˆŒØ ˆŒà”ˆØ”ˆå! &Ñ)Ô)ð :	 ñ :	 ‰HˆAˆuØ˜q”kˆGÝ˜E‘N”NˆEÝ˜5‘z”zˆHÝ˜5‘z”zˆHà ˆGØ�hˆGð ð -ð -�Ý˜q¥ Q¡¤¨Ñ*Ô*ð -ð -�Aà˜!˜A™#œ˜x™¨¨!¬¨X©Ñ5�AÝ! ! G™nœn�GÝ! ! G™nœn�G�Gð	-õ �E '¨'¡/Ñ2Ô2Ñ3Ô3°aÑ7ˆIÝ�5 ¨¡Ñ1Ô1Ñ2Ô2°QÑ6ˆGõ ˜i¨Ñ0Ô0ð $ ñ $ �Ø�Ø! $™,�ð !ð ð �AÝ˜A™œ˜q™�AÝ" 1¥S¨¡V¤V¨AÑ.Ô.ð ð ˜Ø˜aœD˜Ø˜a ™cœF˜Ø˜x™Z¨!¨H©*Ñ4˜Ø˜x™Z¨!¨H©*Ñ4˜Ø˜aœD˜Ø˜a ™cœF˜à˜x™Z¨¨(©
Ñ2˜Ø˜x™Z¨¨(©
Ñ2˜ð ˜wšJ˜J¨2¨wª;¨;¸2¸gº:¸:È"ÈgÊ+È+Ø!ŸLšL¨¨R°©U°W¸R±ZÑ,@À"ÀRÁ%Ñ,HÑ)HÑIÔIÐIà˜˜ðð" —
’
‘”�õ ˜q¥ U¡¤¨AÑ.Ô.ð 	 ð 	 �Aà˜aœ Ñ)¨G°HÑ,<Ñ<�AØ Ñ(¨¨q¬°(Ñ):Ñ:�AØ˜a ™cœ
 8Ñ+¨g°hÑ.>Ñ>�AØ Ñ(¨5°°1±¬:°hÑ+>Ñ>�Að �F˜1˜Q‘K”K�KØ�F˜1˜Q‘K”K�K�Kñ	 ñ7$ ð-:	 ð :	 rC   N)rd   re   rf   rg   rË   rN  rÜ   ÚEitherOrr(  r  r  r½   rp   rG   rC   rA   rÂ  rÂ  k  sù   € € € € € ØfÐfàˆw˜DØ�,˜x˜x¨¸¸ÀOÐWXÐ9YÑ9YÔ9YÐ(ZÐ[gÑhÔhð  oið  jñ  jô  jØ�˜h˜h¨°ÀÐ'LÑMÔMð  TYð  Zñ  Zô  ZØ�<  ¨(°?À=Ð)QÑ RÔ Rð  YHð  Iñ  Iô  Ið
ñ 
ô 
€Hð !"¨"°bð M ð M ð M ð M ð M ð M rC   rÂ  c                 óº   — t          | d|¦  «        }|                     |¦  «        }|dk    r.t          | dd¦  «        }	|	t          |d |…         |||¦  «        z   }|S )NÚ_dpr   Ú_dpLen)r¿   Úrfindr   )
ÚtAr7   r4   r+   r*   ÚencodingÚpivotCharacterÚdpr�   ÚdpOffss
             rA   ÚnumericXShiftrà  Ã  sa   € Ý	��E˜.Ñ	)Ô	)€BØ�
Š
�2‰Œ€AØˆ!‚t€tÝ˜˜H QÑ'Ô'ˆØ•[  b q b¤¨(°8¸HÑEÔEÑEˆØ€HrC   c                   óP  — e Zd ZdZ e eed¬¦  «         eed¬¦  «         eed¬¦  «         edd¬¦  «         eed¬¦  «         eed	¬¦  «         e e	d
ddd¦  «        d¬¦  «         ee¦  «         e e	dddddddd¦  «        d¬¦  «        ¬¦	  «	        Z
dZd„ Zd„ Zd„ Zd„ ZdS )ÚStringziNot checked against the spec, just a way to make something work.
    Can be anchored left, middle or end.zx point of anchoringrÑ   zy point of anchoringzthe text of the stringNz_font name of the text - font is either acrobat standard or registered when using external font.z	font sizezcolor of the fontr-   Úmiddler3   Únumericz(treat (x,y) as one of the options below.r   r   r�   r€   r‚   é   r7  é   z.Control whether text is filled/stroked etc etc)	rJ   rR   r7   r+   r*   r(   r,   rÜ  ÚtextRenderModeÚutf8c                 óÔ   — || _         || _        || _        d| _        t          d         | _        t          d         | _        t          d         | _        |                      |¦  «         d S )Nr-   r+   r*   r(   )	rJ   rR   r7   r,   r,  r+   r*   r(   r²   )ra   rJ   rR   r7   r_  s        rA   rp   zString.__init__Ý  s\   € ØˆŒØˆŒØˆŒ	Ø!ˆŒÝ& zÔ2ˆŒÝ& zÔ2ˆŒÝ'¨Ô4ˆŒØ×Ò˜2ÑÔÐÐÐrC   c                 ó^   — | j         t          | j        | j        | j        | j        ¦  «        z   S rs   )rJ   r   r7   r+   r*   rÜ  r¨   s    rA   ÚgetEastzString.getEastç  s%   € ØŒv� D¤I¨d¬m¸D¼MÈ4Ì=ÑYÔYÑYÐYrC   c                 ó    — |                       | j        | j        | j        ¦  «        }|                     |                      ¦   «         ¦  «         |S rs   )r§   rJ   rR   r7   r²   r¯   rU  s     rA   r©   zString.copyê  sB   € Ø�nŠn˜TœV T¤V¨T¬YÑ7Ô7ˆØ×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ
rC   c           	      óT  — | j         }t          || j        | j        | j        ¦  «        }| j        }| j        }|dk    rG|dk    r	|d|z  z  }n8|dk    r||z  }n,|dk    r&|t          |||| j        | j        | j        ¦  «        z  }|| j        d| j        z  z
  ||z   | j        | j        z   fS )Nr-   rã  rh  r3   rä  gš™™™™™É?)	r7   r   r+   r*   rÜ  r,   rJ   rà  rR   )ra   r;   r4   rÛ  rJ   s        rA   rÊ   zString.getBoundsï  sº   € àŒIˆÝ˜˜$œ-¨¬°d´mÑDÔDˆØŒ_ˆØŒFˆØˆwŠ;ˆ;Ø�8Š|ˆ|Ø�S˜‘U‘
��Ø�U’�Ø�Q‘��Ø�Y’�Ø•] 2 a¨¨$¬-¸¼ÀdÄmÑTÔTÑT�Ø�4”6˜C $¤-Ñ/Ñ/°°1±°d´f¸t¼}Ñ6LÐMÐMrC   )rd   re   rf   rg   rË   rÜ   r  ÚisStringr.  r  r½   rÜ  rp   rë  r©   rÊ   rG   rC   rA   râ  râ  Ë  sY  € € € € € ð,ð ,ð ˆwØˆL˜Ð'=Ð>Ñ>Ô>ØˆL˜Ð'=Ð>Ñ>Ô>Øˆ|˜HÐ*BÐCÑCÔCØ�< ð  +Lð  Mñ  Mô  MØ�< ¨kÐ:Ñ:Ô:Ø �L Ð4GÐHÑHÔHØ!�\ % %¨°¸¸yÑ"IÔ"IÐOyÐzÑzÔzØ�< Ñ)Ô)Ø%˜ e e¨A¨a°°!°A°a¸¸!Ñ&<Ô&<ÐBrÐsÑsÔsð

ñ 

ô 

€Hð €Hðð ð ðZð Zð Zðð ð ð
Nð Nð Nð Nð NrC   râ  c                   ó   — e Zd ZdZd„ ZdS )ré   ak  A simple template for creating a new node.  The user (Python
    programmer) may subclasses this.  provideNode() must be defined to
    provide a Shape primitive when called by a renderer.  It does
    NOT inherit from Shape, as the renderer always replaces it, and
    your own classes can safely inherit from it without getting
    lots of unintended behaviour.c                 ó    — t          d¦  «        ‚)zºOverride this to create your own node. This lets widgets be
        added to drawings; they must create a shape (typically a group)
        so that the renderer can draw the custom node.ú4this method must be redefined by the user/programmerrÉ   r¨   s    rA   rê   zUserNode.provideNode  s   € õ
 "Ð"XÑYÔYÐYrC   N)rd   re   rf   rg   rê   rG   rC   rA   ré   ré   þ  s2   € € € € € ð%ð %ðZð Zð Zð Zð ZrC   ré   c                   ó   — e Zd ZdZd„ ZdS )Ú
DirectDrawz"try to draw directly on the canvasc                 ó    — t          d¦  «        ‚)Nrñ  rÉ   )ra   rb   s     rA   ÚdrawDirectlyzDirectDraw.drawDirectly  s   € Ý!Ð"XÑYÔYÐYrC   N)rd   re   rf   rg   rõ  rG   rC   rA   ró  ró    s.   € € € € € Ø,Ð,ðZð Zð Zð Zð ZrC   ró  c                  ó^  — t          dddd¦  «        } dd l}|j        }t          j        j        } |d¦  «          ||                      ¦   «         ¦  «          |d¦  «         |                      ¦   «           |d¦  «          |d¦  «         | ` |d	¦  «         |                      ¦   «          d S )
Nr!   r„  é2   r   za Rectangle: z
verifying...z OK
zdeleting rect.width zverifying...)r…  ÚpprintrØ  Ústdoutrñ  r¯   rÃ   r_   )r˜  rø  Úppr4   s       rA   r&  r&    s½   € ÝˆR��3�rÑÔ€AØ€M€M€MØ	Œ€BÝŒ
Ô€AØ€A€oÑÔÐØ€B€q‡‚ÑÔÑÔÐØ€AÐÑÔÐØ‡H‚H�J„J€JØ€A€g�J„J€Jð €AÐÑÔÐØ	ˆØ€A€nÑÔÐØ‡H‚H�J„J€J€J€JrC   Ú__main__rs   )r   rQ  )FF)NNN)bÚ__version__rg   rÑ  rØ  Úmathr   r   r   r   r   r   Úreportlab.platypusr	   Úreportlab.rl_configr
   r   r   Ú_baseGFontNamer   r   Úreportlab.libr   r   Úreportlab.lib.validatorsÚreportlab.lib.utilsr   r   rd  ÚisNumberInRanger/  Úreportlab.lib.attrmapÚreportlab.lib.rl_accelr   Úreportlab.pdfbase.pdfmetricsr   Úreportlab.lib.fontsr   Úreportlab.pdfgen.canvasr   r   Ú_baseGFontNameBÚ_baseGFontNameIÚ_baseGFontNameBIÚNON_ZERO_WINDINGÚEVEN_ODDÚblackr,  r   rB   rW   rY   ri   r~   rŒ   r™   r¢   r¤   rÍ   r3  r8  rU  r`  rè   r‰  Ú	Validatorr#  r*  r1  r5  r’   r”   r>  rZ  r\  r?  r@  r|  rJ  Ú_fillModeMaprN  r>  ru  rw  rƒ  r…  r�  r”  rž  r£  r«  r¼  rÂ  rà  râ  ré   ró  r&  rd   rG   rC   rA   ú<module>r     sv  ðð
 €ØG€à €€€€€€€Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø yÐ yÐ yÐ yÐ yÐ yÐ yÐ yÐ yÐ yÐ yÐ yÐ yÐ yØ  Ð  Ð  Ð  Ð  Ð  Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ØˆF�?�? 1 QÑ'Ô'Ñ(Ô(€	Ø #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø %Ð %Ð %Ð %Ð %Ð %Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø�%˜ q¨Ñ+Ô+€Ø�%˜ q¨Ñ+Ô+€Ø�5˜¨¨!Ñ,Ô,Ð ð &Ð Ø€ðØ�ðð �6”<ð	ð
 �1ðð �Qðð �aðð ˜ðð �tðð �Tðð �4ðð �Uðð �uðð �Qðð  �”ð!ð" �ð#ð& �ð'ð( �ð)ð* �7ð+€ð6 Ð Ð Ð ð  ð   ð   ðD-ð -ð -ð,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð&ð &ð &ð &ð &ñ &ô &ð &ð$ð $ð $ð"3ð 3ð 3ðj0ð 0ð 0ð(ð (ð (ðKQð KQð KQð KQð KQˆOÐ/ñ KQô KQð KQðZ{ð {ð {ð {ð {ˆEñ {ô {ð {ðz	ð 	ð 	ð 	ðð ð ð ð<ð ð ð ð"@ð @ð @ð
Tð Tð Tð Tð Tˆe�Xñ Tô Tð Tðl5ð 5ð 5ð 5ð 5ñ 5ô 5ð 5ð,zð zð zð zð z˜	ñ zô zð zð &Ð%Ñ'Ô'Ð ðð ð ð ð �ñ ô ð ð24ð 4ð 4ð 4ð 4ˆ9ñ 4ô 4ð 4ð&%ð %ð %ð %ð %�ñ %ô %ð %ð& *.¨¨e¨e°A©h¬h©¬Ñ &€ˆ�(˜JØ!Ð Ø8Ð8Ð8€ð%ð %ð %ð %ð< 	ˆdØ�}Ø�MØ�=Ø�}Ø�MØ�=ð
€ðF)ð F)ð F)ð F)ð F)ˆ:ñ F)ô F)ð F)ðP ˆd‰fŒf€ðð ð ð ð6(ð (ð (ð (ð (ˆdñ (ô (ð (ð  a¨A°!ð 0%ð 0%ð 0%ð 0%ðdKð Kð Kð Kð Kˆ:ñ Kô Kð Kð:Kð Kð Kð Kð KˆJñ Kô Kð Kð8Xð Xð Xð Xð XˆZñ Xô Xð Xð,`ð `ð `ð `ð `ˆjñ `ô `ð `ð.i,ð i,ð i,ð i,ð i,ˆJñ i,ô i,ð i,ðV,ð ,ð ,ð ,ð ,ˆjñ ,ô ,ð ,ð*,ð ,ð ,ð ,ð ,ˆyñ ,ô ,ð ,ð@V ð V ð V ð V ð V ˆtñ V ô V ð V ðp 8<È=ð ð ð ð ð1Nð 1Nð 1Nð 1Nð 1NˆUñ 1Nô 1Nð 1NðfZð Zð Zð Zð ZÐ"ñ Zô Zð ZðZð Zð Zð Zð Z�ñ Zô Zð Zð
ð ð ð" ˆZÒÐØ€D�F„F€F€F€Fð ÐrC   