+
    ŒvjEç  ã                   óÜ  € R t Rt^ RIt^ RIt^ RIHtHtHtHtH	t	H
t
 ^ RIHt ^ RIHtHtHtHtHt ^ RIHt ^ RIHt ^ RI5 ^ R	IHtHt ]! ]! ^ ^4      4      t^ RI5 ^ R
IH t  ^ RI!H"t" ^ RI#H$t$ ^ RI%H&t&H't' ]$! ]^^ 4      t(]$! ]^ ^4      t)]$! ]^^4      t*Rt+Rt,/ RRebR]PZ                  bR^bR^ bR^ bR^
bRRbRRbRRbRRbRRbR^ bR]PZ                  bR]&bR^
bR ]bR!R"bt.^RI/5 R# t0R$ t1 ! R% R&4      t2 ! R' R(4      t3R) t4R* t5R+ t6R, t7 ! R- R.]3]24      t8 ! R/ R0]84      t9RfR1 lt:RfR2 lt;RgR3 lt<R4 t= ! R5 R6]9]4      t> ! R7 R84      t? ! R9 R:]@4      tA]A! 4       tA ! R; R<]84      tB ! R= R>]B4      tC ! R? R@]B4      tD]E! ]F! ^4      4      w  tGtHtItJRhtK. RiOtLRjRA ltMRR]']'RB]'RC]']&]&RD]&RE]&/tN ! RF RG]D4      tO]O! 4       tPRkRH ltQ ! RI RJ]O4      tR. ^ ^ ^ 3RK ltS ! RL RM]D4      tT ! RN RO]D4      tU ! RP RQ]D4      tV ! RR RS]D4      tW ! RT RU]D4      tX ! RV RW]D4      tY ! RX RY]B4      tZ ! RZ R[]O4      t[R]3R\ lt\ ! R] R^]84      t] ! R_ R`]24      t^ ! Ra Rb]84      t_Rc t`]aRd8X  d
   ]`! 4        R# R# )lz3.5.60z9Core of the graphics library - defines Drawing and ShapesN)Ú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ÚstrokeColorÚstrokeWidthÚstrokeLineCapÚstrokeLineJoinÚstrokeMiterLimitÚstrokeDashArrayÚstrokeOpacityÚfillOpacityÚfillOverprintFÚstrokeOverprintÚoverprintMaskÚ	fillColorÚfillModeÚfontSizeÚfontNameÚ
textAnchorÚstartc           	      óð  € ^ pV  F  p\        V\        WqV4      4      pK  	  \        V 4      V,          pTp	V^ ,          R8X  d   V) p
W˜,
          p	M#V^ ,          R8X  d   ^ p
MV) R,          p
Wš,           p	VR,          R8X  d$   V) pVR8X  d   ^ pMeVR8X  d   V) pMZV) R,          pMOVR,          R8X  d!   ^ pVR8X  d   TpM5VR8X  d   ^ pM+VR,          pM!V) R,          pVR8X  d   V) pMVR8X  d   TpM^ pWºWhWÉ3# )	é    ÚsÚng       @ÚeÚendr)   Úwéÿÿÿÿ)Úmaxr   Úlen)ÚtextÚfontr&   Úleadingr(   Ú	boxAnchorr0   ÚtÚhÚytÚybÚxbÚxts   &&&&&&       Ú]/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/reportlab/graphics/shapes.pyÚ_textBoxLimitsr?   C   s  € Ø	€AÛˆÜ�”+˜a hÓ/Ó0Šñ ô 	ˆD‹	�'Õ€AØ	€BØ�…|�SÔØˆRˆØ�V‰Ø	�1��sÔ	Ø‰àˆR��VˆØ�Wˆà�…}�cÔØˆRˆØ�uÔ 1™bØ˜Ô ¨ r¡"Ø�2�c•6‰bØ	�2�˜Ô	ØˆØ�uÔ 1™bØ˜Ô  q¡"Ø�S•5‰bàˆR��VˆØ�uÔ B 3™bØ˜Ô  r¡"Øˆbà�1˜ÐÐó    c           	     ó8  € \        \        V4      W3W,           V3W,           W,           3WV,           334      pV U u. uF  q ^ ,          NK  	  pp V U u. uF  q ^,          NK  	  pp \        V4      \        V4      \        V4      \        V4      V3# u up i u up i )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
)ÚzTransformPointsÚrotateÚminr2   )ÚxÚyr0   r9   ÚangleÚCÚXÚYs   &&&&&   r>   Ú_rotatedBoxLimitsrK   e   sŒ   € ô
 	œ ›¨¨¨q­s°1¨g°qµs¸1½3°iÀÀQÅ3ÀÐ'HÓI€AÙÓ‘q�!ˆ1�ˆ‘q€AÐÙÓ‘q�!ˆ1�ˆ‘q€AÐÜˆq‹6”3�q“6œ3˜q›6¤3 q£6¨1Ð,Ð,ùò 	ùÚs   ½BÁBc                   ó*   a € ] tR t^ot o RtR tRtV tR# )Ú_DrawTimeResizeablez:Addin class to provide the horribleness of _drawTimeResizec                óÄ   € \        V R 4      '       dN   V P                  pVP                  pWuVn        Vn        \        VR4      '       d   VP                  W4       R# R# R# )Ú_canvasÚ_drawTimeResizeN)ÚhasattrrO   Ú_drawingÚwidthÚheightrP   )Úselfr0   r9   ÚcanvasÚdrawings   &&&  r>   rP   Ú#_DrawTimeResizeable._drawTimeResizeq   sU   € Ü�4˜	×"Ò"Ø—\‘\ˆFØ—o‘oˆGØ,-Ð)ˆGŒM˜7œ>Ü�vÐ/×0Ò0Ø×&Ñ& qÖ+ñ 1ñ	 #r@   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rP   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r>   rM   rM   o   s   ø‡ € ÙD÷,ð ,r@   rM   c                   ó,   a € ] tR t^yt o / 3R ltRtV tR# )Ú_SetKeyWordArgsc                óP   € VP                  4        F  w  r#\        WV4       K  	  R# )z9In general properties may be supplied to the constructor.N)ÚitemsÚsetattr)rU   ÚkeywordsÚkeyÚvalues   &&  r>   Ú__init__Ú_SetKeyWordArgs.__init__z   s   € à"Ÿ.™.Ö*‰JˆCÜ�D˜uÖ%ó +r@   rY   N)rZ   r[   r\   r]   rk   r_   r`   ra   s   @r>   rd   rd   y   s   ø‡ € Ø "÷ &ò &r@   rd   c                 óÖ   € V  Uu. uF
  qf   K  VNK  	  ppV'       g   R # V^ ,          w  r4rVVR,           F(  w  rxršWs8  d   TpW•8”  d   T	pW„8  d   TpW¦8”  g   K&  T
pK*  	  W4WV3# u upi )Nºé   NNrY   )ÚrectListrE   ÚLÚxMinÚyMinÚxMaxÚyMaxÚx1Úy1Úx2Úy2s   &          r>   ÚgetRectsBoundsrz   …   sz   € áÓ.‘Hˆq�ˆ‘H€AÐ.ß‘Tà˜q�TÑ€D�Ø˜bŸE˜EÑˆ�ØŒ9ØˆDØŒ9ØˆDØŒ9ØˆDØŽ9ØŠDñ "ð ˜Ð#Ð#ùò 	/s
   …A&�A&c                ó–  € V^W!,
          ,          ,
          V ,
          p^V^V,          ,
          V ,           ,          pW,
          pV .pWU,          ^V,          V,          ,
          pV^ 8¼  dÀ   \        V4      pV^ 8  d   V) pRWX,           ,          p	. p
 V
P                  W”,          4        T
P                  Yi,          4       TR,          pT^,          pT
 FQ  p^ Tu;8:  d
   ^8:  g   K  M K  TP                  Y»Y´,          T,           ,          T,           ,          T ,           4       KS  	  VP                  V4       V#     L˜; i    L‡; i)a#  
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
g      ø?g      à¿)r   Úappend)Úy0rw   ry   Úy3ÚaÚbÚcrJ   ÚdÚqÚRr8   s   &&&&        r>   Ú_getBezierExtremar…   –   s  € ð0 	ˆˆB�E�…l�2…o€AØˆˆAˆb�D���…n€AØ…e€AØ	ˆ€Að 	
�ˆa��c�!�e�€AØˆ!„tÜ�‹GˆØˆQŒ3�Q�B�Ø�!•#�JˆØˆð	Ø�H‰H�Q•SŒMð	Ø�H‰H�Q•SŒMð 	
ˆS�ˆØ	ˆQ�ˆÛˆAØ�!Žw�Q�wŠwà—‘˜˜q�s 1�u�I a�K�¨Õ+Ö,ñ ð ‡H�HˆR„LØ€Høð	Ùûð	Ùús   ÂD= Â*E Ä=EÅEc           
      óø   € \        V 4      pV 3R  lp\        \        V\        ^ V^4      4      4      p\        \        V\        ^V^4      4      4      p\	        V4      \	        V4      \        V4      \        V4      3# )c                 ó   € W,          # ©NrY   )ÚiÚps   &&r>   Ú<lambda>ÚgetPathBounds.<locals>.<lambda>Í   s   € ˜QžTr@   )r3   ÚlistÚmapÚrangerD   r2   )Úpointsr-   ÚfÚxsÚyss   &    r>   ÚgetPathBoundsr”   Ë   sd   € ÜˆF‹€AØÓ!€AÜ	Œc�!”E˜!˜A˜a“LÓ!Ó	"€BÜ	Œc�!”E˜!˜A˜a“LÓ!Ó	"€BÜ�‹G”S˜“Wœc "›g¤s¨2£wÐ/Ð/r@   c                ó  € V ^ ,          p\        V4      '       dY   V  Uu. uF  q"^ ,          NK  	  ppV  Uu. uF  q"^,          NK  	  pp\        V4      \        V4      \        V4      \        V4      3# \        V 4      # u upi u upi )z"Helper function for list of points)r   rD   r2   r”   )Ú	pointListÚfirstÚxyr’   r“   s   &    r>   ÚgetPointsBoundsr™   Ò   sv   € à�a�L€EÜˆU‡|‚|Ù'Ó(™i˜��eˆe™iˆÐ(Ù'Ó(™i˜��eˆe™iˆÐ(Ü�B“œ˜R›¤# b£'¬3¨r«7Ð3Ð3ä˜YÓ'Ð'ùò	 )ùÚ(s
   ŸA>¶Bc                   óv   a € ] tR t^át o Rt]! 4       tR tRR ltR t	RR lt
R t]'       d    R tR tR	tV tR
# )ÚShapea  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                óN   € \        RV P                  P                  ,          4      h)zReturn a clone of this shape.z!No copy method implemented for %s)ÚNotImplementedErrorÚ	__class__rZ   ©rU   s   &r>   ÚcopyÚ
Shape.copyê   s   € ô "Ð"EÈÏÉ×H_ÑH_Õ"_Ó`Ð`r@   c                óx   € / pV P                   P                  4        F  w  r4VR,          R8w  g   K  WBV&   K  	  V# )z<Interface to make it easy to extract automatic
documentation:r+   ro   NÚ_)Ú__dict__rf   )rU   ÚrecurÚpropsri   rj   s   &&   r>   ÚgetPropertiesÚShape.getPropertiesð   s;   € ð ˆØŸ-™-×-Ñ-Ö/‰JˆCØ�3�x˜3ŽØ"�c“
ñ 0ð ˆr@   c                ó<   € V P                   P                  V4       R# )z^Supports the bulk setting if properties from,
for example, a GUI application or a config file.N)r¤   Úupdate)rU   r¦   s   &&r>   ÚsetPropertiesÚShape.setPropertiesý   s   € ð 	�‰×Ñ˜UÖ#r@   c                óÖ   € \        V P                  4       P                  4       4      pVP                  4        V'       d
   VR,           pV F  w  r4\	        V: V: RV: 24       K  	  R# )z€Convenience. Lists them on standard output.  You
may provide a prefix - mostly helps to generate code
samples for documentation.Ú.z = N)r�   r§   rf   ÚsortÚprint)rU   ÚprefixÚpropListÚnamerj   s   &&   r>   ÚdumpPropertiesÚShape.dumpProperties  sP   € ô
 ˜×*Ñ*Ó,×2Ñ2Ó4Ó5ˆØ�‰ŒßØ˜c•\ˆFÛ%‰MˆTÜ¢«ªuÐ5Ö6ó &r@   c                óÞ  € V P                   eß   V P                  P                  4        F2  pV^ ,          R8w  g   K  WP                   9   d   K%  Q RV: RV : 24       h	  V P                   P                  4        Fn  w  r#\	        W4      '       g   Q RV: RV : 24       h\        W4      pVP                  V4      '       d   KI  Q RV: RV: R	V P                  P                  : 24       h	  R# R# )
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£   zUnexpected attribute z
 found in zMissing attribute z from zInvalid value z for attribute z
 in class )	Ú_attrMapr¤   Úkeysrf   rQ   ÚgetattrÚvalidaterž   rZ   )rU   ri   ÚattrÚ	metavaluerj   s   &    r>   ÚverifyÚShape.verify  sÝ   € ð �=‰=Ò$Ø—}‘}×)Ñ)Ö+�Ø�q•6˜S–=Ø§-¡-Ö/ÑdÓZ]Ò_cÐ1dÓdÐ/ñ ,ð $(§=¡=×#6Ñ#6Ö#8‘�Ü˜t×*Ò*ÑYËdÒTXÐ,YÓYÐ*Ü Ó+�Ø ×)Ñ)¨%×0Ô0ñ  KÓejÓlpÐrv÷  sAñ  sA÷  sJó  sJð  3Kó  KÐ0ó $9ñ	 %r@   c                ó   € \        WV4       R# )zGBy default we verify.  This could be off
in some parallel base classes.N)ÚvalidateSetattr)rU   r»   rj   s   &&&r>   Ú__setattr__ÚShape.__setattr__%  s   € ô ˜D eÖ,r@   c                ó   € \        R4      h)ú5Returns bounding rectangle of object as (x1,y1,x2,y2)z+Shapes and widgets must implement getBounds©r�   rŸ   s   &r>   Ú	getBoundsÚShape.getBounds*  s   € ä!Ð"OÓPÐPr@   rY   N©ro   )Ú )rZ   r[   r\   r]   r^   ÚAttrMapr·   r    r§   r«   r´   r½   r	   rÁ   rÆ   r_   r`   ra   s   @r>   r›   r›   á   sI   ø‡ € ññ ‹y€Hòaôò$ô
7òK÷" ð	6ò	-÷
Qð Qr@   r›   c                   ó*  a € ] tR tRt o Rt]! ]! ]R^R7      ]! ]RR7      ]! ]	RR7      ]! ]	R^R7      ]! ]	R	^R7      R
7      t
R tR tR R ltR R ltR R ltR tR tR tR!R ltR tR tR"R ltR#R ltR$R ltR#R ltR#R ltR tR tR tRtV tR# )%ÚGroupi.  a  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 apply©ÚdescÚadvancedUsagezContained drawable elements©rÎ   úTurn on stroke overprintingúTurn on fill overprintingúoverprinting for ordinary CMYK)r   Úcontentsr"   r!   r#   c                ó¾   € V P                   P                  4       V n         . V n        RV n        V F  pV P	                  V4       K  	  \
        P                  W4       R# )zyInitial lists of elements may be provided to allow
compact definitions in literal Python code.  May or
may not be useful.N©ro   r+   r+   ro   r+   r+   )r·   ÚclonerÔ   r   Úaddrd   rk   )rU   Úelementsrh   Úelts   &*, r>   rk   ÚGroup.__init__=  sK   € ð Ÿ™×+Ñ+Ó-ˆŒØˆŒØ&ˆŒÛˆCØ�H‰H�SŽMñ ô 	× Ñ  Ö0r@   c                óŠ   € V'       d;   WP                   9  d   \        \        4      V P                   V&   \        WV4       R# R# )zLif name is not None add an attribute pointing to node and add to the attrMapN)r·   ÚAttrMapValueÚisValidChildrg   )rU   r³   Únodes   &&&r>   Ú_addNamedNodeÚGroup._addNamedNodeM  s1   € çØŸ=™=Ô(Ü&2´<Ó&@�—‘˜dÑ#Ü�D Ö%ñ r@   Nc                óš   € VeG   \        V4      '       g   Q R4       hV P                  P                  V4       V P                  W!4       R# R# )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à   ©rU   rß   r³   s   &&&r>   rØ   Ú	Group.addT  sF   € ð
 ÒÜ ×%Ò%ÐZÐ'ZÓZÐ%Ø�M‰M× Ñ  Ô&Ø×Ñ˜tÖ)ñ r@   c                óL   € V P                  WR 7       V P                  R,          # ))r³   r1   )rØ   rÔ   rã   s   &&&r>   Ú_nnÚ	Group._nn^  s   € Ø�‰�ˆÔ!Ø�}‰}˜RÕ Ð r@   c                óÈ   € Ve^   \        V4      '       g   Q R4       hV^ 8  d   V.V P                  W% MV P                  P                  W4       V P                  W24       R# R# )z4Inserts sub-node n in contents at specified locationNz4Can only insert Shape or UserNode objects in a Group)rÞ   rÔ   Úinsertrà   )rU   r‰   r-   r³   s   &&&&r>   ré   ÚGroup.insertb  sW   € àŠ=Ü —?’?ÐZÐ$ZÓZ�?Ø�ŒsØ%& C�—‘˜aÑ"à—‘×$Ñ$ QÔ)Ø×Ñ˜tÖ&ñ r@   c                óp  € \        V \        4      ;'       d)    \        V P                  V P                  4      ;'       g    \	        4       pV P
                  P                  4       Vn        \        VR4      '       d   V P                  R,          Vn        V P                  pVP                  P                  pV Fi  p\        V\        4      '       d   VP                  4       pM7\        V\        4      '       d   VP                  4       pMVP                  4       pV! V4       Kk  	  V P                  V4       V# )z9Return a new object which only contains primitive shapes.r   ºNNN)Ú
isinstanceÚDrawingrS   rT   rÌ   r·   r×   rQ   r   rÔ   r|   ÚUserNodeÚprovideNodeÚexpandUserNodesr    Ú_copyNamedContents)rU   ÚobjÚself_contentsr   ÚchildÚnewChilds   &     r>   rñ   ÚGroup.expandUserNodesl  sà   € ô ˜œgÓ&×JÐJ¬7°4·:±:¸d¿k¹kÓ+J×UÐUÌeËgˆØ—}‘}×*Ñ*Ó,ˆŒÜ�3�{×#Ò#°T·^±^ÀAÕ5F S¤]àŸ™ˆØ�L‰L×ÑˆÛ"ˆEÜ˜%¤×*Ò*Ø ×,Ñ,Ó.‘Ü˜E¤5×)Ò)Ø ×0Ñ0Ó2‘à Ÿ:™:›<�ÙˆhŽKñ #ð 	×Ñ Ô$Øˆ
r@   c                óŒ  € \        4       p\        V R4      '       d   V P                  Vn        \        VR4      '       d   V P                  R,          Vn        V P	                  4       R,          pV'       dÎ   VP                  ^ 4      p\        V\        4      '       d#   VP                  ^ VP                  4       4       KQ  \        V\         4      '       d\   VP                  4       pVP                  R8X  d(   VP                  P                  VP                  4       K¯  VP                  V4       KÂ  VP                  V4       KÕ  V# )zreturn a fully expanded objectÚ	__label__r   rì   rÖ   )rÌ   rQ   rù   r   ÚgetContentsÚpoprí   rï   ré   rð   Ú_exploderÔ   ÚextendrØ   )rU   ró   ÚPr-   s   &   r>   rü   ÚGroup._explode‚  sÖ   € ä‹gˆÜ�4˜×$Ò$ØŸ.™.ˆCŒMÜ�3�{×#Ò#°T·^±^ÀAÕ5F S¤]Ø×ÑÓ˜qÕ!ˆßØ—‘�a“ˆAÜ˜!œX×&Ò&Ø—‘˜˜1Ÿ=™=›?Ö+Ü˜Aœu×%Ò%Ø—J‘J“L�Ø—;‘; Ô-Ø—L‘L×'Ñ'¨¯
©
Ö3à—G‘G˜A–Jà—‘˜–
Øˆ
r@   c                ób   € V P                    F  pVP                   P                  V4       K   	  R # rˆ   )rÔ   r|   )rU   ró   rõ   s   && r>   Ú_copyContentsÚGroup._copyContents—  s"   € Ø—]”]ˆEØ�L‰L×Ñ Ö&ó #r@   c                óv  € ^ RI H p V P                  pV'       g$   \        V P                  P	                  4       4      pV P
                  P                  4        F]  w  rgWu9   d1   VP                  V4      p\        WVP                  V,          4       K;  Wb9   g   KC  Wc9  g   KK  \        WV! V4      4       K_  	  R# )r+   )r    N)	r    rÔ   r�   r·   r¸   r¤   rf   Úindexrg   )	rU   ró   ÚaKeysÚnoCopyr    rô   ÚkÚvÚposs	   &&&&     r>   rò   ÚGroup._copyNamedContents›  s€   € ÝØŸ™ˆßœd 4§=¡=×#5Ñ#5Ó#7Ó8�eØ—M‘M×'Ñ'Ö)‰DˆAØÔ!Ø#×)Ñ)¨!Ó,�Ü˜ §¡¨SÕ 1Ö2Ø– ¦Ü˜¡ Q£Ö(ó *r@   c                óˆ   € V P                   P                  4       Vn         V P                  V4       V P                  V4       V# )zcopies to obj)r·   r×   r  rò   ©rU   ró   s   &&r>   Ú_copyÚGroup._copy¦  s7   € à—}‘}×*Ñ*Ó,ˆŒØ×Ñ˜3ÔØ×Ñ Ô$Øˆ
r@   c                ó@   € V P                  V P                  4       4      # )zreturns a copy)r  rž   rŸ   s   &r>   r    Ú
Group.copy­  s   € à�z‰z˜$Ÿ.™.Ó*Ó+Ð+r@   c                óP   € \        V P                  \        WV4      4      V n        R# ©z&Convenience to help you set transformsN)Úmmultr   rC   )rU   ÚthetaÚcxÚcys   &&&&r>   rC   ÚGroup.rotate±  s   € ä˜tŸ~™~¬v°e¸rÓ/BÓCˆŽr@   c                óN   € \        V P                  \        W4      4      V n        R# r  )r  r   Ú	translate)rU   ÚdxÚdys   &&&r>   r  ÚGroup.translateµ  s   € ä˜tŸ~™~¬y¸Ó/@ÓAˆŽr@   c                óN   € \        V P                  \        W4      4      V n        R# r  )r  r   Úscale)rU   ÚsxÚsys   &&&r>   r  ÚGroup.scale¹  s   € ä˜tŸ~™~¬u°R«}Ó=ˆŽr@   c                ót   € \        \        V P                  \        V4      4      \        V4      4      V n        R# r  )r  r   ÚskewXÚskewY)rU   ÚkxÚkys   &&&r>   ÚskewÚ
Group.skew½  s#   € äœu T§^¡^´U¸2³YÓ?ÄÀbÃ	ÓJˆŽr@   c                ó>   € V P                   RR W3,           V n         R# )z2Convenience function to set the origin arbitrarilyNéþÿÿÿ)r   ©rU   rE   rF   s   &&&r>   ÚshiftÚGroup.shiftÁ  s   € àŸ™¨¨Ð,¨a¨UÕ2ˆŽr@   c                ó€   € \         V n        V P                  P                  \	        V R/ 4      4       Wn        W n        R# )zgConvenience function to make a drawing from a group
After calling this the instance will be a drawing!
Ú_xtraAttrMapN)rî   rž   r·   rª   r¹   rS   rT   )rU   rS   rT   s   &&&r>   Ú	asDrawingÚGroup.asDrawingÅ  s0   € ô !ˆŒØ�‰×ÑœW T¨.¸Ó<Ô=ØŒ
ØŽr@   c                óh   € \        V RR4      pV P                  pV'       d   W9  d   V.V,           pV# )zSReturn the list of things to be rendered
override to get more complicated behaviourÚ
backgroundN)r¹   rÔ   )rU   r€   rH   s   &  r>   rú   ÚGroup.getContentsÎ  s1   € ô �D˜ dÓ+ˆØ�M‰Mˆß�” !  Q¥˜QØˆr@   c                óJ  € V P                   '       d‘   . pV P                    F"  pVP                  VP                  4       4       K$  	  \        V4      pVf   R # Vw  r4rVV P                  pW4.W6.WT.WV..p. p	V F  p
V	P                  \        Wz4      4       K  	  \        V	4      # R # rˆ   )rÔ   r|   rÆ   rz   r   ÚtransformPointr™   )rU   r€   Úelemrv   rw   rx   ry   ÚtransÚcornersÚ
newCornersÚcorners   &          r>   rÆ   ÚGroup.getBoundsÖ  sœ   € Ø�=�=ˆ=ØˆAØŸœ�Ø—‘˜Ÿ™Ó)Ö*ñ &ä Ó"ˆBØŠz¡$Ø‰NˆB�BØ—N‘NˆEØ�w  ¨2¨(°R°GÐ<ˆGØˆJÛ!�Ø×!Ñ!¤.°Ó"?Ö@ñ "ä" :Ó.Ð.ñ r@   )rž   r·   rÔ   rT   r   rS   rˆ   )N)rÔ   ©r+   r+   ©r+   rÈ   ) rZ   r[   r\   r]   r^   rÊ   rÝ   ÚisTransformÚisListOfShapesÚ	isBooleanr·   rk   rà   rØ   ræ   ré   rñ   rü   r  rò   r  r    rC   r  r  r'  r,  r0  rú   rÆ   r_   r`   ra   s   @r>   rÌ   rÌ   .  s½   ø‡ € ñ<ñ Ù  Ð2VÐefÔgÙ Ð4QÔRÙ& yÐ6SÔTÙ$ YÐ4OÐ^_Ô`Ù$ YÐ4TÐcdÔeô
€Hò1ò &ô*ô!ô'òò,ò*'ô	)òò,ôDôBô>ôKô3òò÷ð r@   rÌ   c                óà   € ^ RI Hp V P                  pV! V4      P                  pT;'       g    VP                  pWQ9  d   V.W&   R# W!V,          9  d   W,          P	                  V4       R# R# )z7add an import of obj's class to a dictionary of imports)Ú	getmoduleN)ÚinspectrC  rž   rZ   r|   )ró   ÚIr-   rC  r�   Úms   &&&   r>   Ú_addObjImportrG  ë  sU   € å!Ø�‰€AÙ�!‹×Ñ€AØ	�ˆˆQ�Z‰Z€AØ„zØˆsˆ‹Ø	
�A•$ŒØ	��‰�AŽñ 
r@   c                ó,  a€ \        V \        4      '       d   \        V 4      # \        V 4      '       dU   RP	                  V3R lV  4       4      p\        V \
        4      '       d   RV R2# RT \        V 4      ^8X  d   R R2# R R2# V \        J d   S'       d   \        V SR4       R# \        V \        4      '       Ed<   S'       d   \        V S4       ^ R	I
Hp V! V P                  4      w  rErgr‰p
V'       d    V\        V4      ) R
 pV\        V4      ) R
1 M. pV P                  4       pVR,           Uu. uF  p\        VP                  VR
4      S4      NK!  	  upV Uu. uF#  qÝ R\        VP                  VR
4      S4       2NK%  	  up,           VP!                  4        UUu. uF  w  rÞV R\        WÍ,          S4       2NK  	  upp,           pV P"                  P$                   RRP	                  V4       R2# \'        V 4      # u upi u upi u uppi )zEreturn a repr style string with named fixed args first, then keywordsÚ,c              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5irˆ   )Ú_repr)Ú.0r  rE  s   & €r>   Ú	<genexpr>Ú_repr.<locals>.<genexpr>û  s   øé € Ð/©$ Q”e˜A˜a—j�j«$ùs   ƒÚ[Ú]Ú(rÉ   Ú)ÚEmptyClipPath)ÚgetfullargspecNrn   Ú=)rí   Úfloatr   r   Újoinr�   r3   rS  rG  r›   rD  rT  rk   r§   rK  rû   rf   rž   rZ   Úrepr)rU   rE  r,   rT  ÚargsÚvarargsÚvarkwÚdefaultsÚ
kwonlyargsÚkwonlydefaultsÚannotationsÚkargsrþ   r-   r  s   &f             r>   rK  rK  ö  sÍ  ø€ ä�$”u×ÒÜ�d‹|ÐÜ	ˆt�ŠØ�H‰HÔ/©$Ó/Ó0ˆÜ�dœ4× Ò Ø�q�c˜�8ˆOà�q�c¤ T£¨A¤˜#Ð5°QÐ7Ð7°"Ð5°QÐ7Ð7Ø	”Ó	ßŒm˜D  ?Ô3ÙÜ	�Dœ×	Ó	ßŒm˜D Ô#Ý*ÙR`Ðae×anÑanÓRoÑOˆ�u¨
ÀKßØœ#˜h›-˜˜Ð)ˆEØ”c˜(“m�^‘_Ñ%àˆEØ×ÑÓ ˆØ.2°2®hÓ7©h¨Œe�A—E‘E˜!˜D“M !Ö$©hÑ7Ù7<Ó=±u°!��1”U˜1Ÿ5™5  4›=¨Ó+Ð,Ó-±uÑ=õ>à01·±´	Ô:±	©¨���1”U˜1�4 “]�OÓ$±	Ò:õ;ˆð —.‘.×)Ñ)Ð*¨!¨C¯H©H°Q«K¨=¸Ð:Ð:ä�D‹zÐùò 8ùÚ=ùÛ:s   Ä5%HÅ )HÆ$"Hc           	      ó®  € R p\        V RR4      pV'       d   WT V R\        V4       R2,          pV P                  4        F�  p\        V\        4      '       d_   RV 2pV^,          p\        VRR 4      p	V	'       d
   RV	,           p	WT V RV R	V	 R2,          pV\        WxW#V4      ,          pV^,          pKw  WT V R
\        Wr4       R2,          pK’  	  V# )rÉ   r   Nz.transform = Ú
r  rù   Ú#rU  z._nn(Group())z.add(z)
)r¹   rK  rú   rí   rÌ   Ú_renderGroupPy)
ÚGÚpfxrE  r‰   Úindentr,   rH   r-   ÚnpfxÚls
   &&&&&     r>   rd  rd    sÝ   € Ø
€AÜ��+˜dÓ#€Aßˆ!�˜#˜˜m¬E°!«H¨:°RÐ8Õ
8ˆ!Ø�]‰]Ž_ˆÜ�aœ×ÒØ�q�c�7ˆDØ��FˆAÜ˜˜+ bÓ)ˆAß�C˜•E�!Ø�8˜D˜6  3 % }°Q°C°rÐ:Õ:ˆAØ”  q¨6Ó2Õ2ˆAØ��FŠAà�8˜C˜5 ¤e¨A£j \°Ð5Õ5ŠAñ ð €Hr@   c                 óÚ   € VP                  V P                  4       \        V4      pVP                  4        UUu/ uF#  w  rEVP	                  V4      '       g   K  WCR  VbK%  	  upp# u uppi rˆ   )rª   r¤   r3   rf   Ú
startswith)rU   rf  Úkwr-   r  r  s   &&,   r>   Ú_extraKWrm  %  sP   € Ø‡I�Iˆd�m‰mÔÜˆC‹€AØ!Ÿx™xœzÔ?™z™˜¨Q¯\©\¸#×->ŒGˆAˆbˆE�!ŠG™zÒ?Ð?ùÓ?s   ºA'Á	A'c                   óÆ  a € ] tR tRt o Rt0 R"mt]0 R#m,
          t]! ]! ]	RR7      ]! ]	RR7      ]! R4      ]! ]
RR7      ]! ]! RR	R
R4      RR7      ]! ]! RRR
R4      RR7      ]! ]	RR7      ]! ]RR7      ]! ]RR7      R7	      t]! ]]! ]! ]! ]!  ^^ R7      RR7      R7      t]P%                  ]4       R$R ltR t]3R ltR tR tR tR tR%R ltR&R ltR'R  ltR!tV tR# )(rî   i*  zwOutermost container; the thing a renderer works on.
This has no properties except a height, width and list
of contents.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)	rS   rT   Úcanvr3  ÚhAlignÚvAlignÚrenderScaleÚinitialFontNameÚinitialFontSize)ÚloÚemptyOKzOne or more plot modes)ÚBASEÚformatsc                óŠ   € R V n         \        P                  ! V .VO5/ VB  Wn        W n        RV n        RV n        RV n        R # )Nro  rt  ç      ð?)r3  rÌ   rk   rS   rT   rv  rw  rx  )rU   rS   rT   Únodesrh   s   &&&*,r>   rk   ÚDrawing.__init__Z  s?   € ØˆŒÜ�Š�tÐ.˜UÒ. XÒ.ØŒ
ØŒØˆŒØˆŒØˆÖr@   c                ó†  € R . ROR. RO/p\        V P                  4       RV4      pRV P                  P                  ,           pRpVRP	                  R VP                  4        4       4      ,          pVRV R2,          pVR	V P                   R
V P                   R2,          pVR,          pWB,          pVRV R2,          pV# )zreportlab.graphics.shapeszreportlab.lib.colorsrU   ÚExplodedDrawing_z0#Autogenerated by ReportLab guiedit do not edit
rÉ   c              3   óV   "  € T F  w  rR V RRP                  V4       R2x € K!  	  R# 5i)zfrom z import z, rb  N)rW  )rL  rF  Úos   &  r>   rM  Ú$Drawing._renderPy.<locals>.<genexpr>k  s)   é € ÐPÁi¹d¸a˜˜a˜S ¨¯©°1«¨°bÕ9Ãiùs   ‚')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)
)Ú_DrawingEditorMixinrî   rÌ   )ÚColorÚ	CMYKColorÚ
PCMYKColor)rd  rü   rž   rZ   rW  rf   rS   rT   )rU   rE  re  r-   r,   s   &    r>   Ú	_renderPyÚDrawing._renderPyc  sÅ   € à'Ò)RØ"Ò$Fðˆô ˜4Ÿ=™=›?¨6°!Ó4ˆØ §¡×!8Ñ!8Õ8ˆØ?ˆØ	ˆR�W‰WÑPÀaÇgÁgÄiÓPÓQÕQˆØ	ˆx˜�sÐ:Ð;Õ;ˆØ	Ð)¨$¯*©*¨°X¸d¿k¹k¸]È/ÐZÕZˆØ	ÐCÕCˆØ	�ˆØ	Ð;¸A¸3Ð>sÐtÕtˆØˆr@   c                ó†   € ^ RI Hp TP                  Y P                  ^ ^ V\        Jd   TM\        V R\        4      R7       R# )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.©Ú	renderPDFÚ_showBoundary©ÚshowBoundaryN)Úreportlab.graphicsr�  Údrawru  r   r¹   )rU   r“  r�  s   && r>   r•  ÚDrawing.draws  s;   € õ 	1Ø�‰�tŸY™Y¨¨1Ø-9ÄÓ-H™\ÌgÐVZÐ[jÔkrÓNsð 	ö 	ur@   c                ó~   € V P                   pV P                  pV P                  pVR 8w  d   W5,          pWE,          pW43# )r€  )rS   rT   rx  )rU   Ú
availWidthÚavailHeightrS   rT   rx  s   &&&   r>   ÚwrapÚDrawing.wrap{  s?   € Ø—
‘
ˆØ—‘ˆØ×&Ñ&ˆØ˜ÔØÕ ˆEØÕ!ˆFØˆ}Ðr@   c                ót   € \         P                  V 4      pV P                  Vn        V P                  Vn        V# )z:Return a new drawing which only contains primitive shapes.)rÌ   rñ   rS   rT   r  s   & r>   rñ   ÚDrawing.expandUserNodes„  s-   € ä×#Ñ# DÓ)ˆØ—J‘JˆŒ	Ø—[‘[ˆŒ
Øˆ
r@   c                ól   € V P                  V P                  V P                  V P                  4      4      # )zReturns a copy)r  rž   rS   rT   rŸ   s   &r>   r    ÚDrawing.copy‹  s$   € à�z‰z˜$Ÿ.™.¨¯©°T·[±[ÓAÓBÐBr@   c                ó6   € V P                  \        V/ VB 4      # rˆ   )r  rÌ   )rU   rY  rl  s   &*,r>   ÚasGroupÚDrawing.asGroup�  s   € Ø�z‰zœ% Ð+¨Ñ+Ó,Ð,r@   c                óÒ  € VP                  RR4      p\        V\        4      '       d   RV,          pMRpTR,          p^ RIHp Rp	V'       gt   \        V RV P                  P                  R,           4      p\        V R^ 4      p
\        V
R	4      '       d	   V
! V 4      p
\        VR	4      '       d
   V! V
4      pM	 W:,          pVf   \        V RR4      p\        VR	4      '       d	   V! V 4      p\        P                  P                  V4      '       d#   \        P                  P                  V4      w  rCMT;'       g    \        V RR4      pVP!                  4       P!                  \        P"                  4      pV'       g   Rp\        P                  P                  V4      '       g^   \        P                  P%                  \        V R\        P                  P'                  \(        P*                  ^ ,          4      4      V4      p\        P                  P-                  V4      '       g   \        P.                  ! V4       \        P                  P1                  \        P                  P%                  WC4      4      p\        P                  P3                  V4      pV^,          R,          P5                  4       V P6                  9   d
   V^ ,          pT;'       g    \        V RR.4       Uu. uF  qîP5                  4       NK  	  ppVRJ;'       d    V3;'       g    \        V RV4      3^ ,          p\8        P:                  P<                  \8        P>                  P<                  3pV;\8        P:                  n        \8        P>                  n        RV9   d»   ^ RI H!p VR,           pV'       d   \E        VRV3,          4       VPF                  ! V VV3R\        V RVPH                  4      /\K        V R3/ VB B  V	R,           p	\(        PL                  R8X  d;   ^ RI'p^ RI(pVPS                  V4      PU                  RR4       VPW                  V4       V PX                   Fê  pVV9   g   K  ^ RI H-p V: RV: 2pV'       d   \E        VVV3,          4       \        V RR4      pV'       d<   \        VRV.4      pVV9   d%   \        VR^ 4      '       g   VP]                  4        MRpVPF                  ! V V3R VR\        V RVPH                  4      /\K        V R!3/ VB B  V	R",           V,           p	V'       g   KÙ  VP_                  V4       Kì  	  R#V9   dÇ    ^ R$I0H1p VR&,           pV'       d   \E        VR'V3,          4       VPF                  ! V V3R(VR)\        V R*R+.4      ^ ,          R,\        V R*RR-.4      ^,          R.\        V R.VPh                  4      R\        V RVPH                  4      R/\        V R/VPj                  4      /\K        V R03/ VB B  V	R1,           p	R2V9   dk   ^ R3I H6p VR4,           pV'       d   \E        VR5V3,          4       VPF                  ! V V3R\        V RVPH                  4      /\K        V R63/ VB B  V	R7,           p	R8V9   dk   ^ R%I H3p VR9,           pV'       d   \E        VR'V3,          4       VPF                  ! V V3R\        V RVPH                  4      /\K        V R03/ VB B  V	R:,           p	R;V9   d’   VR<,           pV'       d   \E        VR;V3,          4       \o        VR=4      ;_uu_ 4       pVPq                  \s        V Pu                  4       Pw                  R>\        Px                  4      4      4       RRR4       V	R?,           p	Vw  \8        P:                  n        \8        P>                  n        \        V R@4      '       d   V P{                  WÉ4       T	;'       d    WÉR,          ,           ;'       g    R#   \         d,   p\        T4      P                  R
4      ^ 8  d   h  Rp?ELpRp?ii ; iu upi   \d         d    ^ R%I H3p  ELüi ; i  + '       g   i     Là; i)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 %s©Ú	rl_configÚfileNamePatternz%03dÚchartIdÚ__call__znot all arguments convertedNÚoutDirr®   Ú_override_CWDrn   r~  Úpdfr
   r�  z.pdfÚPDFr“  Ú
showBorderÚ_renderPDF_z/.pdfÚmacÚCAROzPDF ©ÚrenderPMÚ_drawTimeCollectorÚdisabledÚfmtÚ
_renderPM_z/.Úeps©ÚrenderPS_SEP©ÚrenderPSz.epsÚEPSÚtitleÚdeptÚEPS_infoÚTestingÚcompanyÚ	ReportLabÚpreviewÚ	ttf_embedÚ
_renderPS_z/.epsÚsvg©Ú	renderSVGz.svgÚSVGÚ_renderSVG_z/.svgÚpsz.psz/.psÚpyz.pyÚwbrb  z/.pyÚ
saveLogger)>rû   rí   ÚintÚ	reportlabr¦  r¹   rž   rZ   rQ   Ú	TypeErrorÚstrÚfindÚosÚpathÚisabsÚsplitÚrstripÚseprW  ÚdirnameÚsysÚargvÚisdirÚmakedirsÚnormpathÚsplitextÚlowerÚ
_saveModesr   ÚwarnOnceÚenabledÚinfoOncer”  r�  r°   Ú
drawToFiler“  rm  ÚplatformÚmacfsÚ
macostoolsÚFSSpecÚSetCreatorTypeÚtouchedÚ_bmModesr³  ÚclearÚsaveÚrlextra.graphicsrº  ÚImportErrorr¼  Úeps_previewÚeps_ttf_embedrÉ  ÚopenÚwriter   rŒ  ÚreplaceÚlineseprÏ  )rU   r~  r
   ÚfnRootrª  r¾  rl  ÚgenFmtr¦  Úextr¨  ÚerrÚfnrootÚplotModerE   Ú_savedr�  Úfilenameré  rê  ÚbmFmtr³  ÚdtcÚdtcfmtsr¼  rÉ  r‘   s   &&&&&&,                    r>   rð  ÚDrawing.save’  sh  € ð —‘˜ BÓ'ˆÜ�fœS×!Ò!Ø˜vÕ%‰FàˆFØÐ)Õ)ˆÝ'ØˆßÜ˜TÐ"3°T·^±^×5LÑ5LÈVÕ5SÓUˆFÜ˜d 9¨QÓ/ˆGÜ�w˜z×*Ò*Ù! $›-�Ü�v˜j×)Ò)Ù ›‘ðOØ#Õ-�Fð Š>Ü˜T (¨4Ó0ˆFÜ�6˜*×%Ò%Ù˜D“\ˆFÜ�7‰7�=‰=˜× Ò ÜŸW™WŸ]™]¨6Ó2‰NˆF�Fà×9Ð9œw t¨H°SÓ9ˆFØ—‘“×'Ñ'¬¯©Ó/ˆß �vÜ�w‰w�}‰}˜V×$Ò$¬r¯w©w¯|©|¼GÀDÈÔY[×Y`ÑY`×YhÑYhÔil×iqÑiqÐrsÕitÓYuÓ<vÐw}Ó/~ fÜ�w‰w�}‰}˜V×$Ò$¤b§k¢k°&Ô&9Ü—‘×!Ñ!¤"§'¡'§,¡,¨vÓ"=Ó>ˆÜ—7‘7×#Ñ# FÓ+ˆØ�A�;�r�?× Ñ Ó" d§o¡oÔ5Ø˜a•[ˆFà(/×(RÐ(R´7¸4À	È5È'Ó3RÐ(RÓTÑ(R !—G‘G–IÑ(RˆÐTØ $Ð&×5Ð5¨G¨:×[Ð[¼'À$ÀyÐQXÓ:YÐ9[Ð]^Õ_ˆÜ—‘×(Ñ(¬&¯/©/×*AÑ*AÐAˆØ<CÐCŒ�‰Ô¤&§/¡/Ô"9Ø�HÔÝ4Ø˜f•}ˆHßœ˜f¨¨hÐ'7Õ7Ô8Ø× Ò   x°ñ  \ÄWÈTÐR^Ð_h×_uÑ_uÓEvð  \ô  zBð  CGð  HUñ  z[ð  XZñ  z[ò  \Ø˜•.ˆCÜ�|‰|˜UÔ"ß(Ø—‘˜XÓ&×5Ñ5°f¸fÔEØ×"Ñ" 8Ô,à—]”]ˆEØ˜Ö Ý7Û&,ªUÐ3�ßœE &¨E°(Ð+;Õ";Ô<Ü˜dÐ#7¸Ó=�ßÜ% c¨)°U°GÓ<�GØ Ô'´¸¸JÀq×0IÒ0IØŸ	™	�à"˜Ø×#Ò# D¨(ñ  `°uð  `Ì'ÐRVÐWcÐdm×dzÑdzÓJ{ð  `ô  Gð  HLð  MYñ  _ð  \^ñ  _ò  `Ø˜D•j 5Õ(�ß‘3˜Ÿ™ Ö*ñ #ð  �HÔð8ÝEð ˜f•}ˆHßœ˜f¨¨hÐ'7Õ7Ô8Ø×Ò Ø (ñDà(.ðDô (/¨t°JÀ	¸{Ó'KÈAÕ'NðDô +2°$°zÀ2ÀkÐBRÓ*SÐTUÕ*Vð	Dô
 +2°$°yÀ×AVÑAVÓ*WðDô .5°T¸,Ày×G]ÑG]Ó-^ðDô +2°$°{À9×CZÑCZÓ*[ðDô #+¨4°Ñ"B¸rÑ"BòDð ˜•.ˆCà�HÔÝ4Ø˜f•}ˆHßœ˜f¨¨hÐ'7Õ7Ô8Ø× Ò  Ø (ñDä-4°T¸,Ày×G]ÑG]Ó-^ðDäaiÐjnÐo|ñ  bCð  @Bñ  bCòDð ˜•.ˆCà�8ÔÝ3Ø˜e•|ˆHßœ˜f¨¨hÐ'7Õ7Ô8Ø×Ò  hñ  S¼WÀTÈ,ÐW`×WmÑWmÓ=nð  SÔqyÐz~ð  @Lñ  rRð  OQñ  rRò  SØ˜•-ˆCà�8ÔØ˜e•|ˆHßœ˜f¨¨X Õ6Ô7Ü�h˜t×$Ô$¨Ø—‘œ §¡Ó 0× 8Ñ 8¸¼b¿j¹jÓ IÓJÔK÷ %à˜•-ˆCà;AÑ8Œ�‰Ô¤§¡Ô!8Ü�4˜×%Ò%Ø�O‰O˜FÔ'Ø×%Ð%�v "�g•~×+Ð+¨Ð+øôC !ô Oô ˜3“x—}‘}Ð%BÓCÀaÔGÈÕGûðOüò, UøôD ô 8ß7Ð7ð8ú÷D %×$ús=   Â9`  Ë)`9Õ`> Ü7Aaà `6à `1à1`6à>aáaáa&	c                óH  € WP                   9   g   Q RV,          4       h^ RIHp VR8X  dN   ^ RIHp VP                  RR4      pVP                  ! W3R\        V RVP                  4      /\        V R	3/ VB B # WP                  9   d>   ^ R
IHp VP                  ! V 3RVR\        V RVP                  4      /\        V R3/ VB B # VR8X  d1    ^ RIHp	 V	P                  V V\        V RVP                  4      R7      # VR8X  d/   ^ RIHp	 V	P                  V \        V RVP                  4      R7      # VR8X  d   V P!                  4       # VR8X  d<   ^ RIHp
 V
P                  ! V 3R\        V RVP                  4      /\        V R3/ VB B # R#   \         d
    ^ RIHp	  LÌi ; i)z,Converts to an 8 bit string in given format.zUnknown file format "%s"r¥  r¬  r�  r¾  rÉ   r“  r®  r¯  r²  r¶  r·  r¸  r¹  r»  )rÄ  r“  rÌ  r’  rÍ  rÇ  rÈ  rË  N)rã  rÑ  r¦  r”  r�  rû   ÚdrawToStringr¹   r“  rm  rî  r³  rñ  rº  rò  r¼  rŒ  rÉ  )rU   Úformatr
   rÄ  rl  r¦  r�  r¾  r³  r¼  rÉ  s   &&&&,      r>   ÚasStringÚDrawing.asString  sú  € àŸ™Ô(ÐMÐ*DÀvÕ*MÓMÐ(Ý'à�UŒ?Ý4Ø—F‘F˜7 2Ó&ˆEØ×)Ò)¨$ñ  [ÄGÈDÐQ]Ð^g×^tÑ^tÓDuð  [ô  yAð  BFð  GTñ  yZð  WYñ  yZñ  [ð  [Ø—}‘}Ô$Ý3Ø×(Ò(¨ñ X°6ð XÄwÈtÐT`Ø%×2Ñ2óH4ð XÜ6>¸tÀLÑ6VÐSUÑ6VñXð Xà�uŒ_ð8ÝEð ×(Ñ(¨Ø*1Ü-4°T¸,Ày×G]ÑG]Ó-^ð )ó `ð `ð �tŒ^Ý3Ø×(Ñ(¨¼GÀDÈÐV_×VlÑVlÓ<mÐ(ÓnÐnØ�tŒ^Ø—>‘>Ó#Ð#Ø�uŒ_Ý4Ø×)Ò)¨$ñ  S¼GÀDÈÐV_×VlÑVlÓ<mð  SÔpxÐy}ð  Lñ  qRð  OQñ  qRñ  Sð  Sñ øô ô 8ß7ð8ús   ÃF ÆF!Æ F!c                óà  € V P                  4       pV P                  pV P                  p\        Wx.VO5!  p	V	P	                  4       w  r«rÍVR8X  g.   VR8X  dx   W¢8  g!   WÇV,
          8”  g   W´8  g   WØV,
          8”  dR   WÊ,
          V,           V,           V	n        WÛ,
          V,           V,           V	n        ^^ ^ ^W*,
          WK,
          3V	n        V	# VR8X  g   VR8X  dD   W¢8  g   WÇV,
          8”  d1   WÊ,
          V,           V,           V	n        ^^ ^ ^W*,
          ^ 3V	n        V	# VR8X  g   VR8X  dB   W´8  g   WØV,
          8”  d/   WÛ,
          V,           V,           V	n        ^^ ^ ^^ WK,
          3V	n        V	# )z?return a base class drawing which ensures all the contents fitsÚfitÚexpandÚfitxÚexpandxÚfityÚexpandy)rú   rS   rT   rî   rÆ   r   )rU   ÚkindÚlpadÚrpadÚbpadÚtpadrH   ÚoWÚoHrW   ÚxLÚyLÚxHÚyHs   &&&&&&        r>   ÚresizedÚDrawing.resized-  s@  € à×ÑÓˆØ�Z‰ZˆØ�[‰[ˆÜ˜"Ð# Ó#ˆØ×'Ñ'Ó)‰ˆˆbØ�Œ;˜4 œ>¨r¬w¸"À½W¼*ÈÌÐSUÐY]ÕV]ÔS]Ø�E $�J t�OˆGŒMØ�U 4�Z¨�_ˆGŒNØ!" 1 Q q¨­°µÐ 9ˆGÔð ˆð �6Œ\˜d Iœo°2´7¸bÀDÅ¼jØ�E $�J t�OˆGŒMØ!" 1 Q q¨­°Ð 3ˆGÔð ˆð �6Œ\˜d Iœo°2´7¸bÀDÅ¼jØ�U 4�Z¨�_ˆGŒNØ!" 1 Q q¨¨4­7Ð 3ˆGÔØˆr@   )r3  rv  rT   rx  rw  rS   >   rÌ  rÍ  Úbmpr¸  ÚgifÚjpgÚpctr¬  ÚpngrÇ  ÚtifÚjpegÚpictÚtiffÚtiff1ÚtifflÚtiffp>   rÌ  rÍ  r¸  r¬  rÇ  )i�  éÈ   )NNNNrÉ   )Nr+   )r  r+   r+   r+   r+   ) rZ   r[   r\   r]   r^   rã  rî  rÊ   rÝ   ÚisNumberÚisValidChildOrNoneÚOneOfÚisStringOrNoneÚisNumberOrNoner/  rÌ   Ú
SequenceOfr·   rª   rk   rŒ  r   r•  rš  rñ   r    r¡  rð  r  r  r_   r`   ra   s   @r>   rî   rî   *  s  ø‡ € ñò€Jð( Ò9Õ9€HáÙ˜XÐ+EÔFÙ˜hÐ,GÔHÙ˜DÓ!Ù!Ð"4Ð:yÔzÙ™e F¨G°X¸xÓHÐO|Ô}Ù™e E¨8°X¸xÓHÐOzÔ{ñ # 8Ð1OÔPÙ& ~Ð;kÔlÙ& ~Ð;kÔlô
€Lñ ˜EÙ"¡:Ù�zÑ"Ø˜Qô$ à&>ô@ô€Hð
 ‡O�O�LÔ!ôòð   'ô uòòòCò-ôz,ôxS÷>ò r@   rî   c                   ó.   a € ] tR tRt o RtRR ltRtV tR# )rˆ  i@  z<This is a mixin to provide functionality for edited drawingsNc                óÔ  € \        V4      pV'       dm   \        VR4      '       d[   RVP                  9  d    VP                  P	                  4       Vn        V'       d   Vf   \         p\        WE4      VP                  V&   \        VR4      '       d8   V'       d0   V'       d   VP                  WbV4       R# VP                  W#4       R# V'       d   \        WV4       R# \        R4      h)zR
effectively setattr(obj,name,value), but takes care of things with _attrMaps etc
r·   NrØ   zCan't add, need name)
rÞ   rQ   r¤   r·   r×   rÝ   ré   rØ   rg   Ú
ValueError)rU   ró   rj   r³   rº   rÎ   r	  Úivcs   &&&&&&& r>   Ú_addÚ_DrawingEditorMixin._addB  s¡   € ô ˜5Ó!ˆß”G˜C 
×+Ò+Ø §¡Ô-Ø"Ÿ|™|×1Ñ1Ó3�”ß�xÒ'´L¨Ü!-¨hÓ!<ˆC�L‰L˜ÑÜ�3�u×Ò§#ßØ—
‘
˜3 TÖ*à—‘˜Ö#ßÜ�C˜UÖ#äÐ3Ó4Ð4r@   rY   ©NNNN)rZ   r[   r\   r]   r^   r5  r_   r`   ra   s   @r>   rˆ  rˆ  @  s   ø‡ € ÙF÷5ò 5r@   rˆ  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚisStrokeDashArrayiV  c                óÐ   € \         P                  V4      ;'       gK    \        V\        \        34      ;'       d-    \        V^ ,          4      ;'       d    \        V^,          4      # r>  )ÚisListOfNumbersOrNoneÚtestrí   r�   Útupler+  ÚisListOfNumbers)rU   rE   s   &&r>   r<  ÚisStrokeDashArray.testW  sP   € Ü$×)Ñ)¨!Ó,×yÐy´¸A¼tÄE¸lÓ1K×1xÐ1xÔPXÐYZÐ[\ÕY]ÓP^×1xÐ1xÔcrÐstÐuvÕswÓcxÐyr@   rY   N)rZ   r[   r\   r]   r<  r_   r`   ra   s   @r>   r9  r9  V  s   ø‡ € ÷zð zr@   r9  c                   óò   a € ] tR tRt o ]! ]! ]4      ]! ]4      ]! ]! ^ ^^4      RR7      ]! ]! ^ ^^4      RR7      ]! ]RR7      ]! ]	RR7      ]! ]
RR7      ]! ]RR7      ]! ]R	^R
7      R7	      tR tRtV tR# )Ú	LineShapei[  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                ó    € \         R ,          V n        ^V n        ^ V n        ^ V n        ^ V n        RV n        RV n        V P                  V4       R# )r   N)	ÚSTATE_DEFAULTSr   r   r   r   r   r   r   r«   ©rU   rl  s   &&r>   rk   ÚLineShape.__init__j  sM   € Ü)¨-Õ8ˆÔØˆÔØˆÔØˆÔØ !ˆÔØ#ˆÔØ!ˆÔØ×Ñ˜2Ör@   )r   r   r   r   r   r   r   N)rZ   r[   r\   r]   rÊ   rÝ   ÚisColorOrNoner+  r-  r9  Ú	isOpacityrA  r·   rk   r_   r`   ra   s   @r>   rA  rA  [  sŒ   ø‡ € ñ Ù" =Ó1Ù" 8Ó,Ù$¡U¨1¨Q¨q£\Ð7\Ô]Ù%¡e¨A¨a°£lÐ8^Ô_Ù'¨Ð6\Ô]Ù&Ð'8Ð>^Ô_Ù$ YÐ4{Ô|Ù& yÐ6SÔTÙ$ YÐ4TÐcdÔeô

€H÷ð r@   rA  c                   ó†   a € ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]RR7      R7      tR t	R t
RtV tR# )	ÚLineit  rÉ   rÐ   )r}  rv   rw   rx   ry   c                ó`   € \         P                  W4       Wn        W n        W0n        W@n        R # rˆ   )rA  rk   rv   rw   rx   ry   )rU   rv   rw   rx   ry   rl  s   &&&&&,r>   rk   ÚLine.__init__|  s$   € Ü×Ñ˜4Ô$ØŒØŒØŒØŽr@   c                ó^   € V P                   V P                  V P                  V P                  3# )rÄ   )rv   rw   rx   ry   rŸ   s   &r>   rÆ   ÚLine.getBoundsƒ  s!   € à—‘˜Ÿ™ $§'¡'¨4¯7©7Ð3Ð3r@   )rv   rx   rw   ry   N)rZ   r[   r\   r]   rÊ   rA  rÝ   r+  r·   rk   rÆ   r_   r`   ra   s   @r>   rI  rI  t  sH   ø‡ € Ù˜IÙ˜(¨Ô+Ù˜(¨Ô+Ù˜(¨Ô+Ù˜(¨Ô+ô	
€Hò÷4ð 4r@   rI  c                   óž   a € ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]	RR7      ]! ]	R^R7      ]! ]
! ]]4      4      R7      tR	 tR
tV tR# )Ú
SolidShapei‡  z$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%   c                ób   € \         R ,          V n        RV n        \        P	                  W4       R# )r$   N)rC  r$   r    rA  rk   rD  s   &&r>   rk   ÚSolidShape.__init__’  s&   € Ü'¨Õ4ˆŒØˆÔô 	×Ñ˜4Ö$r@   )r$   r    N)rZ   r[   r\   r]   rÊ   rA  rÝ   rF  rG  rA  r-  r   r   r·   rk   r_   r`   ra   s   @r>   rO  rO  ‡  s[   ø‡ € ñ ˜IÙ  Ð4ZÔ[Ù" 9Ð2{Ô|Ù$ YÐ4OÔPÙ$ YÐ4TÐcdÔeÙ¡ m°MÓ BÓCô
€H÷%ð %r@   rO  c                óø  € V P                   p^ p^ p^ pV'       * pV P                   F�  p	V	\        8X  dH   V'       d7   V'       d/   X
\        8w  d$   V^,          pV'       d   V\        ,          ! 4        V^,          p\        V	,          pW[,           pW,          ! WEV !   TpV	\        8X  d
   V^,          pT	p
K’  	  V'       d7   V'       d/   X
\        8w  d$   V^,          pV'       d   V\        ,          ! 4        Wv8H  # )zHelper function for renderers.)r�   Ú	operatorsÚ_MOVETOÚ
_CLOSEPATHÚ_PATH_OP_ARG_COUNT)rÖ  Ú	drawFuncsÚ	countOnlyÚ
forceCloser�   r‰   ÚhadClosePathÚ	hadMoveToÚactiveÚoprû   ÚnArgsÚjs   &&&&         r>   Ú_renderPathr`  ž  sÎ   € ð �[‰[€FØ	€AØ€LØ€IØŒ]€FØ�nŒnˆØ”Œ=ßß ¤j¤Ø  AÕ%�LßØ!¤*Ö-Ô/Ø˜�NˆIÜ" 2Õ&ˆØ�IˆØŽ�v �{Ò#ØˆØ”ÔØ˜AÕˆLØŠñ ÷ —i C¬¤OØ˜ÕˆßØ”jÖ!Ô#ØÑ$Ð$r@   znon-zeroÚnonzerozeven-oddÚevenoddc                   óÜ   a € ] tR tRt o Rt]! ]]! ]4      ]! ]4      ]! ]	4      ]! ]
! ]! RR4      4      4      ]! ]! ]]4      4      R7      tRR^ R]3R ltR tR	 tR
 tR tR tR tRtV tR# )ÚPathiÅ  z2Path, made up of straight lines and bezier curves.rÇ  r¬  )r}  r�   rS  Ú
isClipPathÚ	autocloser%   Nc                óÀ   € \         P                  W4       Vf   . pVf   . p\        V4      ^,          ^ 8X  g   Q R4       hWn        W n        W0n        W@n        WPn        R # )Nú-Point list must have even number of elements!)rO  rk   r3   r�   rS  re  rf  r%   )rU   r�   rS  re  rf  r%   rl  s   &&&&&&,r>   rk   ÚPath.__init__Ð  sZ   € Ü×Ñ˜DÔ%ØŠ>ØˆFØÒØˆIÜ�6‹{˜Q� !Ô#ÐTÐ%TÓTÐ#ØŒØ"ŒØ$ŒØ ŒØ Žr@   c                ó¬   € V P                  V P                  R ,          V P                  R ,          4      pVP                  V P	                  4       4       V# )rì   )rž   r�   rS  r«   r§   ©rU   Únews   & r>   r    Ú	Path.copyÝ  s?   € Ø�n‰n˜TŸ[™[¨�^¨T¯^©^¸AÕ->Ó?ˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                ó|   € V P                   P                  W.4       V P                  P                  \        4       R # rˆ   )r�   rý   rS  r|   rT  r+  s   &&&r>   ÚmoveToÚPath.moveToâ  ó(   € Ø�‰×Ñ˜A˜6Ô"Ø�‰×ÑœgÖ&r@   c                ó|   € V P                   P                  W.4       V P                  P                  \        4       R # rˆ   )r�   rý   rS  r|   Ú_LINETOr+  s   &&&r>   ÚlineToÚPath.lineToæ  rq  r@   c                ó€   € V P                   P                  WW4WV.4       V P                  P                  \        4       R # rˆ   )r�   rý   rS  r|   Ú_CURVETO)rU   rv   rw   rx   ry   Úx3r~   s   &&&&&&&r>   ÚcurveToÚPath.curveToê  s-   € Ø�‰×Ñ˜B B¨BÐ3Ô4Ø�‰×ÑœhÖ'r@   c                óD   € V P                   P                  \        4       R # rˆ   )rS  r|   rU  rŸ   s   &r>   Ú	closePathÚPath.closePathî  s   € Ø�‰×ÑœjÖ)r@   c           	     ój  € V P                   p . pVP                  pVP                  p. pVP                  pVP                  p^ pV P                   F¥  p	\        V	,          p
WŠ,           pV
^8X  d%   V! W,          4       V! W^,           ,          4       M`V
^8X  dZ   WV^1,          w  rÍpV! \        VR,          WÍV4      4       W^,           V^1,          w  pppV! \        VR,          VVV4      4       TpK§  	  \        V4      \        V4      \        V4      \        V4      3#    \        T4      u # ; i)r+   r1   )	r�   r|   rý   rS  rV  r…   rD   r2   r”   )rU   r�   rI   ÚaXÚeXrJ   ÚaYÚeYr‰   r]  r^  r_  rv   rx   rx  rw   ry   r~   s   &                 r>   rÆ   ÚPath.getBoundsñ  s  € Ø—‘ˆð	)ØˆAØ—‘ˆBØ—‘ˆBØˆAØ—‘ˆBØ—‘ˆBØˆAØ—n”n�Ü*¨2Õ.�Ø•I�Ø˜!”8á�v•y”MÙ�v �c•{•OØ˜A”Xà%¨¨! e�}‘H�B˜"ÙÔ(¨¨2­¨r°RÓ8Ô9Ø%¨¥c¨!¨A g�‘H�B�r˜"ÙÔ(¨¨2­¨r°"°RÓ8Ô9Ø’ñ %ô �q“6œ#˜a›&¤ Q£¬¨A«Ð.Ð.øð	)Ü  Ó(Ò(ús   ŽDD# Ä#D2)rf  r%   re  rS  r�   )rZ   r[   r\   r]   r^   rÊ   rO  rÝ   r>  rA  ÚNoneOrr-  r   r   r·   rk   r    ro  rt  ry  r|  rÆ   r_   r`   ra   s   @r>   rd  rd  Å  s…   ø‡ € Ù<á˜JÙ˜oÓ.Ù  Ó1Ù! )Ó,Ù ¡©¨e°EÓ(:Ó!;Ó<Ù¡ m°MÓ BÓCô
€Hð #¨d¸qÈDÐ[hô !òò
'ò'ò(ò*÷)ð )r@   rd  c           	      óX  € Vf   Tp. p\         R,          p	W9,          p
WI,          pWº8  d   V^\         ,          ,           pK  \        Wº,
          4      pVP                  pVR8”  dR   \        YÆ;'       g    R4      pWi,          p\	        \        WÎ,          R,           4      ^4      pWÏ,          pV^,          pM^p^ p\        V4       FH  pW¬V,          ,           pV! W\        V4      ,          ,           W\        V4      ,          ,           34       KJ  	  V'       d   VP                  4        V# )Nç     €f@çü©ñÒMbP?r€  ç      à?)
r   rV  r|   rD   r2   rÐ  r�   r   r   Úreverse)ÚcenterxÚcenteryÚradiusÚstartangledegreesÚendangledegreesÚyradiusÚdegreedeltar‰  r�   ÚdegreestoradiansÚ
startangleÚendanglerG   r   Úradiansdeltar-   s   &&&&&&&&        r>   ÚgetArcPointsr•    sú   € Ø‚ &˜Ø€FÜ˜%•xÐØ"Õ3€JØÕ/€HØ
Ô
Ø˜Aœb�D•=ŠÜ�(Õ'Ó(€EØ�‰€AØˆT„zÜ˜%× 1Ð 1¨rÓ2ˆØ"Õ3ˆÜ”�EÕ& sÕ*Ó+¨AÓ.ˆØ•wˆØ	ˆQ�‰àˆØˆä�q–ˆØ Õ-Õ-ˆÙ	ˆ7œ#˜e›*Õ$Õ$ W´S¸³ZÕ-?Õ%?Ð
@ÖAñ ÷ �—‘Ô Ø€Mr@   c                   ó.   a € ] tR tRt o RtRR ltRtV tR# )ÚArcPathi*  zPath with an addArc methodNc
                ó  € \        WW4WVWyR 7      p
V'       g   \        V P                  4      '       g2   V P                  V
^ ,          ^ ,          V
^ ,          ^,          4       V
^  V
 F  w  r¼V P	                  W¼4       K  	  R# ))r�  r�  r‰  N)r•  r3   rS  ro  rt  )rU   rŠ  r‹  rŒ  r�  rŽ  r�  r�  ro  r‰  rþ   rE   rF   s   &&&&&&&&&&   r>   ÚaddArcÚArcPath.addArc,  s`   € Ü˜¨6ÀoÐtô  Rˆßœ˜TŸ^™^×,Ò,Ø�K‰K˜˜!�˜Q�  !¥ Q¥Ô(Ø�!�Û‰DˆA�t—{‘{ 1Ö'“Ar@   rY   r7  )rZ   r[   r\   r]   r^   r™  r_   r`   ra   s   @r>   r—  r—  *  s   ø‡ € Ù$÷(ò (r@   r—  c                 óX  € . p. pV  F¾  p\        V4      '       g   Tp. p	MV^ ,          pVR,          p	V\        9  d   \        RV,          4      h\        P                  V4      p
\	        V	4      \
        V
,          8w  d   \        V: R\        V	4      : 24      hVP                  V
4       VP                  \        V	4      4       KÀ  	  V^ 3V^33 F3  w  r¼\        V\	        V4      ^4       F  pWm,          V,           Wm&   K  	  K5  	  VP                  RR4      pV'       Ed}   R EFu  pWï,          Wï^,           ,          3pV^ ,          f   V^,          f   K3  WoR^1,          p\        V4      \        V4      ppV^ ,          e»   V^,          e°   \        V4      \        V4      ppVV,
          p\        V4      R8¼  dO   VV,
          V,          p\        V\	        V4      ^4       F"  pVVWm,          V,
          ,          ,           Wm&   K$  	  Kç  \        V\	        V4      ^4       F  pVV,           R,          Wm&   K  	  EK  V^ ,          e   V^ ,          V,
          MV^,          V,
          p\        V\	        V4      ^4       F  pWm;;,          V,          uu&   K  	  EKx  	  \        WeV3/ VB # )	r+   rn   zbad operator name %sz bad arguments ÚbboxNg�íµ ÷Æ°>rˆ  )r+   ro   )r   Ú_PATH_OP_NAMESr3  r  r3   rV  rÓ  r|   rý   r�   r�   rû   rD   r2   Úabsrd  )ÚpathSegsre  r  r  rl  ÚOrþ   ÚsegÚopNamerY  r]  r‚   r†  r‰   rœ  r_  r   r€   r�   Úfacs   &&&&,               r>   Ú
definePathr¤  3  s9  € Ø
€AØ
€AÛˆÜ�S�zŠzØˆFØ‰Dà˜•VˆFØ�r•7ˆDØœÔ'ÜÐ3°fÕ<Ó=Ð=Ü×!Ñ! &Ó)ˆÜˆt‹9Ô(¨Õ,Ô,Ü³f¼SÀ½YÐGÓHÐHØ	�‰�ŒØ	�‰”�d“Öñ ð �1ˆv˜˜1�v‹~‰ˆÜ�qœ˜Q› Ö"ˆAØ•4˜•6ˆA‹Dó #ñ ð �6‰6�&˜Ó€Dß€tÜˆAØ•˜˜q�S�	Ð!ˆAØ��tŠ|  !¥¢©hØ�$�Q�$•ˆAÜ�q“6œ3˜q›6ˆqˆAØ��tÒ A a¥DÒ$4Ü˜1“vœs 1›v�1�Ø˜•s�Ü�s“8˜T”>Ø˜Q�3 �)�CÜ" 1¤S¨£V¨AÖ.˜Ø  3¨­¨Q­¥<Õ/˜›ó /ô # 1¤S¨£V¨AÖ.˜Ø ! A¥ s�{˜›ô /ð
 !" !¥Ò 0�A�a•D˜1–H°a¸µd¸Qµh�Ü˜q¤ Q£¨Ö*�AØ—D˜A•I•Dô +ñ) ô. ��JÑ$ Ñ$Ð$r@   c                   ó¨   a € ] tR tRt o Rt]! ]]! ]4      ]! ]4      ]! ]RR7      ]! ]RR7      ]! ]4      ]! ]4      R7      t	RR lt
R tR	 tR
tV tR# )ÚRectie  z)Rectangle, possibly with rounded corners.úwidth of the object in pointsrÐ   úheight of the objects in points)r}  rE   rF   rS   rT   ÚrxÚryc                óx   € \         P                  W4       Wn        W n        W0n        W@n        WPn        W`n        R # rˆ   )rO  rk   rE   rF   rS   rT   r©  rª  )rU   rE   rF   rS   rT   r©  rª  rl  s   &&&&&&&,r>   rk   ÚRect.__init__q  s.   € Ü×Ñ˜DÔ%ØŒØŒØŒ
ØŒØŒØŽr@   c                ó¼   € V P                  V P                  V P                  V P                  V P                  4      pVP                  V P                  4       4       V# rˆ   )rž   rE   rF   rS   rT   r«   r§   rk  s   & r>   r    Ú	Rect.copyz  sB   € Ø�n‰n˜TŸV™V T§V¡V¨T¯Z©Z¸¿¹ÓEˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                ó¢   € V P                   V P                  V P                   V P                  ,           V P                  V P                  ,           3# rˆ   ©rE   rF   rS   rT   rŸ   s   &r>   rÆ   ÚRect.getBounds  s3   € Ø—‘˜Ÿ™ §¡¨¯©Õ 3°T·V±V¸d¿k¹kÕ5IÐJÐJr@   )rT   r©  rª  rS   rE   rF   Nr=  )rZ   r[   r\   r]   r^   rÊ   rO  rÝ   r+  r·   rk   r    rÆ   r_   r`   ra   s   @r>   r¦  r¦  e  s`   ø‡ € Ù3á˜JÙ˜Ó"Ù˜Ó"Ù˜XÐ+JÔKÙ˜hÐ,MÔNÙ˜(Ó#Ù˜(Ó#ô
€Hôò÷
Kð Kr@   r¦  c                   ó–   a € ] tR tRt o Rt]! ]]! ]4      ]! ]4      ]! ]	RR7      ]! ]	RR7      ]! R4      R7      t
R tR	 tR
 tRtV tR# )ÚImagei‚  zBitmap image.r§  rÐ   r¨  N)r}  rE   rF   rS   rT   rÖ  c                ól   € \         P                  W4       Wn        W n        W0n        W@n        WPn        R # rˆ   )rO  rk   rE   rF   rS   rT   rÖ  )rU   rE   rF   rS   rT   rÖ  rl  s   &&&&&&,r>   rk   ÚImage.__init__�  s)   € Ü×Ñ˜DÔ%ØŒØŒØŒ
ØŒØŽ	r@   c                óÒ   € V P                  V P                  V P                  V P                  V P                  V P
                  4      pVP                  V P                  4       4       V# rˆ   )rž   rE   rF   rS   rT   rÖ  r«   r§   rk  s   & r>   r    Ú
Image.copy•  sH   € Ø�n‰n˜TŸV™V T§V¡V¨T¯Z©Z¸¿¹ÀdÇiÁiÓPˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                ó¢   € V P                   V P                  V P                   V P                  ,           V P                  V P                  ,           3# rˆ   r°  rŸ   s   &r>   rÆ   ÚImage.getBoundsš  s3   € à—‘˜Ÿ™ §¡¨¯©Õ 3°T·V±V¸d¿k¹kÕ5IÐJÐJr@   )rT   rÖ  rS   rE   rF   )rZ   r[   r\   r]   r^   rÊ   rO  rÝ   r+  r/  r·   rk   r    rÆ   r_   r`   ra   s   @r>   r³  r³  ‚  sX   ø‡ € Ùá˜JÙ˜Ó"Ù˜Ó"Ù˜^Ð1PÔQÙ˜nÐ2SÔTÙ˜DÓ!ô
€Hòò÷
Kð Kr@   r³  c            
       óz   a € ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      R7      tR t	R t
R	 tR
tV tR# )ÚCircleiž  úx of the centrerÐ   úy of the centreúradius in points)r}  r  r  Úrc                óT   € \         P                  W4       Wn        W n        W0n        R # rˆ   )rO  rk   r  r  r¿  )rU   r  r  r¿  rl  s   &&&&,r>   rk   ÚCircle.__init__¦  s   € Ü×Ñ˜DÔ%ØŒØŒØŽr@   c                ó¦   € V P                  V P                  V P                  V P                  4      pVP	                  V P                  4       4       V# rˆ   )rž   r  r  r¿  r«   r§   rk  s   & r>   r    ÚCircle.copy¬  s<   € Ø�n‰n˜TŸW™W d§g¡g¨t¯v©vÓ6ˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                óæ   € V P                   V P                  ,
          V P                  V P                  ,
          V P                   V P                  ,           V P                  V P                  ,           3# rˆ   )r  r¿  r  rŸ   s   &r>   rÆ   ÚCircle.getBounds±  sH   € Ø—‘˜$Ÿ&™&Õ  $§'¡'¨D¯F©FÕ"2°D·G±G¸d¿f¹fÕ4DÀdÇgÁgÐPT×PVÑPVÕFVÐWÐWr@   )r  r  r¿  N©rZ   r[   r\   r]   rÊ   rO  rÝ   r+  r·   rk   r    rÆ   r_   r`   ra   s   @r>   r»  r»  ž  sH   ø‡ € á˜JÙ˜(Ð(9Ô:Ù˜(Ð(9Ô:Ù˜Ð'9Ô:ô
€Hòò÷
Xð Xr@   r»  c                   óŒ   a € ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]RR7      R7      tR t	R	 t
R
 tRtV tR# )ÚEllipsei´  r¼  rÐ   r½  zx radiuszy radius)r}  r  r  r©  rª  c                ó`   € \         P                  W4       Wn        W n        W0n        W@n        R # rˆ   )rO  rk   r  r  r©  rª  )rU   r  r  r©  rª  rl  s   &&&&&,r>   rk   ÚEllipse.__init__¼  s$   € Ü×Ñ˜DÔ%ØŒØŒØŒØŽr@   c                ó¼   € V P                  V P                  V P                  V P                  V P                  4      pVP                  V P                  4       4       V# rˆ   )rž   r  r  r©  rª  r«   r§   rk  s   & r>   r    ÚEllipse.copyÃ  sB   € Ø�n‰n˜TŸW™W d§g¡g¨t¯w©w¸¿¹Ó@ˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                óæ   € V P                   V P                  ,
          V P                  V P                  ,
          V P                   V P                  ,           V P                  V P                  ,           3# rˆ   )r  r©  r  rª  rŸ   s   &r>   rÆ   ÚEllipse.getBoundsÈ  sH   € Ø—G‘G˜dŸg™gÕ% t§w¡w°·±Õ'8¸$¿'¹'ÀDÇGÁGÕ:KÈTÏWÉWÐW[×W^ÑW^ÕM^Ð_Ð_r@   )r  r  r©  rª  NrÆ  ra   s   @r>   rÈ  rÈ  ´  sQ   ø‡ € Ù˜JÙ˜(Ð(9Ô:Ù˜(Ð(9Ô:Ù˜(¨
Ô3Ù˜(¨
Ô3ô	
€Hòò÷
`ð `r@   rÈ  c                   óê   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      ]! ]4      ]! ]4      ]! ]	4      ]! ]	4      ]! ]	4      ]! ]
RR7      R7
      t^tRR
 ltR tR tR tR tRtV tR	# )ÚWedgeiË  zgA "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}  rŠ  r‹  rŒ  r�  rŽ  r�  Úradius1Úyradius1ÚannularNc                ó²   € \         P                  W4       WT8  d   VR ,           pK  WW4V3w  V n        V n        V n        V n        V n        W`n        Wpn        R# )ih  N)	rO  rk   rŠ  r‹  rŒ  r�  rŽ  r�  rÓ  )	rU   rŠ  r‹  rŒ  r�  rŽ  r�  rÓ  rl  s	   &&&&&&&&,r>   rk   ÚWedge.__init__Ý  sR   € ä×Ñ˜DÔ%ØÔ/Ø-¨cÕ1ŠOð ˜f¸ÐHñ 	^ˆŒ�d”l D¤K°Ô1GÈÔI]àŒØŽr@   c                ó„   € \        V R R4      pVf   V P                  p\        V RR4      p\        V RV4      pVf   TpWV3# )r�  NrÑ  rÒ  )r¹   rŒ  )rU   r�  rÑ  rÒ  s   &   r>   Ú
_xtraRadiiÚWedge._xtraRadiiè  sM   € Ü˜$ 	¨4Ó0ˆØŠ? d§k¡k˜GÜ˜$˜y¨$Ó/ˆÜ˜4 
¨7Ó3ˆØŠ? h˜GØ Ð)Ð)r@   c                ó€  € V P                   pV P                  pV P                  pV P                  4       w  rEpV P                  pV P
                  p\        R ,          p	Wy,          p
W‰,          pWº8  d   V^\        ,          ,           pK  \        Wº,
          4      p. pVR8”  d^   \        V P                  ;'       g    RV4      pWé,          p\        ^\        WÏ,          R,           4      4      pVV,          pV^,          pM^p^ p. pVP                  pVP                  p\        V4       F.  pW¬V,          ,           pV! \        V4      \        V4      34       K0  	  V F0  w  ppV! WV,          ,           4       V! W$V,          ,           4       K2  	  V^ 8X  g   Vf   V^ 8X  g   Vf   V! V4       V! V4       MFVP!                  4        V F0  w  ppV! WV,          ,           4       V! W&V,          ,           4       K2  	  V P"                  '       Ed%   \%        \'        V R\(        4      R7      pVP+                  V^ ,          V^,          4       \        ^^V,          ^4       F*  pVP-                  VV,          VV^,           ,          4       K,  	  VP/                  4        VP+                  V^V,          ,          V^V,          ^,           ,          4       \        ^V,          ^,           ^V,          ^4       F*  pVP-                  VV,          VV^,           ,          4       K,  	  VP/                  4        V# \1        V4      # )r†  r‡  r€  rˆ  r%   )r%   )rŠ  r‹  rŒ  r×  r�  rŽ  r   rV  rD   r�  r2   rÐ  r|   r�   r   r   r‰  rÓ  rd  r¹   r   ro  rt  r|  ÚPolygon)rU   rŠ  r‹  rŒ  r�  rÑ  rÒ  r�  rŽ  r‘  r’  r“  rG   r�   r�  r”  r-   ÚCAÚCAAr   r�   r,   rþ   rE   s   &                       r>   Ú	asPolygonÚWedge.asPolygonô  s‘  € à—‘ˆØ—,‘,ˆØ—‘ˆØ%)§_¡_Ó%6Ñ"ˆ˜(Ø ×2Ñ2ÐØ×.Ñ.ˆÜ˜e�8ÐØ&Õ7ˆ
Ø"Õ3ˆØÔ!Ø ¤"¥•}ŠHÜ�hÕ)Ó*ˆØˆØ�Œ;Ü˜d×.Ñ.×4Ð4°"°UÓ;ˆKØ&Õ7ˆLÜ�A”c˜%Õ,¨SÕ0Ó1Ó2ˆAØ  �7ˆLØ��F‰AàˆAØˆLØˆØ�i‰iˆØ�M‰MˆÜ˜1–XˆEØ \Õ1Õ1ˆEÙ”�U“œC ›JÐ'Ö(ñ ó ‰CˆAˆaÙˆg˜Q•hÕÔÙˆg˜a•iÕÖ ñ ð �QŒJ˜'š/°¸!´¸xÒ?OÙˆgŒJ™˜'�
à�J‰JŒLÛ‘��!Ù�' !�)Õ#Ô$Ù�' 1�*Õ$Ö%ñ ð �<�<‰<Üœg d¨:´}ÓEÔFˆAØ�H‰H�V˜A•Y˜v a�yÔ)Ü˜1˜Q˜q�S –^�Ø—‘˜ � 6¨!¨A­#¥;Ö/ñ $à�K‰KŒMØ�H‰H�V˜A˜a�C•[ ¨¨!­¨A­¥Ô/Ü˜1˜Q�3˜q�5  1¥ QÖ'�Ø—‘˜ � 6¨!¨A­#¥;Ö/ñ (à�K‰KŒMØˆHä˜6“?Ð"r@   c                óÒ   € V P                  V P                  V P                  V P                  V P                  V P
                  4      pVP                  V P                  4       4       V# rˆ   )rž   rŠ  r‹  rŒ  r�  rŽ  r«   r§   rk  s   & r>   r    Ú
Wedge.copy*  sT   € Ø�n‰n˜TŸ\™\Ø—L‘LØ—K‘KØ×*Ñ*Ø×(Ñ(ó	*ˆð
 	×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                ó>   € V P                  4       P                  4       # rˆ   )rÝ  rÆ   rŸ   s   &r>   rÆ   ÚWedge.getBounds3  s   € Ø�~‰~Ó×)Ñ)Ó+Ð+r@   )rÓ  rŠ  r‹  rŽ  rŒ  r�  r�  )NF)rZ   r[   r\   r]   r^   rÊ   rO  rÝ   r+  r/  rA  r·   r�  rk   r×  rÝ  r    rÆ   r_   r`   ra   s   @r>   rÐ  rÐ  Ë  s’   ø‡ € ñ(ñ ˜JÙ˜xÐ->Ô?Ù˜xÐ->Ô?Ù˜hÐ,>Ô?Ù(¨Ó2Ù& xÓ0Ù˜~Ó.Ù˜~Ó.Ù Ó/Ù˜yÐ.EÔFô

€Hð €Kô	ò*ò4#òl÷,ð ,r@   rÐ  c                   ó`   a € ] tR tRt o Rt]! ]]! ]RR7      R7      t	. 3R lt
R tR tR	tV tR
# )rÚ  i6  zGDefines 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                óŽ   € \         P                  W4       \        V4      ^,          ^ 8X  g   Q R4       hT;'       g    . V n        R# )é   rh  N)rO  rk   r3   r�   )rU   r�   rl  s   &&,r>   rk   ÚPolygon.__init__>  s9   € Ü×Ñ˜DÔ%Ü�6‹{˜Q� !Ô#ÐTÐ%TÓTÐ#Ø—l�l ˆŽr@   c                óz   € V P                  V P                  4      pVP                  V P                  4       4       V# rˆ   ©rž   r�   r«   r§   rk  s   & r>   r    ÚPolygon.copyC  ó0   € Ø�n‰n˜TŸ[™[Ó)ˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c                ó,   € \        V P                  4      # rˆ   ©r™   r�   rŸ   s   &r>   rÆ   ÚPolygon.getBoundsH  ó   € Ü˜tŸ{™{Ó+Ð+r@   ©r�   N)rZ   r[   r\   r]   r^   rÊ   rO  rÝ   r>  r·   rk   r    rÆ   r_   r`   ra   s   @r>   rÚ  rÚ  6  s<   ø‡ € ñ)ñ ˜JÙ˜oÐ3jÔkô
€Hð !ô #ò
÷
,ð ,r@   rÚ  c                   ó`   a € ] tR tRt o Rt]! ]]! ]RR7      R7      t	. 3R lt
R tR tR	tV tR
# )ÚPolyLineiK  zŽ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                óJ  € \         P                  W4       T;'       g    . p\        V4      pV'       di   \        V^ ,          4      '       d3   . pV F'  w  rVVP	                  V4       VP	                  V4       K)  	  TpM\        V4      ^,          ^ 8X  g   Q R4       hWn        R# )r+   rh  N)rA  rk   r3   r   r|   r�   )rU   r�   rl  Ú	lenPointsrq   rE   rF   s   &&,    r>   rk   ÚPolyLine.__init__T  s…   € Ü×Ñ˜4Ô$Ø—�˜2ˆÜ˜“Kˆ	ßÜ�V˜A•Y×ÒØ�Û#‘E�QØ—H‘H˜Q”KØ—H‘H˜Q–Kñ $ð ‘ä˜6“{ Q•¨!Ô+Ð\Ð-\Ó\Ð+ØŽr@   c                óz   € V P                  V P                  4      pVP                  V P                  4       4       V# rˆ   rê  rk  s   & r>   r    ÚPolyLine.copyc  rì  r@   c                ó,   € \        V P                  4      # rˆ   rî  rŸ   s   &r>   rÆ   ÚPolyLine.getBoundsh  rð  r@   rñ  N)rZ   r[   r\   r]   r^   rÊ   rA  rÝ   r>  r·   rk   r    rÆ   r_   r`   ra   s   @r>   ró  ró  K  s<   ø‡ € ñ4ñ ˜IÙ˜oÐ3jÔkô
€Hð !ô ò÷
,ð ,r@   ró  c                   óÂ   a € ] tR tRt o Rt]! ]]! ]! ]	]
! ]	^R7      3R4      RR7      ]! ]! ]]	R34      RR7      ]! ]! ]]	R	34      R
R7      R7      t^^-. 3R ltRtV tR# )ÚHatchingik  z\define a hatching of a set of polygons defined by lists of the form [x0,y0,x1,y1,....,xn,yn])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Úspacingsc           
     óh  € \         P                  ! V 3/ VB  \        V4      '       d   V3p\        V4      '       d   V3p\        V4      '       d   V3p\	        V4      \	        V4      ,
          pV^ 8”  d!   \        V4      WQR,          .,          ,           pW0n        W n        Wn        V P                  pV P                  p\        V4       EFâ  w  rXW,          p	\        V4      p\        V4      p
\        V4      pRpV) pV Fb  p\        ^ \	        V4      ^4       FE  pWï^,           ,          V
,          Wï,          V,          ,
          p\!        VV4      p\#        VV4      pKG  	  Kd  	  \%        \'        WÉ,          4      4      ^,
          p\%        \'        WÙ,          4      4      ^,           p\        VV4       EFó  p. pV	V,          pV EF  p\	        V4      ^,
          p\        ^ \	        V4      ^4       Fè  pVV,          pVV^,           ,          pVV
,          VV,          ,           pVV
,          VV,          ,
          pWï,          pWï^,           ,          pVV
,          VV,          ,           pVV
,          VV,          ,
          pVV8  d   VV8¼  g   VV8  dC   VV8¼  d<   VP)                  VVV,
          VV,
          ,          VV,
          ,          ,           4       TpKê  	  EK  	  VP+                  4        \        ^ \	        V4      ^4       F›  pVV,          V
,          VV,          ,
          pVV
,          VV,          V,          ,           pVV^,           ,          V
,          VV,          ,
          pVV
,          VV^,           ,          V,          ,           pV! VV4       V! VV4       K�  	  EKö  	  EKå  	  R# )r+   iÿÿÿNr1   )rd  rk   r>  r+  r3   r�   rý  rþ  rÿ  ro  rt  Ú	enumerater   r   r   r�   rD   r2   rÐ  r   r|   r¯   )rU   rÿ  rþ  rý  Úkwdsr‰   ro  rt  r  ÚspacingÚcosThetaÚsinThetaÚspanMinÚspanMaxrþ   r_  rF   Ú	spanStartÚspanEndÚstepÚnodeXÚstripeYr  r   r€   Úa1Úb1rE   rv   rw   s   &&&&,                         r>   rk   ÚHatching.__init__t  s  € Ü�Š�dÑ#˜dÒ#Ü˜7×#Ò#Ø�zˆGÜ�F×ÒØ�YˆFÜ�H×ÒØ �{ˆHÜ�‹Kœ˜H›Õ%ˆØˆQŒ3Ü˜H“~ a°"­¨Õ&6Õ6ˆHàŒØŒØ Œà—‘ˆØ—‘ˆä! &×)‰HˆAØ•kˆGÜ˜E“NˆEÜ˜5“zˆHÜ˜5“zˆHà ˆGØ�hˆGó �Ü˜q¤ Q£¨Ö*�Aà˜A�#�˜x�¨­¨X­Õ5�AÜ! ! G›n�GÜ! ! G›n’Gó	 +ñ ô œE '¥/Ó2Ó3°aÕ7ˆIÜœ5 ¥Ó1Ó2°QÕ6ˆGô ˜i¨×0�Ø�Ø! $�,�ô !�AÜ˜A›˜q��AÜ" 1¤S¨£V¨AÖ.˜Ø˜a�D˜Ø˜a �c�F˜Ø˜x�Z¨!¨H­*Õ4˜Ø˜x�Z¨!¨H­*Õ4˜Ø�D˜Ø �c�F˜à˜x�Z¨¨(­
Õ2˜Ø˜x�Z¨¨(­
Õ2˜ð ˜wœJ¨2¨w¬;¸2¸g¼:È"ÈgÌ+Ø!ŸL™L¨¨R°­U°W¸RµZÕ,@À"ÀRÅ%Õ,HÕ)HÔIàšô /ñ !ð& —
‘
”ô ˜q¤ U£¨AÖ.�Aà˜a� Õ)¨G°HÕ,<Õ<�AØ Õ(¨¨q­°(Õ):Õ:�AØ˜a �c�
 8Õ+¨g°hÕ.>Õ>�AØ Õ(¨5°°1µ­:°hÕ+>Õ>�Añ ˜1˜Q”KÙ˜1˜Q–Kô /ô7 1ó- *r@   )rþ  rÿ  rý  N)rZ   r[   r\   r]   r^   rÊ   rd  rÝ   ÚEitherOrr>  r0  r+  r·   rk   r_   r`   ra   s   @r>   rü  rü  k  sŒ   ø‡ € Ùfá˜DÙ™x¨¹ÀOÐWXÔ9YÐ(ZÐ[gÓhð  oiô  jÙ™h¨°ÀÐ'LÓMð  TYô  ZÙ¡¨(°?À=Ð)QÓ Rð  YHô  Iô
€Hð !"¨"°b÷ M ò M r@   rü  c                 ó˜   € \        V R V4      pVP                  V4      pV^ 8¼  d%   \        V R^ 4      p	V	\        VRV W4V4      ,           pV# )Ú_dpÚ_dpLenN)r¹   Úrfindr   )
ÚtAr4   r0   r'   r&   ÚencodingÚpivotCharacterÚdpr‰   ÚdpOffss
   &&&&&&&   r>   ÚnumericXShiftr  Ã  sP   € Ü	��E˜.Ó	)€BØ�
‰
�2‹€AØˆ!„tÜ˜˜H QÓ'ˆØ”[  b q ¨(¸HÓEÕEˆØ€Hr@   c                   ó  a € ] tR tRt o Rt]! ]! ]RR7      ]! ]RR7      ]! ]RR7      ]! RRR7      ]! ]R	R7      ]! ]	R
R7      ]! ]
! RRRR4      RR7      ]! ]4      ]! ]
! ^ ^^^^^^^4      RR7      R7	      tRtR tR tR tR tRtV tR# )ÚStringiË  zeNot 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)   Úmiddler/   Únumericz(treat (x,y) as one of the options below.z.Control whether text is filled/stroked etc etc)	rE   rF   r4   r'   r&   r$   r(   r  ÚtextRenderModeÚutf8c                óÆ   € Wn         W n        W0n        R V n        \        R,          V n        \        R,          V n        \        R,          V n        V P                  V4       R# )r)   r'   r&   r$   N)	rE   rF   r4   r(   rC  r'   r&   r$   r«   )rU   rE   rF   r4   rl  s   &&&&,r>   rk   ÚString.__init__Ý  sJ   € ØŒØŒØŒ	Ø!ˆŒÜ& zÕ2ˆŒÜ& zÕ2ˆŒÜ'¨Õ4ˆŒØ×Ñ˜2Ör@   c                ó�   € V P                   \        V P                  V P                  V P                  V P
                  4      ,           # rˆ   )rE   r   r4   r'   r&   r  rŸ   s   &r>   ÚgetEastÚString.getEastç  s,   € Ø�v‰vœ D§I¡I¨d¯m©m¸D¿M¹MÈ4Ï=É=ÓYÕYÐYr@   c                ó¦   € V P                  V P                  V P                  V P                  4      pVP	                  V P                  4       4       V# rˆ   )rž   rE   rF   r4   r«   r§   rk  s   & r>   r    ÚString.copyê  s<   € Ø�n‰n˜TŸV™V T§V¡V¨T¯Y©YÓ7ˆØ×Ñ˜$×,Ñ,Ó.Ô/Øˆ
r@   c           	     ó  € V P                   p\        WP                  V P                  V P                  4      pV P
                  pV P                  pVR 8w  dc   VR8X  d   VRV,          ,          pMJVR8X  d
   WB,          pM:VR8X  d4   V\        W1W P                  V P                  V P                  4      ,          pW@P                  RV P                  ,          ,
          WB,           V P                  V P                  ,           3# )r)   r  rˆ  r/   r  gš™™™™™É?)	r4   r   r'   r&   r  r(   rE   r  rF   )rU   r8   r0   r  rE   s   &    r>   rÆ   ÚString.getBoundsï  s¶   € à�I‰IˆÜ˜Ÿ-™-¨¯©°d·m±mÓDˆØ�_‰_ˆØ�F‰FˆØˆwŒ;Ø�8Œ|Ø�S˜•U•
‘Ø�U”Ø•‘Ø�Y”Ø”] 2¨¯-©-¸¿¹ÀdÇmÁmÓTÕT�Ø—6‘6˜C $§-¡-Õ/Õ/°µ°d·f±f¸t¿}¹}Õ6LÐMÐMr@   )r$   r'   r&   r4   r(   rE   rF   )rZ   r[   r\   r]   r^   rÊ   rÝ   r+  ÚisStringrF  r-  r·   r  rk   r$  r    rÆ   r_   r`   ra   s   @r>   r  r  Ë  s¼   ø‡ € ñ,ñ Ù˜Ð'=Ô>Ù˜Ð'=Ô>Ù˜HÐ*BÔCÙ ð  +Lô  MÙ ¨kÔ:Ù  Ð4GÔHÙ!¡%¨°¸¸yÓ"IÐOyÔzÙ Ó)Ù%¡e¨A¨a°°!°A°a¸¸!Ó&<ÐBrÔsô

€Hð €HòòZò÷
Nð Nr@   r  c                   ó*   a € ] tR tRt o RtR tRtV tR# )rï   iþ  aW  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                ó   € \        R4      h)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   &r>   rð   ÚUserNode.provideNode  s   € ô
 "Ð"XÓYÐYr@   rY   N)rZ   r[   r\   r]   r^   rð   r_   r`   ra   s   @r>   rï   rï   þ  s   ø‡ € ñ%÷Zð Zr@   rï   c                   ó*   a € ] tR tRt o RtR tRtV tR# )Ú
DirectDrawi  z"try to draw directly on the canvasc                ó   € \        R 4      h)r-  rÅ   )rU   rV   s   &&r>   ÚdrawDirectlyÚDirectDraw.drawDirectly  s   € Ü!Ð"XÓYÐYr@   rY   N)rZ   r[   r\   r]   r^   r2  r_   r`   ra   s   @r>   r0  r0    s   ø‡ € Ù,÷Zð Zr@   r0  c                  ó6  € \        ^
^
^È^24      p ^ RIpVP                  p\        P                  P                  pV! R4       V! V P                  4       4       V! R4       V P                  4        V! R4       V! R4       V =V! R4       V P                  4        R# )é
   Nza Rectangle: z
verifying...z OK
zdeleting rect.width zverifying...)r¦  ÚpprintrÜ  Ústdoutrö  r§   r½   rS   )r¿  r6  Úppr0   s       r>   r<  r<    s~   € ÜˆR��3�rÓ€AÛØ	�‰€BÜ�
‰
×Ñ€AÙ€oÔÙ€q‡�ÓÔÙÐÔØ‡H�H„JÙ€g„Jñ ÐÔØ	ˆÙ€nÔØ‡H�H†Jr@   Ú__main__rÖ   rˆ   )r+   z		)rç  rç  é   r+   )ro  rt  ry  r|  )FF)NNN)bÚ__version__r^   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   r„  ÚisNumberInRangerG  Ú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ÚblackrC  r   r?   rK   rM   rd   rz   r…   r”   r™   r›   rÌ   rG  rK  rd  rm  rî   rˆ  Ú	Validatorr9  rA  rI  rO  r�   r�   rT  rs  rw  rU  rV  r�  r`  Ú_fillModeMaprd  rS  r•  r—  r¤  r¦  r³  r»  rÈ  rÐ  rÚ  ró  rü  r  r  rï   r0  r<  rZ   rY   r@   r>   Ú<module>rQ     sw  ðð
 €ØG€ç ß 3× 3å 'ß yÕ yÝ  Ý  Ü &ß .Ù‘? 1 QÓ'Ó(€	Ü #Ý )Ý 4Ý %ß @Ù˜ q¨Ó+€Ù˜ q¨Ó+€Ù˜¨¨!Ó,Ð ð &Ð Ø€ðØ�ðð �6—<‘<ð	ð
 �1ðð �Qðð �aðð ˜ðð �tðð �Tðð �4ðð �Uðð �uðð �Qðð  �—‘ð!ð" �ð#ð& �ð'ð( �ð)ð* �7ð+€ô6 ò  òD-÷,ñ ,÷&ñ &ò$ò"3òj0ò(ôKQˆOÐ/ô KQôZ{ˆEô {ôz	ôô<ò"@ô
Tˆe�Xô T÷l5ñ 5ô,z˜	ô zñ &Ó'Ð ô�ô ô24ˆ9ô 4ô&%�ô %ñ& *.©e°A«h«Ñ &€ˆ�(˜JØ!Ð Ú8€ô%ð< 	ˆdØ�}Ø�MØ�=Ø�}Ø�MØ�=ð
€ôF)ˆ:ô F)ñP ‹f€ôô6(ˆdô (ð  a¨A°!ô 0%ôdKˆ:ô Kô:KˆJô Kô8XˆZô Xô,`ˆjô `ô.i,ˆJô i,ôV,ˆjô ,ô*,ˆyô ,ô@V ˆtô V ðp 8<È=ô ô1NˆUô 1NôfZÐ"ô ZôZ�ô Zò
ð" ˆZÔÙ†Fñ r@   