Ë
    3R jh$  ã                  óV  — d Z ddlm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mZmZmZmZ ddlmZ dZ ej,                  d«      Zdd	„Zdd
„Zdd„Zd d„Zd!d„Zd"d#d„Zd$d„Zd$d„Zd%d„Z d&d„Z!d'd„Z"d(d„Z#ddddœ	 	 	 	 	 	 	 	 	 d)d„Z$d$d„Z%d*d„Z&d*d„Z'd+d„Z(d$d„Z)d,d„Z*y)-ug   Telegram API Ð¿Ð¾Ñ€Ñ‚Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð±Ð¾Ñ‚Ð°: Ð¸Ð½Ð²Ð°Ð¹Ñ‚-Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° Ñ‡Ð°Ñ‚Ð¾Ð².é    )ÚannotationsN)ÚOptional)Úadd_portal_chatÚdelete_portal_chatÚget_portal_chatÚget_portal_chat_by_chat_idÚget_portal_chat_by_usernameÚlist_portal_chatsÚupdate_portal_chat)ÚPORTAL_BOT_TOKENz	OZ Portalz^[A-Za-z][A-Za-z0-9_]{4,31}$c                 óD   — t        t        xs d«      j                  «       S ©NÚ )Ústrr   Ústrip© ó    ú2/var/www/oz-panel.ru/ozpay-pub/server/portal_tg.pyÚportal_bot_tokenr      s   € ÜÔÒ" Ó#×)Ñ)Ó+Ð+r   c                óX  — t        | xs d«      j                  «       }|st        d«      ‚|j                  d«      r%|dd  j                  «       }|st        d«      ‚d|› �S |j	                  dd«      j	                  dd«      }	 t        |«      S # t        $ r}t        d	«      |‚d }~ww xY w)
Nr   u   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ ID Ñ‡Ð°Ñ‚Ð°ú@é   u    Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ username Ñ‡Ð°Ñ‚Ð°ú u   âˆ’ú-u$   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ ID Ñ‡Ð°Ñ‚Ð°)r   r   Ú
ValueErrorÚ
startswithÚreplaceÚint)ÚrawÚtextÚnameÚcompactÚexcs        r   Úparse_portal_chat_refr$      s­   € ÜˆCŠI�2‹×ÑÓ€ÙÜÐ/Ó0Ð0Ø‡O�O�CÔØ	ˆaˆbˆ�‰Ó	€$Ù	Ü	Ð6Ó	7Ð7ØˆTˆFˆÐØ�<‰<˜˜RÓ ×(Ñ(¨°3Ó7€ðDÜ	ˆW‹ÐøÜò DÜÐ9Ó:ÀÐCûðDús   Â
B Â	B)ÂB$Â$B)c                óh  — t        | xs d«      j                  «       }|st        d«      ‚|j                  «       d   }|j	                  dd«      j	                  dd«      }|j                  dd«      d   j                  dd«      d   j                  «       j                  d	«      }|j                  «       }d
D ]*  }||v sŒ|j                  |«      t        |«      z   }||d  } n |j                  d«      j                  «       j                  d	«      }t        j                  |«      st        d«      ‚|S )Nr   u    Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ username Ð±Ð¾Ñ‚Ð°r   zhttps://zhttp://ú?r   ú#ú/)zt.me/ztelegram.me/ztelegram.dog/r   u;   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ username. ÐŸÑ€Ð¸Ð¼ÐµÑ€: @NotifyBot)r   r   r   Úsplitr   ÚlowerÚrfindÚlenÚlstripÚ_BOT_USERNAME_REÚmatch)r   r    r*   ÚprefixÚidxr!   s         r   Úparse_portal_bot_usernamer2   /   s  € ÜˆCŠI�2‹×ÑÓ€ÙÜÐ5Ó6Ð6Ø�
‰
‹�Q‰€Ø�‰�Z Ó$×,Ñ,¨Y¸Ó;€Ø�
‰
�3˜Ó˜1Ñ×#Ñ# C¨Ó+¨AÑ.×4Ñ4Ó6×<Ñ<¸SÓA€Ø	�‰‹€Ø9ò 	€VØˆu‚_Ø	�‰�VÓ	œs 6›{Ñ	*€3Ø
ˆsˆtˆ*€4Ùð		ð
 	�‰�CÓ×ÑÓ ×&Ñ& sÓ+€Ü×Ñ˜tÔ$ÜÐPÓQÐQØ€r   c                óÄ   — t        j                  | j                  «       j                  d«      «      j	                  «       }t
        j                  |d d d«      dz  }d|z   S )Núutf-8é   Úbigl    J)£l     õÏeÿ )ÚhashlibÚsha256r*   ÚencodeÚdigestr   Ú
from_bytes)Úusernamer:   Úvalues      r   Ú_bot_record_chat_idr>   B   sQ   € Ü
�.‰.˜Ÿ™Ó)×0Ñ0°Ó9Ó
:×
AÑ
AÓ
C€Ü	�‰˜˜r ˜
 EÓ	*¨VÑ	3€Ø�UÑÐr   c                óú   — t        | xs d«      j                  «       }dD ]#  }|j                  |«      sŒ|t        |«      d  } n |j	                  «       }d|v ryd|v ryd|v sd|v ry	d
|v rd|v ryd|v ry|xs dS )Nr   )zBad Request: zForbidden: zUnauthorized: zNot Found: zchat not founduW   Ð§Ð°Ñ‚ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½. ÐŸÑ€Ð¾Ð²ÐµÑ€ÑŒÑ‚Ðµ ID Ð¸ Ð´Ð¾Ð±Ð°Ð²ÑŒÑ‚Ðµ Ð±Ð¾Ñ‚Ð° Ð² Ñ‡Ð°Ñ‚.zbot is not a memberum   Ð‘Ð¾Ñ‚ Ð½Ðµ Ñ�Ð¾Ñ�Ñ‚Ð¾Ð¸Ñ‚ Ð² Ñ�Ñ‚Ð¾Ð¼ Ñ‡Ð°Ñ‚Ðµ. Ð”Ð¾Ð±Ð°Ð²ÑŒÑ‚Ðµ ÐµÐ³Ð¾ ÐºÐ°Ðº Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ�Ñ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð°.znot enough rightszneed administratoruL   Ð£ Ð±Ð¾Ñ‚Ð° Ð½ÐµÑ‚ Ð¿Ñ€Ð°Ð² Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐ°Ñ‚ÑŒ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹.Úchat_invite_linkÚkickedu*   Ð‘Ð¾Ñ‚Ð° Ð¸Ñ�ÐºÐ»ÑŽÑ‡Ð¸Ð»Ð¸ Ð¸Ð· Ñ‡Ð°Ñ‚Ð°.Úunauthorizedu"   Ð�ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ PORTAL_BOT_TOKEN.õ   ÐžÑˆÐ¸Ð±ÐºÐ° Telegram)r   r   r   r,   r*   )Údescriptionr    r0   Úlows       r   Ú_clean_tg_errorrF   H   s¦   € ÜˆKÒ˜2Ó×$Ñ$Ó&€ØPò 	€VØ	‡_�_�VÕØ
Œs�6‹{ˆ}Ð
€4Ùð	ð ‡z�zƒ|€Ø˜ÑØ	bØ˜SÑ Ø	xØ˜3ÑÐ"6¸#Ñ"=Ø	WØ˜#Ñ (¨c¡/Ø	5Ø�cÑØ	-ØÒ'Ð'Ð'r   c           	     ó8  — t        «       }|st        d«      ‚t        j                  |xs i «      j	                  d«      }t
        j                  j                  d|› d| › �|ddddœ¬«      }	 t
        j                  j                  |d	¬
«      5 }t        j                  |j                  «       j                  d«      xs d«      }d d d «       t'        t(        «      r|j+                  d«      s+t        t!        |xs i j+                  d«      xs d«      «      ‚|j+                  d«      }	t'        |	t(        «      st'        |	t,        «      r|	S i S # 1 sw Y   ŒŠxY w# t
        j                  j                  $ rŠ}|j                  r!|j                  «       j                  dd¬«      nd}	 t        j                  |xs d«      }n5# t        j                  $ r t        t!        t#        |«      «      «      |‚w xY wY d }~�Œ/d }~wt$        $ r}t        d«      |‚d }~ww xY w)Nu,   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ PORTAL_BOT_TOKEN Ð² config.pyr4   zhttps://api.telegram.org/botr(   ÚPOSTzapplication/json)zContent-TypeÚAccept)ÚdataÚmethodÚheadersé   )Útimeoutz{}r   )Úerrorsr   u2   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð²Ñ�Ð·Ð°Ñ‚ÑŒÑ�Ñ� Ñ� TelegramÚokrD   rC   Úresult)r   r   ÚjsonÚdumpsr9   ÚurllibÚrequestÚRequestÚurlopenÚloadsÚreadÚdecodeÚerrorÚ	HTTPErrorÚfpÚJSONDecodeErrorrF   r   Ú	ExceptionÚ
isinstanceÚdictÚgetÚlist)
rK   ÚpayloadÚtokenÚbodyrU   ÚresponserJ   r#   r   rQ   s
             r   Ú
portal_apirh   \   sÊ  € Ü	Ó	€ÙÜÐAÓBÐBÜ�
‰
�7’=˜bÓ!×(Ñ(¨Ó1€Ü�>‰>×!Ñ!Ø    q¨¨Ð1ØØ	Ø-Ð9KÑ
Lð	 "ó €ð
RÜ‡~�~×Ñ˜g¨rÐÓ2ð >°hÜ
�*‰*�X—]‘]“_×+Ñ+¨GÓ4Ò<¸Ó
=€4÷>ô 	�4œÔ d§h¡h¨t¤nÜ”? D¢J¨B×#3Ñ#3°MÓ#BÒ#]ÐF]Ó^Ó_Ð_Ø
�(‰(�8Ó
€Ü˜V¤TÔ*¬j¸ÄÔ.FˆÐNÈBÐN÷>ð >ûä�‰×Ñò 8Ø8;¿ºˆ�‰‹
×Ñ˜'¨)ÐÔ4ÀB€#ð8Ü
�*‰*�S’[˜DÓ
!�4øÜ	×	Ñ	ò 8Ü	”O¤C¨£HÓ-Ó	.°CÐ7ð8úõ ûô 	ò RÜÐGÓHÈcÐQûðRúsT   Á-!E Â7EÃE ÅEÅE ÅHÅ7/G<Æ'GÇ G<Ç2G3Ç3G<Ç<HÈHÈHc                 ó$  — t        «       } | sdd d dœS 	 t        d«      }t        |xs i j	                  d«      xs d«      j                  «       xs d }d||xs i j	                  d«      dœS # t        $ r}dd d t        |«      dœcY d }~S d }~ww xY w)	NF)Ú
configuredr<   ÚidÚgetMeT)rj   r<   rk   r[   r<   r   rk   )r   rh   r   r   rb   r   )re   Úmer#   r<   s       r   Úportal_bot_inforn   x   s�   € Ü	Ó	€ÙØ¨4°tÑ	<Ð<ðOÜ�'Ó€"ô �’�r—‘˜zÓ*Ò0¨bÓ1×7Ñ7Ó9ÒA¸T€àØØ	Šˆr�‰�tÓñ	ð øô 	ò OØ¨$°dÄSÈÃXÑ	NÕNûðOús   ”A, Á,	BÁ5B
ÂBÂ
Bc                ó  — t        dd| i«      }t        |t        «      st        d«      ‚t	        |j                  d«      xs d«      }|dvrt        d«      ‚	 t        |j                  d«      «      }t	        |j                  d
«      xs d«      j                  «       xs d }t	        |j                  d«      xs d«      j                  «       xs |xs t	        |«      }||||dœS # t        t        f$ r}t        d	«      |‚d }~ww xY w)NÚgetChatÚchat_idu+   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ‡Ð°Ñ‚Útyper   >   ÚgroupÚchannelÚ
supergroupu?   Ð�ÑƒÐ¶ÐµÐ½ ID Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ð¸Ð»Ð¸ ÐºÐ°Ð½Ð°Ð»Ð°, Ð½Ðµ Ð»Ð¸Ñ‡ÐºÐ¸rk   u&   Telegram Ð½Ðµ Ð²ÐµÑ€Ð½ÑƒÐ» ID Ñ‡Ð°Ñ‚Ð°r<   Útitle)rk   rv   r<   rr   )	rh   r`   ra   r   r   rb   r   Ú	TypeErrorr   )Úchat_refÚinfoÚ	chat_typerq   r#   r<   rv   s          r   Ú
fetch_chatr{   ˆ   s  € Ü�9˜y¨(Ð3Ó4€Ü�4œÔÜÐ@ÓAÐAÜ�—‘˜&Ó!Ò' RÓ(€ØÐ7Ñ7ÜÐTÓUÐUðFÜ�—‘˜“Ó€'ô �—‘˜Ó$Ò*¨Ó+×1Ñ1Ó3Ò;°t€Ü	ˆT�X‰X�gÓÒ$ "Ó	%×	+Ñ	+Ó	-Ò	I°Ò	I¼SÀ»\€àØØØ
ñ		ð øô	 
”JÐò FÜÐ;Ó<À#ÐEûðFús   ÁC& Ã&DÃ5DÄDc                ój   — t        | xs d«      j                  «       j                  d«      }|sy d|› �S )Nr   r   zhttps://t.me/)r   r   r-   )r<   r!   s     r   Úpublic_chat_urlr}   �   s7   € ÜˆHŠN˜Ó×!Ñ!Ó#×*Ñ*¨3Ó/€ÙØ	Ø
˜�vÐÐr   c                óP   — t        | xs d«      j                  «       }d|v xs d|v S )Nr   zt.me/+z	joinchat/)r   r   )Úlinkr    s     r   Ú_is_additional_inviter€   ¤   s-   € ÜˆDŠJ�B‹×ÑÓ€Ø�DÐÒ/˜K¨4Ð/Ð/r   c                ó¸   — t        dt        | «      t        dœ«      }t        |xs i j	                  d«      xs d«      j                  «       }|st        d«      ‚|S )NÚcreateChatInviteLink)rq   r!   Úinvite_linkr   u>   Telegram Ð½Ðµ Ð²ÐµÑ€Ð½ÑƒÐ» Ñ�Ñ�Ñ‹Ð»ÐºÑƒ-Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ)rh   r   Ú_INVITE_LINK_NAMEr   rb   r   r   )rq   rJ   r   s      r   Úcreate_invite_linkr…   ©   sY   € ÜØÜ�'‹lÔ$5Ñ6ó	€ô 	ˆTŠZ�R×Ñ˜]Ó+Ò1¨rÓ2×8Ñ8Ó:€ÙÜÐSÓTÐTØ€r   c                ót   — t        |xs d«      j                  «       }|sy t        dt        | «      |dœ«       y )Nr   ÚrevokeChatInviteLink)rq   rƒ   )r   r   rh   r   )rq   rƒ   r   s      r   Úrevoke_invite_linkrˆ   ´   s7   € ÜˆKÒ˜2Ó×$Ñ$Ó&€ÙØÜØÜ�'‹l¨4Ñ0õr   F©r<   Úold_linkÚrotatec               óº   — t        |«      }|r|S |r't        |xs d«      r	 t        | |«       t	        | «      S t	        | «      S # t        $ r Y t	        | «      S w xY wr   )r}   r€   rˆ   r   r…   )rq   r<   rŠ   r‹   Úpublics        r   Úresolve_invite_linkrŽ   ¾   sk   € ô ˜(Ó
#€Ù
Ø	€-Ù
Ô$ X¢^°Ô4ðÜ�g˜xÔ(ô 	˜7Ó#Ð#Ô˜7Ó#Ð#øô 
ò ØÜ˜7Ó#Ð#ðús   ¢A Á	AÁAc                 ó,   — t        «       t        «       dœS )N)ÚbotÚchats)rn   r
   r   r   r   Úportal_statusr’   Ð   s   € ä	Ó	ÜÓñ	ð r   c                óž  — t        |«      }t        |«      }t        |d   «      rt        d«      ‚t	        | xs d«      j                  «       xs |d   }d }d }	 t        |d   |j                  d«      ¬«      }t        ||d   |j                  d«      |d¬«      }|rt        |«      }||d	<   |S # t        $ r}t	        |«      }Y d }~ŒOd }~ww xY w)
Nrk   u'   Ð­Ñ‚Ð¾Ñ‚ Ñ‡Ð°Ñ‚ ÑƒÐ¶Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½r   rv   r<   )r<   Úchat©r<   rƒ   ÚkindÚwarning)
r$   r{   r   r   r   r   rŽ   rb   r   ra   )	rv   rx   Úrefry   Úresolved_titler—   r   r#   Úrows	            r   Úprovision_portal_chatr›   ×   sÔ   € Ü˜XÓ&€Ü�3‹€Ü˜t D™zÔ*ÜÐ<Ó=Ð=Ü�e’k˜rÓ"×(Ñ(Ó*Ò;¨d°7©m€Ø€Ø€ðÜ	˜T $™Z°$·(±(¸:Ó2FÔ	G€$ô ØØ€t�*Ø�8‰8�JÓØØô€ñ ÜˆS‹	€#Ø€#€i�.Ø€øô 	ò Ü�‹H…'ûðús   ÁB. Â.	CÂ7CÃCc                óî   — t        |«      }t        |«      rt        d«      ‚t        |«      }|st        d«      ‚t	        | xs d«      j                  «       xs d|› �}t        |t        |«      ||d¬«      S )Nu'   Ð­Ñ‚Ð¾Ñ‚ Ð±Ð¾Ñ‚ ÑƒÐ¶Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½u/   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ñ�Ñ�Ñ‹Ð»ÐºÑƒr   r   r�   r•   )r2   r	   r   r}   r   r   r   r>   )rv   Úusername_rawr<   r   r™   s        r   Úprovision_portal_botrž   ð   s|   € Ü% lÓ3€Ü Ô)ÜÐ<Ó=Ð=Ü˜Ó!€ÙÜÐDÓEÐEÜ�e’k˜rÓ"×(Ñ(Ó*Ò<°°(°¨n€ÜØÜ�hÓØØØô	ð r   c                ó.  — t        | «      }|st        d«      ‚|j                  d«      dk(  rdt        |j                  d«      xs d«      j	                  «       }|st        d«      ‚t        |«      }t        |d   ||¬«      }|st        d	«      ‚|S t        |d
   «      }t        |d   |j                  d«      |j                  d«      d¬«      }|j                  d«      xs |d   }t        |d   ||j                  d«      |¬«      }|st        d	«      ‚|S )Nu   Ð§Ð°Ñ‚ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½r–   r�   r<   r   u   Ð£ Ð±Ð¾Ñ‚Ð° Ð½ÐµÑ‚ usernamerk   )rƒ   r<   u3   Ð�Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ�Ñ�Ñ‹Ð»ÐºÑƒrq   rƒ   Tr‰   rv   )rv   r<   rƒ   )	r   r   rb   r   r   r}   r   r{   rŽ   )Úchat_pkrš   r<   r   Úupdatedry   rv   s          r   Úrefresh_portal_chat_linkr¢     s  € Ü�wÓ€ÙÜÐ-Ó.Ð.Ø‡G�GˆFƒO�uÒÜ�—‘˜Ó$Ò*¨Ó+×1Ñ1Ó3€(Ù	Ü	Ð1Ó	2Ð2Ü	˜Ó	"€$Ü˜s 4™y°dÀXÔN€'Ù	Ü	ÐIÓ	JÐJØ	€.Ü�3�y‘>Ó"€ÜØ€t�*Ø�8‰8�JÓØ�7‰7�=Ó!Ø	ô		€ð 
�‰�Ó	Ò	*˜T '™]€ÜØ€d�)ØØ�8‰8�JÓØô	€ñ 	ÜÐHÓIÐIØ€r   c            	     ó<  — g } g }t        «       D ]   }	 | j                  t        |d   «      «       Œ" | |dœS # t        $ r[}|j                  |d   |j	                  d«      t        |«      dœ«       | j                  t        |d   «      xs |«       Y d }~Œ‡d }~ww xY w)Nrk   rv   )rk   rv   r[   )r‘   rO   )r
   Úappendr¢   r   rb   r   r   )r‘   rO   rš   r#   s       r   Úrefresh_all_portal_linksr¥   !  s™   € Ø	€Ø
€ÜÓò 3€Sð3Ø‡<�<Ô(¨¨T©Ó3Õ4ð3ð  6Ñ*Ð*øô 
ò 3Ø	‡=�=˜˜D™	¨C¯G©G°GÓ,<ÄsÈ3ÃxÑPÔQØ‡<�<”  D¡	Ó*Ò1¨c×2Ñ2ûð3ús   “7·	BÁ ABÂBc                óº   — t        | «      }|syt        |j                  d«      xs d«      r	 t        |d   |d   «       t        |d   «      S # t        $ r Y Œw xY w)NFrƒ   r   rq   rk   )r   r€   rb   rˆ   r   r   )r    rš   s     r   Úremove_portal_chatr§   -  se   € Ü�wÓ€ÙØ	Ü˜#Ÿ'™' -Ó0Ò6°BÔ7ðÜ�c˜)‘n c¨-Ñ&8Ô9ô 	˜3˜t™9Ó%Ð%øô 
ò Ùðús   ®A Á	AÁA)Úreturnr   )r¨   z	int | str)r<   r   r¨   r   )rD   r   r¨   r   )N)rK   r   rd   zOptional[dict]r¨   ra   )r¨   ra   )r<   úOptional[str]r¨   r©   )r   r   r¨   Úbool)rq   r   r¨   r   )rq   r   rƒ   r   r¨   ÚNone)
rq   r   r<   r©   rŠ   r©   r‹   rª   r¨   r   )rv   r   r¨   ra   )r    r   r¨   ra   )r    r   r¨   rª   )+Ú__doc__Ú
__future__r   r7   rR   ÚreÚurllib.errorrT   Úurllib.requestÚtypingr   Ú
api.db_apir   r   r   r   r	   r
   r   Úserver.configr   r„   Úcompiler.   r   r$   r2   r>   rF   rh   rn   r{   r}   r€   r…   rˆ   rŽ   r’   r›   rž   r¢   r¥   r§   r   r   r   ú<module>rµ      sæ   ðÙ må "ã Û Û 	Û Û Ý ÷÷ ñ õ +àÐ Ø�2—:‘:Ð=Ó>Ð ó,óDó ó&ó(ô(Oó8ó ó*ó0ó
óð  ØØñ$Ø
ð$ð ð$ð ð	$ð
 
ð$ð 	ó$ó$óó2ó"ó@	+ô	&r   