§
    ‡Ûg¶1  ã                   óà   — d Z ddlZddlmZ ddlZddlZddlm	Z	 ddl
mZmZ ddlmZmZ ddlmZ dd	lmZ d
„ Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ de¦  «        ZdS )z/
An experimental support for curvilinear grid.
é    N)Úchain)ÚPath)ÚAffine2DÚIdentityTransformé   )ÚAxisArtistHelperÚGridHelperBase)Ú
AxisArtist)Ú
GridFinderc                 ó:  — t          j        t          ¦  «        j        dz  } | ||¦  «        }t	          |¦  «        \  }}||z
  }	||z
  }
t          j        ddg|
|	k    ¦  «        t          j        |t          j        |	|
¦  «        ¦  «        z  } | ||z   |¦  «        }t	          |¦  «        \  }}||z
  }||z
  }t          j        ddg||k    ¦  «        t          j        |t          j        ||¦  «        ¦  «        z  } | |||z   ¦  «        }|||z
  |z  ||z
  |z  fS )zÈ
    Compute *func* and its derivatives along x and y at positions *xs*, *ys*,
    while ensuring that finite difference calculations don't try to evaluate
    values outside of *xlims*, *ylims*.
    g      à?éÿÿÿÿr   )ÚnpÚfinfoÚfloatÚepsÚsortedÚtakeÚminimumÚmaximum)ÚfuncÚxsÚysÚxlimsÚylimsr   ÚvalÚxloÚxhiÚdxloÚdxhiÚxepsÚval_dxÚyloÚyhiÚdyloÚdyhiÚyepsÚval_dys                      úe/granary/edev/quantum/lib/python3.11/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.pyÚ_value_and_jacobianr)      s'  € õ Œ(•5‰/Œ/Ô
 #Ñ
&€CØ
ˆ$ˆr�2‰,Œ,€Cõ �e‰}Œ}�H€CˆØ�‰8€DØ�‰8€DÝŒG�R˜�G˜T Tš\Ñ*Ô*ÝŒj˜�bœj¨¨tÑ4Ô4Ñ5Ô5ñ6€DàˆT�"�t‘)˜RÑ Ô €FÝ�e‰}Œ}�H€CˆØ�‰8€DØ�‰8€DÝŒG�R˜�G˜T Tš\Ñ*Ô*ÝŒj˜�bœj¨¨tÑ4Ô4Ñ5Ô5ñ6€DàˆT�"�b˜4‘iÑ Ô €FØ�&˜3‘, $Ñ&¨°#©¸Ñ(=Ð>Ð>ó    c                   ó6   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperz(
    Helper class for a fixed axis.
    Nc                 óˆ   •— t          ¦   «                              |¬¦  «         || _        |€| j        }|| _        || _        dS )ú}
        nth_coord = along which coordinate value varies.
         nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
        )ÚlocN)ÚsuperÚ__init__Úgrid_helperÚ	nth_coordÚnth_coord_ticksÚside)Úselfr2   r5   r4   Ú	__class__s       €r(   r1   zFixedAxisArtistHelper.__init__0   sH   ø€ õ 	‰Œ×Ò˜TÐÑ"Ô"Ð"à&ˆÔØÐ"Ø"œnˆOØ.ˆÔàˆŒ	ˆ	ˆ	r*   c                 ó:   — | j                              |¦  «         d S ©N)r2   Ú
update_lim©r6   Úaxess     r(   r:   z FixedAxisArtistHelper.update_lim?   s   € ØÔ×#Ò# DÑ)Ô)Ð)Ð)Ð)r*   c                 ó   — |j         S r9   ©Ú	transDatar;   s     r(   Úget_tick_transformz(FixedAxisArtistHelper.get_tick_transformB   ó
   € ØŒ~Ðr*   c                 óp  — | j         dk    r|                     ¦   «         n|                     ¦   «         \  }}||k    rdddddœ| j                 }n| j        }| j        }|                     | j        |¦  «        }|                     d| j        z
  |d¬	¦  «        }t          ||¦  «        t          g ¦  «        fS )
z tick_loc, tick_angle, tick_labelr   ÚrightÚleftÚbottomÚtop)rD   rC   rF   rE   r   T)Úminor)	r3   Úget_ylimÚget_xlimr5   r2   Úget_tick_iteratorr4   r   Úiter)r6   r<   Úv1Úv2r5   ÚgÚti1Úti2s           r(   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iteratorsE   s»   € à$(¤N°aÒ$7Ð$7�—’‘”�¸T¿]º]¹_¼_‰ˆˆBØ�Š7ˆ7Ø#¨fØ#¨uð6ð 6Ø6:´iôAˆDˆDð ”9ˆDØÔˆØ×!Ò! $Ô"6¸Ñ=Ô=ˆØ×!Ò! ! DÔ$8Ñ"8¸$ÀdÐ!ÑKÔKˆÝ�S˜#‰Œ¥ R¡¤Ð(Ð(r*   r9   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   r:   r@   rQ   Ú__classcell__©r7   s   @r(   r,   r,   +   st   ø€ € € € € ðð ðð ð ð ð ð ð*ð *ð *ðð ð ð)ð )ð )ð )ð )ð )ð )r*   r,   c                   óP   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zˆ xZS )ÚFloatingAxisArtistHelperNc                 ó²   •— t          ¦   «                              ||¦  «         || _        || _        t          j         t          j        f| _        d| _        dS )r.   éd   N)r0   r1   Úvaluer2   r   ÚinfÚ	_extremesÚ_line_num_points)r6   r2   r3   r\   Úaxis_directionr7   s        €r(   r1   z!FloatingAxisArtistHelper.__init__T   sM   ø€ õ
 	‰Œ×Ò˜ EÑ*Ô*Ð*ØˆŒ
Ø&ˆÔÝœ&˜¥"¤&˜ˆŒØ #ˆÔÐÐr*   c                 óR   — |€t           j         }|€t           j        }||f| _        d S r9   )r   r]   r^   )r6   Úe1Úe2s      r(   Úset_extremesz%FloatingAxisArtistHelper.set_extremes_   s+   € Øˆ:Ý”&�ˆBØˆ:Ý”ˆBØ˜R˜ˆŒˆˆr*   c           	      ól  — | j                              |¦  «         |                     ¦   «         \  }}|                     ¦   «         \  }}| j         j        }|                     |j        ||||¦  «        }|\  }}	}
}| j        \  }}| j        dk    r!t          ||
¦  «        }
t          ||¦  «        }n+| j        dk    r t          ||¦  «        }t          ||	¦  «        }	|                     ||	¦  «        \  }}}|                     |
|¦  «        \  }}}| j        dk    rTt          j        | j        | j        ¦  «        }t          j        |
|| j        ¦  «        }|                     ||¦  «        \  }}n^| j        dk    rSt          j        ||	| j        ¦  «        }t          j        | j        | j        ¦  «        }|                     ||¦  «        \  }}||	|
|f||t          j        |¦  «        f||t          j        |¦  «        f|                     d||¦  «        |                     d||¦  «        ||fdœ| _        d S )Nr   r   rE   )ÚextremesÚlon_infoÚlat_infoÚ
lon_labelsÚ
lat_labelsÚline_xy)r2   r:   rI   rH   Úgrid_finderÚextreme_finderÚinv_transform_xyr^   r3   ÚmaxÚminÚgrid_locator1Úgrid_locator2r   Úfullr_   r\   ÚlinspaceÚtransform_xyÚasarrayÚtick_formatter1Útick_formatter2Ú
_grid_info)r6   r<   Úx1Úx2Úy1Úy2rl   rf   Úlon_minÚlon_maxÚlat_minÚlat_maxÚe_minÚe_maxÚlon_levsÚlon_nÚ
lon_factorÚlat_levsÚlat_nÚ
lat_factorÚxx0Úyy0ÚxxÚyys                           r(   r:   z#FloatingAxisArtistHelper.update_limf   sG  € ØÔ×#Ò# DÑ)Ô)Ð)à—’‘”‰ˆˆBØ—’‘”‰ˆˆBØÔ&Ô2ˆØ×-Ò-¨kÔ.JØ.0°"°b¸"ñ>ô >ˆð .6Ñ*ˆ�˜' 7Ø”~‰ˆˆuØŒ>˜QÒÐÝ˜% Ñ)Ô)ˆGÝ˜% Ñ)Ô)ˆGˆGØŒ^˜qÒ Ð Ý˜% Ñ)Ô)ˆGÝ˜% Ñ)Ô)ˆGð ×%Ò% g¨wÑ7Ô7ñ 	$ˆ�%˜ð ×%Ò% g¨wÑ7Ô7ñ 	$ˆ�%˜ð Œ>˜QÒÐÝ”'˜$Ô/°´Ñ<Ô<ˆCÝ”+˜g w°Ô0EÑFÔFˆCØ ×-Ò-¨c°3Ñ7Ô7‰FˆB��ØŒ^˜qÒ Ð Ý”+˜g w°Ô0EÑFÔFˆCÝ”'˜$Ô/°´Ñ<Ô<ˆCØ ×-Ò-¨c°3Ñ7Ô7‰FˆB�ð ! '¨7°GÐ<Ø! 5­"¬*°ZÑ*@Ô*@ÐAØ! 5­"¬*°ZÑ*@Ô*@ÐAØ%×5Ò5Ø˜* hñ0ô 0à%×5Ò5Ø˜* hñ0ô 0à˜B�xð	
ð 	
ˆŒˆˆr*   c                 ó   — t          ¦   «         S r9   )r   r;   s     r(   Úget_axislabel_transformz0FloatingAxisArtistHelper.get_axislabel_transform‘   s   € Ý‰zŒzÐr*   c           	      óþ  ‡ ‡— ˆˆ fd„}‰ j         d         \  }}}}‰ j        dk    r‰ j        }||z   dz  }n‰ j        dk    r||z   dz  }‰ j        }t          |||||f||f¦  «        \  }	}
}‰j                             ¦   «                              |	¦  «        }d|d         cxk    rdk    rSn nPd|d         cxk    rdk    r=n n:||
g‰ j                 }|	t          j        t          j	        |d d d…         Ž ¦  «        fS dS )Nc                 óˆ   •— ‰j         j                             ¦   «         ‰j        z   }|                     | |g¦  «        j        S r9   )r2   rl   Úget_transformr?   Ú	transformÚT©ÚxÚyÚtrfr<   r6   s      €€r(   Útrf_xyz@FloatingAxisArtistHelper.get_axislabel_pos_angle.<locals>.trf_xy•   s:   ø€ ØÔ"Ô.×<Ò<Ñ>Ô>ÀÄÑOˆCØ—=’= ! Q Ñ(Ô(Ô*Ð*r*   rf   r   é   r   r   )NN)
ry   r3   r\   r)   Ú	transAxesÚinvertedr“   r   Úrad2degÚarctan2)r6   r<   r™   ÚxminÚxmaxÚyminÚymaxrŠ   r‹   Úxy1Údxy1_dxÚdxy1_dyÚpÚds   ``            r(   Úget_axislabel_pos_anglez0FloatingAxisArtistHelper.get_axislabel_pos_angle”   s>  øø€ ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð "&¤°Ô!<Ñˆˆd�D˜$ØŒ>˜QÒÐØ”*ˆCØ˜$‘; !Ñ#ˆCˆCØŒ^˜qÒ Ð Ø˜$‘; !Ñ#ˆCØ”*ˆCÝ 3Ø�C˜˜t T˜l¨T°4¨Lñ!:ô !:ÑˆˆW�gàŒN×#Ò#Ñ%Ô%×/Ò/°Ñ4Ô4ˆØ��!”ˆ>ˆ>Š>ˆ>˜Š>ˆ>ˆ>ˆ>ˆ>˜a 1 Q¤4˜n˜nšn˜n¨1šn˜n˜n˜n˜nØ˜'Ð" 4¤>Ô2ˆAØ�œ
¥2¤:¨q°°°2°¬wÐ#7Ñ8Ô8Ð8Ð8à�:r*   c                 ó   — t          ¦   «         S r9   )r   r;   s     r(   r@   z+FloatingAxisArtistHelper.get_tick_transform©   s   € Ý Ñ"Ô"Ð"r*   c                 óÔ  ‡ ‡‡‡‡‡‡‡‡— ‰ j         d         \  }}}||z  }‰ j         d         \  }}}||z  }	‰ j        \  }
}ˆˆ fd„}‰ j        dk    r_|
|k    ||k    z  }t          |‰ j        ||         t
          j         t
          j        f|
|f¦  «        \  \  ŠŠ\  }}\  }}‰ j         d         Šni‰ j        dk    r^|
|	k    |	|k    z  }t          ||	|         ‰ j        t
          j         t
          j        f|
|f¦  «        \  \  ŠŠ\  }}\  }}‰ j         d         Šd„ t          ‰|¦  «        D ¦   «         Št          j        ||¦  «        Št          j        ||¦  «        Š|dk    |dk    z  }‰|         t
          j	        d	z  z   ‰|<   ‰  
                    ‰¦  «        ‰j        z
  Št          j        t          j        j        d
¦  «        Šˆˆˆˆˆˆˆfd„} |¦   «         t#          g ¦  «        fS )z9tick_loc, tick_angle, tick_label, (optionally) tick_labelrh   rg   c                 óÎ   •— ‰j         j                             ¦   «         ‰j        z   }|                     t          j        t          j        | |¦  «        ¦  «        ¦  «        j        S r9   )	r2   rl   r’   r?   r“   r   Úcolumn_stackÚbroadcast_arraysr”   r•   s      €€r(   r™   z;FloatingAxisArtistHelper.get_tick_iterators.<locals>.trf_xy·   sM   ø€ ØÔ"Ô.×<Ò<Ñ>Ô>ÀÄÑOˆCØ—=’=¥¤µÔ1DÀQÈÑ1JÔ1JÑ!KÔ!KÑLÔLÔNÐNr*   r   rj   r   ri   c                 ó   — g | ]	\  }}|¯|‘Œ
S © r¯   )Ú.0ÚlÚms      r(   ú
<listcomp>z?FloatingAxisArtistHelper.get_tick_iterators.<locals>.<listcomp>È   s!   € Ð7Ð7Ð7™˜˜1°QÐ7�!Ð7Ð7Ð7r*   rš   )r   r   c               3   óö   •K  — t          ‰‰‰‰‰	¦  «        D ]a\  } }}}}‰
                     | |f¦  «        } ‰|d         ¦  «        r1 ‰|d         ¦  «        r | |ggt          j        ||g¦  «        ¢|‘R V — Œbd S )Nr   r   )Úzipr“   r   r�   )r–   r—   ÚnormalÚtangentÚlabÚc2Úangle_normalÚangle_tangentÚin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r(   Úf1z7FloatingAxisArtistHelper.get_tick_iterators.<locals>.f1Ó   s¯   øè è € å˜3  \°=À&ÑIÔIðFð FÑ*��1�f˜g sà!×+Ò+¨Q°¨FÑ3Ô3�Ø�5˜˜Aœ‘<”<ð F E E¨"¨Q¬%¡L¤Lð FØ˜a˜&ÐE¥2¤:¨v°wÐ.?Ñ#@Ô#@ÐEÀ#ÐEÐEÐEÐEÐEøð	Fð Fr*   )ry   r^   r3   r)   r\   r   r]   rµ   rž   Úpir@   r›   Ú	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closerK   )r6   r<   r‡   rˆ   r‰   r‹   r„   r…   r†   rŠ   Úe0rb   r™   ÚmaskÚdxx1Údyy1Údxx2Údyy2ÚmmrÁ   rº   r»   r¼   r½   r¾   r¿   rÀ   s   ``                  @@@@@@@r(   rQ   z+FloatingAxisArtistHelper.get_tick_iterators¬   sS  øøøøøøøøø€ ð '+¤o°jÔ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*¤o°jÔ&AÑ#ˆ�%˜Ø˜Ñ#ˆà”‰ˆˆBð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð
 Œ>˜QÒÐØ˜#’I #¨¢)Ñ,ˆDÝ5HØ˜œ
 C¨¤Iµ´°½¼Ð/@À2ÀrÀ(ñ6Lô 6LÑ2‰JˆS�#™˜˜t¡l t¨Tà”_ \Ô2ˆFˆFàŒ^˜qÒ Ð Ø˜#’I #¨¢)Ñ,ˆDÝ5HØ˜˜Dœ	 4¤:µ´°½¼Ð/@À2ÀrÀ(ñ6Lô 6LÑ2‰JˆS�#™˜˜t¡l t¨Tà”_ \Ô2ˆFà7Ð7¥ F¨DÑ 1Ô 1Ð7Ñ7Ô7ˆå”z $¨Ñ-Ô-ˆÝœ
 4¨Ñ.Ô.ˆØ�aŠi˜D AšIÑ&ˆØ(¨Ô,­r¬u°q©yÑ8ˆ�RÑà×.Ò.¨tÑ4Ô4°t´~ÑEˆÝÔ!ÝŒNÔ3°Vñ=ô =ˆð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð ˆr‰tŒt•T˜"‘X”Xˆ~Ðr*   c                 ó   — |j         S r9   r>   r;   s     r(   Úget_line_transformz+FloatingAxisArtistHelper.get_line_transformÜ   rA   r*   c                 ó’   — |                       |¦  «         | j        d         \  }}t          t          j        ||g¦  «        ¦  «        S )Nrk   )r:   ry   r   r   r¬   )r6   r<   r–   r—   s       r(   Úget_linez!FloatingAxisArtistHelper.get_lineß   s@   € Ø�Š˜ÑÔÐØŒ˜yÔ)‰ˆˆ1Ý•B”O Q¨ FÑ+Ô+Ñ,Ô,Ð,r*   r9   )rR   rS   rT   r1   rd   r:   r�   r¨   r@   rQ   rÐ   rÒ   rV   rW   s   @r(   rY   rY   S   s·   ø€ € € € € ð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð ð  ð  ð)
ð )
ð )
ðVð ð ðð ð ð*#ð #ð #ð.ð .ð .ð`ð ð ð-ð -ð -ð -ð -ð -ð -r*   rY   c                   ód   ‡ — e Zd Z	 	 	 	 	 dˆ fd„	Zdd„Z	 	 	 	 dd„Z	 	 dd„Zd„ Zdd
„Zdd„Z	ˆ xZ
S )ÚGridHelperCurveLinearNc                 ó–   •— t          ¦   «                              ¦   «          d| _        || _        t	          ||||||¦  «        | _        dS )aÇ  
        aux_trans : a transform from the source (curved) coordinate to
        target (rectilinear) coordinate. An instance of MPL's Transform
        (inverse transform should be defined) or a tuple of two callable
        objects which defines the transform and its inverse. The callables
        need take two arguments of array of source coordinates and
        should return two target coordinates.

        e.g., ``x2, y2 = trans(x1, y1)``
        N)r0   r1   ry   Ú
_aux_transr   rl   )r6   Ú	aux_transrm   rq   rr   rw   rx   r7   s          €r(   r1   zGridHelperCurveLinear.__init__æ   sR   ø€ õ  	‰Œ×ÒÑÔÐØˆŒØ#ˆŒÝ% iØ&4Ø&3Ø&3Ø&5Ø&5ñ7ô 7ˆÔÐÐr*   c                 óp   — |�| j                              |¦  «          | j         j        di |¤Ž d | _        d S )Nr¯   )rl   Úupdate_transformÚupdateÚ_old_limits)r6   r×   Úkwargss      r(   Úupdate_grid_finderz(GridHelperCurveLinear.update_grid_finder   sI   € ØÐ ØÔ×-Ò-¨iÑ8Ô8Ð8ØˆÔÔÐ)Ð) &Ð)Ð)Ð)ØˆÔÐÐr*   c                 óh   — |€| j         }|€|}t          | ||¬¦  «        }t          |||¬¦  «        }|S )N)r4   )r`   )r<   r,   r
   )r6   r/   r3   r`   Úoffsetr<   Ú_helperÚaxislines           r(   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axis  sJ   € ð
 ˆ<Ø”9ˆDØÐ!Ø ˆNÝ'¨¨cÀ9ÐMÑMÔMˆÝ˜d G¸NÐKÑKÔKˆð ˆr*   rE   c                 óØ   — |€| j         }t          | |||¦  «        }t          ||¦  «        }|j                             d¦  «         |j                             |j         j        ¦  «         |S )NT)r<   rY   r
   ÚlineÚset_clip_onÚset_clip_boxÚbbox)r6   r3   r\   r<   r`   rà   rá   s          r(   Únew_floating_axisz'GridHelperCurveLinear.new_floating_axis  ss   € ð ˆ<Ø”9ˆDå*Ø�)˜U Nñ4ô 4ˆõ ˜d GÑ,Ô,ˆð 	Œ×!Ò! $Ñ'Ô'Ð'ØŒ×"Ò" 8¤=Ô#5Ñ6Ô6Ð6ð ˆr*   c                 óJ   — | j                              ||||¦  «        | _        d S r9   )rl   Úget_grid_infory   )r6   rz   r|   r{   r}   s        r(   Ú_update_gridz"GridHelperCurveLinear._update_grid1  s$   € ØÔ*×8Ò8¸¸RÀÀRÑHÔHˆŒˆˆr*   ÚmajorÚbothc                 óÆ   — g }|dv r+| j         d         d         D ]}|                     |¦  «         Œ|dv r+| j         d         d         D ]}|                     |¦  «         Œ|S )N)rí   r–   ÚlonÚlines)rí   r—   Úlat)ry   Úextend)r6   ÚwhichÚaxisÚ
grid_linesÚgls        r(   Úget_gridlinesz#GridHelperCurveLinear.get_gridlines4  s‡   € Øˆ
Ø�=Ð Ð Ø”o eÔ,¨WÔ5ð &ð &�Ø×!Ò! "Ñ%Ô%Ð%Ð%Ø�=Ð Ð Ø”o eÔ,¨WÔ5ð &ð &�Ø×!Ò! "Ñ%Ô%Ð%Ð%ØÐr*   Fc              #   óœ  K  — t          dddd¬¦  «        |         }ddg|         }|sSt          | j        |         d         |         | j        |         d         |         ¦  «        D ]\  \  }}}|}	||	||fV — Œd S t          | j        |         d         |         | j        |         d         |         ¦  «        D ]\  \  }}}|}	||	|dfV — Œd S )	NéZ   r   )rD   rC   rE   rF   rï   rñ   Ú	tick_locsÚtick_labelsÚ )Údictrµ   ry   )
r6   r3   Ú	axis_siderG   r»   Ú
lon_or_latÚxyÚar±   rº   s
             r(   rJ   z'GridHelperCurveLinear.get_tick_iterator>  s#  è è € õ  "¨B°q¸aÐ@Ñ@Ô@ÀÔKˆà˜U�^ IÔ.ˆ
Øð 	:Ý!Ø”O JÔ/°Ô<¸YÔGØ”O JÔ/°Ô>¸yÔIñKô Kð 9ð 9‘
‘��Q˜ð  !�Ø˜,¨°qÐ8Ð8Ð8Ð8Ð8ð	9ð 9õ "Ø”O JÔ/°Ô<¸YÔGØ”O JÔ/°Ô>¸yÔIñKô Kð :ð :‘
‘��Q˜ð  !�Ø˜,¨°rÐ9Ð9Ð9Ð9Ð9ð	:ð :r*   )NNNNNr9   )NNNN)NrE   )rì   rí   )F)rR   rS   rT   r1   rÝ   râ   rè   rë   r÷   rJ   rV   rW   s   @r(   rÔ   rÔ   å   sØ   ø€ € € € € à $Ø#Ø#Ø!%Ø!%ð7ð 7ð 7ð 7ð 7ð 7ð4 ð  ð  ð  ð "&Ø&*Ø"Ø ð	ð ð ð ð"  $Ø)1ðð ð ð ð8Ið Ið Iðð ð ð ð:ð :ð :ð :ð :ð :ð :ð :r*   rÔ   )rU   rÃ   Ú	itertoolsr   Únumpyr   Ú
matplotlibrÅ   Úmatplotlib.pathr   Úmatplotlib.transformsr   r   Ú	axislinesr   r	   Úaxis_artistr
   rl   r   r)   ÚFixedr,   ÚFloatingrY   rÔ   r¯   r*   r(   ú<module>r     s`  ððð ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð à Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #ð?ð ?ð ?ð2%)ð %)ð %)ð %)ð %)Ð,Ô2ñ %)ô %)ð %)ðPO-ð O-ð O-ð O-ð O-Ð/Ô8ñ O-ô O-ð O-ðdj:ð j:ð j:ð j:ð j:˜Nñ j:ô j:ð j:ð j:ð j:r*   