Ë
    è×ïi¼  ã                   óŒ  — d Z ddlZej                  dk7  r ed«      ‚ddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZg d¢ZdZe	j                  Ze	j                  Z ej                   «       Z eed«      rej&                  Znej(                  ej*                  dfd„Zd	d
edœd„Z G d„ d«      Z G d„ de	j0                  «      Zy)z*
Various Windows specific bits and pieces
é    NÚwin32z
win32 only)Ú
socketpairÚpipeÚPopenÚPIPEÚ
PipeHandlei    r   c                 óÜ  — | t         j                  k(  rd}n!| t         j                  k(  rd}nt        d«      ‚|t         j                  k7  rt        d«      ‚|dk7  rt        d«      ‚t        j                   | ||«      }	 |j                  |df«       |j                  d«       |j                  «       dd	 \  }}t        j                   | ||«      }	 |j                  d
«       	 |j                  ||f«       |j                  d«       |j                  «       \  }}		 |j                  «        ||fS # t        t        f$ r Y ŒJw xY w#  |j                  «        ‚ xY w# |j                  «        w xY w)z”A socket pair usable as a self-pipe, for Windows.

        Origin: https://gist.github.com/4325783, by Geert Jansen.
        Public domain.
        z	127.0.0.1z::1z?Only AF_INET and AF_INET6 socket address families are supportedz)Only SOCK_STREAM socket type is supportedr   zOnly protocol zero is supportedé   Né   FT)ÚsocketÚAF_INETÚAF_INET6Ú
ValueErrorÚSOCK_STREAMÚbindÚlistenÚgetsocknameÚsetblockingÚconnectÚBlockingIOErrorÚInterruptedErrorÚacceptÚclose)
ÚfamilyÚtypeÚprotoÚhostÚlsockÚaddrÚportÚcsockÚssockÚ_s
             úO/var/www/html/aiagents/fe/lib/python3.12/site-packages/asyncio/windows_utils.pyr   r   %   sV  € ð ”V—^‘^Ò#Ø‰DØ”v—‘Ò&Ø‰Däð 6ó 7ð 7à”6×%Ñ%Ò%ÜÐHÓIÐIØ�AŠ:ÜÐ>Ó?Ð?ô —‘˜f d¨EÓ2ˆð	Ø�J‰J˜˜a�yÔ!Ø�L‰L˜ŒOà×*Ñ*Ó,¨R¨aÐ0‰JˆD�$Ü—M‘M &¨$°Ó6ˆEð
Ø×!Ñ! %Ô(ðØ—M‘M 4¨ ,Ô/ð ×!Ñ! $Ô'Ø Ÿ<™<›>‘�‘qð
 �K‰KŒMØ�uˆ~Ðøô (Ô)9Ð:ò ÙðûðØ—‘”Øûà�K‰K�MúsC   Á>AE ÃE Ã"D. Ã5$E Ä.E Ä=E Ä?E Å E ÅEÅE ÅE+F)TT)ÚduplexÚ
overlappedÚbufsizec           
      ó”  — t        j                  dt        j                  «       t	        t
        «      fz  ¬«      }| r6t        j                  }t        j                  t        j                  z  }||}}n$t        j                  }t        j                  }d|}}|t        j                  z  }|d   r|t        j                  z  }|d   rt        j                  }nd}dx}	}
	 t        j                  ||t        j                  d||t        j                  t        j                   «      }	t        j"                  ||dt        j                   t        j$                  |t        j                   «      }
t        j&                  |	d¬«      }|j)                  d«       |	|
fS #  |	�t        j*                  |	«       |
�t        j*                  |
«       ‚ xY w)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-%d-%d-)Úprefixr   r
   NT©r&   )ÚtempfileÚmktempÚosÚgetpidÚnextÚ_mmap_counterÚ_winapiÚPIPE_ACCESS_DUPLEXÚGENERIC_READÚGENERIC_WRITEÚPIPE_ACCESS_INBOUNDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚFILE_FLAG_OVERLAPPEDÚCreateNamedPipeÚ	PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ
CreateFileÚOPEN_EXISTINGÚConnectNamedPipeÚGetOverlappedResultÚCloseHandle)r%   r&   r'   ÚaddressÚopenmodeÚaccessÚobsizeÚibsizeÚflags_and_attribsÚh1Úh2Úovs               r$   r   r   S   s‡  € ä�o‰oÐ%CÜ!Ÿy™y›{¬D´Ó,?Ð@ñ&Aô B€Gñ Ü×-Ñ-ˆÜ×%Ñ%¬×(=Ñ(=Ñ=ˆØ  '�‰ä×.Ñ.ˆÜ×&Ñ&ˆØ˜G�ˆà”×5Ñ5Ñ5€Hà�!‚}Ø”G×0Ñ0Ñ0ˆà�!‚}Ü#×8Ñ8ÑàÐà€N€BˆðÜ×$Ñ$Ø�Xœw×0Ñ0Øˆv�vœw×;Ñ;¼W¿\¹\óKˆô ×ÑØ�V˜Q¤§¡¬g×.CÑ.CØœwŸ|™|ó-ˆô ×%Ñ% b°TÔ:ˆØ
×Ñ˜tÔ$Ø�2ˆvˆøðØˆ>Ü×Ñ Ô#Øˆ>Ü×Ñ Ô#Øús   ÃB6F Æ1Gc                   ód   — e Zd ZdZd„ Zd„ Zed„ «       Zd„ Ze	j                  dœd„Zd„ Zd	„ Zd
„ Zy)r   z�Wrapper for an overlapped pipe handle which is vaguely file-object like.

    The IOCP event loop can use these instead of socket objects.
    c                 ó   — || _         y ©N©Ú_handle©ÚselfÚhandles     r$   Ú__init__zPipeHandle.__init__ˆ   s	   € Øˆ�ó    c                 óx   — | j                   �d| j                   z  }nd}d| j                  j                  ›d|›d�S )Nz	handle=%rÚclosedú<ú ú>)rN   Ú	__class__Ú__name__rO   s     r$   Ú__repr__zPipeHandle.__repr__‹   s5   € Ø�<‰<Ð#Ø  4§<¡<Ñ/‰FàˆFøØ ŸN™N×3Ó3²VÐ<Ð<rS   c                 ó   — | j                   S rL   rM   ©rP   s    r$   rQ   zPipeHandle.handle’   s   € à�|‰|ÐrS   c                 óH   — | j                   €t        d«      ‚| j                   S )NzI/O operatioon on closed pipe)rN   r   r]   s    r$   ÚfilenozPipeHandle.fileno–   s"   € Ø�<‰<ÐÜÐ<Ó=Ð=Ø�|‰|ÐrS   )r@   c                óP   — | j                   � || j                   «       d | _         y y rL   rM   )rP   r@   s     r$   r   zPipeHandle.close›   s$   € Ø�<‰<Ð#Ù˜Ÿ™Ô%ØˆD�Lð $rS   c                 óx   — | j                   �.t        j                  d| z  t        «       | j	                  «        y y )Nzunclosed %r)rN   ÚwarningsÚwarnÚResourceWarningr   r]   s    r$   Ú__del__zPipeHandle.__del__    s-   € Ø�<‰<Ð#Ü�M‰M˜-¨$Ñ.´Ô@Ø�J‰J�Lð $rS   c                 ó   — | S rL   © r]   s    r$   Ú	__enter__zPipeHandle.__enter__¥   s   € ØˆrS   c                 ó$   — | j                  «        y rL   )r   )rP   ÚtÚvÚtbs       r$   Ú__exit__zPipeHandle.__exit__¨   s   € Ø�
‰
�rS   N)rZ   Ú
__module__Ú__qualname__Ú__doc__rR   r[   ÚpropertyrQ   r_   r1   r@   r   re   rh   rm   rg   rS   r$   r   r   ƒ   sI   „ ñòò=ð ñó ðòð
 $+×#6Ñ#6ô  ò
ò
órS   r   c                   ó$   ‡ — e Zd ZdZdˆ fd„	Zˆ xZS )r   zˆReplacement for subprocess.Popen using overlapped pipe handles.

    The stdin, stdout, stderr are None or instances of PipeHandle.
    c                 ó,  •— |j                  d«      rJ ‚|j                  dd«      dk(  sJ ‚d x}x}}d x}	x}
}|t        k(  r5t        dd¬«      \  }}	t        j                  |t
        j                  «      }n|}|t        k(  r&t        d¬«      \  }
}t        j                  |d«      }n|}|t        k(  r&t        d¬«      \  }}t        j                  |d«      }n|t        k(  r|}n|}	 t        ‰| �$  |f|||d	œ|¤Ž |	�t        |	«      | _        |
�t        |
«      | _        |�t        |«      | _        	 |t        k(  rt        j                   |«       |t        k(  rt        j                   |«       |t        k(  rt        j                   |«       y y #  |	|
|fD ]  }|€Œt        j                  |«       Œ ‚ xY w# |t        k(  rt        j                   |«       |t        k(  rt        j                   |«       |t        k(  rt        j                   |«       w w xY w)
NÚuniversal_newlinesr'   r   )FTT)r&   r%   )TFr*   )ÚstdinÚstdoutÚstderr)Úgetr   r   ÚmsvcrtÚopen_osfhandler-   ÚO_RDONLYÚSTDOUTÚsuperrR   r   ru   rv   rw   r1   r@   r   )rP   Úargsru   rv   rw   ÚkwdsÚ	stdin_rfdÚ
stdout_wfdÚ
stderr_wfdÚstdin_whÚ	stdout_rhÚ	stderr_rhÚstdin_rhÚ	stdout_whÚ	stderr_whÚhrY   s                   €r$   rR   zPopen.__init__´   sû  ø€ Ø—8‘8Ð0Ô1Ð1Ð1Ø�x‰x˜	 1Ó%¨Ò*Ð*Ð*Ø.2Ð2ˆ	Ð2�J Ø+/Ð/ˆÐ/�9˜yØ”DŠ=Ü!%°ÀtÔ!LÑˆH�hÜ×-Ñ-¨h¼¿¹ÓD‰IàˆIØ”TŠ>Ü#'°=Ô#AÑ ˆI�yÜ×.Ñ.¨y¸!Ó<‰JàˆJØ”TŠ>Ü#'°=Ô#AÑ ˆI�yÜ×.Ñ.¨y¸!Ó<‰JØ”vÒØ#‰JàˆJð	%Ü‰GÑ˜Tð 8¨¸:Ø$.ñ8Ø26ò8ð Ð#Ü'¨Ó1�”
ØÐ$Ü(¨Ó3�”ØÐ$Ü(¨Ó3�•àœŠ}Ü—‘˜Ô#ØœŠ~Ü—‘˜Ô$ØœŠ~Ü—‘˜Õ$ð øð#	Ø 	¨9Ð5ò +�Ø‘=Ü×'Ñ'¨Õ*ð+ð ûð œŠ}Ü—‘˜Ô#ØœŠ~Ü—‘˜Ô$ØœŠ~Ü—‘˜Õ$ð ús%   Ã'F Ã;7F6 ÆF3ÆF3Æ3F6 Æ6AH)NNN)rZ   rn   ro   rp   rR   Ú__classcell__)rY   s   @r$   r   r   ¯   s   ø„ ñ÷+%ñ +%rS   r   )rp   ÚsysÚplatformÚImportErrorr1   Ú	itertoolsry   r-   r   Ú
subprocessr+   rb   Ú__all__ÚBUFSIZEr   r|   Úcountr0   Úhasattrr   r   r   r   r   r   rg   rS   r$   ú<module>r”      sË   ðñó à‡<�<�7ÒÙ
�lÓ
#Ð#ã Û Û Û 	Û Û Û Û ò @€ð €Ø‡�€Ø	×	Ñ	€Ø�	—‘Ó!€ñ ˆ6�<Ô à×"Ñ"�Jð !Ÿ.™.¨v×/AÑ/AÈó (ð\  \¸7ô *÷`&ñ &ôX0%ˆJ×Ñõ 0%rS   