Ë
    7^(h-  ã                   ó¤   — d dl mZ d dlmZ d dlmZmZmZ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 dd
lmZ  G d„ d«      Z G d„ d«      Zy)é    )Úoo)Úsymbols)ÚFiniteFieldÚQQÚRationalFieldÚFF)ÚPoly)Úsolve)Úis_sequence)Úas_inté   )Údivisors)Úpolynomial_congruencec                   ó¤   — e Zd ZdZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zy)ÚEllipticCurvea_  
    Create the following Elliptic Curve over domain.

    `y^{2} + a_{1} x y + a_{3} y = x^{3} + a_{2} x^{2} + a_{4} x + a_{6}`

    The default domain is ``QQ``. If no coefficient ``a1``, ``a2``, ``a3``,
    is given then it creates a curve with the following form:

    `y^{2} = x^{3} + a_{4} x + a_{6}`

    Examples
    ========

    References
    ==========

    .. [1] J. Silverman "A Friendly Introduction to Number Theory" Third Edition
    .. [2] https://mathworld.wolfram.com/EllipticDiscriminant.html
    .. [3] G. Hardy, E. Wright "An Introduction to the Theory of Numbers" Sixth Edition

    c                 ó€  — |dk(  rt         }nt        |«      }t        |j                  |||||f«      \  }}}}}|| _        || _        |dz  d|z  z   }d|z  ||z  z   }	|dz  d|z  z   }
|dz  |z  d|z  |z  z   ||z  |z  z
  ||dz  z  z   |dz  z
  }||	|
|f\  | _        | _        | _        | _	        |dz   |z  d|	dz  z  z
  d|
dz  z  z
  d|z  |	z  |
z  z   | _
        || _        || _        || _        || _        || _        t!        d«      \  }}}|||c| _        | _        | _        t)        |dz  |z  ||z  |z  |z  z   ||z  |dz  z  z   |dz  z
  ||dz  z  |z  z
  ||z  |dz  z  z
  ||dz  z  z
  |¬	«      | _        t-        | j                  t.        «      rd| _        y t-        | j                  t2        «      rd | _        y y )
Nr   é   é   é   é   é   é	   zx y z)Údomain)r   r   ÚmapÚconvertÚ_domainÚmodulusÚ_b2Ú_b4Ú_b6Ú_b8Ú_discrimÚ_a1Ú_a2Ú_a3Ú_a4Ú_a6r   ÚxÚyÚzr	   Ú_polyÚ
isinstancer   Ú_rankr   )ÚselfÚa4Úa6Úa1Úa2Úa3r   r   Úb2Úb4Úb6Úb8r(   r)   r*   s                  úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/ntheory/elliptic_curve.pyÚ__init__zEllipticCurve.__init__#   s	  € Ø�aŠ<Ü‰Fä˜“[ˆFÜ  §¡°"°b¸"¸bÀ"Ð1EÓFÑˆˆB��B˜ØˆŒØˆŒà�‰U�Q˜‘V‰^ˆØ�‰V�b˜2‘gÑˆØ�‰U�Q˜‘V‰^ˆØ�‰U�R‰Z˜!˜b™& 2™+Ñ%¨¨R©°"©Ñ4°r¸BÀ¹E±zÑAÀBÈÁEÑIˆØ13°R¸¸R°Ñ.ˆŒ�$”(˜DœH d¤hØ˜Q™˜ ™ a¨"¨a©%¡iÑ/°"°r¸1±u±*Ñ<¸qÀ2¹vÈ¹{ÈRÑ?OÑOˆŒØˆŒØˆŒØˆŒØˆŒØˆŒÜ˜'Ó"‰ˆˆ1ˆaØ!" A qÐˆŒ�”˜œÜ˜!˜Q™$˜q™& 2 a¡4¨¡6¨!¡8Ñ+¨b°©d°1°a±4©iÑ7¸!¸Q¹$Ñ>ÀÀAÀqÁDÁÈÁÑJÈRÐPQÉTÐRSÐUVÑRVÉYÑVÐY[Ð\]Ð_`Ñ\`ÑY`Ñ`ÐioÔpˆŒ
Ü�d—l‘l¤KÔ0ØˆD�JÜ˜Ÿ™¤mÔ4ØˆD�Jð 5ó    c                 ó   — t        |||| «      S ©N©ÚEllipticCurvePoint)r.   r(   r)   r*   s       r8   Ú__call__zEllipticCurve.__call__?   s   € Ü! ! Q¨¨4Ó0Ð0r:   c                 ó„  — t        |«      rt        |«      dk(  rd}n|d   }|d d \  }}n@t        |t        «      r%|j                  |j
                  |j                  }}}nt        d«      ‚| j                  dk(  r|dk(  ry| j                  j                  | j                  || j
                  || j                  |i«      dk(  S )Nr   r   zInvalid point.r   T)r   Úlenr,   r>   r(   r)   r*   Ú
ValueErrorÚcharacteristicr+   Úsubs)r.   ÚpointÚz1Úx1Úy1s        r8   Ú__contains__zEllipticCurve.__contains__B   sª   € Ü�uÔÜ�5‹z˜QŠØ‘à˜1‘X�Ø˜2˜A�Y‰FˆB‘Ü˜Ô1Ô2ØŸ™ %§'¡'¨5¯7©7�B�‰BäÐ-Ó.Ð.Ø×Ñ !Ò#¨¨aªØØ�z‰z�‰ §¡¨¨D¯F©F°B¸¿¹ÀÐCÓDÈÑIÐIr:   c                 ó6   — | j                   j                  «       S r<   )r+   Ú__repr__©r.   s    r8   rK   zEllipticCurve.__repr__Q   s   € Ø�z‰z×"Ñ"Ó$Ð$r:   c                 ó¦  — | j                   }|dk(  r| S |dk(  r@t        | j                  dz  | j                  dz  | j                  dz  | j
                  ¬«      S | j                  dz  d| j                  z  z
  }| j                  dz   d| j                  z  | j                  z  z   d| j                  z  z
  }t        d|z  d	|z  | j
                  ¬
«      S )a<  
        Return minimal Weierstrass equation.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve

        >>> e1 = EllipticCurve(-10, -20, 0, -1, 1)
        >>> e1.minimal()
        Poly(-x**3 + 13392*x*z**2 + y**2*z + 1080432*z**3, x, y, z, domain='QQ')

        r   r   r   )r2   r   é   é$   éØ   iåÿÿÿiÊÿÿÿ)r   )rC   r   r   r    r   r   )r.   ÚcharÚc4Úc6s       r8   ÚminimalzEllipticCurve.minimalT   s¹   € ð ×"Ñ"ˆØ�1Š9ØˆKØ�1Š9Ü  §¡¨!¡¨T¯X©X°a©Z¸D¿H¹HÀQ¹JÐPT×P\ÑP\Ô]Ð]Ø�X‰X�q‰[˜2˜dŸh™h™;Ñ&ˆØ�h‰h˜‰kˆ\˜B˜tŸx™x™K¨¯©Ñ0Ñ0°3°t·x±x±<Ñ?ˆÜ˜S ™V S¨¡V°T·\±\ÔBÐBr:   c                 ó:  ‡— | j                   }t        «       }|dk\  rut        |«      D ]e  Š| j                  j	                  | j
                  ‰| j                  di«      j                  }t        ||«      }|j                  ˆfd„|D «       «       Œg |S t        d«      ‚)a5  
        Return points of curve over Finite Field.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve
        >>> e2 = EllipticCurve(1, 1, 1, 1, 1, modulus=5)
        >>> e2.points()
        {(0, 2), (1, 4), (2, 0), (2, 2), (3, 0), (3, 1), (4, 0)}

        r   c              3   ó&   •K  — | ]  }‰|f–— Œ
 y ­wr<   © )Ú.0ÚnumÚis     €r8   ú	<genexpr>z'EllipticCurve.points.<locals>.<genexpr>   s   øè ø€ Ò6¨3˜q #œhÑ6ùs   ƒzInfinitely many points)rC   ÚsetÚranger+   rD   r(   r*   Úexprr   ÚupdaterB   )r.   rQ   Úall_ptÚcongruence_eqÚsolrZ   s        @r8   ÚpointszEllipticCurve.pointsk   s‹   ø€ ð ×"Ñ"ˆÜ“ˆØ�1Š9Ü˜4“[ò 7�Ø $§
¡
§¡°·±¸¸D¿F¹FÀAÐ0FÓ G× LÑ L�Ü+¨M¸4Ó@�Ø—‘Ó6°#Ô6Õ6ð7ð ˆMäÐ5Ó6Ð6r:   c                 ó˜  — g }| j                   t        k(  rIt        | j                  j	                  | j
                  |«      «      D ]  }|j                  ||f«       Œ |S | j                  j	                  | j
                  || j                  di«      j                  }t        || j                  «      D ]  }|j                  ||f«       Œ |S )z7Returns points on the curve for the given x-coordinate.r   )r   r   r
   r+   rD   r(   Úappendr*   r^   r   rC   )r.   r(   Úptr)   ra   s        r8   Úpoints_xzEllipticCurve.points_x„   s­   € àˆØ�<‰<œ2ÒÜ˜4Ÿ:™:Ÿ?™?¨4¯6©6°1Ó5Ó6ò "�Ø—	‘	˜1˜a˜&Õ!ð"ð ˆ	ð !ŸJ™JŸO™O¨T¯V©V°Q¸¿¹ÀÐ,BÓC×HÑHˆMÜ*¨=¸$×:MÑ:MÓNò "�Ø—	‘	˜1˜a˜&Õ!ð"àˆ	r:   c           	      óž  — | j                   dkD  rt        d«      ‚t        j                  | «      g}t	        | j
                  j                  | j                  d| j                  di«      «      D ]'  }|j                  sŒ|j                   | |d«      «       Œ) t        | j                  d¬«      D ]œ  }t        |dz  «      }|dz  |k(  sŒt	        | j
                  j                  | j                  || j                  di«      «      D ]D  }|j                  sŒ | ||«      }|j                  «       t        k7  sŒ1|j!                  || g«       ŒF Œž |S )al  
        Return torsion points of curve over Rational number.

        Return point objects those are finite order.
        According to Nagell-Lutz theorem, torsion point p(x, y)
        x and y are integers, either y = 0 or y**2 is divisor
        of discriminent. According to Mazur's theorem, there are
        at most 15 points in torsion collection.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve
        >>> e2 = EllipticCurve(-43, 166)
        >>> sorted(e2.torsion_points())
        [(-5, -16), (-5, 16), O, (3, -8), (3, 8), (11, -32), (11, 32)]

        r   z"No torsion point for Finite Field.r   T)Ú	generatorg      à?r   )rC   rB   r>   Úpoint_at_infinityr
   r+   rD   r)   r*   Úis_rationalre   r   ÚdiscriminantÚintÚorderr   Úextend)r.   ÚlÚxxrZ   ÚjÚps         r8   Útorsion_pointszEllipticCurve.torsion_points�   s  € ð& ×Ñ Ò"ÜÐAÓBÐBÜ×1Ñ1°$Ó7Ð8ˆÜ˜Ÿ
™
Ÿ™¨¯©°°D·F±F¸AÐ(>Ó?Ó@ò 	&ˆBØ�~‹~Ø—‘™˜b !›Õ%ð	&ô ˜$×+Ñ+°tÔ<ò 	*ˆAÜ�A�r‘E“
ˆAØ�!‰t�q‹yÜ §
¡
§¡°·±¸¸D¿F¹FÀAÐ0FÓ GÓHò *�BØŸ>š>Ø Ù˜R ›�AØ—w‘w“y¤B“ØŸ™ ! a R Õ)ñ*ð	*ð ˆr:   c                 ó6   — | j                   j                  «       S )zè
        Return domain characteristic.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve
        >>> e2 = EllipticCurve(-43, 166)
        >>> e2.characteristic
        0

        )r   rC   rL   s    r8   rC   zEllipticCurve.characteristic´   s   € ð �|‰|×*Ñ*Ó,Ð,r:   c                 ó,   — t        | j                  «      S )zæ
        Return curve discriminant.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve
        >>> e2 = EllipticCurve(0, 17)
        >>> e2.discriminant
        -124848

        )rm   r"   rL   s    r8   rl   zEllipticCurve.discriminantÄ   s   € ô �4—=‘=Ó!Ð!r:   c                 ó    — | j                   dk(  S )zE
        Return True if curve discriminant is equal to zero.
        r   )rl   rL   s    r8   Úis_singularzEllipticCurve.is_singularÔ   s   € ð
 × Ñ  AÑ%Ð%r:   c                 ó–   — | j                   dz  d| j                  z  z
  }| j                  j                  |dz  | j                  z  «      S )zñ
        Return curve j-invariant.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve
        >>> e1 = EllipticCurve(-2, 0, 0, 1, 1)
        >>> e1.j_invariant
        1404928/389

        r   rN   r   )r   r   r   Úto_sympyr"   )r.   rR   s     r8   Új_invariantzEllipticCurve.j_invariantÛ   s@   € ð �X‰X�q‰[˜2˜dŸh™h™;Ñ&ˆØ�|‰|×$Ñ$ R¨¡U¨T¯]©]Ñ%:Ó;Ð;r:   c                 óh   — | j                   dk(  rt        d«      ‚t        | j                  «       «      S )zì
        Number of points in Finite field.

        Examples
        ========

        >>> from sympy.ntheory.elliptic_curve import EllipticCurve
        >>> e2 = EllipticCurve(1, 0, modulus=19)
        >>> e2.order
        19

        r   úStill not implemented)rC   ÚNotImplementedErrorrA   rc   rL   s    r8   rn   zEllipticCurve.orderì   s/   € ð ×Ñ !Ò#Ü%Ð&=Ó>Ð>Ü�4—;‘;“=Ó!Ð!r:   c                 óH   — | j                   �| j                   S t        d«      ‚)zj
        Number of independent points of infinite order.

        For Finite field, it must be 0.
        r}   )r-   r~   rL   s    r8   ÚrankzEllipticCurve.rankþ   s$   € ð �:‰:Ð!Ø—:‘:ÐÜ!Ð"9Ó:Ð:r:   N)r   r   r   r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   r?   rI   rK   rT   rc   rg   rt   ÚpropertyrC   rl   rx   r{   rn   r€   rW   r:   r8   r   r      sª   „ ñó,ó81òJò%òCò.7ò2
ò"ðH ñ-ó ð-ð ñ"ó ð"ð ñ&ó ð&ð ñ<ó ð<ð  ñ"ó ð"ð" ñ;ó ñ;r:   r   c                   óV   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zy)r>   a  
    Point of Elliptic Curve

    Examples
    ========

    >>> from sympy.ntheory.elliptic_curve import EllipticCurve
    >>> e1 = EllipticCurve(-17, 16)
    >>> p1 = e1(0, -4, 1)
    >>> p2 = e1(1, 0)
    >>> p1 + p2
    (15, -56)
    >>> e3 = EllipticCurve(-1, 9)
    >>> e3(1, -3) * 3
    (664/169, 17811/2197)
    >>> (e3(1, -3) * 3).order()
    oo
    >>> e2 = EllipticCurve(-2, 0, 0, 1, 1)
    >>> p = e2(-1,1)
    >>> q = e2(0, -1)
    >>> p+q
    (4, 8)
    >>> p-q
    (1, 0)
    >>> 3*p-5*q
    (328/361, -2800/6859)
    c                 ó   — t        ddd| «      S ©Nr   r   r=   )Úcurves    r8   rj   z$EllipticCurvePoint.point_at_infinity'  s   € ä! ! Q¨¨5Ó1Ð1r:   c                 ó  — |j                   j                  } ||«      | _         ||«      | _         ||«      | _        || _        | j
                  j                   | _         | j
                  j                  | «      st        d«      ‚y )Nz%The curve does not contain this point)r   r   r(   r)   r*   Ú_curverI   rB   )r.   r(   r)   r*   r‰   Údoms         r8   r9   zEllipticCurvePoint.__init__+  sm   € Ø�m‰m×#Ñ#ˆÙ�Q“ˆŒÙ�Q“ˆŒÙ�Q“ˆŒØˆŒØ—{‘{×*Ñ*ˆŒØ�{‰{×'Ñ'¨Ô-ÜÐDÓEÐEð .r:   c                 ó€  — | j                   dk(  r|S |j                   dk(  r| S | j                  | j                   z  | j                  | j                   z  }}|j                  |j                   z  |j                  |j                   z  }}| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  }	| j                  j                  }
||k7  r||z
  ||z
  z  }||z  ||z  z
  ||z
  z  }ns||z   dk(  r| j                  | j                  «      S d|dz  z  d|z  |z  z   |	z   ||z  z
  ||z  |z   d|z  z   z  }|dz   |	|z  z   d|
z  z   ||z  z
  ||z  |z   d|z  z   z  }|dz  ||z  z   |z
  |z
  |z
  }||z    |z  |z
  |z
  }| j                  ||d«      S )Nr   r   r   r   )
r*   r(   r)   r‹   r#   r$   r%   r&   r'   rj   )r.   rs   rG   rH   Úx2Úy2r1   r2   r3   r/   r0   ÚslopeÚyintÚx3Úy3s                  r8   Ú__add__zEllipticCurvePoint.__add__5  sÀ  € Ø�6‰6�QŠ;ØˆHØ�3‰3�!Š8ØˆKØ—‘˜Ÿ™‘ §¡ t§v¡v¡ˆBˆØ—‘�Q—S‘S‘˜!Ÿ#™#˜aŸc™c™'ˆBˆØ�[‰[�_‰_ˆØ�[‰[�_‰_ˆØ�[‰[�_‰_ˆØ�[‰[�_‰_ˆØ�[‰[�_‰_ˆØ�Š8Ø˜"‘W  b¡Ñ)ˆEØ˜‘G˜b 2™gÑ%¨"¨r©'Ñ2‰Dà�R‘˜AŠ~Ø×-Ñ-¨d¯k©kÓ:Ð:Ø˜˜Q™‘Y  2¡ b¡Ñ(¨2Ñ-°°2±Ñ5¸"¸r¹'ÀB¹,ÈÈRÉÑ:OÑPˆEØ˜‘U�F˜R ™U‘N Q r¡TÑ)¨B¨r©EÑ1°b¸±e¸b±jÀ1ÀRÁ4Ñ6GÑHˆDØ�A‰X˜˜5™Ñ  2Ñ%¨Ñ*¨RÑ/ˆØ�r‰zˆ]˜RÑ $Ñ&¨Ñ+ˆØ�{‰{˜2˜r 1Ó%Ð%r:   c                 ó�   — | j                   | j                  | j                  f|j                   |j                  |j                  fk  S r<   )r(   r)   r*   ©r.   Úothers     r8   Ú__lt__zEllipticCurvePoint.__lt__M  s3   € Ø—‘˜Ÿ™ §¡Ð'¨5¯7©7°E·G±G¸U¿W¹WÐ*EÑEÐEr:   c                 ó®   — t        |«      }| j                  | j                  «      }|dk(  r|S |dk  r|  | z  S | }|r|dz  r||z   }|dz  }||z   }|rŒ|S rˆ   )r   rj   r‹   )r.   ÚnÚrrs   s       r8   Ú__mul__zEllipticCurvePoint.__mul__P  sv   € Ü�1‹IˆØ×"Ñ" 4§;¡;Ó/ˆØ�Š6ØˆHØˆqŠ5Ø�5˜A˜2‘:ÐØˆÙØ�1ŠuØ˜‘E�Ø�!‰GˆAØ�A‘ˆAò	 ð
 ˆr:   c                 ó   — | |z  S r<   rW   )r.   rš   s     r8   Ú__rmul__zEllipticCurvePoint.__rmul___  s   € Ø�a‰xˆr:   c                 óæ   — t        | j                  | j                   | j                  j                  | j                  z  z
  | j                  j
                  z
  | j                  | j                  «      S r<   )r>   r(   r)   r‹   r#   r%   r*   rL   s    r8   Ú__neg__zEllipticCurvePoint.__neg__b  sN   € Ü! $§&¡&¨4¯6©6¨'°D·K±K·O±OÀDÇFÁFÑ4JÑ*JÈTÏ[É[Ï_É_Ñ*\Ð^b×^dÑ^dÐfj×fqÑfqÓrÐrr:   c                 óB  — | j                   dk(  ry| j                  j                  }	 dj                  |j	                  | j
                  «      |j	                  | j                  «      «      S # t        $ r Y nw xY wdj                  | j
                  | j                  «      S )Nr   ÚOz({}, {}))r*   r‹   r   Úformatrz   r(   r)   Ú	TypeError)r.   rŒ   s     r8   rK   zEllipticCurvePoint.__repr__e  s~   € Ø�6‰6�QŠ;ØØ�k‰k×!Ñ!ˆð	Ø×$Ñ$ S§\¡\°$·&±&Ó%9¸3¿<¹<ÈÏÉÓ;OÓPÐPøÜò 	Ùð	úà× Ñ  §¡¨¯©Ó0Ð0s   ¨AA, Á,	A8Á7A8c                 ó&   — | j                  | «      S r<   )r”   r–   s     r8   Ú__sub__zEllipticCurvePoint.__sub__o  s   € Ø�|‰|˜U˜FÓ#Ð#r:   c                 ór  — | j                   dk(  ry| j                  dk(  ry| dz  }|j                  | j                   k(  ryd}| j                  t        k7  rªt	        |j
                  «      |j
                  k(  r‚t	        |j                  «      |j                  k(  r`| |z   }|dz  }|j                   dk(  r|S t	        |j
                  «      |j
                  k(  r#t	        |j                  «      |j                  k(  rŒ`t        S |j
                  j                  |j
                  k(  r�|j                  j                  |j                  k(  rm| |z   }|dz  }|dkD  rt        S |j                   dk(  r|S |j
                  j                  |j
                  k(  r$|j                  j                  |j                  k(  rŒmt        S )z5
        Return point order n where nP = 0.

        r   r   r   r   é   )r*   r)   r   r   rm   r(   r   Ú	numerator)r.   rs   rZ   s      r8   rn   zEllipticCurvePoint.orderr  sH  € ð
 �6‰6�QŠ;ØØ�6‰6�QŠ;ØØ�1‰HˆØ�3‰3�4—6‘6�'Š>ØØˆØ�<‰<œ2ÒÜ�a—c‘c“(˜aŸc™c’/¤c¨!¯#©#£h°!·#±#¢oØ˜1‘H�Ø�Q‘�Ø—3‘3˜!’8Ø�Hô	 �a—c‘c“(˜aŸc™c’/¤c¨!¯#©#£h°!·#±#£oô
 ˆIØ�c‰c�m‰m˜qŸs™sÒ" q§s¡s§}¡}¸¿¹Ò';Ø�q‘ˆAØ�‰FˆAØ�2ŠvÜ�	Ø�s‰s�aŠxØ�ð �c‰c�m‰m˜qŸs™sÒ" q§s¡s§}¡}¸¿¹Ó';ô ˆ	r:   N)r�   r‚   rƒ   r„   Ústaticmethodrj   r9   r”   r˜   rœ   rž   r    rK   r¦   rn   rW   r:   r8   r>   r>   
  sK   „ ñð8 ñ2ó ð2òFò&ò0Fòòòsò1ò$ór:   r>   N)Úsympy.core.numbersr   Úsympy.core.symbolr   Úsympy.polys.domainsr   r   r   r   Úsympy.polys.polytoolsr	   Úsympy.solvers.solversr
   Úsympy.utilities.iterablesr   Úsympy.utilities.miscr   Úfactor_r   Úresidue_ntheoryr   r   r>   rW   r:   r8   ú<module>r´      s<   ðÝ !Ý %ß BÓ BÝ &Ý 'Ý 1Ý 'Ý Ý 2÷{;ñ {;÷|Cò Cr:   