
    "`x                     $   d Z ddlmZmZ d Zd Z	 	 d#dZd Zd Zd	 Z	d
Z
d Zd Zd Zed$d       Zd Zd Zd Zed        Zed        Z	 g ddgdddgdddgdddgdddgdd d!gdd"d#gdd$d%gdd&d'gdd(d)gdd*d+gdd,d-gdd.d/gdd0d1gd2d3d4gdd5d6gdd7d8gdd9d:gdd;d<gdd=d>gdd?d@gddAdBgddCdDgddEdFgddGdHgddIdJgddKdLgddMdNgddOdPgddQdRgddSdTgddUdVgddWdXgddYdZgdd[d\gdd]d^gdd_d`gddadbgddcddgddedfgddgdhgddidjgddkdlgddmdngddodpgddqdrgddsdtgddudvgddwdxgddydzgdd{d|gdd}d~gdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgd2ddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdˑddgdddgdddgdddgdԑddgdddgdˑddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdԑddgdddgdddgdddgdddgdddgdddgddd gdddgdddgdddgddd	gdd
dgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdd d!gdd"d#gdd$d%gdd&d'gdd(d)gdd*d+gdd,d-gdd.d/gdˑd0d1gdd2d3gdd4d5gdd6d7gdd8d9gdd:d;gdd<d=gdd>d?gdd@dAgddBdCgddDdEgddFdGgddHdIgddJdKgddLdMgdNdOdPgddQdRgddSdTgdUdVdWgddXdYgddZd[gdd\d]gdd^d_gdd`dagddbdcgddddegddfdggddhdigddjdkgddldmgddndogddpdqgddrdsgddtdugddvdwgddxdygddzd{gdd|d}gdˑd~dgdddgdddgdddgdUddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdԑddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgddĐdgddƐdgddȐdgddʐdgdd̐dgddΐdgddАdgddҐdgddԐdgdd֐dgddؐdgddڐdgdԑdܐdgddސdgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdd dgdddgdddgdddgddd	gdd
dgdddgdddgdddgdddgdddgd2ddgdddgdddgdddgdddgdd d!gdd"d#gdUd$d%gdd&d'gdd(d)gdd*d+gdd,d-gdd.d/gdd0d1gdd2d3gdd4d5gdd6d7gdd8d9gdd:d;gdd<d=gdd>d?gdd@dAgddBdCgddDdEgddFdGgddHdIgddJdKgddLdMgdԑdNdOgddPdQgddRdSgddTdUgddVdWgddXdYgddZd[gdd\d]gdd^d_gdd`dagddbdcgddddegddfdggddhdigddjdkgddldmgddndogddpdqgddrdsgddtdugddvdwgddxdygddzd{gdd|d}gdd~dgdddgdddgdddgd2ddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdUddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgddÐdgddŐdgddǐdgddɐdgddːdgdd͐dgdUdϐdgddѐdgddӐdgddՐdgdˑdאdgddِdgddېdgddݐdgddߐdgdˑddgdddgdddgdddgdddgdԑddgdddgdddgdddgdԑddgdddgdddgdddgdddgdddgddd gdddgdddgdddgdddgdddgdd	d
gdddgdddgdddgdddgdddgdddgdddgdddgddd gdd!d"gdZy(%  a  
The function zetazero(n) computes the n-th nontrivial zero of zeta(s).

The general strategy is to locate a block of Gram intervals B where we
know exactly the number of zeros contained and which of those zeros
is that which we search.

If n <= 400 000 000  we know exactly the Rosser exceptions, contained
in a list in this file. Hence for n<=400 000 000 we simply
look at these list of exceptions. If our zero is implicated in one of
these exceptions we have our block B.  In other case we simply locate
the good Rosser block containing our zero.

For n > 400 000 000 we apply the method of Turing, as complemented by
Lehman, Brent and Trudgian  to find a suitable B.
   )defundefun_wrappedc                 t   t        t        t              dz        D ]  }t        d|z     d   }t        d|z     d   }||dz
  k  s*|dz
  |k  s3| j                  |      }| j                  |      }| j                  j                  |      }| j                  j                  |      }||z
  dz
  }	||z
  }
t        d|z  dz      }|	||g||g||gfc S  |dz
  }t        | |      \  }}}|g}|g}|dk  r?|dz  }t        | |      \  }}}|j                  d|       |j                  d|       |dk  r?||z
  dz
  }	|dz
  }t        | |      \  }}}|j                  |       |j                  |       |dk  r=|dz  }t        | |      \  }}}|j                  |       |j                  |       |dk  r=|	||g||fS )z;for n<400 000 000 determines a block were one find our zero       r   )	rangelen_ROSSER_EXCEPTIONS	grampoint_fpsiegelzcompute_triple_tvbinsertappend)ctxnkabt0t1v0v1my_zero_numberzero_number_blockpatterntvTVms                    </usr/lib/python3/dist-packages/mpmath/functions/zetazeros.pyfind_rosser_block_zeror#      s   3)*A-. =
QqS
!!
$
QqS
!!
$1W1Q3!8q!Bq!B$B$BqSUN !!(1Q/G"QqEBr7RG<<= 	
!AsA&EAa	
A	
A
a%	Q"3*!A	1	1	 a%
 qSUN	!AsA&EAaHHQKHHQK
a%	Q"3*!A			 a%
 QqE1a((    c                 4    d}| dkD  rd}| dkD  rd}| dkD  rd}|S )z(Precision needed to compute higher zeros5   i ?   l    h] F       @ k S    )r   wps     r"   wpzerosr-   7   s0    	B7{6z6zIr$   Nc                     | j                   }d}t        |      }||k  r!||k  r|d   }|d   }	|g}
|	g}d}t        dt        |            D ]  }||   }||   }||	z  dkD  r# j	                  ||	z        }||z  |z   |dz   z  }n||z   dz  }|dk  r; j
                  j                  |      }t        |      |k  r# j                  |      }n j                  |      }|	|z  dk  r|dz  }|
j                  |       |j                  |       ||   }||z  dk  r|dz  }|
j                  |       |j                  |       |}|}	 |
}|}|dz  }|t        kD  r|dkD  r|dz   |k(  rd}d}d}t        dt        |            D ]*  }||   ||dz
     z
  }||kD  r|}|}|}||k  s#||kD  s)|}, |d|z  kD  rt fd}||dz
     }||   } j                  |||fddd	      } j                  |      }	||k  r4||k  r/|	||   z  dk  r$|j                  ||       |j                  ||	       t        |      }||k  r||k  r||k(  rd
}nd}|||fS )z^Separate the zeros contained in the block T, limitloop
    determines how long one must searchr   r   r   
      c                 *    j                  | d      S )Nr   
derivative)rs_zxr   s    r"   <lambda>z)separate_zeros_in_block.<locals>.<lambda>y   s    chhqAh6 r$   illinoisF)solververifyverboseT)infcount_variationsr   r	   sqrtr   r   absr   ITERATION_LIMITfindrootr   )r   r   r   r    	limitloopfp_tolerance
loopnumber
variationsr   r   newTnewVr   b2ualphar   wdtMaxdtSeckMaxk1dtfr   r   r   	separateds   `                           r"   separate_zeros_in_blockrS   B   s    GG	J!!$J**Y1FaDaDss
qQ 	A1B!A!A1!GBJq)rT1Hb GGOOA&q6,&AA++a.s1ua
KKNKKN!AsAva
KKOKKNAA1	2 Q
o%*Q,:a<IZ;ZEEDAc!fo rU1RT7]:D!EE%xRYE QuW}6T!V9tW,,qBr7JeUZ,[KKNqDqt!AdG)A+HHT!$HHT!$%a(
o **Y1Fp &&		ar$   c                     d}|d   }t        dt        |            D ]!  }||   }	||	z  dk  r|dz  }||k(  r|}
|}|	}|	}# |
   }||
dz
     }| _        t        | j	                  |      z        }d j                  |      z  } j                  dz   g}d}|d   d|z  kD  r&|dz  }|d   dz  dz   d|z  z   g|z   }|d   d|z  kD  r&|d   |z    _         j                   fd||fdd	      } j                  d
|      }|dd D ]U  }||z    _        | j                  |       j                  |d      z  z
  } j                  d
 j                  |            }W  j                  |      S )zPIf we know which zero of this block is mine,
    the function separates the zeror   r      r   r0   c                 &    j                  |       S )Nr   r5   s    r"   r7   z"separate_my_zero.<locals>.<lambda>   s    ckk!n r$   r8   F)r9   r;         ?Nr2   )
r   r	   precr-   logmagrA   mpczetaim)r   r   r   r   r    rY   rE   r   r   r   k0leftvrightvr   r   wpzguardprecsindexrzznews   `                     r"   separate_my_zerori      s    J	
1B1SV_ qTb519NJ^+ 
2B	
2a4BCH
.!88
9Ccggn%%EXXaZLE
E
(QsU
	qQ!!E')*U2 (QsU
 Qx%CH,r"gzSXYA	ggc!nAab	 $%<388A;!!:::
''#cffTl
#$ 66!9r$   c                     |dk  ry| j                  |dz
        }| j                  j                  |      }d|dz  z  d|z  z   }d|dz  z  d|z  z   }| j                  t	        ||            }t        |      }|S )a  The number of good Rosser blocks needed to apply
    Turing method
    References:
    R. P. Brent, On the Zeros of the Riemann Zeta Function
    in the Critical Strip, Math. Comp. 33 (1979) 1361--1372
    T. Trudgian, Improvements to Turing Method, Math. Comp.i r   d   gHPx?g{Gz?ga+ei?g)\(?)r   r   lnceilminint)r   r   glgbrenttrudgianNs          r"   sure_number_blockru      s     	7{aeA	ABRUNDG#EA~tBw&HU8$%AAAHr$   c                     | j                  |      }| j                  j                  |      }| j                  t	        |            | j                  |      dz
  k  r| j                  |      }|d|z  z  }|||fS )N-   )r   r   r   r[   r?   )r   r   r   r   r   s        r"   r   r      sg    aAA
wws1vswwqz"}$KKN	2'	AQq5Lr$   rU   c                 ~   t        | |      }d}|dz
  }t        | |      \  }}}|g}	|g}
|dk  r=|dz  }t        | |      \  }}}|	j                  |       |
j                  |       |dk  r=|g}|g}|g}|d|z  k  r|dz  }t        | |      \  }}}|j                  |       |j                  |       |dk  r=|dz  }t        | |      \  }}}|j                  |       |j                  |       |dk  r=|j                  |       t        |      dz
  }t	        | |||t
        |      \  }}}|	j                          |	j                  |       |
j                          |
j                  |       |r|dz  }nd}|g}|g}|d|z  k  rd}|dz
  }t        | |      \  }}}|	j                  d|       |
j                  d|       |dk  r?|dz  }t        | |      \  }}}|	j                  d|       |
j                  d|       |dk  r?|j                  d|       |g}|g}|d|z  k  r|dz  }t        | |      \  }}}|j                  d|       |j                  d|       |dk  r?|dz  }t        | |      \  }}}|j                  d|       |j                  d|       |dk  r?|j                  d|       t        |      dz
  }t	        | |||t
        |      \  }}}|j                          ||	z   }	|j                          ||
z   }
|r|dz  }nd}|g}|g}|d|z  k  r|d|z     }t        |      }||d|z  z
  dz
     }t        | |      \  }}}|	j                  |      }t        | |      \  }}}|	j                  |      }|	||dz    }|
||dz    }||z
  }t	        | |||t
        |      \  }}}|r||z
  dz
  ||g||fS ||   }t        |      }|||z
  dz
     }t        | |      \  }}} |	j                  |      }!t        | |      \  }"}#}$|	j                  |"      }%|	|!|%dz    }|
|!|%dz    }||z
  dz
  ||g||fS )zTo use for n>400 000 000r   r   r   rB   rC   )
ru   r   r   r	   rS   r@   popextendr   re   )&r   r   rC   sbnumber_goodblocksm2r   r   r   TfVf
goodpointsr   r    znABrR   rf   rq   strvrbrartsvsbsas1qtqvqbqaqttvtbtats&                                         r"   search_supergood_blockr      s   	3	"B	
1B b)GAq!
B
B
a%
a"3+!A
		!
		!	 a%
 J	
A	
A
ad
"
a$S"-1a		!e!GB&sB/EAaHHQKHHQK	 !e
 	"VAX"3AqO)+ 	1i 	
		!

		!" !CC1 ad
"4 	
1B b)GAq!IIaNIIaN
a%
a"3+!A
		!A
		!A	 a%
 a	
A	
A
ad
"
a$S"-1a	1	1!e!GB&sB/EAaHHQqMHHQqM	 !e
 	!BVAX"3AqOZfg 	1i	rT	rT" !CC/ ad
"0 	1R4A	ZB2ad719A#C+JBB	"B#C+JBB
((2,C
2c!eA
2c!eA	
1BsBq_S_` Aq)!AqeAa  2A	ZB2b57A#C+JBB	"B#C+JBB	"B
2bdA
2bdAaCE1Q%!r$   c                 p    d}| d   }t        dt        |             D ]  }| |   }||z  dk  r|dz  }|} |S Nr   r   )r   r	   )r    countvoldr   vnews        r"   r=   r=   2  sS    EQ4D1c!f t9q=AIE	
 Lr$   c                    d}|d   }|d   }t        | |      \  }}}	d}
d}t        |dz   |dz         D ]  }t        | |      \  }}}t        |      }|
|k  r||
   |k  r|
dz  }
|
|k  r	||
   |k  r|||
 }|j                  |       |j	                  d|       t        |      }|d|z  z   }|dkD  r|dz   }|
}|||}	}} |d d }|S )N(r   r   z%sz)(rx   )r   r   r	   r   r   r=   )r   blockr   r    r   r   r   r   r   b0r   r_   r   r   r   b1lgTLr   s                      r"   pattern_constructr   <  s	   GaAaA!#q)HBr"	A	
B1Q3qs^ %c1-2bV3wQqTRZFA 3wQqTRZbG		2 #TE\*6nGbb2 crlGNr$   c                 .   t        |      }|dk  r | j                  |       j                         S |dk(  rt        d      | j                  }	 t        | |      \  }}|| _        |dk  rt        | |      \  }}}	}
nt        | ||      \  }}}	}
|d   |d   z
  }t        | ||	|
| j                  |      \  }	}
}|rt        | ||	|
      }t        ||      }t        | |||	|
|      }| j                  d|      }|| _        |r|}|r|||fS |S # || _        w xY w)a  
    Computes the `n`-th nontrivial zero of `\zeta(s)` on the critical line,
    i.e. returns an approximation of the `n`-th largest complex number
    `s = \frac{1}{2} + ti` for which `\zeta(s) = 0`. Equivalently, the
    imaginary part `t` is a zero of the Z-function (:func:`~mpmath.siegelz`).

    **Examples**

    The first few zeros::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> zetazero(1)
        (0.5 + 14.13472514173469379045725j)
        >>> zetazero(2)
        (0.5 + 21.02203963877155499262848j)
        >>> zetazero(20)
        (0.5 + 77.14484006887480537268266j)

    Verifying that the values are zeros::

        >>> for n in range(1,5):
        ...     s = zetazero(n)
        ...     chop(zeta(s)), chop(siegelz(s.imag))
        ...
        (0.0, 0.0)
        (0.0, 0.0)
        (0.0, 0.0)
        (0.0, 0.0)

    Negative indices give the conjugate zeros (`n = 0` is undefined)::

        >>> zetazero(-1)
        (0.5 - 14.13472514173469379045725j)

    :func:`~mpmath.zetazero` supports arbitrarily large `n` and arbitrary precision::

        >>> mp.dps = 15
        >>> zetazero(1234567)
        (0.5 + 727690.906948208j)
        >>> mp.dps = 50
        >>> zetazero(1234567)
        (0.5 + 727690.9069482075392389420041147142092708393819935j)
        >>> chop(zeta(_)/_)
        0.0

    with *info=True*, :func:`~mpmath.zetazero` gives additional information::

        >>> mp.dps = 15
        >>> zetazero(542964976,info=True)
        ((0.5 + 209039046.578535j), [542964969, 542964978], 6, '(013111110)')

    This means that the zero is between Gram points 542964969 and 542964978;
    it is the 6-th zero between them. Finally (01311110) is the pattern
    of zeros in this interval. The numbers indicate the number of zeros
    in each Gram interval (Rosser blocks between parenthesis). In this case
    there is only one Rosser block of length nine.
    r   zn must be nonzero r   rz   rX   )ro   zetazero	conjugate
ValueErrorrY   comp_fp_tolerancer#   r   rS   r<   r   maxri   r\   )r   r   inforound	wpinitialrb   rC   r   r   r   r    r   rR   r   rY   r   r   s                    r"   r   r   T  sL   x 	AA1u||QB))++Av,--I-c15\y=#C+ (NE1a $CL9 (NE1a!!HU1X-1#7H!QggL:1i'E!A6G9c"S.2CAaMGGCN2%w// s   B'D 	Dc                     |dkD  rd| j                  |d      z  }nd}| j                  }	 | xj                  |z  c_        t        | j                  |      | j                  z        }|| _        |S # || _        w xY w)Nl     a$r0   r/   r   )rZ   rY   ro   siegelthetapi)r   r   r,   rY   hs        r"   
gram_indexr     sp    6zswwq"~88DB"366)*I s   <A0 0	A9c                     d}|d   }|d   }|d   }d}||k  r$||   }	||	z  dk  r|dz  }|	}|dz  }||   }||k  r$| j                  |      }
|
|z  dk  r|dz  }|S r   rW   )r   r   r   r    r   r   toldtnewr   r   r   s              r"   count_tor     s    EQ4DQ4DQ4D	A
(t9q=QJE	Qt ( 	AAvz
Lr$   c                 t    t        || j                  |      z        }|dk  rd}||fS |dk  rd}||fS d}||fS )Ni /hYgMb@?r)   g?rk   )r-   rZ   )r   r   rb   rC   s       r"   r   r     s^    
!CGGAJ,
C8|
 	 
f  r$   c                 <   |dk  ryt        | |      }t        | j                  |            }| j                  }t	        | |      \  }}|| _        | j                  |      }|dk(  r|dk  ry|dk(  r|dkD  ry|dz   dk  rt        | |dz         }nt        | |dz   |      }|d   \  }	}
|
|	z
  dk(  r(|d   d   }||z  dkD  r|| _        |dz   S || _        |dz   S |\  }}}}|
|	z
  }t        | |||| j                  |      \  }}}t        | |||      }|| _        ||	z   dz   S )	a  
    Computes the number of zeros of the Riemann zeta function in
    `(0,1) \times (0,t]`, usually denoted by `N(t)`.

    **Examples**

    The first zero has imaginary part between 14 and 15::

        >>> from mpmath import *
        >>> mp.dps = 15; mp.pretty = True
        >>> nzeros(14)
        0
        >>> nzeros(15)
        1
        >>> zetazero(1)
        (0.5 + 14.1347251417347j)

    Some closely spaced zeros::

        >>> nzeros(10**7)
        21136125
        >>> zetazero(21136125)
        (0.5 + 9999999.32718175j)
        >>> zetazero(21136126)
        (0.5 + 10000000.2400236j)
        >>> nzeros(545439823.215)
        1500000001
        >>> zetazero(1500000001)
        (0.5 + 545439823.201985j)
        >>> zetazero(1500000002)
        (0.5 + 545439823.325697j)

    This confirms the data given by J. van de Lune,
    H. J. J. te Riele and D. T. Winter in 1986.
    g%fD,@r   rx   r   r   r   r0   rz   )r   ro   floorrY   r   r   r#   r   rS   r<   r   )r   r   r6   r   r   rb   rC   r   Rblockn1n2r   r   r   r   r    r   rR   r   s                      r"   nzerosr     s\   J 	3ACIIaLAI)#q1CCHAABw1q5	
bQUsY'QqS1'QqS,?AYFB	"uz1IaLQ37 CHQ3J CHQ3J!'N5!Q2-c.?A8;9EGOAq) 	aAACHR46Mr$   c                 h    | j                  |      dz
  | j                  |      | j                  z  z
  S )aw  
    Computes the function
    `S(t) = \operatorname{arg} \zeta(\frac{1}{2} + it) / \pi`.

    See Titchmarsh Section 9.3 for details of the definition.

    **Examples**

        >>> from mpmath import *
        >>> mp.dps = 15; mp.pretty = True
        >>> backlunds(217.3)
        0.16302205431184

    Generally, the value is a small number. At Gram points it is an integer,
    frequently equal to 0::

        >>> chop(backlunds(grampoint(200)))
        0.0
        >>> backlunds(extraprec(10)(grampoint)(211))
        1.0
        >>> backlunds(extraprec(10)(grampoint)(232))
        -1.0

    The number of zeros of the Riemann zeta function up to height `t`
    satisfies `N(t) = \theta(t)/\pi + 1 + S(t)` (see :func:nzeros` and
    :func:`siegeltheta`)::

        >>> t = 1234.55
        >>> nzeros(t)
        842
        >>> siegeltheta(t)/pi+1+backlunds(t)
        842.0

    r   )r   r   r   )r   r   s     r"   	backlundsr   !  s.    H ::a=?3??1-cff444r$   i i z(00)3iaidiiz3(00)i=i=ioioiKiNi'i'iDiDi5i5i"i"i͜JiМJi+di.diOeiRei6٧i:٧z(00)40i(i(iR4yiU4yiýiýieieiii2 i5 i^RiaRi(i(iL=iO=iGi"Givi"viiiii	Ui	Ui_i_ieieihihi$.i'.i;i;iii~)i~)i<i
<i@i@iZDi]DipNisNibibi(i(iiivxiyxiiikini7/i:/i(7i(7ioEirEiOeIiReIipipi5i5iiiEŵiHŵi:i=i#i&i	i	i.	i1	i	iÁ	i&&	i)&	iĺ?	iǺ?	iϴB	iҴB	i_	i_	i_	i_	i&g	i&g	itqo	iwqo	i		i		ic	if	i=	i=	iv	iv	i	i	id	ig	iL
	iO
	i;
i;
i0
i0
iS'
iV'
i,
i,
i@
i@
i1T
i1T
i[
i[
i`
i`
i`c
i`c
if
if
i!y
i!y
iՊ
iՊ
i
i
i
i
iWC
iZC
i>h
iAh
i[b
i^b
i
i
z22(00)iǂ
iʂ
it4diw4dididififz(00)22iyiyiiiךiךi׬i׬isisiii
i
iZi]ititiii!i!i{i{i"i%iyiyi{i~iiiii=&i=&i|Ei|EiwLizLiYiYioYirYi]i]z3(010)i$`i'`ififiˁgi΁gib|ie|i`i`i3i6iii߀ii(>i+>iOiRiiiiÀiii
i
ie
ih
ijimi.Wi1Wi0`i3`i)T/i,T/i	SiSiXiXi]Yi`Yi<Ngi@Ngimimiii*i-iwiwi_ibi٤i٤iii=gi@gi#i#iii`~ic~ib
ie
i?iBi<i?i7(i7(z04(00)i//Ni2/Niz|Qi}|QiNciNcz(010)3i˾eiξeihihiDhiGhihʇikʇiiiiiiiiiliЦiЦiS;iV;i ii%i(iii-i0i'i*i55i55iZ7iZ7i"Mi"Mi`i`iSgiWgiti ti?iBiviviii"Ai%Aikiki#i&iiiii0i0i[i^iXi[iR%iR%iO'iR'iz7i}7iaI?idI?i!Wi$WiKYiNYihihi}li}lioqirqihrikriyiyiiiii(i(i$
i'
im(ip(i[i^iѓiԓiqxitxi@QiCQiSiSiCiFie,ih,iw)iz)iߥii8i;iiiiiiic!if!i'i'i(i(i:6i:6iJiJiOiOi]^i`^iqsitsiexihxi&|i)|i"i"ibibiiiiiAiDiiiaiaiiiii i i1!i1!iʺ*iκ*iP2iS2i.Ii.Ii;Mi;MiSiSididijnimniiiɭi̭iIiLiii !i!iڜiڜikiki*i*iiiiiiili'Di*Diii~ii)i,iFiIiK\iN\izB-i}B-i*Vi*VimimixixiPyiSyi׸iڸi$Îi'Îiĩiǩiϐiϐiiiiimipi5i5i%i%i>KiAKi{~i~~iViYiHiHiii*i*iiiii3i6iiiiiY#iY#i#i#i$i$iNgiQgidligliůiůipipi\i\i׊iڊiNiQiiiiiAiAi	.i.i2i2ipipiii i iii'*i**iZ35i^35i<7i<7i'=i*=iAiAiEiEiEiEiPUiPUi{Xi{Xi fifiiiniri1i1i @i@iii?i?iiiii*i-i$i$z04(010)i9i<i i iImiLmisisiІ4iԆ4iZ6i]6i;i;iBiBicici
vi
vidzidzi}i}i8i8i5i5ixi{iʯiʯiGSiJSiiiQNiTNipipiiizi~iii6i6i} i} iViVi/i/iMo%iPo%i*i*i-i-iA@iA@iNAiRAiGCiJCizXizXi'\i*\i\i\i'li'li1li4lifrifriTKxiWKxi|i|i꣗iiљiљiiiiiii2ji5jiۣii	]i]z032(00)i΄c,iӄc,z(010)40iӹ,iӹ,i9i9i%:i%:z(00)410iw;iw;it?it?z(00)230iqHivHi}Ji}JiQiQ)NN)FT)__doc__	functionsr   r   r#   r-   rS   ri   ru   r   r@   r   r=   r   r   r   r   r   r   r   r
   r+   r$   r"   <module>r      s.  " ,!)F	 EIDL#J" fP0 Y Yv$ E EN #5 #5L&^C(H Cw C	8 CC	8 CC 
8 C C 
8 	C 	C
 
8 C
 C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C 
8 C C  
8 !C  !C" 
8 #C" #C$ 
8 %C$ %C& 
8 'C& 'C( 
8 )C( )C* 
8 +C* +C, 
8 -C, -C. 
8 /C. /C0 
8 1C0 1C2 I 3C2  3C4 I 5C4  5C6 I 7C6  7C8 I 9C8  9C: I ;C:  ;C< I =C<  =C> I ?C>  ?C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ !KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr !sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz !{C| I }C|  }C~ I C~ !C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV !WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf !gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT !UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr !sCt I uCt  uCv I wCv  wCx I yCx !yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC` !aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh !iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN !OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~ !C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^ !_C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp  qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx !yCz I {Cz  {C| I }C|  }C~ I C~  C@ I AC@  ACB I CCB  CCD I ECD  ECF I GCF !GCH I ICH  ICJ I KCJ  KCL I MCL  MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT  UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCl I mCl  mCn I oCn  oCp I qCp !qCr I sCr  sCt I uCt  uCv I wCv  wCx I yCx  yCz I {Cz  {C| I }C|  }C~ I C~  C@	 I A	C@	  A	CB	 I C	CB	  C	CD	 I E	CD	  E	CF	 I G	CF	  G	CH	 I I	CH	  I	CJ	 I K	CJ	  K	CL	 I M	CL	  M	CN	 I O	CN	  O	CP	 I Q	CP	  Q	CR	 I S	CR	  S	CT	 I U	CT	  U	CV	 I W	CV	  W	CX	 I Y	CX	  Y	CZ	 I [	CZ	  [	C\	 I ]	C\	  ]	C^	 I _	C^	  _	C`	 I a	C`	  a	Cb	 I c	Cb	  c	Cd	 I e	Cd	  e	Cf	 I g	Cf	  g	Ch	 I i	Ch	 !i	Cj	 I k	Cj	  k	Cl	 I m	Cl	  m	Cn	 I o	Cn	  o	Cp	 I q	Cp	  q	Cr	 I s	Cr	  s	Ct	 I u	Ct	  u	Cv	 I w	Cv	  w	Cx	 I y	Cx	  y	Cz	 I {	Cz	  {	C|	 I }	C|	 !}	C~	 I 	C~	  	C@
 I A
C@
  A
CB
 I C
CB
  C
CD
 I E
CD
  E
CF
 I G
CF
  G
CH
 I I
CH
  I
CJ
 I K
CJ
  K
CL
 I M
CL
 "M
CN
 I O
CN
  O
CP
 I Q
CP
  Q
CR
 I S
CR
  S
CT
 I U
CT
  U
CV
 I W
CV
 !W
CX
 I Y
CX
  Y
CZ
 I [
CZ
  [
C\
 I ]
C\
  ]
C^
 I _
C^
  _
C`
 I a
C`
  a
Cb
 I c
Cb
  c
Cd
 I e
Cd
  e
Cf
 I g
Cf
  g
Ch
 I i
Ch
  i
Cj
 I k
Cj
  k
Cl
 I m
Cl
  m
Cn
 I o
Cn
  o
Cp
 I q
Cp
 !q
Cr
 I s
Cr
  s
Ct
 I u
Ct
  u
Cv
 I w
Cv
  w
Cx
 I y
Cx
 !y
Cz
 I {
Cz
  {
C|
 I }
C|
  }
C~
 I 
C~
  
C@ I AC@  ACB I CCB !CCD I ECD  ECF I GCF  GCH I ICH  ICJ I KCJ  KCL I MCL !MCN I OCN  OCP I QCP  QCR I SCR  SCT I UCT !UCV I WCV  WCX I YCX  YCZ I [CZ  [C\ I ]C\  ]C^ I _C^  _C` I aC`  aCb I cCb  cCd I eCd  eCf I gCf  gCh I iCh  iCj I kCj  kCn I oCn "oCp I qCp "qCr I sCr "sCt I uCt "uCv I wCv "wCx I yCx "yCz I {Cz "{C| Z }C| $}C~ Z C~ $C@ Z AC@ $ACB Z CCB $CCD Z ECD $EC r$   