
    XhzW                       d dl mZ d dlm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mZ d dlmZmZ d d	lmZmZmZmZmZmZmZmZ d d
lmZ d dlm Z m!Z! d dl"m#Z#  G d de          Z$ G d de$          Z% e#e%e          d             Z& G d de$          Z' e#e'e          d             Z& G d de          Z( e#e(e          d             Z&dS )    )annotations)Basic)Expr)AddS)get_integer_partPrecisionExhausted)DefinedFunction)fuzzy_or	fuzzy_and)Integer
int_valued)GtLtGeLe
Relationalis_eqis_leis_lt)_sympify)imre)dispatchc                  \    e Zd ZU dZded<   ed             Zed             Zd Zd Z	d Z
d	S )
RoundFunctionz+Abstract base class for rounding functions.ztuple[Expr]argsc                   |                      |          x}|S |                     |          x}|S |j        s	|j        du r|S |j        st
          j        |z  j        rSt          |          }|	                    t
          j                  s | |          t
          j        z  S  | |d          S t
          j
        x}x}}d }t          j        |          D ][}|j        r- |t          |                    x}||t
          j        z  z  }6 ||          x}||z  }I|j        r||z  }V||z  }\|s|s|S |r|r0|j        r|j        s"t
          j        |z  j        s|j        rv|j        ro	 t          || j        i d          \  }	}|t!          |	          t!          |          t
          j        z  z   z  }t
          j
        }n# t"          t$          f$ r Y nw xY w||z  }|s|S |j        st
          j        |z  j        r*| | t          |          d          t
          j        z  z   S t'          |t(          t*          f          r||z   S | | |d          z   S )NFevaluatec                T    t          |           rt          |           n
| j        r| nd S N)r   int
is_integer)xs    u/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/sympy/functions/elementary/integers.py<lambda>z$RoundFunction.eval.<locals>.<lambda>-   s,    JqMM )#a&&&'AA4     T)return_ints)_eval_number_eval_const_numberr$   	is_finiteis_imaginaryr   ImaginaryUnitis_realr   hasZeror   	make_args	is_numberr   _dirr   r	   NotImplementedError
isinstancefloorceiling)
clsargviipartnpartspartintoftrs
             r&   evalzRoundFunction.eval   s   !!#&&&A3H'',,,A9H> 	S]e33J 	, 3< 	,3A55)) .s1vvao--3sU++++ !"&&) )s## 	 	A~ bee#41"A1?**uQxx-!,
 

 	 	L  
	
	M
	$1
	67oe6K5T
	 "
	 (-}
	'38RT; ; ;1gajj&@@@&(;<    	 	6L 	6AOE$9#B 	633r%yy5999!/IIIw/00 	65= 33uu55555s   1AG GGc                    t                      r"   )r5   r9   r:   s     r&   r*   zRoundFunction._eval_numberS   s    !###r(   c                &    | j         d         j        S Nr   )r   r,   selfs    r&   _eval_is_finitezRoundFunction._eval_is_finiteW   s    y|%%r(   c                &    | j         d         j        S rG   r   r/   rH   s    r&   _eval_is_realzRoundFunction._eval_is_realZ       y|##r(   c                &    | j         d         j        S rG   rL   rH   s    r&   _eval_is_integerzRoundFunction._eval_is_integer]   rN   r(   N)__name__
__module____qualname____doc____annotations__classmethodrC   r*   rJ   rM   rP    r(   r&   r   r      s         5566 66 [66p $ $ [$& & &$ $ $$ $ $ $ $r(   r   c                      e Zd ZdZdZed             Zed             Zd ZddZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )r7   a  
    Floor is a univariate function which returns the largest integer
    value not greater than its argument. This implementation
    generalizes floor to complex numbers by taking the floor of the
    real and imaginary parts separately.

    Examples
    ========

    >>> from sympy import floor, E, I, S, Float, Rational
    >>> floor(17)
    17
    >>> floor(Rational(23, 10))
    2
    >>> floor(2*E)
    5
    >>> floor(-Float(0.567))
    -1
    >>> floor(-I/2)
    -I
    >>> floor(S(5)/2 + 5*I/2)
    2 + 2*I

    See Also
    ========

    sympy.functions.elementary.integers.ceiling

    References
    ==========

    .. [1] "Concrete mathematics" by Graham, pp. 87
    .. [2] https://mathworld.wolfram.com/FloorFunction.html

    c                    |j         r|                                S t          d || fD                       r|S |j        r |                    t
                    d         S d S )Nc              3  X   K   | ]%}t           t          fD ]}t          ||          V  &d S r"   r7   r8   r6   .0r<   js      r&   	<genexpr>z%floor._eval_number.<locals>.<genexpr>   d       @ @ug.>@ @)* !Q @ @ @ @ @ @ @r(   r   )	is_Numberr7   anyis_NumberSymbolapproximation_intervalr   rE   s     r&   r*   zfloor._eval_number   s    = 	99;; @ @t@ @ @ @ @ 	J 	:--g66q99	: 	:r(   c                r   |j         r*|j        rt          j        S |j        r|                                \  }}|j        }|d S |r| | }}t          ||          rt          j        S t          t          ||          t          |d|z            g          rt          j
        S |j        r|                                \  }}|j        }|d S |r| | }}t          | |          rt          j        S t          t          d|z  |          t          ||           g          rt          d          S d S d S d S N   )r/   is_zeror   r1   is_positiveas_numer_denomis_negativer   r   r   OneNegativeOner   r9   r:   numdenss        r&   r+   zfloor._eval_const_number   se   ; 	'{ v !--//SO94 * #tcTCc?? "6MeCoouS!C%/@/@ABB !5L '--//SO94 * #tcTC#s## )=(eBsFC00%cT2B2BCDD '"2;;&9	' 	' ' '' 'r(   c                   ddl m} | j        d         }|                    |d          }|                     |d          }|t          j        u st          ||          r=|                    |dt          |          j	        rdnd          }t          |          }|j        rN||k    rF|                    ||dk    r|nd          }|j	        r|dz
  S |j        r|S t          d|z            |S |                    |||	          S 
Nr   AccumBounds-+dir   cdirNot sure of sign of %slogxr~   )!sympy.calculus.accumulationboundsrw   r   subsr   NaNr6   limitr   rm   r7   r,   r{   rk   r5   as_leading_term	rI   r%   r   r~   rw   r:   arg0rB   ndirs	            r&   _eval_as_leading_termzfloor._eval_as_leading_term   s   AAAAAAilxx1~~IIaOO15==Jt[99=99Qbhh.B'Kss9LLDdA> 
	qyywwqtqyyttaw@@# Oq5L% OH-.F.MNNN""14d";;;r(   r   c                F   | j         d         }|                    |d          }|                     |d          }|t          j        u r=|                    |dt          |          j        rdnd          }t          |          }|j        rIddl	m
} ddlm}	 |                    ||||          }
|dk    r |	d|df          n |dd          }|
|z   S ||k    rF|                    ||dk    r|nd	          }|j        r|dz
  S |j        r|S t!          d
|z            |S )Nr   rx   ry   rz   rv   Orderr|   rY   r}   r   )r   r   r   r   r   r   rm   r7   is_infiniter   rw   sympy.series.orderr   _eval_nseriesr{   rk   r5   rI   r%   nr   r~   r:   r   rB   rw   r   rs   or   s                r&   r   zfloor._eval_nseries   sV   ilxx1~~IIaOO15==99Qbhh.B'Kss9LLDdA 	EEEEEE000000!!!Qd33A$%FFa!Q   B0B0BAq5L199771419944!7<<D K1u! K)*BT*IJJJHr(   c                &    | j         d         j        S rG   )r   rm   rH   s    r&   _eval_is_negativezfloor._eval_is_negative       y|''r(   c                &    | j         d         j        S rG   )r   is_nonnegativerH   s    r&   _eval_is_nonnegativezfloor._eval_is_nonnegative       y|**r(   c                $    t          |            S r"   r8   rI   r:   kwargss      r&   _eval_rewrite_as_ceilingzfloor._eval_rewrite_as_ceiling   s    ~r(   c                &    |t          |          z
  S r"   fracr   s      r&   _eval_rewrite_as_fraczfloor._eval_rewrite_as_frac   s    T#YYr(   c                   t          |          }| j        d         j        rG|j        r| j        d         |dz   k     S |j        r%|j        r| j        d         t          |          k     S | j        d         |k    r|j        rt           j        S |t           j        u r| j        rt           j        S t          | |d          S Nr   r|   Fr   )
r   r   r/   r$   r3   r8   trueInfinityr,   r   rI   others     r&   __le__zfloor.__le__   s    %9Q< 	5 0y|eai// 55= 5y|genn449Q<5  U] 6MAJ4>6M$....r(   c                   t          |          }| j        d         j        rD|j        r| j        d         |k    S |j        r%|j        r| j        d         t          |          k    S | j        d         |k    r|j        r|j        rt           j        S |t           j        u r| j	        rt           j
        S t          | |d          S Nr   Fr   )r   r   r/   r$   r3   r8   is_nonintegerfalseNegativeInfinityr,   r   r   r   s     r&   __ge__zfloor.__ge__   s    %9Q< 	6 -y|u,, 65= 6y|wu~~559Q<5  U] u7J 7NA&&&4>&6M$....r(   c                   t          |          }| j        d         j        rG|j        r| j        d         |dz   k    S |j        r%|j        r| j        d         t          |          k    S | j        d         |k    r|j        rt           j        S |t           j        u r| j        rt           j	        S t          | |d          S r   )r   r   r/   r$   r3   r8   r   r   r,   r   r   r   s     r&   __gt__zfloor.__gt__  s    %9Q< 	6 1y|uqy00 65= 6y|wu~~559Q<5  U] 7NA&&&4>&6M$....r(   c                   t          |          }| j        d         j        rD|j        r| j        d         |k     S |j        r%|j        r| j        d         t          |          k     S | j        d         |k    r|j        r|j        rt           j        S |t           j        u r| j	        rt           j        S t          | |d          S r   )r   r   r/   r$   r3   r8   r   r   r   r,   r   r   s     r&   __lt__zfloor.__lt__  s    %9Q< 	5 ,y|e++ 55= 5y|genn449Q<5  U] u7J 6MAJ4>6M$....r(   Nr   )rQ   rR   rS   rT   r4   rV   r*   r+   r   r   r   r   r   r   r   r   r   r   rW   r(   r&   r7   r7   a   s        " "F D: : [: ' ' ['>< < <*   0( ( (+ + +    / / // / // / // / / / /r(   r7   c                    t          |                     t                    |          p't          |                     t                    |          S r"   )r   rewriter8   r   lhsrhss     r&   _eval_is_eqr   #  s>    W%%s++ %ckk$$$%r(   c                      e Zd ZdZdZed             Zed             Zd ZddZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )r8   a  
    Ceiling is a univariate function which returns the smallest integer
    value not less than its argument. This implementation
    generalizes ceiling to complex numbers by taking the ceiling of the
    real and imaginary parts separately.

    Examples
    ========

    >>> from sympy import ceiling, E, I, S, Float, Rational
    >>> ceiling(17)
    17
    >>> ceiling(Rational(23, 10))
    3
    >>> ceiling(2*E)
    6
    >>> ceiling(-Float(0.567))
    0
    >>> ceiling(I/2)
    I
    >>> ceiling(S(5)/2 + 5*I/2)
    3 + 3*I

    See Also
    ========

    sympy.functions.elementary.integers.floor

    References
    ==========

    .. [1] "Concrete mathematics" by Graham, pp. 87
    .. [2] https://mathworld.wolfram.com/CeilingFunction.html

    r|   c                    |j         r|                                S t          d || fD                       r|S |j        r |                    t
                    d         S d S )Nc              3  X   K   | ]%}t           t          fD ]}t          ||          V  &d S r"   r\   r]   s      r&   r`   z'ceiling._eval_number.<locals>.<genexpr>S  ra   r(   r|   )rb   r8   rc   rd   re   r   rE   s     r&   r*   zceiling._eval_numberO  s    = 	!;;==  @ @t@ @ @ @ @ 	J 	:--g66q99	: 	:r(   c                r   |j         r*|j        rt          j        S |j        r|                                \  }}|j        }|d S |r| | }}t          ||          rt          j        S t          t          ||          t          |d|z            g          rt          d          S |j        r|                                \  }}|j        }|d S |r| | }}t          | |          rt          j        S t          t          d|z  |          t          ||           g          rt          j        S d S d S d S rg   )r/   rj   r   r1   rk   rl   rm   r   rn   r   r   r   ro   rp   s        r&   r+   zceiling._eval_const_numberY  se   ; 	){ v &--//SO94 * #tcTCc?? !5LeCoouS!C%/@/@ABB &"1::% )--//SO94 * #tcTC#s## "6MeBsFC00%cT2B2BCDD )=(9	) 	) ) )) )r(   c                   ddl m} | j        d         }|                    |d          }|                     |d          }|t          j        u st          ||          r=|                    |dt          |          j	        rdnd          }t          |          }|j        rN||k    rF|                    ||dk    r|nd          }|j	        r|S |j        r|dz   S t          d|z            |S |                    |||	          S ru   )r   rw   r   r   r   r   r6   r   r   rm   r8   r,   r{   rk   r5   r   r   s	            r&   r   zceiling._eval_as_leading_termy  s   AAAAAAilxx1~~IIaOO15==Jt[99=99Qbhh.B'Kss9LLDA> 
	qyywwqtqyyttaw@@# OH% Oq5L-.F.MNNN""14d";;;r(   r   c                F   | j         d         }|                    |d          }|                     |d          }|t          j        u r=|                    |dt          |          j        rdnd          }t          |          }|j        rIddl	m
} ddlm}	 |                    ||||          }
|dk    r |	d|df          n |dd          }|
|z   S ||k    rF|                    ||dk    r|nd          }|j        r|S |j        r|dz   S t!          d	|z            |S )
Nr   rx   ry   rz   rv   r   r|   r}   r   )r   r   r   r   r   r   rm   r8   r   r   rw   r   r   r   r{   rk   r5   r   s                r&   r   zceiling._eval_nseries  sV   ilxx1~~IIaOO15==99Qbhh.B'Kss9LLDA 	EEEEEE000000!!!Qd33A$%FFa!Q   Aq0A0AAq5L199771419944!7<<D K! K1u)*BT*IJJJHr(   c                $    t          |            S r"   r7   r   s      r&   _eval_rewrite_as_floorzceiling._eval_rewrite_as_floor  s    sd|r(   c                (    |t          |           z   S r"   r   r   s      r&   r   zceiling._eval_rewrite_as_frac  s    T3$ZZr(   c                &    | j         d         j        S rG   )r   rk   rH   s    r&   _eval_is_positivezceiling._eval_is_positive  r   r(   c                &    | j         d         j        S rG   )r   is_nonpositiverH   s    r&   _eval_is_nonpositivezceiling._eval_is_nonpositive  r   r(   c                   t          |          }| j        d         j        rG|j        r| j        d         |dz
  k    S |j        r%|j        r| j        d         t          |          k    S | j        d         |k    r|j        rt           j        S |t           j        u r| j        rt           j	        S t          | |d          S r   )r   r   r/   r$   r3   r7   r   r   r,   r   r   r   s     r&   r   zceiling.__lt__  s    %9Q< 	4 1y|uqy00 45= 4y|uU||339Q<5  U] 7NAJ4>6M$....r(   c                   t          |          }| j        d         j        rD|j        r| j        d         |k    S |j        r%|j        r| j        d         t          |          k    S | j        d         |k    r|j        r|j        rt           j        S |t           j        u r| j	        rt           j        S t          | |d          S r   )r   r   r/   r$   r3   r7   r   r   r   r,   r   r   s     r&   r   zceiling.__gt__  s    %9Q< 	3 ,y|e++ 35= 3y|eEll229Q<5  U] u7J 6MA&&&4>&6M$....r(   c                   t          |          }| j        d         j        rG|j        r| j        d         |dz
  k    S |j        r%|j        r| j        d         t          |          k    S | j        d         |k    r|j        rt           j        S |t           j        u r| j        rt           j        S t          | |d          S r   )
r   r   r/   r$   r3   r7   r   r   r,   r   r   s     r&   r   zceiling.__ge__  s    %9Q< 	3 0y|eai// 35= 3y|eEll229Q<5  U] 6MA&&&4>&6M$....r(   c                   t          |          }| j        d         j        rD|j        r| j        d         |k    S |j        r%|j        r| j        d         t          |          k    S | j        d         |k    r|j        r|j        rt           j        S |t           j        u r| j	        rt           j
        S t          | |d          S r   )r   r   r/   r$   r3   r7   r   r   r   r,   r   r   r   s     r&   r   zceiling.__le__  s    %9Q< 	4 -y|u,, 45= 4y|uU||339Q<5  U] u7J 7NAJ4>6M$....r(   Nr   )rQ   rR   rS   rT   r4   rV   r*   r+   r   r   r   r   r   r   r   r   r   r   rW   r(   r&   r8   r8   )  s        " "F D: : [: ) ) [)>< < <*   0       ( ( (+ + +/ / // / // / // / / / /r(   r8   c                    t          |                     t                    |          p't          |                     t                    |          S r"   )r   r   r7   r   r   s     r&   r   r     s9    U##S))IU3;;t3D3DS-I-IIr(   c                      e Zd ZdZe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dZdS )r   a  Represents the fractional part of x

    For real numbers it is defined [1]_ as

    .. math::
        x - \left\lfloor{x}\right\rfloor

    Examples
    ========

    >>> from sympy import Symbol, frac, Rational, floor, I
    >>> frac(Rational(4, 3))
    1/3
    >>> frac(-Rational(4, 3))
    2/3

    returns zero for integer arguments

    >>> n = Symbol('n', integer=True)
    >>> frac(n)
    0

    rewrite as floor

    >>> x = Symbol('x')
    >>> frac(x).rewrite(floor)
    x - floor(x)

    for complex arguments

    >>> r = Symbol('r', real=True)
    >>> t = Symbol('t', real=True)
    >>> frac(t + I*r)
    I*frac(r) + frac(t)

    See Also
    ========

    sympy.functions.elementary.integers.floor
    sympy.functions.elementary.integers.ceiling

    References
    ===========

    .. [1] https://en.wikipedia.org/wiki/Fractional_part
    .. [2] https://mathworld.wolfram.com/FractionalPart.html

    c                    ddl m  fd}t          j        t          j        }}t	          j        |          D ]\}|j        st          j        |z  j        r:t          |          }|
                    t          j                  s||z  }Q||z  }W||z  }] ||          } ||          }|t          j        |z  z   S )Nr   rv   c                *   | t           j        t           j        fv r dd          S | j        rt           j        S | j        rF| t           j        u rt           j        S | t           j        u rt           j        S | t          |           z
  S  | d          S r   )	r   r   r   r$   r1   r3   r   ComplexInfinityr7   )r:   rw   r9   s    r&   _evalzfrac.eval.<locals>._eval%  s    qz1#5666"{1a(((~ v} ,!%<<5LA---5Ls++3sU++++r(   )r   rw   r   r1   r   r2   r-   r.   r/   r   r0   )r9   r:   r   realimagrA   r<   rw   s   `      @r&   rC   z	frac.eval!  s    AAAAAA	, 	, 	, 	, 	, 	, VQVds## 
	 
	A ~ !/!"3!< qEEuuQ_-- AIDDAIDD	uT{{uT{{aod***r(   c                &    |t          |          z
  S r"   r   r   s      r&   r   zfrac._eval_rewrite_as_floorD  s    U3ZZr(   c                (    |t          |           z   S r"   r   r   s      r&   r   zfrac._eval_rewrite_as_ceilingG  s    WcT]]""r(   c                    dS )NTrW   rH   s    r&   rJ   zfrac._eval_is_finiteJ  s    tr(   c                &    | j         d         j        S rG   )r   is_extended_realrH   s    r&   rM   zfrac._eval_is_realM  s    y|,,r(   c                &    | j         d         j        S rG   )r   r-   rH   s    r&   _eval_is_imaginaryzfrac._eval_is_imaginaryP  s    y|((r(   c                &    | j         d         j        S rG   )r   r$   rH   s    r&   rP   zfrac._eval_is_integerS  s    y|&&r(   c                d    t          | j        d         j        | j        d         j        g          S rG   )r   r   rj   r$   rH   s    r&   _eval_is_zerozfrac._eval_is_zeroV  s'    1-ty|/FGHHHr(   c                    dS )NFrW   rH   s    r&   r   zfrac._eval_is_negativeY  s    ur(   c                    | j         r<t          |          }|j        rt          j        S |                     |          }|| S t          | |d          S NFr   )r   r   is_extended_nonpositiver   r   _value_one_or_morer   rI   r   ress      r&   r   zfrac.__ge__\  s^      	 UOOE, v))%00Cx$....r(   c                    | j         r<t          |          }|                     |          }|| S |j        rt          j        S t          | |d          S r   )r   r   r   is_extended_negativer   r   r   r   s      r&   r   zfrac.__gt__h  s^      	UOOE))%00Cx) v$....r(   c                    | j         r;t          |          }|j        rt          j        S |                     |          }||S t          | |d          S r   )r   r   r   r   r   r   r   r   s      r&   r   zfrac.__le__t  s\      	UOOE) w))%00C
$....r(   c                    | j         r;t          |          }|j        rt          j        S |                     |          }||S t          | |d          S r   )r   r   r   r   r   r   r   r   s      r&   r   zfrac.__lt__  s\      	UOOE, w))%00C
$....r(   c                    |j         rJ|j        r)|dk    }|r!t          |t                    st          j        S |j        r|j        rt          j        S d S d S d S )Nr|   )r   r3   r6   r   r   r   r$   rk   r   s      r&   r   zfrac._value_one_or_more  sz    ! 	 "qj "z#z:: "6M E$5 v	 	
   r(   c                   ddl m} | j        d         }|                    |d          }|                     |d          }|j        rN|j        rE|                    ||          }|j        rt          j	        S ||z
  
                    |||          S |S |t          j        t          j        t          j        fv r |dd          S |
                    |||          S )Nr   rv   r}   r   r|   )r   rw   r   r   r,   rj   r{   rm   r   rn   r   r   r   r   r   s	            r&   r   zfrac._eval_as_leading_term  s    AAAAAAilxx1~~IIaOO> 		%y wwqtw,,# !5Ld
33ADt3LLLa'Q5GHHH;q!$$$""14d";;;r(   r   c                   ddl m} | j        d         }|                    |d          }|                     |d          }|j        r:ddlm}	 |dk    r |d|df          n |	dd           |||z  |df          z   }
|
S ||z
                      ||||          }|j        r:|	                    ||          }||j
        rt          j        nt          j        z  }n||z  }|S )Nr   r   rv   r|   r   r}   )r   r   r   r   r   r   rw   r   rj   r{   rm   r   rn   r1   )rI   r%   r   r   r~   r   r:   r   rB   rw   r   r   r   s                r&   r   zfrac._eval_nseries  s   ,,,,,,ilxx1~~IIaOO 	EEEEEE$%FFa!Q   Aq0A0AEE!Q$QRTUPVDWDW0WAH:,,Q4,HHCy wwqtw,, 0<quuaf<qJr(   Nr   )rQ   rR   rS   rT   rV   rC   r   r   rJ   rM   r   rP   r   r   r   r   r   r   r   r   r   rW   r(   r&   r   r     s$       / /`  +  + [ +D     # # #  - - -) ) )' ' 'I I I  
/ 
/ 
/
/ 
/ 
/
/ 
/ 
/
/ 
/ 
/  < < <$     r(   r   c                    |                      t                    |k    s|                      t                    |k    rdS |j        rdS |                     |          }|dS d S )NTF)r   r7   r8   r   r   )r   r   r   s      r&   r   r     si    Ec!!	W			$	$t
 u

 
 
%
%C
u r(   N))
__future__r   sympy.core.basicr   sympy.core.exprr   
sympy.corer   r   sympy.core.evalfr   r	   sympy.core.functionr
   sympy.core.logicr   r   sympy.core.numbersr   r   sympy.core.relationalr   r   r   r   r   r   r   r   sympy.core.sympifyr   $sympy.functions.elementary.complexesr   r   sympy.multipledispatchr   r   r7   r   r8   r   rW   r(   r&   <module>r      sv   " " " " " " " " " " " "                     A A A A A A A A / / / / / / 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q ' ' ' ' ' ' 7 7 7 7 7 7 7 7 + + + + + +I$ I$ I$ I$ I$O I$ I$ I$X/ / / / /M / / /D 
%% % %
/ / / / /m / / /D 
'5J J JH H H H H? H H HV 
$
 
 
 
 
r(   