
    *d5                        d dl Z d dlZd dlZd dlZd dlmZ dej        v sJ d dlZd dlm	Z
 d dlZd dlmZ d dlmZ dZd                    ej        e          Z G d	 d
e          Z e            Zddde_        d Z eed d          Zd Zd Zd fdZd Zd Zd Z d dfdZ!ddefddefdd ed          fdd edd          fd d! ed"          fd#d! ed$          fd%d ed&d          fd'd(e fd)d* ed+          fd,d- e!d.d/          fd0d1 e!d2          fd3d4 e!d5          fd6d7 e!d8e          fgZ"d9 Z#d: Z$d; Z%d< Z&d= Z'd> Z(d? Z)d@ Z*dS )A    N)	find_specpydevd)pydevd_runpy)log)apiz2<filename> | -m <module> | -c <code> | --pid <pid>a0  debugpy {0}
See https://aka.ms/debugpy for documentation.

Usage: debugpy --listen | --connect
               [<host>:]<port>
               [--wait-for-client]
               [--configure-<name> <value>]...
               [--log-to <path>] [--log-to-stderr]
               {1}
               [<arg>]...
c                   .    e Zd ZdZdZdZdZdZdZdZ	dZ
dS )OptionsNF)__name__
__module____qualname__modeaddresslog_tolog_to_stderrtargettarget_kindwait_for_clientadapter_access_token     2lib/python3.11/site-packages/debugpy/server/cli.pyr	   r	   *   s9        DGFMFKOr   r	   noneT)qt
subProcessc                       fd}|S )Nc                      |           }(|k     r"t          d                                        (|k    r"t          d                                        |S )Nzmust be >= {0}zmust be < {0})
ValueErrorformat)snparserstartstops     r   parsezin_range.<locals>.parse:   sj    F1IIU-44U;;<<<T		_33D99:::r   r   )r!   r"   r#   r$   s   ``` r   in_ranger%   9   s/           Lr   c                 n    t          t          t          j                   t          j        d           d S )Nfiler   )printHELPsysstderrexitswitchits     r   print_help_and_exitr1   H   s(    	$SZ    HQKKKKKr   c                 `    t          t          j                   t          j        d           d S )Nr   )r)   debugpy__version__r+   r-   r.   s     r   print_version_and_exitr5   M   s$    	'
HQKKKKKr   c                     | S Nr   xs    r   <lambda>r:   R       q r   c                       fd}|S )Nc                 d     t          |                    }t          t          |           d S r7   )nextsetattroptions)argr0   valuer!   varnames      r   dozset_arg.<locals>.doS   s0    tBxx  %(((((r   r   )rC   r!   rD   s   `` r   set_argrE   R   s)    ) ) ) ) ) ) Ir   c                       fd}|S )Nc                 4    t          t                     d S r7   )r?   r@   )rA   r0   rB   rC   s     r   rD   zset_const.<locals>.do[   s    %(((((r   r   )rC   rB   rD   s   `` r   	set_constrH   Z   s)    ) ) ) ) ) ) Ir   c                       fd}|S )Nc                 P   t           j        t          d          t          |          }|                    d          \  }}}|sd}|}	 t          |          }n# t          $ r d}Y nw xY wd|cxk    rdk     sn t          d          t           _        ||ft           _        d S )Nz---listen and --connect are mutually exclusive:z	127.0.0.1r   i   zinvalid port number)r@   r   r   r>   	partitionint	Exceptionr   )rA   r0   rB   hostsepportr   s         r   rD   zset_address.<locals>.dob   s    ?&LMMM R//#..c4 	DD	t99DD 	 	 	DDD	T####G####2333,s   A A+*A+r   )r   rD   s   ` r   set_addressrS   a   s#    ' ' ' ' '( Ir   c                    d}|                      |          sJ | t          |          d          }t          |          }|t          j        vr"t          d                    |                    t          t          j        |                   }	 |t          u rddd|	                                         }n ||          }n6# t          $ r) t          d                    ||j                            w xY w|t          j        |<   d S )Nz--configure-zunknown property {0!r}TF)truefalsez{0!r} must be a {1})
startswithlenr>   r@   configr   r   typeboollowerrO   r
   )rA   r0   prefixnamerB   expected_types         r   
set_configr`   y   s   F>>&!!!!!s6{{}}DHHE7>!!188>>???-..MUD  !E225;;==AEE!M%((E U U U.55dM<RSSTTTU !GN4s   2C 3C6c                     | S r7   r   r8   s    r   r:   r:      r;   r   Fc                       fd}|S )Nc                    t           _         r| nt          |                    }t          |t                    r	 |                    t          j                              }nc# t          $ rV 	 |                    d          }n<# t          $ r/ dd l	}|                    |
                    d                    }Y nw xY wY nw xY w|t           _        d S )Nutf-8r   F)r@   r   r>   
isinstancebytesdecoder+   getfilesystemencodingUnicodeDecodeErrorlocalegetpreferredencodingr   )rA   r0   r   rj   kindr!   
positionals       r   rD   zset_target.<locals>.do   s    "z7tBxx88fe$$ 
	OOs'@'B'BCC% O O OO#]]733FF) O O O!MMM#]]6+F+Fu+M+MNNFFFOO  s6    &A' '
C2BC6C>C CCCr   )rl   r!   rm   rD   s   ``` r   
set_targetrn      s/                 " Ir   z-(\?|h|-help)z-(V|-version)z--log-toz<path>r   z--log-to-stderrr   z--listenz	<address>listenz	--connectconnectz--wait-for-clientr   z--configure-.+z<value>z--adapter-access-tokenz<token>r    z
<filename>r(   )rm   z-mz<module>module-cz<code>codez--pidz<pid>pidc               #      K   t          t          j                  dk    rBt          j        d         } t          j        d= | V  t          t          j                  dk    @d S d S )N      )rX   r+   argv)rB   s    r   consume_argvrz      sW      
ch--1

HQK ch--1





r   c                     t                      } t                      }	 	 t          |          }n%# t          $ r t	          dt
          z             w xY w|}|                    d          sd}t          D ]#\  }}}t          j	        d|z   dz   |          r n$t	          d|z             || v rt	          d|z             | 
                    |           	  |||           nf# t          $ r( |J t	          d	                    ||                    t          $ r)}t	          d
                    |||                    d }~ww xY wt          j        n:t          j        t	          d          t          j        t          j        dk    rt	          d          t          j        dk    rt          j        rt	          d          t          j        J t          j        J t          j        J d S )NTzmissing target: -rq   z^(z)$zunrecognized switch zduplicate switch z{0}: missing {1}zinvalid {0} {1}: {2}z(either --listen or --connect is requiredrp   z)--adapter-access-token requires --connectru   z(--pid does not support --wait-for-client)setrz   r>   StopIterationr   TARGETrW   switchesrematchaddr   rO   r@   r   r   r   r   r   r   )seenr0   rA   r/   patternplaceholderactionexcs           r   
parse_argvr      s?   55D	B	:r((CC 	: 	: 	:/&8999	:   %% 	F,4 	> 	>(G[&xw-v66  3f<===T>>069:::HHV	VF3OOOO 	M 	M 	M***/66v{KKLLL 	V 	V 	V3::6;PSTTUUU	V >%;> |CDDD#/GLI4M4MDEEEe##(?#CDDD>%%%***?&&&&&s!   / "AC# #:E$EEc                     | t           j        d<   t          j        dt           j                   t	          j        t          j                   t          j        dk    rt	          j	        t          j
                   nat          j        dk    r+t	          j        t          j
        t          j                   n&t          t          t          j                            t          j        rt	          j                     d S d S )Nr   zsys.argv after patching: {0!r}ro   rp   )access_token)r+   ry   r   debugr3   	configurer@   rY   r   ro   r   rp   r   AssertionErrorreprr   )argv_0s    r   start_debuggingr      s     CHQKI.999gn%%%|xw''''		"	"g6RSSSSST',//000 "!!!!!" "r   c                     t           j        } t          |            t          j                            |           r@t          j                            |           }t          j                            d|           nt          j
        d|            t          j        d           t          j        d|            t          j        | d           d S )Nr   zNot a file: {0!r}Pre-launch environment:zRunning file {0!r}__main__)run_name)r@   r   r   ospathisfiledirnamer+   insertr   r   describe_environmentinforunpyrun_path)r   dirs     r   run_filer   
  s    ^FF 
w~~f /goof%%3	%v...6777H!6***	N6J//////r   c                  j   t           j                            dt          d                     t           j        d         } 	 t          t          j                  }||j        } n$# t          $ r t          j        d           Y nw xY wt          |            t          j        d           t          j        dt          j                   	 t          j        } |t          j        d           d S # t"          $ r8 t          j        d           t          j        t          j        d	           Y d S w xY w)
Nr   rq   z*Error determining module path for sys.argvr   zRunning module {0!r}T)
alter_argvzArunpy._run_module_as_main is missing, falling back to run_module.)	alter_sys)r+   r   r   strry   r   r@   r   originrO   r   swallow_exceptionr   r   r   r   _run_module_as_mainAttributeErrorwarning
run_module)r   specrun_module_as_mains      r   r   r     s;    HOOAs2ww Xa[FL(([F L L LJKKKKKL F6777H#W^444<"6
 	7>d;;;;;;	  9 9 9WXXX488888889s$   "A$ $BBC0 0>D21D2c                     t           j                            dt          d                     t	          t
          j        t          d          t          d                    } t          t          d                     t          j	        d           t          j
        dt
          j                   t          | i            d S )Nr   rq   z<string>execrs   r   zRunning code:

{0})r+   r   r   r   compiler@   r   r   r   r   r   eval)rt   s    r   run_coder   @  s    HOOAs2ww7>3z??CKK@@DCII6777H#W^444rNNNNNr   c                     t           j        } t          j        d|            d }t          j                            t          j        j	                  }t          j        
                    |          sJ  ||          }t           j        t           j        t           j        t           j        t           j        d} |t!          j        |                    }d}|                    dd                              dd                              ||          }t          j        d	|                    d
d                     h dt)          |          z  r
J d            t          j                            t          j                            t,          j	                  d          }t          j        
                    |          sJ t.          j                            |           	 dd l}t          j        d|            |                    | |dt7          t	          j        dd                               n%# t:          $ r t          j        d|            Y nw xY wt          j        d|            d S )Nz!Attaching to process with PID={0}c                 h    | /t          t          |                     d                              nd S )Nrd   )list	bytearrayencode)r   s    r   r:   zattach_to_pid.<locals>.<lambda>Q  s,    Q]tIahhw&7&788999PT r   )r   r   r   r   r   a9  
import codecs;
import json;
import sys;

decode = lambda s: codecs.utf_8_decode(bytearray(s))[0] if s is not None else None;

script_dir = decode({script_dir});
setup = json.loads(decode({setup}));

sys.path.insert(0, script_dir);
import attach_pid_injected;
del sys.path[0];

attach_pid_injected.attach(setup);
rq   
)
script_dirsetupzCode to be injected: 
{0};z;
>   r   r   "'zOInjected code should not contain any single quotes, double quotes, or newlines.pydevd_attach_to_processr   z,Injecting code into process with PID={0} ...T DEBUGPY_ATTACH_BY_PID_DEBUG_INFO0)connect_debugger_tracingshow_debug_infoz#Code injection into PID={0} failed:z&Code injection into PID={0} completed.)r@   r   r   r   r   r   r   r3   server__file__existsr   r   r   r   r   jsondumpsreplacer   r}   joinr   r+   appendadd_code_to_python_processrun_python_coderN   getenvrO   reraise_exception)ru   r   r   r   python_codepydevd_attach_to_process_pathr   s          r   attach_to_pidr   M  sd   
.CH0#666TTF!899J7>>*%%%%%
##J ?"2. ' < E F4:e$$%%EK" 	D"%%	r			:U	3	3 
 H);+>+>sE+J+JKKK 	[!1!11Y YXY Y Y %'GLL
((*D% %! 7>>788888HOO1222J))))?EEE"22%)	*Lc R RSS	 	3 	
 	
 	
 	
  J J JCSIIIIIJH5s;;;;;s   &AH9 9IIc                  D   t          t          j                  } 	 t                       nx# t          $ rk}t          t          t                    t          d          z   t          |          z   t          j                   t          j	        d           Y d }~nd }~ww xY wt          j        t          j        t          j                   t          j        rt          j        t          j                   t          j                     t!          j        t          d          | t          j                   	 t$          t&          t(          t*          dt          j                 } |             d S # t.          $ r'}t!          j        d|j        d           Y d }~d S d }~ww xY w)	Nz
Error: r'   rw   z=sys.argv before parsing: {0!r}
         after parsing:  {1!r})r(   rr   rt   ru   z%Debuggee exited via SystemExit: {0!r}r   )level)r   r+   ry   r   rO   r)   r   r*   r,   r-   r@   r   r3   r   r   ensure_loggingr   r   r   r   r   r   r   
SystemExitr   rt   )original_argvr   runs      r   mainr     s   NNM   c$ii#k***SXX5CJGGGG ~!w~&&& #sz"""HOPP  
  	
 

 
 	 
 
 
3SXW	
 	
 	
 	
 	
 	
 	
 	
 	
 	

s-   * 
BA!BB75E. .
F8FF)+r   r   r   r+   importlib.utilr   modulesr   _pydevd_bundler   r   r3   debugpy.commonr   debugpy.serverr   r   r   r4   r*   objectr	   r@   rY   r%   rN   ru   r1   r5   rE   rH   rS   r`   rn   r   rz   r   r   r   r   r   r   r   r   r   r   <module>r      s?  
  				 				 



 $ $ $ $ $ $
 3;  1 0 0 0 0 0              
>
 F           f       '))d33	 	 	 hsAt  
  
 )[        0! ! !* )[e    6 4GH4JKGGH4E4EFIIot4T4TUKK4I4IJKK	4J4JKII>OQU4V4VW	J? GG<R4S4ST JJvRV4W4W4WX	
JJx4H4HI	JJv4F4FGJJuc4J4JK-6  ,' ,' ,'^" " "*0 0 0*< < <B
 
 
B< B< B<J 
  
  
  
  
r   