Jz`f SrSSKrSSKrSSKrSSKrSSK7 SSKJrJrJ r J r J r J r J r Jr SSKJr /SQ\-rC\R"\R$\R&\\\4r\Sr\SrS r\S r\S r\S r\S r\Sr \Sr!\Sr"\Sr#\Sr$\Sr%\Sr&\Sr'\Sr(\Sr)\Sr*\Sr+\,"\-5r.\/"\5r0\Rb"5Hur2r3\2\.\3'\3\0\2'M \ Rb"5VVVs0sHupUHo"U_M M snnnr4Sr5SuSSSSSS.Sjjr6SuSSSSS.Sjjr7S S!S"S#S$S%S&S'S(S)S*. r8S+r9"S,S-5r:\:"5r;S.rS1r?S2r@SS3.S4jrA\R"S5/S6QS/S7-S89rC\R"S9/S:Q/S;QS89rDS<\DRZlS=\DR lS>\DRlS?\DRlS@\DRlSA\DRlSB\DRlSC\DRlSD\DRlSE\DRlSF\DRlSG\DRl\R"SHSI5rO"SJSK\O5rPSLrQSMrRSNrSSOrT"SPSQ\D5rU"SRSS5rV"STSU5rWSSSSV.SWjrXSXrYSYrZSZr[S[r\S\r]S]r^SvS^jr_SwSSSSS.S_jjr`SSSSSS.S`jraSxSbjrbScrcSdrdSySSaSSSSSe.SfjjreSwSgjrfShrg\`rhSiriSj\iSk- -rjSlrkSmrlSnrmSornSpro"SqSr5rpSsrq\rSt:Xa\q"5 ggs snnnf)zz0Disassembler of Python byte code into mnemonics.N)*)__all__ _cache_format_inline_cache_entries_nb_ops_intrinsic_1_descs_intrinsic_2_descs_specializations_specialized_opmap) get_executor) code_infodis disassembledistbdiscofindlinestarts findlabels show_codeget_instructions InstructionBytecode CONVERT_VALUESET_FUNCTION_ATTRIBUTE)defaults kwdefaults annotationsclosureENTER_EXECUTOR LOAD_CONST RETURN_CONST LOAD_GLOBAL BINARY_OP JUMP_BACKWARDFOR_ITERSEND LOAD_ATTRLOAD_SUPER_ATTRCALL_INTRINSIC_1CALL_INTRINSIC_2LOAD_FAST_LOAD_FASTSTORE_FAST_LOAD_FASTSTORE_FAST_STORE_FASTCACHEcT[XS5$![a Of=f[XS5$)zAttempts to compile the given source, first as an expression and then as a statement if the first approach fails. Utility function to accept strings in functions that otherwise expect code objects evalexec)compile SyntaxError)sourcenames /usr/lib64/python3.13/dis.py _try_compiler6As3 vV,,    6 ((s  Ffiledepth show_cachesadaptive show_offsetsc jUc [XUUS9 g[US5(a URn[US5(a URnOY[US5(a URnO;[US5(a UR nO[US5(a UR n[US5(ah[URR55nUH>upx[U[5(dM[S U-US 9 [XX#XES 9 [US 9 M@ g[US 5(a [XX#XES 9 g[U[ ["45(a|[%U5n S['[)['U 555-n [+UU(a*['[)[-['U5S- S555OSU US9n [/U S9n [1X U S9 g[U[(5(a [3XX#XES 9 g[S[5U5R6-5e![an [S XS 9 Sn A GNSn A ff=f)aDisassemble classes, methods, functions, and other compiled objects. With no argument, disassemble the last traceback. Compiled objects currently include generator objects, async generator objects, and coroutine objects, all of which store their code object in a special attribute. Nr8r:r;r<__func____code__gi_codeag_codecr_code__dict__zDisassembly of %s:r8r7zSorry:co_code'r)r8 offset_width label_widthr:) labels_map) arg_resolver formatter(don't know how to disassemble %s objects)rhasattrr?r@rArBrCsortedrDitems isinstance _have_codeprintr TypeError_disassemble_recursivebytes bytearray_make_labels_maplenstr Formattermax ArgResolver_disassemble_bytes_disassemble_strtype__name__)xr8r9r:r;r<rRr4x1msgrLrKrNrMs r5rrNs y 48' )q* JJq* JJ I   II I   II I   IIq*qzz'')* !HD"j))*T1=4UV^z4  ! I  q5\d A Ay) * *%a( #c#j/233 4NZ3s3s1vz43H/I+J`a*5*57 #j9 19M As  UV^zBQ(()* *#!4(C334s H H2 H--H2r>c tUcq[[S5(a[RRnO[RnUR(aURoR(aM[URRURXX4S9 g![ a [ S5Sef=f)z2Disassemble a traceback (default: last traceback).Nlast_excz no last traceback to disassembler>) rPsysrh __traceback__last_tracebackAttributeError RuntimeErrortb_nextrtb_framef_codetb_lasti)tbr8r:r;r<s r5rrs z MsJ''\\//''jjrzz"jjj ""BKKd^fC MAB L Ms/B B B7 OPTIMIZED NEWLOCALSVARARGS VARKEYWORDSNESTED GENERATORNOFREE COROUTINEITERABLE_COROUTINEASYNC_GENERATOR) rHrG @ic /n[S5HNnSU-nX-(dMUR[RU[ U555 X-nU(aMN O UR[ U55 SR U5$)z+Return pretty representation of code flags.rr}, )rangeappendCOMPILER_FLAG_NAMESgethexjoin)flagsnamesiflags r5 pretty_flagsrsx E 2Y!!t << LL,00s4yA B ME5 !  SZ 99U c\rSrSrSrSrg)_Unknowncg)Nz selfs r5__repr___Unknown.__repr__srrN)rc __module__ __qualname____firstlineno__r__static_attributes__rrr5rrsrrc[US5(a URn[US5(a URnOY[US5(a URnO;[US5(a URnO[US5(a UR n[ U[5(a [US5n[US5(aU$[S[U5R-5e) zDHelper to handle methods, compiled or raw code objects, and strings.r?r@rArBrCz rFrO) rPr?r@rArBrCrSr\r6rVrbrcrds r5_get_code_objectrsq* JJq* JJ I   II I   II I   II!S O ,q) >G$$% &&rcL[UnU[;a[[U$U$N) _all_opnamedeoptmap _all_opmap)opr4s r5_deoptoprs& r?D)-)9:htn %ArArcU(aURn/nSn[S[U5S5HnX%X%S-pvU[:Xa4[ X5nU(a!UR5UR5pvSnURUR55 URUR55 M U(dU$SRU5$UR$![ [ 4a SnNf=f)NFrrHr}Tr) _co_code_adaptiverr[rr ValueErrorrm get_opcode get_opargrto_bytesrrF) cor;coderesfoundrrargexs r5_get_code_arrayrs##q#d)Q' 'AgtaCy^#%b,B mmor||~ E JJr{{} % JJs||~ & '!t3chhsm3zz#L1Bs C!!C65C6c*[[U55$)z1Formatted details of methods, functions, or code.)_format_code_inforrs r5r r s -a0 11rcN/nURSUR-5 URSUR-5 URSUR-5 URSUR-5 URSUR -5 URSUR -5 URSUR-5 URS[UR5-5 UR(aAURS 5 [UR5HnURS U-5 M UR(aAURS 5 [UR5HnURS U-5 M UR(aAURS 5 [UR5HnURS U-5 M UR(aAURS5 [UR5HnURS U-5 M UR(aAURS5 [UR5HnURS U-5 M SR!U5$)NzName: %szFilename: %szArgument count: %szPositional-only arguments: %szKw-only arguments: %szNumber of locals: %szStack size: %szFlags: %sz Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables: )rco_name co_filename co_argcountco_posonlyargcountco_kwonlyargcount co_nlocals co_stacksizerco_flags co_consts enumerateco_names co_varnames co_freevars co_cellvarsr)rlinesi_ci_ns r5rrs E LL(2::56 LL(2>>9: LL(2>>9: LL023H3HHI LL(2+?+??@ LL(2==89 LL(2??:; LL(< +DDE || \"R\\* *C LLS ) * {{ XR[[) *C LLS ) * ~~ &'R^^, *C LLS ) * ~~ &'R^^, *C LLS ) * ~~ &'R^^, *C LLS ) * 99U rrEc*[[U5US9 g)zuPrint details of methods, functions, or code to *file*. If *file* is not provided, the output is printed on stdout. rEN)rUr )rr8s r5rr s  )B-d#r Positions)lineno end_lineno col_offsetend_col_offsetrG)r _Instruction) opnameopcoderargvalargreproffset start_offset starts_line line_numberlabel positions cache_info)NNNz!Human readable name for operationzNumeric code for operationz6Numeric argument to operation (if any), otherwise Nonez4Resolved arg value (if known), otherwise same as argz0Human readable description of operation argumentz1Start index of operation within bytecode sequencez|Start index of operation within bytecode sequence, including extended args if present; otherwise equal to Instruction.offsetz9True if this opcode starts a source line, otherwise FalsezGsource line number associated with this opcode (if any), otherwise NonezFA label (int > 0) if this instruction is a jump target, otherwise NonezPdis.Positions object holding the span of source code covered by this instructionzGlist of (name, size, data), one for each cache entry of the instruction_ExceptionTableEntryBasezstart end target depth lastic\rSrSrSrg)_ExceptionTableEntryiDrN)rcrrrrrrr5rrDsrrc0[R"US5$Nr)rrrs r5_get_cache_sizerJs $ $VQ //rc[U5n[[U5nU[;a([ U5(aU*nUS-US--nUSU-- nU$U[ ;aUS-nU$SnU$)zcGets the bytecode offset of the jump target if this is a jump instruction. Otherwise return None. rHN)rrrhasjrel_is_backward_jumphasjabs)rrrdeopcachestargets r5_get_jump_targetrMs Bz z-->z ())rrJrKrrrUr8r _NO_LINENOrrreprrljust _OPNAME_WIDTHrr^r[rjust _OPARG_WIDTHrrrstrip) rrrrrJrKnew_source_linefields lineno_fmtrlblr opname_excesss r5r Formatter.print_instruction_lines(( (( && '!+, ,,, < Lz [])r8rUlasti start_label end_label target_labelr9)rexception_entriesr8entryr6startendrs r5print_exception_tableFormatter.print_exception_tablesyy  #$ /* ^$)KKR))oo++E7%uE&EKK=%QX\]  ^ r)r:r8rrJrK)NrrrrF)F) rcrrrrrrr>rrrr5r]r]sNO27'"$19f ^rr]c0\rSrSrSSjrSrSrSrSrg) r_i NcHXlX lX0lU=(d 0Ulgrrrvarname_from_opargrL)rrrrCrLs r5rArgResolver.__init__ s" "4$*rc[U5nU[;aUS-$U[;a<[U5(aU*OUnUS-US--n[ [ U5nUSU-- nU$gNrH)rrrrrr)rrrrr signed_argrrs r5offset_from_jump_arg ArgResolver.offset_from_jump_argsl| 7?7N W_!24!8!8#cJaZ*Q,.F$[%67F a&j FMrc:URRUS5$r)rLr)rrs r5get_label_for_offset ArgResolver.get_label_for_offsets""6400rc^^URcSOURRnSnSn[U5nTGbrTnU[;a[ UTUR 5upVXV4$U[ ;aU[:Xa*[TS-U5upVTS-(a U(aUS3nXV4$U[:Xa*[TS-U5upVTS-(a U(aUS3nXV4$U[:Xa*[TS-U5upVTS-(a U(aUS3nXV4$[TU5upVXV4$U[;d U[;a,URUTU5nURU5nSU3nXV4$U[[ ["4;aFTS- n TS-n [XR$5up[XR$5upU S -U-nX4nXV4$U[&;d U[(;a[TUR$5upVXV4$U[*;a![,TS - nUnTS -(aS US 3nXV4$U[.:XaS[0[2[44TnSTnXV4$U[6:Xa+S R9U4Sj[;[<555nXV4$U[>:Xa[@TupXV4$U[B:Xa [DTnXV4$U[F:Xa [HTnXV4$)NrrHr}z + NULLz + NULL|selfrGzto Lrrrzbool(r&)rr\r(asciic3H># UHupTSU--(dMUv M g7f)r}Nr).0rsrs r5 1ArgResolver.get_argval_argrepr..Ts&$5$!'*ad|%&A$5s" ")%r __getitem__rhasconst_get_const_inforhasnamer!_get_name_infor&r'hasjumphasexcrHrKr*r+r,rChaslocalhasfree hascomparecmp_oprr\r(rOrrrFUNCTION_ATTR_FLAGSr"rr(rr)r )rrrrget_namerrrr1arg1arg2val1argrepr1val2argrepr2_s ` r5get_argval_argreprArgResolver.get_argval_argrepr!s::-44::3I3I| ? Fx"1$T^^"L^];&&4S!VX&FOFaW%,IW"5TSY&&4S!VX&FOFaW%,I\":LK_,&4S!VX&FOFaW%,I\":DA'5S(&COFG@?DFN222sFC//7 ,65-/CEZ[[axRx!/6M6M!N!/6M6M!N"T/H4('!TW_"0d6M6M"N$##q) 8 %gYa0G&T51#66s;//))$5)0<  >>rc [nUbX!nU$)zHelper to get the value of the const in a hasconst op. Returns the dereferenced constant if this is possible. Otherwise (if it is a LOAD_CONST and co_consts is not provided) returns the dis.UNKNOWN sentinel. UNKNOWN)rrrrs r5_get_const_valuerx|sF MrcL[XU5nU[La [U5OSnX44$)zHelper to get optional details about const references Returns the dereferenced constant and its repr if the value can be calculated. Otherwise returns the sentinel value dis.UNKNOWN for the value and an empty string for its repr. r)rxrwr()rrrrrs r5rWrWs*by 1F$G3d6lG ?rc 0Ub U"U40UD6nX34$[S4$)zHelper to get optional details about named references Returns the dereferenced name as both value and repr if the name list is defined. Otherwise returns the sentinel value dis.UNKNOWN for the value and an empty string for its repr. rrv) name_indexra extrainfors r5rYrYs+*2 2~{rc[U5nUS-nUS-(a#US-n[U5nX!S--nUS-(aM#U$)N?r)next)iteratorbvals r5 _parse_varintrsJ XA b&C B$   N t  B$$ Jrc ,[UR5n/n[U5S-n[U5S-nX4-n[U5S-n[U5nUS- n[US-5n UR [ X5XhU 55 Mj![ a Us$f=f)NrHr})iterco_exceptiontablerboolrr StopIteration) rrentriesr<lengthr=rdlr9r6s r5_parse_exception_tablersD**+HG !(+A-E"8,Q.F.C"8,Q.Fx(B!GEAJE NN/F5Q R sA+B BBc[US;$)N)r#JUMP_BACKWARD_NO_INTERRUPTr)rs r5rrs ":8 88rc## U=(d UnU=(d [S5nSnSnSn[U5GH,uppUbX;nU(aXnUbXr-nOSn[[US56n [ U 5nX n U(aUR XU 5unnO U [ U 5nn[[U5n[U5Hn[US5 M U(aO/n[[UR5H*unnX S-U S-SU--nURUUU45 M, OSnU(aURU 5OSn[[U XUUXXhUU U5 v GM/ g7f)zIterate over the instructions in a bytecode string. Generates a sequence of Instruction namedtuples giving the details of each opcode. rFNrH)r_unpack_opargsrrrrir(rrrrrrRrrKr)rrnrrorprMrlocal_line_numberrrrrrrrrrrrhrr4rrrs r5rtrts")TM+48LKK)7 )F"8%b  ! .K$.$6! ,/= " tL"56 | \ *==bvNOFG!49GF T!23v #A r " # J+F4L9??A 6 dQJ QX(=>!!4t"45 6J=I 11&9t+b/2FG J8 8A"8sE#E%c [[U55n[U5n[URUS9nS[ [ [ U555-n [U[U5U(a4[ [ [[ UR5S- S555OSU US9n [URURURUS9n [[X5XXpR!5URXS9 g ) zDisassemble a code object.)r:rGrHrIrrrB)r:rorprMrNN)rqrrrZrFr[r\r]_get_lineno_widthr^r_rrrsr`rro) rr6r8r:r;r<rnr:rLrKrNrMs r5rrsnR()J.r2!"**@QRJc#c*o.//Kt'8'DS_s3s3rzz?Q3F/M+N'Oef&1&1 3I %'[[242H2H*46Lr4e):IZ%'ZZlarc [XX4US9 UbUS:aRUbUS- nURH9n[US5(dM[US9 [SU<S3US9 [ XaX#XES9 M; gg) Nr>rr}rFrEzDisassembly of r#r7)rrrPrUrW)rr8r9r:r;r<rds r5rWrW ss;Xde }  AIE Aq)$$4 a1=&%  "rrc[[U55n[U5nUH;upEn nURU5 URU5 URU5 M= [U5n[ [U55VV s0sH upXS-_M n nn UH<n XR U lXRU lXRU l M> U $s sn nf)Nr}) setraddrQrr<r7r=r8rr9) rpr: jump_targetslabelsr<r=rrhrrrLes r5rZrZsz-01L  F$5 FAq 5 3 6F^F1:6&>1JK+1&A#+KJK ."77+  ' #HH-.  LsCz --cUcg[[SUR55SS9nUS:Xag[S[[ U555nU[[ 5:a#SUR5;a[[ 5nU$)Nr)default)r^filtervaluesr[r\r')rn maxlinenors r5rr+sqF4!2!2!45rBIBq#c)n-.Lc*o%$*2C2C2E*E: r)rr:rorprMrNc 2[XUUUUS9n [XXS9 g)Nrm)r6)rtprint_instructions) rr6rnrr:rorprMrNinstrss r5r`r`8s)%T7B8D9F8D FF v)Irc UHfnURUs=:*=(a8 URS[[[UR55--:*Os nUR XE5 Mh UR U5 grF)rrrrrrr>)rr:rNr6ris_current_instrs r5rrIsr= <<5WW||a/+hu||>T2U"VVVW##E< = ##$56rc 0[[US540UD6 g)zN)rWr6)r3kwargss r5raraRs<8CFCrrrHr}c#|# SnSnSn[S[U5S5HnU(aUS-nMXn[U5n[[U5nU[ ;a2XS-U-nU[ :XaUS-OSnU[:a US[--nOSnSnU[ :Xa US- nXDXW4v MXBS-- nXHXW4v SnM g7f)NrrHr}r~)rr[rrrhasarg EXTENDED_ARG _INT_OVERFLOW) r extended_argextended_args_offsetrrrrrrs r5rr^sL F 1c$i #%  aKF  W| T!23 6>s)l*C)-)=C1H1L},M 11 CL <  A % / !A55LB, ,#$ 3%sB:B<c/n[U5H4up#pEUcM [XEU5nUcMXa;dM#URU5 M6 U$)zXDetect all offsets in a byte code which are jump targets. Return the list of offsets. )rrr)rrrrhrrrs r5rr}sT F,T2%2 ?$Rf5E}" e$ % Mrc#^# SnUR5Hup#nXALdM UnX$4v M g7f)zFind the offsets in a byte code which are start of lines in the source. Generate pairs (offset, lineno) lineno will be an integer or None the offset does not have a source line. FN)co_lines)rlastliner<r=lines r5rrs>H MMOD  H+  s- -c ## [SnURnURn[UR5VVVs/sHu pEnU[ :wdMXV4PM nnnn[ U5HqunupYXQ:XdMUS:dMXxS- n XxS- n U S[;dM4U S[;dMC[U SU SU5n [U SU SU5n X9X4v Ms gs snnnf7f)zFind import statements in the code Generate triplets (name, level, fromlist) where name is the imported module and level, fromlist are the corresponding args to __import__. IMPORT_NAMErHr}rN) opmaprrrrFrrrVrx)rrconstsrrhrropargsrrfrom_oplevel_oplevelfromlists r5 _find_importsrs &K \\F KKE-;BJJ-G))MAqc<'ri)F)#F+6;B aqSkGc{H h&8A;(+B(!hqk6J+GAJ FK|U556)s.;C%CCC%7C%?C% C%+:C%c## [S[S1nURn[UR5Hu p4nXA;dMX%v M g7f)zTFind names of variables which are written in the code Generate sequence of strings STORE_NAME STORE_GLOBALN)rrrrF)r STORE_OPSrrhrrs r5_find_store_namesrsT l nI KKE' 3 1# ?* s >A Ac`\rSrSrSrSSSSSS.SjrSrSr\SSS .S j5r S r S r S r g)rizThe bytecode operations of a piece of code Instantiate this with a function, method, other compiled object, string of code, or a code object (as returned by compile()). Iterating over this yields the bytecode operations as Instruction instances. NF)rkcurrent_offsetr:r;r<c [U5=UlnUcURUlSUlOX lX'R- Ul[ [ U55UlXlX0l [U5Ul X@l XPl X`lgr)rcodeobjrrrk _line_offsetrqr _linestarts_original_objectrrr:r:r;r<)rrdrkrr:r;r<rs r5rBytecode.__init__s,Q// r   //DO !D (O *->-> >D r 23 !,!7!;& (rc 6URnURn[X R5n[ UR UR URUS9n[[XR5URURUR5UUS9$)NrBrm)rrFrZr:r_rrrsrtrr;rrro)rrrprLrMs r5__iter__Bytecode.__iter__s \\ %m5K5KL "R\\)+686L6L.8: 'r=='I262B2B373D3D46OO4E5B4@ B BrcbSRURRUR5$)Nz{}({!r}))format __class__rcrrs r5rBytecode.__repr__s*  !8!8!%!6!68 8r)r:r;cUR(aURnUR(aMU"URRURX#S9$)z.Construct a Bytecode from the given traceback )rr:r;)rnrorprq)clsrrr:r;s r5from_tracebackBytecode.from_tracebacksAjjBjjj KK  r{{   rc,[UR5$)z3Return formatted information about the code object.)rrrs r5info Bytecode.infos ..rc BURnURb URnOSn[R"5n[ XR 5nUR (a*[[[[U5S- S555OSn[URUR5nS[[[U555-n[U[UR5UUUR UR"S9n[%UR&UR(UR*US9n [-UURUR UURUR/5URU US 9 UR15sSSS5 $!,(df  g=f) z3Return a formatted view of the bytecode operations.NrrHrIrrG)r8rrJrKrr:rB)rnrr6r:rorprMrN)rrrrrr;r<r[r\r^rZrFr:r]rrrr:r_rrrsr`ror) rrrr rrJrLrKrNrMs r5r Bytecode.dissS \\    *((FF [[] %f"2}}5DAEARAR3s3s4y1}d#;<=XYL*"**d6L6LMJc#c*o"677K!v/@AQAQ/R/;.9.2.?.?.2.>.> @I'-/[[:<:P:P2<>L t*.*:*:+/+<+<%+151G1G,.OO,=-/ZZ,8)2 4??$7 % % %s EF F) r:rrrr<rkr:rr;rr) rcrrrr rrr classmethodrrrrrrr5rrsI)-Tu_dsx) B8/4u  /"%rrcSSKnUR5nURSSSSS9 URSSSS S9 URS S S S 9 UR5nURS :Xa+Sn[ R RR5nO;URn[URS5nUR5nSSS5 [WUS5n[XbRURS9 g!,(df  N:=f)Nrz-Cz --show-caches store_truezshow inline caches)actionhelpz-Oz--show-offsetszshow instruction offsetsinfile?-)nargsrzrbr0)r:r<)argparseArgumentParser add_argument parse_argsrristdinbufferreadopenr1rr:r<)rparserargsr4r3rrs r5mainrs  $ $ &F ol13 .|79 S9    D {{c!!&&({{ $++t $ #[[]F # 64 (D**9J9JK # #s 7C<< D __main__r)NrNNN)r)r)rN)sr ritypes collectionsrrr _opcodes_allrrrrr r r _opcoder MethodType FunctionTypeCodeTyper staticmethodrbrTrrrr`rrr r!r"r#r$r%r&r'r(r)r*r+r,r-listrrrqrrRr4rrr6rrrrrrwrrrr rr namedtuplerrrrrrrrrrrrrrr*r,rrrr]r_rrxrWrYrrrrtrrWrZr'rr`rrar _INT_BITSrrrrrrrrrc)basefamily specializeds000r5rs6     ! :<    8PT=A38lad"a((,4UUZin    J&'2$($(DJ"7D   i!m$ %>  6,  Z%Z%zL( zFk sM