Ë
    7^(hÄI ã                   ó@  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZmZmZmZmZmZmZ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  dd
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS ddlTmUZUmVZVmWZW ddlXmYZYmZZZm[Z[ ddl\m]Z] ddl^m_Z_ ddl`maZa d„ Zbd„ Zcd„ Zdd„ Zed„ Zf G d„ de«      Zg G d„ de«      Zh ed«      Zi G d„ d«      Zj G d„ d«      Zk G d „ d!«      Zl G d"„ d#«      Zm G d$„ d%«      Zn G d&„ d'en«      Zo G d(„ d)en«      Zp G d*„ d+en«      Zq G d,„ d-en«      Zr G d.„ d/en«      Zs G d0„ d1en«      Zt G d2„ d3en«      Zu G d4„ d5en«      Zv G d6„ d7en«      Zw G d8„ d9en«      Zx G d:„ d;en«      Zy G d<„ d=en«      Zz G d>„ d?en«      Z{ G d@„ dAen«      Z|dB„ Z}dC„ Z~dD„ ZdE„ Z€dF„ Z�dG„ Z‚dH„ ZƒdI„ Z„dJ„ Z…dK„ Z†dL„ Z‡dMaˆg  edN«      dOddPfdQ„Z‰dR„ ZŠdMa‹	 	 dUdS„ZŒdUdT„Z�yM)Va@  
Expand Hypergeometric (and Meijer G) functions into named
special functions.

The algorithm for doing this uses a collection of lookup tables of
hypergeometric functions, and various of their properties, to expand
many hypergeometric functions in terms of special functions.

It is based on the following paper:
      Kelly B. Roach.  Meijer G Function Representations.
      In: Proceedings of the 1997 International Symposium on Symbolic and
      Algebraic Computation, pages 205-211, New York, 1997. ACM.

It is described in great(er) detail in the Sphinx documentation.
é    )Údefaultdict)Úproduct)Úreduce)Úprod)ÚSYMPY_DEBUG)ÚSÚDummyÚsymbolsÚsympifyÚTupleÚexpandÚIÚpiÚMulÚ
EulerGammaÚooÚzooÚexpand_funcÚAddÚnanÚExprÚRational)ÚMod©Údefault_sort_key)!ÚexpÚsqrtÚrootÚlogÚ
lowergammaÚcosÚbesseliÚgammaÚ
uppergammaÚexpintÚerfÚsinÚbesseljÚEiÚCiÚSiÚShiÚsinhÚcoshÚChiÚfresnelsÚfresnelcÚ
polar_liftÚ	exp_polarÚfloorÚceilingÚrfÚ	factorialÚlerchphiÚ	PiecewiseÚreÚ
elliptic_kÚ
elliptic_e)ÚpolarifyÚ
unpolarify)ÚhyperÚHyperRep_atanhÚHyperRep_power1ÚHyperRep_power2ÚHyperRep_log1ÚHyperRep_asin1ÚHyperRep_asin2ÚHyperRep_sqrts1ÚHyperRep_sqrts2ÚHyperRep_log2ÚHyperRep_cosasinÚHyperRep_sinasinÚmeijerg)ÚMatrixÚeyeÚzeros)ÚapartÚpolyÚPoly)Úresidue)Ú	powdenest)Úsiftc                 óv   — | j                   rt        | d«      S | j                  «       \  }} t        |d«      | z   S ©Né   )Ú	is_Numberr   Úas_coeff_Add)ÚxÚcs     úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/simplify/hyperexpand.pyÚ_mod1r]   U   s7   € ð 	‡{‚{Ü�1�a‹yÐØ�>‰>Ó�D€A€qÜˆq�!‹9�q‰=Ðó    c                 ó84  ‡ ‡‡‡‡	‡
— t        dt        ¬«      \  ŠŠŠŠ
ˆˆˆˆ ˆ
fd„}ˆˆˆˆ ˆ
fd„} |ddt        ‰
«      «        |‰fdt        ‰ ‰
«      «        |‰‰t        j
                  z
  fd‰z  ft        t        ‰‰
«      t        ‰t        j
                  z   ‰
«      dz  g«      t        ddgg«      t        ‰t        j
                  z
  ‰
z  d‰
z
  z  t        j
                  ‰z
  ‰
z  d‰
z
  z  g‰d‰
z
  z  ‰‰
dz
  z  d‰
z
  z  gg«      «        |d	d
t        t        ‰
«      dg«      t        d‰
z  dgg«      t        d‰
‰
dz
  z  gddgg«      «        |t        j
                  dft	        d«      ft        t        ‰
«      dg«      t        ddgg«      t        t        dd«      dd‰
z
  z  dz  gddgg«      «        |t        j
                  t        j
                  ft	        d«      ft        t        ‰
«      t        t        dd«      ‰
«      g«      t        ddgg«      t        t        dd«      t        j
                  gd‰
d‰
z
  z  dz  gg«      «        |‰t        j
                  ‰z   ft        j
                  ft        t        ‰ ‰
«      t        ‰ t        j
                  z
  ‰
«       g«      t        ddgg«      t        d‰ g‰
d‰z  dz
  z  dz  d‰
z
  z  t        j
                  ‰
d‰z  dz
  z  d‰
z
  z  z
  gg«      «        |‰‰ gt        j
                  gt        t        ‰‰
«      t        ‰‰
«      g«      t        ddgg«      t        d‰ g‰‰
z  d‰
z
  z  dd‰
z
  z  dz  gg«      «        |ddgdt        j
                  z  gt        t!        ‰
«      dg«      t        ddgg«      t        ‰
t        j
                  z
  d‰
z
  z  dd‰
z
  z  dz  gddgg«      «        |t        j
                  t        j
                  gt        j"                  gt        t%        ‰
«      t'        ‰
«      g«      t        dt(        z  dgg«      t        t        dd«      dd‰
z  dz
  z  gt        dd«      t        j
                  gg«      «        |t        dd«      t        j
                  gt        j"                  gt        t%        ‰
«      t'        ‰
«      g«      t        ddt(        z  gg«      t        t        dd«      dd‰
z  dz
  z  gt        dd«      t        j
                  gg«      «        |t        dd«      ddgt        j
                  dgt        ‰
t        ‰
«      z  t        ‰
«      dg«      t        t        dd«      t        j"                   d‰
z  z  t        dd«      gg«      t        t        j
                  d‰
d‰
z
  z  dz  gdd‰
‰
dz
  z  gg d¢g«      «        |t        dd«      ddgddgt        t        t        j
                  ‰
«      t+        ‰
«      dg«      t        t        dd«      dd‰
z  z  z
  dd‰
z  z  dd‰
z  z  gg«      t        ‰
dz  ‰
dz
  z  ddgdd‰
dz
  z  z  dt        j
                  gg d¢g«      «        |dg‰gt        ‰
d‰z
  z  t        ‰
«      z  t-        ‰dz
  ‰
«      z  dg«      t        ‰dz
  dgg«      t        d‰z
  ‰
z   dgddgg«      «        |‰gd‰z  gt        ‰
t        j
                  ‰z
  z  t        ‰
dz  «      z  t/        ‰t        j
                  z
  ‰
dz  «      z  t1        ‰t        j
                  z   «      z  dt        j
                  ‰z
  z  z  ‰
t        j
                  ‰z
  z  t        ‰
dz  «      z  t/        ‰t        j
                  z   ‰
dz  «      z  t1        ‰t        j
                  z   «      z  dt        j
                  ‰z
  z  z  g«      t        ddgg«      t        ‰
dz  ‰
dz  g‰
dz  ‰
dz  d‰z  z
  gg«      «       t3        d«      ‰
z  } |‰g‰dz   gt        |‰ z  ‰z  t-        ‰|«      z  ‰t        ‰
«      z  g«      t        ddgg«      t        ‰ dgd‰
gg«      «        |t        dd«      gt        j
                  gt        ‰
«      t5        t(        ‰
z  «      t6         z  t9        t6        t5        ‰
«      z  «      z  z
  «        |dgt        dd«      t        dd«      gt        t5        t(        «      t6        t;        dt5        ‰
«      z  «      z  t=        dt?        ‰
d«      z  t        t6        t(        z  dz  «      z  t5        t(        «      z  «      z  tA        dt5        ‰
«      z  «      tC        dt?        ‰
d«      z  t        t6        t(        z  dz  «      z  t5        t(        «      z  «      z  z   z  t        t6         t(        z  dz  «      z  dt?        ‰
d«      z  z  t5        t(        «      t?        ‰
d«      z  t;        dt5        ‰
«      z  «      tC        dt?        ‰
d«      z  t        t6        t(        z  dz  «      z  t5        t(        «      z  «      z  t6        tA        dt5        ‰
«      z  «      z  t=        dt?        ‰
d«      z  t        t6        t(        z  dz  «      z  t5        t(        «      z  «      z  z   z  t        t6         t(        z  dz  «      z  dz  dg«      t        g d¢g«      t        t        dd«      dt        dd«      g‰
t        dd«      dgg d¢g«      «        |t        j
                  ‰gt        dd«      ‰dz   gt        ‰d‰z  dz
  z  t6         z  t5        t(        ‰
z  «      z  t9        t6        t5        ‰
«      z  «      z  ‰d‰z  dz
  z  t3        d«      ‰
z  ‰ z  z  t-        ‰t3        d«      ‰
z  «      z  ‰d‰z  dz
  z  t        ‰
«      z  g«      t        g d¢g«      t        t        dd«      ddgd‰ dgdd‰
gg«      «        |ddgddgt        tE        ‰
«      tG        ‰
«      z
  t        ‰
«      dtH        g«      t        d‰
z  ddd‰
z  gg«      t        g d¢d‰
ddgg d¢g d¢g«      «        |dt        j
                  ftA        dt5        ‰
«      z  «      «        |g ‰gt        t1        ‰«      ‰
d‰z
  dz  z  z  t/        ‰dz
  dt5        ‰
«      z  «      z  t1        ‰«      ‰
d‰dz  z
  z  z  t/        ‰dt5        ‰
«      z  «      z  g«      t        ddgg«      t        ddg‰
d‰z
  gg«      «       d‰
t        dd«      z  z  Š	ˆ	fd„}ˆ	fd„} |g t        j
                  ‰‰t        j
                  z   gt         |d‰z  dz
  ‰
«       |d‰z  ‰
«      ‰
t        dd«      z  z   |d‰z  dz
  ‰
«      t5        ‰
«      z   |d‰z  ‰
«      ‰
t        dd«      z  z  g«      dd‰z  z  z  t1        d‰z  «      z  ‰
dd‰z  z
  dz  z  z  t        g d¢g«      t        g d¢dt        j
                  ‰z
  ddgddt        j
                  dg‰
ddd‰z
  gg«      «       dd‰
z  t        dd«      z  z  tK        t6        t(        z  dz  «      z  Š	 |g ‰‰t        j
                  z   d‰z  gdt5        t3        d«      ‰
z  «      z  dd‰z  z
  z  t1        d‰z  «      dz  z  t        tM        d‰z  dz
  ‰	«      t/        d‰z  dz
  ‰	«      z  ‰	t/        d‰z  ‰	«      tM        d‰z  dz
  ‰	«      z  t/        d‰z  dz
  ‰	«      tM        d‰z  ‰	«      z  z
  z  ‰	dz  t/        d‰z  ‰	«      z  tM        d‰z  ‰	«      z  ‰	dz  t/        d‰z  ‰	«      tM        d‰z  dz
  ‰	«      z  t/        d‰z  dz
  ‰	«      tM        d‰z  ‰	«      z  z   z  g«      z  t        g d¢g«      t        dt        dd«      ddgddd‰z  z
  dz  t        dd«      dgdddd‰z  z
  t        dd«      gd‰
z  ddd‰z
  gg«      «        |‰g‰t        j
                  z
  d‰z  gt        ‰
t        j
                  ‰z
  z  t/        ‰t        j
                  z
  t5        ‰
«      «      dz  z  ‰
d‰z
  z  t/        ‰t        j
                  z
  t5        ‰
«      «      z  t/        ‰t        dd«      z
  t5        ‰
«      «      z  ‰
t        dd«      ‰z
  z  t/        ‰t        dd«      z
  t5        ‰
«      «      dz  z  g«      t        t1        ‰t        j
                  z   «      dz   dt        j
                  ‰z
  z  z  dt1        ‰t        j
                  z
  «      z  t1        ‰t        j
                  z   «      z  dd‰z
  z  z  dgg«      t        dd‰z  z
  ddg‰
dz  t        j
                  ‰z
  t        j
                  gd‰
dgg«      «        |t        j
                  g‰d‰z
  gt(        d‰z
  z  tO        t(        ‰z  «      z  t        t/        d‰z
  t5        ‰
«      «      t/        ‰dz
  t5        ‰
«      «      z  t5        ‰
«      t/        ‰ t5        ‰
«      «      t/        ‰dz
  t5        ‰
«      «      z  t/        d‰z
  t5        ‰
«      «      t/        ‰t5        ‰
«      «      z  z   z  t/        ‰ t5        ‰
«      «      t/        ‰t5        ‰
«      «      z  g«      z  t        g d¢g«      t        ‰dz
  t        j
                  dg‰
d‰
gdt        j
                  ‰ gg«      «        |t        j
                  gt        dd«      t        dd«      gt        tQ        dt5        ‰
«      z  «      dz  t5        ‰
«      z  t;        dt5        ‰
«      z  «      dz  t5        ‰
«      z  tA        dt5        ‰
«      z  «      g«      t        g d¢g«      t        t        dd«      t        j
                  dgdt        dd«      t        j
                  gdd‰
z  dgg«      «        |t        dd«      gt        dd«      t        dd«      gt        t=        t        t(        t6        z  dz  «      t?        ‰
d«      z  dz  t5        t(        «      z  «      t(        t        t(        t6        z  dz  «      t?        ‰
d«      z  dz  t5        t(        «      z  dz  z  z  t;        dt5        ‰
«      z  «      t5        ‰
«      z  tA        dt5        ‰
«      z  «      g«      t        g d¢g«      t        t        dd«      t        dd«      dgdt        dd«      dgd‰
dgg«      «        |t        dd«      gt        j
                  t        dd«      gt        t5        t(        «      t        t6         t(        z  dz  «      z  tC        dt?        ‰
d«      z  t        t6        t(        z  dz  «      z  t5        t(        «      z  «      z  dt?        ‰
d«      z  z  tA        dt5        ‰
«      z  «      t;        dt5        ‰
«      z  «      t5        ‰
«      z  g«      t        g d¢g«      t        t        dd«      t        dd«      dgg d ¢d‰
t        j
                  gg«      «        |‰‰t        j
                  z   gd‰z  ‰d‰z  ‰z
  dz   gt1        ‰«      t1        d‰z  ‰z
  dz   «      z  t5        ‰
«      dz  dd‰z  z
  z  z  t        t/        ‰dz
  t5        ‰
«      «      t/        d‰z  ‰z
  t5        ‰
«      «      z  t5        ‰
«      t/        ‰t5        ‰
«      «      z  t/        d‰z  ‰z
  t5        ‰
«      «      z  t5        ‰
«      t/        ‰dz
  t5        ‰
«      «      z  t/        d‰z  ‰z
  dz   t5        ‰
«      «      z  t/        ‰t5        ‰
«      «      t/        d‰z  ‰z
  dz   t5        ‰
«      «      z  g«      z  t        g d¢g«      t        dt        j
                  t        j
                  dg‰
dz  d‰z
  d‰
dz  g‰
dz  d‰d‰z  z
  ‰
dz  gdt        j
                  t        j
                  d‰z  gg«      «        |ddgddt        dd«      gt        tS        dt5        ‰
«      z  «      tG        dt5        ‰
«      z  «      z
  tA        dt5        ‰
«      z  «      t5        ‰
«      t;        dt5        ‰
«      z  «      z  dtH        g«      t        d‰
z  dddd‰
z  gg«      t        dt        j
                  dt        dd«      dgg d!¢d‰
t        j
                  ddgg d"¢g d"¢g«      «        |dd‰gdd‰dz   gt        ‰tG        ‰
 «      tU        d‰
 «      z   tH        z   z  ‰
‰dz  d‰z  z
  dz   z  z  ‰‰
 ‰ z  z  t1        ‰«      tW        ‰‰
 «      z
  z  ‰dz
  dz  z  ‰t        ‰
«      z  ‰dz  d‰z  z
  dz   z  ‰‰
‰dz  d‰z  z
  dz   z  z  g«      t        d‰z
  dd‰
z  dgg«      t        ddd‰
z  dgd‰ ddgdd‰
dgg d#¢g«      «       y$)%z Create our knowledge base. za b c, z)Úclsc           
      ó^   •— t        | |«      }‰j                  t        |‰|‰‰‰f«      «       y ©N©ÚHyper_FunctionÚappendÚFormula)	ÚapÚbqÚresÚfuncÚaÚbr[   ÚformulaeÚzs	       €€€€€r\   Úaddzadd_formulae.<locals>.addh   s,   ø€ Ü˜b "Ó%ˆØ�‰œ  a¨¨q°!°Q¨iÓ8Õ9r^   c                 ód   •— t        | |«      }‰	j                  t        |‰
d ‰‰‰f|||«      «       y rb   rc   )rg   rh   ÚBÚCÚMrj   rk   rl   r[   rm   rn   s         €€€€€r\   Úaddbzadd_formulae.<locals>.addbl   s2   ø€ Ü˜b "Ó%ˆØ�‰œ  a¨°°1°a¨y¸!¸QÀÓBÕCr^   © é   rW   r   )rW   rW   )rv   éÿÿÿÿz3/2éþÿÿÿé   )r   r   r   é   é	   é   é   )rW   r   r   )rW   rw   r   )r   rW   rw   r   )r   r   r   r   c                 ó6   •— t        | ‰«      t        | ‰«      z   S rb   ©r"   r(   ©rk   rn   rZ   s     €r\   Úfpzadd_formulae.<locals>.fp÷   ó   ø€ Ü�q˜!‹}œw q¨!›}Ñ,Ð,r^   c                 ó6   •— t        | ‰«      t        | ‰«      z
  S rb   r   r€   s     €r\   Úfmzadd_formulae.<locals>.fmú   r‚   r^   )rW   r   r   r   )r   rW   r   r   iàÿÿÿé   )é   r   r   éýÿÿÿ)r   r   rW   )r   r   rW   r   r   )r   r   r   r   r   )r   r   r   rw   N),r
   r	   r   rA   r   ÚHalfrL   rB   rC   r@   r   rD   rF   rG   rI   rJ   rE   ÚOner;   r<   r   rH   r    r"   r#   r2   r   r   r&   r-   r0   r   r.   r1   r)   r   r   r3   r(   r'   r,   r/   r%   r$   )rm   ro   rt   Úmzr�   r„   rk   rl   r[   rZ   rn   s   `     @@@@@r\   Úadd_formulaer‹   d   só  ý€ ä˜¬Ô/�J€A€qˆ!ˆQ÷:ð :÷Dð Dñ ˆˆB”�A“Ôñ ˆˆˆr”? A 2 qÓ)Ô*ñ 	ˆ!ˆQ”—‘‰Zˆ˜1˜Q™3˜'Ü	”  AÓ&Ü  ¤Q§V¡V¡¨QÓ/°Ñ1ð3ó 
4ä	�!�Q��Ó	Ü	�1”q—v‘v‘:˜q‘. ! a¡%Ñ(¬1¯6©6°A©:°q©.¸!¸a¹%Ñ*@ÐAØ�Q˜‘U‘)˜Q  A¡™Y¨¨A©Ñ.Ð/ð1ó 
2ô	3ñ 	ˆ�Ü	”˜qÓ! 1Ð%Ó	&¬°°A±°q°	¨{Ó(;Ü	�!�Q˜˜A™‘Y� ! Q Ð(Ó	)ô+ñ 	Œ!�&‰&�!ˆ”q˜“x�lÜ	” Ó" AÐ&Ó	'Ü	�!�Q��Ó	Ü	”(˜2˜q“/ 1 a¨!¡e¡9¨Q¡;Ð/°!°Q°Ð8Ó	9ô;ñ 	Œ!�&‰&”!—&‘&Ð	œA˜e›H˜<Ü	” Ó"¤O´H¸RÀ³OÀQÓ$GÐHÓ	IÜ	�!�Q��Ó	Ü	”(˜2˜q“/¤1§6¡6Ð*¨Q°°1°q±5±	¸!±Ð,<Ð=Ó	>ô@ñ 	ˆ!ŒQ�V‰V�a‰Zˆœ1Ÿ6™6˜*Ü	” !  QÓ'¬/¸1¸"¼q¿v¹v¹+ÀqÓ*IÐ)IÐJÓ	KÜ	�!�Q��Ó	Ü	�!�a�R�Ø�R˜‘T˜A‘X‘,˜q‘. ! a¡%Ñ(¬!¯&©&°1°b¸±d¸Q±h±<ÀÀQÁÑ3GÑ*GÐHðJó 
KôLñ 	ˆ!ˆaˆRˆ”1—6‘6�(Ü	Ô! ! QÓ'Ô)9¸!¸QÓ)?Ð@Ó	AÜ	�!�Q��Ó	Ü	�!�a�R�˜1˜Q™3  A¡™;¨¨1¨q©5©	°!©Ð4Ð5Ó	6ô8ñ 	ˆ!ˆQˆ�!”A—F‘F‘(�Ü	” Ó" AÐ&Ó	'¬°!°Q°°Ó)9Ü	�1”q—v‘v‘:  A¡Ñ&¨¨1¨q©5©	°!©Ð4°q¸!°fÐ=Ó	>ô@ñ
 	Œ!�&‰&”!—&‘&Ð	œAŸE™E˜7Ü	”˜A“¤
¨1£Ð.Ó	/Ü	�!”B‘$˜��Ó	Ü	”(˜2˜q“/ 2 q¨¡s¨1¡u¡:Ð.Ü˜2˜q“/¤1§6¡6Ð*ð,ó 
-ô.ñ
 	Œ(�2�q‹/œ1Ÿ6™6Ð	"¤Q§U¡U GÜ	”˜A“¤
¨1£Ð.Ó	/Ü	�!�Q”r‘T��Ó	Ü	”(˜2˜q“/ 2 q¨¡s¨1¡u¡:Ð.Ü˜2˜q“/¤1§6¡6Ð*ð,ó 
-ô.ñ 	Œ(�2�q‹/˜1˜aÐ	 ¤1§6¡6¨1 +Ü	�”> !Ó$Ñ$¤m°AÓ&6¸Ð:Ó	;Ü	”(˜2˜q“/¤A§E¡E 6¨1¨Q©3¡<´¸!¸Q³Ð@ÐAÓ	BÜ	”!—&‘&˜!˜Q  A¡™Y q™[Ð)Ø�Q˜˜1˜q™5™	Ð"Úðó 
ôñ 	Œ(�2�q‹/˜1˜aÐ	  1 a &Ü	”¤§¡¨Ó+¬]¸1Ó-=¸qÐAÓ	BÜ	”(˜1˜a“. 2 q¨¡s¡8Ñ+¨Q°°!±©W°b¸!¸A¹#±hÐ?Ð@Ó	AÜ	�!�A‘#�q˜1‘u‘+˜q !Ð$ q¨!¨Q°©U©)¡}°a¼¿¹Ð&@Â)ÐLÓ	MôOñ 	ˆ!ˆˆqˆc”6˜1˜q 1™u™:¬¨A«Ñ.´¸AÀ¹EÀ1Ó1EÑEÀqÐIÓJÜ	�!�a‘%˜��Ó	œv¨¨A©°©	°1 ~¸¸1°vÐ&>Ó?ôAáˆ!ˆˆq�‰sˆeÜ	�”Q—V‘V˜a‘Z‘¤ Q q¡S£Ñ)¬'°!´a·f±f±*¸aÀ¹cÓ*BÑBÜ˜œQŸV™V™Ó$ñ%Ø%&¬¯©°!©¡_ñ5à”Q—V‘V˜a‘Z‘¤ Q q¡S£Ñ)¬'°!´a·f±f±*¸aÀ¹cÓ*BÑBÜ˜œQŸV™V™Ó$ñ%Ø%&¬¯©°!©¡_ñ5ð6ó 
7ô 
�!�Q��Ó	Ü	�!�A‘#�q˜‘s�˜a ™c A a¡C¨!¨A©#¡IÐ/Ð0Ó	1ô3ô 
�B‹˜Ñ	€BÙˆ!ˆˆq�1‰uˆgÜ	��q�b‘˜!‘œJ q¨"Ó-Ñ-¨q´°Q³©xÐ8Ó	9Ü	�!�Q��Ó	Ü	�1�"�a�˜1˜a˜&Ð!Ó	"ô$ñ
 Œ�"�a‹ÐœAŸF™F˜8¤S¨£V¬d´2°a±4«j¼1¸"©o¼cÄ!ÄDÈÃGÁ)»nÑ.LÑ%LÔMñ 	ˆ!ˆŒx˜˜1‹~œx¨¨1›~Ð.Ü	”$”r“(œAœd 1¤T¨!£W¡9›oÑ-¬h°q¼¸aÀ»±|ÄCÌÌ"ÉÈQÉÃKÑ7OÔPTÔUWÓPXÑ7XÓ.YÑYÜ" 1¤T¨!£W¡9›o¬h°q¼¸aÀ»±|ÄCÌÌ"ÉÈQÉÃKÑ7OÔPTÔUWÓPXÑ7XÓ.YÑYñZñ [äœ˜œ2™˜a™“Lñ!à"#¤D¨¨A£J¡,ñ0ô ”r“(œ4  1›:Ñ%¤t¨A¬d°1«g©I£´xÀÄ$ÀqÈ!Ã*ÁÌSÔQRÔSUÑQUÐVWÑQWË[Ñ@XÔY]Ô^`ÓYaÑ@aÓ7bÑ'bÜ()¬$¨q´°a³©y«/Ñ(9¼(À1ÄTÈ!ÈQÃZÁ<ÔPSÔTUÔVXÑTXÐYZÑTZÓP[ÑC[Ô\`ÔacÓ\dÑCdÓ:eÑ(eñ(fñ gäœ�rœ"‘u˜Q‘w“<ñ à !ñ"ð ðó 
ô 
’�Ó	Ü	”(˜2˜q“/°´8¸A¸q³>ÐBØ !¤8¨A¨q£>ÀÐBÚBðDó 
EôFñ 	Œ!�&‰&�!ˆ”x  1“~ q¨1¡uÐ-Ü	��A�a‘C˜!‘G‘œq˜bÑ!¤$¤r¨!¡t£*Ñ,¬S´´4¸³7±«^Ñ;Ø�A�a‘C˜!‘G‘œj¨›n¨QÑ.°1°"Ñ5Ñ5Ü˜Aœz¨"›~¨aÑ/Ó0ñ1à�A�a‘C˜!‘G‘œS ›VÑ#ð%ó 
&ô 
’�Ó	Ü	”(˜2˜q“/ 1 aÐ(¨1¨q¨b°!¨*°q¸!¸Q°iÐ@Ó	AôCñ 	ˆ!ˆQˆ�!�Q�Ü	”�A“œ˜Q›‘¤ Q£¨¬JÐ7Ó	8Ü	�!�A‘#�q˜!˜R ™TÐ"Ð#Ó	$Ü	’  A q¨! ªlºLÐIÓ	JôLñ ˆŒQ�V‰VˆJœ˜Qœt A›w™Y›Ô(ÙˆˆaˆSÜ	”�q“˜!˜q 1™u a™i™.Ñ(¬°°Q±¸¼$¸q»'¹	Ó)BÑBÜ�q“˜!˜a ! A¡#™g™,Ñ&¤w¨q°!´D¸³G±)Ó'<Ñ<ð>ó 
?ä	�!�Q��Ó	œ6 A q 6¨A°°A±¨<Ð"8Ó9ô;ð 	
ˆ!ŒX�a˜‹^Ñ
Ñ€Aô-ô-ñ 	ˆŒa�f‰f�a˜œQŸV™V™Ð$Ü	‘�A�a‘C˜!‘G˜Q“¡ A a¡C¨£¨A¬x¸¸1«~Ñ,=Ñ!=Ù�A�a‘C˜!‘G˜Q“¤ Q£Ñ'©¨A¨a©C°«°A´xÀÀ1³~Ñ4EÑ)EðGó 
Hàˆr�!‰t‰9ñ
ä˜1˜Q™3“Zñ
 à ! Q¨¨1©¡W¨a¡KÑ 0ñ
1ô 
’�Ó	Ü	’Ø”Q—V‘V˜a‘Z  AÐ&Ø�QœŸ™ Ð"Ø�Q˜˜1˜q™5Ð!ð#ó 
$ô%ð 	
ˆ1ˆQ‰3”˜!˜Q“Ñ
Ñ¤	¬!¬B©$¨q©&Ó 1Ñ1€AÙˆˆa�”Q—V‘V‘˜Q˜q™SÐ!Ø
ŒD”˜B“ Ñ!Ó"Ñ
" a¨!¨A©#¡gÑ	.¬u°Q°q±S«z¸1©}Ñ	<Ü	”˜˜1™˜q™ !Ó$¤W¨Q¨q©S°1©W°aÓ%8Ñ8Ø”G˜A˜a™C “O¤G¨A¨a©C°!©G°QÓ$7Ñ7Ü˜a ™c A™g qÓ)¬'°!°A±#°q«/Ñ9ñ:ñ ;à�A‘”g˜a ™c 1“oÑ%¤g¨a°©c°1£oÑ5Ø�A‘”w˜q ™s A“¤w¨q°©s°Q©w¸Ó':Ñ:Ü   1¡ q¡¨!Ó,¬W°Q°q±S¸!«_Ñ<ñ=ñ >ð	?ó 
@ñ
@ô 
’�Ó	Ü	�!”X˜a “^ Q¨Ð*Ø�a˜!˜A™#‘g˜q‘[¤(¨2¨q£/°1Ð5Ø�Q˜˜A˜a™C™¤¨!¨Q£Ð0Ø�a‘%˜˜A˜q 1™uÐ%ð'ó 
(ô)ñ 	ˆ!ˆˆq”1—6‘6‰z˜1˜Q™3ÐÜ	�”Q—V‘V˜a‘Z‘¤¨¬Q¯V©V©´T¸!³WÓ!=¸qÑ!@Ñ@Ø�Q˜‘U‘œG A¬¯©¡J´°Q³Ó8Ñ8Ü˜!œh q¨!›nÑ,¬d°1«gÓ6ñ7à”X˜a “^ aÑ'Ñ(¬°´X¸aÀ³^Ñ1CÄTÈ!ÃWÓ)MÈqÑ)PÑPðRó 
Sô 
”5˜œQŸV™V™Ó$ aÑ'Ð'¨¬A¯F©F°Q©J©Ñ7Ø”5˜œQŸV™V™Ó$Ñ$¤U¨1¬q¯v©v©:Ó%6Ñ6°q¸1¸q¹5±zÑAØðð ó 
ô 
�!�a˜‘c‘'˜1˜a� 1 Q¡3¬¯©°©
´A·F±FÐ";¸aÀÀA¸YÐGÓ	HôJñ 	Œ!�&‰&ˆ�A�q˜1‘u�:Ü	ˆQ�‰U‰”Cœ˜1™“IÑ	Ü	”˜˜Q™¤ Q£Ó(¬°°Q±¼¸Q»Ó)@Ñ@Ü�a“œ' 1 "¤d¨1£gÓ.¬w°q¸1±u¼dÀ1»gÓ/FÑFÜ# A¨¡E¬4°«7Ó3´G¸A¼tÀA»wÓ4GÑGñHñ Iä˜!˜œT !›WÓ%¤g¨a´°a³Ó&9Ñ9ð;ó 
<ñ
<ô
 
’�Ó	Ü	�!�a‘%œŸ™ Ð#Ø�Q˜�Ø”Q—V‘V˜a˜R�ð"ó 
#ô	$ñ 	Œ!�&‰&ˆ”H˜Q “N¤H¨Q°£NÐ3Ü	”�Q”t˜A“w‘Y“ Ñ!¤$ q£'Ñ)¬4°´$°q³'±	«?¸1Ñ+<¼TÀ!»WÑ+DÜ�aœ˜Q›‘i“ð"ó 
#ä	’�Ó	Ü	”(˜2˜q“/¤1§6¡6¨1Ð-°´8¸BÀ³?ÄAÇFÁFÐ/KÈaÐQRÐSTÑQTÐVWÈ[ÐYÓ	Zô	\ñ 	Œ(�1�a‹.Ð	œH Q¨›N¬H°Q¸«NÐ;Ü	ÜÜÜœ‘T˜!‘VóÜ!Ø˜Aóñà ñ!ä!%Üó"!ñ!ó#ô
 "$¤s¬2¬a©4°©6£{´4¸¸1³:Ñ'=¸aÑ'?ÄÄRÃÑ'HÈ1Ñ&LÑ!LñOô �A”d˜1“g‘I‹œt A›wÑ&Ü�A”d˜1“g‘I‹ð!ó
"ô 
’�Ó	Ü	”(˜2˜q“/¤H¨Q°£O°QÐ7Øœ8 B¨›?¨QÐ/Ø˜A QÐ'ð)ó 
*ô+ñ& 	Œ(�1�a‹.Ð	œAŸF™F¤H¨Q°£NÐ3Ü	ÜÜóÜÜ�Rœ‘U˜1‘Wóñä&Øœ4  1›:™¤c¬!¬B©$¨q©&£kÑ1´$´r³(Ñ:ó<ñ<ð >?¼tÀAÀq»z¹\ñKô �A”d˜1“g‘I‹Ü�A”d˜1“g‘I‹œt A›wÑ&ð)ó
*ô 
’�Ó	Ü	”(˜2˜q“/¤H¨Q°£N°AÐ;Ú+Ø˜A¤A§F¡FÐ+ð-ó 
.ô/ñ" 	ˆ!ˆQ”—‘‰Zˆ˜1˜Q™3  1 Q¡3¨¡7¨Q¡;Ð/Ü	ˆq‹”%˜˜!™˜a™ !™Ó$Ñ	$¬¨Q«°©	°Q¸¸1¹±WÑ'=Ñ	=Ü	”˜˜Q™¤ Q£Ó(¬°°1±°q±¼$¸q»'Ó)BÑBÜ�a“œ ¤D¨£GÓ,Ñ,¬W°Q°q±S¸1±W¼dÀ1»gÓ-FÑFÜ�a“œ  Q¡¬¨Q«Ó0Ñ0´¸¸1¹¸q¹À1¹ÄdÈ1ÃgÓ1NÑNÜ˜œD ›GÓ$¤W¨Q¨q©S°1©W°q©[¼$¸q»'Ó%BÑBðDó 
Eñ
Eô
 
’�Ó	Ü	�!”Q—V‘VœQŸV™V QÐ'Ø�A‘#�q˜1‘u˜a  1¡Ð%Ø�A‘#�q˜!˜a ™c™' 1 Q¡3Ð'Ø”Q—V‘VœQŸV™V R¨¡TÐ*ð,ó 
-ô
.ñ 	ˆ!ˆQˆ�!�Qœ  A›Ð'Ü	”�Q”t˜A“w‘Y“¤# a¬¨Q«¡i£.Ñ0Ü�aœ˜Q›‘i“¤$ q£'¬$¨q´°a³©y«/Ñ"9¸1¼jðJó 
Kä	�!�A‘#�q˜!˜Q  1¡Ð%Ð&Ó	'Ü	�!”Q—V‘V˜Q¤¨¨Q£°Ð3Ú Ø�QœŸ™  1Ð%Ú Ú ð	"ó 
#ô	$ñ( 	ˆ!ˆQ�ˆ�Q˜˜1˜Q™3�KÜ	�”C˜˜“Gœf Q¨¨›mÑ+¬jÑ8Ñ9¸1¸aÀ¹dÀQÀqÁS¹jÈ1¹nÑ;MÑNØ�Q�B˜1˜"‘:‘œu Q›x¬*°Q¸¸Ó*;Ñ;Ñ<¸aÀ!¹eÀa¹ZÑGØ”3�q“6‘˜1˜a™4 ! A¡#™:¨™>Ñ*Ø�A�q˜!‘t˜a ™c‘z A‘~Ñ&Ñ'ð)ó 
*ô 
�!�A‘#�q˜"˜Q™$ Ð"Ð#Ó	$Ü	�"�Q�r˜!‘t˜A�Ø�Q�B�q˜�Ø�A�a˜�Úðó 
õ	r^   c                 ó  ‡ ‡‡	‡
‡‡— t        t        t        d«      «      \  ŠŠ	Š
Št        d«      Šˆˆ	ˆ
ˆ ˆˆfd„}ˆˆfd„} |‰‰z   gg ‰‰‰z   gg t        t	        d‰z
  «      ‰‰z  z  t        ‰«      z  t        ‰‰«      z  t	        d‰z
  «      ‰‰‰z   z  z  g«      t        ddgg«      t        ‰‰z   dgd‰‰z   gg«      |«       ˆfd„}t        d	t        ‰«      z  «      }t        d	t        ‰«      z  «      }t        d	t        ‰«      z  «      t        d	z  z
  }t        d	t        ‰«      z  «      } |‰gg ‰‰‰t        j                  z
  gg t        t        t        «      ‰‰t        j                  z
  z  z  ||z  ||z  z
  z  t        t        «      ‰‰z  z  ||z  ||z  z   z  t        t        «      ‰‰z  z  g«      t        g d
¢g«      t        ‰t        j                  z
  ddg‰‰t        j                  gdd‰gg«      |«       y )NÚabczÚrhoc                 óT   •— ‰j                  t        | |||‰‰‰	‰
‰g||||«
      «       y rb   )re   ÚMeijerFormula)Úanrg   Úbmrh   rq   rr   rs   Úmatcherrk   rl   r[   rm   rŽ   rn   s           €€€€€€r\   ro   z!add_meijerg_formulae.<locals>.addˆ  s3   ø€ Ø�‰œ b¨"¨b°"°a¸!¸QÀÀ3¸Ø&'¨¨A¨wó8õ 	9r^   c                 ó  •— | j                   d   }| j                  \  }}d}t        ||z
  j                  «       «      sd}||}}t        ||z
  j                  «       «      s||z
  dkD  ry ||g}|r||g}‰|‰||z
  it	        |gg |g «      fS )Nr   FT)r‘   r’   r]   ÚsimplifyÚ
G_Function)rj   rZ   Úyrn   ÚswappedÚlrk   rŽ   s         €€r\   Údetect_uppergammaz/add_meijerg_formulae.<locals>.detect_uppergammaŒ  s¡   ø€ Ø�G‰G�A‰JˆØ�w‰w‰ˆˆ1ØˆÜ�a˜!‘e×%Ñ%Ó'Ô(ØˆGØ˜�ˆQÜ�!�a‘%×!Ñ!Ó#Ô$¨¨A©°ª	ØØ�ˆFˆÙØ�A�ˆAØ�Q˜˜1˜q™5Ð!¤:¨q¨c°2°q¸"Ó#=Ð=Ð=r^   rW   r   rw   c           
      ó¬  •— | j                   d   }| j                  \  }}}t        ||z
  j                  «       «      dk(  rVt        ||z
  j                  «       «      dk(  ryt        j
                  t        j
                  t        j                  f}|||}}}nŠt        ||z
  j                  «       «      dk(  r6t        j
                  t        j                  t        j
                  f}|||}}}n5t        j                  t        j
                  t        j
                  f}|||}}}t        ||z
  j                  «       «      dk7  s\t        ||z
  j                  «       «      dk7  s=t        ||z
  j                  «       «      t        j
                  k7  s||z
  dkD  s||z
  dkD  ry‰
|it        |gg |D �	cg c]  }	|t        j
                  z
  |	z   ‘Œ c}	g «      fS c c}	w )z.https://functions.wolfram.com/07.34.03.0984.01r   N)r‘   r’   r]   r•   r   rˆ   ÚZeror–   )rj   rZ   ÚuÚvÚwÚsigÚx1Úx2r—   Útrk   s             €r\   Údetect_3113z)add_meijerg_formulae.<locals>.detect_3113¡  s  ø€ à�G‰G�A‰JˆØ—'‘'‰ˆˆ1ˆaÜ�!�a‘%×!Ñ!Ó#Ó$¨Ò)Ü�a˜!‘e×%Ñ%Ó'Ó(¨AÒ-ØÜ—6‘6œ1Ÿ6™6¤1§6¡6Ð*ˆCØ˜1˜a�A�‰Bä�a˜!‘e×%Ñ%Ó'Ó(¨AÒ-Ü—v‘vœqŸv™v¤q§v¡vÐ.�Ø˜q !�r�A‘ä—v‘vœqŸv™v¤q§v¡vÐ.�Ø˜q !�r�2�ä�1�r‘6×#Ñ#Ó%Ó&¨!Ò+Ü�1�r‘6×#Ñ#Ó%Ó&¨!Ò+Ü�1�q‘5×"Ñ"Ó$Ó%¬¯©Ò/Ø�B‘˜’
˜a "™f qšjØà�1ˆv”z 1 # rÀCÖ+H¸q¨A´·±©J¸«NÒ+HÈ"ÓMÐMÐMùÒ+Hs   Æ+Grv   )rx   r   r   )ÚlistÚmapr	   rL   r#   r   r$   r'   r   r!   r+   r   r*   r   rˆ   )rm   ro   rš   r¤   ÚsÚc_ÚS_rr   rk   rl   r[   rŽ   rn   s   `       @@@@@r\   Úadd_meijerg_formulaerª   „  sæ  ý€ Ü”cœ% Ó(Ó)�J€A€qˆ!ˆQÜ
�‹,€C÷9ñ 9õ>ñ ˆˆS‰ˆ	�2˜˜Q ™W�~ rÜ”�a˜!‘e“˜Q ™VÑ#¤C¨£FÑ*¬:°a¸Ó+;Ñ;Ü�a˜!‘e“˜Q  S¡™\Ñ)ð+ó 	,ä��A�ˆxÓÜ��q‘˜"�  1 s¡7˜|Ð,Ó-ØôôNô2 	ˆAŒd�1‹g‰I‹€AÜ	ˆQŒt�A‹w‰Y‹€BÜ	ˆAŒd�1‹g‰I‹œ˜A™Ñ	€BÜ
ˆ1ŒT�!‹W‰9‹€AÙˆˆˆR�!�Q˜œAŸF™F™
Ð# RÜ””R“˜˜Q¤§¡™Z™Ñ(¨"¨R©%°!°A±#©+Ñ6Ü”R“˜˜A™‘˜q ™t b¨¡d™{Ñ+Ü”R“˜˜A™‘ðó 	 ô 	’
ˆ|ÓÜ�”Q—V‘V‘˜R Ð# a¨¬A¯F©F ^°a¸¸A°YÐ?Ó@Øõr^   c                 ó   ‡ — ˆ fd„}|S )z@ Create a function that simplifies rational functions in ``z``. c                 óä   •— | j                  «       \  }}|j                  «       }t        |‰«      j                  t        |‰«      «      \  }}}||j	                  «       z  |j	                  «       z  S )z6 Efficiently simplify the rational function ``expr``. )Úas_numer_denomr   rP   ÚcancelÚas_expr)ÚexprÚnumerÚdenomr[   rn   s       €r\   Úsimpzmake_simp.<locals>.simpÊ  s^   ø€ à×*Ñ*Ó,‰ˆˆuØ—‘“ˆä˜u a›.×/Ñ/´°U¸A³Ó?‰ˆˆ5�%Ø�5—=‘=“?Ñ" U§]¡]£_Ñ4Ð4r^   ru   )rn   r³   s   ` r\   Ú	make_simpr´   Ç  s   ø€ ô5ð €Kr^   c                  óN   — t         r| D ]  }t        |d¬«       Œ t        «        y y )NÚ )Úend)r   Úprint)Úargsrk   s     r\   Údebugrº   Õ  s(   € ÝØò 	ˆAÜ�!˜Öð	ä�ð r^   c                   ót   ‡ — e Zd ZdZˆ fd„Zed„ «       Zed„ «       Zed„ «       Zˆ fd„Z	d„ Z
d„ Zd	„ Zd
„ Zˆ xZS )rd   z( A generalized hypergeometric function. c                 ó¶   •— t         ‰| �  | «      }t        t        t	        t
        |«      «      Ž |_        t        t        t	        t
        |«      «      Ž |_        |S rb   )ÚsuperÚ__new__r   r¥   r¦   r   rg   rh   )r`   rg   rh   ÚobjÚ	__class__s       €r\   r¾   zHyper_Function.__new__ß  sD   ø€ Ü‰g‰o˜cÓ"ˆÜœœS¤¨›_Ó-Ð.ˆŒÜœœS¤¨›_Ó-Ð.ˆŒØˆ
r^   c                 ó2   — | j                   | j                  fS rb   )rg   rh   ©Úselfs    r\   r¹   zHyper_Function.argså  s   € à—‘˜Ÿ™Ð!Ð!r^   c                 óV   — t        | j                  «      t        | j                  «      fS rb   )Úlenrg   rh   rÂ   s    r\   ÚsizeszHyper_Function.sizesé  s   € ä�D—G‘G“œc $§'¡'›lÐ+Ð+r^   c                 ó:   — t        d„ | j                  D «       «      S )zt
        Number of upper parameters that are negative integers

        This is a transformation invariant.
        c              3   ób   K  — | ]'  }t        |j                  xr |j                  «      –— Œ) y ­wrb   )ÚboolÚ
is_integerÚis_negative©Ú.0rZ   s     r\   ú	<genexpr>z'Hyper_Function.gamma.<locals>.<genexpr>ô  s"   è ø€ ÒI¸A”4˜Ÿ™Ò6¨¯©×7ÑIùs   ‚-/)Úsumrg   rÂ   s    r\   r#   zHyper_Function.gammaí  s   € ô ÑIÀÇÁÔIÓIÐIr^   c                 óR   •— t         ‰| �  «       | j                  | j                  fz   S rb   )r½   Ú_hashable_contentrg   rh   ©rÃ   rÀ   s    €r\   rÑ   z Hyper_Function._hashable_contentö  s*   ø€ Ü‰wÑ(Ó*¨d¯g©gØ—‘ð.ñ ð 	r^   c                 óD   — t        | j                  | j                  |«      S rb   )r?   rg   rh   )rÃ   Úargs     r\   Ú__call__zHyper_Function.__call__ú  s   € Ü�T—W‘W˜dŸg™g sÓ+Ð+r^   c                 ó¦   — t        | j                  t        «      t        | j                  t        «      }}d„ }| j                   ||«       ||«      fS )a6  
        Compute the invariant vector.

        Explanation
        ===========

        The invariant vector is:
            (gamma, ((s1, n1), ..., (sk, nk)), ((t1, m1), ..., (tr, mr)))
        where gamma is the number of integer a < 0,
              s1 < ... < sk
              nl is the number of parameters a_i congruent to sl mod 1
              t1 < ... < tr
              ml is the number of parameters b_i congruent to tl mod 1

        If the index pair contains parameters, then this is not truly an
        invariant, since the parameters cannot be sorted uniquely mod1.

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import Hyper_Function
        >>> from sympy import S
        >>> ap = (S.Half, S.One/3, S(-1)/2, -2)
        >>> bq = (1, 2)

        Here gamma = 1,
             k = 3, s1 = 0, s2 = 1/3, s3 = 1/2
                    n1 = 1, n2 = 1,   n2 = 2
             r = 1, t1 = 0
                    m1 = 2:

        >>> Hyper_Function(ap, bq).build_invariants()
        (1, ((0, 1), (1/3, 1), (1/2, 2)), ((0, 2),))
        c           
      óä   — t        | j                  «       «      } t        d„ | D «       «      s| j                  d„ ¬«       t	        | D ��cg c]  \  }}|r|t        |«      f‘Œ c}}«      } | S c c}}w )Nc              3   óB   K  — | ]  }t        |d    t        «      –— Œ y­w)r   N)Ú
isinstancer   rÌ   s     r\   rÎ   z>Hyper_Function.build_invariants.<locals>.tr.<locals>.<genexpr>$  s   è ø€ Ò=°”z ! A¡$¬×,Ñ=ùs   ‚c                 ó   — t        | d   «      S ©Nr   r   ©rZ   s    r\   ú<lambda>z=Hyper_Function.build_invariants.<locals>.tr.<locals>.<lambda>%  s   € Ô*:¸1¸Q¹4Ó*@€ r^   ©Úkey)r¥   ÚitemsÚanyÚsortÚtuplerÅ   )ÚbucketÚmodÚvaluess      r\   Útrz+Hyper_Function.build_invariants.<locals>.tr"  sg   € Ü˜&Ÿ,™,›.Ó)ˆFÜÑ=°fÔ=Ô=Ø—‘Ñ @�ÔAÜÀ&÷ ±;°3¸Ùð !¤# f£+Ò.ó ó ˆFàˆMùós   Á	A,
)rT   rg   r]   rh   r#   )rÃ   ÚabucketsÚbbucketsrç   s       r\   Úbuild_invariantszHyper_Function.build_invariantsý  sD   € ôF " $§'¡'¬5Ó1´4¸¿¹ÄÓ3G�(ˆò	ð —
‘
™B˜x›L©"¨X«,Ð7Ð7r^   c                 óš  — | j                   |j                   k7  ry| j                  | j                  |j                  |j                  fD �cg c]  }t        |t        «      ‘Œ c}\  }}}}d}||f||ffD ]Ï  \  }}	t        t        |j                  «       «      t        |	j                  «       «      z   «      D ]‹  }
|
|vs!|
|	vst        ||
   «      t        |	|
   «      k7  r  yt        ||
   «      }t        |	|
   «      }|j                  «        |j                  «        t        ||«      D ]  \  }}|t        ||z
  «      z  }Œ Œ� ŒÑ |S c c}w )zd Estimate how many steps it takes to reach ``func`` from self.
            Return -1 if impossible. rw   r   )r#   rg   rh   rT   r]   Úsetr¥   ÚkeysrÅ   râ   ÚzipÚabs)rÃ   rj   ÚparamsÚ	oabucketsÚ	obbucketsrè   ré   Údiffrä   Úobucketrå   Úl1Úl2ÚiÚjs                  r\   Ú
difficultyzHyper_Function.difficulty,  sD  € ð �:‰:˜Ÿ™Ò#ØàŸ7™7 D§G¡G¨T¯W©W°d·g±gÐ>ö4@Øô 59¸ÄÕ4Gò 4@Ñ0ˆ	�9˜h¨ð ˆØ!)¨9Ð 5¸À)Ð7LÐMò 
	'‰OˆF�GÜœ4 §¡£Ó.´°g·l±l³nÓ1EÑEÓFò 	'�Ø˜vÑ%¨3°gÑ+=Ü˜v c™{Ó+¬s°7¸3±<Ó/@Ò@ÚÜ˜& ™+Ó&�Ü˜' #™,Ó'�Ø—‘”	Ø—‘”	Ü  B›Kò '‘D�A�qØœC  A¡›JÑ&‘Dñ'ñ	'ð
	'ð ˆùò!4@s   ÁEc                 ó  — | j                   D ]7  }| j                  D ]&  }||z
  j                  sŒ||z
  j                  du sŒ%  y Œ9 | j                   D ]	  }|dk(  sŒ	 y | j                  D ]  }|j                  sŒ|j                  sŒ y y)a‘  
        Decide if ``self`` is a suitable origin.

        Explanation
        ===========

        A function is a suitable origin iff:
        * none of the ai equals bj + n, with n a non-negative integer
        * none of the ai is zero
        * none of the bj is a non-positive integer

        Note that this gives meaningful results only when none of the indices
        are symbolic.

        Fr   T)rg   rh   rÊ   rË   Úis_nonpositive)rÃ   rk   rl   s      r\   Ú_is_suitable_originz"Hyper_Function._is_suitable_originC  s–   € ð  —‘ò 	!ˆAØ—W‘Wò !�Ø˜‘E×%Ó%¨1¨q©5×*=Ñ*=ÀÒ*FÚ ñ!ð	!ð —‘ò 	ˆAØ�A‹vÙð	ð —‘ò 	ˆAØ�|‹| × 0Ó 0Ùð	ð r^   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r¾   Úpropertyr¹   rÆ   r#   rÑ   rÕ   rê   rù   rü   Ú__classcell__©rÀ   s   @r\   rd   rd   Ü  sc   ø„ Ù2ôð ñ"ó ð"ð ñ,ó ð,ð ñJó ðJôò,ò-8ò^ö.r^   rd   c                   óX   ‡ — e Zd ZdZˆ fd„Zed„ «       Zˆ fd„Zd„ Zd„ Z	ed„ «       Z
ˆ xZS )r–   z A Meijer G-function. c                 óF  •— t         ‰| �  | «      }t        t        t	        t
        |«      «      Ž |_        t        t        t	        t
        |«      «      Ž |_        t        t        t	        t
        |«      «      Ž |_        t        t        t	        t
        |«      «      Ž |_	        |S rb   )
r½   r¾   r   r¥   r¦   r   r‘   rg   r’   rh   )r`   r‘   rg   r’   rh   r¿   rÀ   s         €r\   r¾   zG_Function.__new__c  sr   ø€ Ü‰g‰o˜cÓ"ˆÜœœS¤¨›_Ó-Ð.ˆŒÜœœS¤¨›_Ó-Ð.ˆŒÜœœS¤¨›_Ó-Ð.ˆŒÜœœS¤¨›_Ó-Ð.ˆŒØˆ
r^   c                 ó^   — | j                   | j                  | j                  | j                  fS rb   )r‘   rg   r’   rh   rÂ   s    r\   r¹   zG_Function.argsk  s!   € à—‘˜Ÿ™ $§'¡'¨4¯7©7Ð3Ð3r^   c                 ó:   •— t         ‰| �  «       | j                  z   S rb   )r½   rÑ   r¹   rÒ   s    €r\   rÑ   zG_Function._hashable_contento  s   ø€ Ü‰wÑ(Ó*¨T¯Y©YÑ6Ð6r^   c                 óp   — t        | j                  | j                  | j                  | j                  |«      S rb   )rK   r‘   rg   r’   rh   )rÃ   rn   s     r\   rÕ   zG_Function.__call__r  s%   € Ü�t—w‘w §¡¨¯©°$·'±'¸1Ó=Ð=r^   c                 ó  ‡— t        d«      D �cg c]  }t        t        «      ‘Œ c}x}\  }}}}t        || j                  | j
                  | j                  | j                  f«      D ])  \  }}|D ]  }	|t        |	«         j                  |	«       Œ! Œ+ t        |d«      D ]=  \  }}
|j                  «       D ]%  \  }}|d   Š|j                  ˆfd„|
¬«       |||<   Œ' Œ? t        |D �cg c]  }t        |«      ‘Œ c}«      S c c}w c c}w )a«  
        Compute buckets for the fours sets of parameters.

        Explanation
        ===========

        We guarantee that any two equal Mod objects returned are actually the
        same, and that the buckets are sorted by real part (an and bq
        descendending, bm and ap ascending).

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import G_Function
        >>> from sympy.abc import y
        >>> from sympy import S

        >>> a, b = [1, 3, 2, S(3)/2], [1 + y, y, 2, y + 3]
        >>> G_Function(a, b, [2], [y]).compute_buckets()
        ({0: [3, 2, 1], 1/2: [3/2]},
        {0: [2], y: [y, y + 1, y + 3]}, {0: [2]}, {y: [y]})

        rz   )TFFTr   c                 ó   •— | ‰z
  S rb   ru   )rZ   Úx0s    €r\   rÝ   z,G_Function.compute_buckets.<locals>.<lambda>•  s   ø€ ¨¨R©€ r^   )rß   Úreverse)Úranger   r¥   rî   r‘   rg   r’   rh   r]   re   rà   râ   rã   Údict)rÃ   r÷   ÚdictsÚpanÚpapÚpbmÚpbqÚdicÚlisrZ   ÚflipÚmrà   rŸ   r  s                 @r\   Úcompute_bucketszG_Function.compute_bucketsu  s  ø€ ô0 BGÀqÃÖ%J¸A¤k´$Õ&7Ò%JÐJˆÑ"��S˜#˜sÜ˜E D§G¡G¨T¯W©W°d·g±g¸t¿w¹wÐ#GÓHò 	(‰HˆC�Øò (�Ø”E˜!“H‘×$Ñ$ QÕ'ñ(ð	(ô ˜UÐ$>Ó?ò 	‰IˆC�ØŸI™I›Kò ‘��5Ø˜1‘X�Ø—
‘
Ó/¸�
Ô>Ø��A’ñð	ô  uÖ- !”d˜1•gÒ-Ó.Ð.ùò &Kùò .s   �DÃ(Dc                 ó¦   — t        | j                  «      t        | j                  «      t        | j                  «      t        | j                  «      fS rb   )rÅ   r‘   rg   r’   rh   rÂ   s    r\   Ú	signaturezG_Function.signatureš  s1   € ä�D—G‘G“œc $§'¡'›l¬C°·±«L¼#¸d¿g¹g»,ÐGÐGr^   )rý   rþ   rÿ   r   r¾   r  r¹   rÑ   rÕ   r  r  r  r  s   @r\   r–   r–   `  sE   ø„ Ù ôð ñ4ó ð4ô7ò>ò#/ðJ ñHó ôHr^   r–   rZ   c                   ó4   — e Zd ZdZd„ Zdd„Zed„ «       Zd„ Zy)rf   a-  
    This class represents hypergeometric formulae.

    Explanation
    ===========

    Its data members are:
    - z, the argument
    - closed_form, the closed form expression
    - symbols, the free symbols (parameters) in the formula
    - func, the function
    - B, C, M (see _compute_basis)

    Examples
    ========

    >>> from sympy.abc import a, b, z
    >>> from sympy.simplify.hyperexpand import Formula, Hyper_Function
    >>> func = Hyper_Function((a/2, a/3 + b, (1+a)/2), (a, b, (a+b)/7))
    >>> f = Formula(func, z, None, [a, b])

    c                 óH  — | j                   j                  D �cg c]  }t        |z   ‘Œ }}| j                   j                  D �cg c]  }t        |z   dz
  ‘Œ }}t        t	        |Ž z  | j
                  t	        |Ž z  z
  }t        |t        «      } |j                  «       dz
  }|g}t        |«      D ]<  }	|j                  | j
                  |d   j                  | j
                  «      z  «       Œ> t        |«      | _        t        dgdg|z  z   g«      | _        t        |«      }
|
j                  dt!        |d«      «      }
 |j"                  «       dd }|j%                  «        |
j'                  |t        |g«        |j"                  «       d   z  «      | _        yc c}w c c}w )zª
        Compute a set of functions B=(f1, ..., fn), a nxn matrix M
        and a 1xn matrix C such that:
           closed_form = C B
           z d/dz B = M B.
        rW   rw   r   N)rj   rg   Ú_xrh   r   rn   rQ   Údegreer  re   ró   rL   rq   rr   rM   Ú
col_insertrN   Ú
all_coeffsr  Ú
row_insertrs   )rÃ   Úclosed_formrk   Úafactorsrl   Úbfactorsr°   rP   ÚnÚ_r  r™   s               r\   Ú_compute_basiszFormula._compute_basisº  s\  € ð %)§I¡I§L¡LÖ1˜q”B˜“FÐ1ˆÐ1Ø(,¯	©	¯©Ö5 1”B˜‘F˜Q“JÐ5ˆÐ5Ü”#�x�.Ñ  4§6¡6¬#¨x¨.Ñ#8Ñ8ˆÜ�Dœ"‹~ˆàˆD�K‰K‹M˜AÑˆØˆMˆÜ�q“ò 	0ˆAØ�H‰H�T—V‘V˜A˜b™EŸJ™J t§v¡vÓ.Ñ.Õ/ð	0ô ˜“ˆŒÜ˜!˜ ˜s 1™u™˜Ó&ˆŒä�‹FˆØ�L‰L˜œE ! Q›KÓ(ˆØˆD�O‰OÓ˜a˜bÐ!ˆØ	�	‰	ŒØ—‘˜a¤&¨!¨£+ ¨o¨d¯o©oÓ.?ÀÑ.BÑ!BÓCˆ�ùò# 2ùÚ5s   ™FÁFNc                 ó
  — t        |«      }t        |«      }t        |«      D �cg c]  }|j                  |«      sŒ|‘Œ }}|| _        || _        || _        || _        || _        || _        |�| j                  |«       y y c c}w rb   )	r   Úhasrn   r
   rq   rr   rs   rj   r'  )	rÃ   rj   rn   ri   r
   rq   rr   rs   rZ   s	            r\   Ú__init__zFormula.__init__Ô  s   € Ü�A‹JˆÜ�c‹lˆÜ% gÓ.Ö>˜°$·(±(¸1µ+’1Ð>ˆÐ>àˆŒØˆŒØˆŒØˆŒØˆŒØˆŒ	ð
 ˆ?Ø×Ñ Õ$ð ùò ?s
   ¤B »B c                 óv   — t        d„ t        | j                  | j                  «      t        j
                  «      S )Nc                 ó   — | |d   |d   z  z   S ©Nr   rW   ru   ©r§   r  s     r\   rÝ   z%Formula.closed_form.<locals>.<lambda>è  ó   €  ! A a¡D¨¨1©¡I¡+€ r^   ©r   rî   rr   rq   r   rœ   rÂ   s    r\   r"  zFormula.closed_formæ  ó%   € äÑ-¬s°4·6±6¸4¿6¹6Ó/BÄAÇFÁFÓKÐKr^   c                 óZ  ‡ ‡!— ddl m} |j                  }|j                  }t	        |«      t	        ‰ j
                  j                  «      k7  s+t	        |«      t	        ‰ j
                  j                  «      k7  rt        d«      ‚g }‰ j                  D ]w  }|‰ j
                  j                  j                  v r|j                  |«       Œ7|‰ j
                  j                  j                  v r|j                  |«       Œkt        d|›�«      ‚ t        |Ž D �cg c]*  }t        t        t        ‰ j                  |«      «      «      ‘Œ, }}||fD �	cg c]  }	t        |	t         «      ‘Œ c}	\  }
}|
|fD ���cg c]/  }|j#                  «       D ��ci c]  \  }}|t	        |«      “Œ c}}‘Œ1 c}}}\  }}‰ j                  D �cg c]  }dg‘Œ }}g }t%        «       }|D �](  Š!‰ j
                  j                  ‰ j
                  j                  fD �	cg c]  }	t        |	ˆ!fd„«      ‘Œ c}	\  }}|
|f||ffD �]3  \  }}t'        t        |j)                  «       «      t        |j)                  «       «      z   «      D ]î  }||vs!||vst	        ||   «      t	        ||   «      k7  r Œmt        ‰ j                  |«      D ]¬  \  }}‰!|   j*                  rŒ||   D �cg c]  }|j-                  |«      sŒ|‘Œ }}‰!j/                  «       }||xx   |z  cc<   |D ]Q  }||   D ]G  } ||j1                  |«      |z
  |«      \  }|j*                  rt        d«      ‚|j                  |«       ŒI ŒS Œ® Œð �Œ6 g }t        ‰ j                  |«      D ]a  \  }}‰!|   }t3        t5        |«      «      }t7        t9        |«      «      }|j                  t;        ||dz   «      D � cg c]  } || z   ‘Œ	 c} «       Œc |j=                  ˆ fd„t        |Ž D «       «       �Œ+ |S c c}w c c}	w c c}}w c c}}}w c c}w c c}	w c c}w c c} w )	zÛ
        Find substitutions of the free symbols that match ``func``.

        Return the substitution dictionaries as a list. Note that the returned
        instantiations need not actually match, or be valid!

        r   )Úsolvez-Cannot instantiate other number of parametersz?At least one of the parameters of the formula must be equal to c                 ó8   •— t        | j                  ‰«      «      S rb   )r]   Úxreplace)rZ   Úrepls    €r\   rÝ   z-Formula.find_instantiations.<locals>.<lambda>	  s   ø€ ´U¸1¿:¹:ÀdÓ;KÓ5L€ r^   zValue should not be truerW   c           	   3   ón   •K  — | ],  }t        t        t        ‰j                  |«      «      «      –— Œ. y ­wrb   )r  r¥   rî   r
   )rÍ   r™   rÃ   s     €r\   rÎ   z.Formula.find_instantiations.<locals>.<genexpr>#  s&   øè ø€ ÒYÀ1œd¤4¬¨D¯L©L¸!Ó(<Ó#=×>ÑYùs   ƒ25)Úsympy.solversr3  rg   rh   rÅ   rj   Ú	TypeErrorr
   r¹   re   Ú
ValueErrorr   r  r¥   rî   rT   r]   rà   r	   rì   rí   Úfree_symbolsr)  Úcopyr5  r4   Úminr5   Úmaxr  Úextend)"rÃ   rj   r3  rg   rh   Úsymbol_valuesrk   ræ   Ú	base_replrð   rè   ré   rä   ÚvalsÚa_invÚb_invr&  Úcritical_valuesÚresultÚ_nÚsymb_aÚsymb_brô   rå   r°   ÚexprsÚrepl0ÚtargetÚn0Úa0Úmin_Úmax_r%  r6  s"   `                                @r\   Úfind_instantiationszFormula.find_instantiationsê  sÑ  ù€ õ 	(Ø�W‰WˆØ�W‰WˆÜˆr‹7”c˜$Ÿ)™)Ÿ,™,Ó'Ò'¬3¨r«7´c¸$¿)¹)¿,¹,Ó6GÒ+GÜÐKÓLÐLØˆØ—‘ò 	>ˆAØ�D—I‘I—L‘L×%Ñ%Ñ%Ø×$Ñ$ RÕ(Ø�d—i‘i—l‘l×'Ñ'Ñ'Ø×$Ñ$ RÕ(å Ù9:ð"=ó >ð >ð	>ô & }Ð5ö7Øô œ$œs 4§<¡<°Ó8Ó9Õ:ð 7ˆ	ð 7àACÀRÀÖI°fœd 6¬5Õ1ÒIÑˆ�(à'¨Ð2÷4ð 4Øð 6<·\±\³^×D©'¨!¨T˜œC ›I™ÕDô 4‰ˆˆuà(,¯©Ö5 1˜Aš3Ð5ˆÐ5ØˆÜ‹WˆØó 	ZˆDà#Ÿy™yŸ|™|¨T¯Y©Y¯\©\Ð:ö<Øô # 6Ó+LÕMò <‰NˆF�Fà%-¨vÐ$6¸À6Ð8JÐ#Kó Z‘�˜Üœt F§K¡K£MÓ2´T¸'¿,¹,».Ó5IÑIÓJò 0�CØ 6Ñ)¨s¸'Ñ/AÜ" 6¨#¡;Ó/´3°w¸s±|Ó3DÒDÙÜ#& t§|¡|°_Ó#Eò 0™˜˜4Ø ™7×/Ò/Ø$Ø29¸#±,Ö N¨$À$Ç(Á(È1Å+¢Ð N˜Ð NØ $§	¡	£˜Ø˜a› B™›Ø$)ò 0˜DØ*0°©+ò 0 Ù&+¨D¯M©M¸%Ó,@À6Ñ,IÈ2Ó&N¡ Ø#%§?¢?Ü*4Ð5OÓ*PÐ$PØ $§¡¨B¥ñ	0ñ0ñ0ò	0ðZð$ �Ü" 4§<¡<°ÓAò K‘G�A�tØ˜a™�BÜ ¤ T£Ó+�DÜ"¤3 t£9Ó-�DØ—M‘M´5¸¸tÀa¹xÓ3HÖ"I¨a 2¨£6Ò"IÕJð	Kð
 —‘ÓYÌÐQWÐHXÔYÖYð7	Zð8 ˆùòI7ùâIùÛDùô 4ùâ5ùò<ùò !Oùò #JsB   Ä/PÅPÅ0PÆPÆPÆ:
PÈPË
P#Ë!P#ÏP(ÐP)NNN)	rý   rþ   rÿ   r   r'  r*  r  r"  rQ  ru   r^   r\   rf   rf   ¢  s-   „ ñò.Dó4%ð$ ñLó ðLó:r^   rf   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚFormulaCollectionz- A collection of formulae to use as origins. c                 ó   — i | _         i | _        g | _        t        | j                  «       | j                  D ]•  }|j                  j
                  }t        |j                  «      dkD  r,| j                   j                  |g «      j                  |«       Œ]|j                  j                  «       }|| j                  j                  |i «      |<   Œ— y)z7 Doing this globally at module init time is a pain ... r   N)Úsymbolic_formulaeÚconcrete_formulaerm   r‹   rj   rÆ   rÅ   r
   Ú
setdefaultre   rê   )rÃ   ÚfrÆ   Úinvs       r\   r*  zFormulaCollection.__init__,  s©   € à!#ˆÔØ!#ˆÔØˆŒä�T—]‘]Ô#ð
 —‘ò 	FˆAØ—F‘F—L‘LˆEÜ�1—9‘9‹~ Ò!Ø×&Ñ&×1Ñ1°%¸Ó<×CÑCÀAÕFà—f‘f×-Ñ-Ó/�ØDE�×&Ñ&×1Ñ1°%¸Ó<¸SÒAñ	Fr^   c                 ó@  — |j                  «       }|j                  }|| j                  v r#|| j                  |   v r| j                  |   |   S || j                  vryg }| j                  |   D ]r  }|j	                  |«      }|D ]Z  }|j
                  j                  |«      }|j                  «       sŒ/|j                  |«      }	|	dk(  rŒF|j                  |	|||f«       Œ\ Œt |j                  d„ ¬«       |D ]¤  \  }
}}}t        ||j                  dg |j                  j                  |«      |j                  j                  |«      |j                   j                  |«      «      }t#        d„ |j                  |j                   |j                  fD «       «      rŒ¢|c S  y)a{  
        Given the suitable target ``func``, try to find an origin in our
        knowledge base.

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import (FormulaCollection,
        ...     Hyper_Function)
        >>> f = FormulaCollection()
        >>> f.lookup_origin(Hyper_Function((), ())).closed_form
        exp(_z)
        >>> f.lookup_origin(Hyper_Function([1], ())).closed_form
        HyperRep_power1(-1, _z)

        >>> from sympy import S
        >>> i = Hyper_Function([S('1/4'), S('3/4 + 4')], [S.Half])
        >>> f.lookup_origin(i).closed_form
        HyperRep_sqrts1(-1/4, _z)
        Nrw   c                 ó   — | d   S rÛ   ru   rÜ   s    r\   rÝ   z1FormulaCollection.lookup_origin.<locals>.<lambda>k  s
   €  A a¡D€ r^   rÞ   c              3   óz   K  — | ]3  }|j                  t        j                  t        t         t        «      –— Œ5 y ­wrb   )r)  r   ÚNaNr   r   )rÍ   Úes     r\   rÎ   z2FormulaCollection.lookup_origin.<locals>.<genexpr>o  s%   è ø€ ÒN°a�q—u‘uœQŸU™U¤B¬¨¬S×1ÑNùs   ‚9;)rê   rÆ   rV  rU  rQ  rj   r5  rü   rù   re   râ   rf   rn   rq   Úsubsrr   rs   rá   )rÃ   rj   rY  rÆ   ÚpossiblerX  Úreplsr6  Úfunc2ró   r&  Úf2s               r\   Úlookup_originzFormulaCollection.lookup_origin?  s‡  € ð* ×#Ñ#Ó%ˆØ—
‘
ˆØ�D×*Ñ*Ñ*Ø�t×-Ñ-¨eÑ4Ñ4Ø×)Ñ)¨%Ñ0°Ñ5Ð5ð ˜×.Ñ.Ñ.ØàˆØ×'Ñ'¨Ñ.ò 		8ˆAØ×)Ñ)¨$Ó/ˆEØò 8�ØŸ™Ÿ™¨Ó-�Ø×0Ñ0Ô2ØØ×'Ñ'¨Ó-�Ø˜2’:ØØ—‘  t¨Q°Ð 6Õ7ñ8ð		8ð 	�‰™.ˆÔ)Ø!)ò 	ÑˆAˆt�Q˜Ü˜ §¡ T¨2¨q¯s©s¯x©x¸«~Ø—C‘C—H‘H˜T“N A§C¡C§H¡H¨T£Nó4ˆBäÑN¸B¿D¹DÀ"Ç$Á$ÈÏÉÐ;MÔNÕNØ’	ð		ð r^   N©rý   rþ   rÿ   r   r*  rd  ru   r^   r\   rS  rS  )  s   „ Ù7òFó&3r^   rS  c                   ó,   — e Zd ZdZd„ Zed„ «       Zd„ Zy)r�   zç
    This class represents a Meijer G-function formula.

    Its data members are:
    - z, the argument
    - symbols, the free symbols (parameters) in the formula
    - func, the function
    - B, C, M (c/f ordinary Formula)
    c                 óô   — ||||fD �cg c]!  }t        t        t        t        |«      «      Ž ‘Œ# c}\  }}}}t	        ||||«      | _        || _        || _        |
| _        || _	        || _
        |	| _        y c c}w rb   )r   r¥   r¦   r   r–   rj   rn   r
   Ú_matcherrq   rr   rs   )rÃ   r‘   rg   r’   rh   rn   r
   rq   rr   rs   r“   rŸ   s               r\   r*  zMeijerFormula.__init__€  su   € ØACÀRÈÈRÐ@PÖQ¸1œ%¤¤c¬&°!£nÓ!5Ò6ÒQ‰ˆˆB��BÜ˜r 2 r¨2Ó.ˆŒ	ØˆŒØˆŒØˆŒØˆŒØˆŒØˆ�ùò Rs   ‰&A5c                 óv   — t        d„ t        | j                  | j                  «      t        j
                  «      S )Nc                 ó   — | |d   |d   z  z   S r-  ru   r.  s     r\   rÝ   z+MeijerFormula.closed_form.<locals>.<lambda>Œ  r/  r^   r0  rÂ   s    r\   r"  zMeijerFormula.closed_formŠ  r1  r^   c                 óž  — |j                   | j                  j                   k7  ry| j                  |«      }|�–|\  }}t        |j                  |j
                  |j                  |j                  | j                  g | j                  j                  |«      | j                  j                  |«      | j                  j                  |«      d«
      S y)z
        Try to instantiate the current formula to (almost) match func.
        This uses the _matcher passed on init.
        N)r  rj   rh  r�   r‘   rg   r’   rh   rn   rq   r_  rr   rs   )rÃ   rj   ri   r_  Únewfuncs        r\   Útry_instantiatezMeijerFormula.try_instantiateŽ  s�   € ð
 �>‰>˜TŸY™Y×0Ñ0Ò0ØØ�m‰m˜DÓ!ˆØˆ?Ø‰MˆD�'Ü  §¡¨W¯Z©Z¸¿¹ÀWÇZÁZØ!%§¡¨Ø!%§¡§¡¨TÓ!2°D·F±F·K±KÀÓ4EØ!%§¡§¡¨TÓ!2°Dó:ð :ð r^   N)rý   rþ   rÿ   r   r*  r  r"  rm  ru   r^   r\   r�   r�   u  s'   „ ñòð ñLó ðLó:r^   r�   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerFormulaCollectionz=
    This class holds a collection of meijer g formulae.
    c                 óì   — g }t        |«       t        t        «      | _        |D ]4  }| j                  |j                  j
                     j                  |«       Œ6 t        | j                  «      | _        y rb   )rª   r   r¥   rm   rj   r  re   r  )rÃ   rm   Úformulas      r\   r*  z MeijerFormulaCollection.__init__£  s]   € ØˆÜ˜XÔ&Ü#¤DÓ)ˆŒØò 	BˆGØ�M‰M˜'Ÿ,™,×0Ñ0Ñ1×8Ñ8¸ÕAð	Bä˜TŸ]™]Ó+ˆ�r^   c                 ó    — |j                   | j                  vry| j                  |j                      D ]  }|j                  |«      }|€Œ|c S  y)z* Try to find a formula that matches func. N)r  rm   rm  )rÃ   rj   rq  ri   s       r\   rd  z%MeijerFormulaCollection.lookup_origin«  sK   € à�>‰> §¡Ñ.ØØ—}‘} T§^¡^Ñ4ò 	ˆGØ×)Ñ)¨$Ó/ˆCØ‰Ø’
ñ	r^   Nre  ru   r^   r\   ro  ro  ž  s   „ ñò,ór^   ro  c                   ó   — e Zd ZdZd„ Zy)ÚOperatora˜  
    Base class for operators to be applied to our functions.

    Explanation
    ===========

    These operators are differential operators. They are by convention
    expressed in the variable D = z*d/dz (although this base class does
    not actually care).
    Note that when the operator is applied to an object, we typically do
    *not* blindly differentiate but instead use a different representation
    of the z*d/dz operator (see make_derivative_operator).

    To subclass from this, define a __init__ method that initializes a
    self._poly variable. This variable stores a polynomial. By convention
    the generator is z*d/dz, and acts to the right of all coefficients.

    Thus this poly
        x**2 + 2*z*x + 1
    represents the differential operator
        (z*d/dz)**2 + 2*z**2*d/dz.

    This class is used only in the implementation of the hypergeometric
    function expansion algorithm.
    c                 ó  — | j                   j                  «       }|j                  «        |g}|dd D ]  }|j                   ||d   «      «       Œ |d   |d   z  }t	        |dd |dd «      D ]  \  }}|||z  z  }Œ |S )a°  
        Apply ``self`` to the object ``obj``, where the generator is ``op``.

        Examples
        ========

        >>> from sympy.simplify.hyperexpand import Operator
        >>> from sympy.polys.polytools import Poly
        >>> from sympy.abc import x, y, z
        >>> op = Operator()
        >>> op._poly = Poly(x**2 + z*x + y, x)
        >>> op.apply(z**7, lambda f: f.diff(z))
        y*z**7 + 7*z**7 + 42*z**5
        rW   Nrw   r   )Ú_polyr   r  re   rî   )rÃ   r¿   ÚopÚcoeffsÚdiffsr[   ÚrÚds           r\   ÚapplyzOperator.applyÐ  sš   € ð —‘×&Ñ&Ó(ˆØ�‰ÔØ�ˆØ˜˜�ò 	(ˆAØ�L‰L™˜E "™I›Õ'ð	(à�1‰I�e˜A‘hÑˆÜ˜˜q˜r˜
 E¨!¨" IÓ.ò 	‰DˆAˆqØ��1‘‰H‰Að	àˆr^   N)rý   rþ   rÿ   r   r|  ru   r^   r\   rt  rt  µ  s   „ ñó4r^   rt  c                   ó   — e Zd ZdZd„ Zy)ÚMultOperatorz! Simply multiply by a "constant" c                 ó.   — t        |t        «      | _        y rb   )rQ   r  rv  )rÃ   Úps     r\   r*  zMultOperator.__init__í  s   € Ü˜!œR“[ˆ�
r^   N)rý   rþ   rÿ   r   r*  ru   r^   r\   r~  r~  ê  s
   „ Ù+ó!r^   r~  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚShiftAz Increment an upper index. c                 óx   — t        |«      }|dk(  rt        d«      ‚t        t        |z  dz   t        «      | _        y )Nr   z"Cannot increment zero upper index.rW   ©r   r:  rQ   r  rv  )rÃ   Úais     r\   r*  zShiftA.__init__ô  s4   € Ü�R‹[ˆØ�Š7ÜÐAÓBÐBÜœ"˜R™% !™)¤RÓ(ˆ�
r^   c                 óH   — dd| j                   j                  «       d   z  z  S )Nz<Increment upper %s.>rW   r   ©rv  r   rÂ   s    r\   Ú__str__zShiftA.__str__ú  s$   € Ø&¨!¨D¯J©J×,AÑ,AÓ,CÀAÑ,FÑ*FÑGÐGr^   N©rý   rþ   rÿ   r   r*  rˆ  ru   r^   r\   r‚  r‚  ñ  s   „ Ù%ò)óHr^   r‚  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚShiftBz Decrement a lower index. c                 ó~   — t        |«      }|dk(  rt        d«      ‚t        t        |dz
  z  dz   t        «      | _        y )NrW   z"Cannot decrement unit lower index.r„  ©rÃ   Úbis     r\   r*  zShiftB.__init__  s8   € Ü�R‹[ˆØ�Š7ÜÐAÓBÐBÜœ"˜b 1™f™+¨™/¬2Ó.ˆ�
r^   c                 óN   — dd| j                   j                  «       d   z  dz   z  S )Nz<Decrement lower %s.>rW   r   r‡  rÂ   s    r\   rˆ  zShiftB.__str__  s)   € Ø&¨!¨D¯J©J×,AÑ,AÓ,CÀAÑ,FÑ*FÈÑ*JÑKÐKr^   Nr‰  ru   r^   r\   r‹  r‹  þ  s   „ Ù$ò/óLr^   r‹  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚUnShiftAz Decrement an upper index. c                 óê  — t        t        t        |||g«      «      \  }}}|| _        || _        || _        t        |«      }t        |«      }|j                  |«      dz
  }|dk(  rt        d«      ‚t        ||z  t        «      }|D ]  }|t        t        |z   t        «      z  }Œ t        d«      }t        ||z  |z
  |«      x}	}
|D ]  }|	|
|dz
  j                  |«      z   z  }	Œ |	j                  d«       }|dk(  rt        d«      ‚t        t        |	j                  «       dd |«      j                  «       j                  |t        |z  dz   «      t        «      }	t        |	|z
  |z  t        «      | _        y)ú Note: i counts from zero! rW   r   z"Cannot decrement unit upper index.ÚAz0Cannot decrement upper index: cancels with lowerNrw   ©r¥   r¦   r   Ú_apÚ_bqÚ_iÚpopr:  rQ   r  r	   Úas_polyÚnthr   r¯   r_  rv  )rÃ   rg   rh   r÷   rn   r…  r  rk   r”  r%  ÚDrl   Úb0s                r\   r*  zUnShiftA.__init__  sl  € äœœW r¨2¨q kÓ2Ó3‰	ˆˆB�àˆŒØˆŒØˆŒä�"‹XˆÜ�"‹XˆØ�V‰V�A‹Y˜‰]ˆà�Š7ÜÐAÓBÐBä��2‘”r‹NˆØò 	"ˆAØ””b˜1‘fœbÓ!Ñ!‰Að	"ô �#‹JˆÜ�R˜‘T˜B‘Y Ó"Ð"ˆˆAØò 	(ˆAØ��a˜!‘e—_‘_ QÓ'Ñ'Ñ'‰Að	(ð �e‰e�A‹hˆYˆØ�Š7Üð 2ó 3ð 3ô ”�a—l‘l“n S bÐ)¨1Ó-×5Ñ5Ó7×<Ñ<¸QÄÀ2ÁÈÁ	ÓJÌBÓOˆä˜1˜q™5 "™*¤bÓ)ˆ�
r^   c                 óV   — d| j                   ›d| j                  ›d| j                  ›d�S )Nz<Decrement upper index #ú of ú, ú.>©r˜  r–  r—  rÂ   s    r\   rˆ  zUnShiftA.__str__/  ó"   � Ø;?¿7»7Ø8<¿»À$Ç(Ã(ðLð 	Lr^   Nr‰  ru   r^   r\   r‘  r‘    s   „ Ù%ò*óBLr^   r‘  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚUnShiftBz Increment a lower index. c                 ó  — t        t        t        |||g«      «      \  }}}|| _        || _        || _        t        |«      }t        |«      }|j                  |«      dz   }|dk(  rt        d«      ‚t        t        |dz
  z  t        «      }|D ]  }|t        t        |z   dz
  t        «      z  }Œ! t        d«      }t        |dz
  |z  |z
  dz   |«      }	t        ||«      }
|D ]  }|
|	|j                  |«      z   z  }
Œ |
j                  d«      }|dk(  rt        d«      ‚t        t        |
j                  «       dd |«      j                  «       j                  |t        |dz
  z  dz   «      t        «      }
t        ||
z
  |z  t        «      | _        y)r“  rW   r   z Cannot increment -1 lower index.rq   z*Cannot increment index: cancels with upperNrw   r•  )rÃ   rg   rh   r÷   rn   rŽ  r  rl   rq   rœ  r%  rk   r�  s                r\   r*  zUnShiftB.__init__7  s�  € äœœW r¨2¨q kÓ2Ó3‰	ˆˆB�àˆŒØˆŒØˆŒä�"‹XˆÜ�"‹XˆØ�V‰V�A‹Y˜‰]ˆà�Š7ÜÐ?Ó@Ð@ä”�R˜!‘V‘œbÓ!ˆØò 	&ˆAØ””b˜1‘f˜q‘j¤"Ó%Ñ%‰Að	&ô �#‹JˆÜ�"�q‘&˜!‘˜b‘ 1Ñ$ aÓ(ˆÜ��A‹JˆØò 	$ˆAØ�!�a—i‘i “lÑ"Ñ#‰Að	$ð �U‰U�1‹XˆØ�Š7ÜÐIÓJÐJä”�a—l‘l“n S bÐ)¨1Ó-×5Ñ5Ó7×<Ñ<ØŒr�2˜‘6‰{˜Q‰ó Ü!#ó%ˆô ˜1˜q™5 "™*¤bÓ)ˆ�
r^   c                 óV   — d| j                   ›d| j                  ›d| j                  ›d�S )Nz<Increment lower index #rŸ  r   r¡  r¢  rÂ   s    r\   rˆ  zUnShiftB.__str__Y  r£  r^   Nr‰  ru   r^   r\   r¥  r¥  4  s   „ Ù$ò *óDLr^   r¥  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerShiftAz Increment an upper b index. c                 óR   — t        |«      }t        |t        z
  t        «      | _        y rb   ©r   rQ   r  rv  r�  s     r\   r*  zMeijerShiftA.__init__a  s   € Ü�R‹[ˆÜ˜"œr™'¤2Ó&ˆ�
r^   c                 óB   — d| j                   j                  «       d   z  S )Nz<Increment upper b=%s.>rW   r‡  rÂ   s    r\   rˆ  zMeijerShiftA.__str__e  s   € Ø(¨D¯J©J×,AÑ,AÓ,CÀAÑ,FÑGÐGr^   Nr‰  ru   r^   r\   r©  r©  ^  s   „ Ù'ò'óHr^   r©  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerShiftBz Decrement an upper a index. c                 óX   — t        |«      }t        d|z
  t        z   t        «      | _        y rV   r«  r�  s     r\   r*  zMeijerShiftB.__init__l  s!   € Ü�R‹[ˆÜ˜!˜b™&¤2™+¤rÓ*ˆ�
r^   c                 óH   — dd| j                   j                  «       d   z
  z  S )Nz<Decrement upper a=%s.>rW   r‡  rÂ   s    r\   rˆ  zMeijerShiftB.__str__p  s$   € Ø(¨A°·
±
×0EÑ0EÓ0GÈÑ0JÑ,JÑKÐKr^   Nr‰  ru   r^   r\   r®  r®  i  s   „ Ù'ò+óLr^   r®  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerShiftCz Increment a lower b index. c                 óT   — t        |«      }t        | t        z   t        «      | _        y rb   r«  r�  s     r\   r*  zMeijerShiftC.__init__w  s   € Ü�R‹[ˆÜ˜2˜#¤™(¤BÓ'ˆ�
r^   c                 óD   — d| j                   j                  «       d    z  S )Nz<Increment lower b=%s.>rW   r‡  rÂ   s    r\   rˆ  zMeijerShiftC.__str__{  s"   € Ø(¨T¯Z©Z×-BÑ-BÓ-DÀQÑ-GÐ,GÑHÐHr^   Nr‰  ru   r^   r\   r²  r²  t  s   „ Ù&ò(óIr^   r²  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerShiftDz Decrement a lower a index. c                 óX   — t        |«      }t        |dz
  t        z
  t        «      | _        y rV   r«  r�  s     r\   r*  zMeijerShiftD.__init__‚  s!   € Ü�R‹[ˆÜ˜"˜q™&¤2™+¤rÓ*ˆ�
r^   c                 óH   — d| j                   j                  «       d   dz   z  S )Nz<Decrement lower a=%s.>rW   r‡  rÂ   s    r\   rˆ  zMeijerShiftD.__str__†  s$   € Ø(¨D¯J©J×,AÑ,AÓ,CÀAÑ,FÈÑ,JÑKÐKr^   Nr‰  ru   r^   r\   r¶  r¶    s   „ Ù&ò+óLr^   r¶  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerUnShiftAz Decrement an upper b index. c           
      ó8  ‡— t        t        t        |||||g«      «      \  }}}}}|| _        || _        || _        || _        || _        t        |«      }t        |«      }t        |«      }t        |«      }|j                  |«      dz
  }t        dt        «      t        d„ |D «       «      z  t        d„ |D «       «      z  }t        d«      }	t        ||	z
  |	«      Št        ||	«      t        ˆfd„|D «       «      z  t        ˆfd„|D «       «      z  }
|
j                  d«      }|dk(  rt        d«      ‚t        t        |
j                  «       d	d
 |	«      j!                  «       j#                  |	|t        z
  «      t        «      }
t        ||
z
  |z  t        «      | _        y	)r“  rW   c              3   óJ   K  — | ]  }t        |t        z
  t        «      –— Œ y ­wrb   ©rQ   r  ©rÍ   rl   s     r\   rÎ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>�  s   è ø€ Ò<°Aœt A¬¡F¬B×/Ñ<ùó   ‚!#c              3   óJ   K  — | ]  }t        t        |z
  t        «      –— Œ y ­wrb   r½  r¾  s     r\   rÎ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>�  s   è ø€ ÒCaÐYZÄDÌÈaÉÔQS×DTÑCaùr¿  r”  c              3   ó.   •K  — | ]  }‰d z   |z
  –— Œ y­w©rW   Nru   ©rÍ   rk   rœ  s     €r\   rÎ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>¡  s   øè ø€ Ò6¨a˜q 1™u q�yÑ6ùó   ƒc              3   ó0   •K  — | ]  }‰ |z   d z
  –— Œ y­wrÂ  ru   rÃ  s     €r\   rÎ   z*MeijerUnShiftA.__init__.<locals>.<genexpr>¡  s   øè ø€ Ò=WÈqÀ¸rÀA¹vÈ½zÑ=Wùs   ƒr   z(Cannot decrement upper b index (cancels)Nrw   )r¥   r¦   r   Ú_anr–  Ú_bmr—  r˜  r™  rQ   r  r   r	   r›  r:  r   r¯   r_  rv  )rÃ   r‘   rg   r’   rh   r÷   rn   rŽ  r  r”  r%  r�  rœ  s               @r\   r*  zMeijerUnShiftA.__init__�  sb  ø€ ä ¤¤W¨r°2°r¸2¸qÐ.AÓ!BÓCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒä�"‹XˆÜ�"‹XˆÜ�"‹XˆÜ�"‹XˆØ�V‰V�A‹Y˜‰]ˆä�”B‹Kœ$Ñ<¸Ô<Ó<Ñ<¼tÑCaÐ^`ÔCaÓ?aÑaˆä�#‹JˆÜ��a‘˜‹OˆÜ��A‹JœÓ6°2Ô6Ó6Ñ6¼Ó=WÐTVÔ=WÓ9WÑWˆà�U‰U�1‹XˆØ�Š7ÜÐGÓHÐHä”�a—l‘l“n S bÐ)¨1Ó-×5Ñ5Ó7×<Ñ<¸QÀÄRÁÓHÌ"ÓMˆä˜1˜q™5 "™*¤bÓ)ˆ�
r^   c                 óŠ   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d| j                  ›d�S )Nz<Decrement upper b index #rŸ  r   r¡  ©r˜  rÆ  r–  rÇ  r—  rÂ   s    r\   rˆ  zMeijerUnShiftA.__str__«  ó.   � ØEIÇWÃWØ&*§h£h°·³¸$¿(»(ÀDÇHÃHðNð 	Nr^   Nr‰  ru   r^   r\   rº  rº  Š  s   „ Ù'ò*ó<Nr^   rº  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerUnShiftBz Increment an upper a index. c           
      óp  — t        t        t        |||||g«      «      \  }}}}}|| _        || _        || _        || _        || _        t        |«      }t        |«      }t        |«      }t        |«      }|j                  |«      dz   }t        |t        «      }|D ]  }	|t        d|	z
  t        z   t        «      z  }Œ! |D ]  }	|t        |	dz
  t        z
  t        «      z  }Œ! t        d«      }
t        |
|z   dz
  |
«      }t        d|
«      }|D ]  }|| |z   z  }Œ |D ]
  }|||z
  z  }Œ |j                  d«      }|dk(  rt        d«      ‚t        t        |j                  «       dd |
«      j                  «       j!                  |
d|z
  t        z   «      t        «      }t        ||z
  |z  t        «      | _        y)r“  rW   rq   r   z(Cannot increment upper a index (cancels)Nrw   ©r¥   r¦   r   rÆ  r–  rÇ  r—  r˜  r™  rQ   r  r	   r›  r:  r   r¯   r_  rv  ©rÃ   r‘   rg   r’   rh   r÷   rn   r…  r  rk   rq   rœ  r%  rl   r�  s                  r\   r*  zMeijerUnShiftB.__init__³  s¾  € ä ¤¤W¨r°2°r¸2¸qÐ.AÓ!BÓCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒä�"‹XˆÜ�"‹XˆÜ�"‹XˆÜ�"‹XˆØ�V‰V�A‹Y˜‰]ˆä�”B‹KˆØò 	&ˆAØ”�a˜!‘eœb‘j¤"Ó%Ñ%‰Að	&àò 	&ˆAØ”�a˜!‘eœb‘j¤"Ó%Ñ%‰Að	&ô �#‹JˆÜ��R‘˜!‘˜QÓˆÜ��A‹JˆØò 	ˆAØ�1�"�q‘&‰M‰Að	àò 	ˆAØ�!�a‘%‰L‰Að	ð �U‰U�1‹XˆØ�Š7ÜÐGÓHÐHä”�a—l‘l“n S bÐ)¨1Ó-×5Ñ5Ó7×<Ñ<Øˆq�2‰vœ‰{óÜó!ˆô ˜1˜q™5 "™*¤bÓ)ˆ�
r^   c                 óŠ   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d| j                  ›d�S )Nz<Increment upper a index #rŸ  r   r¡  rÉ  rÂ   s    r\   rˆ  zMeijerUnShiftB.__str__Ú  rÊ  r^   Nr‰  ru   r^   r\   rÌ  rÌ  °  s   „ Ù'ò%*óNNr^   rÌ  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerUnShiftCz Decrement a lower b index. c           
      ód  — t        t        t        |||||g«      «      \  }}}}}|| _        || _        || _        || _        || _        t        |«      }t        |«      }t        |«      }t        |«      }|j                  |«      dz
  }t        dt        «      }|D ]  }	|t        |	t        z
  t        «      z  }Œ |D ]  }	|t        t        |	z
  t        «      z  }Œ t        d«      }
t        ||
z   |
«      }t        ||
«      }|D ]  }||dz   |z
  z  }Œ |D ]  }|| |z   dz
  z  }Œ |j                  d«      }|dk(  rt        d«      ‚t        t        |j                  «       dd |
«      j                  «       j!                  |
t        |z
  «      t        «      }t        ||z
  |z  t        «      | _        y)r“  rW   rr   r   z(Cannot decrement lower b index (cancels)Nrw   rÎ  )rÃ   r‘   rg   r’   rh   r÷   rn   rŽ  r  rl   rr   rœ  r%  rk   r�  s                  r\   r*  zMeijerUnShiftC.__init__ç  s¯  € ä ¤¤W¨r°2°r¸2¸qÐ.AÓ!BÓCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒä�"‹XˆÜ�"‹XˆÜ�"‹XˆÜ�"‹XˆØ�V‰V�A‹Y˜‰]ˆä�”B‹KˆØò 	"ˆAØ”�aœ"‘fœbÓ!Ñ!‰Að	"àò 	"ˆAØ””b˜1‘fœbÓ!Ñ!‰Að	"ô �#‹JˆÜ��a‘˜‹OˆÜ��A‹JˆØò 	ˆAØ�!�a‘%˜!‘)Ñ‰Að	àò 	ˆAØ�1�"�q‘&˜1‘*Ñ‰Að	ð �U‰U�1‹XˆØ�Š7ÜÐGÓHÐHä”�a—l‘l“n S bÐ)¨1Ó-×5Ñ5Ó7×<Ñ<¸QÄÀRÁÓHÌ"ÓMˆä˜1˜q™5 "™*¤bÓ)ˆ�
r^   c                 óŠ   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d| j                  ›d�S )Nz<Decrement lower b index #rŸ  r   r¡  rÉ  rÂ   s    r\   rˆ  zMeijerUnShiftC.__str__  rÊ  r^   Nr‰  ru   r^   r\   rÒ  rÒ  ß  s   „ Ù&ò$*óLNr^   rÒ  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚMeijerUnShiftDz Increment a lower a index. c           
      óp  — t        t        t        |||||g«      «      \  }}}}}|| _        || _        || _        || _        || _        t        |«      }t        |«      }t        |«      }t        |«      }|j                  |«      dz   }t        |t        «      }|D ]  }	|t        d|	z
  t        z   t        «      z  }Œ! |D ]  }	|t        |	dz
  t        z
  t        «      z  }Œ! t        d«      }
t        |dz
  |
z
  |
«      }t        d|
«      }|D ]  }|| |z   z  }Œ |D ]
  }|||z
  z  }Œ |j                  d«      }|dk(  rt        d«      ‚t        t        |j                  «       dd |
«      j                  «       j!                  |
|dz
  t        z
  «      t        «      }t        ||z
  |z  t        «      | _        y)r“  rW   rq   r   z(Cannot increment lower a index (cancels)Nrw   rÎ  rÏ  s                  r\   r*  zMeijerUnShiftD.__init__  s¾  € ä ¤¤W¨r°2°r¸2¸qÐ.AÓ!BÓCÑˆˆB��B˜àˆŒØˆŒØˆŒØˆŒØˆŒä�"‹XˆÜ�"‹XˆÜ�"‹XˆÜ�"‹XˆØ�V‰V�A‹Y˜‰]ˆä�”B‹KˆØò 	&ˆAØ”�a˜!‘eœb‘j¤"Ó%Ñ%‰Að	&àò 	&ˆAØ”�a˜!‘eœb‘j¤"Ó%Ñ%‰Að	&ô �#‹JˆÜ��a‘˜!‘˜QÓˆÜ��A‹JˆØò 	ˆAØ�1�"�q‘&‰M‰Að	àò 	ˆAØ�!�a‘%‰L‰Að	ð �U‰U�1‹XˆØ�Š7ÜÐGÓHÐHä”�a—l‘l“n S bÐ)¨1Ó-×5Ñ5Ó7×<Ñ<Øˆr�A‰vœ‰{óÜó!ˆô ˜1˜q™5 "™*¤bÓ)ˆ�
r^   c                 óŠ   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d| j                  ›d�S )Nz<Increment lower a index #rŸ  r   r¡  rÉ  rÂ   s    r\   rˆ  zMeijerUnShiftD.__str__>  rÊ  r^   Nr‰  ru   r^   r\   rÖ  rÖ    s   „ Ù&ò%*óNNr^   rÖ  c                   óL   — e Zd ZdZd„ Zed„ «       Zed„ «       Zed„ «       Zd„ Z	y)ÚReduceOrderz8 Reduce Order by cancelling an upper and a lower index. c                 ól  — t        |«      }t        |«      }||z
  }|j                  r|dk  ry|j                  r|j                  ryt        j                  | «      }t        j                  }t        |«      D ]  }|t        |z   |z   ||z   z  z  }Œ t        |t        «      |_        ||_        ||_        |S )z< For convenience if reduction is not possible, return None. r   N)r   Ú
is_IntegerrÊ   rû   rt  r¾   r   r‰   r  r  rQ   rv  Ú_aÚ_b)r`   r…  Úbjr%  r°   r€  Úks          r\   r¾   zReduceOrder.__new__F  s¨   € ä�R‹[ˆÜ�R‹[ˆØ�‰GˆØ�|Š|˜q 1šuØØ�=Š=˜R×.Ò.Øä×Ñ Ó$ˆä�E‰EˆÜ�q“ò 	(ˆAØ”"�r‘'˜A‘+  Q¡Ñ'Ñ'‰Að	(ô ˜!œR“[ˆŒ
ØˆŒØˆŒàˆr^   c                 ó¨  — t        |«      }t        |«      }||z
  }|j                  s|j                  syt        j	                  | «      }t
        j                  }t        |«      D ]  }||t        z  |z   |z   z  }Œ t        |t        «      |_
        |dk(  r||_        ||_        |S t        d|dz
  d¬«      |_        t        d|dz
  d¬«      |_        |S )zN Cancel b + sign*s and a + sign*s
            This is for meijer G functions. Nrw   rW   F)Úevaluate)r   rË   rÜ  rt  r¾   r   r‰   r  r  rQ   rv  rÝ  rÞ  r   )r`   rl   rk   Úsignr%  r°   r€  rà  s           r\   Ú_meijerzReduceOrder._meijer\  sË   € ô �A‹JˆÜ�A‹JˆØ�‰EˆØ�=Š= §¢Øä×Ñ Ó$ˆä�E‰EˆÜ�q“ò 	#ˆAØ�$”r‘'˜A‘+ ‘/Ñ"‰Að	#ô ˜!œR“[ˆŒ
Ø�2Š:ØˆDŒGØˆDŒGð
 ˆô ˜!˜Q ™U¨UÔ3ˆDŒGÜ˜!˜Q ™U¨UÔ3ˆDŒGàˆr^   c                 ó(   — | j                  ||d«      S )Nrw   ©rä  )r`   rl   rk   s      r\   Úmeijer_minuszReduceOrder.meijer_minusv  s   € à�{‰{˜1˜a Ó$Ð$r^   c                 ó4   — | j                  d|z
  d|z
  d«      S rV   ræ  )r`   rk   rl   s      r\   Úmeijer_pluszReduceOrder.meijer_plusz  s   € à�{‰{˜1˜q™5 ! a¡%¨Ó+Ð+r^   c                 ó<   — d| j                   ›d| j                  ›d�S )Nz"<Reduce order by cancelling upper z with lower r¡  )rÝ  rÞ  rÂ   s    r\   rˆ  zReduceOrder.__str__~  s   � à�W‹W�d—g“gðð 	r^   N)
rý   rþ   rÿ   r   r¾   Úclassmethodrä  rç  ré  rˆ  ru   r^   r\   rÚ  rÚ  C  sK   „ ÙBòð, ñó ðð2 ñ%ó ð%ð ñ,ó ð,ór^   rÚ  c                 óX  — t        | «      } t        |«      }| j                  |¬«       |j                  |¬«       g }g }| D ]c  }d}t        t        |«      «      D ]#  } ||||   «      }|€Œ|j	                  |«        n |€|j                  |«       ŒS|j                  |«       Œe |||fS )z? Order reduction algorithm used in Hypergeometric and Meijer G rÞ   N)r¥   râ   r  rÅ   r™  re   )	rg   rh   Úgenrß   ÚnapÚ	operatorsrk   rw  r÷   s	            r\   Ú_reduce_orderrð  ƒ  s¶   € ä	ˆb‹€BÜ	ˆb‹€Bà‡G�G�€GÔØ‡G�G�€GÔà
€Cà€IØò 
!ˆØˆÜ”s˜2“w“ò 	ˆAÙ�Q˜˜1™“ˆBØ‰~Ø—‘�q”	Ùð		ð
 ˆ:Ø�J‰J�q�Mà×Ñ˜RÕ ð
!ð ��IÐÐr^   c                 ó’   — t        | j                  | j                  t        t        «      \  }}}t        t        |Ž t        |Ž «      |fS )að  
    Given the hypergeometric function ``func``, find a sequence of operators to
    reduces order as much as possible.

    Explanation
    ===========

    Return (newfunc, [operators]), where applying the operators to the
    hypergeometric function newfunc yields func.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import reduce_order, Hyper_Function
    >>> reduce_order(Hyper_Function((1, 2), (3, 4)))
    (Hyper_Function((1, 2), (3, 4)), [])
    >>> reduce_order(Hyper_Function((1,), (1,)))
    (Hyper_Function((), ()), [<Reduce order by cancelling upper 1 with lower 1.>])
    >>> reduce_order(Hyper_Function((2, 4), (3, 3)))
    (Hyper_Function((2,), (3,)), [<Reduce order by cancelling
    upper 4 with lower 3.>])
    )rð  rg   rh   rÚ  r   rd   r   )rj   rî  Únbqrï  s       r\   Úreduce_orderró  �  s>   € ô. (¨¯©°·±¼+ÔGWÓXÑ€Cˆˆiäœ% ˜+¤u¨c {Ó3°YÐ>Ð>r^   c                 ó  — t        | j                  | j                  t        j                  d„ «      \  }}}t        | j
                  | j                  t        j                  t        «      \  }}}t        ||||«      ||z   fS )a  
    Given the Meijer G function parameters, ``func``, find a sequence of
    operators that reduces order as much as possible.

    Return newfunc, [operators].

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import (reduce_order_meijer,
    ...                                         G_Function)
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [3, 4], [1, 2]))[0]
    G_Function((4, 3), (5, 6), (3, 4), (2, 1))
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [3, 4], [1, 8]))[0]
    G_Function((3,), (5, 6), (3, 4), (1,))
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [7, 5], [1, 5]))[0]
    G_Function((3,), (), (), (1,))
    >>> reduce_order_meijer(G_Function([3, 4], [5, 6], [7, 5], [5, 3]))[0]
    G_Function((), (), (), ())
    c                 ó   — t        |  «      S rb   r   rÜ   s    r\   rÝ   z%reduce_order_meijer.<locals>.<lambda>Ð  s   € Ô-=¸q¸bÓ-A€ r^   )
rð  r‘   rh   rÚ  ré  r’   rg   rç  r   r–   )rj   r   rò  Úops1Únbmrî  Úops2s          r\   Úreduce_order_meijerrù  ¹  so   € ô, # 4§7¡7¨D¯G©G´[×5LÑ5LÙ#AóC�N€Cˆˆdä" 4§7¡7¨D¯G©G´[×5MÑ5MÜ#3ó5�N€Cˆˆdô �c˜3  SÓ)¨4°$©;Ð6Ð6r^   c                 ó   ‡ ‡— ˆ ˆfd„}|S )z? Create a derivative operator, to be passed to Operator.apply. c                 óp   •— ‰| j                  ‰«      z  | ‰z  z   }|j                  t        ‰«      «      }|S rb   )ró   Ú	applyfuncr´   )rr   rz  rs   rn   s     €€r\   Údoitz&make_derivative_operator.<locals>.doitÙ  s4   ø€ Øˆa�f‰f�Q‹i‰K˜!˜A™#ÑˆØ�K‰Kœ	 !›Ó%ˆØˆr^   ru   )rs   rn   rý  s   `` r\   Úmake_derivative_operatorrþ  ×  s   ù€ õð €Kr^   c                 óN   — | }t        |«      D ]  }|j                  ||«      }Œ |S )zk
    Apply the list of operators ``ops`` to object ``obj``, substituting
    ``op`` for the generator.
    )Úreversedr|  )r¿   Úopsrw  ri   Úos        r\   Úapply_operatorsr  à  s1   € ð
 €CÜ�c‹]ò ˆØ�g‰g�c˜2Ó‰ðà€Jr^   c           	      ón  ‡‡— | j                   | j                  |j                   |j                  fD �cg c]  }t        |t        «      ‘Œ c}\  }}}}t	        t        |j                  «       «      «      t	        t        |j                  «       «      «      k7  sEt	        t        |j                  «       «      «      t	        t        |j                  «       «      «      k7  rt        | ›d|›�«      ‚g }d„ Šˆˆfd„}	ˆˆfd„}
t        t        |j                  «       «      t        |j                  «       «      z   t        ¬«      D �]X  }d}d}d}d}||v r
||   }||   }||v r
||   }||   }t	        |«      t	        |«      k7  st	        |«      t	        |«      k7  rt        | ›d|›�«      ‚||||fD �cg c]  }t        |t        ¬«      ‘Œ c}\  }}}}d„ } |||«      } |||«      }t	        |«      dk(  r| |
g ||||«      z  }nŽt	        |«      dk(  r| |	|g |||«      z  }np|d	   }|d	   }|d   |z
  dk  s|d   |z
  dk  rt        d
«      ‚||z
  dkD  r| |	|||||«      z  }| |
|||||«      z  }n| |
|||||«      z  }| |	|||||«      z  }|||<   |||<   �Œ[ |j                  «        |S c c}w c c}w )a(  
    Devise a plan (consisting of shift and un-shift operators) to be applied
    to the hypergeometric function ``target`` to yield ``origin``.
    Returns a list of operators.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import devise_plan, Hyper_Function
    >>> from sympy.abc import z

    Nothing to do:

    >>> devise_plan(Hyper_Function((1, 2), ()), Hyper_Function((1, 2), ()), z)
    []
    >>> devise_plan(Hyper_Function((), (1, 2)), Hyper_Function((), (1, 2)), z)
    []

    Very simple plans:

    >>> devise_plan(Hyper_Function((2,), ()), Hyper_Function((1,), ()), z)
    [<Increment upper 1.>]
    >>> devise_plan(Hyper_Function((), (2,)), Hyper_Function((), (1,)), z)
    [<Increment lower index #0 of [], [1].>]

    Several buckets:

    >>> from sympy import S
    >>> devise_plan(Hyper_Function((1, S.Half), ()),
    ...             Hyper_Function((2, S('3/2')), ()), z) #doctest: +NORMALIZE_WHITESPACE
    [<Decrement upper index #0 of [3/2, 1], [].>,
    <Decrement upper index #0 of [2, 3/2], [].>]

    A slightly more complicated plan:

    >>> devise_plan(Hyper_Function((1, 3), ()), Hyper_Function((2, 2), ()), z)
    [<Increment upper 2.>, <Decrement upper index #0 of [2, 2], [].>]

    Another more complicated plan: (note that the ap have to be shifted first!)

    >>> devise_plan(Hyper_Function((1, -1), (2,)), Hyper_Function((3, -2), (4,)), z)
    [<Decrement lower 3.>, <Decrement lower 4.>,
    <Decrement upper index #1 of [-1, 2], [4].>,
    <Decrement upper index #1 of [-1, 3], [4].>, <Increment upper -2.>]
    z not reachable from c                 óÎ   — g }t        t        | «      «      D ]K  }||   | |   z
  dkD  r|}d}n|}d}||   | |   k7  sŒ&| || |«      gz  }| |xx   |z  cc<   ||   | |   k7  rŒ&ŒM |S )Nr   rW   rw   )r  rÅ   )ÚfroÚtoÚincÚdecr  r÷   ÚshÚchs           r\   Ú	do_shiftszdevise_plan.<locals>.do_shifts"  sŒ   € ØˆÜ”s˜3“x“ò 
	ˆAØ�!‰u�s˜1‘v‰~ Ò!Ø�Ø‘à�Ø�à�Q‘%˜3˜q™6“/Ø™˜3 ›
�|Ñ#�Ø�A“˜"‘“ð �Q‘%˜3˜q™6”/ð
	ð ˆ
r^   c           	      ó.   •‡‡‡—  ‰| |d„ ˆˆˆˆfd„«      S )z( Shift us from (nal, nbk) to (al, nbk). c                 ó   — t        | |   «      S rb   )r‚  ©r€  r÷   s     r\   rÝ   z2devise_plan.<locals>.do_shifts_a.<locals>.<lambda>4  s   € ¬v°a¸±d«|€ r^   c                 ó,   •— t        | ‰z   ‰‰z   |‰«      S rb   )r‘  )r€  r÷   ÚaotherÚbotherÚnbkrn   s     €€€€r\   rÝ   z2devise_plan.<locals>.do_shifts_a.<locals>.<lambda>5  s   ø€ ¤h¨q°6©z¸3À¹<ÈÈAÓ&N€ r^   ru   )Únalr  Úalr  r  r  rn   s    ` ``€€r\   Údo_shifts_az devise_plan.<locals>.do_shifts_a2  s   û€ á˜˜bÑ";ÞNóPð 	Pr^   c                 ó.   •‡ ‡‡—  ‰||ˆˆˆ ˆfd„d„ «      S )z( Shift us from (nal, nbk) to (nal, bk). c                 ó,   •— t        ‰‰z   | ‰z   |‰«      S rb   )r¥  )r€  r÷   r  r  r  rn   s     €€€€r\   rÝ   z2devise_plan.<locals>.do_shifts_b.<locals>.<lambda>:  s   ø€ ¤h¨s°V©|¸QÀ¹ZÈÈAÓ&N€ r^   c                 ó   — t        | |   «      S rb   )r‹  r  s     r\   rÝ   z2devise_plan.<locals>.do_shifts_b.<locals>.<lambda>;  s   € ¤f¨Q¨q©T£l€ r^   ru   )r  r  Úbkr  r  r  rn   s   `  ``€€r\   Údo_shifts_bz devise_plan.<locals>.do_shifts_b7  s   û€ á˜˜bÞNÙ2ó4ð 	4r^   rÞ   ru   c                 óL   — g }| D ]  }||k7  sŒ	|j                  | |   «       Œ |S rb   )r?  )r  rß   r™   rà  s       r\   Úotherszdevise_plan.<locals>.othersN  s4   € ØˆAØò %�Ø˜“8Ø—H‘H˜S ™VÕ$ð%ð ˆHr^   r   rw   zNon-suitable parameters.)rg   rh   rT   r]   rÅ   r¥   rí   r:  Úsortedr   r  )rL  Úoriginrn   rð   rè   ré   Ú	nabucketsÚ	nbbucketsr  r  r  rz  r  r  r  r  rŸ   r  r  r  ÚnamaxÚamaxr  s     `                   @r\   Údevise_planr$  ë  sÚ  ù€ ð^ —y‘y &§)¡)¨V¯Y©Y¸¿	¹	ÐBö0DØô 15°V¼UÕ0Cò 0DÑ,€Hˆh˜	 9ô Œ4�—‘“Ó Ó!¤S¬¨i¯n©nÓ.>Ó)?Ó%@Ò@Ü”�X—]‘]“_Ó%Ó&¬#¬d°9·>±>Ó3CÓ.DÓ*EÒEÜ²v¹vÐFÓGÐGà
€Còõ Põ
4ô ”D˜Ÿ™›Ó)¬D°·±³Ó,AÑAÔGWÔXó 1ˆØˆØˆØˆØˆØ�‰=Ø˜!‘ˆBØ˜A‘,ˆCØ�‰=Ø˜!‘ˆBØ˜A‘,ˆCÜˆr‹7”c˜#“hÒ¤# b£'¬S°«XÒ"5Üº6Á6ÐJÓKÐKð ˜#˜r 3Ð'ö)Øô # 1Ô*:Ö;ò )ÑˆˆC��Sò	ñ ˜	 1Ó%ˆÙ˜	 1Ó%ˆäˆr‹7�aŠ<à‘;˜r 3¨¨F°FÓ;Ñ;‰CÜ�‹W˜Š\à‘;˜s B¨¨F°FÓ;Ñ;‰Cà˜‘GˆEØ�b‘6ˆDà�1‰v˜‰~ Ò" b¨¡e¨d¡l°aÒ&7Ü Ð!;Ó<Ð<à�t‰|˜aÒà‘{ 3¨¨R°¸Ó@Ñ@�Ø‘{ 2 s¨B°¸Ó?Ñ?‘ð ‘{ 3¨¨R°¸Ó@Ñ@�Ø‘{ 3¨¨B°¸Ó?Ñ?�àˆ	�!‰Øˆ	�!‹ðc1ðf ‡K�K„MØ€Jùòq0Dùòd)s   ³J-Æ-J2c                 óè  — t        | j                  t        «      t        | j                  t        «      }}t	        |t
        j                     «      dk7  ry|t
        j                     d   }|dk  ryt
        j                  |vryt        |t
        j                     «      }|j                  «        |d   }|dk  ryt        | j                  «      }|j                  |«       t        | j                  «      }|j                  |«       |dz  }|D �	cg c]  }	|	|z
  ‘Œ	 }}	|D �	cg c]  }	|	|z
  ‘Œ	 }}	g }
t        |dz
  «      D ]  }|
j                  t        |dz   «      «       Œ! |
j                  «        t        |«      ||z  z  }|t        |D �cg c]  }t!        ||«      ‘Œ c}Ž z  }|t        |D �cg c]  }t!        ||«      ‘Œ c}Ž z  }|
t#        |«      gz  }
d}t        |«      D ]^  }||z  t        |«      z  }|t        |D �cg c]  }t!        ||«      ‘Œ c}Ž z  }|t        |D �cg c]  }t!        ||«      ‘Œ c}Ž z  }||z  }Œ` t%        ||«      |
| fS c c}	w c c}	w c c}w c c}w c c}w c c}w )z? Try to recognise a hypergeometric sum that starts from k > 0. rW   Nr   )rT   rg   r]   rh   rÅ   r   rœ   r¥   râ   Úremover  re   r‚  r  r7   r   r6   r~  rd   )rj   rn   rè   ré   rz  r™   rà  rî  rò  rZ   r  r%  Úfacrl   rk   r€  r  s                    r\   Útry_shifted_sumr(  t  s<  € ä˜dŸg™g¤uÓ-¬t°D·G±G¼UÓ/Cˆh€HÜ
ˆ8”A—F‘FÑÓ Ò!ØØ”—‘Ñ˜Ñ€AØˆA‚vØÜ‡v�v�XÑØÜˆX”a—f‘fÑÓ€AØ‡F�F„HØ	ˆ!‰€AØˆA‚vØä
ˆt�w‰w‹-€CØ‡J�Jˆq„MÜ
ˆt�w‰w‹-€CØ‡J�Jˆq„MØˆ�F€AØÖ
�Qˆ1ˆq‹5Ð
€CÐ
ØÖ
�Qˆ1ˆq‹5Ð
€CÐ
à
€CÜ�1�q‘5‹\ò "ˆØ�
‰
”6˜!˜a™%“=Õ!ð"à‡K�K„Mä
�A‹,�q˜!‘tÑ
€CØŒ3 3Ö'˜a”�A�q•Ò'Ð(Ñ(€CØŒ3 3Ö'˜a”�A�q•Ò'Ð(Ñ(€CàŒL˜ÓÐÑ€Cà	€AÜ�1‹Xò ˆØˆq‰D”˜1“ÑˆØ	ŒS SÖ) ”2�a˜•8Ò)Ð*Ñ*ˆØ	ŒS SÖ) ”2�a˜•8Ò)Ð*Ñ*ˆØ	ˆQ‰‰ð	ô ˜#˜sÓ# S¨1¨"Ð,Ð,ùò+ ùÚ
ùò (ùÚ'ùò *ùÚ)s$   ÄIÄ"IÆI 
Æ0I%
ÈI*È&I/c           	      óâ  ‡— t        | j                  t        «      t        | j                  t        «      }}|t        j
                     }|t        j
                     }|j                  «        |j                  «        |D �cg c]
  }|dk  sŒ	|‘Œ }}|D �cg c]
  }|dk  sŒ	|‘Œ c}Š‰rt        ˆfd„|D «       «      rt        S |sy|d   }d}	t        j                  }
t        t        t        | «      «      Ž D ]`  }|	|z  }	|	|dz   z  }	|	t        | j                  D �cg c]  }||z   ‘Œ	 c}Ž z  }	|	t        | j                  D �cg c]  }||z   ‘Œ	 c}Ž z  }	|
|	z  }
Œb |
S c c}w c c}w c c}w c c}w )zj Recognise polynomial cases. Returns None if not such a case.
        Requires order to be fully reduced. r   c              3   ó.   •K  — | ]  }|‰d    k  –— Œ y­w)rw   Nru   )rÍ   rk   Úbl0s     €r\   rÎ   z!try_polynomial.<locals>.<genexpr>¬  s   øè ø€ Ò, 1�1�s˜2‘w•;Ñ,ùrÄ  Nrw   rW   )rT   rg   r]   rh   r   rœ   râ   Úallr   r‰   r   r¥   r  r   )rj   rn   rè   ré   rN  r�  rZ   Úal0rk   r'  ri   r%  rl   r+  s                @r\   Útry_polynomialr.  ¡  sK  ø€ ô ˜dŸg™g¤uÓ-¬t°D·G±G¼UÓ/Cˆh€HØ	”!—&‘&Ñ	€BØ	”!—&‘&Ñ	€BØ‡G�G„IØ‡G�G„IØÖ
#�˜A ›FŠ1Ð
#€CÐ
#ØÖ
#�˜A ›FŠ1Ò
#€Cá
ŒsÓ,¨Ô,Ô,Üˆ	ÙØàˆB‰€AØ
€CÜ
�%‰%€CÜ”Dœ ˜r›“OÐ$ò ˆØˆq‰ˆØˆq�1‰u‰ˆØŒs D§G¡GÖ,˜q�Q˜“UÒ,Ð-Ñ-ˆØŒs D§G¡GÖ,˜q�Q˜“UÒ,Ð-Ñ-ˆØˆs‰
‰ðð €Jùò# $ùÚ
#ùò -ùÚ,s$   Â 
EÂEÂ
E"Â E"ÄE'ÅE,c           	      ó˜  — t        | j                  t        «      t        | j                  t        «      }}i }|j	                  «       D ]@  \  }}|dk7  r||vr y||   }t        |«      t        |«      f||<   |j                  |d«       ŒB |i k7  ryt        j                  |vry|t        j                     \  }}||dgz   f|t        j                  <   t        d«      }	t        j                  }
t        j                  }|j	                  «       D ]‘  \  }\  }}t        |«      t        |«      k7  r yt        ||«      D ]a  \  }}||z
  j                  r'||z
  }|
t        ||	z   |«      z  }
|t        ||«      z  }Œ<||z
  }|
t        ||«      z  }
|t        ||	z   |«      z  }Œc Œ“ t        |
|z  |	«      }t!        j"                  |«      }g }i }|D �]^  }|j%                  «       \  }
}|j'                  |	«      sDt)        |
|	«      }|j*                  st-        d«      ‚|j/                  «       \  \  }}|||z  |fgz  }Œl|
j'                  |	«      rt1        d«      ‚|j3                  |	«      \  }\  }d}|j4                  r|j6                  }|j8                  }||	k(  rd}nm|j:                  rV|j=                  |	«      \  }}d}||	k7  r|j=                  |	«      \  }}|||	z  |z   k7  rt1        d|z  «      ‚||z  }|||z  z  }nt1        d«      ‚|j?                  |g «      jA                  |
|z  |f«       �Œa i }i }t        d	«      }|jC                  d
„ ¬«       ddd|z
  z  i}|r3tE        |d   d   «      D ]  }|||   jG                  |«      z  ||dz   <   Œ! |D ]:  \  }}|j?                  t        j                  g «      jA                  |||   z  «       Œ< |j	                  «       D ]Î  \  }}|D ]1  \  } }|j?                  tI        |||«      g «      jA                  | «       Œ3 |jC                  d„ ¬«       tE        d|d   d   dz   «      D ]2  }| tI        |||«      fdtI        ||dz
  |«      fg|tI        |||«      <   Œ4 | tI        |d|«      fdd|z
  z  t        j                  fg|tI        |d|«      <   ŒÐ i }!tK        t        j                  gt        |jM                  «       «      z   «      D ]
  \  }}||!|<   Œ tO        |!j	                  «       d„ ¬«      D ��cg c]  \  }}tQ        |«      ‘Œ }"}}tS        |"«      }#tS        dgt        |#«      z  g«      }$|j	                  «       D ]  \  }} t!        | Ž |$|!|   <   Œ tU        t        |#«      «      }%|j	                  «       D ]  \  }}|D ]  \  } }&| |%|!|   |!|&   f<   Œ Œ tW        | |dg |#|$|%«      S c c}}w )z™
    Try to find an expression for Hyper_Function ``func`` in terms of Lerch
    Transcendents.

    Return None if no such expression can be found.
    r   NrW   r£   zp should be monomialz<Need partial fraction decomposition with linear denominatorszunrecognised form %sz%unrecognised form of partial fractionrn   c                 ó   — | d   S rV   ru   rÜ   s    r\   rÝ   ztry_lerchphi.<locals>.<lambda>   s
   €   1¡€ r^   rÞ   rw   c                 ó   — | d   S rV   ru   rÜ   s    r\   rÝ   ztry_lerchphi.<locals>.<lambda>*  s
   € ˜Q˜q™T€ r^   rv   c                 ó   — | d   S rV   ru   rÜ   s    r\   rÝ   ztry_lerchphi.<locals>.<lambda>4  s
   € ¸aÀ¹d€ r^   ),rT   rg   r]   rh   rà   r¥   r™  r   rœ   r	   r‰   rÅ   rî   Úis_positiver6   rO   r   Ú	make_argsr­   r)  rQ   Úis_monomialr9  ÚLTÚNotImplementedErrorÚas_coeff_mulÚis_Powr   ÚbaseÚis_AddÚas_independentrW  re   râ   r  ró   r8   Ú	enumeraterí   r  r   rL   rN   rf   )'rj   rè   ré   Úpairedrß   ÚvalueÚbvalueÚaintsÚbintsr£   r±   r²   Úavaluerk   rl   rà  Úpartr¹   Ú	monomialsÚtermsrÔ   r€  ÚindepÚdepr%  Útmpr&  Úderivrx  rn   Úmonr™   r[   ÚtransÚbasisrq   rr   rs   Úb2s'                                          r\   Útry_lerchphirO  ½  s  € ô ˜dŸg™g¤uÓ-¬t°D·G±G¼UÓ/Cˆh€Hà€FØ—n‘nÓ&ò  ‰
ˆˆUØ�!Š8˜ 8Ñ+ÙØ˜#‘ˆÜ˜E“{¤D¨£LÐ1ˆˆs‰Ø�‰�S˜$Õð ð �2‚~ØÜ‡v�v�XÑØØœ!Ÿ&™&‘>�L€Eˆ5à˜U a S™[Ð)€FŒ1�6‰6�Näˆc‹
€AÜ�E‰E€EÜ�E‰E€EØ!'§¡£ò &ÑˆÑˆf�fÜˆv‹;œ#˜f›+Ò%Ùô ˜ Ó'ò 	&‰DˆAˆqØ�A‘×"Ò"Ø˜‘E�Øœ˜A ™E 1›Ñ%�Øœ˜A˜q›Ñ!‘à˜‘E�Øœ˜A˜q›Ñ!�Øœ˜A ™E 1›Ñ%‘ñ	&ð&ô( ��u‘˜aÓ €DÜ�=‰=˜Ó€DØ€IØ€EØó 9ˆØ×)Ñ)Ó+‰ˆˆuØ�y‰y˜Œ|Ü�U˜A“ˆAØ—=’=ÜÐ 6Ó7Ð7ØŸ™›‰J‰Uˆa�AØ˜1˜U™7 A˜,˜Ñ'ˆIØØ�9‰9�QŒ<Ü%ð 'Bó Cð Cà×)Ñ)¨!Ó,‰ˆ‰u�ØˆØ�:Š:Ø—‘ˆAØ—(‘(ˆCØ�!Š8Ø‰AØ�ZŠZØ×'Ñ'¨Ó*‰FˆAˆsØˆAØ�aŠxØ×)Ñ)¨!Ó,‘��1Ø�a˜‘c˜A‘gŠ~Ü)Ð*@À3Ñ*FÓGÐGØ�‰FˆAØ�Q˜‘T‰M‰Eä%Ð&MÓNÐNØ×Ñ˜˜BÓ×&Ñ&¨¨e©°QÐ'7Ö8ð=9ðL €EØ€FÜˆc‹
€AØ‡N�N‘~€NÔ&Øˆa��Q‘‰iˆ.€CÙÜ�y ‘} QÑ'Ó(ò 	*ˆAØ˜3˜q™6Ÿ;™; q›>Ñ)ˆC��A‘ŠJð	*àò 6‰ˆˆ1Ø×Ñœ!Ÿ%™% Ó$×+Ñ+¨A¨c°!©f©HÕ5ð6à—‘“ò 8‰ˆˆ1Øò 	?‰DˆAˆqØ×Ñœh q¨!¨QÓ/°Ó4×;Ñ;¸AÕ>ð	?à	�‰‘>ˆÔ"Ü�q˜!˜B™% ™( Q™,Ó'ò 	DˆAØ*+¨¬X°a¸¸AÓ->Ð(?Ø)*¬H°Q¸¸A¹¸qÓ,AÐ(Bð(DˆE”(˜1˜a Ó#Ò$ð	Dð '( R¬°!°Q¸Ó):Ð$;Ø%&¨¨A©¡Y´·±Ð$6ð$8ˆŒh�q˜!˜QÓÒ ð8ð €EÜœ1Ÿ5™5˜'¤D¨¯©«Ó$6Ñ6Ó7ò ‰ˆˆ1ØˆˆaŠðä*0°·±³Ù5Bô+D÷ E¡  AŒ[˜�^ð E€Eñ Eäˆu‹€AÜ��”C˜“F‘
ˆ|Ó€AØ—‘“ò ‰ˆˆ1Ü˜1�gˆˆ%�‰(ŠðäŒc�!‹f‹€AØ—‘“ò '‰ˆˆ1Øò 	'‰EˆAˆrØ%&ˆAˆe�A‰h˜˜b™	Ð!Ò"ñ	'ð'ô �4˜˜D " a¨¨AÓ.Ð.ùóEs   ÔWc           
      ór  — t        d«      }| j                  �r| j                  D �cg c]  }t        |z   ‘Œ }}| j                  D �cg c]  }t        |z   dz
  ‘Œ }}t        t	        |Ž z  |t	        |Ž z  z
  }t        |t        «      } |j                  «       }g }	t        |«      }
t        |«      D ]d  }| j                  d   |z   }|	t        |gt        | j                  dd «      z   | j                  |«      gz  }	||dz
  k  sŒS| |
||f<   ||
||dz   f<   Œf t        |	«      }t        dgdg|dz
  z  z   g«      }t        |«      g}t        |«      D ]  }|j                  |
||   z  «       Œ  |j                  «       }|j                  «        dg|z  }t!        |«      D ].  \  }}t!        |||   z  «      D ]  \  }}||xx   ||z  z  cc<   Œ Œ0 t!        |«      D ]6  \  }}| ||dz
     d|dz
  f   z   |j                  «       d   z  |
|dz
  |f<   Œ8 t#        | |dg |||
«      S g }	t        | j                  dd «      }t        t%        |«      «      D ]   }|	t        g ||«      gz  }	||xx   dz  cc<   Œ" |	t        g ||«      gz  }	t        |	«      }t%        |«      }t        dgdg|dz
  z  z   g«      }t        |«      }
|t	        | j                  Ž z  |
d|dz
  f<   t        d|«      D ]4  }| j                  |dz
     |
||dz
  f<   | j                  |dz
      |
||f<   Œ6 t#        | |dg |||
«      S c c}w c c}w )zU
    Create a formula object representing the hypergeometric function ``func``.

    rn   rW   r   N)r	   rg   r  rh   r   rQ   r  rN   r  r?   r¥   rL   rM   re   r   r  r=  rf   rÅ   )rj   rn   rk   r#  rl   r$  r°   rP   r%  rM  rs   rà  rq   rr   Úderivsr™   ri   r[   rz  r{  rh   r÷   s                         r\   Úbuild_hypergeometric_formularR  @  sv  € ô 	ˆc‹
€AØ‡wƒwØ$(§G¡GÖ,˜q”B˜“FÐ,ˆÐ,Ø(,¯©Ö0 1”B˜‘F˜Q“JÐ0ˆÐ0Ü”#�x�.Ñ  1¤S¨( ^Ñ#3Ñ3ˆÜ�Dœ"‹~ˆØˆD�K‰K‹MˆØˆÜ�!‹HˆÜ�q“ò 	 ˆAØ—‘˜‘
˜Q‘ˆAØ”e˜Q˜C¤$ t§w¡w¨q¨r {Ó"3Ñ3°T·W±W¸aÓ@ÐAÑAˆEØ�1�q‘5‹yØ˜"��!�Q�$‘Ø��!�Q˜‘U�(’ð	 ô �5‹MˆÜ�Q�C˜1˜#˜q 1™u™+Ñ%Ð&Ó'ˆÜ�a“&�ˆÜ�q“ò 	'ˆAØ�M‰M˜!˜F 1™I™+Õ&ð	'àˆD�O‰OÓˆØ	�	‰	ŒØˆc�!‰eˆÜ˜a“Lò 	‰DˆAˆqÜ! ! F¨1¡I¡+Ó.ò ‘��1Ø�A“˜!˜A™#‘”ñð	ô ˜c“Nò 	J‰DˆAˆqØ˜"˜V A¨¡E™]¨1¨a°!©e¨8Ñ4Ñ4°_°T·_±_Ó5FÀqÑ5IÑIˆAˆa�!‰e�QˆhŠKð	Jä�t˜Q  b¨!¨Q°Ó2Ð2ð ˆÜ�$—'‘'™!�*ÓˆÜ”s˜2“w“ò 	ˆAØ”e˜B  AÓ&Ð'Ñ'ˆEØˆq‹E�Q‰JŒEð	ð 	”%˜˜B Ó"Ð#Ñ#ˆÜ�5‹MˆÜ�‹FˆÜ�Q�C˜1˜#˜q 1™u™+Ñ%Ð&Ó'ˆÜ�!‹HˆØœ˜TŸW™W˜‘oˆˆ!ˆQ�‰Uˆ(‰Ü�q˜!“ò 	&ˆAØŸ'™' ! a¡%™.ˆAˆa��Q‘ˆh‰KØ—w‘w˜q 1™u‘~�oˆAˆa�ˆdŠGð	&ô �t˜Q  b¨!¨Q°Ó2Ð2ùòY -ùÚ0s   §L/ÁL4c                 ó  — t        | «      t        |«      }}|}t        |«      }|dk(  rt        j                  S ddlm} |dk(  �r:|dk(  �r4| |z   \  }}}	|dk(  r;t        |	|z
  |z
  «      t        |	«      z  t        |	|z
  «      z  t        |	|z
  «      z  S |dk(  r |||z
  |	z   «      dk(  r||}}|dk(  rÌ |||z
  |	z   «      dk(  r»|j                  rh|j                  r\dt        t        |z  dz  «      z  t        | «      z  t        ||z
  dz   «      z  t        | dz  «      z  t        |dz  |z
  dz   «      z  S t        |dz  dz   «      t        ||z
  dz   «      z  t        |dz   «      z  t        |dz  |z
  dz   «      z  S t        | ||«      S )zå
    Try to find a closed-form expression for hyper(ap, bq, z), where ``z``
    is supposed to be a "special" value, e.g. 1.

    This function tries various of the classical summation formulae
    (Gauss, Saalschuetz, etc).
    r   ©r•   rv   rW   rw   )rÅ   r>   r   r‰   Úsympy.simplify.simplifyr•   r#   rÊ   rË   r!   r   r?   )
rg   rh   rn   r€  ÚqÚz_r•   rk   rl   r[   s
             r\   Úhyperexpand_specialrX  z  s�  € ô ˆr‹7”C˜“G€q€AØ	
€BÜ�1‹€AØˆA‚vÜ�u‰uˆÝ0ØˆAƒv�!�q“&à�r‘'‰ˆˆ1ˆaØ�Š6ä˜˜Q™ ™Ó#¤E¨!£HÑ,¬U°1°q±5«\Ñ9¼%ÀÀAÁ»,ÑFÐFØ�Š7‘x  A¡¨¡	Ó*¨aÒ/Ø�aˆqˆAØ�Š7‘x  A¡¨¡	Ó*¨aÒ/à�|Š| §¢ØœœR ™T !™V›‘}¤U¨A¨2£YÑ.¬u°Q¸±U¸Q±YÓ/?Ñ?Ü˜A˜2˜a™4“[ñ!Ü!& q¨¡s¨Q¡w°¡{Ó!3ñ4ð 4ô ˜Q˜q™S 1™W“~¤e¨A°©E°A©IÓ&6Ñ6Ü˜1˜q™5“\ñ"Ü"'¨¨!©¨a©°!©Ó"4ñ5ð 5ô ��R˜ÓÐr^   NÚz0rW   Údefaultc                 ó   ‡‡‡‡‡‡— ‰j                   rt        j                  S ddlm} t        ‰d¬«      Š‰dk(  rdŠˆˆˆˆˆˆfd„}t        €
t        «       at        d| «       t        | «      \  } }	|	rt        d	| «       nt        d
«       t        | ‰«      }
|
�Ot        d«       t        |
|	ˆfd„«      }t        |‰z  ‰ˆfd„«      }t         ||«      j                  ‰‰«      «      S t        j                  }t        | ‰«      }
|
�|
\  } }}t        d| «       |	|z  }	t        ||	ˆfd„«      }t        |‰z  ‰ˆfd„«      } ||«      j                  ‰‰«      }t        ‰«      dv rst!        | j"                  «      t!        | j$                  «      fdk(  rFt'        | «      } |||	«      j)                  t*        t,        «      }|j/                  t*        «      s||z   S t        j1                  | «      }|€t3        | «      }|€t        dd«       t'        | «      }t        d|j4                  d|j6                  «       |	t9        | |j6                  ‰«      z  }	 |||	«      |z   }t;        |d¬«      j)                  t*        t,        «      S )a7  
    Try to find an expression for the hypergeometric function ``func``.

    Explanation
    ===========

    The result is expressed in terms of a dummy variable ``z0``. Then it
    is multiplied by ``premult``. Then ``ops0`` is applied.
    ``premult`` must be a*z**prem for some a independent of ``z``.
    r   rT  F)r_  rZ  Únonrepsmallc                 óª  •— t        | j                  j                  | j                  ‰
«      |t	        | j
                  j                  | j                  ‰
«      ‰
«      «      }t        |‰t	        | j
                  j                  | j                  ‰
«      ‰t        | j
                  j                  d   «      z  z   ‰
«      «      }‰dk(  r|j                  t        ‰
«      «      }t        d„ t        || j                  j                  | j                  ‰
«      «      t        j                  «      ‰z  }|j                  ‰
‰	«      }‰r|j                  ‰«      }|S )Nr   rW   c                 ó   — | |d   |d   z  z   S r-  ru   r.  s     r\   rÝ   z5_hyperexpand.<locals>.carryout_plan.<locals>.<lambda>Á  s   € ˜q  1¡ a¨¡d¡™{€ r^   )r  rr   r_  rn   rþ  rs   rM   Úshaperü  r´   r   rî   rq   r   rœ   Úrewrite)rX  r  rr   rz  ri   Úops0ÚpremÚpremultr`  rn   rY  s        €€€€€€r\   Úcarryout_planz#_hyperexpand.<locals>.carryout_plan¸  s  ø€ Ü˜AŸC™CŸH™H Q§S¡S¨"Ó-¨sÜ4°Q·S±S·X±X¸a¿c¹cÀ2Ó5FÈÓKóMˆä˜A˜tÜ4°Q·S±S·X±X¸a¿c¹cÀ2Ó5FØ+/´°A·C±C·I±I¸a±LÓ0AÑ+Añ6BØCEóGóHˆð �aŠ<Ø—‘œI b›MÓ*ˆAÜÑ*¬C°°1·3±3·8±8¸A¿C¹CÀÓ3DÓ,EÄqÇvÁvÓNÈwÑVˆØ�f‰f�R˜‹mˆÙØ—+‘+˜gÓ&ˆCØˆ
r^   z)Trying to expand hypergeometric function ú  Reduced order to ú  Could not reduce order.z  Recognised polynomial.c                 ó,   •— ‰| j                  ‰«      z  S rb   ©ró   ©rX  rY  s    €r\   rÝ   z_hyperexpand.<locals>.<lambda>Ý  s   ø€ °°1·6±6¸"³:±€ r^   c                 ó,   •— ‰| j                  ‰«      z  S rb   rh  ri  s    €r\   rÝ   z_hyperexpand.<locals>.<lambda>Þ  s   ø€ °r¸!¿&¹&À»*±}€ r^   z+  Recognised shifted sum, reduced order to c                 ó,   •— ‰| j                  ‰«      z  S rb   rh  ri  s    €r\   rÝ   z_hyperexpand.<locals>.<lambda>ê  s   ø€ ¨"¨Q¯V©V°B«Z©-€ r^   c                 ó,   •— ‰| j                  ‰«      z  S rb   rh  ri  s    €r\   rÝ   z_hyperexpand.<locals>.<lambda>ë  s   ø€ °2°a·f±f¸R³j±=€ r^   )rW   rw   )rv   rW   z  Could not find an origin. z@Will return answer in terms of simpler hypergeometric functions.z  Found an origin: ú T©Úpolar)Úis_zeror   r‰   rU  r•   r=   Ú_collectionrS  rº   ró  r.  r  r>   r_  rœ   r(  rÅ   rg   rh   rR  Úreplacer?   rX  r)  rd  rO  r"  rj   r$  rS   )rj   rn   ra  rY  rc  rb  r`  r•   rd  r  ri   r€  ÚnopsrX  rz  rq  s    ``````         r\   Ú_hyperexpandrt  ¢  sR  ý€ ð 	‡y‚yÜ�u‰uˆå0ä�˜Ô€AØ�)ÒØˆ÷ñ ô* ÐÜ'Ó)ˆä	Ð
5°tÔ<ô ˜TÓ"�I€Dˆ#Ù
ÜÐ# TÕ*äÐ)Ô*ô ˜˜rÓ
"€CØ
€ÜÐ(Ô)Ü˜C Ó&=Ó>ˆÜ˜A˜g™I tÓ-DÓEˆÜ™( 1›+×*Ñ*¨2¨qÓ1Ó2Ð2ô 	
�‰€AÜ
˜$ Ó
#€CØ
€Ø‰ˆˆd�AÜÐ;¸TÔBØˆt‰ˆô 	˜˜3Ó 7Ó8€AÜ˜˜'™	 4Ó)@ÓA€AÙ�‹×Ñ˜˜QÓ€Aô �!ƒ}˜Ñ¤S¨¯©£\´3°t·w±w³<Ð$@ÀFÒ$JÜ(¨Ó.ˆÙ˜!˜SÓ!×)Ñ)¬%Ô1DÓEˆØ�u‰u”UŒ|Ø�q‘5ˆLô ×'Ñ'¨Ó-€Gð €Ü˜tÓ$ˆà€ÜÐ,ð2ô	3ô /¨tÓ4ˆä	Ð
 ×!4Ñ!4°c¸7¿<¹<ÔHð Œ;�t˜WŸ\™\¨2Ó.Ñ.€Cñ 	�g˜sÓ# aÑ'€Aä�Q˜dÔ#×+Ñ+¬EÔ3FÓGÐGr^   c           	      óJ  ‡‡‡‡	‡
— d„ }t        | j                  «      Št        | j                  «      Št        | j                  «      Š	t        | j                  «      Š
g }d}|�rDd} |‰|j                  ˆˆˆ	ˆ
ˆfd„d‰	‰
z   «      }|�	||gz  }d}Œ0 |‰|j                  ˆˆˆ	ˆ
ˆfd„d‰	‰
z   «      }|�	||gz  }d}Œ[ |‰	|j                  ˆˆˆ	ˆ
ˆfd„d‰‰z   «      }|�	||gz  }d}Œ† |‰
|j                  ˆˆˆ	ˆ
ˆfd	„d‰‰z   «      }|�	||gz  }d}Œ± |‰|j                  ˆfd
„dg «      }|�	||gz  }d}ŒÕ |‰|j                  ˆfd„dg «      }|�	||gz  }d}Œù |‰	|j                  ˆ	fd„dg «      }|�
||gz  }d}�Œ |‰
|j                  ˆ
fd„dg «      }|�
||gz  }d}�ŒC|r�ŒD‰t        |j                  «      k7  sH‰t        |j                  «      k7  s0‰	t        |j                  «      k7  s‰
t        |j                  «      k7  rt        d«      ‚|j                  «        |S )a  
    Find operators to convert G-function ``fro`` into G-function ``to``.

    Explanation
    ===========

    It is assumed that ``fro`` and ``to`` have the same signatures, and that in fact
    any corresponding pair of parameters differs by integers, and a direct path
    is possible. I.e. if there are parameters a1 b1 c1  and a2 b2 c2 it is
    assumed that a1 can be shifted to a2, etc. The only thing this routine
    determines is the order of shifts to apply, nothing clever will be tried.
    It is also assumed that ``fro`` is suitable.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import (devise_plan_meijer,
    ...                                         G_Function)
    >>> from sympy.abc import z

    Empty plan:

    >>> devise_plan_meijer(G_Function([1], [2], [3], [4]),
    ...                    G_Function([1], [2], [3], [4]), z)
    []

    Very simple plans:

    >>> devise_plan_meijer(G_Function([0], [], [], []),
    ...                    G_Function([1], [], [], []), z)
    [<Increment upper a index #0 of [0], [], [], [].>]
    >>> devise_plan_meijer(G_Function([0], [], [], []),
    ...                    G_Function([-1], [], [], []), z)
    [<Decrement upper a=0.>]
    >>> devise_plan_meijer(G_Function([], [1], [], []),
    ...                    G_Function([], [2], [], []), z)
    [<Increment lower a index #0 of [], [1], [], [].>]

    Slightly more complicated plans:

    >>> devise_plan_meijer(G_Function([0], [], [], []),
    ...                    G_Function([2], [], [], []), z)
    [<Increment upper a index #0 of [1], [], [], [].>,
    <Increment upper a index #0 of [0], [], [], [].>]
    >>> devise_plan_meijer(G_Function([0], [], [0], []),
    ...                    G_Function([-1], [], [1], []), z)
    [<Increment upper b=0.>, <Decrement upper a=0.>]

    Order matters:

    >>> devise_plan_meijer(G_Function([0], [], [0], []),
    ...                    G_Function([1], [], [1], []), z)
    [<Increment upper a index #0 of [0], [], [1], [].>, <Increment upper b=0.>]
    c                 óØ   ‡— t        t        | |«      «      D ]Q  \  }\  Š}‰|z
  j                  sŒ|‰z
  |z  dkD  sŒ%t        ˆfd„|D «       «      sŒ: ||«      }| |xx   |z  cc<   |c S  y)aD   Try to apply ``shifter`` in order to bring some element in ``f``
            nearer to its counterpart in ``to``. ``diff`` is +/- 1 and
            determines the effect of ``shifter``. Counter is a list of elements
            blocking the shift.

            Return an operator if change was possible, else None.
        r   c              3   ó(   •K  — | ]	  }‰|k7  –— Œ y ­wrb   ru   )rÍ   rZ   rk   s     €r\   rÎ   z8devise_plan_meijer.<locals>.try_shift.<locals>.<genexpr>R  s   øè ø€ Ò0 1˜˜Q�Ñ0ùs   ƒN)r=  rî   rÊ   r,  )	rX  r£   Úshifterró   ÚcounterÚidxrl   r
  rk   s	           @r\   Ú	try_shiftz%devise_plan_meijer.<locals>.try_shiftG  sl   ø€ ô %¤S¨¨A£YÓ/ò 	‰KˆC‘�!�Qà�Q‘×"Ó"¨¨A©¨t¡|°aÓ'7ÜÓ0¨Ô0Õ0Ù˜S“\�Ø�#“˜$‘“Ø’	ñ	r^   TFc                 ó$   •— t        ‰‰‰‰| ‰«      S rb   )rÌ  ©r÷   ÚfanÚfapÚfbmÚfbqrn   s    €€€€€r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>_  ó   ø€ ¤°°S¸#¸sÀAÀqÓ!I€ r^   rW   c                 ó$   •— t        ‰‰‰‰| ‰«      S rb   )rÖ  r}  s    €€€€€r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>f  r‚  r^   c                 ó$   •— t        ‰‰‰‰| ‰«      S rb   )rº  r}  s    €€€€€r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>m  r‚  r^   rw   c                 ó$   •— t        ‰‰‰‰| ‰«      S rb   )rÒ  r}  s    €€€€€r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>t  r‚  r^   c                 ó    •— t        ‰|    «      S rb   )r®  )r÷   r~  s    €r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>z  ó   ø€ ¬\¸#¸a¹&Ó-A€ r^   c                 ó    •— t        ‰|    «      S rb   )r¶  )r÷   r  s    €r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>  r‡  r^   c                 ó    •— t        ‰|    «      S rb   )r©  )r÷   r€  s    €r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>„  r‡  r^   c                 ó    •— t        ‰|    «      S rb   )r²  )r÷   r�  s    €r\   rÝ   z$devise_plan_meijer.<locals>.<lambda>‰  r‡  r^   zCould not devise plan.)r¥   r‘   rg   r’   rh   r7  r  )r  r  rn   r{  r  Úchangerw  r~  r  r€  r�  s     `    @@@@r\   Údevise_plan_meijerrŒ    sN  ü€ òtô ˆs�v‰v‹,€CÜ
ˆs�v‰v‹,€CÜ
ˆs�v‰v‹,€CÜ
ˆs�v‰v‹,€CØ
€CØ€FÚ
ØˆÙ�s˜BŸE™EßIØ˜# ™)ó%ˆð ˆ>Ø�B�4‰KˆCØˆFØÙ�s˜BŸE™EßIØ˜# ™)ó%ˆð ˆ>Ø�B�4‰KˆCØˆFØÙ�s˜BŸE™EßIØ˜3 ™9ó&ˆð ˆ>Ø�B�4‰KˆCØˆFØÙ�s˜BŸE™EßIØ˜3 ™9ó&ˆð ˆ>Ø�B�4‰KˆCØˆFØÙ�s˜BŸE™EÓ#AÀ2ÀrÓJˆØˆ>Ø�B�4‰KˆCØˆFØÙ�s˜BŸE™EÓ#AÀ2ÀrÓJˆØˆ>Ø�B�4‰KˆCØˆFØÙ�s˜BŸE™EÓ#AÀ1ÀbÓIˆØˆ>Ø�B�4‰KˆCØˆFÙÙ�s˜BŸE™EÓ#AÀ1ÀbÓIˆØˆ>Ø�B�4‰KˆCØˆFÙóc ðd Œd�2—5‘5‹kÒ˜S¤D¨¯©£KÒ/°3¼$¸r¿u¹u»+Ò3EØ”4˜Ÿ™“;ÒÜ!Ð":Ó;Ð;Ø‡K�K„MØ€Jr^   c           
      ó²	  ‡‡‡— t         €
t        «       a |dk(  rd}| }t        d| «       t        d«      }t	        | «      \  } Š‰rt        d| «       nt        d«       t         j                  | «      }|�ôt        d|j                  «       ‰t        |j                  | |«      z  Št        |j                  j                  |j                  |«      ‰t        |j                  j                  |j                  |«      |«      «      }|j                  t        |«      «      }||j                   j                  |j                  |«      z  }	|	d   j                  ||«      }	t#        |	d	¬
«      S t        d«       d„ Šˆˆˆfd„}
t        d«      Š |
| j$                  | j&                  | j(                  | j*                  ||«      \  }}d„ }‰D ]@  }t-        |j.                  j                  |d‰z  t0        t0         i«      t0        «      |_        ŒB  |
 || j&                  «       || j$                  «       || j*                  «       || j(                  «      ‰d|z  «      \  }}t#        |j                  ||«      d	¬
«      }t#        |j                  ‰d|z  «      d	¬
«      }t3        |t4        «      s|j                  ‰d|z  «      } | |«      }|j6                  dkD  sk|j6                  dk(  rht9        |j(                  «      t9        |j*                  «      k(  r=t;        |j<                  «      dk  dur#t?        |«      t?        d«      k(  r|durd	}|durd	}|d	u r|jA                  |xs d«      }n|jA                  |xs d«      }|d	u r|jA                  |xs d«      }n|jA                  |xs d«      }|dur|dur|dk(  rd}|tB        k(  rd}t3        |t4        «      s|j                  ||«      }t3        |t4        «      s|j                  ||«      }d„ } |||«      } |||«      }tE        ||«      ddtF        fk  r	||k  r|S |S tI        |d   |d   «      dk  r.tI        |d   |d   «      dk  rtK        ||f||f ||«      d	f«      S tK        ||f||f ||«      d	f«      }	|	jM                  tN        «      r|st        d«       |	jM                  tN        «      r|r|	S  ||«      S )a‚  
    Try to find an expression for the Meijer G function specified
    by the G_Function ``func``. If ``allow_hyper`` is True, then returning
    an expression in terms of hypergeometric functions is allowed.

    Currently this just does Slater's theorem.
    If expansions exist both at zero and at infinity, ``place``
    can be set to ``0`` or ``zoo`` for the preferred choice.
    NrZ  z1Try to expand Meijer G function corresponding to rn   re  rf  z  Found a Meijer G formula: r   Trn  z;  Could not find a direct formula. Trying Slater's theorem.c                 óŠ   — | D ]>  }t        | |   «      dkD  sŒd}||v rt        ||   «      }|dz   t        | |   «      k  sŒ> y y)z Test if slater applies. rW   r   FT)rÅ   )r  r  r÷   r™   s       r\   Úcan_doz_meijergexpand.<locals>.can_doÍ  sU   € àò 	!ˆAÜ�3�q‘6‹{˜Q‹Ø�Ø˜‘8Ü˜C ™F›�AØ�q‘5œ3˜s 1™v›;Ó&Ù ð	!ð r^   c           
      ó&  •‡— t        | |||«      }|j                  «       \  }}}	} ‰+||	«      st        j                  dfS t	        | «      t	        |«      z   t	        |«      t	        |«      z   k  }
t	        | «      t	        |«      z   t	        |«      t	        |«      z   k(  rt        ‰«      dk  }
|
du rt        j                  dfS t        j                  }|D �]’  }t	        ||   «      dk(  �rD||   d   }d}t        |«      }|j                  |«       |D ]  }|t        ||z
  «      z  }Œ | D ]  }|t        d|z   |z
  «      z  }Œ |D ]  }|t        d|z   |z
  «      z  }Œ |D ]  }|t        ||z
  «      z  }Œ t        | «      t        |«      z   D �cg c]
  }d|z   |z
  ‘Œ }}t        |«      t        |«      z   D �cg c]
  }d|z   |z
  ‘Œ }}t        t        j                  t	        |«      t	        |«      z
  z  «      }||z  }‰-|z  |z  }t        t        ||«      |‰,‰-||d ¬«      }|||z  z  }�ŒZ||   d   }||   dd  D �cg c]  }||z
  ‘Œ	 }}t	        |«      }|	|   d |dz    D �cg c]  }||z
  ‘Œ	 }}t        |«      }||   D ]  }|j                  |«       Œ t        |«      } |	|   d | D ]  }| j                  |«       Œ |d   }!t        ||«      D �"�cg c]
  \  }"}|"|z
  ‘Œ }#}"}t        d«      }$‰|$z  }%|D ]?  }t        |d«      s |j                   rt#        t%        |«      «      }|%t        ||$z
  «      z  }%ŒA | D ]  }|%t        d|z
  |$z   «      z  }%Œ |D ]  }|%t        d|z
  |$z   «      z  }%Œ |D ]  }|%t        ||$z
  «      z  }%Œ t'        |%«      }%t)        t#        t%        |!«      «      «      D ]'  }&t+        |%|$||&z   «      }'t-        |'‰,ˆfd„«      }'||'z  }Œ) ||!z   }(t        t        j                  t	        | «      t	        |«      z   dz   z  «      }||z  }‰-|z  |(z  }t        | «      t        |«      z   D �cg c]
  }d|(z   |z
  ‘Œ c}dgz   }t        |«      t        |«      z   D �cg c]
  }d|(z   |z
  ‘Œ }}t        t        ||«      |‰,‰-||(d ¬«      }t        j                  |!z  t/        |!«      z  })t)        |«      D ]4  }*|)t        j                  |#|*   z  t1        |!||*   z
  dz   |#|*   «      z  z  })Œ6 | D ]  }|)t        d|z
  |(z   «      z  })Œ |D ]  }|)t        ||(z
  «      z  })Œ | D ]  }|)t        ||(z
  «      z  })Œ |D ]  }|)t        d|z
  |(z   «      z  })Œ ||)|z  z  }�Œ• ||
fS c c}w c c}w c c}w c c}w c c}}"w c c}w c c}w )NFrW   r   ©r`  rw   r§   c                 ó,   •— ‰| j                  ‰«      z  S rb   rh  )rX  rn   s    €r\   rÝ   z3_meijergexpand.<locals>.do_slater.<locals>.<lambda>!	  s   ø€ À!ÀAÇFÁFÈ1ÃIÁ+€ r^   )r–   r  r   rœ   rÅ   rï   r¥   r&  r#   r2   ÚNegativeOnert  rd   rî   r	   r   rX   ÚintÚroundr   r  rR   r  r7   r6   ).r‘   r’   rg   rh   rn   Úzfinalrj   r&  r  r  Úcondri   r  Úbhr'  Úborß  Úajrk   rî  rl   rò  rà  Úhargrc  ÚhypÚb_rŽ  Úkir�   r…  ÚliÚaoÚlur™   Údir§   Ú	integrandrz  ÚresidÚaurr   r÷   r�  r  r£   s.       `                                      €€€r\   Ú	do_slaterz!_meijergexpand.<locals>.do_slaterØ  s  ù€ ô ˜"˜b " bÓ)ˆØ×-Ñ-Ó/‰ˆˆ3��QÙ�c˜3ÔÜ—6‘6˜5�=Ð ä�2‹wœ˜R›Ñ ¤3 r£7¬S°«WÑ#4Ñ4ˆÜˆr‹7”S˜“WÑ¤ B£¬#¨b«'Ñ 1Ò1Ü�q“6˜A‘:ˆDØ�5‰=Ü—6‘6˜5�=Ð ä�f‰fˆØó T	ˆAÜ�3�q‘6‹{˜aÓØ˜‘V˜A‘Y�Ø�Ü˜"“X�Ø—	‘	˜"”Øò *�BØœ5  b¡›>Ñ)‘Cð*àò .�BØœ5  R¡¨"¡Ó-Ñ-‘Cð.àò .�BØœ5  R¡¨"¡Ó-Ñ-‘Cð.àò *�BØœ5  b¡›>Ñ)‘Cð*ä+/°«8´d¸2³hÑ+>Ö? a�q˜2‘v “zÐ?�Ð?Ü+/°«8´d¸2³hÑ+>Ö? a�q˜2‘v “zÐ?�Ð?äœqŸ}™}¬s°2«w¼¸R»Ñ/@ÑAÓB�Ø˜‘x�ð ˜Q™3 ™)�Ü"¤>°#°sÓ#;¸TÀ3Ø#$ g¨r¸4ôA�à�s˜S‘yÑ ’à˜‘V˜A‘Y�Ø(+¨A©¨q¨r¨
Ö3 "�b˜2“gÐ3�Ð3Ü˜“G�Ø(+¨A©¨v°°A±¨Ö7 "�b˜2“gÐ7�Ð7Ü˜"“X�Ø˜Q™ò !�AØ—I‘I˜a•Lð!ä˜"“X�Ø˜Q™  ˜ò !�AØ—I‘I˜a•Lð!à˜‘V�Ü*-¨b°"«+×6¡  A�a˜!“eÐ6�Ñ6ô ˜#“J�Ø˜q™D�	Øò .�AÜ˜q !œ9¨¯ªÜ¤ a£›M˜Ø¤ q¨1¡u£Ñ-‘Ið.ð ò 2�AØ¤ q¨1¡u¨q¡yÓ!1Ñ1‘Ið2àò 2�AØ¤ q¨1¡u¨q¡yÓ!1Ñ1‘Ið2àò .�AØ¤ q¨1¡u£Ñ-‘Ið.ô
 (¨	Ó2�	Üœs¤5¨£9›~Ó.ò !�AÜ# I¨q°"°q±&Ó9�EÜ+¨E°3Ó8MÓN�EØ˜5‘L‘Cð!ð ˜"‘W�ÜœqŸ}™}¬s°2«w¼¸R»Ñ/@À1Ñ/DÑEÓF�Ø˜‘x�Ø˜Q™3 ™)�Ü+/°«8´d¸2³hÑ+>Ö? a�q˜2‘v “zÒ?À1À#ÑE�Ü+/°«8´d¸2³hÑ+>Ö? a�q˜2‘v “zÐ?�Ð?ä"¤>°#°sÓ#;¸TÀ3Ø#$ g¨r¸4ôA�ô —M‘M BÑ'¬	°"«Ñ5�Ü˜q›ò H�AØœŸ™¨¨1©Ñ-¬b°°b¸±e±¸a±ÀÀAÁÓ.GÑGÑG‘AðHàò +�AØœ˜q 1™u r™zÓ*Ñ*‘Að+àò '�AØœ˜q 2™v›Ñ&‘Að'àò '�AØœ˜q 2™v›Ñ&‘Að'àò +�AØœ˜q 1™u r™zÓ*Ñ*‘Að+ð �q˜‘u‘’ðiT	ðl �DˆyÐùòQ @ùÚ?ùò 4ùâ7ùó 7ùò: @ùÚ?s*   ÆU/Æ:U4ÉU9É'U>ËVÐ=V	Ñ,Vr£   c                 ó2   — | D �cg c]  }d|z
  ‘Œ	 c}S c c}w rV   ru   )r™   rZ   s     r\   rç   z_meijergexpand.<locals>.trB	  s   € Ø Ö!˜!��A“Ò!Ð!ùÒ!s   …rW   rw   FÚnonrepr\  c                 ó¼   — |du rd}n	|du rd}nd}| j                  t        t        t         t        «      rd}|| j	                  t
        «      | j                  «       fS )NTr   FrW   rv   ry   )r)  r   r   r   Úcountr?   Ú	count_ops)r°   r—  Úc0s      r\   Úweightz_meijergexpand.<locals>.weightr	  sW   € Ø�4‰<Ø‰BØ�U‰]Ø‰BàˆBØ�8‰8”Bœœb˜S¤#Ô&ð ˆBØ�D—J‘JœuÓ% t§~¡~Ó'7Ð8Ð8r^   z@  Could express using hypergeometric functions, but not allowed.)(Ú_meijercollectionro  rº   r	   rù  rd  rj   rŒ  r  rr   r_  rn   rþ  rs   rü  r´   rq   rS   r‘   r’   rg   rh   rQ   rv  r  rÙ   rÉ   ÚdeltarÅ   r:   Únur2   r`  r   r=  r   r>  r9   r)  r?   )rj   rY  Úallow_hyperr`  ÚplaceÚfunc0rn   rX  rr   rz  r¦  Úslater1Úcond1rç   rw  Úslater2Úcond2r  r­  Úw1Úw2r�  r  r£   s                        @@@r\   Ú_meijergexpandrº  —  sa  ú€ ô Ð Ü3Ó5ÐØ�)ÒØˆà€EÜ	Ð
=¸tÔDô 	ˆc‹
€Aä# DÓ)�I€Dˆ#Ù
ÜÐ# TÕ*äÐ)Ô*ô 	×'Ñ'¨Ó-€AØ€}ÜÐ,¨a¯f©fÔ5ØÔ! !§&¡&¨$°Ó2Ñ2ˆô ˜AŸC™CŸH™H Q§S¡S¨!Ó,¨cÜ4°Q·S±S·X±X¸a¿c¹cÀ1Ó5EÀqÓIóKˆð �K‰Kœ	 !›Ó%ˆØˆa�c‰c�h‰h�q—s‘s˜AÓÑˆØˆa‰D�I‰I�a˜ÓˆÜ˜ $Ô'Ð'ä	Ð
GÔHò	öeôN 	ˆc‹
€AÙ˜tŸw™w¨¯©°·±¸$¿'¹'À1ÀbÓI�N€GˆUò"ð ò >ˆÜ˜Ÿ™Ÿ™ q¨!¨A©#¬r´B°3Ð&7Ó8¼"Ó=ˆ�ð>á™r $§'¡'›{©B¨t¯w©w«K¹¸D¿G¹G»ÁbÈÏÉÃkØ  ! B¡$ó(�N€GˆUô ˜Ÿ™ Q¨Ó+°4Ô8€GÜ˜Ÿ™ Q¨¨"©Ó-°TÔ:€GÜ�eœTÔ"Ø—
‘
˜1˜a ™cÓ"ˆáˆQ‹€AØ‡w�w�‚{Ø	
�‰�AŠœ#˜aŸd™d›)¤s¨1¯4©4£yÒ0Ü�—‘‹X˜‰] 5Ñ(¬Z¸«^¼zÈ!»}Ò-Lð ˜ÑØˆEØ˜ÑØˆEà��}Ø—/‘/ 'Ò"5¨XÓ6‰à—/‘/ 'Ò":¨]Ó;ˆØ��}Ø—/‘/ 'Ò"5¨XÓ6‰à—/‘/ 'Ò":¨]Ó;ˆà�EÑ˜e¨5Ñ0à�AŠ:ØˆEØ”CŠ<ØˆEä�eœTÔ"Ø—
‘
˜1˜bÓ!ˆÜ�eœTÔ"Ø—
‘
˜1˜bÓ!ˆò9ñ 
�˜Ó	€BÙ	�˜Ó	€BÜ
ˆ2ˆrƒ{�q˜!œR�jÒ Ø�Š7ØˆNàˆNÜ
ˆ2ˆa‰5�"�Q‘%Ó˜AÒ¤# b¨¡e¨R°©UÓ"3°qÒ"8Ü˜' 5Ð)¨G°UÐ+;¹eÀB»iÈÐ=NÓOÐOô
 	�7˜EÐ" W¨eÐ$4±u¸R³yÀ$Ð6GÓH€AØ‡u�uŒU„|™KÜð !ô 	"à�5‰5”Œ<™;Øˆá�‹9Ðr^   c                 óŠ   ‡‡‡— t        | «      } ˆfd„}ˆˆˆfd„}| j                  t        |«      j                  t        |«      S )aø  
    Expand hypergeometric functions. If allow_hyper is True, allow partial
    simplification (that is a result different from input,
    but still containing hypergeometric functions).

    If a G-function has expansions both at zero and at infinity,
    ``place`` can be set to ``0`` or ``zoo`` to indicate the
    preferred choice.

    Examples
    ========

    >>> from sympy.simplify.hyperexpand import hyperexpand
    >>> from sympy.functions import hyper
    >>> from sympy.abc import z
    >>> hyperexpand(hyper([], [], z))
    exp(z)

    Non-hyperegeometric parts of the expression and hypergeometric expressions
    that are not recognised are left unchanged:

    >>> hyperexpand(1 + hyper([1, 1, 1], [], z))
    hyper((1, 1, 1), (), z) + 1
    c                 óV   •— t        t        | |«      |‰¬«      }|€t        | ||«      S |S )Nr‘  )rt  rd   r?   )rg   rh   rn   rz  r`  s       €r\   Ú
do_replacezhyperexpand.<locals>.do_replace²	  s1   ø€ Üœ¨¨BÓ/°¸GÔDˆØˆ9Ü˜˜R Ó#Ð#àˆHr^   c           	      ó¤   •— t        t        | d   | d   |d   |d   «      |‰‰‰¬«      }|j                  t        t        t
        t
         «      s|S y )Nr   rW   )r`  r²  )rº  r–   r)  r   r   r   )rg   rh   rn   rz  r±  r²  r`  s       €€€r\   Ú	do_meijerzhyperexpand.<locals>.do_meijer¹	  sQ   ø€ Üœ: b¨¡e¨R°©U°B°q±E¸2¸a¹5ÓAÀ1Ø¨°uô>ˆà�u‰u”Sœ#œr¤B 3Ô'ØˆHð (r^   )r   rr  r?   rK   )rX  r±  r`  r²  r½  r¿  s    ```  r\   ÚhyperexpandrÀ  —	  s8   ú€ ô2 	�‹
€Aôöð
 �9‰9”U˜JÓ'×/Ñ/´¸ÓCÐCr^   )FrZ  N)Žr   Úcollectionsr   Ú	itertoolsr   Ú	functoolsr   Úmathr   Úsympyr   Ú
sympy.corer   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsympy.core.modr   Úsympy.core.sortingr   Úsympy.functionsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   Ú$sympy.functions.elementary.complexesr=   r>   Úsympy.functions.special.hyperr?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Úsympy.matricesrL   rM   rN   Úsympy.polysrO   rP   rQ   Úsympy.seriesrR   Úsympy.simplify.powsimprS   Úsympy.utilities.iterablesrT   r]   r‹   rª   r´   rº   rd   r–   r  rf   rS  r�   ro  rt  r~  r‚  r‹  r‘  r¥  r©  r®  r²  r¶  rº  rÌ  rÒ  rÖ  rÚ  rð  ró  rù  rþ  r  r$  r(  r.  rO  rR  rX  rq  rt  rŒ  r®  rº  rÀ  ru   r^   r\   ú<module>rÑ     sr  ðñõt $Ý Ý Ý å ÷@÷ @÷ @÷ @õ @å Ý /÷H÷ H÷ H÷ H÷ H÷ H÷ H÷ Hõ H÷ F÷5÷ 5÷ 5õ 5÷ .Ñ -ß )Ñ )Ý  Ý ,Ý *òò]ò@	@òFòôA�Tô AôH<H�ô <Hñ@ ˆ3ƒZ€÷Bñ B÷NIñ I÷X&:ñ &:÷Rñ ÷.2ñ 2ôj!�8ô !ô
HˆXô 
Hô
LˆXô 
Lô&Lˆxô &LôR'Lˆxô 'LôTH�8ô HôL�8ô LôI�8ô IôL�8ô Lô#N�Xô #NôL,N�Xô ,Nô^0N�Xô 0Nôf.N�Xô .Nôb=�(ô =ò@ò4?ò87ò<òòFòR*-òZò8@/òF73òt#ðJ €ð  "¡e¨D£k¸1À1Ø"óhHòVEðN Ð ð 9BØó}ô@'Dr^   