<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3

  \
$                 @   s  d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	ddl
mZ ddddd	gZe	jd
kpeedoeedoeejdZG dd dejZejZd5dd	Ze	jd
kredddg7 Zd dlZd6ddZdd Zdd Zdd ZG dd deZnHedddg7 Zd dlZe	jdkZdd Zdd Zdd Zd d Zd!d Zd"d# Z G d$d% d%Z!ee"e! j#e  d&d' Z$ee"e%j&e$ ee"e'j(e$ d(d) Z)d*d+ Z*eej+e) e	jd
krd,d- Z,d.d/ Z-eeje, nd0d- Z,d1d/ Z-eeje, G d2d3 d3ed4Z.dS )7    )ABCMetaabstractmethodN   )contextsend_handlerecv_handleForkingPicklerregisterdumpwin32ZCMSG_LEN
SCM_RIGHTSsendmsgc                   sF   e Zd Zi ZejZ fddZedd Z	edddZ
ejZ  ZS )	r   c                s*   t  j|  | jj | _| jj| j d S )N)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducers)selfargs)	__class__ 1/usr/lib64/python3.6/multiprocessing/reduction.pyr   &   s    zForkingPickler.__init__c             C   s   || j |< d S )N)r   )clstypereducer   r   r   r	   +   s    zForkingPickler.registerNc             C   s    t j }| ||j| |j S )N)ioBytesIOr
   	getbuffer)r   objprotocolZbufr   r   r   dumps0   s    zForkingPickler.dumps)N)__name__
__module____qualname__r   copyregr   r   r   classmethodr	   r"   pickleloads__classcell__r   r   )r   r   r   !   s   c             C   s   t ||j|  d S )N)r   r
   )r    filer!   r   r   r   r
   :   s    	DupHandle	duplicatesteal_handleFc             C   s*   |d krt j }t jt j | |d|t jS )Nr   )_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handleZtarget_processZinheritabler   r   r   r-   G   s
    
c             C   sB   t jt jd| }z t j||t j ddt jt jB S t j| X d S )NFr   )r/   OpenProcessPROCESS_DUP_HANDLEr1   r0   r2   DUPLICATE_CLOSE_SOURCECloseHandle)Z
source_pidr3   Zsource_process_handler   r   r   r.   O   s    
c             C   s   t |tj|}| j| d S )N)r,   r/   r2   send)connr3   destination_pidZdhr   r   r   r   [   s    c             C   s   | j  j S )N)recvdetach)r9   r   r   r   r   `   s    c               @   s   e Zd ZdddZdd ZdS )r,   Nc             C   s\   |d krt j }tjtjd|}ztjtj |||dd| _W d tj| X || _	|| _
d S )NFr   )osgetpidr/   r4   r5   r1   r0   _handler7   _access_pid)r   r3   accesspidprocr   r   r   r   f   s    zDupHandle.__init__c             C   sV   | j tj kr| jS tjtjd| j }ztj|| jtj | j	dtj
S tj| X d S )NF)rA   r=   r>   r?   r/   r4   r5   r1   r0   r@   r6   r7   )r   rD   r   r   r   r<   u   s    
zDupHandle.detach)N)r#   r$   r%   r   r<   r   r   r   r   r,   d   s   
DupFdsendfdsrecvfdsdarwinc             C   sV   t j d|}tt|d g}| j|gtjtj|fg trR| jddkrRt	dd S )Ni   r      Az%did not receive acknowledgement of fd)
arraybyteslenr   socket
SOL_SOCKETr   ACKNOWLEDGEr;   RuntimeError)sockZfdsmsgr   r   r   rF      s
    c             C   s   t j d}|j| }| jdtj|\}}}}| r>| r>tyxtrN| jd t|dkrjt	dt| |d \}}	}
|tj
kr|	tjkrt|
|j dkrt|j|
 t|S W n ttfk
r   Y nX t	dd S )NrI   r   rK   zreceived %d items of ancdatar   zInvalid data received)rL   itemsizeZrecvmsgrO   Z
CMSG_SPACEEOFErrorrQ   r8   rN   rR   rP   r   
ValueErrorZ	frombyteslist
IndexError)rS   sizeaZ
bytes_sizerT   ZancdataflagsZaddrZ
cmsg_levelZ	cmsg_typeZ	cmsg_datar   r   r   rG      s*    





c          
   C   s2   t j| j t jt j}t||g W d Q R X d S )N)rO   fromfdfilenoAF_UNIXSOCK_STREAMrF   )r9   r3   r:   sr   r   r   r      s    c          
   C   s0   t j| j t jt j}t|dd S Q R X d S )Nr   r   )rO   r]   r^   r_   r`   rG   )r9   ra   r   r   r   r      s    c             C   sF   t j }|d k	r |j|j| S tr:ddlm} |j| S tdd S )Nr   )resource_sharerz&SCM_RIGHTS appears not to be available)r   Zget_spawning_popenrE   Zduplicate_for_childHAVE_SEND_HANDLE rb   rW   )fdZ	popen_objrb   r   r   r   rE      s    
c             C   s2   | j d krt| j| jjffS t| j | jjffS d S )N)__self__getattrr   __func__r#   )mr   r   r   _reduce_method   s    
rj   c               @   s   e Zd Zdd ZdS )_Cc             C   s   d S )Nr   )r   r   r   r   f   s    z_C.fN)r#   r$   r%   rl   r   r   r   r   rk      s   rk   c             C   s   t | j| jffS )N)rg   __objclass__r#   )ri   r   r   r   _reduce_method_descriptor   s    rn   c             C   s   t | j| j| jpi ffS )N)_rebuild_partialfuncr   keywords)pr   r   r   _reduce_partial   s    rs   c             C   s   t j| f||S )N)	functoolspartial)rp   r   rq   r   r   r   ro      s    ro   c             C   s   ddl m} t|| ffS )Nr   )	DupSocket)rb   rv   _rebuild_socket)ra   rv   r   r   r   _reduce_socket   s    rx   c             C   s   | j  S )N)r<   )Zdsr   r   r   rw      s    rw   c             C   s"   t | j }t|| j| j| jffS )N)rE   r^   rw   familyr   proto)ra   dfr   r   r   rx      s    c             C   s   | j  }tj||||dS )N)r^   )r<   rO   )r{   ry   r   rz   re   r   r   r   rw      s    c               @   s`   e Zd ZeZeZeZeZeZej	dkr4e
Z
eZeZneZeZeZeZeZeZeZeZdd ZdS )AbstractReducerr   c             G   sN   t tt jt t ttjt t ttj	t t t
jt t tjt d S )N)r	   r   rk   rl   rj   rX   appendrn   int__add__rt   ru   rs   rO   rx   )r   r   r   r   r   r     s
    zAbstractReducer.__init__N)r#   r$   r%   r   r	   r
   r   r   sysplatformr.   r-   r,   rF   rG   rE   rj   rn   ro   rx   rw   r   r   r   r   r   r|      s$   
r|   )	metaclass)N)NF)/abcr   r   r&   rt   r   r=   r(   rO   r   rd   r   __all__r   hasattrrc   ZPicklerr   r	   r
   r/   r-   r.   r   r   objectr,   rL   rQ   rF   rG   rE   rj   rk   r   rl   rn   rX   r}   r~   r   rs   ro   ru   rx   rw   r|   r   r   r   r   <module>
   sb   




#
