§
    qŠtjg>  ã                   óô  — 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
mZmZ ddlmZmZ g d¢ZdZd	Z G d
„ de¦  «        Z G d„ d¦  «        Z edej        ej        dd¦  «        Z edej        ej        dd¦  «        Z edej        ej        dd¦  «        Z edej        ej         dd¦  «        Z! edej"        ej#        dd¦  «        Z$ edej%        ej&        dd¦  «        Z' ed ej(        ej)        d!d"¦  «        Z* ed#ej+        ej,        d$d%¦  «        Z- ed&ej.        ej/        d'd(¦  «        Z0 ed)ej1        ej2        d*d+¦  «        Z3 ed,ej4        ej5        d-d.¦  «        Z6 ed/ej7        ej8        d0d1¦  «        Z9 ed2ej:        ej;        d3d4¦  «        Z< ed5ej=        ej>        d6d7¦  «        Z? ed8ej@        ejA        d9d:¦  «        ZB ed;ejC        ejD        d<d=¦  «        ZE ed>ejF        ejG        d?d@¦  «        ZH edAejI        ejJ        dBdC¦  «        ZK edDejL        ejM        dEdF¦  «        ZN edGejO        ejP        dHdI¦  «        ZQ edJejR        ejS        dKdL¦  «        ZT edMejU        ejV        dNdO¦  «        ZW edPejX        ejY        dQdR¦  «        ZZ edSej[        ej\        dTdU¦  «        Z] edVej^        ej_        dW¦  «        Z` edXeja        ejb        dY¦  «        Zce$e'e*e-e0e3e6e<eBeHeNeTeZeeee!e`ece9e?eEeKeQeWe]gZddZ„ Zed[„ Zfd\S )]é    )Údivision)ÚPY2é   )ÚderÚecdsaÚellipticcurveÚeddsa)ÚorderlenÚnumber_to_stringÚstring_to_number)Únormalise_bytesÚ
bit_length)"ÚUnknownCurveErrorr
   ÚCurveÚ	SECP112r1Ú	SECP112r2Ú	SECP128r1Ú	SECP160r1ÚNIST192pÚNIST224pÚNIST256pÚNIST384pÚNIST521pÚcurvesÚ
find_curveÚcurve_by_nameÚ	SECP256k1ÚBRAINPOOLP160r1ÚBRAINPOOLP160t1ÚBRAINPOOLP192r1ÚBRAINPOOLP192t1ÚBRAINPOOLP224r1ÚBRAINPOOLP224t1ÚBRAINPOOLP256r1ÚBRAINPOOLP256t1ÚBRAINPOOLP320r1ÚBRAINPOOLP320t1ÚBRAINPOOLP384r1ÚBRAINPOOLP384t1ÚBRAINPOOLP512r1ÚBRAINPOOLP512t1ÚPRIME_FIELD_OIDÚCHARACTERISTIC_TWO_FIELD_OIDÚEd25519ÚEd448)r   é   éH  é='  r   r   )r   r0   r1   r2   r   r0   c                   ó   — e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© ó    úJ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/curves.pyr   r   5   s   € € € € € Ø€Dr8   r   c                   óh   — e Zd Zdd„Zd„ Zd„ Zd„ Zdd„Zdd„Ze	dd	„¦   «         Z
edd
„¦   «         ZdS )r   Nc                 óú  — || _         || _        || _        || _        |                     ¦   «         | _        t          |t          j        ¦  «        r<t          | 	                    ¦   «         ¦  «        dz   dz   dz  | _
        | j
        | _        nBt          | j        ¦  «        | _
        dt          | 	                    ¦   «         ¦  «        z  | _        d| j
        z  | _        || _        |rt          j        |Ž | _        d S d S )Nr   é   é   r0   )ÚnameÚopenssl_nameÚcurveÚ	generatorÚorderÚ
isinstancer   Ú	CurveEdTwr   ÚpÚbaselenÚverifying_key_lengthr
   Úsignature_lengthÚoidr   Ú
encode_oidÚencoded_oid)Úselfr>   r@   rA   rI   r?   s         r9   Ú__init__zCurve.__init__:   sæ   € ØˆŒ	Ø(ˆÔØˆŒ
Ø"ˆŒØ—_’_Ñ&Ô&ˆŒ
Ý�e�]Ô4Ñ5Ô5ð 		@õ
 ' u§w¢w¡y¤yÑ1Ô1°AÑ5¸Ñ9¸aÑ?ˆDŒLØ(,¬ˆDÔ%Ð%å# D¤JÑ/Ô/ˆDŒLØ()­H°U·W²W±Y´YÑ,?Ô,?Ñ(?ˆDÔ%Ø ! D¤LÑ 0ˆÔØˆŒØð 	4Ý"œ~¨sÐ3ˆDÔÐÐð	4ð 	4r8   c                 óz   — t          |t          ¦  «        r | j        |j        k    o| j        |j        k    S t          S ©N)rC   r   r@   rA   ÚNotImplemented©rL   Úothers     r9   Ú__eq__zCurve.__eq__O   s;   € Ý�e�UÑ#Ô#ð 	à”
˜eœkÒ)ÐO¨d¬nÀÄÒ.Oðõ Ðr8   c                 ó   — | |k     S rO   r7   rQ   s     r9   Ú__ne__zCurve.__ne__V   s   € Ø˜5’=Ð Ð r8   c                 ó   — | j         S rO   ©r>   )rL   s    r9   Ú__repr__zCurve.__repr__Y   s
   € ØŒyÐr8   Úuncompressedc           	      ót  — |€| j         rd}nd}|dvrt          d¦  «        ‚|dk    r)| j         st          d¦  «        ‚t          j        | j         Ž S t          | j        t          j        ¦  «        r|dk    sJ ‚t          d¦  «        ‚| j         	                    ¦   «         }t          j
        d¦  «        }t          j        t          j        t          Ž t          j
        |¦  «        ¦  «        }t          j        t          j        t          | j                             ¦   «         |z  |¦  «        ¦  «        t          j        t          | j                             ¦   «         |z  |¦  «        ¦  «        ¦  «        }t          j        | j                             |¦  «        ¦  «        }t          j
        | j                             ¦   «         ¦  «        }|||||g}	| j                             ¦   «         r@t          j
        | j                             ¦   «         ¦  «        }
|	                     |
¦  «         t          j        |	Ž S )	aõ  Serialise the curve parameters to binary string.

        :param str encoding: the format to save the curve parameters in.
            Default is ``named_curve``, with fallback being the ``explicit``
            if the OID is not set for the curve.
        :param str point_encoding: the point encoding of the generator when
            explicit curve encoding is used. Ignored for ``named_curve``
            format.

        :return: DER encoded ECParameters structure
        :rtype: bytes
        NÚnamed_curveÚexplicit©r[   r\   z5Only 'named_curve' and 'explicit' encodings supportedzJCan't encode curve using named_curve encoding without associated curve OIDz6Twisted Edwards curves don't support explicit encodingr   )rI   Ú
ValueErrorr   r   rJ   rC   r@   r   rD   rE   Úencode_integerÚencode_sequencer,   Úencode_octet_stringr   ÚaÚbrA   Úto_bytesrB   ÚcofactorÚappend)rL   ÚencodingÚpoint_encodingÚcurve_pÚversionÚfield_idr@   ÚbaserB   Úseq_elementsre   s              r9   Úto_derzCurve.to_der\   s  € ð ÐØŒxð &Ø(��à%�àÐ6Ð6Ð6ÝØGñô ð ð �}Ò$Ð$Ø”8ð Ý'ð+ñô ð õ ”> 4¤8Ð,Ð,Ý˜œ
¥MÔ$;Ñ<Ô<ð 	Ø˜zÒ)Ð)Ð)Ð)Ý#ØHñô ð ð
 ”*—,’,‘.”.ˆÝÔ$ QÑ'Ô'ˆÝÔ&ÝŒN�OÐ,­cÔ.@ÀÑ.IÔ.Iñ
ô 
ˆõ Ô#ÝÔ#Ý  ¤§¢¡¤°'Ñ!9¸7ÑCÔCñô õ Ô#Ý  ¤§¢¡¤°'Ñ!9¸7ÑCÔCñô ñ	
ô 
ˆõ Ô& t¤~×'>Ò'>¸~Ñ'NÔ'NÑOÔOˆÝÔ" 4¤>×#7Ò#7Ñ#9Ô#9Ñ:Ô:ˆØ ¨5°$¸Ð>ˆØŒ:×ÒÑ Ô ð 	*ÝÔ)¨$¬*×*=Ò*=Ñ*?Ô*?Ñ@Ô@ˆHØ×Ò Ñ)Ô)Ð)åÔ" LÐ1Ð1r8   c                 óT   — t          j        |                      ||¦  «        d¦  «        S )a  
        Serialise the curve parameters to the :term:`PEM` format.

        :param str encoding: the format to save the curve parameters in.
            Default is ``named_curve``, with fallback being the ``explicit``
            if the OID is not set for the curve.
        :param str point_encoding: the point encoding of the generator when
            explicit curve encoding is used. Ignored for ``named_curve``
            format.

        :return: PEM encoded ECParameters structure
        :rtype: str
        zEC PARAMETERS)r   Útopemrn   )rL   rg   rh   s      r9   Úto_pemzCurve.to_pem˜   s+   € õ ŒyØ�KŠK˜ .Ñ1Ô1°?ñ
ô 
ð 	
r8   c                 ó°  — |st          d¦  «        }t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚t          | ¦  «        } t	          j        | ¦  «        sTd|vrt	          j        d¦  «        ‚t	          j        | ¦  «        \  }}|rt	          j        d¦  «        ‚t          |¦  «        S d|vrt	          j        d¦  «        ‚t	          j	        | ¦  «        \  }}|rt	          j        d	¦  «        ‚t	          j
        |¦  «        \  }}|d
k    rt	          j        d¦  «        ‚t	          j	        |¦  «        \  }}t	          j	        |¦  «        \  }}t	          j        |¦  «        \  }	}t	          j
        |¦  «        \  }
}d}|rt	          j
        |¦  «        \  }}t	          j        |¦  «        \  }}|t          k    rt          d¦  «        ‚|t          k    r"t          d                     |¦  «        ¦  «        ‚t	          j
        |¦  «        \  }}|rt	          j        d¦  «        ‚t	          j        |¦  «        \  }}t	          j        |¦  «        \  }}t!          |¦  «        }t!          |¦  «        }t#          j        ||||¦  «        }t"          j                             ||	d|
d¬¦  «        }t+          d||d¦  «        }t,          D ]}||k    r|c S Œ|S )a—  Decode the curve parameters from DER file.

        :param data: the binary string to decode the parameters from
        :type data: :term:`bytes-like object`
        :param valid_encodings: set of names of allowed encodings, by default
            all (set by passing ``None``), supported ones are ``named_curve``
            and ``explicit``
        :type valid_encodings: :term:`set-like object`
        r]   c              3   ó   K  — | ]}|d v V — Œ	dS )r]   Nr7   )Ú.0Úis     r9   ú	<genexpr>z!Curve.from_der.<locals>.<genexpr>·   s(   è è € ÐMÐM¸�1Ð3Ð3ÐMÐMÐMÐMÐMÐMr8   z1Only named_curve and explicit encodings supportedr[   z(named_curve curve parameters not allowedzUnexpected data after OIDr\   z%explicit curve parameters not allowedz,Unexpected data after ECParameters structurer   z!Unknown parameter encoding formatNz#Characteristic 2 curves unsupportedzUnknown field type: {0}z:Unexpected data after ECParameters.fieldID.Prime-p element)rY   Ú
compressedÚhybridT)Úvalid_encodingsrB   rA   Úunknown)ÚsetÚallr^   r   r   Úis_sequenceÚUnexpectedDERÚremove_objectr   Úremove_sequenceÚremove_integerÚremove_octet_stringr-   r   r,   Úformatr   r   ÚCurveFpÚPointJacobiÚ
from_bytesr   r   )Údatary   rI   ÚemptyÚseqrj   Úrestrk   r@   Ú
base_bytesrB   re   Ú_Ú
field_typeÚprimeÚcurve_a_bytesÚcurve_b_bytesÚcurve_aÚcurve_bÚcurve_fprl   Ú	tmp_curveru   s                          r9   Úfrom_derzCurve.from_derª   s*  € ð ð 	?Ý!Ð"=Ñ>Ô>ˆOÝÐMÐM¸_ÐMÑMÔMÑMÔMð 	ÝØCñô ð õ ˜tÑ$Ô$ˆÝŒ˜tÑ$Ô$ð 	#Ø OÐ3Ð3ÝÔ'Ø>ñô ð õ Ô*¨4Ñ0Ô0‰JˆC�Øð EÝÔ'Ð(CÑDÔDÐDÝ˜c‘?”?Ð"à˜_Ð,Ð,ÝÔ#Ð$KÑLÔLÐLåÔ(¨Ñ.Ô.‰
ˆˆUØð 	ÝÔ#Ø>ñô ð õ Ô*¨3Ñ/Ô/‰ˆ�Ø�aŠ<ˆ<ÝÔ#Ð$GÑHÔHÐHÝÔ,¨TÑ2Ô2‰ˆ�$ÝÔ)¨$Ñ/Ô/‰ˆˆtÝÔ2°4Ñ8Ô8Ñˆ
�DÝÔ(¨Ñ.Ô.‰ˆˆtØˆØð 	3õ Ô,¨TÑ2Ô2‰KˆH�aõ Ô,¨XÑ6Ô6Ñˆ
�DØÕ5Ò5Ð5Ý#Ð$IÑJÔJÐJØ�Ò(Ð(Ý#Ø)×0Ò0°Ñ<Ô<ñô ð õ Ô)¨$Ñ/Ô/‰ˆˆuØð 	ÝÔ#ØLñô ð õ
 "Ô5°eÑ<Ô<Ñˆ�tÝ!Ô5°dÑ;Ô;Ñˆ�tõ # =Ñ1Ô1ˆÝ" =Ñ1Ô1ˆå Ô(¨°¸À(ÑKÔKˆõ Ô(×3Ò3ØØØDØØð 4ñ 
ô 
ˆõ ˜) X¨t°TÑ:Ô:ˆ	õ ð 	ð 	ˆAØ˜AŠ~ˆ~Ø���ð àÐr8   c                 ó   — t           s)t          |t          ¦  «        r|                     ¦   «         }|                     d¦  «        }|dk    rt          j        d¦  «        ‚|                      t          j        ||d…         ¦  «        |¦  «        S )am  Decode the curve parameters from PEM file.

        :param str string: the text string to decode the parameters from
        :param valid_encodings: set of names of allowed encodings, by default
            all (set by passing ``None``), supported ones are ``named_curve``
            and ``explicit``
        :type valid_encodings: :term:`set-like object`
        s   -----BEGIN EC PARAMETERS-----éÿÿÿÿz"EC PARAMETERS PEM header not foundN)	r   rC   ÚstrÚencodeÚfindr   r~   r•   Úunpem)ÚclsÚstringry   Úec_param_indexs       r9   Úfrom_pemzCurve.from_pem  s‡   € õ ð 	%•z &­#Ñ.Ô.ð 	%Ø—]’]‘_”_ˆFàŸšÐ%EÑFÔFˆØ˜RÒÐÝÔ#Ð$HÑIÔIÐIà�|Š|ÝŒI�f˜^˜_˜_Ô-Ñ.Ô.°ñ
ô 
ð 	
r8   rO   )NrY   )r4   r5   r6   rM   rS   rU   rX   rn   rq   Ústaticmethodr•   ÚclassmethodrŸ   r7   r8   r9   r   r   9   sÃ   € € € € € ð4ð 4ð 4ð 4ð*ð ð ð!ð !ð !ðð ð ð:2ð :2ð :2ð :2ðx
ð 
ð 
ð 
ð$ ðYð Yð Yñ „\ðYðv ð
ð 
ð 
ñ „[ð
ð 
ð 
r8   r   r   )r   é   é„   r   é   Ú	secp112r1r   )r   r¢   r£   r   r<   Ú	secp112r2r   )r   r¢   r£   r   é   Ú	secp128r1r   )r   r¢   r£   r   r=   Ú	secp160r1r   )r   r0   r1   r2   r¢   r   r   Ú
prime192v1r   )r   r¢   r£   r   é!   Ú	secp224r1r   )r   r0   r1   r2   r¢   r   r<   Ú
prime256v1r   )r   r¢   r£   r   é"   Ú	secp384r1r   )r   r¢   r£   r   é#   Ú	secp521r1r   )r   r¢   r£   r   é
   Ú	secp256k1r   )
r   r¢   é$   r¢   r¢   r0   r=   r   r   r   ÚbrainpoolP160r1r   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   r0   ÚbrainpoolP160t1r    )
r   r¢   r´   r¢   r¢   r0   r=   r   r   r¢   ÚbrainpoolP192r1r!   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é   ÚbrainpoolP192t1r"   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é   ÚbrainpoolP224r1r#   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   r¤   ÚbrainpoolP224t1r$   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   r<   ÚbrainpoolP256r1r%   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   r=   ÚbrainpoolP256t1r&   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é	   ÚbrainpoolP320r1r'   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   r²   ÚbrainpoolP320t1r(   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é   ÚbrainpoolP384r1r)   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é   ÚbrainpoolP384t1r*   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é   ÚbrainpoolP512r1r+   )
r   r¢   r´   r¢   r¢   r0   r=   r   r   é   ÚbrainpoolP512t1r.   )r   r¢   ée   ép   r/   )r   r¢   rÊ   éq   c                 ó|   — t           D ]}|j        | k    r|c S Œt          d| ›dd„ t           D ¦   «         ›�¦  «        ‚)a9  Select a curve based on its OID

    :param tuple[int,...] oid_curve: ASN.1 Object Identifier of the
        curve to return, like ``(1, 2, 840, 10045, 3, 1, 7)`` for ``NIST256p``.

    :raises UnknownCurveError: When the oid doesn't match any of the supported
        curves

    :rtype: ~ecdsa.curves.Curve
    z&I don't know about the curve with oid z.I only know about these: c                 ó   — g | ]	}|j         ‘Œ
S r7   rW   ©rt   Úcs     r9   ú
<listcomp>zfind_curve.<locals>.<listcomp>5  s   € Ð4LÐ4LÐ4LÀ°Q´VÐ4LÐ4LÐ4Lr8   )r   rI   r   )Ú	oid_curverÐ   s     r9   r   r   %  sd   € õ ð ð ˆØŒ5�IÒÐØˆHˆHˆHð å
Ð
à)2¨¨Ð4LÐ4LÅVÐ4LÑ4LÔ4LÐ4Lð	Nñô ð r8   c                 ó¼   — t           D ]#}| |j        k    s|j        r| |j        k    r|c S Œ$t          d                     | d„ t           D ¦   «         ¦  «        ¦  «        ‚)a{  Select a curve based on its name.

    Returns a :py:class:`~ecdsa.curves.Curve` object with a ``name`` name.
    Note that ``name`` is case-sensitve.

    :param str name: Name of the curve to return, like ``NIST256p`` or
        ``prime256v1``

    :raises UnknownCurveError: When the name doesn't match any of the supported
        curves

    :rtype: ~ecdsa.curves.Curve
    z9Curve with name {0!r} unknown, only curves supported: {1}c                 ó   — g | ]	}|j         ‘Œ
S r7   rW   rÏ   s     r9   rÑ   z!curve_by_name.<locals>.<listcomp>L  s   € Ð*Ð*Ð*˜a�1”6Ð*Ð*Ð*r8   )r   r>   r?   r   rƒ   )r>   rÐ   s     r9   r   r   9  ss   € õ ð ð ˆØ�1”6Š>ˆ>˜aœnˆ>°¸¼Ò1GÐ1GØˆHˆHˆHøÝ
ØC×JÒJØÐ*Ð*¥6Ð*Ñ*Ô*ñ	
ô 	
ñô ð r8   N)gÚ
__future__r   Úsixr   Ú r   r   r   r	   Úutilr
   r   r   Ú_compatr   r   Ú__all__r,   r-   Ú	Exceptionr   r   Úcurve_112r1Úgenerator_112r1r   Úcurve_112r2Úgenerator_112r2r   Úcurve_128r1Úgenerator_128r1r   Úcurve_160r1Úgenerator_160r1r   Ú	curve_192Úgenerator_192r   Ú	curve_224Úgenerator_224r   Ú	curve_256Úgenerator_256r   Ú	curve_384Úgenerator_384r   Ú	curve_521Úgenerator_521r   Úcurve_secp256k1Úgenerator_secp256k1r   Úcurve_brainpoolp160r1Úgenerator_brainpoolp160r1r   Úcurve_brainpoolp160t1Úgenerator_brainpoolp160t1r   Úcurve_brainpoolp192r1Úgenerator_brainpoolp192r1r    Úcurve_brainpoolp192t1Úgenerator_brainpoolp192t1r!   Úcurve_brainpoolp224r1Úgenerator_brainpoolp224r1r"   Úcurve_brainpoolp224t1Úgenerator_brainpoolp224t1r#   Úcurve_brainpoolp256r1Úgenerator_brainpoolp256r1r$   Úcurve_brainpoolp256t1Úgenerator_brainpoolp256t1r%   Úcurve_brainpoolp320r1Úgenerator_brainpoolp320r1r&   Úcurve_brainpoolp320t1Úgenerator_brainpoolp320t1r'   Úcurve_brainpoolp384r1Úgenerator_brainpoolp384r1r(   Úcurve_brainpoolp384t1Úgenerator_brainpoolp384t1r)   Úcurve_brainpoolp512r1Úgenerator_brainpoolp512r1r*   Úcurve_brainpoolp512t1Úgenerator_brainpoolp512t1r+   Úcurve_ed25519Úgenerator_ed25519r.   Úcurve_ed448Úgenerator_ed448r/   r   r   r   r7   r8   r9   ú<module>r     s�  ðØ Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð
#ð #ð #€ðL +€Ø7Ð ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð`
ð `
ð `
ð `
ð `
ñ `
ô `
ð `
ðH ˆEØØ	ÔØ	ÔØØñô €	ð ˆEØØ	ÔØ	ÔØØñô €	ð ˆEØØ	ÔØ	ÔØØñô €	ð ˆEØØ	ÔØ	ÔØØñô €	ð ˆ5ØØ	„OØ	ÔØØñô €ð ˆ5ØØ	„OØ	ÔØØñô €ð ˆ5ØØ	„OØ	ÔØØñô €ð ˆ5ØØ	„OØ	ÔØØñô €ð ˆ5ØØ	„OØ	ÔØØñô €ð ˆEØØ	ÔØ	ÔØØñô €	ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø#Øñô €ð �%ØØ	ÔØ	Ô#Ø$Øñô €ð �%ØØ	ÔØ	Ô#Ø$Øñô €ð �%ØØ	ÔØ	Ô#Ø$Øñô €ð �%ØØ	ÔØ	Ô#Ø$Øñô €ð �%ØØ	ÔØ	Ô#Ø$Øñô €ð ˆ%ØØ	ÔØ	ÔØñ	ô €ð 	ˆØØ	ÔØ	ÔØñ		ô 	€ð ØØØØØØØØØØØØØØØØØØ	ØØØØØØØð5
€ð<ð ð ð(ð ð ð ð r8   