Ë Õt˼ÅÔIîãóø—dZddlZddlZddl­ddlmZmZddlmZddl m Z ddl m Z Gd„d ej«Zd „Zd „ZGd „d «ZGd„de «ZGd„d«Zedk(rddlmZeddd¬«yy)a³Debug user code with a GUI interface to a subclass of bdb.Bdb. The Idb idb and Debugger gui instances each need a reference to each other or to an rpc proxy for each other. If IDLE is started with '-n', so that user code and idb both run in the IDLE process, Debugger is called without an idb. Debugger.__init__ calls Idb with its incomplete self. Idb.__init__ stores gui and gui then stores idb. If IDLE is started normally, so that user code executes in a separate process, debugger_r.start_remote_debugger is called, executing in the IDLE process. It calls 'start the debugger' in the remote process, which calls Idb with a gui proxy. Then Debugger is called in the IDLE for more. éN)Ú*)ÚFrameÚ Scrollbar)Úmacosx)Ú ScrolledList)ÚListedToplevelcó.‡—eZdZdZˆfd„Zd„Zd„ZˆxZS)ÚIdbz6Supply user_line and user_exception functions for Bdb.có0•—||_t‰|� «y©N)ÚguiÚsuperÚ__init__)Úselfr Ú __class__s €ú'/usr/lib/python3.12/idlelib/debugger.pyrz Idb.__init__ sø€ØˆŒÜ ‰ÑÕócóª—t|«r|j«yt|«} |jj ||«y#t $rYywxYw)zmHandle a user stopping or breaking at a line. Convert frame to a string and send it to gui. N)Ú _in_rpc_codeÚset_stepÚ_frame2messager Ú interactionÚTclError)rÚframeÚmessages rÚ user_linez Idb.user_line$sM€ô ˜Ô Ø �M‰MŒOØ Ü  Ó'ˆð Ø �H‰H× Ñ  ¨%Õ 0øÜò Ù ð ús©AÁ AÁAcóŒ—t|«r|j«yt|«}|jj |||«y)z)Handle an the occurrence of an exception.N)rrrr r)rrÚexc_infors rÚuser_exceptionzIdb.user_exception2s6€ä ˜Ô Ø �M‰MŒOØ Ü  Ó'ˆØ �‰×јW e¨XÕ6r)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrÚ __classcell__)rs@rr r sø„Ù<ôò ö7rr cóÀ—|jjjd«ry|j}|€y|jj}d|vrd|vryt |«S)z)Determine if debugger is within RPC code.zrpc.pyTFÚidlelibÚdebugger)Úf_codeÚ co_filenameÚcountÚf_backr)rÚ prev_frameÚ prev_names rrr:s_€à ‡|�|×Ñ×%Ñ% hÔ/Øà—\‘\ˆ Ø Ð ØØ×%Ñ%×1Ñ1ˆ Ø ˜ Ñ ! j°IÑ&=ðܘJÓ'Ð'rcóÜ—|j}|j}|j}tjj |«}|›d|›�}|j dk7r|›d|j ›d�}|S)z"Return a message string for frame.Ú:Ú?ú: z())r(r)Úf_linenoÚosÚpathÚbasenameÚco_name)rÚcodeÚfilenameÚlinenor5rs rrrIsj€à �<‰<€DØ×Ñ€HØ �^‰^€FÜ�w‰w×Ñ Ó)€HØ� ˜!˜F˜8Ð$€GØ ‡|�|�sÒØ�I˜R § ¡ ˜~¨RÐ0ˆØ €Nrcó¾—eZdZdZdZdZdZdZdZdZ dZ dd„Z d„Z dd„Z d„Zdd„Zd„Zd „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zdd„Zd„Zd„Zd„Z d„Z!y)ÚDebuggerz–The debugger interface. This class handles the drawing of the debugger window and the interactions with the underlying debugger session. Ncó„—|€ t|«}||_||_d|_|j «d|_d|_y)aInstantiate and draw a debugger window. :param pyshell: An instance of the PyShell Window :type pyshell: :class:`idlelib.pyshell.PyShell` :param idb: An instance of the IDLE debugger (optional) :type idb: :class:`idlelib.debugger.Idb` NFr)r ÚpyshellÚidbrÚmake_guiÚ interactingÚ nesting_level)rr=r>s rrzDebugger.__init__cs@€ð ˆ;Ü�d“)ˆC؈Œ ؈ŒØˆŒ Ø � ‰ ŒØ ˆÔ؈Õrcó—‰jdkDr1‰j«‰jjdˆˆfd„«y d‰_‰j j ‰Žd‰_S#d‰_wxYw)zRun the debugger.rédcó"•—‰j‰ŽSr )Úrun)Úargsrs€€rÚzDebugger.run..–sø€¨¨¯©°4©rNTF)rAÚ abort_loopÚrootÚafterr@r>rE)rrFs``rrEz Debugger.runuscù€ð> × Ñ  Ò !Ø �O‰OÔ Ø �I‰I�O‰O˜CÔ!8Ô 9Ø ð %Ø#ˆDÔ Ø�4—8‘8—<‘< Ð&à$ˆDÕ ø˜uˆDÕ ús ÁA+Á+ A4cóT— |j«|jr|jj «y|j r!|j j «d|_|jj«|jj«y#t$rYŒ”wxYw)zClose the debugger and window.N) ÚquitÚ Exceptionr@ÚtopÚbellÚ stackviewerÚcloser=Úclose_debuggerÚdestroy©rÚevents rrQzDebugger.closežsƒ€ð Ø �I‰IŒKð × Ò Ø �H‰H�M‰MŒOØ Ø × Ò Ø × Ñ × "Ñ "Ô $¸ dÔ&6ð � ‰ ×#Ñ#Ô%à �‰×ÑÕøôò Ù ð ús‚B B'Â&B'cóJ —|j}|j|_|jx|_}t|«x|_}|jj d«|jj d«|jd|j«|jjd|j«t|«x|_ }|jjd¬«gx|_ }t|d|j¬«x|_}|j#|«t|d |j$¬«x|_}|j#|«t|d |j(¬«x|_}|j#|«t|d |j,¬«x|_}|j#|«t|d |j0¬«x|_}|j#|«|D]&}|j3d ¬«|jd¬«Œ(t|«x|_}|j4jd¬«|j6s5t9|«|j:_|j6j=d«t?|d|j@|j6¬«|_!|jBjEdd¬«|jFst9|«|j:_#t?|d|jH|jF¬«|_%|jJjEdd¬«|jLs5t9|«|j:_&|jLj=d«t?|d|jN|jL¬«|_(|jPjEdd¬«|jRst9|«|j:_)t?|d|jT|jR¬«|_+|jVjEdd¬«tY|d¬«|_-|jZjd¬«tY|d¬«|_.|j\jdd¬«|j\j_d«|_0t|d¬«|_1|jbjdd¬«t|«|_2|jdjdd¬«t|d¬«|_3|jfjdd¬«|j6ji«r|jA«|jLji«r|jO«|jRji«r|jU«yy) z$Draw the debugger gui on the screen.z Debug ControlÚDebugÚWM_DELETE_WINDOWzÚw)ÚanchorÚGo)ÚtextÚcommandÚStepÚOverÚOutÚQuitÚdisabled©ÚstateÚleft)ÚsideéÚStack)r\r]Úvariabler©ÚrowÚcolumnÚSourceÚLocalsÚGlobalsÚx)rZÚfillÚ background)ÚheightÚboth©ÚexpandrqN)5r=ÚflistrIrrNÚwm_titleÚ wm_iconnameÚ wm_protocolrQÚbindrÚbframeÚpackÚbuttonsÚButtonÚcontÚbcontÚappendÚstepÚbstepÚnextÚbnextÚretÚbretrLÚ configureÚcframeÚvstackÚ BooleanVarrÚsetÚ CheckbuttonÚ show_stackÚbstackÚgridÚvsourceÚ show_sourceÚbsourceÚvlocalsÚ show_localsÚblocalsÚvglobalsÚ show_globalsÚbglobalsÚLabelÚstatusÚerrorÚcgetÚerrorbgÚfstackÚflocalsÚfglobalsÚget)rr=rIrNr|ÚblÚbrŠs rr?zDebugger.make_gui°s(€à—,‘,ˆØ—]‘]ˆŒ Ø"Ÿ<™<Ð'ˆŒ �DÜ'¨Ó-Ð-ˆŒ�3Ø �‰×ј/Ô*Ø �‰×јWÔ%Ø �‰Ð*¨D¯J©JÔ7Ø �‰� ‰ �j $§*¡*Ô-ä$ S›zÐ)ˆŒ �fØ � ‰ ×Ñ ÐÔ$ØÐˆŒ �rä ¨T¸4¿9¹9ÔEÐEˆŒ �QØ � ‰ �!Œ Ü ¨V¸T¿Y¹YÔGÐGˆŒ �QØ � ‰ �!Œ Ü ¨V¸T¿Y¹YÔGÐGˆŒ �QØ � ‰ �!Œ ܘv¨E¸4¿8¹8ÔDÐDˆŒ �AØ � ‰ �!Œ ܘv¨F¸D¿I¹IÔFÐFˆŒ �AØ � ‰ �!Œ ãˆAØ �K‰K˜jˆKÔ )Ø �F‰F˜ˆFÕ ðô % V›}Ð,ˆŒ �fØ � ‰ ×јfÐÔ%à�{Š{Ü$.¨s£OˆD�N‰NÔ !Ø �K‰K�O‰O˜AÔ Ü! &Ø $§/¡/¸D¿K¹KôIˆŒ à � ‰ ×јQ qÐÔ)Ø�|Š|Ü%/°£_ˆD�N‰NÔ "Ü" 6Ø 4×#3Ñ#3¸d¿l¹lôLˆŒ à � ‰ ×јa¨ÐÔ*Ø�|Š|Ü%/°£_ˆD�N‰NÔ "Ø �L‰L× Ñ ˜QÔ Ü" 6Ø 4×#3Ñ#3¸d¿l¹lôLˆŒ à � ‰ ×јa¨ÐÔ*Ø�}Š}Ü&0°£oˆD�N‰NÔ #Ü# FØ D×$5Ñ$5ÀÇ Á ôOˆŒ à � ‰ ×јq¨ÐÔ+ä˜C¨Ô,ˆŒ Ø � ‰ ×Ñ ÐÔ$ܘ3 sÔ+ˆŒ Ø � ‰ �‰˜s¨ˆÔ-Ø—z‘z—‘ |Ó4ˆŒ ä˜C¨Ô*ˆŒ Ø � ‰ ×Ñ ¨ÐÔ/ܘS“zˆŒ Ø � ‰ ×Ñ ¨ÐÔ0ܘc¨!Ô,ˆŒ Ø � ‰ ×Ñ !¨&ÐÔ1à �;‰;�?‰?Ô Ø �O‰OÔ Ø �<‰<× Ñ Ô Ø × Ñ Ô Ø �=‰=× Ñ Ô Ø × Ñ Õ ð rcó0—||_|jj|¬«|r |\}}} |j}|� |›d|›�}d}nd}d}|j }|jj||¬«|j} | r;|jj|j|«\} } | j| | «|jd«|jj«r|j«|j D]} | jd¬ «Œ|j"j%«|xj&dz c_|j(j*j-d d «|xj&dzc_|j D]} | jd ¬ «Œ|jjd¬«|jjd|j ¬«d|_y#t$rdt |«z}Y�ŒÓwxYw#Y�ŒÒxYw) N©r\z%sr1ÚyellowÚ)r\rrrgÚnormalrcÚvwaitú::idledebugwaitrb)rrœr‰r ÚAttributeErrorÚstrrŸr�rPr>Ú get_stackÚ load_stackÚshow_variablesr’r£Úsync_source_liner~rNÚwakeuprArIÚtkÚcall) rrrÚinfoÚtypeÚvalueÚtbÚm1ÚbgÚsvÚstackÚir¥s rrzDebugger.interactionüsр؈Œ Ø � ‰ ×Ñ 7ÐÔ+á Ø"‰OˆD�%˜ð &Ø—]‘]�ðÐ ðà˜4˜r % Ð)�Bð‰BàˆB؈BØ—‘ˆBØ � ‰ ×Ñ "°ÐÔ4à × Ñ ˆÙ Ø—x‘x×)Ñ)¨$¯*©*°bÓ9‰HˆE�1Ø �M‰M˜% Ô #à ×јAÔà �<‰<× Ñ Ô Ø × !Ñ !Ô #à—”ˆAØ �K‰K˜hˆKÕ 'ðð �‰�‰Ôð ×Ò˜aÑÕØ � ‰ � ‰ ×ј'Ð#4Ô5Ø ×Ò˜aÑÕà—”ˆAØ �K‰K˜jˆKÕ )ðà � ‰ ×Ñ 2ÐÔ&Ø � ‰ ×Ñ "°·±ÐÔ>؈� øôQ"ò &ØœC ›IÑ%“ð &ûð Úús­ G2¼HÇ2H È H ÈHcóà—|j}|sy|j|«\}}|dd|ddzdk7r=tjj |«r|j j ||«yyy)Nrgéÿÿÿÿz<>)rÚ_Debugger__frame2fileliner3r4ÚexistsrwÚ gotofileline)rrr8r9s rr²zDebugger.sync_source_line.sk€Ø— ‘ ˆÙØ Ø×0Ñ0°Ó7ш�&Ø �B�Qˆ<˜( 2 3˜-Ñ '¨4Ò /´B·G±G·N±NÀ8Ô4LØ �J‰J× #Ñ # H¨fÕ 5ð5MÐ /rcóR—|j}|j}|j}||fSr )r(r)r2)rrr7r8r9s rÚ__frame2filelinezDebugger.__frame2fileline6s*€Ø�|‰|ˆØ×#Ñ#ˆØ—‘ˆØ˜ÐÐrcóX—|jj«|j«yr )r>Ú set_continuerH©rs rr€z Debugger.cont<s€Ø �‰×ÑÔØ �‰ÕrcóX—|jj«|j«yr )r>rrHrÈs rrƒz Debugger.step@ó€Ø �‰×ÑÔØ �‰Õrcón—|jj|j«|j«yr )r>Úset_nextrrHrÈs rr…z Debugger.nextDs"€Ø �‰×ј$Ÿ*™*Ô%Ø �‰Õrcón—|jj|j«|j«yr )r>Ú set_returnrrHrÈs rr‡z Debugger.retHs"€Ø �‰×јDŸJ™JÔ'Ø �‰ÕrcóX—|jj«|j«yr )r>Úset_quitrHrÈs rrLz Debugger.quitLrÊrcóR—|jjjddd«y)Nr�r¬Ú1)rIr´rµrÈs rrHzDebugger.abort_loopPs€Ø � ‰ � ‰ ×ј%Ð!2°CÕ8rcóΗ|js‹|jj«rqt|j|j |«x|_}|j r<|jj|j d«\}}|j||«yy|j}|r1|jj«sd|_|j«d|jd<y)Nrgrs) rPr‹r£Ú StackViewerr rwrr>r¯r°rQ)rr¼r½r¾s rr�zDebugger.show_stackSsª€Ø×Ò D§K¡K§O¡OÔ$5Ü$/°· ± ¸T¿Z¹ZÈÓ$NÐ NˆDÔ ˜rØ�zŠzØŸ8™8×-Ñ-¨d¯j©j¸$Ó?‘��qØ— ‘ ˜e QÕ'ðð×!Ñ!ˆBÙ˜$Ÿ+™+Ÿ/™/Ô+Ø#'�Ô Ø—‘” Ø$%ˆD�K‰K˜Ò !rcóZ—|jj«r|j«yyr )r’r£r²rÈs rr“zDebugger.show_source`s#€Ø �<‰<× Ñ Ô Ø × !Ñ !Õ #ð rcó8—|d|_|j«y©Nr)rr±)rÚ stackitems rÚ show_framezDebugger.show_frameds€Ø˜q‘\ˆŒ Ø ×ÑÕrcóü—|j}|jj«r|sDt|jd«|_n(|r&d|_|j «d|jd<|j «y)Nrnrgrs)Ú localsviewerr•r£ÚNamespaceViewerr¡rQr±)rÚlvs rr–zDebugger.show_localshsa€Ø × Ñ ˆØ �<‰<× Ñ Ô ÙÜ$3°D·L±LÀ(Ó$K�Õ!áØ$(�Ô!Ø—‘” Ø)*�— ‘ ˜XÑ&Ø ×ÑÕrcóü—|j}|jj«r|sDt|jd«|_n(|r&d|_|j «d|jd<|j «y)Nrorgrs)Ú globalsviewerr˜r£rÜr¢rQr±)rÚgvs rr™zDebugger.show_globalstsa€Ø × Ñ ˆØ �=‰=× Ñ Ô ÙÜ%4°T·]±]ÀIÓ%N�Õ"áØ%)�Ô"Ø—‘” Ø*+�— ‘ ˜hÑ'Ø ×ÑÕrcól—|j}|j}|j}|sdx}}n"|j}|j}|r|r||urd}|r1|j |||j jj«|r2|j |||j jj«yyr ) rÛrßrÚf_localsÚ f_globalsÚ load_dictr=ÚinterpÚrpcclt)rÚforcerÝràrÚldictÚgdicts rr±zDebugger.show_variables€s›€Ø × Ñ ˆØ × Ñ ˆØ— ‘ ˆÙØ Ð ˆE‘Eà—N‘NˆEØ—O‘OˆEÙ‘b˜U e™^Ø�Ù Ø �L‰L˜  t§|¡|×':Ñ':×'AÑ'AÔ BÙ Ø �L‰L˜  t§|¡|×':Ñ':×'AÑ'AÕ Bð rcó<—|jj||«y)zzSet a filename-lineno breakpoint in the debugger. Called from self.load_breakpoints and EW.setbreakpoint N)r>Ú set_break©rr8r9s rÚset_breakpointzDebugger.set_breakpoint�s€ð �‰×ј8 VÕ,rcó<—|jj||«yr )r>Ú clear_breakrìs rÚclear_breakpointzDebugger.clear_breakpoint—s€Ø �‰×јX vÕ.rcó:—|jj|«yr )r>Úclear_all_file_breaks)rr8s rÚclear_file_breakszDebugger.clear_file_breaksšs€Ø �‰×&Ñ& xÕ0rcóà—|jjjD]<}|jj} |j D]}|j ||«ŒŒ>y#t$rYŒKwxYw)z>Load PyShellEditorWindow breakpoints into subprocess debugger.N)r=rwÚ inversedictÚior8Ú breakpointsrír­)rÚeditwinr8r9s rÚload_breakpointszDebugger.load_breakpoints�sd€à—|‘|×)Ñ)×5Ô5ˆGØ—z‘z×*Ñ*ˆHð Ø%×1Ô1�FØ×'Ñ'¨°&Õ9ñ2ñ6øô "ò Ùð ús»#A!Á! A-Á,A-r )r)"r r!r"r#r‹r’r•r˜rPrÛrßrrErQr?rr²rÁr€rƒr…r‡rLrHr�r“rÙr–r™r±rírðrórù©rrr;r;Us¤„ñð €FØ€GØ€GØ€HØ€KØ€LØ€Móò$'%óRò$J óX0òd6ò ò òòòòò9ò &ò$òò ò óCò -ò/ò1órr;cóH—eZdZdZd„Zd d„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z y) rÔz#Code stack viewer for debugger GUI.có´—tj«rtj||«ntj||d¬«||_||_g|_y)NéP)Úwidth)rÚisAquaTkrrrwr r½)rÚmasterrwr s rrzStackViewer.__init__«sE€Ü �?‰?Ô ô × !Ñ ! $¨Õ /ä × !Ñ ! $¨°bÕ 9؈Œ ؈ŒØˆ� rNcóÄ—||_|j«tt|««D]•}||\}} |jd}|j }|j }|j} ddl} | j||«} | j«} | dvr d||| fz} n d|| || fz} ||k(rd| z} |j| «Œ—|�|j|«yy#d}YŒ˜xYw)Nr r0r)r0r©Nz%s, line %d: %sz%s.%s(), line %d: %sz> ) r½ÚclearÚrangeÚlenrãr(r)r6Ú linecacheÚgetlineÚstripr‚Úselect) rr½Úindexr¾rr9Úmodnamer7r8ÚfuncnamerÚ sourcelineÚitems rr°zStackViewer.load_stack·sû€ØˆŒ Ø � ‰ Œ Ü”s˜5“zÖ"ˆAØ! !™H‰MˆE�6ð ØŸ/™/¨*Ñ5�ð—<‘<ˆDØ×'Ñ'ˆHØ—|‘|ˆHÛ Ø"×*Ñ*¨8°VÓ<ˆJØ#×)Ñ)Ó+ˆJؘ?Ñ*Ø(¨G°V¸ZÐ+HÑH‘à-°¸(Ø17¸ð1EñE�à�EŠzؘd‘{�Ø �K‰K˜Õ ð'#ð( Ð Ø �K‰K˜Õ ð øð! Ø’ús ¸CÃCcóH—|jrtj||«Sy©úOverride base method.N)r½rÚ popup_eventrTs rrzStackViewer.popup_eventÑs!€à �:Š:Ü×+Ñ+¨D°%Ó8Ð 8ð rcó�—|j}|jd|j¬«|jd|j¬«y)rzGo to source line)Úlabelr]zShow stack frameN)ÚmenuÚ add_commandÚgoto_source_lineÚshow_stack_frame)rrs rÚ fill_menuzStackViewer.fill_menuÖsI€à�y‰yˆØ ×ÑÐ2Ø!%×!6Ñ!6ð ô 8à ×ÑÐ1Ø!%×!6Ñ!6ð õ 8rcó˜—d|cxkrt|j«kr,ny|jj|j|«yy)rrN)rr½r rÙ©rr s rÚ on_selectzStackViewer.on_selectÞs7€à �Ô 'œ˜DŸJ™J›Õ 'Ø �H‰H× Ñ  § ¡ ¨5Ñ 1Õ 2ð (rcó&—|j|«yr)r“rs rÚ on_doublezStackViewer.on_doubleãs€à ×јÕrcó\—|jjd«}|j|«y)NÚactive)Úlistboxr r“rs rrzStackViewer.goto_source_lineçs$€Ø— ‘ ×"Ñ" 8Ó,ˆØ ×јÕrcóΗ|jjd«}d|cxkrt|j«kr,ny|jj |j|«yy)Nrr)r r rr½r rÙrs rrzStackViewer.show_stack_frameësK€Ø— ‘ ×"Ñ" 8Ó,ˆØ �Ô 'œ˜DŸJ™J›Õ 'Ø �H‰H× Ñ  § ¡ ¨5Ñ 1Õ 2ð (rcó8—d|cxkrt|j«ksyy|j|\}}|j}|j}tj j |«r0|jj|«}|r|j|«yyyr×) rr½r(r)r3r4ÚisfilerwÚopenÚgotoline)rr rr9r7r8Úedits rr“zStackViewer.show_sourceðsƒ€Ø�UÔ,œS §¡›_Ò,Ø ð-Ø ØŸ ™  5Ñ)‰ ˆˆvØ�|‰|ˆØ×#Ñ#ˆÜ �7‰7�>‰>˜(Ô #Ø—:‘:—?‘? 8Ó,ˆDÙØ— ‘ ˜fÕ%ðð $rr ) r r!r"r#rr°rrrrrrr“rúrrrÔrÔ¨s2„Ù)ò óò49ò 8ò3ò  ò ò3ó &rrÔcó*—eZdZdZdd„ZdZdd„Zd„Zy) rÜz/Global/local namespace viewer for debugger GUI.Nc ó—d}d}|rdt|«z}||_||_ddl}|j «|_d|j _d|j _t|«x|_ }|jjdd¬«t||dd ¬ «|_ |jjd ¬ «t|d ¬«x|_}|jdd¬«t|t!dt#d|««dd||f¬«x|_} | jddd¬«| j&|d<|j(| d<t| «x|_} | j-dd| d¬«|_|j1|«y)Nré(éé<rgrtruéÚgroove)r\Ú borderwidthÚreliefrp)rqÚvbar)ÚnameÚrightÚy)rfrqé,)rsÚ scrollregionre)rfrqrvr]ÚyscrollcommandÚnw)ÚwindowrZ)rrÚtitleÚreprlibÚReprÚreprÚ maxstringÚmaxotherrrr}r›rrr0ÚCanvasÚminÚmaxÚcanvasÚyviewr�ÚsubframeÚ create_windowÚsfidrä) rrr9Úodictrþrsr:rr0rBrDs rrzNamespaceViewer.__init__ÿsW€ØˆØˆÙ Øœ˜E› ‘]ˆF؈Œ ؈Œ ÛØ—L‘L“NˆŒ Ø ˆ� ‰ ÔØˆ� ‰ ÔÜ" 6›]Ð*ˆŒ �UØ � ‰ �‰˜q vˆÔ.ܘ5 u¸!ÀHÔMˆŒ Ø � ‰ �‰˜SˆÔ!Ü$ U°Ô8Ð8ˆŒ �DØ � ‰ �w Sˆ Ô)Ü% eÜ-0°´c¸"¸f³oÓ-FØ45°q¸%ÀÐ3Hô Jð JˆŒ �fð � ‰ ˜ f°Qˆ Ô7Ø Ÿ,™,ˆˆY‰Ø#'§8¡8ˆÐÑ Ü#(¨£=Ð0ˆŒ ˜Ø×(Ñ(¨¨A°hÀtÐ(ÓLˆŒ Ø �‰�uÕrrÀcóx—||jur|sy|j}|j}t|jj ««D]}|j «Œd|_|s!t|d¬«}|jdd¬«n¥|j«}t|«} d} | D]ƒ} || } |jj| «} |r| dd} t|| ¬«}|j| dd¬«t|dd¬ «}|jd| «|j| dd¬«| dz} Œ…||_|j«|j«}|j!«}|j"}dd||f|j"d <|d kDrd |d <|j%d¬ «y||d <|j%d¬ «y)NÚNoner§rrjrgrÀr7)rkrlÚsticky)rþr.r5r4rs)rv)Ú prev_odictrDrÚlistÚchildrenÚvaluesrSr›r‘ÚkeysÚsortedr<ÚEntryÚinsertÚupdate_idletasksÚwinfo_reqwidthÚwinfo_reqheightrBr})rrGrçÚ rpc_clientrDrÚcÚlÚ keys_listÚnamesrkr1r¸ÚsvaluerþrsrBs rräzNamespaceViewer.load_dicts €Ø �D—O‘OÑ #©EØ Ø—=‘=ˆØ— ‘ ˆÜ�h×'Ñ'×.Ñ.Ó0Ö1ˆAØ �I‰I�Kð2àˆŒÙÜ�h VÔ,ˆAØ �F‰F�q ˆFÕ #🠙 › ˆIܘ9Ó%ˆEàˆCÛ�ؘd™ �ØŸ™Ÿ™¨Ó.�ñØ# A b˜\�Fܘ(¨Ô.�Ø—‘˜3 q°�Ô6ܘ(¨!¸Ô;�Ø—‘˜˜FÔ#Ø—‘˜3 q°�Ô6ؘ!‘e‘ð𠈌à×!Ñ!Ô#Ø×'Ñ'Ó)ˆØ×)Ñ)Ó+ˆØ—‘ˆØ'(¨!¨U°FÐ&;ˆ� ‰ �NÑ#Ø �CŠ<Ø"ˆF�8Ñ Ø �J‰J˜aˆJÕ à%ˆF�8Ñ Ø �J‰J˜aˆJÕ rcó8—|jj«yr )rrSrÈs rrQzNamespaceViewer.closeRs€Ø � ‰ ×ÑÕrr )rN)r r!r"r#rrKrärQrúrrrÜrÜüs„Ù5óð6€Jó4!ólrrÜÚ__main__)Úmainzidlelib.idle_test.test_debuggerr,F)Ú verbosityÚexit)r#Úbdbr3ÚtkinterÚ tkinter.ttkrrr&rÚidlelib.scrolledlistrÚidlelib.windowrÚBdbr rrr;rÔrÜr Úunittestr^rúrrÚrhsƒðñó" Û äß(åÝ-Ý)ô7ˆ#�'‰'ô7ò: (ò ÷PñPôf Q&�,ôQ&÷hWñWðt ˆzÒÝÙÐ *°a¸eÖDðr