§
    ðyIfA°  ã                   óz  — d Z g d¢ZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZ ddlmZ d„ Zd	„ Zd
„ Zd„ Zd(d„Zd)d„Z	 	 d*d„Zd„ Zd„ Zd„ Zd„ Z d+d„Z!d,d„Z"d,d„Z# e$¦   «         Z% e&¦   «         Z'd„ Z(d-d„Z)d.d„Z*d)d„Z+d„ Z,d/d„Z-d0d „Z.	 	 d1d!„Z/d2d"„Z0d-d#„Z1d3d$„Z2d/d%„Z3d)d&„Z4d4d'„Z5e+Z6eZ7dS )5a;  
Extensions to python's 'inspect' module, which can be used
to retrieve information from live python objects. The methods
defined in this module are augmented to facilitate access to
source code of interactively defined functions and classes,
as well as provide access to source code for objects defined
in a file.
)Ú
findsourceÚgetsourcelinesÚ	getsourceÚindentÚoutdentÚ_wrapÚ
dumpsourceÚgetnameÚ
_namespaceÚ	getimportÚ_importableÚ
importableÚ	isdynamicÚ
isfrommainé    N)ÚgetblockÚgetfileÚ	getmoduleÚgetsourcefileÚ
indentsizeÚ	isbuiltinÚisclassÚiscodeÚisframeÚ
isfunctionÚismethodÚismoduleÚistraceback)Ú
TokenErroré   )Ú
IS_IPYTHONc                 óB   — t          | ¦  «        }|r|j        dk    rdS dS )z%check if object was built in __main__Ú__main__TF)r   Ú__name__)ÚobjÚmodules     ú?/var/www/piapp/venv/lib/python3.11/site-packages/dill/source.pyr   r   #   s+   € å�s‰^Œ^€FØð �&”/ ZÒ/Ð/ØˆtØˆ5ó    c                 óx   — t          | ¦  «        }n# t          $ r d}Y nw xY w|dk    rt          | ¦  «        rdS dS )z,check if object was built in the interpreterNú<stdin>TF)r   Ú	TypeErrorr   )r$   Úfiles     r&   r   r   +   sJ   € å˜‘”ˆˆøÝÐ!Ð!Ð!˜T�d�d�dÐ!øøøØˆyÒÐ�Z¨™_œ_ÐØˆtØˆ5s   � ‘ Ÿ c           	      ó€  ‡‡‡— ddl m} ddl m}m}m} d„ }‰                     dd¦  «        d                              dd¦  «        \  }}	 t          d|›d|›�t          ¦   «         t          ¦   «         ¦  «        Šn# t          $ r |ŠY nw xY w |‰¦  «        j
         || ¦  «        j
        cŠ}	ˆfd	„ || ¦  «                             ¦   «         D ¦   «         Š‰s
‰|	k    rd
S dS t          ‰¦  «        sdS  || ¦  «        Šˆfd„‰d         ‰d         z   D ¦   «         Š‰rt          ‰¦  «        sdS ˆfd„ || ¦  «                             ¦   «         D ¦   «         Š‰rt          ‰¦  «        sdS ‰                     d¦  «        dk    �r| || ¦  «                             ¦   «         v r÷|                     dd¦  «        d                              dd¦  «        \  }
}	 t          d|
›d|›�t          ¦   «         t          ¦   «         ¦  «        Šn# t          $ r |ŠY nw xY w |‰¦  «        j
         || ¦  «        j
        cŠ}	t          ‰¦  «        t          |	¦  «        k    rdS t          d„ t!          ‰|	¦  «        D ¦   «         ¦  «        Št          ‰¦  «        dk    rdS d
S t#          ‰¦  «        sdS ‰                     ‰d         ¦  «        Š|	                     |	d         ¦  «        Št%          ˆfd„t'          dt          ‰¦  «        ¦  «        D ¦   «         ¦  «        Št%          ˆfd„t'          dt          ‰¦  «        ¦  «        D ¦   «         ¦  «        Š‰                     ¦   «         ‰                     ¦   «         k    rFt)          ‰                     ¦   «         ¦  «        t)          ‰                     ¦   «         ¦  «        k    rd
S dS )z=check if lambda object 'func' matches raw line of code 'line'r   )Úcode)ÚfreevarsÚ
globalvarsÚvarnamesc                  ó   — dS )NÚ __this_is_a_big_dummy_function__© r3   r'   r&   ú<lambda>z_matchlambda.<locals>.<lambda>8   s   € Ð7€ r'   úlambda éÿÿÿÿú:z : c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   ©Úcount©Ú.0ÚiÚlines     €r&   ú
<listcomp>z _matchlambda.<locals>.<listcomp>A   s#   ø€ Ð	7Ð	7Ð	7˜Aˆ$�*Š*�Q‰-Œ-Ð	7Ð	7Ð	7r'   TFc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r9   r;   s     €r&   r?   z _matchlambda.<locals>.<listcomp>J   s#   ø€ Ð	-Ð	-Ð	-˜Aˆ$�*Š*�Q‰-Œ-Ð	-Ð	-Ð	-r'   r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r9   r;   s     €r&   r?   z _matchlambda.<locals>.<listcomp>L   s#   ø€ Ð	9Ð	9Ð	9˜Aˆ$�*Š*�Q‰-Œ-Ð	9Ð	9Ð	9r'   c              3   ó0   K  — | ]\  }}||k    ¯||fV — Œd S )Nr3   )r<   r=   Újs      r&   ú	<genexpr>z_matchlambda.<locals>.<genexpr>X   s.   è è € Ð9Ð9™%˜1˜Q°!°q²&°&��1�°&°&°&°&Ð9Ð9r'   c              3   ór   •K  — | ]1}t          j        d ‰|         ¦  «                             ¦   «         V — Œ2dS ©z([\W\D\S])(.*)N©ÚreÚmatchÚgroups)r<   r=   Ú_s     €r&   rD   z_matchlambda.<locals>.<genexpr>b   s@   øè è € ÐQÐQ¸A�RŒXÐ'¨¨1¬Ñ.Ô.×5Ò5Ñ7Ô7ÐQÐQÐQÐQÐQÐQr'   c              3   ór   •K  — | ]1}t          j        d ‰|         ¦  «                             ¦   «         V — Œ2dS rF   rG   )r<   r=   Ú_fs     €r&   rD   z_matchlambda.<locals>.<genexpr>c   s@   øè è € ÐTÐT¸a�bŒhÐ(¨"¨Q¬%Ñ0Ô0×7Ò7Ñ9Ô9ÐTÐTÐTÐTÐTÐTr'   )Údetectr-   r.   r/   r0   ÚsplitÚevalÚglobalsÚlocalsÚ	ExceptionÚco_codeÚkeysÚallr:   ÚlenÚsetÚzipr   ÚdictÚrangeÚsortedÚvalues)Úfuncr>   Úgetcoder.   r/   r0   ÚdummyÚlhsÚrhsr-   Ú_lhsÚ_rhsrK   rM   s    `          @@r&   Ú_matchlambdare   4   sÂ  øøø€ à'Ð'Ð'Ð'Ð'Ð'Ø6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø7Ð7€Eà�jŠj˜ 1Ñ%Ô% bÔ)×/Ò/°°QÑ7Ô7�G€Cˆð ÝˆD S S S¨¨Ð-­w©y¬y½¹¼ÑBÔBˆˆøÝÐÐÐ˜%�a�a�aÐøøøàˆg�a‰jŒjÔ  ' '¨$¡-¤-Ô"7€G€A€tà	7Ð	7Ð	7Ð	7  ¨$¡¤×!4Ò!4Ñ!6Ô!6Ð	7Ñ	7Ô	7€BØð à�Š9ˆ9˜T˜TØˆuåˆr‰7Œ7Ð ˜5˜5à	ˆ�$‰Œ€BØ	-Ð	-Ð	-Ð	-  A¤ r¨!¤u¡Ð	-Ñ	-Ô	-€BØ	Ð'•#�b‘'”'Ð' % %Ø	9Ð	9Ð	9Ð	9  ¨DÑ!1Ô!1×!6Ò!6Ñ!8Ô!8Ð	9Ñ	9Ô	9€BØ	Ð'•#�b‘'”'Ð' % %à�
Š
�9ÑÔ Ò!Ñ!¨¨x¨x¸©~¬~×/BÒ/BÑ/DÔ/DÐ(DÐ(DØ—I’I˜i¨Ñ*Ô*¨2Ô.×4Ò4°S¸Ñ;Ô;‰	ˆˆTð	%Ý�¨$¨$¨$¨t¨tÐ4µg±i´iÅÁÄÑIÔIˆBˆBøÝÐ$Ð$Ð$˜u˜"˜"˜"Ð$øøøà�'˜"‘+”+Ô% w w¨t¡}¤}Ô'<ˆˆˆ4Ýˆq‰6Œ6•S˜‘Y”YÒÐ u uåÐ9Ð9¥3 q¨¡;¤;Ð9Ñ9Ô9Ñ9Ô9ˆÝˆq‰6Œ6�QŠ;ˆ;˜u˜uØˆtå�dÑÔÐ) E Eð 	
�Š��!”‰Œ€AØ	�Š�D˜”GÑ	Ô	€BåÐQÐQÐQÐQÅÀqÍÈQÉÌÁÄÐQÑQÔQÑQÔQ€AÝ	ÐTÐTÐTÐTÅ5ÈÍ3ÈrÉ7Ì7ÑCSÔCSÐTÑTÔTÑ	TÔ	T€BØ	�Š‰Œ�B—G’G‘I”IÒÐ¥F¨1¯8ª8©:¬:Ñ$6Ô$6½&ÀÇÂÁÄÑ:MÔ:MÒ$MÐ$MØˆtØˆ5s$   Á/A; Á;B
Â	B
Ç/H ÈHÈHc                 ó  ‡— t          | ¦  «        }t          |¦  «        }n# t          $ r d}Y nw xY w|o|j        dk    o| }t          �r
|�r	 t          | ¦  «        }t          | ¦  «        }n„# t          $ rw t          | ¦  «        ret          t          | j	         
                    ¦   «         ¦  «        D ]8}t          |¦  «        }|                     d¦  «        sŒ'|}t          |¦  «        } Y nw xY w|rt          j        |¦  «        }�nùd                     t          ¦   «         j        j        ¦  «        }d„ |                     ¦   «         D ¦   «         }�n®|rœ	 ddlŠd}	nQ# t(          $ rD ddl}
|
                     ¦   «         d         j        d         }	|
j        dd	…         d
k    r|	dz  }	Y nw xY w|	rt3          |	¦  «        ‚‰                     ¦   «         }ˆfd„t7          d|¦  «        D ¦   «         }�n	 t          | ¦  «        s;t          t9          | ¦  «        ¦  «        rt          |¦  «        }t          |¦  «        }nt          | ¦  «        }t          | ¦  «        }n5# t          t:          f$ r! t          | ¦  «        }t          | ¦  «        }Y nw xY w|s(|dd…         |dd…         z   dk    rt3          d¦  «        ‚|r|n|}t          | |¦  «        }|rt          j        ||j	        ¦  «        }nt          j        |¦  «        }|st3          d¦  «        ‚t=          | ¦  «        r|dfS dx}x}}d}t?          | ¦  «        r| j        }|dk    rd}nd}| j         } t          | ¦  «        r| j        }|dk    rd}| }nd}| j!        } tE          | ¦  «        r| j#        } tI          | ¦  «        r| j%        } tM          | ¦  «        �rtO          | d¦  «        st3          d¦  «        ‚| j(        dk    }|rtS          |¦  «        dz
  }|sd}n| j*        dz
  }d}tW          j,        |¦  «        }tW          j,        |¦  «        }|dk    r‡||         }| -                    |¦  «        r_|sng|dk    rt]          ||¦  «        rnPnD||v r@d}t7          |dz
  dd¦  «        D ]#}| -                    ||         ¦  «        r|dz  }Œ# ||z
  }n|dz
  }|dk    °‡||fS 	 t          | ¦  «        s#t          t9          | ¦  «        ¦  «        r| j/        } n# t:          $ r Y nw xY wt          | ¦  «        rÛ| j        }tW          j,        d|z   dz   ¦  «        }g }t7          tS          |¦  «        dz
  dd¦  «        D ]a}| -                    ||         ¦  «        }|rB||         d         dk    r||fc S | 0                    | 1                    d¦  «        |f¦  «         Œb|r$| 2                    ¦   «          ||d         d         fS t3          d¦  «        ‚t3          d¦  «        ‚)a  Return the entire source file and starting line number for an object.
    For interactively-defined objects, the 'file' is the interpreter's history.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a list of all the lines
    in the file and the line number indexes a line in that list.  An IOError
    is raised if the source code cannot be retrieved, while a TypeError is
    raised for objects where the source code is unavailable (e.g. builtins).Nr"   z<ipython-input-ú
c                 ó   — g | ]}|d z   ‘ŒS ©rg   r3   ©r<   r>   s     r&   r?   zfindsource.<locals>.<listcomp>‹   s   € ÐBÐBÐB T�T˜D‘[ÐBÐBÐBr'   r   Ú r   é   Úwinz, please install 'pyreadline'c                 ó@   •— g | ]}‰                      |¦  «        d z   ‘ŒS ri   )Úget_history_item)r<   r=   Úreadlines     €r&   r?   zfindsource.<locals>.<listcomp>™   s,   ø€ ÐJÐJÐJ°q�×*Ò*¨1Ñ-Ô-¨dÑ2ÐJÐJÐJr'   r6   z<>zsource code not availablezcould not extract source codeú^(\s*@)ú<lambda>z(.*(?<!\w)lambda(:|\s))z^(\s*def\s)Úco_firstlinenoz"could not find function definitionr)   z+^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)z^(\s*)class\s*z\bÚczcould not find class definitionzcould not find code object)3r   r   r*   r#   r    r   r   Úfilterr   Ú__dict__r]   Ú
startswithÚ	linecacheÚgetlinesÚjoinÚget_ipythonÚhistory_managerÚinput_hist_parsedÚ
splitlinesrp   ÚImportErrorÚsysÚexc_infoÚargsÚplatformÚIOErrorÚget_current_history_lengthr[   ÚtypeÚAttributeErrorr   r   Ú__func__Ú__code__r   Útb_framer   Úf_coder   ÚhasattrÚco_filenamerW   rs   rH   ÚcompilerI   re   Ú	__class__ÚappendÚgroupÚsort)Úobjectr%   r+   Úis_module_mainÚ
sourcefileÚobject_methodÚfile_candidateÚlinesÚhistoryÚerrr€   ÚlbufÚnameÚpat1r$   Úpat2ÚstdinÚlnumr>   ÚhatsÚ_lnumÚpatÚ
candidatesr=   rI   rp   s                            @r&   r   r   i   sÛ  ø€ õ �vÑÔ€FÝ˜‘”ˆˆøÝÐ!Ð!Ð!˜T�d�d�dÐ!øøøØÐK ¤°JÒ!>ÐKÀtÀ8€NÝñ 6-�nñ 6-ð	Ý˜6‘?”?ˆDÝ& vÑ.Ô.ˆJˆJøÝð 		ð 		ð 		Ý�v‰Œð Ý%+­J¸¼×8NÒ8NÑ8PÔ8PÑ%QÔ%Qð ð �Må%,¨]Ñ%;Ô%;�NØ)×4Ò4Ð5FÑGÔGð !Ø Ø)�DÝ!.¨}Ñ!=Ô!=�JØøøð		øøøð ð 	CÝÔ& tÑ,Ô,ˆE‰Eð —i’i¥¡¤Ô =Ô OÑPÔPˆGØBÐB¨W×-?Ò-?Ñ-AÔ-AÐBÑBÔBˆE‰Eà	ð  -ð	7ØˆOˆOˆOØˆCˆCøÝð 	7ð 	7ð 	7ØˆJˆJˆJØ—,’,‘.”. Ô#Ô(¨Ô+ˆCØŒ|˜B˜Q˜BÔ 5Ò(Ð(ØÐ6Ñ6�øøð		7øøøð
 ð 	Ý˜#‘,”,ÐØ×2Ò2Ñ4Ô4ˆØJÐJÐJÐJ½EÀ!ÀD¹M¼MÐJÑJÔJˆ‰ð		/Ý˜6‘?”?ð 3¥w­t°F©|¬|Ñ'<Ô'<ð 3Ý˜v‘”�Ý*¨6Ñ2Ô2�
�
å˜v‘”�Ý*¨6Ñ2Ô2�
øøÝ�>Ð*ð 	/ð 	/ð 	/Ý˜6‘?”?ˆDÝ& vÑ.Ô.ˆJˆJˆJð	/øøøð ð 	7˜d 2 A 2œh¨¨b¨c¨c¬Ñ2°dÒ:Ð:ÝÐ5Ñ6Ô6Ð6Ø'Ð1ˆzˆz¨Tˆå˜6 4Ñ(Ô(ˆØð 	-ÝÔ& t¨V¬_Ñ=Ô=ˆEˆEåÔ& tÑ,Ô,ˆEàð 7ÝÐ5Ñ6Ô6Ð6õ �ÑÔð Ø�aˆxˆð Ð€DÐˆ4�#Ø€Då�ÑÔð !ØŒˆØ�:ÒÐÐ&@˜t˜tØ#ˆdØ”ˆÝ�&ÑÔð !ØŒˆØ�:ÒÐØ-ˆDØˆCˆCØ#ˆdØ”ˆÝ�6ÑÔð !Ø”ˆÝˆv�„ð Ø”ˆÝˆf�~„~ñ Ý�vÐ/Ñ0Ô0ð 	@ÝÐ>Ñ?Ô?Ð?ØÔ" iÒ/ˆØð 	BÝ�u‘:”: ‘>ˆDØÐNÐ N˜øàÔ(¨1Ñ,ˆDØAˆDÝŒz˜$ÑÔˆ­¬
°4Ñ(8Ô(8 à�QŠhˆhØ˜”;ˆDØ�zŠz˜$ÑÔð ØÐ#˜eØ˜:Ò%Ð%Ý# C¨Ñ.Ô.Ð5°Ð5à˜t�|�|Ø ˜Ý%*¨4°©6°"°RÑ%8Ô%8ð (ð (˜EØ#Ÿzšz¨%°¬,Ñ7Ô7ð (¸À¹¸¸Ø"'Ø# d™{˜ØØ˜!‘8ˆDð �QŠhˆhð �dˆ{Ðð Ý�v‰Œð 	&¥7­4°©<¬<Ñ#8Ô#8ð 	&ØÔ%ˆFøøåÐÐÐ˜4˜4ÐøøøÝˆv�„ð =ØŒˆÝŒjÐ*¨TÑ1°EÑ9Ñ:Ô:ˆð ˆ
Ý•s˜5‘z”z !‘| B rÑ*Ô*ð 	7ð 	7ˆAØ—I’I˜e AœhÑ'Ô'ˆEØð 7à˜”8˜A”; #Ò%Ð%Ø  !˜8�O�O�Oà×!Ò! 5§;¢;¨q¡>¤>°1Ð"5Ñ6Ô6Ð6øØð 	=ð �OŠOÑÔÐØ˜* Qœ-¨Ô*Ð*Ð*åÐ;Ñ<Ô<Ð<Ý
Ð.Ñ
/Ô
/Ð/sW   ‘! ¡0¯0ÁA. Á.A>C/Ã.C/ÅE ÅAF-Æ,F-Ç4A(I É/JÊJÓ2S9 Ó9
TÔTFc                 óÐ  — t          | ¦  «        \  }}t          | ¦  «        r|rt          |¦  «        }|du r|gdgfn|gS t          ||         ¦  «        }t	          ||d…         ¦  «        }|r|s|rt          |¦  «        }|du r|g|gfn|gS d}t          j        |¦  «        }d}	t          j        |	¦  «        }	d}
d}g }g }d                     |¦  «        }||k    �rj|                     ||         ¦  «        rÄ|
s1t	          ||d…         ¦  «        }n# t          $ r ||         g}Y nw xY wt          ||         ¦  «        |k    r|t          |¦  «        |
z
  z  }n_|d                     |¦  «        v rC|                     |¦  «         |                     ||
z
  ¦  «         |t          |¦  «        |
z
  z  }n|dz  }d}
n„|	                     ||         ¦  «        rbt	          ||d…         ¦  «        }n# t          $ r ||         g}Y nw xY wd}
|dd…         D ]}|	                     |¦  «        s n|
dz  }
Œ||
z  }n|dz  }d}
||k    �°j|s|g}|g}|rd„ |D ¦   «         }|du r||fn|S )	až  Return a list of source lines and starting line number for an object.
    Interactively-defined objects refer to lines in the interpreter's history.

    If enclosing=True, then also return any enclosing code.
    If lstrip=True, ensure there is no indentation in the first line of code.
    If locate=True, then also return the line number for the block of code.

    DEPRECATED: use 'getsourcelines' instead
    Tr   Nz#^(\s*def\s)|(.*(?<!\w)lambda(:|\s))rq   rk   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r3   )Ú_outdent)r<   Úblocks     r&   r?   zgetblocks.<locals>.<listcomp>G  s   € Ð=Ð=Ð=¨U� %™œÐ=Ð=Ð=r'   )r   r   r§   r   r   rH   rŽ   rz   rI   r   rW   r�   )r“   ÚlstripÚ	enclosingÚlocater˜   r    r   r¨   r�   rž   Úskipr>   Úblocksr¢   Útargetr-   Ú_lines                    r&   Ú	getblocksr°     sï  € õ ˜VÑ$Ô$�K€Eˆ4å�ÑÔð =ØÐ*�8 E™?œ?�5Ø!'¨4  ��˜!˜ˆ~ˆ~°e°WÐ<õ ˜˜dœÑ$Ô$€FÝ�U˜4˜5˜5”\Ñ"Ô"€Eàð @˜Fð @ØÐ*�8 E™?œ?�5Ø$*¨d N N��˜$˜Ð Ð ¸¸Ð?à1€D½"¼*ÀTÑ:JÔ:J°4Ø€D�bœj¨Ñ.Ô.�tð
 €DØ€DØ€F˜�Ø�WŠW�U‰^Œ^€FØ
�$Š,‰,à�:Š:�e˜D”kÑ"Ô"ð 	Øð 8Ý$ U¨4¨5¨5¤\Ñ2Ô2�T�TøÝ!Ð7Ð7Ð7¨5°¬;¨- 4 4 4Ð7øøøÝ˜% œ+Ñ&Ô&¨Ò/Ð/Ø�˜D™	œ	 DÑ(Ñ(��Ø˜2Ÿ7š7 4™=œ=Ð(Ð(Ø—’˜dÑ#Ô#Ð#Ø—’˜T D™[Ñ)Ô)Ð)Ø�˜D™	œ	 DÑ(Ñ(��à˜‘	�ØˆDˆDà�ZŠZ˜˜dœÑ$Ô$ð 	Ý   t u u¤Ñ.Ô.��øÝÐ3Ð3Ð3 u¨T¤{ m˜t˜t˜tÐ3øøøØˆDØ˜a˜b˜bœð ð �Ø—z’z %Ñ(Ô(Ð/¨%¨%Ø˜‘	��Ø�D‰LˆDˆDð �1‰HˆDØˆDð7 �$Š,‰,ð: ð Ø�ˆØ�ˆØÐ=Ð=Ð=°fÐ=Ñ=Ô=ˆvà$¨˜n˜nˆF�Eˆ?ˆ?°&Ð8s$   Ã;D ÄD)Ä(D)ÇG0 Ç0HÈHc                 óN   — t          | ||d¬¦  «        \  }}|d         |d         fS )aß  Return a list of source lines and starting line number for an object.
    Interactively-defined objects refer to lines in the interpreter's history.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a list of the lines
    corresponding to the object and the line number indicates where in the
    original source file the first line of code was found.  An IOError is
    raised if the source code cannot be retrieved, while a TypeError is
    raised for objects where the source code is unavailable (e.g. builtins).

    If lstrip=True, ensure there is no indentation in the first line of code.
    If enclosing=True, then also return any enclosing code.T)r©   rª   r«   r6   )r°   )r“   r©   rª   r-   Úns        r&   r   r   L  s0   € õ ˜ v¸È4ÐPÑPÔP�G€Dˆ!Ø�Œ8�Q�r”Uˆ?Ðr'   rk   c           	      óº  — t          | ¦  «        }t          | ¦  «        }	 t          | |¬¦  «        \  }}	�n# t          t          f$ rü |s‚ t          | ¦  «        sV|st          | ||¬¦  «        cY S t          | |¬¦  «        }
t          | d¬¦  «        }|rd|z  nd}||k    rd}|
|z   d|z  z   cY S |st          | ||¬¦  «        cY S | j        j	        }| j
        }|dv rt          | ||¬¦  «        cY S |›d	|›d
|›d|›d�gd}	}t          |d                              |dz   ¦  «        ¦  «        }t          ||¬¦  «        \  }}	Y nw xY w|s|rt          |¦  «        }|rfdt          | ¦  «        v r|                     d| z  ¦  «         n<t!          | d|d¬¦  «        }d„ |                     d¦  «        D ¦   «         dd…         d}	}|�r„|rýd}|D ]}|                     d¦  «        s n|dz  }Œ||                              ¦   «                              d¦  «        r.|| j	        k    r!|                     d|›d| j	        ›d�¦  «         �nd||         v rH|||                              d¦  «        d                              ¦   «         k    r|›d||         ›�||<   n²|| j	        k    r!|                     d|›d| j	        ›d�¦  «         n…|rI||d                              d¦  «        d                              ¦   «         k    rd|z  |d         z   |d<   n:t          | d¬¦  «        p| j	        }||k    r|                     d|›d|›d�¦  «         d                     |¦  «        S )a+  Return the text of the source code for an object. The source code for
    interactively-defined objects are extracted from the interpreter's history.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a single string.  An
    IOError is raised if the source code cannot be retrieved, while a
    TypeError is raised for objects where the source code is unavailable
    (e.g. builtins).

    If alias is provided, then add a line of code that renames the object.
    If lstrip=True, ensure there is no indentation in the first line of code.
    If enclosing=True, then also return any enclosing code.
    If force=True, catch (TypeError,IOError) and try to use import hooks.
    If builtin=True, force an import for any builtins
    )rª   )ÚbuiltinT©Úforceú%s = rk   ú%s
©ÚbuiltinsÚ__builtin__z = __import__('z', fromlist=['z']).rg   r   z = ú(z%r
F)ÚaliasÚnewÚenclosec                 ó   — g | ]}|d z   ‘ŒS ri   r3   rj   s     r&   r?   zgetsource.<locals>.<listcomp>›  s   € ÐCÐCÐC¨˜4 ™9ÐCÐCÐCr'   Nr6   ú@r   zdef r5   ú=)Ú_hascodeÚ_isinstancer   r*   r„   r   r   r	   r�   r#   Ú
__module__rP   r©   r§   Úreprr�   r   rO   rw   Ústriprz   )r“   r½   r©   rª   r¶   r´   ÚhascodeÚinstancer˜   r    Ú_importrœ   Ú_aliasr%   r$   r¬   r>   s                    r&   r   r   ^  s  € õ$ �vÑÔ€Gå˜6Ñ"Ô"€HðGÝ$ V°yÐAÑAÔA‰ˆˆt‰tøÝ•wÐð Gð Gð GØð 	ØÝ˜Ñ Ô ð 	GØÐM¥I¨f°eÀWÐ$MÑ$MÔ$MÐMÐMÐMå °Ð8Ñ8Ô8ˆGÝ˜6¨Ð.Ñ.Ô.ˆDØ(-Ð5�W˜u‘_�_°2ˆFØ˜Š}ˆ} r˜fØ˜6‘> &¨4¡-Ñ/Ð/Ð/Ð/àÐM¥I¨f°eÀWÐ$MÑ$MÔ$MÐMÐMÐMàÔ#Ô,ˆDØÔ&ˆFØÐ3Ð3Ð3Ý  ¨¸Ð@Ñ@Ô@Ð@Ð@Ð@àPTÐPTÐPTÐU[ÐU[ÐU[Ð\`Ð\`Ð\`ÐaeÐaeÐaeÐfÐgÐij�t�Ý˜5 œ8Ÿ?š?¨4°%©<Ñ8Ô8Ñ9Ô9�Ý,¨S¸IÐFÑFÔF‘��t�t�tð+Gøøøð0 ð  �ð  Ý˜‘”ˆð ð LØ•$�v‘,”,ÐÐ §¢¨V°f©_Ñ =Ô =Ð =Ð =õ ˜v¨R°UÀEÐJÑJÔJˆEØCÐC°·²¸TÑ1BÔ1BÐCÑCÔCÀCÀRÀCÔHÈ!�4ˆEð ñ @Øð 	@ØˆDØð ð �Ø—’ sÑ+Ô+Ð2¨U¨UØ˜‘	��à�TŒ{×!Ò!Ñ#Ô#×.Ò.¨vÑ6Ô6ð KØ˜FœOÒ+Ð+Ø—L’L�L°%°%°%¸¼¸¸Ð!IÑJÔJÐJùØ˜e DœkÐ)Ð)Ø˜E $œK×-Ò-¨cÑ2Ô2°1Ô5×;Ò;Ñ=Ô=Ò=Ð=Ø/4¨u¨u°e¸D´k°kÐ"B�E˜$‘Køà˜FœOÒ+Ð+Ø—L’L�L°%°%°%¸¼¸¸Ð!IÑJÔJÐJøàð @Ø˜E "œIŸOšO¨CÑ0Ô0°Ô3×9Ò9Ñ;Ô;Ò;Ð;Ø!(¨5¡°E¸"´IÑ =�E˜"‘Iøå˜v¨TÐ2Ñ2Ô2ÐE°f´o�Ø˜D’=�=Ø—L’L�L°%°%°%¸¸¸Ð!>Ñ?Ô?Ð?Ø�7Š7�5‰>Œ>Ðs(    6 ¶7EÁ/>EÂ/EÃ)EÃ0AEÅEc                 óF   — t          | dd¦  «        pt          | dd¦  «        S )z9True if object has an attribute that stores it's __code__r‰   NÚ	func_code)Úgetattr©r“   s    r&   rÃ   rÃ   º  s%   € å�6˜* TÑ*Ô*ÐN­g°f¸[ÈÑ.NÔ.NÐNr'   c                 óê  — t          | ¦  «        st          | ¦  «        st          | ¦  «        rdS t          | ¦  «        st	          | ¦  «        st          | ¦  «        rdS t          | ¦  «        s%t          t          | ¦  «        ¦  «        j        dv rdS d}t          t          | ¦  «        ¦  «         
                    |¦  «        sdS t          | ¦  «        r| j        dv st          | d¬¦  «        dv rdS dS )z>True if object is a class instance type (and is not a builtin)F)ÚnumpyT)z<class z<type 'instance'>r¹   rµ   )Úarray)rÃ   r   r   r   r   r   r   r†   r#   rÆ   rw   rÅ   r	   )r“   Ú_typess     r&   rÄ   rÄ   ¾  s  € å�ÑÔð �7 6™?œ?ð ­h°vÑ.>Ô.>ð ØˆuÝ�6ÑÔð �g f™oœoð µ¸±´ð Øˆuå�VÑÔð ¥­4°©<¬<Ñ!8Ô!8Ô!AÀYÐ!NÐ!NØˆtð -€FÝ•�V‘”ÑÔ×(Ò(¨Ñ0Ô0ð ØˆuÝ�VÑÔð  Ô 1Ð5OÐ OÐ OÕSZÐ[aÐimÐSnÑSnÔSnÐr{ÐS{ÐS{ØˆuØˆ4r'   c                 ó    — ddl }t          | ¦  «        t          d¦  «        urt          | d¬¦  «        } | dk    rd} t          || ¦  «        rdndS )	z(check if object is in the 'types' moduler   Nrk   Trµ   ÚellipsisÚEllipsisTypeF)Útypesr†   r	   rŒ   )r“   r×   s     r&   Ú_intypesrØ   Ò  s\   € à€L€L€LåˆF�|„|�4 ™8œ8Ð#Ð#Ý˜ tÐ,Ñ,Ô,ˆØ�ÒÐ n˜VÝ˜5 &Ñ)Ô)Ð4ˆ4ˆ4¨uÐ4r'   c                 ó:   — t          | t          t          f¦  «        S )z%check if object is a string-like type)Ú
isinstanceÚstrÚbytesrÏ   s    r&   Ú	_isstringrÝ   Ü  s   € å�f�s¥E˜lÑ+Ô+Ð+r'   é   c                 ó   — t          | ¦  «        }t          |¦  «        t          u rd|z  }t          |¦  «        }|                      d¦  «        }t	          t          |¦  «        ¦  «        D ],}t          ||         ¦  «        }||k    rŒ|||         z   ||<   Œ-|d                              ¦   «         dk    rd|d<   d                     |¦  «        S )z<indent a block of code with whitespace (default is 4 spaces)ú rg   r6   rk   )r   r†   ÚintrO   r[   rW   rÇ   rz   )r-   Úspacesr   Únspacesr˜   r=   Ú_indents          r&   r   r   á  sË   € å˜ÑÔ€FÝˆF�|„|•sÐÐ S¨¡Z˜Få˜Ñ Ô €Gà�JŠJ�tÑÔ€Eõ •3�u‘:”:ÑÔð #ð #ˆå˜U 1œXÑ&Ô&ˆØ�GÒÐ˜XØ˜% œ(‘?ˆˆa‰ˆð ˆR„y‡‚ÑÔ˜BÒÐ¨B  b¡	Ø�9Š9�UÑÔÐr'   Tc                 óü   — t          | d         ¦  «        }|�||k    s|dk     r|}t          |rt          | ¦  «        nd¦  «        D ]5}t          | |         ¦  «        }||k    r|}n|}| |         |d…         | |<   Œ6| S )zAoutdent lines of code, accounting for docs and line continuationsr   Nr   )r   r[   rW   )r˜   râ   rV   r   r=   rä   Ú_spacess          r&   r§   r§   ÿ  s–   € å˜˜aœÑ!Ô!€FØ€~˜ &š˜¨F°QªJ¨JÀ¸Ý Ð+•3�u‘:”:�:¨!Ñ,Ô,ð &ð &ˆå˜U 1œXÑ&Ô&ˆØ�GÒÐ w˜W˜WØˆgØ˜”8˜G˜H˜HÔ%ˆˆa‰ˆØ€Lr'   c                 óÈ   — t          | ¦  «        }|�||k    s|dk     r|}|s
| |d…         S d                     t          |                      d¦  «        ||¬¦  «        ¦  «        S )zDoutdent a block of code (default is to strip all leading whitespace)Nr   rg   )râ   rV   )r   rz   r§   rO   )r-   râ   rV   r   s       r&   r   r     sh   € å˜ÑÔ€FØ€~˜ &š˜¨F°QªJ¨JÀ¸àÐ$�t˜F˜G˜G”}Ð$Ø�9Š9•X˜dŸjšj¨Ñ.Ô.°vÀ3ÐGÑGÔGÑHÔHÐHr'   c                 óB   ‡ — ˆ fd„}‰ j         |_         ‰ j        |_        |S )z, encapsulate a function and it's __import__ c                  ó¾   •— 	 t          t          ‰d¬¦  «        t          t          ¦  «         n%# t          $ r t          d‰j        z   ¦  «        ‚w xY wt          | i |¤ŽS )NrK   ©r½   zcannot import name )ÚexecÚgetimportableÚ__globals__Ú
__locals__rS   r   r#   rK   )r‚   ÚkwdsÚfs     €r&   r^   z_wrap.<locals>.func  ss   ø€ ð	Bå•˜q¨Ð,Ñ,Ô,­k½:ÑFÔFÐFÐFøÝð 	Bð 	Bð 	BÝÐ3°a´jÑ@ÑAÔAÐAð	Bøøøå�$Ð˜$ÐÐÐs	   ƒ*. ®"A)r#   Ú__doc__)rð   r^   s   ` r&   r   r     s5   ø€ ð ð  ð  ð  ð  ð ”J€D„MØ”9€D„LØ€Kr'   c           	      ó²   — d}d}d|z  }|t          t          | |dd¬¦  «        ¦  «        z  }|t          d|z  ¦  «        z  }|r|d|z  z  }||›d|›d	�z  }|S )
z<create a function enclosure around the source of some objectÚ*__this_is_a_big_dummy_enclosing_function__Ú__this_is_a_stub_variable__z
def %s():
T©r½   r©   r¶   z
return %s
r·   z(); del rg   )r   r   )r“   r½   r`   Ústubr-   s        r&   Ú_encloser÷   %  s�   € ð 9€EØ(€DØ˜5Ñ €DØ�F•9˜V¨4¸ÀDÐIÑIÔIÑJÔJÑJ€DØ�F�= 4Ñ'Ñ(Ô(Ñ(€DØÐ%ˆd�g ‘oÑ%ˆdØ    u u uÐ-Ñ-€Dà€Kr'   c                 óð  — ddl m} t           || ¦  «        ¦  «        }d}|r
d}d|z  }d}n|}|rd|z  n|}|rt          | ¦  «        s||d|z  z   z  }n>|t	          | j        dd	d	¬
¦  «        z  }t          | j        ¦  «        }	||d|›d|	›d�z   z  }|rad}
t          |
|¬¦  «        }
|
                     d¦  «        }
|
d         dz   t          |¦  «        z   d 
                    |
dd…         ¦  «        z   }|S )a/  'dump to source', where the code includes a pickled object.

    If new=True and object is a class instance, then create a new
    instance using the unpacked class source code. If enclose, then
    create the object inside a function enclosure (thus minimizing
    any global namespace pollution).
    r   )Údumpszimport dill
rô   r·   Fzdill.loads(%s)
rk   Trõ   zdill.loads(z
.replace(bz,bytes(__name__,"UTF-8")))
Ú__this_is_a_big_dummy_object__rê   rg   éýÿÿÿN)Údillrù   rÆ   rÄ   r   r�   rÅ   r÷   rO   r   rz   )r“   r½   r¾   r¿   rù   Úpikr-   rö   ÚpreÚmodr`   s              r&   r   r   3  sQ  € ð ÐÐÐÐÐÝ
ˆuˆu�V‰}Œ}Ñ
Ô
€CØ€DØð 1Ø,ˆØ˜‰nˆØˆˆàˆØ %Ð0ˆg˜‰nˆn¨5ˆð ð Z•k &Ñ)Ô)ð ZØ�Ð(¨3Ñ.Ñ.Ñ.ˆˆà•	˜&Ô*°"¸TÈÐNÑNÔNÑNˆÝ�6Ô$Ñ%Ô%ˆØ��ÐQTÐQTÐQTÐUXÐUXÐUXÐYÑYÑYˆð ð Dà0ˆÝ˜ eÐ,Ñ,Ô,ˆà—’˜DÑ!Ô!ˆØ�QŒx˜‰}�v d™|œ|Ñ+¨d¯iªi¸¸b¸c¸c¼
Ñ.CÔ.CÑCˆà€Kr'   c                 óÆ  — |r"d                      t          | ¦  «        ¦  «        S t          | ¦  «        }|s|sdS t          | ¦  «        S 	 | j        }|dk    r;t          | ¦  «                             dd¦  «        d                              ¦   «         S |j        dv r|dk    rd	}|S # t          $ r1 |sY dS t          | ¦  «        }| 	                    d
¦  «        rY dS |cY S w xY w)zEget the name of the object. for lambdas, get the name of the pointer ú.Nrr   rÂ   r   r   r¹   rÕ   rÖ   ú<)
rz   r
   r   rÆ   r#   r   rO   rÇ   r‡   rw   )r$   r¶   Úfqnr%   rœ   s        r&   r	   r	   Z  s  € à
Ð,�3—8’8�J s™OœOÑ,Ô,Ð,Ý�s‰^Œ^€FØð ØÐ!˜T˜TÝ�C‰yŒyÐðð Œ|ˆØ�:ÒÐÝ˜S‘>”>×'Ò'¨¨AÑ.Ô.¨qÔ1×7Ò7Ñ9Ô9Ð9àŒ?Ð8Ð8Ð8Ø�zÒ!Ð!¨. 4ØˆøÝð ð ð ØÐ!˜T˜T˜TÝ�C‰yŒyˆØ�?Š?˜3ÑÔð 	Ø�4�4Øˆˆˆðøøøs%   Á
AB% ÂB% Â%C Â4$C ÃC ÃC c                 óL  — 	 t          t          | ¦  «        ¦  «                             ¦   «         d                              d¦  «                             d¦  «                             d¦  «        x}}|                     d¦  «        }t	          | ¦  «        r|S t          | ¦  «        p| j        }|dv rt          |¦  «        rdg|gz   S ||gz   S # t          $ r Y nw xY wt          | ¦  «        dv rd	gt          | ¦  «        gz   S t          | j
        d
d¦  «        }t          | j
        ¦  «        }||                     d¦  «        dz   d…         }n# t          $ r Y nw xY w|                     d¦  «        }|dv r.|d         dk    rd|d<   t          |d         ¦  «        rd}|g|z   }|S )a  _namespace(obj); return namespace hierarchy (as a list of names)
    for the given object.  For an instance, find the class hierarchy.

    For example:

    >>> from functools import partial
    >>> p = partial(int, base=2)
    >>> _namespace(p)
    ['functools', 'partial']
    r   ú>ú"ú'r  r¹   r×   )ÚinfÚnanÚInfÚNaNrÑ   rÅ   Néþÿÿÿr6   rÕ   rÖ   )rÛ   r   rO   rÇ   r   r	   r#   rØ   rS   rÎ   r�   ÚindexÚ
ValueError)r$   r%   Úqualrœ   s       r&   r
   r
   s  s°  € ðÝ�I c™NœNÑ+Ô+×1Ò1Ñ3Ô3°AÔ6×<Ò<¸SÑAÔA×GÒGÈÑLÔL×RÒRÐSVÑWÔWÐWˆ�Ø�zŠz˜#‰ŒˆÝ�C‰=Œ=ð 	ØˆKå�s‰|Œ|Ð+˜sœ|ˆàÐ/Ð/Ð/Ý˜‰~Œ~Ð8 w i°4°&Ñ&8Ð8Ø�t�f‰}ÐøÝÐÐÐ�d�dÐøøøå
ˆ3�x„xÐ,Ð,Ð,Øˆy�C ™HœH˜:Ñ%Ð%å�S”] L°$Ñ7Ô7€FÝˆsŒ}ÑÔ€DØ�T—Z’Z ‘_”_ QÑ& rÐ)Ô*ˆˆøÝÐÐÐ�t�tÐøøøØ�:Š:�c‰?Œ?€DØÐ+Ð+Ð+à�Œ8�zÒ!Ð!¨n 4¨¡8Ý�D˜”HÑÔÐ/¨˜vØˆx˜$‰ˆØ€Ks0   ‚BC Â/C ÃC Ã
CÃCÄ, E Å
EÅEc                 ó  — |dv r| dv rt           j        } n!|dv r| dv r|rd|z  nd}||k    rd}|d|z  z   S | dv r6|dk    rd	}t          |¦  «        rd
} n|s|rd|z  nd}||k    rd}|d|z  z   S 	 | sd|z  }nd| ›d|›�}|rd|z  nd}||k    rd}||z  }|rl|                      d¦  «        sWt	          |¦  «         nG# t
          $ r: |                      dd¦  «        d         }|s‚ || k    rt          ||||¦  «        }Y nw xY w|S )ad  helper to build a likely import string from head and tail of namespace.
    ('head','tail') are used in the following context: "from head import tail"

    If verify=True, then test the import string before returning it.
    If builtin=True, then force an import for builtins where possible.
    If alias is provided, then rename the object on import.
    )ÚEllipsisÚNotImplemented)r×   )ÚNoner·   rk   r¸   r¹   rÕ   rÖ   r×   z	import %szfrom z import z as %s
rg   zdill.r  r   r   )rW   rÅ   rØ   rw   rë   r   ÚrsplitÚ
_getimport)ÚheadÚtailr½   Úverifyr´   rË   Ú_strÚ_heads           r&   r  r  ž  s¬  € ð Ð-Ð-Ð-°$¸)Ð2CÐ2CÝŒ~ˆˆØ	�Ð	Ð	˜d iÐ/Ð/Ø$)Ð1�˜5‘�¨rˆØ�DŠ=ˆ= 2˜&Ø�f˜t‘mÑ#Ð#ð Ð)Ð)Ð)à�:ÒÐ n˜tÝ�D‰>Œ>ð 	 '˜4˜4Øð 	Ø(-Ð5�W˜u‘_�_°2ˆFØ˜Š}ˆ} r˜fØ˜& 4™-Ñ'Ð'Øàð 4˜ dÑ*��ð 4Ø(,¨¨¨d¨dÐ3ˆ$Ø#(Ð2ˆZ˜%ÑÐ¨d€FØ�‚}€}˜t�fØˆF�N€Dð ð >�d—o’o gÑ.Ô.ð >å�$‰ZŒZˆZˆZøÝð 	>ð 	>ð 	>Ø—K’K  AÑ&Ô& qÔ)ˆEØÐ˜%Ø˜Š}ˆ}Ý! %¨¨u°fÑ=Ô=�øøð		>øøøð
 €Ks   Â.B> Â>ADÄDc                 óø  — |rddl m}  || ¦  «        }|r|n| } t          | ¦  «        }d                     |dd…         ¦  «        }|d         }		 t	          | ¦  «                             dd¦  «        d                              dd¦  «        d         }
d}
nL# t          $ r? |dv rt	          | ¦  «        }
n(t	          | ¦  «                             d	¦  «        d
         }
Y nw xY w|
rMt          ||
|||¦  «        S # t          $ r Y n.t          $ r" |dv r|rd|z  nd}||
k    rd}|d|
z  z   cY S Y nw xY w	 t          ||	|||¦  «        S # t          $ r ‚ t          $ r! |dv r|rd|z  nd}||	k    rd}|d|	z  z   cY S ‚ w xY w)al  get the likely import string for the given object

    obj is the object to inspect
    If verify=True, then test the import string before returning it.
    If builtin=True, then force an import for builtins where possible.
    If enclosing=True, get the import for the outermost enclosing callable.
    If alias is provided, then rename the object on import.
    r   )Ú	outermostr  Nr6   r  r  r¹   r¼   r   r·   rk   r¸   )
rN   r  r
   rz   rÆ   rO   rS   r  r   ÚSyntaxError)r$   r½   r  r´   rª   r  Ú_objr  r  r  rœ   rË   s               r&   r   r   Î  s  € ð ð $Ø%Ð%Ð%Ð%Ð%Ð%Øˆy˜‰~Œ~ˆØÐ#ˆdˆd ˆå�c‰?Œ?€DØ�8Š8�D˜˜"˜”IÑÔ€DØ�Œ8€Dð+Ý�C‰yŒy�Š˜s 1Ñ%Ô% aÔ(×.Ò.¨s°1Ñ5Ô5°aÔ8ˆØˆˆøÝð +ð +ð +ØÐ-Ð-Ð-Ý˜‘9”9ˆDˆDå˜‘9”9—?’? 3Ñ'Ô'¨Ô*ˆDøøð	+øøøð ð Ý˜t T¨5°&¸'ÑBÔBÐBøÝÐ Ð Ð ˜D˜DÝð 	ð 	ð 	ØÐ1Ð1Ð1Ø,1Ð9˜ 5™˜°r�Ø˜D’=�=¨2 &Ø˜f t™mÑ+Ð+Ð+Ð+Ø�$ð	øøøðõ ˜$  e¨V°WÑ=Ô=Ð=øÝð ð ð ØÝð ð ð ØÐ-Ð-Ð-Ø(-Ð5�W˜u‘_�_°2ˆFØ˜Š}ˆ} r˜fØ˜& 4™-Ñ'Ð'Ð'Ð'Øðøøøs>   ÁAB ÂACÃCÃ#C6 Ã6
D-Ä&D-Ä,D-Ä1E Å1E9Å7E9c                 óz  — |€t          | ¦  «        rdnd}|r&	 t          | |||||¬¦  «        S # t          $ r Y nw xY w	 t          | ¦  «        st	          | ||| |¬¦  «        S t	          | || |¬¦  «        }t          | d¬¦  «        }|st          d¦  «        ‚|rd|z  nd	}	||k    rd	}	||	z   d
|z  z   S # t          $ r Y nw xY w|s&	 t          | |||||¬¦  «        S # t          $ r Y nw xY wt          | |¬¦  «        } | r|                      d¦  «        rt          d¦  «        ‚|rd|z  nd	}	|| k    rd	}	|	d
| z  z   S )a\  get an import string (or the source code) for the given object

    This function will attempt to discover the name of the object, or the repr
    of the object, or the source code for the object. To attempt to force
    discovery of the source code, use source=True, to attempt to force the
    use of an import, use source=False; otherwise an import will be sought
    for objects not defined in __main__. The intent is to build a string
    that can be imported from a python file. obj is the object to inspect.
    If alias is provided, then rename the object with the given alias.

    If source=True, use these options:
      If enclosing=True, then also return any enclosing code.
      If force=True, catch (TypeError,IOError) and try to use import hooks.
      If lstrip=True, ensure there is no indentation in the first line of code.

    If source=False, use these options:
      If enclosing=True, get the import for the outermost enclosing callable.
      If force=True, then don't test the import string before returning it.
      If builtin=True, then force an import for builtins where possible.
    NTF)rª   r¶   r©   r´   )rª   r  r´   rµ   z!object has no atribute '__name__'r·   rk   r¸   r  )r   r   rS   rÄ   r   r	   r‡   rw   )
r$   r½   Úsourcerª   r¶   r´   r©   rÊ   rœ   rË   s
             r&   r   r     sø  € ð, €~Ý# C™œÐ3��¨eˆØð ð	Ý˜S %°9Ø#(°ÀðJñ Jô Jð JøåÐÐÐ˜$˜$ÐøøøðÝ˜3ÑÔð 	GÝ˜S %°9Ø.3¨)¸gðGñ Gô Gð Gõ ˜C¨9Ø-2¨¸WðFñ Fô Fˆå�s $Ð'Ñ'Ô'ˆØð 	FÝ Ð!DÑEÔEÐEØ$)Ð1�˜5‘�¨rˆØ�DŠ=ˆ= 2˜&Ø�v‰~˜f t™mÑ+Ð+øåÐÐÐ�d�dÐøøøØð ð	Ý˜S %°9Ø#(°ÀðJñ Jô Jð JøåÐÐÐ˜$˜$Ðøøøõ �#˜UÐ
#Ñ
#Ô
#€Càð B�#—.’. Ñ%Ô%ð BÝÐ@ÑAÔAÐAØ %Ð-ˆW�u‰_ˆ_¨2€FØ�‚|€|˜b�VØ�&˜3‘,ÑÐs6   ™. ®
;º;¿#B5 Á#AB5 Â5
CÃCÃC Ã
C*Ã)C*c                 óÆ  ‡‡‡‡‡— ddl Šddlm}m}  || ¦  «        }i }t	          |                     ¦   «         ¦  «        D �]§\  Š}t          |¦  «        sŒ|                     ‰¦  «        Št          ‰¦  «        }| 	                    ¦   «          
                    d¦  «        rt          ‰||¬¦  «        }�n- || ¦  «        Šdt          ‰¦  «        z   dz   t          ‰¦  «        z   Št          t          ‰¦  «        ¦  «        }	t          ‰¦  «        \  }
}ˆˆˆfd	„|
D ¦   «         }|s>t          t          ‰¦  «        ¦  «        }	t          ‰¦  «        \  }
}ˆˆˆfd
„|
D ¦   «         }t          |¦  «        st!          d¦  «        ‚|d         }|                     dd¦  «        d                              ¦   «         d                              ¦   «         Št'          |	‰||¬¦  «        }||‰<   �Œ©|sö || ¦  «        Št          t          ‰¦  «        ¦  «        }	|	r‰| u r$t          | d¬¦  «        Št          | ||¬¦  «        }n t          ‰¦  «        \  }
}ˆˆfd„|
D ¦   «         }t          |¦  «        st!          d¦  «        ‚|d         }|                     dd¦  «        d                              ¦   «         d                              ¦   «         Št'          |	‰||¬¦  «        }||‰<   |S )zEget import for closured objects; return a dict of 'name' and 'import'r   Nr   )r.   r  rÁ   ©r½   r´   ú.*[\w\s]=\s*ú\(c                 óX   •— g | ]&}t          ‰¦  «        |v ¯ ‰j        ‰|¦  «        ¯$|‘Œ'S r3   ©r	   rI   )r<   r>   Úenclr£   rH   s     €€€r&   r?   z#_closuredimport.<locals>.<listcomp>T  sF   ø€ ð .ð .ð . $µ7¸4±=´=ÀDÐ3HÐ3HØ!˜œ # tÑ,Ô,ð 4I˜Ð3HÐ3HÐ3Hr'   c                 óX   •— g | ]&}t          ‰¦  «        |v ¯ ‰j        ‰|¦  «        ¯$|‘Œ'S r3   r&  )r<   r>   Úfobjr£   rH   s     €€€r&   r?   z#_closuredimport.<locals>.<listcomp>Z  sI   ø€ ð Oð Oð O dÝ '¨¡¤°Ð 5Ð 5¸(¸"¼(À3ÈÑ:MÔ:MÐ 5ð "Ø 5Ð 5Ð 5r'   zimport could not be foundr6   rÂ   Trµ   c                 ó~   •— g | ]9}t          ‰¦  «        |v ¯ ‰j        d t          ‰¦  «        z   dz   |¦  «        ¯7|‘Œ:S )r#  r$  r&  )r<   r>   rœ   rH   s     €€r&   r?   z#_closuredimport.<locals>.<listcomp>j  sY   ø€ ð Nð Nð N $µ7¸4±=´=ÀDÐ3HÐ3HØ!˜œ /µ'¸$±-´-Ñ"?ÀÑ"EÀtÑLÔLð 4I˜Ð3HÐ3HÐ3Hr'   )rH   rN   r.   r  ÚlistÚitemsr   Úpopr   r©   rw   r   r	   r   r   rW   r*   rO   rÇ   r  )r^   r½   r´   r.   r  Ú	free_varsÚ	func_varsr$   Úsrcrÿ   r˜   rK   Ú	candidater'  r)  rœ   r£   rH   s                @@@@@r&   Ú_closuredimportr2  ?  sC  øøøøø€ à€I€I€IØ+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø�˜‘”€IØ€Iå˜ŸšÑ*Ô*Ñ+Ô+ð ñ ‰ˆˆSÝ˜#‰ŒÐ( à�}Š}˜TÑ"Ô"ˆÝ˜‰oŒoˆØ�:Š:‰<Œ<×"Ò" 3Ñ'Ô'ð 	FÝ˜D¨°wÐ?Ñ?Ô?ˆC‰Cà�9˜T‘?”?ˆDà!¥'¨$¡-¤-Ñ/°Ñ5µg¸d±m´mÑCˆCÝ�) D™/œ/Ñ*Ô*ˆCå  Ñ&Ô&‰GˆE�!ð.ð .ð .ð .ð .ð .¨%ð .ñ .ô .ˆIàð OÝ�i¨™oœoÑ.Ô.�å$ TÑ*Ô*‘��aðOð Oð Oð Oð Oð O¨eð Oñ Oô O�	å�y‘>”>ÐO­Ð3NÑ)OÔ)OÐ#OØ! "œˆIØ—?’? 3 qÑ)Ô)¨!Ô,×2Ò2Ñ4Ô4°RÔ8×>Ò>Ñ@Ô@ˆDÝ˜S $¨e¸WÐEÑEÔEˆCØˆ	�$‰‰Øð Øˆy˜‰ŒˆÝ•i ‘o”oÑ&Ô&ˆØð 	F�d˜d�l�lÝ˜4 tÐ,Ñ,Ô,ˆDÝ˜D¨°wÐ?Ñ?Ô?ˆCˆCå  Ñ&Ô&‰GˆE�!ðNð Nð Nð Nð N¨%ð Nñ Nô NˆIå�y‘>”>ÐO­Ð3NÑ)OÔ)OÐ#OØ! "œˆIØ—?’? 3 qÑ)Ô)¨!Ô,×2Ò2Ñ4Ô4°RÔ8×>Ò>Ñ@Ô@ˆDÝ˜S $¨e¸WÐEÑEÔEˆCØˆ	�$‰ØÐr'   c                 óž  — ddl m}  || ¦  «        }i }t          |                     ¦   «         ¦  «        D ]Ì\  }}t	          |¦  «        st          |d|¬¦  «        ||<   Œ*|                     |¦  «        }t          ||¦  «        }|                     ¦   «                              d¦  «        s)t          ||¬¦  «        }t          | |dd¬¦  «        }	||	f}n(t          | dd¬¦  «        }	t          ||d¬	¦  «        }|	|f}|||<   ŒÍd
 
                    |                     ¦   «         ¦  «        }|st          | |ddd¬¦  «        }	||	f}n|df}||d<   |S )zSget source code for closured objects; return a dict of 'name'
    and 'code blocks'r   )r.   T)r¶   r½   rÁ   rê   F)rª   r©   )r   rk   )r¶   rª   r©   N)rN   r.   r+  r,  r   r   r-  r©   rw   r   rz   r]   )
r^   r½   r.   r.  r/  rœ   r$   r)  r0  Úorgs
             r&   Ú_closuredsourcer5  t  sƒ  € ð !Ð Ð Ð Ð Ð Ø�˜‘”€IØ€Iå˜ŸšÑ*Ô*Ñ+Ô+ð ð ‰ˆˆSÝ˜#‰Œð 	å'¨°4¸tÐDÑDÔDˆI�d‰OØà�}Š}˜TÑ"Ô"ˆÝ˜˜eÑ$Ô$ˆà�zŠz‰|Œ|×&Ò& sÑ+Ô+ð 	Ý˜T¨Ð-Ñ-Ô-ˆCÝ˜D %°5ÀÐFÑFÔFˆCØ˜�*ˆCˆCå˜D¨D¸Ð?Ñ?Ô?ˆCÝ˜T 5°Ð6Ñ6Ô6ˆCØ˜�*ˆCØˆ	�$‰ˆØ
�'Š'�)×"Ò"Ñ$Ô$Ñ
%Ô
%€CØð Ý˜˜e¨4¸5ÈÐNÑNÔNˆØ�Cˆjˆˆà�DˆkˆØ€Iˆd�OàÐr'   c                 ót  — |€t          | ¦  «        rdnd}n|rt          | ¦  «        rd}dx}}	 |sµ	 t          | ¦  «        rt          | |d|¬¦  «        S t	          | ||¬¦  «        }t          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚t          |                     ¦   «         ¦  «        d         S # t          $ r |r‚ d}Y nw xY w	 t          | |¬	¦  «        }t          |¦  «        dk    rt          d¦  «        ‚d
„ } ||                     d¦  «        ¦  «        }|r|gng }|                     ¦   «         D ]$}	 ||	¦  «        }	|	r|                     |	¦  «         Œ%t          |¦  «        sd}n1t          |¦  «        dk    r	|d         }nd                     |¦  «        }ddlm}
  |
| ¦  «        } t          d„ |                      ¦   «         D ¦   «         ¦  «        } | rd                     | ¦  «        nd} | s|S |s| S | |z   S # t          $ r |r‚ d}| }Y nw xY w�Œ)aý  get an importable string (i.e. source code or the import string)
    for the given object, including any required objects from the enclosing
    and global scope

    This function will attempt to discover the name of the object, or the repr
    of the object, or the source code for the object. To attempt to force
    discovery of the source code, use source=True, to attempt to force the
    use of an import, use source=False; otherwise an import will be sought
    for objects not defined in __main__. The intent is to build a string
    that can be imported from a python file.

    obj is the object to inspect. If alias is provided, then rename the
    object with the given alias. If builtin=True, then force an import for
    builtins where possible.
    NTF©r   r´   r"  r   znot implementedr   rê   c                 óš   — | d         r| d         rd                      | ¦  «        } n$| d         r	| d         } n| d         r	| d         } nd} | S )z,stitch together the strings in tuple 'block'r   r6   rg   rk   )rz   )r¨   s    r&   Ú_code_stitcherz"importable.<locals>._code_stitcherÆ  sa   € à˜”8ð !  b¤	ð !°4·9²9¸UÑ3CÔ3C¨5¨5Ø˜1”Xð ! u¨Q¤x˜u˜uØ˜2”Yð !¨¨b¬	  Ø �eØ�r'   rk   rg   )r/   c              3   ó^   K  — | ](\  }}t          |¦  «        °t          ||d ¬¦  «        V — Œ)dS )Trµ   N)r   r   )r<   rœ   r  s      r&   rD   zimportable.<locals>.<genexpr>Þ  sD   è è € ÐmÐm¹;¸DÀÕ]fÐgkÑ]lÔ]lÐm•y  d°Ð6Ñ6Ô6ÐmÐmÐmÐmÐmÐmr'   )r   r   rÄ   r   r2  rW   ÚNotImplementedErrorr+  r]   rS   r5  r-  r�   rz   rN   r/   r,  )r$   r½   r   r´   Útried_sourceÚtried_importr0  r9  Ú_srcÚxxxr/   s              r&   r   r   ›  s±  € ð$ €~Ý# C™œÐ3��¨eˆˆØ	ð •Y˜s‘^”^ð ØˆØ"'Ð'€L�<ð5 Øð 	$ð$Ý˜sÑ#Ô#ð RÝ& s¨E¸%ÈÐQÑQÔQÐQÝ% c°ÀÐHÑHÔH�Ý�s‘8”8˜q’=�=Ý-Ð.?Ñ@Ô@Ð@Ý�s‘8”8˜a’<�<Ý-Ð.?Ñ@Ô@Ð@Ý˜CŸJšJ™LœLÑ)Ô)¨!Ô,Ð,øÝð $ð $ð $ØÐ& Ø#���ð$øøøð&	 Ý! #¨UÐ3Ñ3Ô3ˆCÝ�3‰xŒx˜1Š}ˆ}Ý)Ð*;Ñ<Ô<Ð<ðð ð ð "�> #§'¢'¨$¡-¤-Ñ0Ô0ˆDØ!Ð)�D�6�6 rˆDà—z’z‘|”|ð )ð )�Ø$�n SÑ)Ô)�ØÐ(˜Ÿš CÑ(Ô(Ð(øå�t‘9”9ð &Ø��Ý�T‘”˜a’�Ø˜1”g��à—i’i ‘o”o�à*Ð*Ð*Ð*Ð*Ð*Ø�*˜S‘/”/ˆCÝÐmÐmÈ#Ï)Ê)É+Ì+ÐmÑmÔmÑmÔmˆCØ$'Ð/�$—)’)˜C‘.”.�.¨RˆCàÐ"˜s˜
ØÐ"˜s˜
Ø˜‘9ÐøÝð 	 ð 	 ð 	 ØÐ"˜UØˆLØ�ZˆFˆFˆFð	 øøøñe5 s7   ²!C ÁA<C ÃC#Ã"C#Ã'D/H  ÈH  ÈH  È H5È4H5c                 ó*   — t          | || |¬¦  «        S )Nr7  )r   )r$   r½   ÚbynameÚexplicits       r&   rì   rì   í  s   € Ý�c˜%¨F¨
¸HÐEÑEÔEÐEr'   c                 ó(   — t          | | |¬¦  «        S ©N)r  r´   )r   )r$   ÚpassiverB  s      r&   Úlikely_importrF  ð  s   € Ý�S g +¸ÐAÑAÔAÐAr'   c                 ó*   — t          | || |¬¦  «        S rD  )r  )ÚfirstÚlastrE  rB  s       r&   Ú_likely_importrJ  ò  s   € Ý�e˜T¨w¨;ÀÐJÑJÔJÐJr'   )FFF)FF)rk   FFFF)rÞ   )NT)rk   )rk   FT)rk   TF)rk   TFF)rk   NFTTT)rk   F)rk   NT)FT)8rñ   Ú__all__rx   rH   Úinspectr   r   r   r   r   r   r   r   r   r   r   r   r   Útokenizer   Ú_dillr    r   r   re   r   r°   r   r   rÃ   rÄ   rØ   rÝ   r   r§   r   rQ   rí   rR   rî   r   r÷   r   r	   r
   r  r   r   r2  r5  r   rì   rF  rJ  Ú	_get_nameÚgetblocks_from_historyr3   r'   r&   ú<module>rQ     s]  ððð ðBð Bð B€ð Ð Ð Ð Ø 	€	€	€	ð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð  Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ðð ð ðð ð ð2ð 2ð 2ðjY0ð Y0ð Y0ðxD9ð D9ð D9ð D9ðNð ð ð ð$ 9>ØCHðYð Yð Yð YðxOð Oð Oðð ð ð(5ð 5ð 5ð,ð ,ð ,ð
ð ð ð ð<
ð 
ð 
ð 
ðIð Ið Ið Ið ˆg‰iŒi€ØˆV‰XŒX€
ðð ð ðð ð ð ð$ð $ð $ð $ðNð ð ð ð2'ð 'ð 'ðV+ð +ð +ð +ð`0ð 0ð 0ð 0ðf DHØCGð:ð :ð :ð :ð|2ð 2ð 2ð 2ðj%ð %ð %ð %ðNNð Nð Nð NðdFð Fð Fð FðBð Bð Bð BðKð Kð Kð Kà€	Ø"Ð Ð Ð r'   