ELF>Ё@#@8 @aappp}}@@@pNpNpppؗاا $$Std Ptd ] ] ]TTQtdRtdpppGNUGNU ;Enj`l[GxC "’@ bAI(*0 DHh BBF@ 90Rdf_&szTz ^{8QYx?ʆ%1nh"U).8('FBREomR} ͦ.Y@1݆O\ YC =Z-C7rqKI_e<`0>zGS9T¼gĸ/+$sд JPhOpW|TF kVC8%"GO…Cm 9dyj!2"SE /=  wU ;{v NAf3- ;$d 6u eF ;  n|=kW r  _KTcD   )   ( ~p b h " \ 3( } Z S ` K&Z V t v}, ZTuF"Lo W  0$i   F  '   p-\ mq{  %  3  PB&X   `  a  (  O(J 2  >    '  #  '`' `o~  `0  w    G  %M 4!  @  pC   p `  @ `j  $e@"   ;8  0 B    > #l $) `  o vq 0  @If  y&: @  {  [    P $ `@ __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalizePyTuple_Type_Py_NoneStruct_Ny_RootStateStructNyNodeTuple_TypePyType_IsSubtype_Py_NotImplementedStruct_Py_FalseStruct_Py_TrueStructPyList_SizePyList_GetItemPyList_SetSlicePyExc_IndexErrorPyErr_Format_PyWeakref_RefTypePyMem_FreePyExc_ValueError_PyWeakref_CallableProxyType_PyWeakref_ProxyTypePyExc_TypeErrorPyErr_Occurred_PySys_GetSizeOfPyErr_ExceptionMatchesPyErr_ClearPyUnicode_FromStringPyErr_CheckSignals__stack_chk_failPyMem_MallocPyWeakref_NewRefPyErr_NoMemory_hiding_tag__namePyDict_GetItemPyList_Appendng_as_flat_listPyList_NewPyExc_SystemErrorPyErr_SetStringPyFrame_TypePyTuple_SizePyTuple_GetItemPyObject_GC_UnTrackPyThreadState_Get_PyTrash_thread_deposit_object_PyTrash_thread_destroy_chainPyObject_GC_DelPyDict_SetItem_PyObject_GC_NewVarmemsetPyObject_GC_TrackPyTuple_NewPyExc_RuntimeErrorPyObject_RichCompareBoolPyLong_FromSsize_tPyObject_HashNyRelation_TypePyObject_RichComparePyObject_CallFunctionObjArgsPyObject_SetItemPyUnicode_AsUTF8strcmpPyLong_AsSsize_tPyDict_NextPy_FatalErrorqsortPyMem_Reallocng_iterNyNodeGraphIter_Type_PyObject_GC_NewPyUnicode_FromFormatabortPyInterpreterState_HeadPyInterpreterState_Nextrootstate_traverse__isoc99_sscanfPyExc_AttributeErrorPyExc_DeprecationWarningPyErr_WarnFormatPyMember_GetOnePyThreadState_SwapPy_NewInterpreterPyThread_release_lockPyEval_RestoreThreadPyImport_ImportModulePyModule_GetDictPyDict_UpdatePyObject_GetAttrStringPyFloat_FromDouble_PyObject_CallFunction_SizeTPy_EndInterpreterPyEval_ReleaseLockPyThread_exit_threadPyExc_SystemExitPyRun_StringFlagsPySys_FormatStderrPyErr_PrintExPyDict_TypePyUnicode_Type_PyArg_ParseTuple_SizeTPyEval_InitThreadsPyThread_allocate_lockPyThread_start_new_threadPyThread_acquire_lockPyThread_free_lockPyLong_FromLongstderrfwrite__fprintf_chkNyMutNodeSet_Newnodeset_exportsNyMutNodeSet_NewHidingNyMutNodeSet_NewFlagsNyNodeSet_setobjPyDict_NewNyNodeSet_clrobjNyNodeSet_hasobjNyNodeSet_iterateNyNodeSet_NewImmCopyNyImmNodeSet_NewSingletonNyNodeSet_be_immutablegc_get_objects_PyObject_CallMethod_SizeTxt_free_tablext_findout_sizext_findout_traversext_findout_relatePyType_Type_PyArg_ParseTupleAndKeywords_SizeTPyType_ReadyPyList_AsTuplePyTuple_SetItemhv_mutnodeset_newNyNodeGraph_Typehv_is_obj_hiddenNyRootState_Type_PyObject_GetDictPtrNyHeapView_SubTypeNewNyStdTypes_HeapDefNyHvTypes_HeapDefPyCapsule_GetNamestrrchrPyCapsule_GetPointerPyCapsule_TypeNyRelation_SubTypeNewNyRelation_NewNyHeapView_iterateNyHeapView_TypePyObject_GetIterPyIter_NextPyObject_Sizehorizon_newng_add_edges_n1NyObjectClassifier_ComparePyLong_AsLongcli_cmp_as_intNyObjectClassifier_NewNyObjectClassifier_TypeNyNodeGraph_Clearhv_update_referrers_completelyng_clear_methodNyNodeGraph_AddEdgePySequence_Listhv_update_dictownershv_update_referrersPyBaseObject_Type_PyObject_NewPyList_SetItemng_add_edgeNyNodeGraph_SubtypeNewNyNodeGraph_SiblingNewNyNodeGraph_InvertNyNodeGraph_RegionPyExc_KeyErrorPyErr_SetObjectPyExc_NotImplementedErrorNyNodeGraph_UpdateNyNodeGraph_Copyng_copyNyNodeGraph_InvertedPyObject_IsTrueNyNodeGraph_NewNyNodeGraph_initNyThreadState_SetAsyncExcPyThreadState_SetAsyncExcdict_relate_kvPyInit_heapycNyHorizon_TypePyModule_Create2heapyc_docPyDict_SetItemStringdlsymPyExc_ImportErrorPyCapsule_ImportPyType_GenericNewcli_dochorizon_docrootstate_docPyObject_GenericGetAttrPyType_GenericAllocPyObject_FreePyObject_SelfIterNyStdTypes_initPyList_TypePyFunction_TypePyModule_TypePyTraceBack_TypePyCell_TypePyCFunction_TypePyCode_TypePyDictProxy_NewNyNodeSet_Typedummylibpython3.7m.so.1.0libc.so.6GLIBC_2.3.4GLIBC_2.34GLIBC_2.7GLIBC_2.4GLIBC_2.2.5/opt/alt/python37/lib64ti ii ii ui px`CGGGGȧG@BHpX`Eh@(xEBHE@EECE 'C@EHPX@REREXS (`!0"@FHPXUF`@PUF( W0FPXXFx8ZG@@@hAA@A#A05AXHA]AkAwAA AHAq@AA A@ Ah B A A  B A0 EX B )B =B QB G( E@ G` Gh Bp Gx G G @ @ EG EG G G G G( F0 P[8 H ph Fp Gx ` p F H p @ &H /H E 9H( GH0 RH8 P@ H P BHX E #D x[ p  Л F [  0 GHRH (pHFP[XhF\CRHC8\Й @0F8Hx*@ +-@ p@1@*``Ex`FFF`fA $Fp 2F(8 @DFHX`OFhx`YF` `Fp%iFpF%wF%@CHX`Chx@#DF `F0DPjD F(8`@DH@X@`Fhx@F'{C@F@G#C` [C(@8@GH X`Ghpx/GGC@iF pCD D8@JGXfGh@8GP@XG0xxkH&  (0H&PH0p p 0 `'8  & x\ X! `!@!!@X"H"0""###$@@$$\%ށ8%pp%% %@&0X`hp x  ($#$h$Ȯ*Ю,خ-.568FG H(0L8@HYPdXe`hhipkxmnouwz{ȯЯدh(HJJPJJJ0!J"J0]P]]0 ]!]&]9 &9`@ !#&P!8$% (0 8@ HPX`hpxȪЪت !"# %(0'8(@)H+P/X0`1h2p3x47:;<=ȫ>Ы?ث@ABCDEIK (0M8N@OHPPQXR`ShTpUxVWXZ[\^_ȬЬج`abcf g(j0l8p@qHrPX`shtpvxxy|}~ȭЭح (08@HPHH?HtH59%9hhhhhhhhqhah Qh Ah 1h !h hhhhhhhhhhqhahQhAh1h!hhhh h!h"h#h$h%h&h'qh(ah)Qh*Ah+1h,!h-h.h/h0h1h2h3h4h5h6h7qh8ah9Qh:Ah;1h<!h=h>h?h@hAhBhChDhEhFhGqhHahIQhJAhK1hL!hMhNhOhPhQhRhShThUhVhWqhXahYQhZAh[1h\!h]h^h_h`hahbhchdhehfhgqhhahiQhjAhk1hl!hmhnhohphqhrhshthuhvhwqhxahyQhzAh{1h|!h}h~hhhhhhhhhqhahQhAh1h!%0D%0D%0D%0D%0D%0D%0D%0D%0D%0D%0D%0D%0D%}0D%u0D%m0D%e0D%]0D%U0D%M0D%E0D%=0D%50D%-0D%%0D%0D%0D% 0D%0D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%/D%}/D%u/D%m/D%e/D%]/D%U/D%M/D%E/D%=/D%5/D%-/D%%/D%/D%/D% /D%/D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%.D%}.D%u.D%m.D%e.D%].D%U.D%M.D%E.D%=.D%5.D%-.D%%.D%.D%.D% .D%.D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%-D%}-D%u-D%m-D%e-D%]-D%U-D%M-D%E-D%=-D%5-D%--D%%-D%-D%-D% -D%-D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D%,D11PXPvfDH=yHrH9tHn,Ht H=IH5BH)HH?HHHtHu-HtfD=u+UH=b-Ht H=$d]wAVAUATIUHSHHHt HӅI|$Ht HӅu|I|$(Ht HӅuiI|$0Ht HӅuVID$@HtJI|$PtBE1N4Mt!fDI~HHt HӅu Mv MuIM9l$Pv ID$@1[]A\A]A^ff.fH@IHI@P` ff.@fDfD1fHHHHGfHG@LGXH@ J9t g81ff.fHGHHx/1ɺeCHiCBH3THH9uH1HtÐeCH1HuHf.H)ff.@HW(HBH@ Ht HzDHHHH@1H9HHHHt1DSHHHtH/tHC1[DHGP0HC1[DH)HfDHFHH9~t1HF(1SHHtH.t C0HC([HFHP0C0HC([ff.HGHt HfDH9)Hff.HHHHt1DSHHHtH/tHC1[DHGP0HC1[DHGLGH@Lff.HHHHt1DAVIAUATIUHSH ~D1HELJ|(Aԅu#HH9] ~#HEILIJ<(Aԅt[]A\A]A^ÐH}Ht[L]LA\A]A^[1]A\A]A^DHH9ruHNH9OrfHH9rATHGLg(IL` @tHHHtЅtI LA\DLGI@H9G(tI@HWHw LHfD1ff.f1fH'HATUSH_Ho LgH{(Ht LՅH{0Ht LՅH{8Ht LՅuvH{@Ht LՅudH{HHt LՅuRH{PHt LՅu@H{`Ht LՅu.H{hHt LՅuH{p1Ht[LH]A\D[]A\ATUSH_Ho LgHHt LՅH`Ht LՅ|HXHt LՅugHPHt LՅuRHHt LՅu=HhHt LՅu(tHHHt[LH]A\D1[]A\fAUATAUHSHHHL-^$L9tLqH}L9t LXttLCH}I9tAAI9HIN1H+fAfHJcH>DHH9tHTHLH9tHIH$HH[]A\A]f.1I9uH=$HH[]A\A]H_$D1I9fD1I9fD1I9fD1I9fD1I9fDH$HSH#H;HH9tHHHfAVAUATUHHMH~HLpHILVIHt0H1LLHJxHL]A\A]A^tHE1]LA\A]A^@HA#H5"H81pff.UHSHHH~H5%#H9t LKPMtgHs@E1HHHuFfDHO Ht7HPHHH@ H9uH/HmtPH"HH[]fDIHM9uH!HH5"H81H1[]HEHP0@HEH;!DH;x"7HPH!H5H81N1jATIUHHHtHL]A\fDHIHtH,!H8\t3HEHP(L` HtHHHIHUMdI@tHHHt HЅwI nff.@UHSHHHHH螦uH{(HHGH[]H[]@H=`ATIUSH_HGH9CtE1H9CtC[D]A\fDHo H= LHAuID$E1H9CuH=I\$ LHE1[]A\ADff.HWHOH9Jt1ATISHH_ H=*LHӅH[A\ÐATIUSH_HGH9CtE1H9C tC[D]A\fDHo H=Ӱ0LHAuID$E1H9C uH=I\$ LHE1[]A\ADff.AUIATIUHSHHHdH%(HD$81!19tHHH[]A\A]HHfDH HH[]A\A]f191919HuH{HD[]A\A]fDH0H HH9tH9t 11{HUHSHHHGHxH@PHt HH9C HQHt,HtH HH[]DHPHR0@HtH{(HH1[1]DHPHR0@AUIATUSHHHLHxH@PHH{HHIHtKLLtcHmAtHD[]A\A]HEHP0HD[]A\A]1IHt+H{HHbu=DI,$u ID$LP0Hmu HEHP0HA[D]A\A]ÐI,$JID$LP0:DAWAVAUATUHSHHGHX HD$HC@DcHPtaE~\E1L-rAE9t3HC@McJ|LHuHD$HM(J9ht9H} fDH|$HD$HUHu H@HH[]A\A]A^A_H1[]A\A]A^A_f.AUATUHSH(dH%(HD$H*H9 H HH@H9uHHEHH=tVH}HtH/t7HD$dH+%(HEHH@H([]A\A]fHGP0H=HtH$Ll$Ld$HDH|$HT$H=jHB0LLHuH=MH/tH<9HGP0H%"HH=50 ff.AVHH AUATUHS2HDHw Hm}2t/H] HH1H;H]([HEE1]A\A]A^@Hu HH~H}HL,7H_Lg I9w+DID$H9t AoD$HIM9vgI|$MH;{uMD$L;CuH/u HGP0MD$I(uI@LP0f.H}HH] 9f.H+]HH] H @HE fATSHHH= HtIHXIHH@{1t HC LID$ WHL[A\@HPfDE11SHt HC [@#HC [ff.fAWAVAUATUSHHoH} I1L%hH9BtZHH9] ~{HUIIGILH;uHL1Mo XLHAՅuAHUIGLH9BuDHH= 1Mw LHAօ{H1[]A\A]A^A_@AWAVAUATUSHH(Lw"HD$HCH@H$H HE1DDAHHuIHL%RHCI9E(I9E0I9E8I9E@PI9EHI9EhI9EpI9Ex(I9cI9I9 I9  I9 O I9  M}MLl$ML|$HuH<$H;= I9EHHI9EPI9EXI9E`I9Eh`I9EpI9ExI9/I9rI9I9I9;I9~I9MmM HCIVM9+H9"IUH+1ɾfDH9HRDHuLS I)1H=ILT$LT$HڿHA҅hHCI9EHf.LS IL1H LT$-LT$HڿHA҅HCI9EPv@LS IL1H ɖLT$LT$HڿHA҅HCI9EX0@LS IL1H LT$LT$HڿHA҅rHCI9E`@LS IL1H @LT$=LT$HڿHA҅"HCI9Eh@LS IL1H LT$LT$HڿHA҅HCI9Ep^@LS IL1H LT$LT$HڿHA҅HCI9Ex@LS IL1H SLT$MLT$HڿHA҅2HCI9LS IL1H LT$LT$HڿHA҅HCI9LS IL1H ˓LT$LT$HڿHA҅HCI9LLS IL1H LT$]LT$HڿHA҅BHCI9 LS IL1H .LT$ LT$HڿHA҅HCI9LS IL1H LT$LT$HڿHA҅HCI9LS IL1H LT$mLT$HڿHA҅uVHCI9DDLS IL1H xLT$LT$HڿHA҅fH([]A\A]A^A_@Ll$LHIHP1H1L{ H=HڿHAׅuHCI9E0!DHy1L{ H=ceHڿHAׅOHCI9E8HJ1L{ H=#%HڿHAׅHCI9E@H1L{ H=HڿHAׅHCI9EH{HҐ1L{ H=HڿHAׅHCI9EhEH1L{ H=ceHڿHAׅOHCI9EpHn1L{ H=#%HڿHAׅHCI9ExHA1L{ H=HڿHAׅHCI9fDH1L{ H=HڿHAׅHCI9hfDHԏ1L{ H=SUHڿHAׅ?HCI9 -fDH1L{ H= HڿHAׅHCI9 fDH_1L{ H=ÎHڿHAׅHCI9 fDH,1L{ H={}HڿHAׅgHCI9 |fDHK H1H=3HL$0HL$HڿHх<rfDAWAVAUATUSHLg LHo-IHIA8t M9nI}(HtHAԅI}8HtHAԅI}@HtHAԅI}HHtHAԅjI}hHtHAԅSI}pHtHAԅ<I}xHtHAԅ%IHtHAԅ IHtHAԅI HtHAԅI HtHAԅI HtHAԅI HtHAԅI]HfIL9HH{HHtHAԅOH{PHtHAԅ8H{XHtHAԅ!H{`HtHAԅ H{hHtHAԅH{pHtHAԅH{xHtHAԅHHtHAԅHHtHAԅHHt HAԅu{HHt HAԅueHHt HAԅuOHHt HAԅu9HHt HAԅu#H[HLpIH+1H[]A\A]A^A_HtHAԅuH{Hubf.AW1AVAUATUSHH IHH 1HHuYHD$HH5H=414HHt%HL!HEU HHEg HH=1HHt%HLHE HHEC H͉H=1HHt%HLHE HHE HH=h1hHHt%HLUHE HHEHMH=$1$HHt%HLHEE HHEHH=1HHt%HLHE HHEHH=1HHt%HLHEHHEOHH=X1XHHt%HLEHEyHHEHH=1HHt%HLHE5HHEHKH=Ї1пHHt%HLHEHHEHH=1茿HHt%HLyHEHHEHއH=H1HHHt%HL5HEiHHEKHH=1HHt+HLHE%HHEu HEHP0HyH=1躾HHt%HLHEHHEHD$L`MID$1HtwH@ՍRHu~^E1AI$D1H=2IHt)HLIHIu IFLP0AED9uI$H 1H=ٽHHt%HLHEHHE\I$H 1H=h荽HHt%HLzHEHHE I$H >1H=AHHt%HL.HEbHHEI$H 1H=ЅHHt%HLHEHHEI$H 1H=詼HHt%HLHEHHElI$H ]1H=8]HHt%HLJHE~HHE0I$H 1H=HHt%HLHE2HHEI$H ބ1H=ŻHHt%HL貿HEHHEI$H 1H=TyHHt%HLfHEHHE|I$H 1H=-HHt%HLHENHHE@I$H 1H=HHt%HLξHEHHEI$H ΃1H=p蕺HHt%HL肾HEHHEI$H 1H=$IHHt%HL6HEjHHEI$H ^1H=؂HHt+HLHEHHEu HEHP0Md$MAH|$HD$HVHL[]A\A]A^A_HIu IFLP0I/tE1f.IGLE1P0밐HEHP0HEHP0HEHP0 HEHP0IHEHP0HEHP0HEHP0HEHP09HEHP0uHEHP0HEHP0HEHP0HEHP0HEHP0HEHP0HEHP05HEHP0HEHP0:HEHP0nHEHP0HEHP0HEHP0 HEHP0>HEHP0rHEHP0HHE=HEHP0I//9fHEHP0AWAVAUATIUHHSH8dH%(HD$(1D$HtzI$Lt$IHHT$1H5nLMtx1HT$ LLH5T/~HLH5H81kI,$u ID$LP01HT$(dH+%(H8[]A\A]A^A_@Lc|$1脾HHt@HHucHHu H起HH9\$uM1HT$ LH5LWHmHcT$HHD$ DHmHH9uI1HT$LH5.LD$0HcD$A< HEDD$HH1fDHIHuTc1HHtf軶HHu;HHIE1HWHHL$ DHRHH9uD)LH=w~1IH HHH/H81LH=ImuIUHD$LR0HD$I,$IT$HD$LR0HD$DӵAHH*hfDH5مHH8貶bDH@H5D9uHxf.H5g}H=)AL-"AHuI}(I(HLǷuLH8H H8H;LH51$1H=CL-CHunI}(I(HtYL[uLH̵HHH;LH51踺1HLH;bHLH;hHDH5H81kI$HP1I$H(f.AWAVAUATI1USHԺI蜵LHHXI|$nH&I<$͸IHQH={HI It$IHH1I<$H/uHGP0I|$Ht H/cL賲HEH9hH=X{iIHt+H5I{H²I,$HID$LIP0FHQ}ҴID1LHLHHEH9huH}uImI,$H`KH[]A\A]A^A_XI.uIFLP0kHHcH8趴H(gHPHR0XIELP0I,$cID$LP0SHGP0@LE11L#HH?H(urH@P0I.0IFLP0!H}PI<$H/tCI|$HtH/tZMl$LɰL,oIII.HGP0I4$H=o11聲HGP0AUHH5%yATUH LHdH%(HD$1HL$LL$HD$HD$jA1ERHHHT$HHD$HEHHtH~IHHEHH=4߯IHtVL詰L蜰L$LLHT$dH+%(H ]A\A]fDՐH}HH5%xH8ѰH|$H/uHGP0H|$HtH/t/H1HH5wH8芰HGP0BfUH-܀SHH=\Ht>H GH-HrH *H=YH;[H=[t4H GH1H H=@w[H=r[H tPGHH H=wڴH;[HtHH;1HjŴH HG蠴H!HH[]ff.HH`ff.@HH` ff.@HH`(ff.@HeH`Hff.@ATIIUHHLHxH@P HtYI|$HHyAHEAtHAHEtHD]A\HHEuHEHP0HD]A\fAUHSHHHH5}H9t tfH}H[HHt#H}ڭH[]˯HuH}HH7t HDHCH5~HPHH81衲f.UHSHHH?HsHSt,H[]DH~H$tֺOH[]ÐH{ HH[]鎮ff.HGt t1LF(HLIHHL説Hf.AUATUSHHH~HsAąH[tHuH{0L- L9t=H=Xt~ HHH=WHH蛰tpLk0Hmt3HD[]A\A]DAHE[]ADA\A]@HEHP0HD[]A\A]蛯H|WHtH{0hHmu HEHP0Af.ATUHSHHt_H} I~G1fHH9] ~0HLHHEH0 uI,$uID$LE1P0L[]A\fDE1[]LA\ff.fATUHSH\Ht_H} I~H1fHH9] ~1HLHHEHp菪uI,$uID$LE1P0L[]A\DE1[]LA\ff.fHH`Pff.@UHSHHUHt!H{H4tzH[HuHutfHuH=UHt$/HHt>HH[]HF0HeH9tHH[]H=zyH=2{mff.fHH`Xff.@UHSHHH~HĨA1Et H[]H{HtOH[]ÐH{ HH[]nff.ATUHSH~HH趨AątDOD[]A\fDH{H,uH{ H[]A\UHSHHHHHxA1EtH[]H{H4H[]fHH``ff.@ATUSH dH%(HD$1H<$1Ht$舥HD$HH|$HH5覩t>H|$15HH[HH9tOHD$H|$H@H4設uH|$AHu0HD$dH+%(u4H D[]A\@H|$E1HtH/uHGP0AHH`0ff.@HH`8ff.@IHIp ff.fHEH`@ff.@ATH=$nUH蹨HtLHH1HnH5nHmItHL]A\@HEHP0HL]A\E1HL]A\f.HteAVAUIATIUSHtB1fIHt,IH[ I~HH/uHGP0L0HuHI9u[L]A\A]A^ÐAWAVAUATULLwLo HGLg(Ho0HGLG@HG HG(HwPHG0HG@L?Mt I/MtI.tuMtImtYMtI,$t=HtHmt]1A\A]A^A_DHEHP0]1A\A]A^A_f.ID$LP0IELP0@IFLP0|IGLP0aUHSH辪YHË1KHHEH@Ht~ H[]fHH[]fH[]酩DHGPHH@HHDHGÐHOPHqHyu,HHH $HHHEHHWG`ÐHGPHRHx HHDHGff.AUHIATHU%HSHHW@L$Mu%DMd$ MtI9,$uHL[]A\A]fHHLHH^:H9HLIHHX(HCP{`ID$PHC0AD$`ID$0HCID$HC8ID$8HCXID$XHCID$H*ID$HL[]A\A]HL蕷IHtEHv9LID$P艥L聠LHL[]A\A]L`fDHL%m9[L]A\A]AUIATIUHHvyHNj@`t>tLLHHG]A\A]DHELLH]A\HA]D]1A\A]ATUHHH5iHHdH%(HD$81HL$HT$ tmIHt$HHl$HnLHD$HD$ D$0HD$(t%H|$(ӡHT$8dH+%(uHH]A\1诠ff.@IH>L9t9L9Ft3L9Ft-L9F t'L9F(t!L9FtLF0HHCLD1DATUHSHHvHHPH'HtJH{ HH裡IHtCI$HmtL[]A\HEHP0L[]A\fDE1[]LA\DH{ HHitIff.@UHSHHHwH;DHPHCH1[]ÐAWH /AVAUATUSH(L0H|$LL$HHHgdH%(HD$1Ģ|L|$MXMtKMl$M~A1H-pdfDHL9t'IDHPtLMu5HL9uH1H5pH8ڞf.1w@I(I>HtHDuI^HtH|$L)H5H9tP`tLHPH H@0HXXHP8HH@`H!HHT$dH+%(u)H([]A\A]A^A_HwH5PpH8 1UH 4.HHHHeHLdH%(HD$1IAt}H4$HQH5H9teP`t:H @`HHHYHHT$dH+%(u1H]HH5oH8Zf.1ATH C-IHUHHdSHdH%(H$1LL$LD$h@HIfLLd$HD$ HD$)D$0)D$@)D$P)D$`)D$pHp$D$(2HHD$L`L螝t$HL;d$HHStD$(t]E1H\$0H$DH;Ht H/uHGP0HH9uH$dH+%(HĐL[]A\@ 辝IHt1(f HHtsHLHDH hH|0Hu{HfDE1vH=gcLd$ HHAԅ@I,$ID$LE1P0ff.fATHUHHLfHwH8HNj@`tLtHGHLHH*]A\DHELHH5HH]A\H1]A\ff.ATUSHHvHtAIDLHHt0HXPHH@踝H谘HHsHu1[]A\øH ÙATH *UHHHSHaH0dH%(HD$(HHHL@HD$P1APLL$ZH܅HH,$ß1HD$gH|$HD$ HHL%TH|$HLtuNf.H|$ 薩HHtnH<$HLH\HEHHEH|$ 跜HuHt$H<$tH|$ Ht H/HD$-@H|$Ht H/uHGP0H|$ HtH/t!1HT$(dH+%(uZH0[]A\fDHGP0HHEuHEHP0H|$DHEHP08HGP0b8ATH (UHHHSH`H0dH%(HD$(HHHL@HD$P1APLL$zH܅HH,$1HD$臕H|$HD$ HHL%H|$HL蔙uNf.H|$ 趧HHtnH<$HLH|HEHHEH|$ ךHuHt$H<$4tH|$ Ht H/HD$-@H|$Ht H/uHGP0H|$ HtH/t!1HT$(dH+%(uZH0[]A\fDHGP0HHEuHEHP0H|$DHEHP08HGP0bXUHHHH K&HXLdH%(HD$P1HHT$@D$@HD$0HH@RHT$8RAPHT$0RPHT$8RH]P1LL$`rH@taHD$(H,$HtHx teH͛HD$Ht:H|$HH5蟗t HD$H|$Ht H/uHGP01HT$HdH+%(uHP]ÐHD$(@ATUHSLfHLP`t^tIL;%Rt@HHH1Ht3H:Ht+HH0wH9C []A\[]A\fDH@XHK [H9L]A\UHSHHHH;赗uH[]f.H{HH[]fUHSHHHH;etH j1H9Mt H[]H{H,tOH[]fH{HH[]鎕ff.AWAVAUATUHSHH0HHEIH5[HhLH@HwID$(ID$ ID$PAD$HID$0ID$@HID$0HtI|$PHHf.I9HGLOHLH@(LI9t[HGLOLH@(L1I91I9HHH5UH8-H1DDAWIAVAUATUSHHWHBHD$HIE1@DHL苆HmHcu HEHP0Ht^HutIL9d$tiIWID$IO0HTH|LrIW(HTH$蔃I~LHIFPH$HH{1H[]A\A]A^A_E1LHHtHLHmuHUH$HR0H$H[]A\A]A^A_DATIUSHHLHxH@PHtlKHSHHH;wtKu6HmAtD[]A\fHEHP0D[]A\fDH{LuHmtAD[]A\fHEHAP0ff.AUATUSHHGtw1H=ZHL- HHI|Ht"HAouHD[]A\A]DH H5SAH8HD[]A\A]HH5@SAH8SHHH5GH@dH%(HD$81HL$HT$IH<$~D$(HSv Hz(HB Ht$HH{HD$H1}|HD$ Ht H|$HT$H\$H5tkH|$H/uHGP0HD$ HT$8dH+%(H@[fHH5zRH8j~f.1@HkH|$ H/uHGP0HD$ uHaH5:RH8 ~1g}ff.ATUHSHH=}IHtHHHXHhz}L[]A\fUHH5FSHHL}HdH%(HD$81HL$(LL$0H=@k~HD$(Hx~7H-O1DHTHzH9tH"tnHD$(HH9X׿~HHtcHD$(H5qHHEHHD$0HE HHmu5HUHD$HR0HD$HH5QH8|1HT$8dH+%(uHH[]L|ff.ATUSHHH5DHPHLYdH%(HD$H1HD$8HL$ PHD$8P1LL$8~ZY}HHHXHD$ H5,HHHE HHD$(HE(HHD$0HE0HHD$8HE8HHmItHD$HdH+%(u$HPL[]A\HEHP0@E1>{ff.H5UH5ATUSHHH5CHPHPL)dH%(HD$H1HD$8HL$(P15ޮLL$0}ZY|HHHXHD$(H5< HHHE(HD$(HHD$ HE HD$ HHD$8HE8HD$8H~HmIt%HD$HdH+%(u*HPL[]A\fHEHP0@E1zfDATUSHHH5BHHdH%(HD$1H|tt{HHtbHXH$H5 HHHE H}HmIt%HD$dH+%(u*HL[]A\fHEHP0@E1FyfDAVHH5AAUATUSHPL7HHdH%(HD$H1HL$(LL$0{HD$(L`M1\H{HCH5HxH9t }H{(HGwtMHI9tlHD$(H\HCuHH5=AH8x1I.u IFLP01HT$HdH+%(HP[]A\A]A^DyIHtHD$(LIFHHD$0IF HD$0HyLIF(yI~(IF0tE1MWHzHHNIF(HtH{(vHcxH+IV0IHDM9HD$(ImH\HSHs HBH@ HuH@HH5"@H8Rw1HH5LH82w1HyH5KH8w1H5 L<{I.IVHD$LR0HD$kv@USHHH5?HhLH۩dH%(HD$X1HD$HHL$0P1APLL$P2yZY.xHHHXHD$0HH5HE HHD$@HE0HHD$HHE8HuHE(HtIH5HJzHmtHT$XdH+%(u7Hh[]@HD$HUHR0HD$fHmHD$t@1uATHH HUH>HpLdH%(HD$`1HD$8PHD$8PHD$8P1LL$8xH wHHt~HD$H5RHHEHHD$ HE HHD$(HE(HHD$0HE0H;yHmIt!HD$XdH+%(u&HhL]A\fDHEHP0@E1tfDH5xH55xAUATUSHHo LgHG(HGHG H~;LE1H;H/uHGP0H{H/uHGP0IHL9uHL[]A\A]prAWAVAUATIHH5HUSHHHdH%(HD$81ID$ HL$Ld$HHD$HID$ 1`v(rIHHwHHH|$yHE1Ff.[xuvLH|$HL$LHD$ H{ 6tqIL9IFNHWHD$R0HD$+HtHmu HEHP0H|$HtH/t"1HT$(dH+%(u.H8[]A\A]DHGP0H|$]\n ^ff.fAUIATUHSHhHdH%(HD$X1HHt$(HD$0IE8D$HD$PIE(H|$D$8HD$HcHD$@HI} HHT$HiaH\$H-\Ld$H;$sDfHCH9t(HpI}HD$ LHPtnD$8ufHH9$wH|$@K[tMHt$@LyH|$@IH/t@IE(HhHD$XdH+%(u5HhL[]A\A]fH-H|$@E1H/uHGP0fI\fDUHSHH(H~(dH%(HD$1HtWHv0HL$HT$D`t(HD$HT$H9r.fDHH9sH9hu1HT$dH+%(u\H([]H{H[t=uH{H\t(tC8uHS0H{ H^뛸[fDSHHH H;dH%(HD$1HL$HT$o_tHL$1H9L$tHT$dH+%(uH [fDC=[ff.fATIHUHSH I<$dH%(HD$1HL$HT$^t4H\$H;\$r5DHH9\$v%HSI|$H]u߸ 1HT$dH+%(u H []A\ZUHHSH(H}dH%(HD$1HL$HT$M^t5H\$H;\$r2f.HH9\$vHsH}HZu@1HT$dH+%(uH([]Yf.ATUHSHH dH%(HD$11thHL$HT$HH]HT$HD$II)Ā{0tDH9tIH@HHT$dH+%(H []A\[fLHH1[HtDM~Ht$1HHHLHHLHH9HHH8>XfD1tHaH5D"H8 Y1VXff.ATUSH0dH%(HD$(1H41HHHL$HT$ Hi\HT$ HD$H)Ѐ{0HMIIL;eH~I1 fDHT$ HHLHHHxHHHBHHt H/uHGP0HI91HT$(dH+%(H0[]A\f.Hu6HzHjHEH/uHGP01@Ht$莁Ht$HH5>-H8WHH5,H8W`HȊH5q-H8aW@"WfATIUHHHȊH~HHpH9t(#\uHLHH5]A\fDHLHH5]A\XATUHH}ZHt/HHIZZtHL]A\f.I,$tE1HL]A\ID$LP0ff.7[AT%[Ht'HIEWtLA\f.I,$t E1LA\ID$LP0'WHYtHHHfD1@ATUHHZHt/HHIJYtHL]A\f.I,$tE1HL]A\ID$LP0ff.ATH IHHHH dH%(HD$1LL$LD$HD$HD$~X~LUIHtnH|$HtWtAD$0Ht$HtH;5t LbXtHD$dH+%(u*H LA\I,$uID$LP0fDE1NTff.H=UUHH dH%(HD$1H<$ RHD$HtIHH5Ht"HD$HT$dH+%(u0H ]H|$HtH/t1@HGP01S1fAVAUIATUSH)YHtTHE1fDH}Ht ZYHLISLHI?YHWRHHu[L]A\A]A^E1[]LA\A]A^ÐUHH5H dH%(HD$1HL$HT$UtlH|$ UHHtOHt$H:WHH!SHT$dH+%(u2H ]fDH1WHDTHt1eRDAWAVAUATUSH8T$ L$dH%(HD$(1HD$HthHIL|$1Lt$ Ll$ HLLLLVt/HCH;D$ tLH9D$uHt$ |$HHS tfDHD$(dH+%(uBH81[]A\A]A^A_HK HH $R|$ H $HHхuHCiQfATUHSHHH tAD[]A\ÐH}AdUHHtH0H;ut#HE1S[]ADA\H=uLe pUHHAԅuH3fHwRfATUHSH_HsH;wt[H]A\RLg H=THHAԅuHs[]A\fDATUHSH_HGH9CH9CH9C H9C0 H9C8;H9C@aHsHH9t[H]A\QfH=ELe @THHAԅuHsH[]A\fDLg H= THHAԅuHEH9CGH=Le SHHAԅuHEH9C !H=Le SHHAԅjHEH9C0@H=Le hSHHAԅ2HEfH=lLe 0SHHAԅHEH=DLe SHHAԅHEpATUHSHSIH9Et#[LH]A\:Pf.H=H] RHHӅt[]A\DAWAVAUATUSHHWL%H=ɀL`HހH8HINlL-I8?LNGL5PI82LN"H{H8%HeNHH8H=qHHuYfH{(H(HtCCtuHCHMI9 uLm JHHAՅtfD1H[]A\A]HHJJKK(K8K``````иոpop from empty listRootStatetb_nexttb_frameob_ref__self____module__?f_backf_codef_builtinsf_globalsf_localsf_trace_hiding_tag_edges[%d].srcedges[%d].tgtmodulesi%d_%smodules_by_indexsysdictimportlibcodec_search_pathcodec_search_cachecodec_error_registrybuiltins_copyimport_funcbefore_forkersafter_forkers_parentafter_forkers_childpyexitmodulei%d_t%lu_f%dc_profileobji%d_t%lu_%sc_traceobjcurexc_typecurexc_valuecurexc_tracebackcoroutine_wrapperasync_gen_firstiterasync_gen_finalizercontexti%d_%nt%lu_%nf%d%nno such thread state numberi%d_%U__main__timesleepO!|O!:interpreterlock creation failedcan't start new threadOutput from malloc_stats Other statistics gcget_objectsOO:numedgesO!:register_hiding_typeOO:relateob_typeO!O!:reachableO!O!O!|O!i:shpathstepdelete_extra_type._NyHeapDefs_OO!:hv_newiO:rel_newO:partitionO:Horizon.__new__OO:<OOO:selectO!O!:cli_andO!O!OO:cli_dictofO!O!O!:cli_rcsO!:cli_indisizeO!O!:cli_findexTuple of TUPLES expected.Tuple of TRIPLES expected.O!O!O!:cli_inrelO!OOO:user_definedO!:update_dictownersO!O!:update_referrersAmbiguos mapping|OO:NodeGraph.__new__OO__dict____code____globals____defaults____closure____doc____name__ObjectClassifierRootStateTypemalloc_usable_sizemalloc_stats_PyObject_DebugMallocStats_Py_RefTotalmodule initialization failedset_async_excxmemstatsrelatorselfclassifyepartitionnewsis_mappingis_sortedadd_edgeadd_edges_n1as_flat_listcleardomain_coversdomain_restrictedget_domainget_rangeinvertinvertedrelimgupdateupdated__dir__limitframeis_hiding_calling_interpreterrootstatic_typescli_idcli_idsetcli_nonecli_typecli_user_definedindisize_sumheapreachable_xregister_hidden_exact_typeregister__hiding_tag__typeupdate_referrers_completelyguppy.heapy.heapyc.Horizonguppy.heapy.heapyc.HeapViewheapyciterablenodegraph-iteratorX<===!=>>=GSAvoidEdgesfind_onestartavoidclassifier returning Noneuser defined classifiercond_clicond_kindmemoized_kindhv_cli_rcsclassifier returning ...guppy.heapy.heapyc.Relationguppy.heapy.heapyc.NodeGraphguppy.heapy.heapyc.NodeTupleheapdefsdelete_extra_type: argument must be a weak ref, got '%.50s'delete_extra_type: reference object %p not foundDuplicate heap definition for type '%.50s'conf_relate_visit: invalid relation typeset_limitframe: frame or None expectedcli_and_memoized_kind: argument must be a (subtype of) tuple.cli_and_memoized_kind: wrong length of argument.nodegraph changed size during iterationhorizon_remove: no such horizon foundno such interpreter state numberthread state has no frame numbered %d from bottomthread state has no attribute '%s'interpreter state has no attribute '%s'root state has no attribute %RGetting thread state without an interpreter number is deprecated. Use %R insteadUnhandled exception in interpreter started by %R ====================================================================== Output from _PyObject_DebugMallocStats() Total reference count = %12zd inrel_visit_memoize_relation: can only memoize relation (not "%.200s")horizon_patched_dealloc: could not clear object in nodesethorizon_get_org_dealloc: no original destructor foundregister__hiding_tag__type: type has no '_hiding_tag_' slotregister__hiding_tag__type: type is already registeredregister_hidden_exact_type: type is already registeredheapdefs must be a capsule objectheapdefs must be named ._NyHeapDefs_rel_new: Invalid relation kind: %d, must be > 0 and < %d.hv_cli_rcs_memoized_kind: nodeset object (immutable) expected.Invalid cmp argument to NyNyObjectClassifier_CompareCompare argument must be a string.Compare argument must be one of < <= == != > >=Invalid value of cmp argument.This classifier supports only equality selection.cli_and: classifiers argument must contain classifier objects.Tuple of triples with [0] a CLASSIFIER expected.Tuple of triples with [2] a STRING expected.O!:update_referrers_completelyupdate: right argument must be sequence of 2-tuplesItem deletion is not implemented for nodegraphs.ng_ass_sub: can not change number of edges (wants to always be fast); consider using .add_edge() etc. instead.ng_ass_sub: value to assign must be a tupleguppy.sets.setsc.NyNodeSet_ExportsError at initialization of module heapycThe hiding tag: if it is the the same object as the hiding tag of a HeapView object, the nodegraph will be hidden from that view.NG.is_mapping : boolean kind, read only True if NG is a 'mapping'. Then, only one edge is allowed for each source; indexing returns the actual target object instead of a tuple of targets.NG.is_sorted : boolean kind, read only True if NG is sorted. It will become unsorted after any update. It will need to be sorted to make it possible to find edges (implementation uses binary search). Any indexing operation will automatically sort it if it was not already sorted. The flag is currently used from Python to see if the nodegraph has been used at least once after update, so that it will not be cleared too early.__dir__($self, /) -- Specialized __dir__ implementation for rootstate.HV._hiding_tag_ The hiding tag defining what objects are hidden from the view defined by HV. Objects that contain a _hiding_tag_ object which is identical to HV._hiding_tag_, will be hidden from view, in the following cases: o The object is of a type that has been registered for hiding via _hiding_tag, or is of a subtype of such a type. o The object is of instance type. Such an object will be checked for a _hiding_tag_ item in its __dict__. HV.is_hiding_calling_interpreter : boolean kind If True, the data of the interpreter using the HV will be hidden from the heap view as seen from RootState. This is used when multiple Python interpreters are used. One interpreter will be monitoring the operation of the other interpreter(s). It would set is_hiding_calling_interpreter to True in the HV it is using. Its own data will then be hidden from view, making memory leak detection more practical.HV.root An object that is used as the starting point when traversing the heap. It is normally set to the special RootState object, which has special functionality for finding the objects in the internals of the Python interpreter structures. It can be set to any other object, especially for test purposes. See also: RootStateHV.static_types : NodeSet, read only The 'static types' that have been found. The static types are the type objects that are not heap allocated, but are defined directly in C code. HeapView searches for these among all reachable objects (at a suitable time or as needed).classifier returning object typeclassifier returning index of matching kindclassifier returning object sizeclassifier returning singleton set containing object itselfclassifier returning the object itselfclassifier based on a combination of other subclassifiersguppy.heapy.heapyc.ObjectClassifierguppy.heapy.heapyc.RootStateType?tp_cache__mro____bases____base__tp_subclasses__slots__;Pl$ $D$x%t&&&&$&8&L&`$'t'''''(T( d( t(4 (H (\ (| ) 4) t) ) ) D*L t*` *t * + $+ 4+ , ,< d. . 4/ T0H 1t d1 t1 2 d2 3T 3 4 4$55`677 8L$9d99$:t:0:\4;< =d>>>>>? t?D?|B$C4D`dDtDF FlDHIJ4J0KUDY,dxTidlnD4opTotoooDpq$tqdqxqrs(t`4ttu$uuu8DvldvTwtwwwwTxDxydzz(z<{Pt||}0}D~~d4$4\ă$4 ` tX 4 4 !T4!tp!!d"ĒH""Ĕ"" #0#TT#Dx#ԙ#d##$d $$D$%@%Ġl%%%$%4&D@&t&&Ĩ&ĩ4'ԩH'\'d'$'d(`(ĭx((T(0)T)))*4<*dT*ĺp****T*+h+ľ+D+ ,L,p,,T,-$8-l---d-t- .D.h.|...4/$/p////00dh000(1zRx $ FJ w?:*3$"DX8\FBB D(D0(A BBB   #$V8L(` t  ;E] F R@< 8 4 @4EW D S,`$@|T;E] F Rt\FEB D(D0B (A BBBB J (D EBBI A(C BBB. $ ;Ft@< 3Th hd 4|` FAA  GBG AAB4 FAA  GBG CABL!FBD D(G0 (A ABBK c (A ABBA <00X".PQLp"BBB A(G0@ (D BBBH F (D EBBE 4#EDG w AAG l CAH ($FHG N DBG 0$$LEDG e AAI DFAX$4l$FDA X DBG WAD$%OZDD fDB4@%FDA X DBG WAD8%FED D(Gpe (A ABBK 8@ &BEA D(P0H (D ABBC 0|&YEAG w AAJ DCA&+H'FBA F(D0g (D ABBE Q(D ABB(l'FDD z ABE <(wHs E `Xd(BFB J(A0A8D@ 8F0A(B BBBB D 8C0A(B BBBH <(EDD e AAD D DAO DAA<@)EDD ` AAA D DAG DAA<)8E[ H K(\)SBAD ] ABI ()SBAD ] ABI (*IFAD ] ABE (<*SFAD ] ABE ( p*SBAD ] ABI 8 *FBB A(A0D@ 0D(A BBBG Z 0C(D BBBA P 0C(D BBBC X 0A(A EBBE t +FBE B(D0A8DP 8A0A(B BBBA D 8C0A(B BBBH V8A0A(B BBB 4 (,WX A iGX ,l , , , ,4 ,kFAD P CBA AFB4 (-kFAD P CBA AFBH, `-FBB B(A0A8GP 8D0A(B BBBF x 09E` K HX 40 FBD D(G0{ (A ABBA ^ (A ABBC |(D ABB 0 0-4$ 0EDG x AAF ] FCJ \\ @1 FEA A(G0R (D ABBA N (D ABBI O (G DBBB \ 1FBB B(A0D8DP 8A0A(B BBBB D8C0A(B BBB8 p2UFBA D(DP~ (A ABBK 8X 3GBUB A(D0v (I BBBE ( 4mFAG  DBE  4#IJ E JD 4FBB B(A0A8D@8C0A(B BBB(R EAAHDh5 FBB B(A0A8G` 8A0A(B BBBE H @FFBB B(A0A8D@ 8A0A(B BBBD HC9 FDB B(A0A8DP 8D0A(B BBBH H(NFBB B(D0G8Dp 8A0A(B BBBE HtR FBB B(F0A8D@r 8A0A(B BBBE 0LUFLA D@  ABBG (V"EHD AA W4WHW\W4pWFGD G DBA X DBC (DXEDG E AAI <XbEDG X AAF \ AAB HDAY/($Y&KU\@FAD oAB(P{4EKD` AAA <Hd|FAA QpixFMxAp  DABD 4}0}<,} FAA QpixHKxAp  DABJ 0}FAA Q0v  DABJ D$~FLB A(A0D 0A(A BBBF 8lEAQiDKA AAE 8āFNK]FFP{ DBG 4 FBA A(D0d(D ABBLD ȂFBB B(N0A8Db 8D0A(B BBBB  8>E` K MX X?FBD A(D0 (A ABBF D (D ABBK d(A ABB!<HT8(!DFED D(D0` (A ABBC (d!(hYDG [ AAG L!l=BBB B(A0A8GF 8D0A(B BBBD !\yEQ S AF L"FBB B(D0N8D" 8D0A(B BBBG 4T"\FDD V ABI ` ABA 8"0FDA L ABA X ABJ "EQ0Y AH "*KY#]Hv B  #LGH~(8#aFAG  DBE d#ȐEG0W AD #4;#`,HY G \#t#FED D(G0 (A ABBF N (A ABBD ^ (A ABBD 8$DFBA A(GP{ (A ABBF 8T$sFBD D(D`0 (A ABBF <$\jFEA D(D  (D ABBC ($EDG@m AAA $@sEJ0I AG 0 %FGD D@  AABA (T%EGD@~ AAA 0%|"FAD G@y  AABA 0%xFAA DP  AABK 0%iFDG d NBK DNB4& eFAG a DBK N DBD T&X h&TMF_ K O A & &|,HY G 4&eFAG a DBK N DBD &ȚF[0 ED ' ,'EG0S AH P'Hd'FBE A(A0S (D BBBD D(A EBB ',EN0e AG H'FBB B(A0A8Dp 8C0A(B BBBH 4 (lFAD ` ABB s AKA X(ԝ4l(jFAD O IGF qFB8(FAD N IGG q FBG 4(kFAD S LGO bFBH)\FBB B(A0A8D@ 8D0A(B BBBA 8d)FDA p ABB ? FBI 4)̥ EAD  AAH O AAG 4)FBA A(D0x(A ABB`CGGGGG p p5pxo`  ة8 S*@) oo@*oo(o]ا0p@pPp`pppppppppppqq q0q@qPq`qpqqqqqqqqqrr r0r@rPr`rprrrrrrrrrss s0s@sPs`spssssssssstt t0t@tPt`tptttttttttuu u0u@uPu`upuuuuuuuuuvv v0v@vPv`vpvvvvvvvvvww w0w@wPw`wpwwwwwwwwwxx x0x@xPx`xpxxxxxxxxxxmemstats() Print extra memory statistics. What is printed depends on the system configuration. set_async_exc(thread_id:integer, exception:object) Set an exception to be raised asynchronously in a thread. interpreter(command:string [,locals:dict] ) -> int Create a new interpreter structure with a new thread and return the thread identity number. The arguments are: command A command that will be exec'd in the new environment. locals Local variables passed to the command when exec'd. The new interpreter and thread is started in a new environment. This environment consists of a new '__main__' module, with the optional locals dict as local variables. The interpreter() function will return after the new thread structure has been created. The command will execute sooner or later. The thread will terminate, and the interpreter structure be deallocated, when the command has been executed, and dependent threads have terminated.C.select(X:iterable, kind:object, cmp:string) -> list Select objects of a particular kind. Each object in X is classified by C to get its kind and this is compared with the kind argument to determine if the object will be returned in the return list. The cmp argumt tells how the kind of the object OK is compared to the kind argument AK and can be one of < <= == != > >= . The comparison '<=' used depends on the classifier. Not all classifier may have such a comparison available. The common cases where it is available are: For the type classifier: A <= B means A is a subtype of B. For the size classifier: A <= B means that the size A is less or equal than B. For the referenced-by classifier: A <= B means that A is a subset of B. C.partition(X:iterable) -> dict Return a partition of a set of objects. Each object in X is classified by C to get its kind. The partition returned is a mapping from each different kind to a list containing the objects of that kind.C.classify(object) -> object Return the kind of an object. The object is classified by C, to get its kind which is then returned.This is the type of objects created by the hv_cli_* factory methods of HeapView objects. See HeapView.__doc__ and the factory methods for the different kinds of classifiers that are supported. Tuple with comparison based on addresses on the elements. H.news(X:iterable) -> NodeSet Return the set of objects in X that is not in the set of objects of H. If H was created from the contents of the heap at a particular time, H.news(X) will return the set of objects in X that were allocated after H was created. NG.updated(X:iterable) -> NodeGraph Return a copy of NG updated with the edges from X, specified as pairs of the form (source, target).NG.update(X:iterable) Update NG with the edges from X, specified as pairs of the form (source, target).NG.relimg(X:iterable) -> NodeSet Return the relational image of NG wrt X. That is, the set of nodes that are the target of some edge that have its source in X.NG.inverted() -> NodeGraph Return a copy of NG with the edges inverted.NG.invert() Invert the edges of NG.NG.get_range() -> NodeSet Return the set of nodes that are the target of some edge in NG.NG.get_domain() -> NodeSet Return the set of nodes that are the source of some edge in NG.NG.domain_restricted(X:iterable) -> NodeGraph Return a new NodeGraph, containing those edges in NG that have source in X.NG.domain_covers(X:iterable) -> bool Return True if each node in X is the source of some edge in NG, False otherwise.NG.copy() -> NodeGraph Return a copy of NG.NG.clear() Remove all items from NG.NG.as_flat_list() -> list Return the edges of NG in the form [src0, tgt0, src1, tgt1 ...].NG.add_edges_n1(srcs:iterable, tgt) Add to NG, for each src in srcs, an edge from src to tgt.NG.add_edge(source, target) Add to NG, an edge from source to target.Horizon(X:iterable) Create a new Horizon object from X. The objects in X will be used to initialize a set of objects within the Horizon object. There are no official references to these objects, but as some of these objects become deallocated, they will be removed from the set of objects within the Horizon object. The objects within the set of objects within the Horizon object can be compared to another set of objects via the news() method. This can be used to see what objects have been allocated but not deallocated since the Horizon object was created. NodeGraph([iterable [,is_mapping]]) Construct a new NodeGraph object. The arguments are: iterable An iterable object that will be used to initialize the new nodegraph. It should yield a sequence of edges of the form (source, target). is_mapping A boolean which, if True, will cause the nodegraph to be treated like a 'mapping'. It will then, for the purpose of indexing, be expected to contain a single target for each source node. A NodeGraph object contains pairs of nodes (edges) and can be indexed on the first node of the pair (the source of an edge) to find all second nodes of such pairs (the targets of those edges). NodeGraph objects are used internally in the heapy system, for example to record dict ownership and shortest-path graphs. They may be used generally for mapping and dict-like purposes, but differ in the following: o The mapping is based on object identity - no equality or hashing is assumed, so any object can be used as a key. Only the address is used. To distinguish this usage from that of ordinary dicts and sets, such objects are called 'nodes'. o There may be any number of targets associated with each source. o Performance characteristics differ from dicts, in somewhat subtle ways. The type of an object with special functionality that gives access to internals of the Python interpreter and thread structures. It is used as a top level root when traversing the heap to to make sure to find some special objects that may otherwise be hidden. There are no references from the RootState object to the special objects. But the heap traversal and related functions defined for RootStateType look into the Python interpreter and thread structures. The visibility is controlled by options set in the HeapView object which is passed to the traversal function. This makes it possible to hide an interpreter and/or some frames referring to system objects that should not be traversed. (See the attributes 'is_hiding_calling_interpreter' and 'limitframe' in HeapView.) The objects found in interpreter and thread structures are related to the RootState object via attributes with special names. These names have a special form which will be described below. The name starts with either an interpreter designator or a thread designator. It is then followed by the name of a member in the corresponding interpreter or thread structure. These names are the same as the names of the members in the C structures defining them. Some of the names may be dependent on the Python interpreter version used. The attribute names are used for two purposes: o To be the name used in the result of the 'relate' operation between the RootState object and some object that is referred to via an internal Python interpreter or thread structure. o To be used as attribute names when selecting objects from the RootState object. This may be used to get at such an object knowing only its attribute name. An attribute name is of one of the following three forms. i_ i_t_ i_t_f The interpreter number identifies a particular interpreter structure. Often there is only one interpreter used, in which case the number is 0. It is possible to use more than one interpreter. The interpreters are then numbered from 0 and up in the order they were started. [This applies as long as no interpreter is terminated while there is still a newer interpreter running. Then the newer interpreters will be renumbered. If this is found to be a problem, a solution may be devised for a newer release.] The interpreter attribute is a member with PyObject pointer type in the PyInterpreterState structure and can be, but not limited to, one of the following: modules sysdict builtins codec_search_path codec_search_cache codec_error_registry The thread numbers are taken from the thread identity number assigned by Python. [ In older versions without thread identity numbers the hex address will be used.] The thread attribute is a member with PyObject pointer type in the PyThreadState structure and can be, but not limited to, one of the following: c_profileobj c_traceobj curexc_type curexc_value curexc_traceback exc_type exc_value exc_traceback dict async_exc The frame list is treated specially. The frame list is continually changed and the object that the frame member points to is not valid for long enough to be useful. Therefore frames are referred to by a special designator using the format shown above with a frame number. The frame number is the number of the frame starting from 0 but counting in the reversed order of the frame list. Thus the first started frame is 0, and in general the most recent frame has a number that is the number of frames it has before it in call order. HV.limitframe : frame | None The traversal limiting frame. If limitframe is set to a frame object, the frames that are more recently entered than limitframe will be hidden when traversing the heap from the root RootState. It will start traversing from limitframe rather than from the most recent frame as it would otherwise do.HV.update_referrers_completely(X:nodegraph) Update referrer graph X 'completely'. [Experimental algorithm that updates X with the referrers to all objects in the heap (of visible nodes as defined in HV). It is not normally used.]HV.update_referrers(X:NodeGraph, Y:NodeSet) Update referrer graph X for Y. The visible heap defined by HV will be traversed from the root of HV so that the edges of every path from the root to nodes in Y will be represented, inverted, in X.HV.update_dictowners(owners:NodeGraph) Update owners with ownership edges. The dict owners graph will be updated with an edge from each dict object in the heap, to either its owner or to None.HV.shpathstep(G:NodeGraph, U:NodeSet, S:NodeSet [,AvoidEdges:NodeGraph [,find_one:bool]]) -> NodeSet This method implements one step of a shortest path algorithm. The arguments are: G Updated by the method, with the edges from nodes in the source set to the new nodes visited. U The source set for this step. S The set of already visited nodes. AvoidEdges Edges to avoid. find_one If True, at most one edge will be found from each node in the source set. Normally, all edges will be found. Return value: The new nodes visited. This may be used for the U argument the next time the method is called. See also: shpgraph_algorithm in Path.py.HV.relimg(S:iterable) -> NodeSet Return the 'relational image of HV wrt S'. That is, the set of nodes that are directly referred to from the nodes in S via the visible heap reachability relation as defined by HV.HV.relate(src, tgt) -> relation structure Return a description of the relation between src and tgt. This is used for descriptions of edges in paths. [The result is in a special format that I choose to not define here since it is for special low-level use and subject to change.]HV.register__hiding_tag__type(type) Register a type of objects that may be hidden from the heap view defined by HV. The type must have a slot named _hiding_tag_. An object that is an instance of the type, or of a subtype, is hidden when its _hiding_tag_ is HV._hiding_tag_.HV.register_hidden_exact_type(type) Register a type of objects that should be hidden from the heap view defined by HV. Objects of the exact type registered -- not including subtypes -- will be hidden. See also: register__hiding_tag__type.HV.reachable_x(X:NodeSet, Y:NodeSet) -> NodeSet Return the set of objects reached via a path in the visible heap as defined by HV, from some object in X, avoiding any object in Y except at the end of the path.HV.reachable(X:NodeSet, Y:NodeSet) -> NodeSet Return the set of objects reached via a path in the visible heap as defined by HV, from some object in X, avoiding any object in Y.HV.numedges(src, tgt) -> int Return the number of edges from src to tgt.HV.heap() -> NodeSet Return a set containing all 'visible objects' in the heap view defined by HV. See also HeapView.__doc__.HV.indisize_sum(S:iterable) -> int Return the sum of the 'individual size' of the objects in S. See also HeapView.__doc.HV.delete_extra_type(weakref) Delete extra type information. For internal use as a weak-ref callback. HV.cli_type() -> ObjectClassifier Return a classifier that classifies by type. The classification of each object is the type, as given by its C-level member 'ob_type'. (This is the same as the type returned by the Python-level builtin 'type'.)HV.cli_rcs(referrers, classifier, memo) -> ObjectClassifier Return a classifier that classifies by "Referrer Classification Set". The classification of an object is the classifications of its referrers, collected in an immutable NodeSet object. Arguments: referrers A NodeGraph object used to map each object to its referrers. classifier A ObjectClassifier object used to classify each referrer. memo A dict object used to memoize the classification sets. HV.cli_none() -> ObjectClassifier Return a classifier that classifies all objects the same. The classification of each object is None.HV.cli_inrel(referrers, memo) -> ObjectClassifier Return a classifier that classifes by "incoming relations". The classification of an object is the set of incoming relations. referrers A NodeGraph object used to map each object to its referrers. memo A dict object used to memoize the classification sets. HV.cli_indisize(memo) -> ObjectClassifier Return a classifier that classifies by "individual size". The classification of each object is an int, containing the object's individual memory size. The argument is: memo A dict used to memoize the classification objects.HV.cli_id() -> ObjectClassifier Return a classifier that classifies by set of identity. The classification of an object is a singleton immnodeset containing the object itself.HV.cli_id() -> ObjectClassifier Return a classifier that classifies by identity. The classification of an object is the object itself.HV.cli_findex(tuple, memo) -> ObjectClassifier HV.cli_dictof(owners, ownerclassifier, notdictkind, notownedkind) -> ObjectClassifier Return a classifier, that classifies by "Dict Owner". The classification of an object is the notdictkind, unless the object is a dict object. If the dict is 'owned' by some owner, the classification will be the class (as by the ownerclass argument ) of its owner. If it is not owned, the returned kind will be notowned argument. Arguments: owners A NodeGraph object used to map each dict object to its owner, or to None if it has no owner. The graph will be automatically updated, from heap information defined by HV, whenever an attempt is made to classify a dict that maps to nothing. ownerclassifier notdictkind notownedkind HV.cli_and(classifiers, memo) -> ObjectClassifier Return a classifier that combines the classifications of other classifiers. The classification returned from the returned classifier is a tuple containing the classifications from the classifiers in the classifiers argument. HeapView(root, heapdefs:tuple) Create a new HeapView object with arguments: root The initial value of the root member. heapdefs Definitions of specially treated extension types. A HeapView object provides methods to get memory related information about the system heap and about individual objects. It implements much of the low-level functionality for the Heapy system. It is intended to provide what can not be done at all or would be much slower if programmed directly in Python. It is not intended to be used directly by a user, but to be wrapped in higher level objects. Some terms that are referred to in the method descriptions: Visible objects. The HeapView object attempts to restrict its view of the heap to only the 'visible objects'. This is to make it possible to analyse the heap via a Python library that inevitably itself is continually allocating and deallocating objects. These should be hidden from the heap view presented. This is primarily done via a special tag attribute, see '_hiding_tag_' and 'register__hiding_tag__type'. Frames can be hidden with another mechanism, see 'limitframe'. For hiding all objects of a special type, 'register_hidden_exact_type' may be used. It is also possible to use a separate interpreter and hide its root objects, see 'is_hiding_calling_interpreter'. Classifiers. The methods named cli_* are factory methods that create objects of type ObjectClassifier. The principal difference between classifiers is how a single object is classified. The single-object classification function is available in classifier objects; it is the classify method. There are also methods that operate on collections of objects, namely partition and select. These eliminate the per-object Python-level function call overhead that would occur if the classify method were to be called from Python for each object in a collection. See also the ObjectClassifier type. Individual size. The individual size of an object is its individually allocated memory size. It includes: o The basic object size, as can be found out in a standard way. o The extra memory for variable size objects. o For GC collected objects, the size of the GC information. o An alignment to the next highest multiple of a pointer size. o The size of any other memory allocated that belongs to the object. Some types of objects have extra memory allocated that can not be accounted for in the standard way. This memory should nevertheless be included in the individual size. To determine the size of these objects, special functions are needed. These are defined for standard builtin types, such as lists and dicts. Other types should be defined via the heapdefs argument to the HeapView constructor. The individual size does not include: o Subobjects that are accounted for separately. o Overhead for the memory allocation system. This varies depending on the kind of memory allocator, the requested size, etc. This module contains low level functionality for the heapy system. It is intended to be wrapped in higher level library classes. Summary of module content. Classes HeapView Gives a parameterized view of the heap. Horizon Limits the view back to some moment in time. NodeGraph Graph of nodes (address-treated objects). ObjectClassifier Classifies objects on various criteria. RootStateType Root of heap traversal using Python internals. Functions interpreter Start a new interpreter. set_async_exc Raise an exception in another thread. xmemstats Print system-dependent memory statistics. Object RootState The single instance of RootStateType. BpE@(EBHEEECE 'CEP@RE 0RE 1XS`!"FPUF`@ PUF 8 WFXF(8ZG@@(A0A8@@AH#Ah5ApHAx]AkAwA A A A q@AHAPAXA`BhApAx BAEB)B=BQBGEGGBGGG@@EGEGGGGG0FP[p0FG`p0FHp@&H/HE9H0GHRHPBHE0#Dx[pЛ0F[00GHRHp0F[0F\0CRH0C8\Й@FH* +- p@1*`E`FFF`fA $Fp2F DFOF`YF` `Fp%iFpF%wF%CC@#DF `F0DPjDF`D@@F@F'{C@F@G#C`[C@G Gp/GGC@iF pCDDJGfG @GXD@G(0@kH @& 0&H8p  D0 `' &x\ @ @@H0D@\ށp @0heapyc.cpython-37m-x86_64-linux-gnu.so-3.0.8-8.el9.x86_64.debug7y7zXZִF!t/0 ]?Eh=ڊ2Na mdt3lNQTS)/PQ\ [ֈt~49<3ohi~#&ֲV䅤!a? i?4!Q_P3Ǡߢ lJdQB߻Zӓ2wO| b ;f]\I[rZ_Tmk^m]j\?NS~yr":FaJ w@iX6Ly՜*,t"痓OtgtWP9OVƌdS%+_ŮH!>jC"y'lE0o2E ,j(p|2j} }ޢ.oENRqY |>٩͇Dlhfo+%%: UM"c |gEW; Ȅڋblj8wn~qE[rMגe+ _d1\GlMzš,%CzH6kyV,.((i.nnMs/Ү\25@ ];QNW'f2 xbg<~7`f]šZݶW{YA-F$9}k⾳2u `͚o*& NJ(KMb{Лj.=hEq/+ӹ7qU(xZ5oVMHv`,Dt~h=m[_PBk^\^@ 2*ju07Ҹb?~-bH! bΤNdm+xK~6_ ->M1Gc݇ј y\hHB1^ǩWe&oaء_+!{˳fT >\FV0|-;z:G^=@qAZ3^Ds;ˢwQv5tUhpIi\;$X"h,Yk}|,zl3T1Vd3J h0HL$3\M2€DҋʿDlb  pɁ( {NELDjhHIZ!łQa cj"8c#<)Sʀ[djK ^˼hՋ2N꟫t}|ӄIUBj3[~n_Y!`(]@oa=٨)@C[yr6<8Cj?\i :/l9J *{ƛI)f~ZB|~HΡxq1ؒ@=2;QWg'%r㌯&Ks& ҳR<:K;"乓} pPn+.*Ɋ9]CF}qUµn 8c[0fω/aHf$uk5Y}*Q;$c|1꬜vrQ*7%c@XG%&eIݛP9ٕ5C_ vQ2tpIRћ`P\G聱QYVE2%Eݰ+[Pdݳ478_+*[c5Se(cCyi=ԛ" n->?AY~˺U>7% V*Hh赜Afz<𹉽)w5#S383dJOqRөQ~_G5wRq\3YLoz5^( ݖd!z1quUuL{i8Ta H_B'tHa2U4{qN)9Of'=#} Tu .R,.9Kq[-3W^ S1 Qp;elP8taۦ,Q+(G#ɹR^ U%c:>*rбBԩxE-4fF~XnJv)h_*pč\9|lGa,FEk~IK_QU(LKVM@ aUo@gu 9&dCRQQBy8Ɏ͗?O9~}SP"}AF}SvO pn^a" MMԵ s_;fSx4DF-bS>Y3/E߶x|^)7w-Q7El K{2oky`w t3 C8-9 oix/%Y;=s*<͒3# RLT>o*L_"MGKoVp;J4|ͷgot#Y2;qwv Jf+/4"]t)XL &-8뚓.ݔ'#'H[G3/1͂QǙ1Te@a˿ :OCt}c#?4 ۬`"}gYZ.shstrtab.note.gnu.property.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.gnu_debuglink.gnu_debugdata  $1op; ``(C Ko((Xo@*@*`g**@)qBSS8 {ppv p pyyЁЁp5p5 @@  ] ]T`d`d*ppxxX اؗةؙ pv &px pD "