Ë
    CØïiØ-  ã                   ó~  — d dl Z d dlZd dlZd dlZd dlmZmZ d dl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 ddlmZ 	 d d	lmZ d
Z G d„ de«      Zdd„Z G d„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de#«      Z$ G d„ de#«      Z%y# e$ r eZY Œsw xY w)é    N)ÚABCÚabstractmethod)ÚAnyÚ	AwaitableÚCallableÚListÚOptionalÚSet)ÚURLé   )ÚPathLike)ÚApplication)ÚServer)Ú
SSLContext)	ÚBaseSiteÚTCPSiteÚUnixSiteÚNamedPipeSiteÚSockSiteÚ
BaseRunnerÚ	AppRunnerÚServerRunnerÚGracefulExitc                   ó   — e Zd ZdZy)r   r   N)Ú__name__Ú
__module__Ú__qualname__Úcode© ó    úL/var/www/html/aiagents/fe/lib/python3.12/site-packages/aiohttp/web_runner.pyr   r   !   s   „ Ø�Dr    r   c                  ó   — t        «       ‚©N)r   r   r    r!   Ú_raise_graceful_exitr$   %   s
   € Ü
‹.Ðr    c                   óv   — e Zd ZdZddddœddded	ee   d
eddf
d„Ze	e
defd„«       «       Ze
dd„«       Zdd„Zy)r   )Ú_runnerÚ_ssl_contextÚ_backlogÚ_serverç      N@Né€   ©Úshutdown_timeoutÚssl_contextÚbacklogÚrunnerr   r-   r.   r/   Úreturnc                ó¾   — |j                   €t        d«      ‚|dk7  r%d}t        j                  |t        d¬«       ||_        || _        || _        || _        d | _	        y )Nz(Call runner.setup() before making a siter*   z,shutdown_timeout should be set on BaseRunneré   )Ú
stacklevel)
ÚserverÚRuntimeErrorÚwarningsÚwarnÚDeprecationWarningÚ_shutdown_timeoutr&   r'   r(   r)   )Úselfr0   r-   r.   r/   Úmsgs         r!   Ú__init__zBaseSite.__init__,   s]   € ð �=‰=Ð ÜÐIÓJÐJØ˜tÒ#Ø@ˆCÜ�M‰M˜#Ô1¸aÕ@Ø'7ˆFÔ$ØˆŒØ'ˆÔØˆŒØ9=ˆ�r    c                  ó   — y r#   r   ©r;   s    r!   ÚnamezBaseSite.name?   s   € ð 	r    c              ƒ   óB   K  — | j                   j                  | «       y ­wr#   )r&   Ú	_reg_siter?   s    r!   ÚstartzBaseSite.startD   s   è ø€ à�‰×Ñ˜tÕ$ùs   ‚c              ƒ   óÄ   K  — | j                   j                  | «       | j                  �| j                  j                  «        | j                   j	                  | «       y ­wr#   )r&   Ú_check_siter)   ÚcloseÚ_unreg_siter?   s    r!   ÚstopzBaseSite.stopH   sD   è ø€ Ø�‰× Ñ  Ô&Ø�<‰<Ð#Ø�L‰L×ÑÔ à�‰× Ñ  Õ&ùs   ‚AA ©r1   N)r   r   r   Ú	__slots__Úfloatr	   r   Úintr=   Úpropertyr   Ústrr@   rC   rH   r   r    r!   r   r   )   sˆ   „ ØB€Ið #'Ø,0Øò>àð>ð  ð	>ð
 ˜jÑ)ð>ð ð>ð 
ó>ð& Øð�cò ó ó ðð ò%ó ð%ô'r    r   c                   óœ   ‡ — e Zd ZdZ	 	 dddddddœdddee   d	ee   d
edee   dedee	   dee	   ddfˆ fd„Z
edefd„«       Zdˆ fd„Zˆ xZS )r   )Ú_hostÚ_portÚ_reuse_addressÚ_reuse_portNr*   r+   )r-   r.   r/   Úreuse_addressÚ
reuse_portr0   r   ÚhostÚportr-   r.   r/   rT   rU   r1   c                óˆ   •— t         ‰	| �  ||||¬«       || _        |€| j                  rdnd}|| _        || _        || _        y )Nr,   iû   i�  )Úsuperr=   rP   r'   rQ   rR   rS   )
r;   r0   rV   rW   r-   r.   r/   rT   rU   Ú	__class__s
            €r!   r=   zTCPSite.__init__S   sW   ø€ ô 	‰ÑØØ-Ø#Øð	 	ô 	
ð ˆŒ
Øˆ<Ø×,Ò,‘4°$ˆDØˆŒ
Ø+ˆÔØ%ˆÕr    c                 ó¬   — | j                   rdnd}| j                  €dn| j                  }t        t        j                  ||| j
                  ¬«      «      S )NÚhttpsÚhttpz0.0.0.0©ÚschemerV   rW   )r'   rP   rN   r   ÚbuildrQ   )r;   r_   rV   s      r!   r@   zTCPSite.namel   sA   € à ×-Ò-‘°6ˆØ ŸJ™JÐ.‰y°D·J±JˆÜ”3—9‘9 F°¸D¿J¹JÔGÓHÐHr    c           	   ƒ   ó`  •K  — t         ‰| �  «       ƒ d {  –—†  t        j                  «       }| j                  j
                  }|€J ‚|j                  || j                  | j                  | j                  | j                  | j                  | j                  ¬«      ƒ d {  –—† | _        y 7 Œ”7 Œ­w)N)Ússlr/   rT   rU   )rY   rC   ÚasyncioÚget_event_loopr&   r5   Úcreate_serverrP   rQ   r'   r(   rR   rS   r)   ©r;   Úloopr5   rZ   s      €r!   rC   zTCPSite.startr   s™   øè ø€ Ü‰g‰m‹o×ÐÜ×%Ñ%Ó'ˆØ—‘×$Ñ$ˆØÐ!Ð!Ð!Ø!×/Ñ/ØØ�J‰JØ�J‰JØ×!Ñ!Ø—M‘MØ×-Ñ-Ø×'Ñ'ð 0ó 
÷ 
ˆ�ð	 	øð
ús"   ƒB.•B*–B	B.ÂB,Â B.Â,B.)NNrI   )r   r   r   rJ   r	   rN   rL   rK   r   Úboolr=   rM   r@   rC   Ú__classcell__©rZ   s   @r!   r   r   P   sÀ   ø„ ØC€Ið
 #Ø"ð	&ð #'Ø,0ØØ(,Ø%)ò&àð&ð �s‰mð&ð �s‰mð	&ð  ð&ð ˜jÑ)ð&ð ð&ð   ‘~ð&ð ˜T‘Nð&ð 
õ&ð2 ðI�cò Ió ðI÷

ñ 
r    r   c                   ón   ‡ — e Zd ZdZddddœddded	ed
ee   deddfˆ fd„Z	e
defd„«       Zdˆ fd„Zˆ xZS )r   ©Ú_pathr*   Nr+   r,   r0   r   Úpathr-   r.   r/   r1   c                ó:   •— t         ‰| �  ||||¬«       || _        y )Nr,   )rY   r=   rm   )r;   r0   rn   r-   r.   r/   rZ   s         €r!   r=   zUnixSite.__init__…   s,   ø€ ô 	‰ÑØØ-Ø#Øð	 	ô 	
ð ˆ�
r    c                 óF   — | j                   rdnd}|› d| j                  › d�S )Nr\   r]   ú://unix:ú:)r'   rm   )r;   r_   s     r!   r@   zUnixSite.name–   s(   € à ×-Ò-‘°6ˆØ�˜ $§*¡* ¨QÐ/Ð/r    c              ƒ   ó  •K  — t         ‰| �  «       ƒ d {  –—†  t        j                  «       }| j                  j
                  }|€J ‚|j                  || j                  | j                  | j                  ¬«      ƒ d {  –—† | _
        y 7 Œs7 Œ­w)N)rb   r/   )rY   rC   rc   rd   r&   r5   Úcreate_unix_serverrm   r'   r(   r)   rf   s      €r!   rC   zUnixSite.start›   s€   øè ø€ Ü‰g‰m‹o×ÐÜ×%Ñ%Ó'ˆØ—‘×$Ñ$ˆØÐ!Ð!Ð!Ø!×4Ñ4ØØ�J‰JØ×!Ñ!Ø—M‘Mð	 5ó 
÷ 
ˆ�ð	 	øð
úó"   ƒB•B	–A(BÁ>BÁ?BÂBrI   )r   r   r   rJ   r   rK   r	   r   rL   r=   rM   rN   r@   rC   ri   rj   s   @r!   r   r   ‚   s|   ø„ Ø€Ið #'Ø,0Øòàðð ðð
  ðð ˜jÑ)ðð ðð 
õð" ð0�cò 0ó ð0÷

ñ 

r    r   c            	       ó\   ‡ — e Zd ZdZddœdddededd	fˆ fd
„Zedefd„«       Zdˆ fd„Z	ˆ xZ
S )r   rl   r*   ©r-   r0   r   rn   r-   r1   Nc                ó¨   •— t        j                  «       }t        |t         j                  «      st	        d«      ‚t
        ‰| �  ||¬«       || _        y )Nz8Named Pipes only available in proactorloop under windowsrw   )rc   rd   Ú
isinstanceÚProactorEventLoopr6   rY   r=   rm   )r;   r0   rn   r-   rg   rZ   s        €r!   r=   zNamedPipeSite.__init__«   sT   ø€ ô ×%Ñ%Ó'ˆÜØ”'×+Ñ+ô
ô ØMóð ô 	‰Ñ˜Ð2BÐÔCØˆ�
r    c                 ó   — | j                   S r#   rl   r?   s    r!   r@   zNamedPipeSite.name¸   ó   € à�z‰zÐr    c              ƒ   óú   •K  — t         ‰| �  «       ƒ d {  –—†  t        j                  «       }| j                  j
                  }|€J ‚|j                  || j                  «      ƒ d {  –—† }|d   | _        y 7 Œa7 Œ­w)Nr   )	rY   rC   rc   rd   r&   r5   Ústart_serving_piperm   r)   )r;   rg   r5   r)   rZ   s       €r!   rC   zNamedPipeSite.start¼   su   øè ø€ Ü‰g‰m‹o×ÐÜ×%Ñ%Ó'ˆØ—‘×$Ñ$ˆØÐ!Ð!Ð!Ø×/Ñ/Ø�D—J‘Jó
÷ 
ˆð ˜q‘zˆ�ð 	øð
ús"   ƒA;•A7–AA;Á'A9Á(A;Á9A;rI   )r   r   r   rJ   rN   rK   r=   rM   r@   rC   ri   rj   s   @r!   r   r   ¨   sY   ø„ Ø€Ið MQòØ"ðØ*-ðØDIðà	õð ð�cò ó ð÷"ñ "r    r   c                   ó‚   ‡ — e Zd ZdZddddœdddej                  d	ed
ee   deddfˆ fd„Z	e
defd„«       Zdˆ fd„Zˆ xZS )r   )Ú_sockÚ_namer*   Nr+   r,   r0   r   Úsockr-   r.   r/   r1   c                ól  •— t         ‰
| �  ||||¬«       || _        | j                  rdnd}t	        t
        d«      r;|j                  t
        j                  k(  r|› d|j                  «       › d�}|| _        y |j                  «       d d \  }}	t        t        j                  |||	¬«      «      }|| _        y )	Nr,   r\   r]   ÚAF_UNIXrq   rr   r3   r^   )rY   r=   r€   r'   ÚhasattrÚsocketÚfamilyr„   ÚgetsocknamerN   r   r`   r�   )r;   r0   r‚   r-   r.   r/   r_   r@   rV   rW   rZ   s             €r!   r=   zSockSite.__init__Ê   s²   ø€ ô 	‰ÑØØ-Ø#Øð	 	ô 	
ð ˆŒ
Ø ×-Ò-‘°6ˆÜ”6˜9Ô%¨$¯+©+¼¿¹Ò*GØ�X˜X d×&6Ñ&6Ó&8Ð%9¸Ð;ˆDð ˆ�
ð ×)Ñ)Ó+¨B¨QÐ/‰JˆD�$Ü”s—y‘y¨°TÀÔEÓFˆDØˆ�
r    c                 ó   — | j                   S r#   )r�   r?   s    r!   r@   zSockSite.nameâ   r|   r    c              ƒ   ó  •K  — t         ‰| �  «       ƒ d {  –—†  t        j                  «       }| j                  j
                  }|€J ‚|j                  || j                  | j                  | j                  ¬«      ƒ d {  –—† | _
        y 7 Œs7 Œ­w)N)r‚   rb   r/   )rY   rC   rc   rd   r&   r5   re   r€   r'   r(   r)   rf   s      €r!   rC   zSockSite.startæ   s}   øè ø€ Ü‰g‰m‹o×ÐÜ×%Ñ%Ó'ˆØ—‘×$Ñ$ˆØÐ!Ð!Ð!Ø!×/Ñ/Ø˜Ÿ™¨×):Ñ):ÀDÇMÁMð 0ó 
÷ 
ˆ�ð	 	øð
úru   rI   )r   r   r   rJ   r†   rK   r	   r   rL   r=   rM   rN   r@   rC   ri   rj   s   @r!   r   r   Ç   s€   ø„ Ø"€Ið #'Ø,0Øòàðð �m‰mðð
  ðð ˜jÑ)ðð ðð 
õð0 ð�cò ó ð÷
ñ 
r    r   c            	       óþ   — e Zd ZdZdddœdedededd	fd
„Zede	e
   fd„«       Zedee   fd„«       Zedee   fd„«       Zdd„Zedd„«       Zdd„Zede
fd„«       Zedd„«       Zdedd	fd„Zdedd	fd„Zdedd	fd„Zy	)r   ©Úshutdown_callbackÚ_handle_signalsÚ_kwargsr)   Ú_sitesr:   Fr*   )Úhandle_signalsr-   r‘   r-   Úkwargsr1   Nc                óX   — d | _         || _        || _        d | _        g | _        || _        y r#   rŒ   )r;   r‘   r-   r’   s       r!   r=   zBaseRunner.__init__ú   s3   € ð KOˆÔØ-ˆÔØˆŒØ)-ˆŒØ&(ˆŒØ!1ˆÕr    c                 ó   — | j                   S r#   )r)   r?   s    r!   r5   zBaseRunner.server  s   € à�|‰|Ðr    c                 ó´   — g }| j                   D ]F  }|j                  }|€Œ|j                  }|€Œ!|D ]!  }|j                  |j	                  «       «       Œ# ŒH |S r#   )r�   r)   ÚsocketsÚappendrˆ   )r;   ÚretÚsiter5   r–   r‚   s         r!   Ú	addresseszBaseRunner.addresses  sc   € àˆØ—K‘Kò 	7ˆDØ—\‘\ˆFØÑ!Ø Ÿ.™.�ØÑ&Ø 'ò 7˜ØŸ
™
 4×#3Ñ#3Ó#5Õ6ñ7ð	7ð ˆ
r    c                 ó,   — t        | j                  «      S r#   )Úsetr�   r?   s    r!   ÚsiteszBaseRunner.sites  s   € ä�4—;‘;ÓÐr    c              ƒ   ó:  K  — t        j                  «       }| j                  rI	 |j                  t        j
                  t        «       |j                  t        j                  t        «       | j                  «       ƒ d {  –—† | _
        y # t        $ r Y Œ)w xY w7 Œ­wr#   )rc   rd   rŽ   Úadd_signal_handlerÚsignalÚSIGINTr$   ÚSIGTERMÚNotImplementedErrorÚ_make_serverr)   ©r;   rg   s     r!   ÚsetupzBaseRunner.setup  sz   è ø€ Ü×%Ñ%Ó'ˆà×ÒðØ×'Ñ'¬¯©Ô7KÔLØ×'Ñ'¬¯©Ô8LÔMð
 "×.Ñ.Ó0×0ˆ�øô	 'ò áðúð 1ús5   ‚!B¤AB
 Á,BÁ?BÂ 
BÂ
	BÂBÂBÂBc              ƒ   ó   K  — y­w)z8Call any shutdown hooks to help server close gracefully.Nr   r?   s    r!   ÚshutdownzBaseRunner.shutdown)  s   è ø� ùó   ‚c              ƒ   óÀ  K  — t        | j                  «      D ]  }|j                  «       ƒ d {  –—†  Œ | j                  rƒ| j                  j	                  «        | j                  «       ƒ d {  –—†  | j                  r| j                  «       ƒ d {  –—†  | j                  j                  | j                  «      ƒ d {  –—†  | j                  «       ƒ d {  –—†  d | _        | j                  rTt        j                  «       }	 |j                  t        j                  «       |j                  t        j                  «       y y 7 �Œ7 ŒØ7 Œ¶7 Œ‹7 Œu# t         $ r Y y w xY w­wr#   )Úlistr�   rH   r)   Úpre_shutdownr¨   r�   r:   Ú_cleanup_serverrŽ   rc   Úget_running_loopÚremove_signal_handlerr    r¡   r¢   r£   )r;   r™   rg   s      r!   ÚcleanupzBaseRunner.cleanup-  s  è ø€ ô
 ˜Ÿ™Ó%ò 	ˆDØ—)‘)“+×Ñð	ð �<Š<Ø�L‰L×%Ñ%Ô'Ø—-‘-“/×!Ð!à×%Ò%Ø×,Ñ,Ó.×.Ð.à—,‘,×'Ñ'¨×(>Ñ(>Ó?×?Ð?Ø×"Ñ"Ó$×$Ð$àˆŒØ×ÒÜ×+Ñ+Ó-ˆDðØ×*Ñ*¬6¯=©=Ô9Ø×*Ñ*¬6¯>©>Õ:ð	  ð ùð "øð /øà?øØ$ùô 'ò áðüs{   ‚,E®E¯?EÁ.EÁ/#EÂE	Â,EÂ?EÃ EÃEÃ+EÄ>E ÅEÅEÅ	EÅEÅEÅ	EÅEÅEÅEc              ƒ   ó   K  — y ­wr#   r   r?   s    r!   r¤   zBaseRunner._make_serverI  ó	   è ø€ àùr©   c              ƒ   ó   K  — y ­wr#   r   r?   s    r!   r­   zBaseRunner._cleanup_serverM  r²   r©   r™   c                 óx   — || j                   v rt        d|› d| › �«      ‚| j                   j                  |«       y )NúSite z! is already registered in runner )r�   r6   r—   ©r;   r™   s     r!   rB   zBaseRunner._reg_siteQ  s9   € Ø�4—;‘;ÑÜ  t fÐ,MÈdÈVÐTÓUÐUØ�‰×Ñ˜4Õ r    c                 óB   — || j                   vrt        d|› d| › �«      ‚y ©Nrµ   z is not registered in runner )r�   r6   r¶   s     r!   rE   zBaseRunner._check_siteV  s,   € Ø�t—{‘{Ñ"Ü  t fÐ,IÈ$ÈÐPÓQÐQð #r    c                 óx   — || j                   vrt        d|› d| › �«      ‚| j                   j                  |«       y r¸   )r�   r6   Úremover¶   s     r!   rG   zBaseRunner._unreg_siteZ  s9   € Ø�t—{‘{Ñ"Ü  t fÐ,IÈ$ÈÐPÓQÐQØ�‰×Ñ˜4Õ r    rI   )r   r   r   rJ   rh   rK   r   r=   rM   r	   r   r5   r   rš   r
   r   r�   r¦   r   r¨   r°   r¤   r­   rB   rE   rG   r   r    r!   r   r   ð   s'  „ ð€Ið  %Ø"&ò	2ð ð2ð  ð	2ð
 ð2ð 
ó2ð ð˜ Ñ(ò ó ðð ð	˜4 ™9ò 	ó ð	ð ð �s˜8‘}ò  ó ð ó1ð òGó ðGóð8 ð Fò ó ðð òó ðð!˜hð !¨4ó !ð
R ð R¨Tó Rð! ð !¨Tô !r    r   c            	       óZ   ‡ — e Zd ZdZdZddœdedededd	fˆ fd
„Zdd„Z	defd„Z
dd„Zˆ xZS )r   zLow-level web server runner©Ú_web_serverF©r‘   Ú
web_serverr‘   r’   r1   Nc                ó6   •— t        ‰| �  dd|i|¤Ž || _        y )Nr‘   r   )rY   r=   r½   )r;   r¿   r‘   r’   rZ   s       €r!   r=   zServerRunner.__init__e  s"   ø€ ô 	‰ÑÑA¨ÐA¸&ÒAØ%ˆÕr    c              ƒ   ó   K  — y ­wr#   r   r?   s    r!   r¨   zServerRunner.shutdownk  ó	   è ø€ Øùr©   c              ƒ   ó"   K  — | j                   S ­wr#   r¼   r?   s    r!   r¤   zServerRunner._make_servern  s   è ø€ Ø×ÑÐùs   ‚c              ƒ   ó   K  — y ­wr#   r   r?   s    r!   r­   zServerRunner._cleanup_serverq  rÂ   r©   rI   )r   r   r   Ú__doc__rJ   r   rh   r   r=   r¨   r¤   r­   ri   rj   s   @r!   r   r   `  sL   ø„ Ù%à €Ið =Bò&Ø ð&Ø59ð&ØMPð&à	õ&óð  Fó  ÷r    r   c            	       óp   ‡ — e Zd ZdZdZddœdedededd	fˆ fd
„Ze	defd„«       Z
dd„Zdefd„Zdd„Zˆ xZS )r   zWeb Application runner©Ú_appFr¾   Úappr‘   r’   r1   Nc                óŠ   •— t        ‰| �  dd|i|¤Ž t        |t        «      st	        dj                  |«      «      ‚|| _        y )Nr‘   z?The first argument should be web.Application instance, got {!r}r   )rY   r=   ry   r   Ú	TypeErrorÚformatrÈ   )r;   rÉ   r‘   r’   rZ   s       €r!   r=   zAppRunner.__init__z  sH   ø€ ô 	‰ÑÑA¨ÐA¸&ÒAÜ˜#œ{Ô+Üð%ß%+¡V¨C£[óð ð ˆ�	r    c                 ó   — | j                   S r#   rÇ   r?   s    r!   rÉ   zAppRunner.app…  s   € à�y‰yÐr    c              ƒ   óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr#   )rÈ   r¨   r?   s    r!   r¨   zAppRunner.shutdown‰  s   è ø€ Ø�i‰i× Ñ Ó"×"Ò"úó   ‚( &¡(c              ƒ   ó|  K  — t        j                  «       }| j                  j                  |«       | j                  j                  j                  «        | j                  j                  «       ƒ d {  –—†  | j                  j                  «         | j                  j                  dd|i| j                  ¤ŽS 7 ŒF­w)Nrg   r   )	rc   rd   rÈ   Ú	_set_loopÚ
on_startupÚfreezeÚstartupÚ_make_handlerr�   r¥   s     r!   r¤   zAppRunner._make_serverŒ  sŠ   è ø€ Ü×%Ñ%Ó'ˆØ�	‰	×Ñ˜DÔ!Ø�	‰	×Ñ×#Ñ#Ô%Ø�i‰i×ÑÓ!×!Ð!Ø�	‰	×ÑÔà&ˆt�y‰y×&Ñ&ÑA¨DÐA°D·L±LÑAÐAð 	"ús   ‚A1B<Á3B:Á4AB<c              ƒ   óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr#   )rÈ   r°   r?   s    r!   r­   zAppRunner._cleanup_server•  s   è ø€ Ø�i‰i×ÑÓ!×!Ò!úrÏ   rI   )r   r   r   rÅ   rJ   r   rh   r   r=   rM   rÉ   r¨   r   r¤   r­   ri   rj   s   @r!   r   r   u  si   ø„ Ù à€Ið ;@ò	Øð	Ø37ð	ØKNð	à	õ	ð ð�[ò ó ðó#ðB Fó B÷"r    r   rI   )&rc   r    r†   r7   Úabcr   r   Útypingr   r   r   r   r	   r
   Úyarlr   Útypedefsr   Úweb_appr   r¿   r   rb   r   ÚImportErrorÚobjectÚ__all__Ú
SystemExitr   r$   r   r   r   r   r   r   r   r   r   r    r!   ú<module>rà      sÄ   ðÛ Û Û Û ß #ß @× @å å Ý  Ý ðÝð

€ô�:ô óô$'ˆsô $'ôN/
ˆhô /
ôd#
ˆxô #
ôL"�Hô "ô>&
ˆxô &
ôRm!�ô m!ô`�:ô ô*!"�
õ !"øðK ò Ø‚Jðús   ÁB2 Â2B<Â;B<