Ë
    ûûàgC0  ã                   ó~  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	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mZ d dlZd dlmZ d d	lmZmZmZ d d
lmZ d dlm Z  d dl!m"Z" d„ Z#ejH                  d„ «       Z%ejH                  d„ «       Z&ejH                  d„ «       Z'ejH                  d„ «       Z(ejH                  d„ «       Z)ejH                  d„ «       Z*ejH                  d„ «       Z+ejH                  d„ «       Z,ejH                  d„ «       Z-ejH                  d„ «       Z. ejH                  d¬«      d„ «       Z/ejH                  d„ «       Z0ejH                  d„ «       Z1ejH                  d„ «       Z2ejH                  d„ «       Z3ejH                  d„ «       Z4ejH                  d „ «       Z5ejH                  d!„ «       Z6ejH                  d"„ «       Z7ejH                  d#„ «       Z8ejH                  d$„ «       Z9ejH                  d%„ «       Z:ejH                  d&„ «       Z;ejH                  d'„ «       Z<ejH                  d(„ «       Z=ejH                  d)„ «       Z>ejH                  d*„ «       Z? ejH                  d¬«      d+„ «       Z@ejH                  d,„ «       ZAejH                  d-„ «       ZBejH                  d.„ «       ZCejH                  d/„ «       ZDy)0é    N©Úcontextmanager)ÚMockÚPropertyMockÚpatch)Úget_user_model)ÚMessageMiddleware)ÚSessionMiddleware)Úclear_url_cachesÚset_urlconf)ÚEmailAddress)Ú
user_emailÚuser_pk_to_url_strÚuser_username)Úcontext)Ústatekit)ÚAuthProcessc                 óÐ   — | j                  d«      dk(  rRg }|D ]2  }|j                  d   j                  d«      rŒ"|j                  |«       Œ4 |D ]  }|j	                  |«       Œ y y )Nz--dsztests.headless_only.settingsr   zallauth/headless)Ú	getoptionÚlocationÚ
startswithÚappendÚremove)ÚconfigÚitemsÚremoved_itemsÚitems       úN/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/conftest.pyÚpytest_collection_modifyitemsr      ss   € Ø×Ñ˜ÓÐ#AÒAØˆØò 	+ˆDØ—=‘= Ñ#×.Ñ.Ð/AÕBØ×$Ñ$ TÕ*ð	+ð "ò 	ˆDØ�L‰L˜Õñ	ð Bó    c                 ó   —  | «       S ©N© )Úuser_factorys    r   Úuserr%   #   s
   € á‹>Ðr    c                 ó(   — | j                  |«       | S r"   )Úforce_login)Úclientr%   s     r   Úauth_clientr)   (   s   € à
×Ñ�tÔØ€Mr    c                  ó   — d„ } | S )Nc                  ó<   — t        t        j                  «       «      S r"   )ÚstrÚuuidÚuuid4r#   r    r   Úfzpassword_factory.<locals>.f0   s   € Ü”4—:‘:“<Ó Ð r    r#   ©r/   s    r   Úpassword_factoryr1   .   s   € ò!ð €Hr    c                 ó   —  | «       S r"   r#   )r1   s    r   Úuser_passwordr3   6   s   € áÓÐr    c                   ó   — y)NTr#   r#   r    r   Úemail_verifiedr5   ;   s   € àr    c           
      ó,   ‡ ‡— d d dd|d d dddf
ˆ ˆfd„	}|S )NTFc
                 ó2  •— ddl m}
 |st        j                  «       j                  }| s|r	 ‰|¬«      } t        «       } |«       }|dk(  r||_        n|j                  |€‰n|«       t        ||«       t        || xs d«       |rE|j                  «        | r3|r1t        j                  j                  || j                  «       |d¬«       |	r0ddlm} |j"                  j%                  ||j'                  «       «       |r |
«       j)                  |||«       |S )	Nr   ©Úget_adapter)Úusernameú!Ú T)r%   ÚemailÚverifiedÚprimary©Úauth)Úallauth.account.adapterr9   r-   r.   Úhexr   ÚpasswordÚset_passwordr   r   Úsaver   ÚobjectsÚcreateÚlowerÚallauth.mfa.totp.internalrA   ÚTOTPÚactivateÚgenerate_totp_secretÚ	set_phone)r=   r:   ÚcommitÚ
with_emailr5   rD   ÚphoneÚphone_verifiedÚwith_emailaddressÚ	with_totpr9   ÚUserr%   rA   Úemail_factoryr3   s                 €€r   Úfactoryzuser_factory.<locals>.factoryB   só   ø€ õ 	8áÜ—z‘z“|×'Ñ'ˆHá™Ù!¨8Ô4ˆEäÓˆÙ‹vˆØ�sŠ?Ø$ˆD�Mà×Ñ¨xÐ/?™mÀXÔNÜ�d˜HÔ%Ü�4˜š "Ô%ÙØ�I‰IŒKÙÑ*Ü×$Ñ$×+Ñ+ØØŸ+™+›-Ø+Ø ð	 ,ô ñ Ý6à�I‰I×Ñ˜t T×%>Ñ%>Ó%@ÔAÙÙ‹M×#Ñ# D¨%°Ô@Øˆr    r#   )rV   Údbr3   r5   rW   s   ` `  r   r$   r$   @   s0   ù€ ð ØØØØ%ØØØØØö+ðZ €Nr    c                  ó   — dd„} | S )Nc           
      ód  — |€D| st        j                  «       j                  } | › dt        j                  «       j                  › d�}|rRdj                  |D �cg c]5  }t	        j
                  |j                  «       |j                  «       g«      ‘Œ7 c}«      }|S |j                  «       }|S c c}w )Nú@z.orgr<   )r-   r.   rC   ÚjoinÚrandomÚchoiceÚupperrI   )r:   r=   Ú
mixed_caseÚcs       r   rW   zemail_factory.<locals>.factoryt   s’   € Øˆ=ÙÜŸ:™:›<×+Ñ+�Ø�j ¤$§*¡*£,×"2Ñ"2Ð!3°4Ð8ˆEÙØ—G‘GØ@EÖF¸1”—‘ §¡£	¨1¯7©7«9Ð5Õ6ÒFóˆEð
 ˆð —K‘K“MˆEØˆùò	 Gs   Á:B-)NNFr#   )rW   s    r   rV   rV   r   s   € óð €Nr    c                  ó   — t         d„ «       } | S )Nc               3   ób   K  — t        d«      5 } d| _        d –— d d d «       y # 1 sw Y   y xY w­w)NzIallauth.account.internal.flows.reauthentication.did_recently_authenticateT©r   Úreturn_value©Úms    r   r/   z"reauthentication_bypass.<locals>.f†   s2   è ø€ äØWó
ð 	àØ!ˆAŒNÛ÷		÷ 	ñ 	üó   ‚/Ž#š	/£,¨/r   r0   s    r   Úreauthentication_bypassri   „   s   € äñó ðð €Hr    c                  ó   — t         d„ «       } | S )Nc              3   ó`  K  — ddl m} ddlm} t	        dt
        ¬«      5 }t	        d«      5 }i ddif|_        t	        d	«      5 }t	        d
«      5 } |«       j                  | j                  «      d   }t        «       }d|j                  _        ||_        t        «       |_        t        «       }	d|	_        |	|_        t        j                  dd ||«      ii«      –— d d d «       d d d «       d d d «       d d d «       y # 1 sw Y   Œ"xY w# 1 sw Y   Œ&xY w# 1 sw Y   Œ*xY w# 1 sw Y   y xY w­w)Nr   )Úwebsafe_encoder8   z>allauth.mfa.webauthn.internal.auth.WebAuthn.authenticator_data)Únew_callablez+fido2.server.Fido2Server.authenticate_beginÚstateÚdummyz.fido2.server.Fido2Server.authenticate_completez@allauth.mfa.webauthn.internal.auth.parse_authentication_responseÚidÚcredential_idÚresponseÚ
userHandle)Úfido2.utilsrl   Úallauth.mfa.adapterr9   r   r   re   Ú%get_public_key_credential_user_entityr%   r   Úcredential_datarq   ÚjsonÚdumps)
Úauthenticatorrl   r9   Úad_mÚab_mÚac_mrg   Úuser_handleÚauthenticator_dataÚbindings
             r   r/   z)webauthn_authentication_bypass.<locals>.f“   s<  è ø€ å.å3äØLÜ%ô
ð 	ð ÜÐDÓEð ÈØ%'¨'°7Ð);Ð$<�Ô!ÜÐKÓLð ÐPTÜØZóð àá'›M×OÑOØ -× 2Ñ 2óà"ñ$ð $ô
 .2«VÐ*à+ð +×:Ñ:ÔHð -?˜Ô)Ü)-«˜œÜ"&£&˜Ø0?˜Ô-Ø,3˜Ô)Ü"Ÿj™jØ'¨,¹À{Ó8SÐ)TÐUóò ÷#÷÷÷		ð 	÷ð ú÷ð ú÷ð ú÷		ð 	üsd   ‚D. D"¬DÁD
ÁBC>	ÃD
Ã%DÃ-D"Ã5	D.Ã>DÄD
Ä
DÄDÄD	ÄD"Ä"D+Ä'D.r   r0   s    r   Úwebauthn_authentication_bypassr�   ‘   s   € äñó ððB €Hr    c                  ó   — t         d„ «       } | S )Nc              3   ó:  ‡K  — t        d«      5 }t        d«      5 }t        «       |_         G ˆfd„dt        «      } |d«      }||_        t	        j
                  ddd‰iid	d
dddgdœddœ«      –— d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nz*fido2.server.Fido2Server.register_completez>allauth.mfa.webauthn.internal.auth.parse_registration_responsec                   ó   •— e Zd Zˆ fd„Zy)úFwebauthn_registration_bypass.<locals>.f.<locals>.FakeAuthenticatorDatac                 ó   •— ‰S r"   r#   )ÚselfÚpasswordlesss    €r   Úis_user_verifiedzWwebauthn_registration_bypass.<locals>.f.<locals>.FakeAuthenticatorData.is_user_verifiedÃ   s	   ø€ Ø+Ð+r    N)Ú__name__Ú
__module__Ú__qualname__r‰   )rˆ   s   €r   ÚFakeAuthenticatorDatar…   Â   s   ø„ õ,r    r�   s   bindingzcross-platformÚ	credPropsÚrkÚ123Ú456ÚaoÚcdjÚusb)ÚattestationObjectÚclientDataJSONÚ
transportsz
public-key)ÚauthenticatorAttachmentÚclientExtensionResultsrp   ÚrawIdrr   Útype)r   r   re   Úbytesrx   ry   )r%   rˆ   Úrc_mrg   r�   r€   s    `    r   r/   z'webauthn_registration_bypass.<locals>.fº   s¸   øè ø€ äÐ?Ó@ð 	ÀDÜØPóð àÜ!%£�”ö,¬Eô ,ñ 0°
Ó;�Ø$+�Ô!Ü—j‘jà3CØ3>ÀÀ|Ð@TÐ2UØ#Ø!&à15Ø.3Ø+0¨'ñ%ð
 !-ñóò ÷÷	ð 	÷ð ú÷	ð 	üs4   ƒB�B›ABÁ2BÁ:	BÂB	ÂBÂBÂBr   r0   s    r   Úwebauthn_registration_bypassrž   ¸   s   € äñó ðð8 €Hr    T)Úautousec                  óB   — t         j                  j                  d «       y r"   )r   Ú_request_varÚsetr#   r    r   Úclear_context_requestr£   Ú   s   € ä×Ñ×Ñ˜TÕ"r    c              #   óV   K  — ddl m} dddii| _        |j                  «        d –— y ­w)Nr   )ÚcacheÚdefaultÚBACKENDz-django.core.cache.backends.locmem.LocMemCache)Údjango.core.cacher¥   ÚCACHESÚclear)Úsettingsr¥   s     r   Úenable_cacher¬   ß   s0   è ø€ å'ð 	ØÐFð
ð€H„Oð
 
‡K�K„MÜ	ùs   ‚')c                  ó   — t         d„ «       } | S )Nc               3   ób   K  — t        d«      5 } d| _        d –— d d d «       y # 1 sw Y   y xY w­w)Nz1allauth.mfa.totp.internal.auth.validate_totp_codeTrd   rf   s    r   r/   z!totp_validation_bypass.<locals>.fî   s/   è ø€ äÐFÓGð 	È1Ø!ˆAŒNÛ÷	÷ 	ñ 	ürh   r   r0   s    r   Útotp_validation_bypassr¯   ì   s   € äñó ðð
 €Hr    c                   ó   — y©Nzunittest-serverr#   r#   r    r   Úprovider_idr²   ÷   ó   € àr    c                   ó   — yr±   r#   r#   r    r   Úopenid_connect_provider_idrµ   ü   r³   r    c                  ó   — d„ } | S )Nc                 óx   — ddl m} |j                  «       }t        | «      }|j	                  | «      }|› d|› �}|S )Nr   )Úapp_settingsú-)Úallauth.accountr¸   ÚPASSWORD_RESET_TOKEN_GENERATORr   Ú
make_token)r%   r¸   Útoken_generatorÚuidÚtemp_keyÚkeys         r   r/   z'password_reset_key_generator.<locals>.f  sB   € Ý0à&×EÑEÓGˆÜ  Ó&ˆØ"×-Ñ-¨dÓ3ˆØ��Q�x�jÐ!ˆØˆ
r    r#   r0   s    r   Úpassword_reset_key_generatorrÁ     s   € òð €Hr    c                 ó(   — ddddœgi}d|i| _         |S )NÚAPPSÚ	client_idÚsecret©rÄ   rÅ   Úgoogle©ÚSOCIALACCOUNT_PROVIDERS)r«   Ú	gsettingss     r   Úgoogle_provider_settingsrË     s'   € à¨¸xÑHÐIÐJ€IØ(0°)Ð'<€HÔ$ØÐr    c                 ó(   — ddddœgi}d|i| _         |S )NrÃ   rÄ   rÅ   rÆ   ÚtwitterrÈ   )r«   Ú	tsettingss     r   Útwitter_provider_settingsrÏ     s'   € à¨¸xÑHÐIÐJ€IØ(1°9Ð'=€HÔ$ØÐr    c                 óf   — ddl m} |j                  j                  | |j	                  «       «       | S ©Nr   r@   )rJ   rA   rK   rL   rM   )r%   rA   s     r   Úuser_with_totprÒ     s'   € å.à‡I�I×Ñ�t˜T×6Ñ6Ó8Ô9Ø€Kr    c                 óH   — ddl m} |j                  j                  | «       | S rÑ   )Ú#allauth.mfa.recovery_codes.internalrA   ÚRecoveryCodesrL   )rÒ   rA   s     r   Úuser_with_recovery_codesrÖ   %  s   € å8à×Ñ×Ñ Ô/ØÐr    c                 ó~   — ddl m} |j                  j                  | |j                  j
                  ddi dœ¬«      }|S )Nr   )ÚAuthenticatorzTest passkeyT)Únamerˆ   Ú
credential)r%   r›   Údata)Úallauth.mfa.modelsrØ   rG   rH   ÚTypeÚWEBAUTHN)r%   rØ   rz   s      r   Úpasskeyrß   -  sH   € å0à!×)Ñ)×0Ñ0ØØ×Ñ×(Ñ(à"Ø Øñ
ð 1ó €Mð Ðr    c                 ó   — | S r"   r#   )r%   rß   s     r   Úuser_with_passkeyrá   =  s   € à€Kr    c                  ó   — dd„} | S )Nc                 óÜ   — d}| j                   }d|xs t        j                  i|¥}|r||d<   i }|t        j                  «       g||<   ||t        j
                  <   |j                  «        |S )Nr�   ÚprocessÚnext)Úsessionr   ÚLOGINÚtimer   ÚSTATES_SESSION_KEYrF   )r(   rä   Únext_urlÚkwargsÚstate_idræ   rn   Ústatess           r   Úsetupz&sociallogin_setup_state.<locals>.setupD  sn   € ØˆØ—.‘.ˆØ˜GÒ8¤{×'8Ñ'8ÐC¸FÐCˆÙØ$ˆE�&‰MØˆØ!¤4§9¡9£;Ð/ˆˆxÑØ/5ˆ”×+Ñ+Ñ,Ø�‰ŒØˆr    )NNr#   )rî   s    r   Úsociallogin_setup_staterï   B  s   € ó
ð €Lr    c                 ó*   ‡ —  G ˆ fd„d«      } |«       S )Nc                   ó   •— e Zd Zˆ fd„Zy)ú'request_factory.<locals>.RequestFactoryc                 ó–   •— ‰j                  |«      }t        d„ «      j                  |«       t        d„ «      j                  |«       |S )Nc                  ó   — y r"   r#   ©Úrequests    r   ú<lambda>z=request_factory.<locals>.RequestFactory.get.<locals>.<lambda>X  ó   � r    c                  ó   — y r"   r#   rõ   s    r   r÷   z=request_factory.<locals>.RequestFactory.get.<locals>.<lambda>Y  rø   r    )Úgetr
   Úprocess_requestr	   )r‡   Úpathrö   Úrfs      €r   rú   z+request_factory.<locals>.RequestFactory.getV  s=   ø€ Ø—f‘f˜T“lˆGÜÑ2Ó3×CÑCÀGÔLÜÑ2Ó3×CÑCÀGÔLØˆNr    N)rŠ   r‹   rŒ   rú   )rý   s   €r   ÚRequestFactoryrò   U  s   ø„ õ	r    rþ   r#   )rý   rþ   s   ` r   Úrequest_factoryrÿ   S  s   ø€ ÷ó ñ ÓÐr    c                  ó   ‡— ddl mŠ ˆfd„} | S )Nr   )Úemail_verification_by_codec                 óR  •— t        j                  d|d   j                  t         j                  t         j                  z  t         j
                  z  «      d   j                  «       }t        | d«      r| j                  «       }n| j                  }|‰j                     d   |k(  sJ ‚|S )Nz
[0-9a-z]{6}
r   Úheadless_sessionÚcode)ÚreÚsearchÚbodyÚIÚDOTALLÚ	MULTILINEÚstripÚhasattrr  ræ   Ú#EMAIL_VERIFICATION_CODE_SESSION_KEY)r(   Ú
mailoutboxr  ræ   r  s       €r   r/   z+get_last_email_verification_code.<locals>.fc  s    ø€ Ü�y‰yØ˜z¨!™}×1Ñ1´2·4±4¼"¿)¹)Ñ3CÄbÇlÁlÑ3Ró
à
ñç‰U‹Wð 	ô �6Ð-Ô.Ø×-Ñ-Ó/‰Gà—n‘nˆGàÐ.×RÑRÑSØñð òð	
ðð
 ˆr    )Úallauth.account.internal.flowsr  )r/   r  s    @r   Ú get_last_email_verification_coder  _  s   ø€ åIôð  €Hr    c                  ó   ‡— ddl mŠ ˆfd„} | S )Nr   )Úpassword_reset_by_codec                 óR  •— t        j                  d|d   j                  t         j                  t         j                  z  t         j
                  z  «      d   j                  «       }t        | d«      r| j                  «       }n| j                  }|‰j                     d   |k(  sJ ‚|S )Nz
[0-9a-z]{8}
r   r  r  )r  r  r  r  r	  r
  r  r  r  ræ   Ú'PASSWORD_RESET_VERIFICATION_SESSION_KEY)r(   r  r  ræ   r  s       €r   r/   z'get_last_password_reset_code.<locals>.fz  s    ø€ Ü�y‰yØ˜z¨!™}×1Ñ1´2·4±4¼"¿)¹)Ñ3CÄbÇlÁlÑ3Ró
à
ñç‰U‹Wð 	ô �6Ð-Ô.Ø×-Ñ-Ó/‰Gà—n‘nˆGàÐ*×RÑRÑSØñð òð	
ðð
 ˆr    )r  r  )r/   r  s    @r   Úget_last_password_reset_coder  v  s   ø€ åEôð  €Hr    c                 ó$   ‡ — t         ˆ fd„«       }|S )Nc               ;   ó2  •K  — ˆfd„}i }| j                  «       D ]-  \  }}t        ‰|«      rt        ‰|«      ||<   t        ‰||«       Œ/  |«        d –— | j                  «       D ]&  \  }}||v rt        ‰|||   «       Œt	        ‰|«       Œ(  |«        y ­w)Nc                  óÊ   •— t        «        ‰j                  ddfD ];  } | t        j                  v sŒt	        j
                  t        j                  |    «       Œ= t        d «       y )Nzallauth.account.urlszallauth.urls)r   ÚROOT_URLCONFÚsysÚmodulesÚ	importlibÚreloadr   )Úurlconfr«   s    €r   Úreload_urlconfz:settings_impacting_urls.<locals>.f.<locals>.reload_urlconf‘  sX   ø€ ÜÔà×%Ñ%Ø&Øðò ;�ð
 œcŸk™kÒ)Ü×$Ñ$¤S§[¡[°Ñ%9Õ:ð;ô ˜Õr    )r   r  ÚgetattrÚsetattrÚdelattr)Úkvr  Ú
old_valuesÚkÚvr«   s        €r   r/   z"settings_impacting_urls.<locals>.f�  sŸ   øè ø€ ô		ð ˆ
Ø—H‘H“Jò 	$‰DˆAˆqÜ�x Ô#Ü '¨°!Ó 4�
˜1‘Ü�H˜a Õ#ð	$ñ 	ÔÛØ—H‘H“Jò 	%‰DˆAˆqØ�J‰Ü˜ ! Z°¡]Õ3ä˜ !Õ$ð		%ñ
 	Õùs   ƒBBr   )r«   r/   s   ` r   Úsettings_impacting_urlsr'  �  s   ø€ äóó ðð4 €Hr    c               #   ó@   K  — ddl m}  d –— | j                  «        y ­w©Nr   ©Ú
phone_stub)Útests.commonr+  rª   r*  s    r   Úclear_phone_stubr-  ­  s   è ø€ å'ã	Ø×ÑÕùs   ‚c                  ó&   — ddl m}  | j                  S r)  )r,  r+  Ú
sms_outboxr*  s    r   r/  r/  µ  s   € å'à× Ñ Ð r    c                  ó   — d„ } | S )Nc                  ó6   — dt        j                  dd«      d›�S )Nz+31é   l    d(	 Ú010)r]   Úrandintr#   r    r   r/   zphone_factory.<locals>.f¾  s   € Ø”V—^‘^ A vÓ.¨sÐ3Ð4Ð4r    r#   r0   s    r   Úphone_factoryr5  ¼  s   € ò5ð €Hr    c                 ó   —  | «       S r"   r#   )r5  s    r   rQ   rQ   Ä  s
   € á‹?Ðr    c                 óB   — ddl m}  |«       j                  | |d«       | S )Nr   r8   T)rB   r9   rN   )r%   rQ   r9   s      r   Úuser_with_phoner8  É  s   € å3áƒM×Ñ˜D %¨Ô.Ø€Kr    )Er  rx   r]   r  r  rè   r-   Ú
contextlibr   Úunittest.mockr   r   r   Údjango.contrib.authr   Ú"django.contrib.messages.middlewarer	   Ú"django.contrib.sessions.middlewarer
   Údjango.urlsr   r   ÚpytestÚallauth.account.modelsr   Úallauth.account.utilsr   r   r   Úallauth.corer   Úallauth.socialaccount.internalr   Ú.allauth.socialaccount.providers.base.constantsr   r   Úfixturer%   r)   r1   r3   r5   r$   rV   ri   r�   rž   r£   r¬   r¯   r²   rµ   rÁ   rË   rÏ   rÒ   rÖ   rß   rá   rï   rÿ   r  r  r'  r-  r/  r5  rQ   r8  r#   r    r   ú<module>rF     sZ  ðÛ Û Û Û 	Û 
Û Û Ý %ß 3Ñ 3å .Ý @Ý @ß 5ã å /ß OÑ OÝ  Ý 3Ý Fòð ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð ‡�ñ.ó ð.ðb ‡�ñó ðð" ‡�ñ	ó ð	ð ‡�ñ#ó ð#ðL ‡�ñó ððB €‡�˜Ôñ#ó ð#ð ‡�ñ	
ó ð	
ð ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð ‡�ñ
ó ð
ð ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð  ‡�ñó ðð ‡�ñó ðð, ‡�ñó ðð, ‡�ñó ðð> €‡�˜Ôñó ðð ‡�ñ!ó ð!ð ‡�ñó ðð ‡�ñó ðð ‡�ñó ñr    