+
    öÙ†jÀŠ  ã                   óR  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt R t]
P6                  R8X  d	   ]! R4      hR tR t ! R R]P>                  4      t  ! R R]PB                  4      t" ! R R]PF                  ]PH                  4      t% ! R R]PL                  4      t' ! R R4      t( ! R R4      t)R t* ! R R]PV                  4      t,] t-],t.]-t/R# )!z2Selector event loop for Unix with signal handling.N)Úbase_events)Úbase_subprocess)Ú	constants)Ú
coroutines)Úevents)Ú
exceptions)Úfutures)Úselector_events)Útasks)Ú
transports)ÚloggerÚwin32z+Signals are not really supported on Windowsc                ó   € R# )zDummy signal handler.N© )ÚsignumÚframes   &&Ú*/usr/lib/python3.14/asyncio/unix_events.pyÚ_sighandler_noopr   '   s   € áó    c                 óV   €  \         P                  ! V 4      #   \         d    T u # i ; i©N)ÚosÚwaitstatus_to_exitcodeÚ
ValueError)Ústatuss   &r   r   r   ,   s.   € ðÜ×(Ò(¨Ó0Ð0øÜô ð Šð	ús   ‚ ˜(§(c                   óø   a a€ ] tR t^6t oRtRV 3R lltV 3R ltR tR tR t	R t
R	 tR R
 ltR R ltRR ltR tRRRRRRRRRRR/R lltRRRR^dRRRRRRRRRR/R lltR tR tR tR tV 3R ltRtVtV ;t# )!Ú_UnixSelectorEventLoopz\Unix event loop.

Adds signal handling and UNIX Domain Socket support to SelectorEventLoop.
Nc                ó¢   <€ \         SV `  V4       / V n        / V n        \	        4       '       d   \        4       V n        R # \        4       V n        R # r   )ÚsuperÚ__init__Ú_signal_handlersÚ_unix_server_socketsÚcan_use_pidfdÚ_PidfdChildWatcherÚ_watcherÚ_ThreadedChildWatcher)ÚselfÚselectorÚ	__class__s   &&€r   r   Ú_UnixSelectorEventLoop.__init__<   s;   ø€ Ü‰Ñ˜Ô"Ø "ˆÔØ$&ˆÔ!Ü�?Š?Ü.Ó0ˆDŽMä1Ó3ˆDŽMr   c                óX  <€ \         SV `  4        \        P                  ! 4       '       g0   \	        V P
                  4       F  pV P                  V4       K  	  R# V P
                  '       d?   \        P                  ! R V : R2\        V R7       V P
                  P                  4        R# R# )zClosing the loop z@ on interpreter shutdown stage, skipping signal handlers removal©ÚsourceN)r   ÚcloseÚsysÚis_finalizingÚlistr    Úremove_signal_handlerÚwarningsÚwarnÚResourceWarningÚclear)r&   Úsigr(   s   & €r   r-   Ú_UnixSelectorEventLoop.closeE   sŒ   ø€ Ü‰‰ŒÜ× Ò ×"Ò"Ü˜D×1Ñ1Ö2�Ø×*Ñ*¨3Ö/ó 3ð ×$×$Ð$Ü—’Ð 1°$±ð :Hð Iô .Ø%)õ	+ð
 ×%Ñ%×+Ñ+Ö-ñ %r   c                óN   € V F  pV'       g   K  V P                  V4       K   	  R # r   )Ú_handle_signal)r&   Údatar   s   && r   Ú_process_self_dataÚ)_UnixSelectorEventLoop._process_self_dataS   s    € ÛˆFßáØ×Ñ Ö'ó	 r   c                ó”  € \         P                  ! V4      '       g   \         P                  ! V4      '       d   \        R4      hV P	                  V4       V P                  4         \        P                  ! V P                  P                  4       4       \        P                  ! Y#T R4      pYPP                   T&    \        P                  ! T\"        4       \        P$                  ! TR4       R#   \        \        3 d   p\        \        T4      4      hRp?ii ; i  \         d¡   pT P                   T T P                   '       gN    \        P                  ! R4       M5  \        \        3 d"   p\&        P(                  ! RT4        Rp?MRp?ii ; iTP*                  \*        P,                  8X  d   \        RT R24      hh Rp?ii ; i)z«Add a handler for a signal.  UNIX only.

Raise ValueError if the signal number is invalid or uncatchable.
Raise RuntimeError if there is a problem setting up the handler.
z3coroutines cannot be used with add_signal_handler()NFúset_wakeup_fd(-1) failed: %súsig ú cannot be caughtéÿÿÿÿ)r   ÚiscoroutineÚ_iscoroutinefunctionÚ	TypeErrorÚ_check_signalÚ_check_closedÚsignalÚset_wakeup_fdÚ_csockÚfilenor   ÚOSErrorÚRuntimeErrorÚstrr   ÚHandler    r   Úsiginterruptr   ÚinfoÚerrnoÚEINVAL)r&   r6   ÚcallbackÚargsÚexcÚhandleÚnexcs   &&&*   r   Úadd_signal_handlerÚ)_UnixSelectorEventLoop.add_signal_handlerZ   sv  € ô ×"Ò" 8×,Ò,Ü×/Ò/°×9Ò9Üð 8ó 9ð 9à×Ñ˜3ÔØ×ÑÔð	)ô
 × Ò  §¡×!3Ñ!3Ó!5Ô6ô —’˜x¨t°TÓ:ˆØ%+×Ñ˜cÑ"ð	ô �MŠM˜#Ô/Ô0ô ×Ò  UÖ+øô œGÐ$ô 	)Üœs 3›xÓ(Ð(ûð	)ûô ô 	Ø×%Ñ% cÐ*Ø×(×(Ð(ðFÜ×(Ò(¨Õ,øÜ"¤GÐ,ô FÜ—K’KÐ >À×EÑEûðFúð �y‰yœEŸL™LÔ(Ü" T¨#¨Ð.?Ð#@ÓAÐAàûð	úsZ   Á&.C/ Â;2D Ã/DÄ DÄDÄGÄ'GÅEÅGÅFÅ/FÆGÆFÆ2GÇGc                ó´   € V P                   P                  V4      pVf   R# VP                  '       d   V P                  V4       R# V P	                  V4       R# )z2Internal helper that is the actual signal handler.N)r    ÚgetÚ
_cancelledr1   Ú_add_callback_signalsafe)r&   r6   rV   s   && r   r9   Ú%_UnixSelectorEventLoop._handle_signal‡   sH   € à×&Ñ&×*Ñ*¨3Ó/ˆØŠ>ÙØ××ÐØ×&Ñ& sÖ+à×)Ñ)¨&Ö1r   c                óH  € V P                  V4        V P                  V T\        P                  8X  d   \        P
                  pM\        P                  p \        P                  ! Y4       T P                  '       g    \        P                  ! R4       R# R#   \         d     R# i ; i  \         d5   pTP                  \        P                  8X  d   \        RT R24      hh Rp?ii ; i  \        \        3 d#   p\        P                  ! RT4        Rp?R# Rp?ii ; i)zgRemove a handler for a signal.  UNIX only.

Return True if a signal handler was removed, False if not.
Fr?   r@   Nr>   TrA   )rE   r    ÚKeyErrorrG   ÚSIGINTÚdefault_int_handlerÚSIG_DFLrK   rQ   rR   rL   rH   r   r   rP   )r&   r6   ÚhandlerrU   s   &&  r   r1   Ú,_UnixSelectorEventLoop.remove_signal_handler‘   sù   € ð
 	×Ñ˜3Ôð	Ø×%Ñ% cÐ*ð ”&—-‘-ÔÜ×0Ñ0‰Gä—n‘nˆGð	Ü�MŠM˜#Ô'ð ×$×$Ð$ðAÜ×$Ò$ RÔ(ó øô- ô 	Úð	ûô ô 	Ø�y‰yœEŸL™LÔ(Ü" T¨#¨Ð.?Ð#@ÓAÐAàûð		ûô ¤Ð(ô AÜ—’Ð:¸C×@Ð@áûðAúsA   “B ÁB, Â C. ÂB)Â(B)Â,C+Â7/C&Ã&C+Ã.D!Ã?DÄD!c                ó    € \        V\        4      '       g   \        RV: 24      hV\        P                  ! 4       9  d   \        RV 24      hR# )z©Internal helper to validate a signal.

Raise ValueError if the signal number is invalid or uncatchable.
Raise RuntimeError if there is a problem setting up the handler.
zsig must be an int, not zinvalid signal number N)Ú
isinstanceÚintrD   rG   Úvalid_signalsr   )r&   r6   s   &&r   rE   Ú$_UnixSelectorEventLoop._check_signal±   sM   € ô ˜#œs×#Ò#ÜÐ6°s±gÐ>Ó?Ð?à”f×*Ò*Ó,Ô,ÜÐ5°c°UÐ;Ó<Ð<ñ -r   c                ó   € \        WW#V4      # r   )Ú_UnixReadPipeTransport©r&   ÚpipeÚprotocolÚwaiterÚextras   &&&&&r   Ú_make_read_pipe_transportÚ0_UnixSelectorEventLoop._make_read_pipe_transport½   s   € ä% d°(ÀEÓJÐJr   c                ó   € \        WW#V4      # r   )Ú_UnixWritePipeTransportrm   s   &&&&&r   Ú_make_write_pipe_transportÚ1_UnixSelectorEventLoop._make_write_pipe_transportÁ   s   € ä& t°8ÀUÓKÐKr   c	           
   ‹  óp  "  € V P                   p
V P                  4       p\        WW#WEWg3R VRV/V	B pV
P                  VP	                  4       V P
                  V4        VG Rj  x€L
  V#  L  \        \        3 d    h \         d,    TP                  4        TP                  4       G Rj  x€L 
  h i ; i5i)rp   rq   N)r$   Úcreate_futureÚ_UnixSubprocessTransportÚadd_child_handlerÚget_pidÚ_child_watcher_callbackÚ
SystemExitÚKeyboardInterruptÚBaseExceptionr-   Ú_wait)r&   ro   rT   ÚshellÚstdinÚstdoutÚstderrÚbufsizerq   ÚkwargsÚwatcherrp   Útransps   &&&&&&&&&,   r   Ú_make_subprocess_transportÚ1_UnixSelectorEventLoop._make_subprocess_transportÅ   sÂ   é € ð —-‘-ˆØ×#Ñ#Ó%ˆÜ)¨$¸$Ø(-°vñ2à/5ð2à=Bð2ð +1ñ2ˆð 	×!Ñ! &§.¡.Ó"2Ø $× <Ñ <¸fô	Fð	Ø�LˆLð ˆñ øÜÔ-Ð.ô 	ØÜô 	Ø�L‰LŒNØ—,‘,“.× Ñ Øð	üsB   ‚AB6ÁA, Á#A*Á$A, Á(B6Á*A, Á,B3Â$B3Â+B.Â,B3Â3B6c                ó>   € V P                  VP                  V4       R # r   )Úcall_soon_threadsafeÚ_process_exited)r&   ÚpidÚ
returncoder‰   s   &&&&r   r}   Ú._UnixSelectorEventLoop._child_watcher_callbackÛ   s   € Ø×!Ñ! &×"8Ñ"8¸*ÖEr   ÚsslÚsockÚserver_hostnameÚssl_handshake_timeoutÚssl_shutdown_timeoutc          	   ƒ  ó0  "  € Ve   \        V\        4      '       g   Q hV'       d   Vf   \        R4      hM-Ve   \        R4      hVe   \        R4      hVe   \        R4      hVe†   Ve   \        R4      h\        P                  ! V4      p\
        P
                  ! \
        P                  \
        P                  ^ 4      p VP                  R4       V P                  WB4      G R j  x€L
  MmVf   \        R4      hVP                  \
        P                  8w  g    VP                  \
        P                  8w  d   \        RV: 24      hVP                  R4       V P                  WAW5VVR	7      G R j  x€L
 w  r‰W‰3#  L”   TP                  4        h ; i L!5i)
Nz/you have to pass server_hostname when using sslz+server_hostname is only meaningful with sslú1ssl_handshake_timeout is only meaningful with sslú0ssl_shutdown_timeout is only meaningful with sslú3path and sock can not be specified at the same timeFzno path and sock were specifiedú.A UNIX Domain Stream Socket was expected, got )r•   r–   )rg   rM   r   r   ÚfspathÚsocketÚAF_UNIXÚSOCK_STREAMÚsetblockingÚsock_connectr-   ÚfamilyÚtypeÚ_create_connection_transport)
r&   Úprotocol_factoryÚpathr’   r“   r”   r•   r–   Ú	transportro   s
   &&&$$$$$  r   Úcreate_unix_connectionÚ-_UnixSelectorEventLoop.create_unix_connectionÞ   s¢  é € ð Ò&¬*°_Äc×*JÒ*JÐJÐJßØÒ&Ü ØEóGð Gð 'ð Ò*Ü Ð!NÓOÐOØ$Ò0Ü ØGóIð Ià#Ò/Ü ØFóHð Hð ÒØÒÜ ØIóKð Kô —9’9˜T“?ˆDÜ—=’=¤§¡´×1CÑ1CÀQÓGˆDðØ× Ñ  Ô'Ø×'Ñ'¨Ó3×3Ñ3ð Š|Ü Ð!BÓCÐCØ—‘œvŸ~™~Ô-Ø—I‘I¤×!3Ñ!3Ô3Ü ØDÀTÁHÐMóOð Oà×Ñ˜UÔ#à$(×$EÑ$EØ CØ"7Ø!5ð %Fó %7÷ 7Ñˆ	ð Ð"Ð"ñ% 4øðØ—
‘
”Øúñ7ùsB   ‚$F§BFÃ%E> Ã'E<Ã(E> Ã,BFÅ2FÅ3	FÅ<E> Å>FÆFÚbacklogÚstart_servingTÚcleanup_socketc          	   ƒ  óú  "  € \        V\        4      '       d   \        R 4      hVe   V'       g   \        R4      hVe   V'       g   \        R4      hVeË   Ve   \        R4      h\        P
                  ! V4      p\        P                  ! \        P                  \        P                  4      pV^ ,          R9  dR    \        P                  ! \        P                  ! V4      P                  4      '       d   \        P                  ! V4        VP#                  V4       M\Vf   \        R4      hVP*                  \        P                  8w  g    VP,                  \        P                  8w  d   \        R	V: 24      hV	'       dM   VP/                  4       pV^ ,          R9  d/    \        P                  ! V4      P0                  V P2                  V&   VP5                  R
4       \6        P8                  ! W.VWTVV4      pV'       d/   VP;                  4        \<        P>                  ! ^ 4      G Rj  x€L
  V#   \         d     EL5\         d#   p
\        P                   ! RY*4        Rp
?
EL\Rp
?
ii ; i  \         dX   pTP%                  4        TP&                  \&        P(                  8X  d#   RT: R2p\        \&        P(                  T4      Rhh Rp?i TP%                  4        h ; i  \         d     EL%i ; i LË5i)z*ssl argument must be an SSLContext or NoneNr˜   r™   rš   z2Unable to check or remove stale UNIX socket %r: %rzAddress z is already in usez-path was not specified, and no sock specifiedr›   F)é    Ú ) rg   ÚboolrD   r   r   rœ   r�   rž   rŸ   ÚstatÚS_ISSOCKÚst_modeÚremoveÚFileNotFoundErrorrK   r   ÚerrorÚbindr-   rQ   Ú
EADDRINUSEr¢   r£   ÚgetsocknameÚst_inor!   r    r   ÚServerÚ_start_servingr
   Úsleep)r&   r¥   r¦   r“   rª   r’   r•   r–   r«   r¬   ÚerrrU   ÚmsgÚservers   &&&$$$$$$$    r   Úcreate_unix_serverÚ)_UnixSelectorEventLoop.create_unix_server  s‹  é € ô �cœ4× Ò ÜÐHÓIÐIà Ò,·SÜØCóEð Eð  Ò+·CÜØBóDð Dð ÒØÒÜ ØIóKð Kô —9’9˜T“?ˆDÜ—=’=¤§¡´×1CÑ1CÓDˆDð �A�w˜kÔ)ð6Ü—}’}¤R§W¢W¨T£]×%:Ñ%:×;Ò;ÜŸ	š	 $œðØ—	‘	˜$•ð Š|Ü ØCóEð Eð —‘œvŸ~™~Ô-Ø—I‘I¤×!3Ñ!3Ô3Ü ØDÀTÁHÐMóOð O÷ Ø×#Ñ#Ó%ˆDà�A�w˜kÔ)ðÜ68·g²g¸d³m×6JÑ6J�D×-Ñ-¨dÑ3ð 	×Ñ˜ÔÜ×#Ò# D¨&Ð2BØ$'Ð2GØ$8ó:ˆ÷ Ø×!Ñ!Ô#ô —+’+˜a“.× Ð àˆøôe )ô ÚÜô 6ä—L’Lð "*Ø+/÷6ò 6ûð6ûô ô Ø—
‘
”Ø—9‘9¤× 0Ñ 0Ô0ð % T¡HÐ,>Ð?�CÜ!¤%×"2Ñ"2°CÓ8¸dÐBàûðØ—
‘
”Øûô" )ô Úðúñ !ùsª   ‚-K;°K;ÁA5K;Â=9H4 Ã7H4 ÄI1 ÄA$K;ÆK;Æ#-K' ÇAK;È-K9È.K;È4I.È?K;ÉI.ÉI.ÉI)É#K;É)I.É.K;É1K$É<AKËK$Ë$K;Ë'K6Ë2K;Ë5K6Ë6K;c           
   ƒ  ó&  "  €  \         P                    TP                  4       p \         P                  ! T4      P                  pT'       d   TMTpT'       g   ^ # T P                  4       p	T P                  T	RYY4T^ 4       T	G Rj  x€L
 #   \         d    \        P                  ! R 4      hi ; i  \        \        P                  3 d   p\        P                  ! R4      hRp?ii ; i  \         d    \        P                  ! R4      hi ; i L‡5i)zos.sendfile() is not availableznot a regular fileN)r   ÚsendfileÚAttributeErrorr   ÚSendfileNotAvailableErrorrJ   ÚioÚUnsupportedOperationÚfstatÚst_sizerK   ry   Ú_sock_sendfile_native_impl)
r&   r“   ÚfileÚoffsetÚcountrJ   r¾   ÚfsizeÚ	blocksizeÚfuts
   &&&&&     r   Ú_sock_sendfile_nativeÚ,_UnixSelectorEventLoop._sock_sendfile_nativeb  sÿ   é € ð	2Ü�KŠKð	MØ—[‘[“]ˆFð	MÜ—H’H˜VÓ$×,Ñ,ˆE÷ #‘E¨ˆ	ßÙà× Ñ Ó"ˆØ×'Ñ'¨¨T°4Ø(.°yÀ!ô	Eà�yÐøô% ô 	2Ü×6Ò6Ø0ó2ð 2ð	2ûô
 ¤× 7Ñ 7Ð8ô 	MÜ×6Ò6Ð7KÓLÐLûð	Mûô ô 	MÜ×6Ò6Ð7KÓLÐLð	Múñ ùsb   ‚D„B •B1 ¦ C* ÁDÁDÁ-DÂDÂDÂ"B.Â.DÂ1C'ÃC"Ã"C'Ã'DÃ*"DÄDc	                óR  € VP                  4       p	Ve   V P                  V4       VP                  4       '       d   V P                  WEV4       R # V'       d5   Wh,
          pV^ 8:  d&   V P                  WEV4       VP	                  V4       R # \        V\        P                  ^,          ^,           4      p \        P                  ! W”WW4      p
V
^ 8X  d&   V P                  WEV4       VP	                  V4       R # WZ,          pWŠ,          pVf   V P                  W4       V P                  W�P                  VW“VWVWx4
       R #   \        \        3 d:    Tf   T P                  Y4       T P                  Y�P                  TY“TYVYx4
        R # \         dÍ   pTeU   TP                   \         P"                  8X  d6   \%        T4      \&        Jd#   \'        R\         P"                  4      pY¼n        TpT^ 8X  d@   \*        P,                  ! R4      pT P                  YET4       TP/                  T4        R p?R # T P                  YET4       TP/                  T4        R p?R # R p?i\0        \2        3 d    h \4         d/   pT P                  YET4       TP/                  T4        R p?R # R p?ii ; i)Nzsocket is not connectedzos.sendfile call failed)rJ   Úremove_writerÚ	cancelledÚ_sock_sendfile_update_fileposÚ
set_resultÚminr.   Úmaxsizer   rÄ   Ú_sock_add_cancellation_callbackÚ
add_writerrË   ÚBlockingIOErrorÚInterruptedErrorrK   rQ   ÚENOTCONNr£   ÚConnectionErrorÚ	__cause__r   rÆ   Úset_exceptionr~   r   r€   )r&   rÑ   Úregistered_fdr“   rJ   rÍ   rÎ   rÐ   Ú
total_sentÚfdÚsentrU   Únew_excr¾   s   &&&&&&&&&     r   rË   Ú1_UnixSelectorEventLoop._sock_sendfile_native_imply  sA  € à�[‰[‹]ˆØÒ$ð
 ×Ñ˜}Ô-Ø�=‰=�?Š?Ø×.Ñ.¨v¸zÔJÙßØÕ*ˆIØ˜AŒ~Ø×2Ñ2°6À:ÔNØ—‘˜zÔ*Ùô ˜	¤3§;¡;°¥>°AÕ#5Ó6ˆ	ð1	FÜ—;’;˜r¨6Ó=ˆDðJ �qŒyà×2Ñ2°6À:ÔNØ—‘˜zÖ*à•�ØÕ"�
Ø Ò(Ø×8Ñ8¸ÔCØ—‘ ×$CÑ$CÀSØ "¨&Ø &¨yöFøô[  Ô!1Ð2ô 	BØÒ$Ø×4Ñ4°SÔ?Ø�O‰O˜B× ?Ñ ?ÀØ fØ"¨9÷Bô ô 	'ØÒ)Ø—I‘I¤§¡Ô/Ü˜“I¤_Ó4ô
 *Ø-¬u¯~©~ó?�à$'Ô!Ø�Ø˜QŒô
 !×:Ò:Ø-ó/�à×2Ñ2°6À:ÔNØ×!Ñ! #×&Ò&à×2Ñ2°6À:ÔNØ×!Ñ! #×&Ò&ûÜÔ-Ð.ô 	ØÜô 	#Ø×.Ñ.¨v¸zÔJØ×Ñ˜c×"Ò"ûð	#úsD   Â5D? Ä?AJ&ÆJ&ÆJ&ÆBIÈ0#IÉJ&É,
J&É7J&É8#J!Ê!J&c                ób   € V^ 8”  d(   \         P                  ! W\         P                  4       R# R# ©r®   N)r   ÚlseekÚSEEK_SET)r&   rJ   rÍ   rä   s   &&&&r   r×   Ú4_UnixSelectorEventLoop._sock_sendfile_update_fileposÂ  s    € Ø˜Œ>Ü�HŠH�V¤R§[¡[Ö1ñ r   c                ó:   a a€ V V3R  lpVP                  V4       R# )c                 óŒ   <€ V P                  4       '       d-   SP                  4       pVR8w  d   SP                  V4       R# R# R# )é   NrA   )rÖ   rJ   rÕ   )rÑ   rå   r&   r“   s   & €€r   ÚcbÚB_UnixSelectorEventLoop._sock_add_cancellation_callback.<locals>.cbÇ  s8   ø€ Ø�}‰}�ŠØ—[‘[“]�Ø˜”8Ø×&Ñ& rÖ*ñ ñ r   N)Úadd_done_callback)r&   rÑ   r“   rñ   s   f&f r   rÛ   Ú6_UnixSelectorEventLoop._sock_add_cancellation_callbackÆ  s   ù€ ö	+ð
 	×Ñ˜bÖ!r   c                ó®  <€ WP                   9   d   VP                  4       pMR p\        SV `  V4       Vea   V P                   V,          pV P                   V  \        P
                  ! V4      P                  V8X  d   \        P                  ! V4       R # R # R #   \         d     R # \         d#   p\        P                  ! RY$4        R p?R # R p?ii ; i)Nz/Unable to clean up listening UNIX socket %r: %r)r!   r¹   r   Ú_stop_servingr   r±   rº   Úunlinkrµ   rK   r   r¶   )r&   r“   r¦   Úprev_inor¾   r(   s   &&   €r   rö   Ú$_UnixSelectorEventLoop._stop_servingÎ  s¹   ø€ à×,Ñ,Ô,Ø×#Ñ#Ó%‰DàˆDä‰Ñ˜dÔ#àÒØ×0Ñ0°Õ6ˆHØ×)Ñ)¨$Ð/ð2Ü—7’7˜4“=×'Ñ'¨8Ô3Ü—I’I˜d–Oñ 4ñ	 øô %ô ÚÜô 2Ü—’ð &Ø'+÷2ò 2ûð2ús$   Á;B ÂCÂ(CÂ1CÂ2CÃC)r    r!   r$   r   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r-   r;   rX   r9   r1   rE   rr   rv   rŠ   r}   r¨   rÁ   rÒ   rË   r×   rÛ   rö   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r(   Ú__classdict__s   @@r   r   r   6   sé   ù‡ € ñ÷
4õ.ò(ò+òZ2òò@
=ôKôLôò,Fñ0#àð0#àð0#ð !ð0#ð #'ð	0#ð
 "&õ0#ñdPàðPà"ðPà(,ðPð #'ðPð "&ð	Pð
 ðPð
 04õPòdò.GFòR2ò"÷2õ 2r   r   c                   ó¬   a a€ ] tR tRt oRtRV 3R lltR tR tR tR t	R t
R tR	 tR
 tR tR t]P"                  3R ltRR ltR tR tRtVtV ;t# )rl   iä  c                ób  <€ \         SV `  V4       W P                  R &   Wn        W n        VP                  4       V n        W0n        RV n        RV n	        \        P                  ! V P                  4      P                  p\        P                  ! V4      '       gY   \        P                  ! V4      '       g=   \        P                   ! V4      '       g!   RV n        RV n        RV n        \#        R4      h\        P$                  ! V P                  R4       V P                  P'                  V P                  P(                  V 4       V P                  P'                  V P*                  V P                  V P,                  4       Ve.   V P                  P'                  \.        P0                  VR4       R# R# )rn   FNz)Pipe transport is for pipes/sockets only.)r   r   Ú_extraÚ_loopÚ_piperJ   Ú_filenoÚ	_protocolÚ_closingÚ_pausedr   rÉ   r³   r±   ÚS_ISFIFOr²   ÚS_ISCHRr   Úset_blockingÚ	call_soonÚconnection_madeÚ_add_readerÚ_read_readyr   Ú_set_result_unless_cancelled)r&   Úlooprn   ro   rp   rq   Úmoder(   s   &&&&&& €r   r   Ú_UnixReadPipeTransport.__init__è  s/  ø€ Ü‰Ñ˜ÔØ"�‰�FÑØŒ
ØŒ
Ø—{‘{“}ˆŒØ!ŒØˆŒØˆŒä�xŠx˜Ÿ™Ó%×-Ñ-ˆÜ—’˜d×#Ò#Ü—’˜d×#Ò#Ü—’˜T×"Ò"ØˆDŒJØˆDŒLØ!ˆDŒNÜÐHÓIÐIä
�Š˜Ÿ™ eÔ,à�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBà�
‰
×Ñ˜T×-Ñ-Ø!Ÿ\™\¨4×+;Ñ+;ô	=àÒà�J‰J× Ñ ¤×!EÑ!EØ!'¨ö/ñ r   c                ól   € V P                  4       '       g   R # V P                  P                  W4       R # r   )Ú
is_readingr  r  )r&   rå   rS   s   &&&r   r  Ú"_UnixReadPipeTransport._add_reader  s$   € Ø�‰× Ò ÙØ�
‰
×Ñ˜rÖ,r   c                óV   € V P                   '       * ;'       d    V P                  '       * # r   )r  r  ©r&   s   &r   r  Ú!_UnixReadPipeTransport.is_reading  s   € Ø—<‘<Ô×5Ð5¨¯©Ô$5Ð5r   c                óœ  € V P                   P                  .pV P                  f   VP                  R4       M#V P                  '       d   VP                  R4       VP                  RV P
                   24       \        V P                  RR 4      pV P                  e`   Ve\   \        P                  ! W P
                  \        P                  4      pV'       d   VP                  R4       MCVP                  R4       M1V P                  e   VP                  R4       MVP                  R4       RP                  R	P                  V4      4      # )
NÚclosedÚclosingúfd=Ú	_selectorÚpollingÚidleÚopenú<{}>Ú )r(   rû   r	  Úappendr  r
  Úgetattrr  r	   Ú_test_selector_eventÚ	selectorsÚ
EVENT_READÚformatÚjoin)r&   rP   r'   r$  s   &   r   Ú__repr__Ú_UnixReadPipeTransport.__repr__  sê   € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÒØ�K‰K˜Õ!Ø�]�]ˆ]Ø�K‰K˜	Ô"Ø�‰�c˜$Ÿ,™,˜Ð(Ô)Ü˜4Ÿ:™: {°DÓ9ˆØ�:‰:Ò! hÒ&:Ü%×:Ò:ØŸ,™,¬	×(<Ñ(<ó>ˆGçØ—‘˜IÕ&à—‘˜FÕ#Ø�Z‰ZÒ#Ø�K‰K˜Õà�K‰K˜Ô!Ø�}‰}˜SŸX™X d›^Ó,Ð,r   c                ó”  €  \         P                  ! V P                  V P                  4      pV'       d   V P                  P                  V4       R# V P                  P                  4       '       d   \        P                  ! R V 4       RV n
        V P                  P                  V P                  4       V P                  P                  V P                  P                  4       V P                  P                  V P                  R4       R#   \        \         3 d     R# \"         d   pT P%                  TR4        Rp?R# Rp?ii ; i)ú%r was closed by peerTNz"Fatal read error on pipe transport)r   Úreadr
  Úmax_sizer  Údata_receivedr  Ú	get_debugr   rP   r  Ú_remove_readerr  Úeof_receivedÚ_call_connection_lostrÝ   rÞ   rK   Ú_fatal_error)r&   r:   rU   s   &  r   r  Ú"_UnixReadPipeTransport._read_ready#  så   € ð	GÜ—7’7˜4Ÿ<™<¨¯©Ó7ˆD÷ Ø—‘×,Ñ,¨TÖ2à—:‘:×'Ñ'×)Ò)Ü—K’KÐ 7¸Ô>Ø $�”Ø—
‘
×)Ñ)¨$¯,©,Ô7Ø—
‘
×$Ñ$ T§^¡^×%@Ñ%@ÔAØ—
‘
×$Ñ$ T×%?Ñ%?ÀÖFøô  Ô!1Ð2ô 	ÚÜô 	IØ×Ñ˜cÐ#G×HÒHûð	Iús#   ‚+D ÄEÄ EÄ)EÄ*EÅEc                ó   € V P                  4       '       g   R # RV n        V P                  P                  V P                  4       V P                  P                  4       '       d   \        P                  ! RV 4       R # R # )NTz%r pauses reading)r  r  r  r8  r
  r7  r   Údebugr  s   &r   Úpause_readingÚ$_UnixReadPipeTransport.pause_reading5  sV   € Ø�‰× Ò ÙØˆŒØ�
‰
×!Ñ! $§,¡,Ô/Ø�:‰:×Ñ×!Ò!Ü�LŠLÐ,¨dÖ3ñ "r   c                ó2  € V P                   '       g   V P                  '       g   R # RV n        V P                  P                  V P                  V P
                  4       V P                  P                  4       '       d   \        P                  ! RV 4       R # R # )NFz%r resumes reading)	r  r  r  r  r
  r  r7  r   r>  r  s   &r   Úresume_readingÚ%_UnixReadPipeTransport.resume_reading=  sb   € Ø�=�=ˆ= §§ ÙØˆŒØ�
‰
×Ñ˜tŸ|™|¨T×-=Ñ-=Ô>Ø�:‰:×Ñ×!Ò!Ü�LŠLÐ-¨tÖ4ñ "r   c                ó   € Wn         R # r   ©r  ©r&   ro   s   &&r   Úset_protocolÚ#_UnixReadPipeTransport.set_protocolE  ó   € Ø!Žr   c                ó   € V P                   # r   rE  r  s   &r   Úget_protocolÚ#_UnixReadPipeTransport.get_protocolH  ó   € Ø�~‰~Ðr   c                ó   € V P                   # r   ©r  r  s   &r   Ú
is_closingÚ!_UnixReadPipeTransport.is_closingK  ó   € Ø�}‰}Ðr   c                óP   € V P                   '       g   V P                  R 4       R # R # r   )r  Ú_closer  s   &r   r-   Ú_UnixReadPipeTransport.closeN  s   € Ø�}�}ˆ}Ø�K‰K˜Öñ r   c                ó€   € V P                   e0   V! RV : 2\        V R7       V P                   P                  4        R # R # ©Nzunclosed transport r+   ©r	  r4   r-   ©r&   Ú_warns   &&r   Ú__del__Ú_UnixReadPipeTransport.__del__R  ó5   € Ø�:‰:Ò!ÙÐ'¨¡xÐ0´/È$ÕOØ�J‰J×ÑÖñ "r   c           
     ó`  € \        V\        4      '       dZ   VP                  \        P                  8X  d;   V P                  P                  4       '       d   \        P                  ! R WRR7       M-V P                  P                  RVRVRV RV P                  /4       V P                  V4       R# ©z%r: %sT)Úexc_infoÚmessageÚ	exceptionr§   ro   N)rg   rK   rQ   ÚEIOr  r7  r   r>  Úcall_exception_handlerr  rT  ©r&   rU   ra  s   &&&r   r;  Ú#_UnixReadPipeTransport._fatal_errorW  s   € ä�sœG×$Ò$¨¯©´e·i±iÔ)?Ø�z‰z×#Ñ#×%Ò%Ü—’˜X t¸tÕDøà�J‰J×-Ñ-Ø˜7Ø˜SØ˜TØ˜DŸN™Nð	/ô ð 	�‰�CÖr   c                óª   € R V n         V P                  P                  V P                  4       V P                  P	                  V P
                  V4       R# ©TN)r  r  r8  r
  r  r:  ©r&   rU   s   &&r   rT  Ú_UnixReadPipeTransport._closee  s9   € ØˆŒØ�
‰
×!Ñ! $§,¡,Ô/Ø�
‰
×Ñ˜T×7Ñ7¸Ö=r   c                ó  €  V P                   P                  V4       V P                  P                  4        R V n        R V n         R V n        R #   T P                  P                  4        R T n        R T n         R T n        i ; ir   ©r  Úconnection_lostr	  r-   r  ri  s   &&r   r:  Ú,_UnixReadPipeTransport._call_connection_lostj  óg   € ð	Ø�N‰N×*Ñ*¨3Ô/à�J‰J×ÑÔØˆDŒJØ!ˆDŒNØˆDŽJøð �J‰J×ÑÔØˆDŒJØ!ˆDŒNØˆD�Júó   ‚A Á1A?)r  r
  r  r  r	  r  i   rú   ©zFatal error on pipe transport)rû   rü   rý   rþ   r5  r   r  r  r0  r  r?  rB  rG  rK  rP  r-   r2   r3   r[  r;  rT  r:  r   r  r  r  s   @@r   rl   rl   ä  sd   ù‡ € à€H÷/ò<-ò
6ò-ò*Gò$4ò5ò"òòòð %ŸM™Mô ô
ò>÷
ò r   rl   c                   ó¸   a a€ ] tR tRt oRV 3R lltR tR tR tR tR t	R t
R	 tR
 tR tR tR t]P"                  3R ltR tRR ltRR ltR tRtVtV ;t# )ru   it  c                óþ  <€ \         S
V `  WQ4       W P                  R &   W n        VP	                  4       V n        W0n        \        4       V n        ^ V n	        RV n
        \        P                  ! V P
                  4      P                  p\        P                  ! V4      p\        P                   ! V4      p\        P"                  ! V4      p	V'       g1   V'       g)   V	'       g!   RV n        RV n        RV n        \%        R4      h\        P&                  ! V P
                  R4       V P(                  P+                  V P                  P,                  V 4       V	'       g.   V'       dk   \.        P0                  P3                  R4      '       gF   V P(                  P+                  V P(                  P4                  V P
                  V P6                  4       Ve.   V P(                  P+                  \8        P:                  VR4       R# R# )rn   FNz?Pipe transport is only for pipes, sockets and character devicesÚaix)r   r   r  r	  rJ   r
  r  Ú	bytearrayÚ_bufferÚ
_conn_lostr  r   rÉ   r³   r±   r  r  r²   r   r  r  r  r  r.   ÚplatformÚ
startswithr  r  r   r  )r&   r  rn   ro   rp   rq   r  Úis_charÚis_fifoÚ	is_socketr(   s   &&&&&&    €r   r   Ú _UnixWritePipeTransport.__init__w  sd  ø€ Ü‰Ñ˜Ô%Ø"�‰�FÑØŒ
Ø—{‘{“}ˆŒØ!ŒÜ “{ˆŒØˆŒØˆŒä�xŠx˜Ÿ™Ó%×-Ñ-ˆÜ—,’,˜tÓ$ˆÜ—-’- Ó%ˆÜ—M’M $Ó'ˆ	ßŸ7§iØˆDŒJØˆDŒLØ!ˆDŒNÜð Dó Eð Eô 	�Š˜Ÿ™ eÔ,Ø�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔB÷
 Ÿ¬¯©×)@Ñ)@À×)GÒ)Gà�J‰J× Ñ  §¡×!7Ñ!7Ø!%§¡¨t×/?Ñ/?ôAð Òà�J‰J× Ñ ¤×!EÑ!EØ!'¨ö/ñ r   c                óä  € V P                   P                  .pV P                  f   VP                  R4       M#V P                  '       d   VP                  R4       VP                  RV P
                   24       \        V P                  RR 4      pV P                  e„   Ve€   \        P                  ! W P
                  \        P                  4      pV'       d   VP                  R4       MVP                  R4       V P                  4       pVP                  RV 24       M1V P                  e   VP                  R4       MVP                  R4       R	P                  R
P                  V4      4      # )Nr   r!  r"  r#  r$  r%  zbufsize=r&  r'  r(  )r(   rû   r	  r)  r  r
  r*  r  r	   r+  r,  ÚEVENT_WRITEÚget_write_buffer_sizer.  r/  )r&   rP   r'   r$  r†   s   &    r   r0  Ú _UnixWritePipeTransport.__repr__œ  s  € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÒØ�K‰K˜Õ!Ø�]�]ˆ]Ø�K‰K˜	Ô"Ø�‰�c˜$Ÿ,™,˜Ð(Ô)Ü˜4Ÿ:™: {°DÓ9ˆØ�:‰:Ò! hÒ&:Ü%×:Ò:ØŸ,™,¬	×(=Ñ(=ó?ˆGçØ—‘˜IÕ&à—‘˜FÔ#à×0Ñ0Ó2ˆGØ�K‰K˜( 7 )Ð,Õ-Ø�Z‰ZÒ#Ø�K‰K˜Õà�K‰K˜Ô!Ø�}‰}˜SŸX™X d›^Ó,Ð,r   c                ó,   € \        V P                  4      # r   )Úlenrv  r  s   &r   r€  Ú-_UnixWritePipeTransport.get_write_buffer_size´  s   € Ü�4—<‘<Ó Ð r   c                óî   € V P                   P                  4       '       d   \        P                  ! R V 4       V P                  '       d   V P                  \        4       4       R# V P                  4        R# )r3  N)r  r7  r   rP   rv  rT  ÚBrokenPipeErrorr  s   &r   r  Ú#_UnixWritePipeTransport._read_ready·  sE   € à�:‰:×Ñ×!Ò!Ü�KŠKÐ/°Ô6Ø�<�<ˆ<Ø�K‰KœÓ)Ö*à�K‰KŽMr   c                óà  € \        V\        \        \        34      '       g   Q \	        V4      4       h\        V\        4      '       d   \        V4      pV'       g   R # V P
                  '       g   V P                  '       dQ   V P
                  \        P                  8¼  d   \        P                  ! R4       V ;P
                  ^,          un        R # V P                  '       gz    \        P                  ! V P                  V4      pT\+        T4      8X  d   R # T^ 8”  d   \        T4      TR  pT P,                  P/                  T P                  T P0                  4       V ;P                  V,          un        V P3                  4        R #   \        \         3 d    ^ p L—\"        \$        3 d    h \&         d7   pT ;P
                  ^,          un        T P)                  TR4        R p?R # R p?ii ; i)Nz=pipe closed by peer or os.write(pipe, data) raised exception.ú#Fatal write error on pipe transport)rg   Úbytesru  Ú
memoryviewÚreprrw  r  r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   Úwarningrv  r   Úwriter
  rÝ   rÞ   r~   r   r€   r;  rƒ  r  Ú_add_writerÚ_write_readyÚ_maybe_pause_protocol)r&   r:   ÚnrU   s   &&  r   r�  Ú_UnixWritePipeTransport.writeÀ  sc  € Ü˜$¤¬	´:Ð >×?Ò?ÐKÄÀdÃÓKÐ?Ü�dœI×&Ò&Ü˜dÓ#ˆDßÙà�?�?ˆ?˜dŸmŸm˜mØ�‰¤)×"MÑ"MÔMÜ—’ð  Hô Ià�OŠO˜qÕ �OÙà�|�|ˆ|ð	Ü—H’H˜TŸ\™\¨4Ó0�ð ”C˜“IŒ~ÙØ�Q”Ü! $Ó'¨¨Ð+�Ø�J‰J×"Ñ" 4§<¡<°×1BÑ1BÔCà�Š˜Õ�Ø×"Ñ"Ö$øô $Ô%5Ð6ô Ø’ÜÔ 1Ð2ô ØÜ ô Ø—’ 1Õ$•Ø×!Ñ! #Ð'LÔMÝûðús*   Ã$!F ÆG-ÆG-Æ+
G-Æ6G-Æ7+G(Ç(G-c                ót  € V P                   '       g   Q R 4       h \        P                  ! V P                  V P                   4      pV\	        V P                   4      8X  dš   V P                   P                  4        V P                  P                  V P                  4       V P                  4        V P                  '       d7   V P                  P                  V P                  4       V P                  R4       R# V^ 8”  d   V P                   RV1 R# R#   \        \        3 d     R# \        \        3 d    h \          dv   pT P                   P                  4        T ;P"                  ^,          un        T P                  P                  T P                  4       T P%                  TR4        Rp?R# Rp?ii ; i)zData should not be emptyNr‰  )rv  r   r�  r
  rƒ  r5   r  Ú_remove_writerÚ_maybe_resume_protocolr  r8  r:  rÝ   rÞ   r~   r   r€   rw  r;  )r&   r“  rU   s   &  r   r‘  Ú$_UnixWritePipeTransport._write_readyã  sD  € Ø�|�|ˆ|Ð7Ð7Ó7ˆ|ð	%Ü—’˜Ÿ™ t§|¡|Ó4ˆAð ”C˜Ÿ™Ó%Ô%Ø—‘×"Ñ"Ô$Ø—
‘
×)Ñ)¨$¯,©,Ô7Ø×+Ñ+Ô-Ø—=—=�=Ø—J‘J×-Ñ-¨d¯l©lÔ;Ø×.Ñ.¨tÔ4ÙØ�Q”Ø—L‘L  ! Ò$ñ øô)  Ô!1Ð2ô 	ÚÜÔ-Ð.ô 	ØÜô 	JØ�L‰L×ÑÔ Ø�OŠO˜qÕ �Oð �J‰J×%Ñ% d§l¡lÔ3Ø×Ñ˜cÐ#H×IÒIûð	Jús*   ›+D ÄF7Ä'F7Ä6
F7ÅF7ÅA*F2Æ2F7c                ó   € R # )Tr   r  s   &r   Úcan_write_eofÚ%_UnixWritePipeTransport.can_write_eofÿ  s   € Ùr   c                ó"  € V P                   '       d   R # V P                  '       g   Q hRV n         V P                  '       gN   V P                  P	                  V P
                  4       V P                  P                  V P                  R 4       R # R # )NT)r  r	  rv  r  r8  r
  r  r:  r  s   &r   Ú	write_eofÚ!_UnixWritePipeTransport.write_eof  sa   € Ø�=�=ˆ=ÙØ�z�zˆzÐˆzØˆŒØ�|�|ˆ|Ø�J‰J×%Ñ% d§l¡lÔ3Ø�J‰J× Ñ  ×!;Ñ!;¸TÖBñ r   c                ó   € Wn         R # r   rE  rF  s   &&r   rG  Ú$_UnixWritePipeTransport.set_protocol  rI  r   c                ó   € V P                   # r   rE  r  s   &r   rK  Ú$_UnixWritePipeTransport.get_protocol  rM  r   c                ó   € V P                   # r   rO  r  s   &r   rP  Ú"_UnixWritePipeTransport.is_closing  rR  r   c                ón   € V P                   e'   V P                  '       g   V P                  4        R # R # R # r   )r	  r  r�  r  s   &r   r-   Ú_UnixWritePipeTransport.close  s&   € Ø�:‰:Ò!¨$¯-¯-¨-à�N‰NÖñ +8Ñ!r   c                ó€   € V P                   e0   V! RV : 2\        V R7       V P                   P                  4        R # R # rW  rX  rY  s   &&r   r[  Ú_UnixWritePipeTransport.__del__  r]  r   c                ó(   € V P                  R 4       R # r   )rT  r  s   &r   ÚabortÚ_UnixWritePipeTransport.abort  s   € Ø�‰�DÖr   c           
     ó"  € \        V\        4      '       d;   V P                  P                  4       '       d   \        P
                  ! R WRR7       M-V P                  P                  RVRVRV RV P                  /4       V P                  V4       R# r_  )	rg   rK   r  r7  r   r>  rd  r  rT  re  s   &&&r   r;  Ú$_UnixWritePipeTransport._fatal_error!  sp   € ä�cœ7×#Ò#Ø�z‰z×#Ñ#×%Ò%Ü—’˜X t¸tÕDøà�J‰J×-Ñ-Ø˜7Ø˜SØ˜TØ˜DŸN™Nð	/ô ð 	�‰�CÖr   c                óL  € R V n         V P                  '       d&   V P                  P                  V P                  4       V P                  P                  4        V P                  P                  V P                  4       V P                  P                  V P                  V4       R# rh  )	r  rv  r  r–  r
  r5   r8  r  r:  ri  s   &&r   rT  Ú_UnixWritePipeTransport._close/  sh   € ØˆŒØ�<�<ˆ<Ø�J‰J×%Ñ% d§l¡lÔ3Ø�‰×ÑÔØ�
‰
×!Ñ! $§,¡,Ô/Ø�
‰
×Ñ˜T×7Ñ7¸Ö=r   c                ó  €  V P                   P                  V4       V P                  P                  4        R V n        R V n         R V n        R #   T P                  P                  4        R T n        R T n         R T n        i ; ir   rl  ri  s   &&r   r:  Ú-_UnixWritePipeTransport._call_connection_lost7  ro  rp  )rv  r  rw  r
  r  r	  r  rú   rq  r   )rû   rü   rý   rþ   r   r0  r€  r  r�  r‘  rš  r�  rG  rK  rP  r-   r2   r3   r[  rª  r;  rT  r:  r   r  r  r  s   @@r   ru   ru   t  sk   ù‡ € ÷#/òJ-ò0!òò!%òF%ò8òCò"òòòð
 %ŸM™Mô ò
ôô>÷ò r   ru   c                   ó&   a € ] tR tRt o R tRtV tR# )rz   iA  c                ó   € R pV\         P                  8X  d=   \        P                  P	                  R4      '       d   \
        P                  ! 4       w  r8 \         P                  ! V3RVRVRVRVRRRV/VB V n        Ve>   VP                  4        \        VP                  4       R	VR
7      V P                  n        R pVe#   VP                  4        VP                  4        R # R #   Te"   TP                  4        TP                  4        i i ; i)Nrt  r‚   rƒ   r„   r…   Úuniversal_newlinesFr†   Úwb)Ú	buffering)Ú
subprocessÚPIPEr.   rx  ry  r�   Ú
socketpairÚPopenÚ_procr-   r&  Údetachrƒ   )	r&   rT   r‚   rƒ   r„   r…   r†   r‡   Ústdin_ws	   &&&&&&&, r   Ú_startÚ_UnixSubprocessTransport._startC  s   € ØˆØ”J—O‘OÔ#¬¯©×(?Ñ(?À×(FÒ(Fô
 $×.Ò.Ó0‰NˆEð	 Ü#×)Ò)ØñEØ!ðEØ).ðEØ7=ðEØFLðEà#(ðEà29ðEà=CñEˆDŒJð Ò"Ø—‘”Ü#'¨¯©Ó(8¸$È'Ô#R�—
‘
Ô Ø�àÒ"Ø—‘”Ø—‘–ñ #øˆwÒ"Ø—‘”Ø—‘•ð #ús   ÁA)C& Ã&'D)r»  N)rû   rü   rý   rþ   r¾  r   r  ©r  s   @r   rz   rz   A  s   ø‡ € ÷ ð  r   rz   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r#   iY  a  Child watcher implementation using Linux's pid file descriptors.

This child watcher polls process file descriptors (pidfds) to await child
process termination. In some respects, PidfdChildWatcher is a "Goldilocks"
child watcher implementation. It doesn't require signals or threads, doesn't
interfere with any processes launched outside the event loop, and scales
linearly with the number of subprocesses launched by the event loop. The
main disadvantage is that pidfds are specific to Linux, and only work on
recent (5.3+) kernels.
c                ó–   € \         P                  ! 4       p\        P                  ! V4      pVP	                  WPP
                  WW#4       R # r   )r   Úget_running_loopr   Ú
pidfd_openr  Ú_do_wait)r&   r�   rS   rT   r  Úpidfds   &&&*  r   r{   Ú$_PidfdChildWatcher.add_child_handlere  s4   € Ü×&Ò&Ó(ˆÜ—’˜cÓ"ˆØ×Ñ˜§¡¨s¸8ÖJr   c                ó0  € \         P                  ! 4       pVP                  V4        \        P                  ! V^ 4      w  rg\        V4      p\        P                  ! V4       V! W.VO5!   R#   \         d    ^ÿp\        P                  ! RT4        LHi ; i)r®   zJchild process pid %d exit status already read:  will report returncode 255N)
r   rÃ  r8  r   Úwaitpidr   ÚChildProcessErrorr   rŽ  r-   )	r&   r�   rÆ  rS   rT   r  Ú_r   r�   s	   &&&&&    r   rÅ  Ú_PidfdChildWatcher._do_waitj  s…   € Ü×&Ò&Ó(ˆØ×Ñ˜EÔ"ð	8ÜŸ
š
 3¨Ó*‰IˆAô 0°Ó7ˆJä
�Š�ŒÙ�Ð( 4Ö(øô !ô 	ð ˆJÜ�NŠNð.àöð		ús   ¨A. Á.$BÂBr   N)	rû   rü   rý   rþ   rÿ   r{   rÅ  r   r  rÀ  s   @r   r#   r#   Y  s   ø‡ € ñ	òK÷
)ð )r   r#   c                   óV   a € ] tR tRt o RtR t]P                  3R ltR t	R t
RtV tR# )	r%   i}  a%  Threaded child watcher implementation.

The watcher uses a thread per process
for waiting for the process finish.

It doesn't require subscription on POSIX signal
but a thread creation is not free.

The watcher has O(1) complexity, its performance doesn't depend
on amount of spawn processes.
c                óJ   € \         P                  ! ^ 4      V n        / V n        R# rê   )Ú	itertoolsrÎ   Ú_pid_counterÚ_threadsr  s   &r   r   Ú_ThreadedChildWatcher.__init__Š  s   € Ü%ŸOšO¨AÓ.ˆÔØˆŽr   c                óð   € \        V P                  P                  4       4       Uu. uF  pVP                  4       '       g   K  VNK  	  ppV'       d   V! V P                   R 2\
        V R7       R# R# u upi )z0 has registered but not finished child processesr+   N)r0   rÑ  ÚvaluesÚis_aliver(   r4   )r&   rZ  ÚthreadÚthreadss   &&  r   r[  Ú_ThreadedChildWatcher.__del__Ž  sg   € Ü(,¨T¯]©]×-AÑ-AÓ-CÔ(Dó )Ñ(D˜fØ—o‘o×'÷ �6Ñ(Dˆð )çÙ�T—^‘^Ð$Ð$TÐUÜ!Ø÷ñ ùò)s   ¦A3ÁA3c                óä   € \         P                  ! 4       p\        P                  ! V P                  R \        V P                  4       2WAW#3RR7      pWPP                  V&   VP                  4        R# )zasyncio-waitpid-T)ÚtargetÚnamerT   ÚdaemonN)	r   rÃ  Ú	threadingÚThreadÚ_do_waitpidÚnextrÐ  rÑ  Ústart)r&   r�   rS   rT   r  rÖ  s   &&&*  r   r{   Ú'_ThreadedChildWatcher.add_child_handler–  s`   € Ü×&Ò&Ó(ˆÜ×!Ò!¨×)9Ñ)9Ø)9¼$¸t×?PÑ?PÓ:QÐ9RÐ'SØ(,°8Ð'BØ)-ô/ˆð $�‰�cÑØ�‰Žr   c                óÐ  € V^ 8”  g   Q h \         P                  ! V^ 4      w  rV\        V4      pVP                  4       '       d   \        P
                  ! RW'4       TP                  4       '       d   \        P                  ! RY4       MTP                  ! Y5T.TO5!   T P                  P                  T4       R#   \         d    Tp^ÿp\        P                  ! RT4        Lˆi ; i)r®   z$process %s exited with returncode %sz8Unknown child process pid %d, will report returncode 255z%Loop %r that handles pid %r is closedN)r   rÉ  r   r7  r   r>  rÊ  rŽ  Ú	is_closedr�   rÑ  Úpop)r&   r  Úexpected_pidrS   rT   r�   r   r�   s   &&&&&   r   rß  Ú!_ThreadedChildWatcher._do_waitpidŸ  sÆ   € Ø˜aÔÐÐð	7ÜŸ*š* \°1Ó5‰KˆCô 0°Ó7ˆJØ�~‰~×ÒÜ—’ÐCØ)ô7ð �>‰>×ÒÜ�NŠNÐBÀDÕNà×%Ò% h°ZÐGÀ$ÔGà�‰×Ñ˜,Ö'øô' !ô 	ð ˆCØˆJÜ�NŠNØJØöð	ús   ‹B< Â<&C%Ã$C%)rÐ  rÑ  N)rû   rü   rý   rþ   rÿ   r   r2   r3   r[  r{   rß  r   r  rÀ  s   @r   r%   r%   }  s,   ø‡ € ñ
òð %ŸM™Mô ò÷(ð (r   r%   c                  óÜ   € \        \        R 4      '       g   R#  \        P                  ! 4       p \        P                  ! \        P                  ! V ^ 4      4       R#   \
         d     R# i ; i)rÄ  FT)Úhasattrr   Úgetpidr-   rÄ  rK   )r�   s    r   r"   r"   ¹  sR   € Ü”2�|×$Ò$ÙðÜ�iŠi‹kˆÜ
�Š”—’˜s AÓ&Ô'ñ øô ô âðús   šA A ÁA+Á*A+c                   ó   € ] tR tRtRt]tRtR# )Ú_UnixDefaultEventLoopPolicyiÅ  zUNIX event loop policyr   N)rû   rü   rý   rþ   rÿ   r   Ú_loop_factoryr   r   r   r   rì  rì  Å  s
   † Ù Ø*„Mr   rì  )ÚSelectorEventLoopÚ	EventLoop)0rÿ   rQ   rÇ   rÏ  r   r,  rG   r�   r±   r·  r.   rÝ  r2   Ú r   r   r   r   r   r   r   r	   r
   r   Úlogr   Ú__all__rx  ÚImportErrorr   r   ÚBaseSelectorEventLoopr   ÚReadTransportrl   Ú_FlowControlMixinÚWriteTransportru   ÚBaseSubprocessTransportrz   r#   r%   r"   Ú_BaseDefaultEventLoopPolicyrì  rî  Ú_DefaultEventLoopPolicyrï  r   r   r   Ú<module>rû     s  ðÙ 8ã Û 	Û Û 	Û Û Û Û Û Û 
Û Û å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý ð€ð ‡<�<�7ÔÙ
ÐCÓ
DÐDò	ò
ôk2˜_×BÑBô k2ô\M˜Z×5Ñ5ô Mô`J˜j×:Ñ:Ø(×7Ñ7ôJôZ ˜×FÑFô  ÷0")ñ ")÷H:(ñ :(òx	ô+ &×"DÑ"Dô +ð
 +Ð Ø5Ð Ø‚	r   