§
    ‡Ûgñ/  ã                   óô   — d dl Zd dlmZ d dlmZmZ d„ Z G d„ d¦  «        Z	 G d„ de¦  «        Z
 G d	„ d
¦  «        Z G d„ dej        ¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )é    N)Úticker)ÚBboxÚ	Transformc                 óÈ  — g }| dd…         | dd…         z
  }t          d¦  «        t          ddd¦  «        fD �](}| j        |         \  }}|j        |         \  }}|j        |         \  }	}
|j        |         \  }}|	||	k    f|||k     ffD ]Ô\  }}|                     g ¦  «         |dd…         |dd…         z                       ¦   «         \  }|D ]Ž}||         |||         z
  ||         z  ||         z  z   }|
|cxk    r|k    sn Œ8||f|         }t          j        t          j        ||         ddd…         Ž ¦  «        }|d                              ||f¦  «         Œ�ŒÕ�Œ*|S )aá  
    Find the points where a polyline crosses a bbox, and the crossing angles.

    Parameters
    ----------
    xys : (N, 2) array
        The polyline coordinates.
    bbox : `.Bbox`
        The bounding box.

    Returns
    -------
    list of ((float, float), float)
        Four separate lists of crossings, for the left, right, bottom, and top
        sides of the bbox, respectively.  For each list, the entries are the
        ``((x, y), ccw_angle_in_degrees)`` of the crossing, where an angle of 0
        means that the polyline is moving to the right at the crossing point.

        The entries are computed by linearly interpolating at each crossing
        between the nearest points on either side of the bbox edges.
    é   Néÿÿÿÿ)	ÚsliceÚTÚminÚmaxÚappendÚnonzeroÚnpÚdegreesÚarctan2)ÚxysÚbboxÚ	crossingsÚdxysÚslÚusÚvsÚdusÚdvsÚuminÚvminÚumaxÚvmaxÚu0ÚinsideÚidxsÚidxÚvÚcrossingÚthetas                       úY/granary/edev/quantum/lib/python3.11/site-packages/mpl_toolkits/axisartist/grid_finder.pyÚ_find_line_box_crossingsr'      s§  € ð, €IØˆqˆrˆrŒ7�S˜˜"˜”XÑ€DÝ�T‰{Œ{�E $¨¨bÑ1Ô1Ð2ð 8ñ 8ˆØ”�r”‰ˆˆBØ”6˜"”:‰ˆˆSØ”X˜b”\‰
ˆˆdØ”X˜b”\‰
ˆˆdØ  " t¢)Ð,¨t°R¸$²YÐ.?Ð@ð 		8ð 		8‰JˆB�Ø×Ò˜RÑ Ô Ð Ø˜C˜R˜C”[ 6¨!¨"¨"¤:Ñ-×6Ò6Ñ8Ô8‰EˆDØð 8ð 8�Ø�s”G˜r B s¤G™|¨s°3¬xÑ7¸#¸c¼(ÑBÑB�Ø˜qÐ(Ð(Ò(Ð( DÒ(Ð(Ð(Ð(ØØ ˜7 2œ;�Ýœ
¥2¤:¨t°C¬y¸¸¸2¸¬Ð#?Ñ@Ô@�Ø˜"”×$Ò$ h°Ð%6Ñ7Ô7Ð7Ð7ð8ñ		8ð Ðó    c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚExtremeFinderSimplezU
    A helper class to figure out the range of grid lines that need to be drawn.
    c                 ó"   — || _         || _        dS )zy
        Parameters
        ----------
        nx, ny : int
            The number of samples in each direction.
        N©ÚnxÚny)Úselfr-   r.   s      r&   Ú__init__zExtremeFinderSimple.__init__6   s   € ð ˆŒØˆŒˆˆr(   c                 ó¼  — t          j        t          j        ||| j        ¦  «        t          j        ||| j        ¦  «        ¦  «        \  }} |t          j        |¦  «        t          j        |¦  «        ¦  «        \  }}	|                      |                     ¦   «         |                     ¦   «         |	                     ¦   «         |	                     ¦   «         ¦  «        S )ai  
        Compute an approximation of the bounding box obtained by applying
        *transform_xy* to the box delimited by ``(x1, y1, x2, y2)``.

        The intended use is to have ``(x1, y1, x2, y2)`` in axes coordinates,
        and have *transform_xy* be the transform from axes coordinates to data
        coordinates; this method then returns the range of data coordinates
        that span the actual axes.

        The computation is done by sampling ``nx * ny`` equispaced points in
        the ``(x1, y1, x2, y2)`` box and finding the resulting points with
        extremal coordinates; then adding some padding to take into account the
        finite sampling.

        As each sampling step covers a relative range of *1/nx* or *1/ny*,
        the padding is computed by expanding the span covered by the extremal
        coordinates by these fractions.
        )	r   ÚmeshgridÚlinspacer-   r.   ÚravelÚ_add_padr   r   )
r/   Útransform_xyÚx1Úy1Úx2Úy2ÚxÚyÚxtÚyts
             r&   Ú__call__zExtremeFinderSimple.__call__@   s�   € õ& Œ{ÝŒK˜˜B ¤Ñ(Ô(­"¬+°b¸"¸d¼gÑ*FÔ*FñHô H‰ˆˆ1à��bœh q™kœk­2¬8°A©;¬;Ñ7Ô7‰ˆˆBØ�}Š}˜RŸVšV™XœX r§v¢v¡x¤x°·²±´¸2¿6º6¹8¼8ÑDÔDÐDr(   c                 óZ   — ||z
  | j         z  }||z
  | j        z  }||z
  ||z   ||z
  ||z   fS )z,Perform the padding mentioned in `__call__`.r,   )r/   Úx_minÚx_maxÚy_minÚy_maxÚdxÚdys          r&   r5   zExtremeFinderSimple._add_padX   sA   € à�e‰m˜tœwÑ&ˆØ�e‰m˜tœwÑ&ˆØ�r‰z˜5 2™: u¨r¡z°5¸2±:Ð=Ð=r(   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r?   r5   © r(   r&   r*   r*   1   sN   € € € € € ðð ðð ð ðEð Eð Eð0>ð >ð >ð >ð >r(   r*   c                   ó6   ‡ — e Zd ZdZdxZZˆ fd„Zd„ Zd„ Zˆ xZ	S )Ú_User2DTransformz.A transform defined by two user-set functions.é   c                 ód   •— t          ¦   «                              ¦   «          || _        || _        dS )zÞ
        Parameters
        ----------
        forward, backward : callable
            The forward and backward transforms, taking ``x`` and ``y`` as
            separate arguments and returning ``(tr_x, tr_y)``.
        N)Úsuperr0   Ú_forwardÚ	_backward)r/   ÚforwardÚbackwardÚ	__class__s      €r&   r0   z_User2DTransform.__init__d   s-   ø€ õ 	‰Œ×ÒÑÔÐØˆŒØ!ˆŒˆˆr(   c                 ó^   — t          j         | j        t          j        |¦  «        Ž ¦  «        S ©N)r   Ú	transposerQ   )r/   Úvaluess     r&   Útransform_non_affinez%_User2DTransform.transform_non_affiner   s%   € åŒ|˜M˜DœM­2¬<¸Ñ+?Ô+?Ð@ÑAÔAÐAr(   c                 óH   —  t          | ¦  «        | j        | j        ¦  «        S rW   )ÚtyperR   rQ   ©r/   s    r&   Úinvertedz_User2DTransform.invertedv   s   € à�t�D‰zŒz˜$œ.¨$¬-Ñ8Ô8Ð8r(   )
rG   rH   rI   rJ   Ú
input_dimsÚoutput_dimsr0   rZ   r^   Ú__classcell__©rU   s   @r&   rM   rM   _   si   ø€ € € € € Ø8Ð8à Ð €J�ð"ð "ð "ð "ð "ðBð Bð Bð9ð 9ð 9ð 9ð 9ð 9ð 9r(   rM   c                   óT   — e Zd Z	 	 	 	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ ZeZ	d„ Z
d	„ Zd
„ ZdS )Ú
GridFinderNc                 ó  — |€t          dd¦  «        }|€t          ¦   «         }|€t          ¦   «         }|€t          ¦   «         }|€t          ¦   «         }|| _        || _        || _        || _        || _        |                      |¦  «         dS )a  
        transform : transform from the image coordinate (which will be
        the transData of the axes to the world coordinate).

        or transform = (transform_xy, inv_transform_xy)

        locator1, locator2 : grid locator for 1st and 2nd axis.
        Né   )	r*   ÚMaxNLocatorÚFormatterPrettyPrintÚextreme_finderÚgrid_locator1Úgrid_locator2Útick_formatter1Útick_formatter2Úset_transform)r/   Ú	transformri   rj   rk   rl   rm   s          r&   r0   zGridFinder.__init__|   s›   € ð Ð!Ý0°°RÑ8Ô8ˆNØÐ Ý'™MœMˆMØÐ Ý'™MœMˆMØÐ"Ý2Ñ4Ô4ˆOØÐ"Ý2Ñ4Ô4ˆOØ,ˆÔØ*ˆÔØ*ˆÔØ.ˆÔØ.ˆÔØ×Ò˜9Ñ%Ô%Ð%Ð%Ð%r(   c           
      óD  — |                       | j        ||||¦  «        }|\  }}}}	|                      ||¦  «        \  }
}}t          j        |
¦  «        }
|                      ||	¦  «        \  }}}t          j        |¦  «        }|
d|…         |z  }|d|…         |z  }|                      ||||||	¦  «        \  }}||z
  dz  }||z
  dz  }t          j        ||z
  ||z
  ||z   ||z   ¦  «        }||||  	                    |||
|¦  «        |  	                    ||||¦  «        dœ}i x}|d         d<   dD ]0}|d         d         |         }|  
                    |||¦  «        ||<   Œ1i x}|d         d<   dD ]0}|d         d         |         }|                      |||¦  «        ||<   Œ1|S )	z˜
        lon_values, lat_values : list of grid values. if integer is given,
                           rough number of grids in each direction.
        Ng»½×Ùß|Û=)ÚextremesÚ	lon_linesÚ	lat_linesÚlonÚlatrt   Útick_labels©ÚleftÚbottomÚrightÚtopÚtick_levelsru   )ri   Úinv_transform_xyrj   r   Úasarrayrk   Ú_get_raw_grid_linesr   Úfrom_extentsÚ_clip_grid_lines_and_find_ticksrl   rm   )r/   r7   r8   r9   r:   rq   Úlon_minÚlon_maxÚlat_minÚlat_maxÚlon_levsÚlon_nÚ
lon_factorÚlat_levsÚlat_nÚ
lat_factorÚ
lon_valuesÚ
lat_valuesrr   rs   ÚddxÚddyÚbbÚ	grid_infoÚ
tck_labelsÚ	directionÚlevss                              r&   Úget_grid_infozGridFinder.get_grid_infoœ   s,  € ð ×&Ò& tÔ'<¸bÀ"ÀbÈ"ÑMÔMˆð
 .6Ñ*ˆ�˜' 7Ø&*×&8Ò&8¸À'Ñ&JÔ&JÑ#ˆ�%˜Ý”:˜hÑ'Ô'ˆØ&*×&8Ò&8¸À'Ñ&JÔ&JÑ#ˆ�%˜Ý”:˜hÑ'Ô'ˆà˜f˜u˜fÔ%¨
Ñ2ˆ
Ø˜f˜u˜fÔ%¨
Ñ2ˆ
à#×7Ò7¸
Ø8BØ8?ÀØ8?Àñ Jô  JÑˆ	�9ð
 �"‰u�f‰nˆØ�"‰u�f‰nˆÝÔ˜r #™v r¨#¡v¨r°#©v°r¸#±vÑ>Ô>ˆð !Ø"Ø"Ø×7Ò7Ø˜: x°ñ5ô 5à×7Ò7Ø˜: x°ñ5ô 5ð
ð 
ˆ	ð 8:Ð9ˆ
�Y˜uÔ% mÑ4Ø;ð 	-ð 	-ˆIØ˜UÔ# MÔ2°9Ô=ˆDØ$(×$8Ò$8Ø˜: tñ%-ô %-ˆJ�yÑ!Ð!ð 8:Ð9ˆ
�Y˜uÔ% mÑ4Ø;ð 	-ð 	-ˆIØ˜UÔ# MÔ2°9Ô=ˆDØ$(×$8Ò$8Ø˜: tñ%-ô %-ˆJ�yÑ!Ð!ð Ðr(   c                 ó¤   ‡ ‡	‡
— t          j        ||d¦  «        Š
t          j        ||d¦  «        Š	ˆ	ˆ fd„|D ¦   «         }ˆ
ˆ fd„|D ¦   «         }||fS )Néd   c                 ób   •— g | ]+}‰                      t          j        ‰|¦  «        ‰¦  «        ‘Œ,S rK   ©r6   r   Ú	full_like)Ú.0rt   Úlats_ir/   s     €€r&   ú
<listcomp>z2GridFinder._get_raw_grid_lines.<locals>.<listcomp>Ø   sE   ø€ ð ,ð ,ð ,Øð ×&Ò&¥r¤|°F¸CÑ'@Ô'@À&ÑIÔIð ,ð ,ð ,r(   c           	      ób   •— g | ]+}‰                      ‰t          j        ‰|¦  «        ¦  «        ‘Œ,S rK   r™   )r›   ru   Úlons_ir/   s     €€r&   r�   z2GridFinder._get_raw_grid_lines.<locals>.<listcomp>Ú   sE   ø€ ð ,ð ,ð ,Øð ×&Ò& v­r¬|¸FÀCÑ/HÔ/HÑIÔIð ,ð ,ð ,r(   )r   r3   )r/   rŒ   r�   r‚   rƒ   r„   r…   rr   rs   rœ   rŸ   s   `        @@r&   r   zGridFinder._get_raw_grid_linesÑ   s”   øøø€ õ ”˜W g¨sÑ3Ô3ˆÝ”˜W g¨sÑ3Ô3ˆð,ð ,ð ,ð ,ð ,Ø *ð,ñ ,ô ,ˆ	ð,ð ,ð ,ð ,ð ,Ø *ð,ñ ,ô ,ˆ	ð ˜)Ð#Ð#r(   c           	      ó  — g g t          g g g g ¬¦  «        t          g g g g ¬¦  «        g dœ}|d         }|d         }t          |||¦  «        D ]¹\  \  }}	}
}t          t          j        ||	g¦  «        |¦  «        }|d                              |
¦  «         |d                              ||	fg¦  «         t          |g d¢¦  «        D ]@\  }}|D ]8}||                              |¦  «         ||                              |¦  «         Œ9ŒAŒº|S )Nrw   )rY   Úlevelsr|   Ú	tick_locsÚlinesr|   r¢   r¡   r£   )rx   rz   ry   r{   )ÚdictÚzipr'   r   Úcolumn_stackr   )r/   r£   rY   r”   r�   ÚgiÚ
tck_levelsÚtck_locsÚlxÚlyr#   ÚlevÚtcksÚtckr“   Úts                   r&   r�   z*GridFinder._clip_grid_lines_and_find_ticksß   sL  € àØÝ R°¸"À"ÐEÑEÔEÝ 2¨b¸ÀÐCÑCÔCØð
ð 
ˆð ˜Ô&ˆ
Ø�k”?ˆÝ # E¨6°4Ñ 8Ô 8ð 		2ð 		2Ñ‰HˆR��a˜Ý+­B¬O¸RÀ¸HÑ,EÔ,EÀrÑJÔJˆDØˆxŒL×Ò Ñ"Ô"Ð"ØˆwŒK×Ò  R ˜zÑ*Ô*Ð*å"% dØ&HÐ&HÐ&Hñ#Jô #Jð 2ð 2‘��Yàð 2ð 2�AØ˜yÔ)×0Ò0°Ñ5Ô5Ð5Ø˜YÔ'×.Ò.¨qÑ1Ô1Ð1Ð1ð2ð2ð ˆ	r(   c                 óæ   — t          |t          ¦  «        r	|| _        d S t          |¦  «        dk    r2t	          t          t          |¦  «        ¦  «        rt          |Ž | _        d S t          d¦  «        ‚)NrN   zF'aux_trans' must be either a Transform instance or a pair of callables)	Ú
isinstancer   Ú_aux_transformÚlenÚallÚmapÚcallablerM   Ú	TypeError)r/   Ú	aux_transs     r&   rn   zGridFinder.set_transform÷   st   € Ý�i¥Ñ+Ô+ð 	?Ø"+ˆDÔÐÐÝ�‰^Œ^˜qÒ Ð ¥S­­X°yÑ)AÔ)AÑ%BÔ%BÐ Ý"2°IÐ">ˆDÔÐÐåð >ñ ?ô ?ð ?r(   c                 ó   — | j         S rW   )r²   r]   s    r&   Úget_transformzGridFinder.get_transform   s   € ØÔ"Ð"r(   c                 óh   — | j                              t          j        ||g¦  «        ¦  «        j        S rW   )r²   ro   r   r¦   r
   ©r/   r;   r<   s      r&   r6   zGridFinder.transform_xy  s*   € ØÔ"×,Ò,­R¬_¸aÀ¸VÑ-DÔ-DÑEÔEÔGÐGr(   c                 óŒ   — | j                              ¦   «                              t          j        ||g¦  «        ¦  «        j        S rW   )r²   r^   ro   r   r¦   r
   r¼   s      r&   r}   zGridFinder.inv_transform_xy  s=   € ØÔ"×+Ò+Ñ-Ô-×7Ò7ÝŒO˜Q ˜FÑ#Ô#ñ%ô %Ü%&ð	'r(   c                 óˆ   — |                      ¦   «         D ],\  }}|dv rt          | ||¦  «         Œt          d|›�¦  «        ‚d S )N)ri   rj   rk   rl   rm   zUnknown update property )ÚitemsÚsetattrÚ
ValueError)r/   ÚkwargsÚkr#   s       r&   ÚupdatezGridFinder.update  sk   € Ø—L’L‘N”Nð 	Cð 	C‰DˆAˆqØð (ð (ð (õ
 ˜˜a Ñ#Ô#Ð#Ð#å Ð!A¸AÐ!AÐ!AÑBÔBÐBð	Cð 	Cr(   )NNNNN)rG   rH   rI   r0   r•   r   r�   rn   rº   Úupdate_transformr6   r}   rÄ   rK   r(   r&   rd   rd   {   sÃ   € € € € € ð !%Ø#Ø#Ø!%Ø!%ð&ð &ð &ð &ð@3ð 3ð 3ðj$ð $ð $ðð ð ð0?ð ?ð ?ð#ð #ð #ð %ÐðHð Hð Hð'ð 'ð 'ð	Cð 	Cð 	Cð 	Cð 	Cr(   rd   c                   ó4   ‡ — e Zd Z	 	 	 	 	 dˆ fd„	Zˆ fd„Zˆ xZS )rg   é
   NTFc                 ó|   •— t          ¦   «                              |||||¬¦  «         |                      ¦   «          d S )N)ÚstepsÚintegerÚ	symmetricÚprune)rP   r0   Úcreate_dummy_axis)r/   ÚnbinsrÉ   ÚtrimrÊ   rË   rÌ   rU   s          €r&   r0   zMaxNLocator.__init__  sI   ø€ õ 	‰Œ×Ò˜ e°WØ#,°Eð 	ñ 	;ô 	;ð 	;à×ÒÑ Ô Ð Ð Ð r(   c                 ó�   •— t          ¦   «                              ||¦  «        }t          j        |¦  «        t	          |¦  «        dfS )Nr   )rP   Útick_valuesr   Úarrayr³   )r/   Úv1Úv2ÚlocsrU   s       €r&   r?   zMaxNLocator.__call__#  s7   ø€ Ý‰wŒw×"Ò" 2 rÑ*Ô*ˆÝŒx˜‰~Œ~�s 4™yœy¨!Ð+Ð+r(   )rÇ   NTFFN©rG   rH   rI   r0   r?   ra   rb   s   @r&   rg   rg     se   ø€ € € € € Ø'+ØØØ Øð	!ð !ð !ð !ð !ð !ð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r(   rg   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚFixedLocatorc                 ó   — || _         d S rW   )Ú_locs)r/   rÕ   s     r&   r0   zFixedLocator.__init__)  s   € ØˆŒ
ˆ
ˆ
r(   c                 óž   ‡‡— t          ‰‰g¦  «        \  ŠŠt          j        ˆˆfd„| j        D ¦   «         ¦  «        }|t	          |¦  «        dfS )Nc                 ó4   •— g | ]}‰|cxk    r‰k    ¯n n|‘ŒS rK   rK   )r›   ÚlrÓ   rÔ   s     €€r&   r�   z)FixedLocator.__call__.<locals>.<listcomp>.  s.   ø€ Ð@Ð@Ð@˜q°"¸°-°-²-°-¸R²-°-°-°-°-˜°-°-°-r(   r   )Úsortedr   rÒ   rÚ   r³   )r/   rÓ   rÔ   rÕ   s    `` r&   r?   zFixedLocator.__call__,  sU   øø€ Ý˜˜R˜Ñ!Ô!‰ˆˆBÝŒxÐ@Ð@Ð@Ð@Ð@ D¤JÐ@Ñ@Ô@ÑAÔAˆØ•S˜‘Y”Y Ð!Ð!r(   N©rG   rH   rI   r0   r?   rK   r(   r&   rØ   rØ   (  s2   € € € € € ðð ð ð"ð "ð "ð "ð "r(   rØ   c                   ó   — e Zd Zdd„Zd„ ZdS )rh   Tc                 ón   — t          j        |d¬¦  «        | _        | j                             ¦   «          d S )NF)ÚuseMathTextÚ	useOffset)ÚmtickerÚScalarFormatterÚ_fmtrÍ   )r/   râ   s     r&   r0   zFormatterPrettyPrint.__init__5  s:   € ÝÔ+Ø#¨uð6ñ 6ô 6ˆŒ	àŒ	×#Ò#Ñ%Ô%Ð%Ð%Ð%r(   c                 ó6   — | j                              |¦  «        S rW   )ræ   Úformat_ticks)r/   r“   ÚfactorrY   s       r&   r?   zFormatterPrettyPrint.__call__:  s   € ØŒy×%Ò% fÑ-Ô-Ð-r(   N)Trß   rK   r(   r&   rh   rh   4  s7   € € € € € ð&ð &ð &ð &ð
.ð .ð .ð .ð .r(   rh   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚDictFormatterNc                 ód   •— t          ¦   «                              ¦   «          || _        || _        dS )zq
        format_dict : dictionary for format strings to be used.
        formatter : fall-back formatter
        N)rP   r0   Ú_format_dictÚ_fallback_formatter)r/   Úformat_dictÚ	formatterrU   s      €r&   r0   zDictFormatter.__init__?  s1   ø€ õ
 	‰Œ×ÒÑÔÐØ'ˆÔØ#,ˆÔ Ð Ð r(   c                 ó    ‡ — ‰ j         r‰                       |||¦  «        }ndgt          |¦  «        z  }ˆ fd„t          ||¦  «        D ¦   «         S )zG
        factor is ignored if value is found in the dictionary
        Ú c                 óL   •— g | ] \  }}‰j                              ||¦  «        ‘Œ!S rK   )rí   Úget)r›   rÃ   r#   r/   s      €r&   r�   z*DictFormatter.__call__.<locals>.<listcomp>Q  s@   ø€ ð ;ð ;ð ;Ù�A�qð Ô!×%Ò% a¨Ñ+Ô+ð ;ð ;ð ;r(   )rî   r³   r¥   )r/   r“   ré   rY   Úfallback_stringss   `    r&   r?   zDictFormatter.__call__H  s{   ø€ ð Ô#ð 	2Ø#×7Ò7Ø˜6 6ñ +ô  +ÐÐð !#˜t¥c¨&¡k¤kÑ1Ðð;ð ;ð ;ð ;Ý Ð(8Ñ9Ô9ð;ñ ;ô ;ð 	;r(   rW   rÖ   rb   s   @r&   rë   rë   >  sL   ø€ € € € € ð-ð -ð -ð -ð -ð -ð
;ð 
;ð 
;ð 
;ð 
;ð 
;ð 
;r(   rë   )Únumpyr   Ú
matplotlibr   rä   Úmatplotlib.transformsr   r   r'   r*   rM   rd   rg   rØ   rh   rë   rK   r(   r&   ú<module>rù      s†  ðØ Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ð'ð 'ð 'ðT+>ð +>ð +>ð +>ð +>ñ +>ô +>ð +>ð\9ð 9ð 9ð 9ð 9�yñ 9ô 9ð 9ð8ZCð ZCð ZCð ZCð ZCñ ZCô ZCð ZCðz,ð ,ð ,ð ,ð ,�'Ô%ñ ,ô ,ð ,ð "ð "ð "ð "ð "ñ "ô "ð "ð.ð .ð .ð .ð .ñ .ô .ð .ð;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;r(   