
    Rie1                       d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ i dd	 d
fgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgd d! d"fgd#d$ d%fgd&d' d(fgd)d* d+fgd,d- d.fgd/d0 d1fgd2d3 d(fgd4d5 d6fgd7d8 d9fgi d:d; d<fgd=d> d?fgd@dA dBfgdCdD dEfgdFdG dHfgdIdJ dKfgdLdM dNfgdOdP dQfgdRdS dTfgdUdV dWfgdXdY dZfgd[d\ d]fgd^d_ d^fgd`da d`fgdbdc ddfgdedf ddfgdgdh difgi djdk dlfgdmdn dofgdpdq drfgdsdt dofgdudv dwfgdxdy dzfgd{d| d}fgd~d dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgi dd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgddń dfgddȄ dfgdd˄ dfgi dd΄ dfgddЄ dfgddӄ dfgddք dfgddل dfgdd܄ dfgdd߄ dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgi dd d fgdd dfgdd dfgdd d	fgd
d dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd  d!fgd"d# d$fgd%d& d'fgd(d) d*fgd+d, d+fgd-d. d/fgd0 d1fgd2 d3fgd4Z G d5 d6e          Zd7 Zd8S (9  z
Mathematica code printer
    )annotations)Any)BasicExprFloat)default_sort_key)CodePrinter)
precedenceexpc                    dS NT xs    :lib/python3.11/site-packages/sympy/printing/mathematica.py<lambda>r          t     Explogc                    dS r   r   r   s    r   r   r      r   r   Logsinc                    dS r   r   r   s    r   r   r      r   r   Sincosc                    dS r   r   r   s    r   r   r      r   r   Costanc                    dS r   r   r   s    r   r   r      r   r   Tancotc                    dS r   r   r   s    r   r   r      r   r   Cotsecc                    dS r   r   r   s    r   r   r      r   r   Seccscc                    dS r   r   r   s    r   r   r      r   r   Cscasinc                    dS r   r   r   s    r   r   r           r   ArcSinacosc                    dS r   r   r   s    r   r   r      r-   r   ArcCosatanc                    dS r   r   r   s    r   r   r      r-   r   ArcTanacotc                    dS r   r   r   s    r   r   r      r-   r   ArcCotasecc                    dS r   r   r   s    r   r   r      r-   r   ArcSecacscc                    dS r   r   r   s    r   r   r      r-   r   ArcCscatan2c                     dS r   r   r   s    r   r   r          $ r   sinhc                    dS r   r   r   s    r   r   r      r-   r   Sinhcoshc                    dS r   r   r   s    r   r   r       r-   r   Coshtanhc                    dS r   r   r   s    r   r   r   !   r-   r   Tanhcothc                    dS r   r   r   s    r   r   r   "   r-   r   Cothsechc                    dS r   r   r   s    r   r   r   #   r-   r   Sechcschc                    dS r   r   r   s    r   r   r   $   r-   r   Cschasinhc                    dS r   r   r   s    r   r   r   %        r   ArcSinhacoshc                    dS r   r   r   s    r   r   r   &   rU   r   ArcCoshatanhc                    dS r   r   r   s    r   r   r   '   rU   r   ArcTanhacothc                    dS r   r   r   s    r   r   r   (   rU   r   ArcCothasechc                    dS r   r   r   s    r   r   r   )   rU   r   ArcSechacschc                    dS r   r   r   s    r   r   r   *   rU   r   ArcCschsincc                    dS r   r   r   s    r   r   r   +   r-   r   Sinc	conjugatec                    dS r   r   r   s    r   r   r   ,       T r   	ConjugateMaxc                     dS r   r   r   s    r   r   r   -   r-   r   Minc                     dS r   r   r   s    r   r   r   .   r-   r   erfc                    dS r   r   r   s    r   r   r   /   r   r   Erferf2c                     dS r   r   r   s    r   r   r   0   rU   r   erfcc                    dS r   r   r   s    r   r   r   1   r-   r   Erfcerfic                    dS r   r   r   s    r   r   r   2   r-   r   Erfierfinvc                    dS r   r   r   s    r   r   r   3   r@   r   
InverseErferfcinvc                    dS r   r   r   s    r   r   r   4       4 r   InverseErfcerf2invc                     dS r   r   r   s    r   r   r   5       D r   expintc                     dS r   r   r   s    r   r   r   6   r   r   ExpIntegralEEic                    dS r   r   r   s    r   r   r   7       d r   ExpIntegralEifresnelcc                    dS r   r   r   s    r   r   r   8   r   r   FresnelCfresnelsc                    dS r   r   r   s    r   r   r   9   r   r   FresnelSgammac                    dS r   r   r   s    r   r   r   :   rU   r   Gamma
uppergammac                     dS r   r   r   s    r   r   r   ;       t r   	polygammac                     dS r   r   r   s    r   r   r   <       d r   	PolyGammaloggammac                    dS r   r   r   s    r   r   r   =   r   r   LogGammabetac                     dS r   r   r   s    r   r   r   >   rU   r   BetaCic                    dS r   r   r   s    r   r   r   ?   r   r   CosIntegralSic                    dS r   r   r   s    r   r   r   @   r   r   SinIntegralChic                    dS r   r   r   s    r   r   r   A   r   r   CoshIntegralShic                    dS r   r   r   s    r   r   r   B   r   r   SinhIntegrallic                    dS r   r   r   s    r   r   r   C   r   r   LogIntegral	factorialc                    dS r   r   r   s    r   r   r   D   rk   r   	Factorial
factorial2c                    dS r   r   r   s    r   r   r   E   r   r   
Factorial2subfactorialc                    dS r   r   r   s    r   r   r   F        r   Subfactorialcatalanc                    dS r   r   r   s    r   r   r   G   r   r   CatalanNumberharmonicc                     dS r   r   r   s    r   r   r   H   rk   r   HarmonicNumberlucasc                    dS r   r   r   s    r   r   r   I   rU   r   LucasLRisingFactorialc                     dS r   r   r   s    r   r   r   J   s    D r   
PochhammerFallingFactorialc                     dS r   r   r   s    r   r   r   K   s    T r   FactorialPowerlaguerrec                     dS r   r   r   s    r   r   r   L   rk   r   	LaguerreLassoc_laguerrec                     dS r   r   r   s    r   r   r   M       4 r   hermitec                     dS r   r   r   s    r   r   r   N   r   r   HermiteHjacobic                     dS r   r   r   s    r   r   r   O   r   r   JacobiP
gegenbauerc                     dS r   r   r   s    r   r   r   P   r   r   GegenbauerC
chebyshevtc                     dS r   r   r   s    r   r   r   Q   r   r   
ChebyshevT
chebyshevuc                     dS r   r   r   s    r   r   r   R   r   r   
ChebyshevUlegendrec                     dS r   r   r   s    r   r   r   S   rk   r   	LegendrePassoc_legendrec                     dS r   r   r   s    r   r   r   T   r   r   mathieucc                     dS r   r   r   s    r   r   r   U   rk   r   MathieuCmathieusc                     dS r   r   r   s    r   r   r   V   rk   r   MathieuSmathieucprimec                     dS r   r   r   s    r   r   r   W       $ r   MathieuCPrimemathieusprimec                     dS r   r   r   s    r   r   r   X   r   r   MathieuSPrime	stieltjesc                    dS r   r   r   s    r   r   r   Y   rk   r   StieltjesGamma
elliptic_ec                     dS r   r   r   s    r   r   r   Z   r   r   	EllipticE
elliptic_fc                     dS r   r   r   s    r   r   r   [   r   r   
elliptic_kc                    dS r   r   r   s    r   r   r   \   r   r   	EllipticKelliptic_pic                     dS r   r   r   s    r   r   r   ]   r   r   
EllipticPizetac                     dS r   r   r   s    r   r   r   ^   rU   r   Zetadirichlet_etac                    dS r   r   r   s    r   r   r   _   s     r   DirichletEta
riemann_xic                    dS r   r   r   s    r   r   r   `   r   r   	RiemannXibesselic                     dS r   r   r   s    r   r   r   a   r   r   BesselIbesseljc                     dS r   r   r   s    r   r   r   b   r   r   BesselJbesselkc                     dS r   r   r   s    r   r   r   c   r   r   BesselKbesselyc                     dS r   r   r   s    r   r   r   d   r   r   BesselYhankel1c                     dS r   r   r   s    r   r   r   e   r   r   HankelH1hankel2c                     dS r   r   r   s    r   r   r   f   r   r   HankelH2airyaic                    dS r   r   r   s    r   r   r   g   r@   r   AiryAiairybic                    dS r   r   r   s    r   r   r   h   r@   r   AiryBiairyaiprimec                    dS r   r   r   s    r   r   r   i   r   r   AiryAiPrimeairybiprimec                    dS r   r   r   s    r   r   r   j   r   r   AiryBiPrimepolylogc                     dS r   r   r   s    r   r   r   k   r   r   PolyLoglerchphic                     dS r   r   r   s    r   r   r   l   rk   r   LerchPhigcdc                     dS r   r   r   s    r   r   r   m   r-   r   GCDlcmc                     dS r   r   r   s    r   r   r   n   r-   r   LCMjnc                     dS r   r   r   s    r   r   r   o   r   r   SphericalBesselJync                     dS r   r   r   s    r   r   r   p   r   r   SphericalBesselYhyperc                     dS r   r   r   s    r   r   r   q   r@   r   HypergeometricPFQmeijergc                     dS r   r   r   s    r   r   r   r   r   r   MeijerGappellf1c                     dS r   r   r   s    r   r   r   s   rk   r   AppellF1
DiracDeltac                    dS r   r   r   s    r   r   r   t   r   r   	Heavisidec                    dS r   r   r   s    r   r   r   u   rk   r   HeavisideThetac                     dS r   r   r   s    r   r   r   v   r   r   KroneckerDeltac                    dS r   r   r   s    r   r   r   w   r-   r   Sqrt)rH  sqrtc                  H    e Zd ZU dZdZdZdddi ddd	Zd
ed<    e            Z	ded<    e            Z
ded<   i fdZd Zd Z fdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ ZeZ eZ!d% Z"d& Z#d' Z$d( Z%d) Z&e&Z'd* Z(d+ Z)d, Z*d- Z+d. Z, xZ-S )/MCodePrinterz]A printer to convert Python expressions to
    strings of the Wolfram's Mathematica code
    _mcodezWolfram LanguageNauto   TF)order	full_prec	precisionuser_functionshumanallow_unknown_functionszdict[str, Any]_default_settingszset[tuple[Expr, Float]]_number_symbolsz
set[Basic]_not_supportedc                V   t          j        | |           t          t                    | _        |                    di                                           }|                                D ]#\  }}t          |t                    s	d |fg||<   $| j        	                    |           dS )z+Register function mappings supplied by userrT  c                     dS r   r   r   s    r   r   z'MCodePrinter.__init__.<locals>.<lambda>   s    D r   N)
r	   __init__dictknown_functionsgetcopyitems
isinstancelistupdate)selfsettings	userfuncskvs        r   r\  zMCodePrinter.__init__   s    T8,,,#O44LL!1266;;==	OO%% 	6 	6DAqa&& 6!0! 45	!##I.....r   c                    |S Nr   )re  liness     r   _format_codezMCodePrinter._format_code   s    r   c                    t          |          }|                     |j        |          d|                     |j        |          S )N^)r
   parenthesizebaser   )re  exprPRECs      r   
_print_PowzMCodePrinter._print_Pow   sL    $++DIt<<<<++DHd;;;= 	=r   c                    t          |          |                                \  }}t                                           |j        |           }|r*|dz  }|d                     fd|D                       z  }|S )N*z**c              3  D   K   | ]}                     |          V  d S rk  )rp  ).0ars  re  s     r   	<genexpr>z*MCodePrinter._print_Mul.<locals>.<genexpr>   s3      DDAT..q$77DDDDDDr   )r
   args_cncsuper
_print_Mulfuncjoin)re  rr  cncresrs  	__class__s   `    @r   r}  zMCodePrinter._print_Mul   s    $2gg  A// 	E3JC499DDDDDDDDDDDC
r   c                    |                      |j                  }|                      |j                  }|j        }d                    |||          S )Nz{} {} {})_printlhsrhsrel_opformat)re  rr  lhs_coderhs_codeops        r   _print_RelationalzMCodePrinter._print_Relational   sG    ;;tx((;;tx(([  2x888r   c                    dS )N0r   re  rr  s     r   _print_ZerozMCodePrinter._print_Zero       sr   c                    dS )N1r   r  s     r   
_print_OnezMCodePrinter._print_One   r  r   c                    dS )Nz-1r   r  s     r   _print_NegativeOnezMCodePrinter._print_NegativeOne       tr   c                    dS )Nz1/2r   r  s     r   _print_HalfzMCodePrinter._print_Half   s    ur   c                    dS )NIr   r  s     r   _print_ImaginaryUnitz!MCodePrinter._print_ImaginaryUnit   r  r   c                    dS )NInfinityr   r  s     r   _print_InfinityzMCodePrinter._print_Infinity   s    zr   c                    dS )Nz	-Infinityr   r  s     r   _print_NegativeInfinityz$MCodePrinter._print_NegativeInfinity   s    {r   c                    dS )NComplexInfinityr   r  s     r   _print_ComplexInfinityz#MCodePrinter._print_ComplexInfinity   s      r   c                    dS )NIndeterminater   r  s     r   
_print_NaNzMCodePrinter._print_NaN   s    r   c                    dS )NEr   r  s     r   _print_Exp1zMCodePrinter._print_Exp1   r  r   c                    dS )NPir   r  s     r   	_print_PizMCodePrinter._print_Pi   r  r   c                    dS )NGoldenRatior   r  s     r   _print_GoldenRatiozMCodePrinter._print_GoldenRatio   s    }r   c                x    |                     d          }t          |          }|                     ||          S )NT)r~  )expandr
   rp  )re  rr  expandedrs  s       r   _print_TribonacciConstantz&MCodePrinter._print_TribonacciConstant   s8    ;;D;))$  4000r   c                    dS )N
EulerGammar   r  s     r   _print_EulerGammazMCodePrinter._print_EulerGamma   s    |r   c                    dS )NCatalanr   r  s     r   _print_CatalanzMCodePrinter._print_Catalan   s    yr   c                R     dd                      fd|D                       z   dz   S )N{, c              3  B   K   | ]}                     |          V  d S rk  doprintrx  ry  re  s     r   rz  z+MCodePrinter._print_list.<locals>.<genexpr>   s-      ==1t||A======r   }r  r  s   ` r   _print_listzMCodePrinter._print_list   s4    TYY==========CCr   c                P    |                      |                                          S rk  r  tolistr  s     r   _print_ImmutableDenseMatrixz(MCodePrinter._print_ImmutableDenseMatrix       ||DKKMM***r   c                v      fdfd} fd}d                      |             |                      S )Nc                    d                                         | d         dz   | d         dz   f                              |                    S )N{} -> {}r      r  r  posvalre  s     r   
print_rulez=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_rule   sP    $$LL#a&(CF1H-..S0A0AC C Cr   c                     t                                                                          t                    } dd                    fd| D                       z   dz   S )N)keyr  r  c              3  6   K   | ]\  }} ||          V  d S rk  r   )rx  rh  ri  r  s      r   rz  zPMCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data.<locals>.<genexpr>   s3      ==tq!**Q**======r   r  )sortedtodokra  r   r  )ra  rr  r  s    r   
print_dataz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data   sc    4::<<--//5EFFFE		====u=====> r   c                 8                          j                  S rk  r  shaperr  re  s   r   
print_dimsz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dims   s    <<
+++r   SparseArray[{}, {}]r  )re  rr  r  r  r  s   ``  @r   _print_ImmutableSparseMatrixz)MCodePrinter._print_ImmutableSparseMatrix   s    	C 	C 	C 	C 	C	 	 	 	 	 		, 	, 	, 	, 	, 	, %++JJLL**,,GGGr   c                P    |                      |                                          S rk  r  r  s     r   _print_ImmutableDenseNDimArrayz+MCodePrinter._print_ImmutableDenseNDimArray   r  r   c                     d d  fdfd} fd}d                      |             |                      S )Nc                L    dd                     d | D                       z   dz   S )Nr  r  c              3     K   | ]}|V  d S rk  r   )rx  ry  s     r   rz  zZMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list.<locals>.<genexpr>  s"      ":":1":":":":":":r   r  r  )string_lists    r   print_string_listzGMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list  s-    ":":k":":"::::S@@r   c                 4    t          d | D                       S )zHelper function to change Python style indexing to
            Pathematica indexing.

            Python indexing (0, 1 ... n-1)
            -> Mathematica indexing (1, 2 ... n)
            c              3      K   | ]	}|d z   V  
dS )r  Nr   rx  is     r   rz  z]MCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index.<locals>.<genexpr>  s&      --1Q------r   )tuple)argss    r   to_mathematica_indexzJMCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index  s!     --------r   c                |    d                                         |                               |                    S )z.Helper function to print a rule of Mathematicar  r  r  s     r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_rule  s1    $$T\\#%6%6S8I8IJJJr   c                 ~      fdt           j                                                  D                       S )a/  Helper function to print data part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html

            ``data`` must be formatted with rule.
            c           	     Z    g | ]'\  }}                       |           |          (S r   )_get_tuple_index)rx  r  valuerr  r  r  s      r   
<listcomp>zTMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data.<locals>.<listcomp>  s]     F F F C ((4+@+@+E+EG  F F Fr   )r  _sparse_arrayra  )rr  r  r  r  s   r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data  sl     %$F F F F F F #));)A)A)C)C"D"DF F F  r   c                 8                          j                  S )a  Helper function to print dimensions part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html
            r  r  s   r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_dims"  s     <<
+++r   r  r  )re  rr  r  r  r  r  r  s   ``  @@@r   _print_ImmutableSparseNDimArrayz,MCodePrinter._print_ImmutableSparseNDimArray   s    	A 	A 	A	. 	. 	.	K 	K 	K 	K 	K	 	 	 	 	 	 	 	"	, 	, 	, 	, 	, 	, %++JJLL**,,GGGr   c                $    |j         j         j        v rM j        |j         j                 }|D ]2\  }} ||j         r#|d                     |j        d          dc S 3n|j         j         j        v rr j        |j         j                 \  }}                     |          rCt           fd|D                       r(                     |	                    |                    S |j         j        d                     |j        d          z  z   S )N[r  ]c              3  B   K   | ]}                     |          V  d S rk  )
_can_print)rx  fre  s     r   rz  z/MCodePrinter._print_Function.<locals>.<genexpr>7  s/      0Y0Y1C1C0Y0Y0Y0Y0Y0Yr   z[%s])
r~  __name__r^  r  	stringify_rewriteable_functionsr  allr  rewrite)re  rr  
cond_mfunccondmfunctarget_frequired_fss   `      r   _print_FunctionzMCodePrinter._print_Function.  s-   9!555-di.@AJ) O Oe4# O',uudnnTY.M.M.M.MNNNNOO Y4#>>>$($?	@R$S!Hkx(( ;S0Y0Y0Y0Y[0Y0Y0Y-Y-Y ;{{4<<#9#9:::y!FT^^DIt-L-L$LLLr   c                <   t          |j                  dk    r3d                    |                     |j        d                             S d                    |                     |j        d                   |                     |j        d                             S )Nr  zProductLog[{}]r   zProductLog[{}, {}])lenr  r  r  r  s     r   _print_LambertWzMCodePrinter._print_LambertW=  s    ty>>Q#**4;;ty|+D+DEEE#**KK	!%%t{{49Q<'@'@B B 	Br   c                     t          |j                  dk    r0|j        d         dd          s|j        d         |j        d         g}n|j        }dd                     fd|D                       z   dz   S )Nr  r   zHold[Integrate[r  c              3  B   K   | ]}                     |          V  d S rk  r  r  s     r   rz  z/MCodePrinter._print_Integral.<locals>.<genexpr>H  s-      ,K,KT\\!__,K,K,K,K,K,Kr   ]])r  	variableslimitsr  r  )re  rr  r  s   `  r   _print_IntegralzMCodePrinter._print_IntegralC  s}    t~!##DKN122,>#IaL$."34DD9D 499,K,K,K,Kd,K,K,K#K#KKdRRr   c                \     dd                      fd|j        D                       z   dz   S )Nz	Hold[Sum[r  c              3  B   K   | ]}                     |          V  d S rk  r  r  s     r   rz  z*MCodePrinter._print_Sum.<locals>.<genexpr>K  s-      &J&J1t||A&J&J&J&J&J&Jr   r  )r  r  r  s   ` r   
_print_SumzMCodePrinter._print_SumJ  s6    TYY&J&J&J&J	&J&J&JJJJTQQr   c                     |j         }d |j        D             }dd                     fd|g|z   D                       z   dz   S )Nc                :    g | ]}|d          d k    r|d         n|S )r  r   r   r  s     r   r  z2MCodePrinter._print_Derivative.<locals>.<listcomp>O  s,    GGGa11GGGr   zHold[D[r  c              3  B   K   | ]}                     |          V  d S rk  r  r  s     r   rz  z1MCodePrinter._print_Derivative.<locals>.<genexpr>P  s-      $N$NT\\!__$N$N$N$N$N$Nr   r  )rr  variable_countr  )re  rr  dexprdvarss   `   r   _print_DerivativezMCodePrinter._print_DerivativeM  sX    	GG43FGGG499$N$N$N$Nugo$N$N$NNNNQUUUr   c                ,    d                     |          S )Nz(* {} *)r  )re  texts     r   _get_commentzMCodePrinter._get_commentS  s      &&&r   ).r  
__module____qualname____doc__printmethodlanguagerW  __annotations__setrX  rY  r\  rm  rt  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  _print_tuple_print_Tupler  r  r  r  r	  _print_MinMaxBaser  r  r  r  r  __classcell__)r  s   @r   rM  rM  {   s          K!H #() )     03suuO4444!$N&&&& " / / / /  = = =
    9 9 9          
    ! ! !  
      1 1 1
    D D DLL+ + +H H H"+ + +,H ,H ,H\M M M (B B BS S SR R RV V V' ' ' ' ' ' 'r   rM  c                F    t          |                              |           S )a  Converts an expr to a string of the Wolfram Mathematica code

    Examples
    ========

    >>> from sympy import mathematica_code as mcode, symbols, sin
    >>> x = symbols('x')
    >>> mcode(sin(x).series(x).removeO())
    '(1/120)*x^5 - 1/6*x^3 + x'
    )rM  r  )rr  rf  s     r   mathematica_coder,  W  s      !!))$///r   N)r"  
__future__r   typingr   
sympy.corer   r   r   sympy.core.sortingr   sympy.printing.codeprinterr	   sympy.printing.precedencer
   r^  rM  r,  r   r   r   <module>r3     s    # " " " " "       ) ) ) ) ) ) ) ) ) ) / / / / / / 2 2 2 2 2 2 0 0 0 0 0 0i	^^U#$i	^^U#$i 
^^U#$i 
^^U#$	i
 
^^U#$i 
^^U#$i 
^^U#$i 
^^U#$i nnh'(i nnh'(i nnh'(i nnh'(i nnh'(i nnh'(i )*i  nnf%&!i" nnf%&#i i$ nnf%&%i& nnf%&'i( nnf%&)i* nnf%&+i, ~~y)*-i. ~~y)*/i0 ~~y)*1i2 ~~y)*3i4 ~~y)*5i6 ~~y)*7i8 nnf%&9i: >>;/0;i< 
__e$%=i> 
__e$%?i@ 
^^U#$AiB oou%&CiD nnf%&Ei i iF nnf%&GiH -.IiJ /0KiL ,/0MiN 01OiP 	NNO,
-QiR ..*-.SiT ..*-.UiV ~~w'(WiX OOW-.YiZ ??K01[i\ ..*-.]i^ oov&'_i` 	NNM*
+aib 	NNM*
+cid 
^^^,-eif 
^^^,-gi i ih 	NNM*
+iij >>;/0kil NNL12min nnn56oip 12qir //#345sit ~~x()uiv ,78wix //+;<=yiz //;/0{i| 56}i~ *-.i@ +,AiB OO]34CiD OO\23EiF OO\23GiH //;/0Ii i iJ 56KiL //:./MiN //:./OiP 89QiR 89SiT >>#345UiV OO[12WiX OO[12YiZ NNK01[i\ __l34]i^ oov&'_i` ~~~67aib NNK01cid ),-eif ),-gih ),-iij ),-ki i il *-.min *-.oip )*qir )*sit ^^]34uiv ^^]34wix ),-yiz //:./{i| 
__e$%}i~ 
__e$%i@ 	OO/0
1AiB 	OO/0
1CiD  345EiF ),-GiH //:./IiJ NNL12KiL >>#345Mi iN ()9:;nf%&Qi i iXY' Y' Y' Y' Y'; Y' Y' Y'x0 0 0 0 0r   