o
    U=ºiá}  ã                   @   sò  d Z ddlmZ ejZddlZddlZddlZddlm	Z	 ddlm
Z
 ddlT g d¢Zd	Zg Zi ai Zi d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“Zi d
d“dd“dd“dd“dd“dd“dd “dd!“dd"“dd#“dd$“dd$“dd%“dd&“dd&“dd“ZerÒi d
d“dd“dd'“dd“dd“dd“dd “dd!“dd"“dd#“dd$“d(d)“dd*“d+d,“dd%“dd&“dd&“ddi¥Zi d
d-“dd.“dd-“dd/“dd/“dd0“dd1“dd2“dd3“dd4“dd5“dd6“dd7“dd8“dd8“dd9“Ze�r@i d
d-“dd.“dd:“dd0“dd;“dd0“dd<“dd=“dd3“dd>“dd5“d(d6“dd?“d+d@“dd7“dd8“ddA“ddBi¥Zd-d.d0d0d<d3d5d6dCdCdCdDdEœZddd
dddFœddddddddd+dGœ	ddddddHœddddddFœddddddIœdJdidJd
idJdidJdidKœ	ae t¡Zg ZdLdM„ Zi d
dN“ddN“ddO“ddP“ddP“ddQ“ddR“ddS“ddP“ddT“ddU“d(dV“ddU“ddW“ddW“ddX“ddY“ZdZd[„ Zd\d]„ Zdrd^d_„Zd`da„ Zdbdc„ Zddde„ Z dfdg„ Z!dhdi„ Z"djdk„ Z#dsdldm„Z$dndo„ Z%dpdq„ Z&dS )ta)  

Copyright 1999,2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/05/06 10:57:33 $
Pearu Peterson

é   )Ú__version__é    N)Úmarkoutercomma)Úcb_rules)Ú*)ÚgetctypeÚgetstrlengthÚ
getarrdimsÚgetpydocsignÚgetarrdocsignÚgetinitÚsign2mapÚroutsign2mapÚmodsign2mapÚcb_sign2mapÚcb_routsign2mapÚcommon_sign2mapTÚdoubleÚfloatZlong_doubleÚcharÚintÚsigned_charZunsigned_charÚshortZunsigned_shortÚlongÚ	long_longZunsignedÚcomplex_floatÚcomplexÚcomplex_doubleÚcomplex_long_doubleÚstringZ
NPY_DOUBLEZ	NPY_FLOATZ
NPY_STRINGZ	NPY_UBYTEZNPY_BYTEZ	NPY_SHORTZ
NPY_USHORTZNPY_INTZNPY_UINTZNPY_LONGZ
NPY_CFLOATZNPY_CDOUBLEZNPY_LONGDOUBLEZunsigned_longZ	NPY_ULONGZNPY_LONGLONGZunsigned_long_longZNPY_ULONGLONGÚdÚfÚ1ÚbÚsÚwÚiÚuÚlÚLÚFÚDÚcÚgÚBÚhÚHÚIÚqÚQÚGÚSÚNÚy)r   r   r   r   r   r   r   r   r   r   r   r   )Ú Ú4Ú8Z12Ú16)	r8   r"   Ú2r9   r:   ú-1z-2z-4z-8)r8   r:   r;   Z24Ú32)r8   r"   r<   r9   r:   r8   )	ÚrealÚintegerr   ZcomplexkindÚlogicalzdouble complexzdouble precisionÚbyteÚ	characterc                 C   sÔ  t  t¡a| d u rd} tj | ¡sd S z½td | ¡ƒ t	| dƒ�}t
| ¡  ¡ i i ƒ}W d   ƒ n1 s5w   Y  | ¡ D ]\}}| ¡ D ]
}|| || ¡ < qF|| || ¡ < q>| ¡ D ]k}|tvrhi t|< ||  ¡ D ]Z}|| | tv r±|t| v r�td||t| | || | f ƒ || | t| |< td|||| | f ƒ t || | ¡ qntd|||| | || | tt ¡ ƒf ƒ qnq^tdƒ W d S  tyé } ztd| ƒ W Y d }~d S d }~ww )	Nz.f2py_f2cmapzReading f2cmap from {!r} ...
Úrz3	Warning: redefinition of {'%s':{'%s':'%s'->'%s'}}
z	Mapping "%s(kind=%s)" to "%s"
z5	Ignoring map {'%s':{'%s':'%s'}}: '%s' must be in %s
z1Successfully applied user defined f2cmap changes
z;Failed to apply user defined f2cmap changes: %s. Skipping.
)ÚcopyÚdeepcopyÚf2cmap_defaultÚ
f2cmap_allÚosÚpathÚisfileÚoutmessÚformatÚopenÚevalÚreadÚlowerÚitemsÚkeysÚc2py_mapÚf2cmap_mappedÚappendÚerrmessÚlistÚ	Exception)Zf2cmap_filer!   r    ÚkZd1Zk1Úmsg© r\   úZC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/f2py/capi_maps.pyÚload_f2cmap_file¯   sN   
ÿÿÿ"
ÿöÿ€ÿr^   z%gz%Lgz%dz%hhuz%hdz%huz%uz%ldz%luz(%g,%g)z	(%Lg,%Lg)ú%sc                 C   sÈ  d}t | ƒr)d| v r| d }n| d }|| d v r!t| d | ƒS td| ƒ |S t| ƒr/|S d| v rØ| d  ¡ tv rØ| d  ¡ }t| }|d }d| v rÖd	| d v rxz|| d d	  }W |S  tyw   td
| d d	| d d	 f ƒ Y |S w d| d v rÖ|d tv rŠt|d  }z|| d d  }W |S  tyÕ   |tv r¤t| }z|t| d d ƒ }W Y |S  tyÑ   td|| d d ||| d d t 	¡ f ƒ Y nw Y |S w |S t
| ƒsâtd|  ƒ |S )z
    Determines C type
    ÚvoidÚresultÚnameÚvarsú,getctype: function %s has no return value?!
Útypespecr8   Zkindselectorr   z$getctype: "%s %s %s" not supported.
Úkindz}getctype: "%s(kind=%s)" is mapped to C "%s" (to override define dict(%s = dict(%s="<C typespec>")) in %s/.f2py_f2cmap file).
z2getctype: No C-type found in "%s", assuming void.
N)Ú
isfunctionr   rW   ZissubroutinerQ   rH   ÚKeyErrorÚstrrI   ÚgetcwdÚ
isexternal)ÚvarÚctypeÚare   Zf2cmapr\   r\   r]   r   ñ   sh   
âìÿìôùÿ
ÿÿôþr   c                 C   sÐ   t | ƒr%d| v r| d }n| d }|| d v rt| d | ƒS td| ƒ t| ƒs1tdt| ƒ ƒ d}d| v rL| d }d|v rD|d }nd	|v rL|d	 }t d
|¡sXt d|¡rft| ƒrdtdt| ƒ ƒ d}|S )Nra   rb   rc   z0getstrlength: function %s has no return value?!
z;getstrlength: expected a signature of a string but got: %s
r"   Zcharselectorr   Úlenz\(\s*(\*|:)\s*\)z(\*|:)zMgetstrlength:intent(hide): expected a string with defined length but got: %s
r=   )Úisstringfunctionr   rW   ÚisstringÚreprÚreÚmatchÚisintent_hide)rl   rn   ro   r\   r\   r]   r      s2   

ÿ
ÿr   c           	      C   st  i }t |ƒrt|ƒst|ƒ|d< |d |d< d|d< |S t|ƒr.d|d< d|d< d|d< |S t|ƒ�r8t |d ¡}d |¡|d< ztt|d ƒƒ|d< W n	 tyV   Y nw d	 |¡|d< tt	|ƒƒ|d< tt	|ƒd
g ƒdd
… |d< t
t	|ƒƒD ]9}g }|| tv r‹|| g}ntD ]}t d| || ¡rž| |¡ q�|D ]}t |¡t | ¡kr³d||<  q{q¡q{d\|d< }|D ]}|d }|dvrÒd|d ||f |d< q½|d rá|d d d
… |d< d\|d< }|d D ]=}|d }|dv�rd|d ||f |d< qët|ƒ�rtd| ƒ d|d |df |d< që|�r(tdt| ƒt|ƒf ƒ që|d �r8|d d d
… |d< |S )NÚdimsÚsizer"   ÚrankÚ0r8   Ú	dimensionr   ú,éÿÿÿÿr   z	rank*[-1]z.*?\b%s\b.*)r8   r|   Zsetdims)r   ú:z(*)z(:)z%s#varname#_Dims[%d]=%s,Z	cbsetdimsz?getarrdims:warning: assumed shape array, using 0 instead of %r
r   z]getarrdims: If in call-back function: array argument %s must have bounded dimensions: got %s
)rq   Úisarrayr   ÚisscalarrE   Újoinrr   rO   rY   ro   ÚrangeÚdepargsrs   rt   rV   ÚindexÚisintent_inrL   rW   )	rn   rl   ÚverboseÚretÚdimr&   ÚvÚvar    r\   r\   r]   r	   <  sˆ   5Ì1
Ðÿ
€þÿ

ÿ€

ÿ
ÿ
ÿÿ€
r	   c                 C   sœ  t |ƒr(d|v r|d }n|d }||d v r t||d | ƒS td| ƒ dS | | }}d}t|ƒr6d}nt|ƒr<d}| }t|ƒrY|d	 D ]}|d d
… dkrX|d
d … } qYqFd}t|ƒ}	t|ƒrnt| |ƒ\}}
d|
 }t	|ƒršt|ƒr„d| |t
|	 t|	 |f }n
d| |t
|	 |f }d|t
|	 f }||fS t|ƒrÃt|ƒr­d| |t|ƒ|f }n
d| |t|ƒ|f }d|t|ƒf }||fS t|ƒ�r|d }tt|ƒƒ}d| ||t|	 d |¡|f }| |kröd| |t|	 d |¡f }||fS d||t|	 d |¡| f }||fS t|ƒ�rDd}| tv �r8t|  tv �r8dtt|   v �r8tt|   d }|| k�s6d| }nd}d| |f }|}||fS td|  ƒ ||fS )Nra   rb   rc   rd   ©r8   r8   r8   Úinputz	in/outputÚintenté   úout=z, optional\n    Default: %sz%s : %s rank-0 array(%s,'%s')%sz%s : %s %s%sz%s : %sz*%s : %s rank-0 array(string(len=%s),'c')%sz%s : %s string(len=%s)%sz%s : string(len=%s)rz   z.%s : %s rank-%s array('%s') with bounds (%s)%sr{   ú)%s : rank-%s array('%s') with bounds (%s)z8%s : rank-%s array('%s') with bounds (%s) and %s storageÚargnamez => %sz%s : call-back function%sz7getpydocsign: Could not resolve docsignature for "%s".
)rg   r
   rW   r„   Úisintent_inoutÚisintent_outr   Úhasinitvaluer   r   rT   Úc2pycode_maprq   r   r~   rr   ro   r€   rk   Úlcb_mapÚlcb2_map)rn   rl   ÚafÚsigZsigoutÚoptÚout_arZ   Úinitrm   Úshowinitr‡   rx   Zuar\   r\   r]   r
   y  s˜   

þÿ#Þÿÿ
æÿ
ýÿñÿ
ó*

þÿr
   c                 C   sˆ   t |ƒ}t|ƒrt|ƒsd| t|ƒf }|S t|ƒr'd| t| t| f }|S t|ƒrB|d }tt|ƒƒ}d| |t| d 	|¡f }|S )Nz%%s : rank-0 array(string(len=%s),'c')z%s : rank-0 array(%s,'%s')rz   r�   r{   )
r   rq   r~   r   r   rT   r”   rr   ro   r€   )rn   rl   rm   r˜   r‡   rx   r\   r\   r]   r   Ã  s*   ÿö
ÿ	ùÿýr   c                 C   sD  t |ƒr	d\}}nd\}}t|ƒrž|d }|}t|ƒst|ƒrti }z1|d }d|v r<t|dd… ƒ d¡\|d< |d	< nt|i i ƒ}t|jƒt|j	ƒ|d< |d	< W n t
ya   td
|| f ƒ‚w t|ƒrpd|d |d	 f }||fS t |ƒrž|s~d\}}|d dkr�d|dd…  dd¡ }|d dkržd|dd…  }||fS )N)z""z''rŠ   ú=r{   r   r|   ú@,@úinit.rúinit.izMgetinit: expected complex number `(r,i)' but got `%s' as initial value of %r.z (capi_c.r=%s,capi_c.i=%s,capi_c)r   ú'z"%s"ú"z\"z'%s')rq   r“   Ú	iscomplexÚiscomplexarrayr   ÚsplitrO   ri   r?   ÚimagrY   Ú
ValueErrorr~   Úreplace)rn   rl   r›   rœ   r†   rˆ   r\   r\   r]   r   Õ  sJ   

ÿÿ€
ÿÿÿ	ùr   c                 C   sr  | }t |ƒr|d D ]}|dd… dkr|dd… } qq
| |t|ƒdœ}g }t ¡ D ]\}}||ƒr:| d| ¡ q+|rEd |¡|d< nd|d< t|ƒrRd	|d
< n|d tv rat|d  |d
< nd|d
< t| |ƒ\|d< |d< t	|ƒr�t
|ƒr�t|ƒs�t|d dd… ƒ d¡\|d< |d< t|ƒrÚ| |d< | tv rÊt|  |d< tt|   d |d< tt|   d |d< tt|   d |d< tt|   d |d< n| |d< td| tt ¡ ƒf ƒ t|ƒrät|ƒ|d< t|ƒr÷t|t| |ƒƒ}t |d ¡}|d tv �rt|d  |d< t|ƒ�r÷g t‘d ‘t ‘d!‘t‘d"‘t‘d#‘t‘d$‘t‘d%‘t
‘d&‘tt t!t
ƒƒ‘d'‘t‘d(‘t‘d)‘t"‘d*‘t#‘d+‘t$‘d,‘tt%t!t$ƒƒ‘d-‘t‘d.‘t&‘d.‘t'‘d/‘}	g }
t(d0t)|	ƒd1ƒD ]}|	| |ƒ�rw|
 |	|d  ¡ �qet|ƒ�r‰|
 d2| |d f ¡ t|ƒ�r¢d3 t*d4d5„ |d |ƒ¡}|
 d6| ¡ t|ƒ�r¶d7| |d d3 |
¡f |d8< nd9|d | |d d3 |
¡f |d8< t |ƒ�rß|d t+v �rßd:| t+|d  f |d;< t|ƒ�rìd<| | f |d;< t|ƒ�r÷d=|  |d;< |d t+v �rd>| t+|d  f |d?< d@t+|d   |dA< t|ƒ�r!dB| | f |d?< t,| |ƒ\|dC< |dD< t-|ƒ�r7|dE |dE< |S )Fz†
    varname,ctype,atype
    init,init.r,init.i,pytype
    vardebuginfo,vardebugshowvalue,varshowvalue
    varrformat

    intent
    rŒ   Nr�   rŽ   )ÚvarnameZ
outvarnamerm   zF2PY_%sú|ZF2PY_INTENT_INr6   Z
varrformatrm   ÚOr›   rœ   r   r|   rž   rŸ   r    Z	cbnamekeyZcbnameÚ
maxnofargsÚ
nofoptargsZdocstrZcbdocstrZlatexdocstrZcblatexdocstrz5sign2map: Confused: external %s is not in lcb_map%s.
Úlengthrz   Úatyper‹   ÚoutputZinoutputÚrequiredÚoptionalÚhiddenzcomplex scalarZscalarr   Úarrayzcomplex arrayzstring arrayzcomplex functionÚfunctionÚcallbackZ	auxiliaryr   é   zslen(%s)=%sr{   c                 S   s   d| |f S )Nz%s|%sr\   )Úxr7   r\   r\   r]   Ú<lambda>E  s    zsign2map.<locals>.<lambda>zdims(%s)zdebug-capi:%s=>%s:%sZvardebuginfozdebug-capi:%s %s=%s:%súdebug-capi:%s=%sZvardebugshowvalueú"debug-capi:slen(%s)=%%d %s=\"%%s\"zdebug-capi:%s=%%pz#name#:%s=%sZvarshowvaluer_   Úshowvalueformatz#name#:slen(%s)=%%d %s=\"%%s\"Ú	pydocsignÚpydocsignoutÚnote).r’   r   Zisintent_dictrR   rV   r€   r~   Úc2buildvalue_mapr   r“   r£   r   r¥   rk   r•   r–   rW   rX   rS   rq   r   Ú
dictappendr	   rE   Ú
c2capi_mapÚ	debugcapir„   r‘   Z
isrequiredÚ
isoptionalru   Zl_andr   Zl_notr¤   ÚisstringarrayÚiscomplexfunctionrg   Úisintent_callbackZisintent_auxr�   ro   ÚmapÚcformat_mapr
   Úhasnote)rn   rl   rš   rZ   r†   Zintent_flagsr!   r$   r‡   ZilZrlr&   Zddimr\   r\   r]   r   ø  s(  	þ€
ÿÿÿ
ÿÿÿÿþþþþýýüüûûûûúúúúùùøø	÷	÷
ö
öõõ€

ÿ
ÿ
ÿ

ÿ

ÿ


r   c           	      C   sæ  | d }t | ƒ}|| dd¡| ¡ | ¡ t|ƒtd| ƒ|| ¡ t| ƒp%dt| ƒp*dt| ƒp/ddœ}d|v r;d|d< nd|d< d|v rHd	|d
< nd
|d
< i ad| v r™| d  	¡ D ]V}|t
jv r˜t
j| D ]3}|d }d| d | v r‘| d | d  	¡ D ]}| d | d | |d kr�|} q‘q||d t|< qdqXd| v r¯| d r¯td|d t| d ƒf ƒ t| tƒpµd|d< t| ƒ�rad| v rÆ| d }n| d }||d< t|| ƒ\|d< |d< t| d | ƒ|d< t| ƒrú| d | d |d< dg| d | d< |d tv �r
t|d  |d< nd|d< tdt|d ƒ ƒ t| ƒ�r=|d tv �r0d|t|d  f |d< t| ƒ�r=d ||f |d< t| ƒ�rat| d | ƒ|d!< |d! d"k�ratd#t| d ƒ ƒ d$|d!< t| ƒ�rq| d |d< dg| d< |S )&zV
    name,NAME,begintitle,endtitle
    rname,ctype,rformat
    routdebugshowvalue
    rb   Ú_ú\_ú	end of %sr8   )rb   ZtexnameZ
name_lowerÚNAMEÚ
begintitleÚendtitleZfortrannameZFORTRANNAMEZcallstatementÚusercodeÚ	usercode1Ú	F_FUNC_USÚF_FUNCZF_WRAPPEDFUNC_USZF_WRAPPEDFUNCZuser   rÈ   r   Z	externalszMroutsign2map: Confused: function %s has externals %s but no "use" statement.
Zcallprotoargumentra   Úrnamer½   r¾   rc   rm   r¿   Z
resultnoteúSee elsewhere.Zrformatr«   z.routsign2map: no c2buildvalue key for type %s
rº   Zroutdebugshowvaluer»   Zrlengthr=   zzroutsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.
Ú10N)Zgetfortrannamer¨   rQ   ÚupperÚgentitleZgetcallstatementÚgetusercodeÚgetusercode1r•   rS   r   Zcb_maprW   rr   Zgetcallprotoargumentrg   r
   r   ZhasresultnoterÀ   rÃ   rÉ   rp   r   rÊ   )	Úroutrb   Úfnamer†   r'   ZunÚlnrZ   rn   r\   r\   r]   r   a  s–   




ö


þ€ÿ


ÿ

ÿ

ÿ

ÿ

r   c                 C   sü   t | ƒr| d | d  ¡ | d  dd¡dœ}n| d | d  ¡ | d  dd¡dœ}t| ƒp.g |d< t| ƒr;| d |d< t| ƒp@d|d	< t| ƒpHd|d
< | d r\t| d d ƒpXd|d< nd|d< t| ƒped|d< d| v rr| d |d< d| v r|| d |d< |S )z
    modulename
    rb   rË   rÌ   )Zf90modulenameZF90MODULENAMEZtexf90modulename)Ú
modulenameZ
MODULENAMEZtexmodulenameZrestdocr¿   r8   rÑ   rÒ   Úbodyr   Zinterface_usercodeZpymethoddefZcoutputZf2py_wrapper_outputN)ÚismodulerØ   r¨   Z
getrestdocrÊ   rÚ   rÛ   Zgetpymethoddef)Úmr†   r\   r\   r]   r   ²  s.   
þ
þr   c                 C   s¬   d| i}|d |d< t |ƒ|d< |d tv rt|d  |d< |d tv r.dt|d   |d< t|ƒr:t|t| |ƒƒ}t| |ƒ\|d< |d< t|ƒrT|d	 |d	< d
g|d	< |S )Nr©   Z	varname_irm   r¯   r_   r¼   r½   r¾   r¿   rÖ   )r   rÂ   rÉ   r~   rÁ   r	   r
   rÊ   )rn   rl   rƒ   r†   r\   r\   r]   r   Ï  s   
r   c                 C   sŠ  d| d |f ddœ}t | ƒr0d| d v rd}nd}d|| d  ¡ | d  ¡ f |d	< d
|d< n
|d |d	< d|d< | d |d< t|d ƒ|d< td|d  ƒ|d< t| ƒ|d< d|d< |d dkrgd|d< n|d |d< |d dkr€t| ƒr|d|d< nd|d< |d tv r�dt|d   |d< t| ƒršt| ƒ|d< t	| ƒrÞd| v r§| d }n| d }t
| d | ƒrÆ| d | d |d< dg| d | d< ||d< t|| ƒ\|d< |d < t| ƒrÝd!|d< nt
| ƒrí| d |d< dg| d< d"}d"}d#| v �rd| v �r| d# D ]}| d | }tttƒ|ƒ�r|d$ }t|ƒ�r|d$ }qÿt|ƒ|d%< t|ƒ|d&< t
| ƒ�rCt	| ƒ�rCd| v �rC| d |d'< dg| d< |S ))z\
    name,begintitle,endtitle,argname
    ctype,rctype,maxnofargs,nofoptargs,returncptr
    zcb_%s_in_%srb   r8   )rb   Ú
returncptrrË   rÓ   rÔ   z	%s(%s,%s)ZcallbacknameZexternZstaticr�   rÏ   rÍ   rÐ   rm   r`   Zrctyper   z3
#ifdef F2PY_CB_RETURNCOMPLEX
return_value=
#endif
rã   zreturn_value=r_   r¼   Z	strlengthra   rc   r¿   rÖ   rÕ   r½   r¾   z8
#ifdef F2PY_CB_RETURNCOMPLEX
#ctype#
#else
void
#endif
r   Úargsr   r¬   r­   ZroutnoteN)rÇ   rQ   rØ   rÙ   r   rÆ   rÉ   rp   r   rg   rÊ   r
   Zl_orr„   r‘   rÄ   rr   )rÜ   Zumr†   rÔ   rn   Znofargsr­   rl   r\   r\   r]   r   à  s~   ÿ

þÿ



€

€
r   c                 C   sÖ   | t |ƒdœ}t|ƒrd|d< |d tv rt|d  |d< |d tv r-dt|d   |d< t|ƒr:t|t| |ƒƒ}nt|ƒrHt|ƒ|d< d|d	< t	| |ƒ\|d
< |d< t
|ƒrb|d |d< dg|d< t| |ƒ|d< |S )N)r©   rm   r   rm   r¯   r_   r¼   rw   r"   rx   r½   r¾   r¿   rÖ   Z	arrdocstr)r   rÅ   rÂ   rÉ   r~   rÁ   r	   rq   r   r
   rÊ   r   )rn   rl   r†   r\   r\   r]   r   2  s$   
r   )r   )N)'Ú__doc__r8   r   ÚversionZf2py_versionrE   rs   rI   Zcrackfortranr   r   ZauxfuncsÚ__all__Zusing_newcorer‚   r•   r–   rT   rÂ   r”   rÀ   rH   rF   rG   rU   r^   rÉ   r   r   r	   r
   r   r   r   r   r   r   r   r   r\   r\   r\   r]   Ú<module>   s  ÿþýüûúùø	÷
öõôóòñÿþýüûúùø	÷
öõôóòñÿþýüûúùø	÷
öõôóòñðïÿþýüûúùø	÷
öõôóòñÿþýüûúùø	÷
öõôóòñðïõÿýþþÿï
,ÿþýüûúùø	÷
öõôóòñð/
=J#iQ
R