+
    :ia                        ^ RI t ^ RIHtHt ^ RIt^ RIt^ RIt^ RIHtH	t	 ^ RI
HtHtHt ^ RIHt ]R!9   d
   ^ RIHt ^tM]R#9   d   M]! ]4      h]! RR.4      t]! R	R
4      t^tR tR tR t]! ]P6                  4      t]! ]P:                  4      t]],          t]! ]! RR.4      4      t ]PB                  t!]PD                  t" ! R R]#4      t$^t%^t&^t']PP                  PS                  R4      t*]R$9   d   R t+M]R%9   d   R t+M]! ]4      hR t, ! R R]#4      t- ! R R]#4      t.R t/ ! R R].4      t0 ! R R]04      t1]R"8X  d   ]0t2M]R!9   d   ]1t2M]R"8  d   ].t2M]! ]4      h ! R R ]Pf                  4      t4R# )&    N)
namedtupleOrderedDict)CodeType
ModuleType)errorsutils	serialize)	PYVERSION)_inline_cache_entriesopcode_infoargsize_ExceptionTableEntryzstart end target depth lastic                F    \        V RR4      pV'       d   \        W4      # V # )z
Objects that wraps function should provide a "__numba__" magic attribute
that contains a name of an attribute that contains the actual python
function object.
	__numba__Ngetattr)objattrs   & Q/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/core/bytecode.pyget_function_objectr   !   s%     3T*Ds!!J    c           	     2    \        V R\        V RR4      4      # )z"Shamelessly borrowed from llpython__code__	func_codeNr   )r   s   &r   get_code_objectr   -   s    3
GCd$CDDr   c                     . pV  F9  p\         P                  P                  V4      pVf   K(  VP                  V4       K;  	  V# N)disopmapgetappend)seqlstscs   &   r   _as_opcodesr&   2   s:    
CIIMM!=JJqM  Jr   RETURN_VALUERAISE_VARARGSc                   j   a  ] tR t^Ct o RtR
tR t]R 4       t]R 4       t	R t
R t]R 4       tRtV tR	# )ByteCodeInstz
Attributes
----------
- offset:
    byte offset of opcode
- opcode:
    opcode integer value
- arg:
    instruction arg
- lineno:
    -1 means unknown
c                |    Wn         W@n        W n        \        P                  V,          V n        W0n        RV n        R# )   N)offsetnextopcoder   opnamearglinenoselfr.   r0   r2   
nextoffsets   &&&&&r   __init__ByteCodeInst.__init__R   s-    	jj(r   c                (    V P                   \        9   # r   )r0   JUMP_OPSr5   s   &r   is_jumpByteCodeInst.is_jumpZ       {{h&&r   c                (    V P                   \        9   # r   )r0   TERM_OPSr;   s   &r   is_terminatorByteCodeInst.is_terminator^   r>   r   c                4   V P                   '       g   Q h\        R9   d>   V P                  R R 4       9   d%   V P                  V P                  ^,          ,
          # M\        R9   dE   V P                  R R 4       9   d,   V P
                  V P                  ^,
          ^,          ,
          # Mj\        R9   dE   V P                  R R	 4       9   d,   V P
                  V P                  ^,
          ^,          ,
          # M\        R
9   d   M\        \        4      h\        R9   dk   V P                  \        9   d%   V P                  V P                  ^,          ,           # V P                  \        9   g   Q hV P                  ^,          ^,
          # \        \        4      h)   c              3   P   "   T F  p\         P                  V,          x  K  	  R # 5ir   r   r   .0ks   & r   	<genexpr>/ByteCodeInst.get_jump_target.<locals>.<genexpr>m   s(      H)G1  #yy||)G   $&c              3   P   "   T F  p\         P                  V,          x  K  	  R # 5ir   rF   rG   s   & r   rJ   rK   r   s!      ;(91  #yy||(9rL   c              3   P   "   T F  p\         P                  V,          x  K  	  R # 5ir   rF   rG   s   & r   rJ   rK   v   s(      L)K1  #yy||)KrL   rD      rD      )JUMP_BACKWARDJUMP_BACKWARD_NO_INTERRUPTrD      )rT   )rD      )rT   POP_JUMP_BACKWARD_IF_TRUEPOP_JUMP_BACKWARD_IF_FALSEPOP_JUMP_BACKWARD_IF_NONEPOP_JUMP_BACKWARD_IF_NOT_NONErD   
   )r`   rY   rW   rP   rR   )	r<   r
   r0   r/   r2   r.   NotImplementedErrorJREL_OPSJABS_OPSr;   s   &r   get_jump_targetByteCodeInst.get_jump_targetb   s^    ||||**{{ H)GH H yyDHHqL11H *${{ ;(9; ;{{dhhla%777; +%{{ L)KL L {{dhhla%777L *$%i00EE{{h&yy488a<//{{h...xx!|a''%i00r   c                V    R V P                   V P                  V P                  3,          # )z%s(arg=%s, lineno=%d))r1   r2   r3   r;   s   &r   __repr__ByteCodeInst.__repr__   s     &$++txx)MMMr   c                r    V P                   P                  R4      '       d   ^# V P                   R8X  d   R# ^ # )zBEffect of the block stack
Returns +1 (push), 0 (none) or -1 (pop)
SETUP_	POP_BLOCKr-   )r1   
startswithr;   s   &r   block_effectByteCodeInst.block_effect   s0    
 ;;!!(++[[K'Ir   )r2   r3   r/   r.   r0   r1   N)r.   r/   r0   r1   r2   r3   )__name__
__module____qualname____firstlineno____doc__	__slots__r7   propertyr<   rA   re   rh   rn   __static_attributes____classdictcell____classdict__s   @r   r*   r*   C   s_      FI ' ' ' ''1RN 	 	r   r*   NOPc              #   &  "   . p\         P                  ! V 4       F  w  r#rEVP                  W4V34       K  	  \        V4       FH  w  pw  r4pV^,           \	        V4      8  d   W^,           ,          ^ ,          pM\	        V 4      pW4WV3x  KJ  	  R# 5i)r,   N)r   _unpack_opargsr!   	enumeratelen)codebufistart_offsetopr2   next_offsets   &      r   r}   r}      s     (+(:(:4(@$ARJJ#./ )A*3C.&A&#1us3x!a%jm!$iS66 +9s   BBc              #    "   ^ p\        V 4      p^ ;r4WB8  EdM   W,          pV\        ,          pV\        8  d   W,          V,          p\        \        4       F&  pW`WG,           ,          ^V,          ,          ,          pK(  	  V\        ,          p\
        R9   d!   V\        V,          \        ,          ,          pM\
        R9   d   M\        \
        4      hV\        8X  d$   V\        Wd3x  V^\        ,          ,          pTpK  MURpV\        ,          p\
        R9   d!   V\        V,          \        ,          ,          pM\
        R9   d   M\        \
        4      h^ pW5Wd3x  TpEKS  R# 5i)zX
Returns a 4-int-tuple of
(bytecode offset, opcode, argument, offset of next bytecode).
NrV   r`   rY   )r   CODE_LENHAVE_ARGUMENTrangeARG_LENr
   r   	INSTR_LENrb   EXTENDED_ARG
OPCODE_NOP
NO_ARG_LEN)r   extended_argnr.   r   r   r2   js   &       r   r}   r}      s<    
 IeBMA]"g,wA;1q511C (W
* .r2Y>>A"44-i88% ":s66#&!g+#5LF & Z
* .r2Y>>A"44-i88Ls&&Fa s   E&E(c              #     "   ^ \         R\        3x  V  F;  w  rr4V\        9   d   V\        ,          pV\        ,           W#V\        ,           3x  K=  	  R# 5i)zhPatch the bytecode stream.

- Adds a NOP bytecode at the start to avoid jump target being at the entry.
N)r   _FIXED_OFFSETrd   )	bc_streamr.   r0   r2   r6   s   &    r   _patched_opargsr      sN      j$
..+4'X= C}$f:3MMM	 ,5s   AAc                   B   a  ] tR t^t o R tR tR tR t]tR t	Rt
V tR# )ByteCodeIterc                ~    Wn         \        \        \        V P                   P                  4      4      4      V n        R # r   )r   iterr   r}   co_code)r5   r   s   &&r   r7   ByteCodeIter.__init__   s'    			8I8I)JKL	r   c                    V # r    r;   s   &r   __iter__ByteCodeIter.__iter__  s    r   c                ,    \        V P                  4      # r   )r/   r   r;   s   &r   _fetch_opcodeByteCodeIter._fetch_opcode  s    DIIr   c                H    V P                  4       w  rr4V\        WVVR 7      3# ))r.   r0   r2   r6   )r   r*   r4   s   &    r   r/   ByteCodeIter.next	  s0    *.*<*<*>'|6c/9; ; 	;r   c                    ^ p\        V4       F0  p\        V P                  4      w  rEW%^V,          ,          ,          pK2  	  V# )r   )r   r/   r   )r5   sizer   r   _offsetbytes   &&    r   read_argByteCodeIter.read_arg  s;    tA OMGAE?"C  
r   )r   r   N)rp   rq   rr   rs   r7   r   r   r/   __next__r   rw   rx   ry   s   @r   r   r      s+     M;
 H r   r   c                   l   a  ] tR tRt o RtRtR t]R 4       tR t	R t
R tR t]R	 4       tR
 tRtV tR# )	_ByteCodei  z>
The decoded bytecode of a function, and related information.
c                   VP                   p\        R  \        P                  ! VP                  4       4       4      pVP                  ^ 4       \        \        V4      4      pV P                  WB4       Wn	        VP                  V n
        VP                  V n        VP                  V n        VP                  V n        VP                  V n        W@n        \!        V4      V n        R# )c              3   :   "   T F  q\         ,           x  K  	  R # 5ir   )r   )rH   xs   & r   rJ   %_ByteCode.__init__.<locals>.<genexpr>#  s     M0L1&&0Ls   N)r   setr   
findlabelsr   addr   r   _compute_linenofunc_idco_namesco_varnames	co_constsco_cellvarsco_freevarstablesortedlabels)r5   r   r   r   r   s   &&   r   r7   _ByteCode.__init__   s    ||Mt||0LMM

1 L./U)++++++
Vnr   c                4   \         P                  ! V4       F'  w  r4V\        ,           pWQ9   g   K  WAV,          n        K)  	  VP                  pVP                  4        F6  pVP                  e    VP                  ^ 8  d   VP                  pK0  Wgn        K8  	  V# )z9
Compute the line numbers for all bytecode instructions.
)r   findlinestartsr   r3   co_firstlinenovalues)clsr   r   r.   r3   
adj_offsetknowninsts   &&&     r   r   _ByteCode._compute_lineno4  s}    
 "006NF-/J"+1j!( 7 ##LLND{{&4;;!+;#	 #
 r   c                H    \        V P                  P                  4       4      # r   )r   r   r   r;   s   &r   r   _ByteCode.__iter__G  s    DJJ%%'((r   c                (    V P                   V,          # r   r   r5   r.   s   &&r   __getitem___ByteCode.__getitem__J  s    zz&!!r   c                    WP                   9   # r   r   r   s   &&r   __contains___ByteCode.__contains__M  s    ##r   c                x   a a V 3R  loRP                  V3R lS P                  P                  4        4       4      # )c                 P   < V ^,          P                   SP                  9   d   R# R# )r,   > )r.   r   )r   r5   s   &r   label_marker$_ByteCode.dump.<locals>.label_markerQ  s    t{{dkk)r   
c              3      <"   T F6  pV^,          P                   R8w  g   K  RS! V4      3V,           ,          x  K8  	  R# 5i)r,   CACHEz
%s %10s	%sN)r1   )rH   r   r   s   & r   rJ   !_ByteCode.dump.<locals>.<genexpr>W  s?      4"4QaDKK72 B<?*<q*@AA"4s
   AA)joinr   items)r5   r   s   f@r   dump_ByteCode.dumpP  s5    	 yy 4"&**"2"2"44 4 	4r   c           	     d   / pVP                   pVP                  R\        P                  4      p\	        V\
        4      '       d   VP                  pVP                  4        FG  pVP                  R8X  g   K  V\        VP                  4      ,          p	W9  g   K:   Wi,          p
WV	&   KI  	  V Fe  p\	        V\        4      '       g   K  \        \        V4      4      pVP                  V P!                  WVP"                  VP$                  4      4       Kg  	  V#   \         d    Yy,          p
 Li ; i)zI
Compute the globals used by the function with the given
bytecode table.
__builtins__LOAD_GLOBAL)__globals__r    r   builtins
isinstancer   __dict__r   r1   _fix_LOAD_GLOBAL_argr2   KeyErrorr   r   r   update_compute_used_globalsr   r   )r   funcr   r   r   dglobsr   r   namevaluecosubtables   &&&&&        r   r   _ByteCode._compute_used_globals[  s       99^U^^<h
++((HLLND{{m+ 4TXX >?=/ % $dG # B"h''&|B'7822435<<N O 
  $ / (/s   DD/.D/c                    V P                  V P                  P                  V P                  V P                  V P
                  4      # )z^
Get a {name: value} map of the globals used by this code
object and any nested code objects.
)r   r   r   r   r   r   r;   s   &r   get_used_globals_ByteCode.get_used_globalsx  s8    
 ))$,,*;*;TZZ*...$--I 	Ir   )r   r   r   r   r   r   r   r   N)	r   r   r   r   r   r   exception_entriesr   r   )rp   rq   rr   rs   rt   ru   r7   classmethodr   r   r   r   r   r   r   rw   rx   ry   s   @r   r   r     s^     $I%(  $)"$	4  8I Ir   r   c                 b    \         R9   d
   V ^,	          # \         R9   d   V # \        \         4      h)rD   )rY   rW   rP   rR   r_   )r
   rb   )r2   s   &r   r   r     s,    88ax	j	 
!),,r   c                   H   a a ] tR tRt oV 3R lt]R 4       tR tRtVt	V ;t
# )ByteCodePy311i  c                   < \         SV `  V4       \        P                  ! VP                  4      P
                  p\        \        V P                  V4      4      V n        R # r   )	superr7   r   Bytecoder   r   tuplemapfixup_eh)r5   r   entries	__class__s   && r   r7   ByteCodePy311.__init__  s@    !,,w||,>>!&s4==''B!Cr   c                    \         P                  ! V P                  \        ,           V P                  \        ,           V P
                  \        ,           V P                  V P                  R 7      pV# ))startendtargetdepthlasti)r   r   r  r   r  r	  r
  r  )entouts   & r   r  ByteCodePy311.fixup_eh  sK     &&))m+=1H::-))399

 
r   c                    . pV P                    FI  pVP                  Tu;8:  d   VP                  8  g   K(  M K,  VP                  VP                  V34       KK  	  V'       d   \        V4      ^,          pV# R# )z>
Returns the exception entry for the given instruction offset
N)r   r  r  r!   r
  max)r5   r.   
candidatesr  s   &&  r   find_exception_entry"ByteCodePy311.find_exception_entry  se     
))CyyF,SWW,,!!399c"23 * j/!$CJ r   )r   )rp   rq   rr   rs   r7   staticmethodr  r  rw   rx   __classcell__r  rz   s   @@r   r   r     s)     D
  
 
r   r   c                   H   a a ] tR tRt oV 3R lt]R 4       tR tRtVt	V ;t
# )ByteCodePy312i  c                  < \         SV `  V4       R V n        \        P                  ! VP
                  4      P                   Uu. uF  q P                  V4      NK  	  ppV P                  V4      pVP                  '       dH   \        V Uu. uF  q"P                  NK  	  up4      pV Uu. uF  q"P                  V8w  g   K  VNK  	  pp\        V4      V n        R # u upi u upi u upi r   )r   r7   _ordered_offsetsr   r   r   r   r  remove_build_list_swap_patternis_generatorr  r	  r   )r5   r   er  max_exception_targetr  s   &&   r   r7   ByteCodePy312.__init__  s    ! !% <<-??? )*==#? 	  55g> #&''B'Q''B#C  #*N'QXX9M-Mqq'GN!&w# (C Os   CC *C%C%c                    V P                   '       g!   V P                   Uu. uF  qNK  	  upV n         V P                   # u upi r   )r  r   )r5   os   & r   ordered_offsetsByteCodePy312.ordered_offsets  s:    $$$04

$;
1Q
$;D!$$$ %<s   
?c                   R R lp\        4       pRpV'       Ed   Rp\        4       pVP                  4        EFe  pV P                  P                  VP                  4      pV P
                  V P                  V,          ,          pVP                  R9  d   K`  V P
                  V P                  V^,           ,          ,          p	V	P                  R8X  g   V	P                  ^8X  d   K  V P
                  V P                  V^,           ,          ,          p	V	P                  R8X  dY   \        P                  R,          R8w  d   VP                  V	4       V P
                  V P                  V^,           ,          ,          p	V	P                  R8X  g   EKW  \        R9   Ed)   V P                  P                  VP                  4      pV P
                  V P                  V^,
          ,          ,          pVP                  R	8X  g   EK  V P
                  V P                  V^,
          ,          ,          p	\        R9   d   V	P                  R
8X  g   EK  M/\        R9   d   V	P                  R8X  g   EK1  M\        \        4      hV P
                  V P                  V,          ,          p	V	P                  R8X  g   V	P                  ^8X  d   EK  M\        R9   d   V P                  P                  VP                  4      pV P
                  V P                  V^,
          ,          ,          pVP                  R	8X  g   EK  V P
                  V P                  V,          ,          p	V	P                  R8X  g   V	P                  ^8X  d   EKC  M\        \        4      hV! W4      pRpW5,          pEKh  	  EK  V FQ  p
\        V
P                  \         P"                  R,          RV
P$                  4      V P
                  V
P                  &   KS  	  V# )a{  Find the following bytecode pattern:

BUILD_{LIST, MAP, SET}
SWAP(2)
FOR_ITER
...
END_FOR
SWAP(2)

This pattern indicates that a list/dict/set comprehension has
been inlined. In this case we can skip the exception blocks
entirely along with the dead exceptions that it points to.
A pair of exception that sandwiches these exception will
also be merged into a single exception.

Update for Python 3.13, the ending of the pattern has a extra
POP_TOP:

...
END_FOR
POP_TOP
SWAP(2)

Update for Python 3.13.1, there's now a GET_ITER before FOR_ITER.
This patch the GET_ITER to NOP to minimize changes downstream
(e.g. array-comprehension).
c                0    V ^8  d   QhR\         R\        /# )   r  entry_to_remove)listr   )formats   "r   __annotate__BByteCodePy312.remove_build_list_swap_pattern.<locals>.__annotate__  s     	 	d 	6J	r   c                    V P                  V4      ^,
          pV P                  V4      ^,           pV^ 8  d   V\        V 4      8  d   W,          pW,          pVP                  VP                  8X  dU   \        VP                  VP
                  VP                  VP                  VP                  4      W&   V P                  V4       V P                  V4       V  Uu. uF"  pVP                  VP                  8X  d   K   VNK$  	  p pV # u upi )r,   )	indexr   r	  r   r  r  r
  r  remove)r  r'  lower_entry_idxupper_entry_idxlower_entryupper_entryr  s   &&     r   pop_and_merge_exceptionsNByteCodePy312.remove_build_list_swap_pattern.<locals>.pop_and_merge_exceptions  s    %mmO<q@O%mmO<q@O !##g,(F%6%6%%););;/C#))##**#))#))0+G, NN;/ NN?+") A'Qgg)?)?? q'G ANAs   D>DTFSWAPGET_ITER:NrD   NFOR_ITEREND_FORPOP_TOPPOP_ITERr{   N)
BUILD_LIST	BUILD_MAP	BUILD_SET)rD   rQ      rO   )rP   )rR   r`   rY   rW   )r   copyr"  r-  r  r   r1   r2   sysversion_infor   r
   r  rb   r*   r.   r   r   r/   )r5   r  r3  change_to_nopwork_remainingcurrent_nop_fixesentryr-  	curr_inst	next_instr   s   &&         r   r  ,ByteCodePy312.remove_build_list_swap_pattern  s'   8	2 n #N #  ,,225;;? !JJt';';E'BC	## ,9 9  !JJt';';EAI'FG	 ''61immq6H JJt';';EAI'FG	
 ##z1 ''+z9)--i8 $

4+?+?	+J KI '':5 22 !0066uyyAE $

4+?+?	+J KI$++y8  $

4+?+?	+J KI K/(//9<$  ="k1(//:=$  > 2)<< $

4+?+?+F GI$++v5)--1:L "== !0066uyyAE $

4+?+?	+J KI$++y8  $

4+?+?+F GI$++v5)--1:L -i88 37B!% 2_ (d "D&24;;3699U3C373799'>DJJt{{# "
 r   )r  r   )rp   rq   rr   rs   r7   rv   r"  r  rw   rx   r  r  s   @@r   r  r    s*     04 % %S Sr   r  c                   t   a  ] tR tRt o Rt]P                  ! ^4      t]R 4       t	R t
R t]R 4       tRtV tR# )	FunctionIdentityil  z
A function's identity and metadata.

Note this typically represents a function whose bytecode is
being compiled, not necessarily the top-level user function
(the two might be distinct).
c                x   \        V4      p\        V4      p\        P                  ! V4      pV'       g   \        P
                  ! RV,          4      h VP                  pV ! 4       pW&n	        WVn
        VP                  R4      R,          Vn        W6n        \        P                  ! V4      Vn        VP                   f   \        P"                  MVP                   P                  Vn        \        P&                  ! V4      Vn        WFn        VP,                  Vn        VP0                  Vn        \5        VP6                  4      Vn        \;        VP6                  4      Vn        \?        V P@                  4      pRPC                  VP                  V4      Vn"        Wvn#        V#   \         d    TP                  p ELYi ; i)z4
Create the FunctionIdentity of the given function.
z %s does not provide its bytecode.z{}${}r-   )$r   r   r   pysignaturer   ByteCodeSupportErrorrr   AttributeErrorrp   r   func_qualnamesplit	func_namer   inspect	getmodulemodule_dynamic_modnamemodnameisgeneratorfunctionr  pysigco_filenamefilenamer   firstlinenor   
parameters	arg_countr(  	arg_namesr/   _unique_idsr)  unique_name	unique_id)r   pyfuncr   r   rZ  rQ  r5   uids   &&      r   from_functionFunctionIdentity.from_functionv  sg   
 #6*t$!!$'--2T9; ;	* --M u	*&,,S1"5	''-;;. ..![[11 	 $77=
((..U--.e../
 3??#">>$*<*<cB5  	* MMM	*s   F F98F9c                8    V P                  V P                  4      # )z:Copy the object and increment the unique counter.
        )rf  r   r;   s   &r   deriveFunctionIdentity.derive  s     !!$)),,r   c                .    \        V P                  R7      # )$
NOTE: part of ReduceMixin protocol
)rd  )dictr   r;   s   &r   _reduce_statesFunctionIdentity._reduce_states  s     499%%r   c                $    V P                  V4      # )rl  )rf  )r   rd  s   &&r   _rebuildFunctionIdentity._rebuild  s    
   ((r   )r_  r`  r   r\  r]  r   rS  rQ  r  rX  rV  rZ  rc  rb  N)rp   rq   rr   rs   rt   	itertoolscountra  r   rf  ri  rn  rq  rw   rx   ry   s   @r   rK  rK  l  sK      //!$K' 'R-
& ) )r   rK  )rW   rP   rR   rY   r   rO   r?  )5rA  collectionsr   r   r   rT  rs  typesr   r   
numba.corer   r   r	   numba.core.utilsr
   r0   r   r   rb   r   r   r   r   r   r&   	frozensethasjrelrc   hasjabsrd   r:   r@   r   r   objectr*   r   r   r   r1   r-  r   r}   r   r   r   r   r   r  ByteCodeReduceMixinrK  r   r   r   <module>r     s   
 / 
   & / / & ++,I$$
i
(( 4!"8"@B  	E
 S[[!S[[!h[./!BCD!!U6 Up 

ZZe$
 ""	7 --8t i
((N6 4fI fIR-I >vM vr H--HH
i
((D)y,, D)r   