+
    öÙ†jžO  ã                   ó   € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	H
t
HtHtHtHtHtHtHtHtHtHt ]! ]]]]]]04      t ] R t ! R R]4      t]]]3tR tR t R t!R	 t"RR
 lt#RR lt$]$t%RR lt& ! R R4      t' ! R R]'4      t(R t)RR lt*]PV                  R8X  d    ! R R4      t, ! R R]'4      t-R# R#   ] d    / t L‚i ; i)a   Basic infrastructure for asynchronous socket service clients and servers.

There are only two ways to have a program on a single processor do "more
than one thing at a time".  Multi-threaded programming is the simplest and
most popular way to do it, but there is another very different technique,
that lets you have nearly all the advantages of multi-threading, without
actually using multiple threads. it's really only practical if your program
is largely I/O bound. If your program is CPU bound, then pre-emptive
scheduled threads are probably what you really need. Network servers are
rarely CPU-bound, however.

If your operating system supports the select() system call in its I/O
library (and nearly all do), then you can use it to juggle multiple
communication channels at once; doing other work while your I/O is taking
place in the "background."  Although this strategy can seem strange and
complex, especially at first, it is in many ways easier to understand and
control than multi-threaded programming. The module documented here solves
many of the difficult problems for you, making the task of building
sophisticated high-performance network servers and clients a snap.
N)ÚEALREADYÚEINPROGRESSÚEWOULDBLOCKÚ
ECONNRESETÚEINVALÚENOTCONNÚ	ESHUTDOWNÚEISCONNÚEBADFÚECONNABORTEDÚEPIPEÚEAGAINÚ	errorcodec                 ó®   €  \         P                  ! V 4      #   \        \        \        3 d'    T \
        9   d   \
        T ,          u # R T ,          u # i ; i)zUnknown error %s)ÚosÚstrerrorÚ
ValueErrorÚOverflowErrorÚ	NameErrorr   )Úerrs   &Ú,/usr/lib/python3.14/test/support/asyncore.pyÚ	_strerrorr   J   sI   € ð'Ü�{Š{˜3ÓÐøÜœ¤yÐ1ô 'Ø”)ÔÜ˜S•>Ò!Ø! 3Õ&Ò&ð'ús   ‚ ˜.AÁ	AÁAc                   ó   € ] tR t^RtRtR# )ÚExitNow© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    r   r   r   R   s   † Ûr    r   c                 ón   €  V P                  4        R #   \         d    h  T P                  4         R # ; i©N)Úhandle_read_eventÚ_reraised_exceptionsÚhandle_error©Úobjs   &r   Úreadr(   W   ó1   € ðØ×ÑÖøÜô ØðØ×Ñ×úó   ‚ ”4c                 ón   €  V P                  4        R #   \         d    h  T P                  4         R # ; ir"   )Úhandle_write_eventr$   r%   r&   s   &r   Úwriter-   _   s1   € ðØ×ÑÖ øÜô ØðØ×Ñ×úr*   c                 ón   €  V P                  4        R #   \         d    h  T P                  4         R # ; ir"   )Úhandle_expt_eventr$   r%   r&   s   &r   Ú
_exceptionr0   g   r)   r*   c                 ó¬  €  V\         P                  ,          '       d   V P                  4        V\         P                  ,          '       d   V P	                  4        V\         P
                  ,          '       d   V P                  4        V\         P                  \         P                  ,          \         P                  ,          ,          '       d   V P                  4        R # R #   \         dG   pTP                  \        9  d   T P                  4         R p?R # T P                  4         R p?R # R p?i\         d    h  T P                  4         R # ; ir"   )ÚselectÚPOLLINr#   ÚPOLLOUTr,   ÚPOLLPRIr/   ÚPOLLHUPÚPOLLERRÚPOLLNVALÚhandle_closeÚOSErrorÚerrnoÚ_DISCONNECTEDr%   r$   )r'   ÚflagsÚes   && r   Ú	readwriter?   o   sÜ   € ðØ”6—=‘=× Ô Ø×!Ñ!Ô#Ø”6—>‘>×!Ô!Ø×"Ñ"Ô$Ø”6—>‘>×!Ô!Ø×!Ñ!Ô#Ø”F—N‘N¤V§^¡^Õ3´f·o±oÕE×FÔFØ×ÑÖñ Gøäô Ø�7‰7œ-Ô'Ø×Ñ×Òà×Ñ×ÒûÜô ØðØ×Ñ×ús;   ‚C$ Ÿ,C$ Á,C$ Á9AC$ ÃC$ Ã$EÃ/%D0ÄD0Ä0EÄ=Ec                 ó(  € Vf   \         pV'       Ed   . p. p. p\        VP                  4       4       FŒ  w  rVVP                  4       pVP	                  4       pV'       d   VP                  V4       V'       d$   VP                  '       g   VP                  V4       V'       g   V'       g   K{  VP                  V4       KŽ  	  . Tu;8X  d   Tu;8X  d   V8X  d   M M\        P                  ! V 4       R # \        P                  ! W#W@4      w  r#pV F%  pVP                  V4      pVf   K  \        V4       K'  	  V F%  pVP                  V4      pVf   K  \        V4       K'  	  V F%  pVP                  V4      pVf   K  \        V4       K'  	  R # R # r"   )Ú
socket_mapÚlistÚitemsÚreadableÚwritableÚappendÚ	acceptingÚtimeÚsleepr2   Úgetr(   r-   r0   )	ÚtimeoutÚmapÚrÚwr>   Úfdr'   Úis_rÚis_ws	   &&       r   ÚpollrR   ƒ   s3  € Ø
‚{Üˆß
€sØˆ�B�˜B˜Ü˜CŸI™I›KÖ(‰GˆBØ—<‘<“>ˆDØ—<‘<“>ˆDßØ—‘˜”ç˜CŸMŸM˜MØ—‘˜”ß—t‘tØ—‘˜–ñ )ð �Ö�aÖ˜1×Ü�JŠJ�wÔÙä—-’-  aÓ1‰ˆˆaãˆBØ—'‘'˜"“+ˆCØŠ{ÙÜ�ŽIñ	 ó ˆBØ—'‘'˜"“+ˆCØŠ{ÙÜ�#ŽJñ	 ó ˆBØ—'‘'˜"“+ˆCØŠ{ÙÜ�sŽOó	 ñ= r    c                 ó‚  € Vf   \         pV e   \        V R,          4      p \        P                  ! 4       pV'       Ed   \	        VP                  4       4       F£  w  r4^ pVP                  4       '       d-   V\        P                  \        P                  ,          ,          pVP                  4       '       d*   VP                  '       g   V\        P                  ,          pV'       g   K’  VP                  W54       K¥  	  VP                  V 4      pV F'  w  r5VP                  V4      pVf   K  \        WE4       K)  	  R # R # )Niè  )rA   Úintr2   rR   rB   rC   rD   r3   r5   rE   rG   r4   ÚregisterrJ   r?   )rK   rL   ÚpollsterrO   r'   r=   rM   s   &&     r   Úpoll2rW   ª   sà   € à
‚{ÜˆØÒä�g˜d•lÓ#ˆÜ�{Š{‹}€Hß
€sÜ˜CŸI™I›KÖ(‰GˆBØˆEØ�|‰|�~Š~ØœŸ™¬¯©Õ7Õ7�à�|‰|�~Š~ c§m§m mØœŸ™Õ'�ß‰uØ×!Ñ! "Ö,ñ )ð �M‰M˜'Ó"ˆÛ‰IˆBØ—'‘'˜"“+ˆCØŠ{ÙÜ�cÖ!ó	 ñ r    c                 óè   € Vf   \         pV'       d   \        \        R4      '       d   \        pM\        pVf   V'       d   V! W4       K  R # V'       d   V^ 8”  d   V! W4       V^,
          pK"  R # R # )NrR   )rA   Úhasattrr2   rW   rR   )rK   Úuse_pollrL   ÚcountÚpoll_funs   &&&& r   Úloopr]   Æ   s]   € Ø
‚{Üˆç”GœF F×+Ò+Ü‰äˆà‚}ßÙ�WÖ"ñ ÷ �e˜a”iÙ�WÔ"Ø˜A•IŠEñ  ‰cr    c                   óB  a € ] tR t^Øt o RtRtRtRtRtRt	]
! R04      tR#R ltR tR$R ltR$R lt]P"                  ]P$                  3R ltR$R	 ltR
 tR tR tR tR tR tR tR tR tR tR tR%R lt R t!R t"R t#R t$R t%R t&R t'R t(R t)R t*R  t+R! t,R"t-V t.R# )&Ú
dispatcherFNÚwarningc                óz  € Vf   \         V n        MW n        R V n        V'       dB   VP                  R4       V P	                  W4       RV n         VP                  4       V n        R # R V n        R #   \         d@   pTP                  \        \        39   d   RT n         R p?R # T P                  T4       h R p?ii ; i)NFT)rA   Ú_mapÚ_filenoÚsetblockingÚ
set_socketÚ	connectedÚgetpeernameÚaddrr:   r;   r   r   Údel_channelÚsocket)ÚselfÚsockrL   r   s   &&& r   Ú__init__Údispatcher.__init__â   sŸ   € ØŠ;Ü"ˆD�IàŒIàˆŒçð ×Ñ˜UÔ#Ø�O‰O˜DÔ&Ø!ˆDŒNðØ ×,Ñ,Ó.�–	ð ˆDŽKøô ô 
Ø—9‘9¤¬6Ð 2Ô2ð &+�D—N’Nð
 ×$Ñ$ SÔ)Øûð
ús   ÁA0 Á0B:Á;"B5Â#B5Â5B:c                ó8  € V P                   P                  R ,           V P                   P                  ,           .pV P                  '       d%   V P                  '       d   VP                  R4       M#V P                  '       d   VP                  R4       V P                  e$    VP                  RV P                  ,          4       RRP                  V4      \        V 4      3,          #   \         d(    TP                  \        T P                  4      4        LTi ; i)Ú.Ú	listeningrf   z%s:%dz<%s at %#x>Ú )Ú	__class__r   r   rG   rh   rF   rf   Ú	TypeErrorÚreprÚjoinÚid)rk   Ústatuss   & r   Ú__repr__Údispatcher.__repr__  sÂ   € Ø—.‘.×+Ñ+¨CÕ/°·±×0KÑ0KÕKÐLˆØ�>�>ˆ>˜dŸiŸi˜iØ�M‰M˜+Õ&Ø�^�^ˆ^Ø�M‰M˜+Ô&Ø�9‰9Ò ð/Ø—‘˜g¨¯	©	Õ1Ô2ð  §¡¨Ó 0´"°T³(Ð;Õ;Ð;øô ô /Ø—‘œd 4§9¡9›oÖ.ð/ús   Â""C' Ã'/DÄDc                óB   € Vf   V P                   pWV P                  &   R # r"   )rb   rc   )rk   rL   s   &&r   Úadd_channelÚdispatcher.add_channel  s   € àŠ;Ø—)‘)ˆCØ ˆD�L‰LÓr    c                ó\   € V P                   pVf   V P                  pW!9   d   W R V n         R # r"   )rc   rb   )rk   rL   rO   s   && r   ri   Údispatcher.del_channel  s*   € Ø�\‰\ˆØŠ;Ø—)‘)ˆCØŒ9à�ØˆŽr    c                ó†   € W3V n         \        P                  ! W4      pVP                  R 4       V P                  V4       R# ©FN)Úfamily_and_typerj   rd   re   )rk   ÚfamilyÚtyperl   s   &&& r   Úcreate_socketÚdispatcher.create_socket  s4   € Ø%˜|ˆÔÜ�}Š}˜VÓ*ˆØ×Ñ˜ÔØ�‰˜Ör    c                ó^   € Wn         VP                  4       V n        V P                  V4       R # r"   )rj   Úfilenorc   r|   ©rk   rl   rL   s   &&&r   re   Údispatcher.set_socket$  s"   € ØŒØ—{‘{“}ˆŒØ×Ñ˜Ör    c                ó  €  V P                   P                  \         P                  \         P                  V P                   P	                  \         P                  \         P                  4      ^,          4       R#   \
         d     R# i ; i)é   N)rj   Ú
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚ
getsockoptr:   ©rk   s   &r   Úset_reuse_addrÚdispatcher.set_reuse_addr)  sj   € ð	Ø�K‰K×"Ñ"Ü×!Ñ!¤6×#6Ñ#6Ø—‘×&Ñ&¤v×'8Ñ'8Ü'-×':Ñ':ó<Ø>?õ@öøô
 ô 	Úð	ús   ‚A6A: Á:B	ÂB	c                ó   € R # ©Tr   r‘   s   &r   rD   Údispatcher.readable:  ó   € Ùr    c                ó   € R # r•   r   r‘   s   &r   rE   Údispatcher.writable=  r—   r    c                ó‚   € R V n         \        P                  R8X  d
   V^8”  d   ^pV P                  P	                  V4      # )TÚnt)rG   r   Únamerj   Úlisten)rk   Únums   &&r   r�   Údispatcher.listenD  s4   € ØˆŒÜ�7‰7�dŒ?˜s QœwØˆCØ�{‰{×!Ñ! #Ó&Ð&r    c                óD   € Wn         V P                  P                  V4      # r"   )rh   rj   Úbind)rk   rh   s   &&r   r¡   Údispatcher.bindJ  s   € ØŒ	Ø�{‰{×Ñ Ó%Ð%r    c                óH  € R V n         RV n        V P                  P                  V4      pV\        \
        \        39   g!   V\        8X  d   \        P                  R8X  d	   Wn
        R# V^ \        39   d   Wn
        V P                  4        R# \        V\        V,          4      h)FTr›   N)rf   Ú
connectingrj   Ú
connect_exr   r   r   r   r   rœ   rh   r	   Úhandle_connect_eventr:   r   )rk   Úaddressr   s   && r   ÚconnectÚdispatcher.connectN  sz   € ØˆŒØˆŒØ�k‰k×$Ñ$ WÓ-ˆØ”;¤¬+Ð6Ô6Ø”&Œ=œRŸW™W¨œ_ØŒIÙØ�1”g�,ÔØŒIØ×%Ñ%Ö'ä˜#œy¨�~Ó.Ð.r    c                óÐ   €  V P                   P                  4       w  rW3#   \         d     R # \         d-   pTP                  \
        \        \        39   d    R p?R # h R p?ii ; ir"   )rj   Úacceptrt   r:   r;   r   r   r   )rk   Úconnrh   Úwhys   &   r   r«   Údispatcher.accept\  s[   € ð
	ØŸ™×+Ñ+Ó-‰JˆDð �:Ðøô ô 	ÚÜô 	Ø�y‰yœ[¬,¼Ð?Ô?Ýàûð		ús$   ‚! ¡A%¯A%¸A%¹ A ÁA Á A%c                óò   €  V P                   P                  V4      pV#   \         dM   pTP                  \        8X  d    R p?^ # TP                  \
        9   d   T P                  4         R p?^ # h R p?ii ; ir"   )rj   Úsendr:   r;   r   r<   r9   )rk   ÚdataÚresultr­   s   &&  r   r°   Údispatcher.sendj  s]   € ð
	Ø—[‘[×%Ñ% dÓ+ˆFØˆMøÜô 	Ø�y‰yœKÔ'ÝØ—‘œmÔ+Ø×!Ñ!Ô#Ýàûð	ús    ‚ ŸA6ªA1Á%A1Á0A1Á1A6c                óð   €  V P                   P                  V4      pV'       g   V P                  4        R # V#   \         d2   pTP                  \
        9   d   T P                  4         Rp?R # h Rp?ii ; i©r    N)rj   Úrecvr9   r:   r;   r<   )rk   Úbuffer_sizer±   r­   s   &&  r   r¶   Údispatcher.recvw  sb   € ð	Ø—;‘;×#Ñ# KÓ0ˆDßð ×!Ñ!Ô#Ùà�øÜô 	à�y‰yœMÔ)Ø×!Ñ!Ô#Ýàûð	ús#   ‚"9 ¥9 ·9 ¹A5Á%A0Á/A0Á0A5c                ó  € R V n         R V n        R V n        V P                  4        V P                  e    V P                  P                  4        R# R#   \         d(   pTP                  \        \        39  d   h  Rp?R# Rp?ii ; ir�   )
rf   rG   r¤   ri   rj   Úcloser:   r;   r   r
   )rk   r­   s   & r   rº   Údispatcher.close‰  sr   € ØˆŒØˆŒØˆŒØ×ÑÔØ�;‰;Ò"ðØ—‘×!Ñ!Ö#ñ #øô ô Ø—9‘9¤X¬uÐ$5Ô5Øõ 6ûðús   µA ÁBÁB Â Bc                ód   € \         P                  P                  R \        V4      ,          4       R# )zlog: %s
N)ÚsysÚstderrr-   Ústr)rk   Úmessages   &&r   ÚlogÚdispatcher.log™  s   € Ü�
‰
×Ñ˜¤s¨7£|Õ3Ö4r    c                óN   € W P                   9  d   \        V: R V: 24       R# R# )z: N)Úignore_log_typesÚprint)rk   rÀ   r„   s   &&&r   Úlog_infoÚdispatcher.log_infoœ  s    € Ø×,Ñ,Ô,Ü›d¢GÐ,Ö-ñ -r    c                óú   € V P                   '       d   V P                  4        R # V P                  '       g5   V P                  '       d   V P	                  4        V P                  4        R # V P                  4        R # r"   )rG   Úhandle_acceptrf   r¤   r¦   Úhandle_readr‘   s   &r   r#   Údispatcher.handle_read_event   sO   € Ø�>�>ˆ>ð ×ÑÖ Ø——�Ø��ˆØ×)Ñ)Ô+Ø×ÑÖà×ÑÖr    c                óê   € V P                   P                  \         P                  \         P                  4      pV^ 8w  d   \	        V\        V4      4      hV P                  4        RV n        RV n        R# )é    TFN)	rj   r�   rŽ   ÚSO_ERRORr:   r   Úhandle_connectrf   r¤   ©rk   r   s   & r   r¦   Údispatcher.handle_connect_event¬  sT   € Ø�k‰k×$Ñ$¤V×%6Ñ%6¼¿¹ÓHˆØ�!Œ8Ü˜#œy¨›~Ó.Ð.Ø×ÑÔØˆŒØˆŽr    c                ó¶   € V P                   '       d   R # V P                  '       g#   V P                  '       d   V P                  4        V P	                  4        R # r"   )rG   rf   r¤   r¦   Úhandle_writer‘   s   &r   r,   Údispatcher.handle_write_event´  s:   € Ø�>�>ˆ>ñ à�~�~ˆ~Ø��ˆØ×)Ñ)Ô+Ø×ÑÖr    c                óÈ   € V P                   P                  \         P                  \         P                  4      pV^ 8w  d   V P	                  4        R# V P                  4        R# )rÍ   N)rj   r�   rŽ   rÎ   r9   Úhandle_exptrÐ   s   & r   r/   Údispatcher.handle_expt_event¿  sE   € ð �k‰k×$Ñ$¤V×%6Ñ%6¼¿¹ÓHˆØ�!Œ8ð ×ÑÖà×ÑÖr    c                óÐ   € \        4       w  rr4 \        V 4      pT P                  RT: RT: RT: RT: R2	R4       T P	                  4        R#    R \        T 4      ,          p LK; i)z)<__repr__(self) failed for object at %0x>z-uncaptured python exception, closing channel z (Ú:rr   Ú)ÚerrorN)Úcompact_tracebackru   rw   rÆ   r9   )rk   ÚnilÚtÚvÚtbinfoÚ	self_reprs   &     r   r%   Údispatcher.handle_errorÎ  sf   € Ü-Ó/Ñˆ�ð	OÜ˜T›
ˆIð 	�ŠãÛÛÛð	ð ô	ð 	×ÑÖøð	OØCÄbÈÃhÕNŠIús   �A ÁA%c                ó*   € V P                  R R4       R# )z!unhandled incoming priority eventr`   N©rÆ   r‘   s   &r   rÖ   Údispatcher.handle_exptâ  s   € Ø�‰Ð9¸9ÖEr    c                ó*   € V P                  R R4       R# )zunhandled read eventr`   Nrä   r‘   s   &r   rÊ   Údispatcher.handle_readå  s   € Ø�‰Ð,¨iÖ8r    c                ó*   € V P                  R R4       R# )zunhandled write eventr`   Nrä   r‘   s   &r   rÓ   Údispatcher.handle_writeè  s   € Ø�‰Ð-¨yÖ9r    c                ó*   € V P                  R R4       R# )zunhandled connect eventr`   Nrä   r‘   s   &r   rÏ   Údispatcher.handle_connectë  s   € Ø�‰Ð/°Ö;r    c                óR   € V P                  4       pVe   V P                  ! V!   R # R # r"   )r«   Úhandle_accepted)rk   Úpairs   & r   rÉ   Údispatcher.handle_acceptî  s&   € Ø�{‰{‹}ˆØÒØ× Ò  $Ô'ñ r    c                óJ   € VP                  4        V P                  R R4       R# )zunhandled accepted eventr`   N)rº   rÆ   )rk   rl   rh   s   &&&r   rí   Údispatcher.handle_acceptedó  s   € Ø�
‰
ŒØ�‰Ð0°)Ö<r    c                óJ   € V P                  R R4       V P                  4        R# )zunhandled close eventr`   N)rÆ   rº   r‘   s   &r   r9   Údispatcher.handle_close÷  s   € Ø�‰Ð-¨yÔ9Ø�
‰
Žr    )rc   rb   rG   rh   rf   r¤   r‚   rj   ©NNr"   )Úinfo)/r   r   r   r   Údebugrf   rG   r¤   Úclosingrh   Ú	frozensetrÄ   rm   ry   r|   ri   rj   ÚAF_INETÚSOCK_STREAMr…   re   r’   rD   rE   r�   r¡   r¨   r«   r°   r¶   rº   rÁ   rÆ   r#   r¦   r,   r/   r%   rÖ   rÊ   rÓ   rÏ   rÉ   rí   r9   r   Ú__classdictcell__©Ú__classdict__s   @r   r_   r_   Ø   sÞ   ø‡ € à€EØ€IØ€IØ€JØ€GØ€DÙ  ) Ó-Ðôò@<ô!ôð $*§>¡>¸×8JÑ8Jô ôò
	ò"òò'ò&ò/òòòò$
ò 5ô.ò
ò ò	òòò(Fò9ò:ò<ò(ò
=÷ð r    r_   c                   óB   a € ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
Údispatcher_with_sendi   Nc                ó@   € \         P                  WV4       R V n        R# rµ   )r_   rm   Ú
out_bufferr‰   s   &&&r   rm   Údispatcher_with_send.__init__  s   € Ü×Ñ˜D¨Ô,ØˆŽr    c                ó~   € ^ p\         P                  W P                  R,          4      pV P                  VR V n        R# )rÍ   :Ni   NN)r_   r°   r  )rk   Únum_sents   & r   Úinitiate_sendÚ"dispatcher_with_send.initiate_send  s0   € ØˆÜ—?‘? 4¯©¸Õ)@ÓAˆØŸ/™/¨(¨)Ð4ˆŽr    c                ó&   € V P                  4        R # r"   )r  r‘   s   &r   rÓ   Ú!dispatcher_with_send.handle_write  s   € Ø×ÑÖr    c                ó^   € V P                   '       * ;'       g    \        V P                  4      # r"   )rf   Úlenr  r‘   s   &r   rE   Údispatcher_with_send.writable  s    € Ø—N‘NÔ"×;Ð;¤s¨4¯?©?Ó';Ð;r    c                ó¼   € V P                   '       d"   V P                  R \        V4      ,          4       V P                  V,           V n        V P	                  4        R# )z
sending %sN)rö   rÆ   ru   r  r  )rk   r±   s   &&r   r°   Údispatcher_with_send.send  s<   € Ø�:�:ˆ:Ø�M‰M˜,¬¨d«Õ3Ô4ØŸ/™/¨DÕ0ˆŒØ×ÑÖr    )r  rô   )r   r   r   r   rm   r  rÓ   rE   r°   r   rû   rü   s   @r   rÿ   rÿ      s#   ø‡ € ôò5ò
ò<÷ð r    rÿ   c                  óô  € \         P                  ! 4       p V P                  pV'       g   \        R 4      h. pV'       dr   VP	                  VP
                  P                  P                  VP
                  P                  P                  \        VP                  4      34       VP                  pKy  ?VR,          w  r4pRP                  V Uu. uF  pRV,          NK  	  up4      pW4V3\        V 4      W3# u upi )ztraceback does not existrr   z
[%s|%s|%s]éÿÿÿÿ)r½   Ú	exceptionÚ__traceback__ÚAssertionErrorrF   Útb_frameÚf_codeÚco_filenameÚco_namer¿   Ú	tb_linenoÚtb_nextrv   r„   )ÚexcÚtbrà   ÚfileÚfunctionÚlineÚxrõ   s           r   rÜ   rÜ     sÐ   € Ü
�-Š-‹/€CØ	×	Ñ	€BßÜÐ7Ó8Ð8Ø€Fß
Ø�‰Ø�K‰K×Ñ×*Ñ*Ø�K‰K×Ñ×&Ñ&Ü�—‘Óðô 	ð
 �Z‰ZŠð 	à! "�:Ñ€D�DØ�8‰8©vÓ6©v¨!�\ A×%Ð%©vÑ6Ó7€DØ˜DÐ!¤4¨£9¨cÐ7Ð7ùò 7s   ÃC5c                 óD  € V f   \         p \        V P                  4       4       F  p VP                  4        K  	  V P                  4        R #   \         d0   pTP
                  \        8X  d    R p?KP  T'       g   h  R p?K_  R p?i\         d    h  T'       g   h  K{  ; ir"   )	rA   rB   Úvaluesrº   r:   r;   r
   r$   Úclear)rL   Ú
ignore_allr  s   && r   Ú	close_allr#  0  s|   € Ø
‚{ÜˆÜ�#—*‘*“,Öˆð	Ø�G‰GŽIñ  ð ‡I�I†Køô ô 	Ø�w‰wœ%ÔÝßØõ  ûä#ô 	Øð	ßØò ús/   ¨AÁBÁBÁ4BÁ<BÂBÂ
BÂBÚposixc                   óV   a € ] tR tRt o R tR tR tR tRR lt]t	]t
R tR	 tR
tV tR# )Úfile_wrapperiP  c                ó<   € \         P                  ! V4      V n        R # r"   )r   ÚduprO   ©rk   rO   s   &&r   rm   Úfile_wrapper.__init__U  s   € Ü—f’f˜R“jˆDŽGr    c                ó�   € V P                   ^ 8¼  d%   \        P                  ! RV ,          \        V R7       V P	                  4        R# )rÍ   zunclosed file %r)ÚsourceN)rO   ÚwarningsÚwarnÚResourceWarningrº   r‘   s   &r   Ú__del__Úfile_wrapper.__del__X  s/   € Ø�w‰w˜!Œ|Ü—’Ð0°4Õ7¼Ø%)õ+à�J‰JŽLr    c                óF   € \         P                  ! V P                  .VO5!  # r"   )r   r(   rO   ©rk   Úargss   &*r   r¶   Úfile_wrapper.recv^  s   € Ü—7’7˜4Ÿ7™7Ð* TÓ*Ð*r    c                óF   € \         P                  ! V P                  .VO5!  # r"   )r   r-   rO   r3  s   &*r   r°   Úfile_wrapper.senda  s   € Ü—8’8˜DŸG™GÐ+ dÓ+Ð+r    Nc                ó€   € V\         P                  8X  d    V\         P                  8X  d   V'       g   ^ # \        R4      h)rÍ   z-Only asyncore specific behaviour implemented.)rj   rŽ   rÎ   ÚNotImplementedError)rk   ÚlevelÚoptnameÚbuflens   &&&&r   r�   Úfile_wrapper.getsockoptd  s4   € Øœ×*Ñ*Ô*Øœ6Ÿ?™?Ô*ßÙÜ%ð '5ó 6ð 6r    c                ó~   € V P                   ^ 8  d   R# V P                   pRV n         \        P                  ! V4       R# )rÍ   Nr  )rO   r   rº   r)  s   & r   rº   Úfile_wrapper.closeo  s+   € Ø�w‰w˜Œ{ÙØ—‘ˆBØˆDŒGÜ�HŠH�RŽLr    c                ó   € V P                   # r"   ©rO   r‘   s   &r   rˆ   Úfile_wrapper.filenov  s   € Ø—7‘7ˆNr    rA  r"   )r   r   r   r   rm   r0  r¶   r°   r�   r(   r-   rº   rˆ   r   rû   rü   s   @r   r&  r&  P  s9   ø‡ € ò
	!ò	ò	+ò	,ô	6ð ˆØˆò	÷	ð 	r    r&  c                   ó0   a € ] tR tRt o RR ltR tRtV tR# )Úfile_dispatcheriy  Nc                óÖ   € \         P                  V R V4       RV n         VP                  4       pV P                  V4       \        P                  ! VR4       R #   \         d     L7i ; i)NTF)r_   rm   rf   rˆ   ÚAttributeErrorÚset_filer   Úset_blocking)rk   rO   rL   s   &&&r   rm   Úfile_dispatcher.__init__{  s[   € Ü×Ñ  d¨CÔ0Ø!ˆDŒNðØ—Y‘Y“[�ð �M‰M˜"Ôä�OŠO˜B Ö&øô	 "ô Ùðús    A ÁA(Á'A(c                ó„   € \        V4      V n        V P                  P                  4       V n        V P	                  4        R # r"   )r&  rj   rˆ   rc   r|   r)  s   &&r   rG  Úfile_dispatcher.set_file†  s.   € Ü& rÓ*ˆDŒKØŸ;™;×-Ñ-Ó/ˆDŒLØ×ÑÖr    )rc   rf   rj   r"   )r   r   r   r   rm   rG  r   rû   rü   s   @r   rD  rD  y  s   ø‡ € ô		'÷	ð 	r    rD  )g        N)g      >@FNN)NF).Ú__doc__r2   rj   r½   rH   r-  r   r;   r   r   r   r   r   r   r   r	   r
   r   r   r   r   rø   r<   rA   r   r   Ú	Exceptionr   ÚKeyboardInterruptÚ
SystemExitr$   r(   r-   r0   r?   rR   rW   Úpoll3r]   r_   rÿ   rÜ   r#  rœ   r&  rD  r   r    r   Ú<module>rQ     s
  ðñBó* Û Û 
Û Û ã 	÷÷ ÷ õ ñ
 ˜: x°¸LÈ%Ø ð"ó #€ðÙò'ô	ˆiô 	ð  Ð!2°JÐ?Ð òòòòô(%ôN"ð4 	€ô÷$añ aôP	˜:ô ò68ô*ð> ‡7�7ˆgÔ÷'ñ 'ôR˜*ö ñU øðQ ô Ø‚Jðús   ÁC Ã	CÃC