§
    î$f]  ã                   ój   — d dl mZmZ d dlmZ d dlmZ d dlmZ  G d„ dej	        j
        ¦  «        ZdS )é    )Ú
interfacesÚ	renderers)Úrequirements)Úformat_hints)Úpslistc                   óV   — e Zd ZdZdZed„ ¦   «         Zdeddfd„Z	 dd	e	d
e
fd„Zd„ ZdS )ÚPsTreezLPlugin for listing processes in a tree based on their parent process
    ID.)é   r   r   c           
      ó
  — t          j        ddg d¢¬¦  «        t          j        dt          j        d¬¦  «        t          j        dd	t          d
¬¦  «        t          j        ddd
d¬¦  «        t          j        ddd
d¬¦  «        gS )NÚkernelzLinux kernel)ÚIntel32ÚIntel64ÚAArch64)ÚnameÚdescriptionÚarchitecturesr   )r
   r
   r   )r   ÚpluginÚversionÚpidzFilter on specific process IDsT)r   r   Úelement_typeÚoptionalÚthreadszInclude user threadsF)r   r   r   ÚdefaultÚdecorate_commzXShow `user threads` comm in curly brackets, and `kernel threads` comm in square brackets)r   ÚModuleRequirementÚPluginRequirementr   ÚPsListÚListRequirementÚintÚBooleanRequirement)Úclss    ú\/home/panchajanya/Development/work/volatility3/volatility3/framework/plugins/linux/pstree.pyÚget_requirementszPsTree.get_requirements   s»   € õ Ô*ØØ*Ø?Ð?Ð?ðñ ô õ
 Ô*Ø¥f¤m¸Yðñ ô õ Ô(ØØ<Ý Øð	ñ ô õ Ô+ØØ2ØØð	ñ ô õ Ô+Ø$ØvØØð	ñ ô ð+
ð 	
ó    r   ÚreturnNc                 óÄ  — t          |g¦  «        }d}| j                             |¦  «        }|r§|j        r |j        j        |vr’|j        r|j        j        }n|j        }| j                             |t          ¦   «         ¦  «        }| 	                    |j        ¦  «         | j                             |¦  «        }|dz  }|r|j        r|j        j        |v°’|| j
        |<   dS )zFinds how deep the PID is in the tasks hierarchy.

        Args:
            pid: PID to find the level in the hierarchy
        r   é   N)ÚsetÚ_tasksÚgetÚparentr   Úis_thread_group_leaderÚtgidÚ	_childrenÚ
setdefaultÚaddÚ_levels)Úselfr   ÚseenÚlevelÚprocÚ
parent_pidÚ
child_lists          r"   Ú
find_levelzPsTree.find_level1   så   € õ C5‰zŒzˆØˆØŒ{Š˜sÑ#Ô#ˆØð 
	t”{ð 
	 t¤{¤¸dÐ'BÐ'BØÔ*ð 'Ø!œ[œ_

à!œY
àœ×2Ò2°:½s¹u¼uÑEÔEˆJØNŠN˜4œ8Ñ$Ô$Ð$à”;—?’? :Ñ.Ô.ˆDØQ‰JˆEð ð 
	t”{ð 
	 t¤{¤¸dÐ'BÐ'Bð "ˆŒSÑÐÐr$   FÚtasksr   c              #   ó  ‡ ‡‡K  — i ‰ _         i ‰ _        i ‰ _        |D ]}|‰ j         |j        <   Œ‰ j         D ]}‰                      |¦  «         Œˆˆ ˆfd„Š‰ j                             ¦   «         D ]\  }}|dk    r ‰|¦  «        E d{V —† ŒdS )a  Generates the tasks hierarchy tree.

        Args:
            tasks: A list of task objects to be displayed
            decorate_comm: If True, it decorates the comm string of
                            - User threads: in curly brackets,
                            - Kernel threads: in square brackets
                           Defaults to False.
        Yields:
            Each rows
        c              3   ó`  •K  — ‰j         |          }t          j                             |‰¦  «        }t	          j        |d         ¦  «        f|dd …         z   }|j        }‰j        |         dz
  |fV — t          ‰j	         
                    |g ¦  «        ¦  «        D ]} ‰|¦  «        E d {V —† Œd S )Nr   r'   )r)   r   r   Úget_task_fieldsr   ÚHexr   r1   Úsortedr.   r*   )r   ÚtaskÚrowÚtidÚ	child_pidr   r2   Úyield_processess        €€€r"   rC   z*PsTree._generator.<locals>.yield_processesd   sÌ   øè è € Ø”;˜sÔ#ˆDå”-×/Ò/°°mÑDÔDˆCõ  Ô# C¨¤FÑ+Ô+Ð-°°A°B°B´Ñ7ˆCà”(ˆCØ”< Ô$ qÑ(¨#Ð.Ð.Ð.Ð.å# D¤N×$6Ò$6°s¸BÑ$?Ô$?Ñ@Ô@ð 6ð 6	Ø*˜?¨9Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð6ð 6r$   r'   N)r)   r1   r.   r   r8   Úitems)r2   r9   r   r5   r   r4   rC   s   ` `   @r"   Ú
_generatorzPsTree._generatorH   sä   øøøè è € ð" ˆŒØˆŒØˆŒàð 	)ð 	)ˆDØ$(ˆDŒK˜œÑ!Ð!ð ”;ð 	!ð 	!ˆCØOŠO˜CÑ Ô Ð Ð ð	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð œ,×,Ò,Ñ.Ô.ð 	0ð 	0‰JˆCØ˜ŠzˆzØ*˜?¨3Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/øð	0ð 	0r$   c                 óê  — t           j                             | j                             dd ¦  «        ¦  «        }| j                             d¦  «        }| j                             d¦  «        }t          j        dt          j        fdt          fdt          fdt          fdt          fg|                      t           j                             | j        | j        d	         ||¬
¦  «        |¬¦  «        ¦  «        S )Nr   r   r   z
OFFSET (V)ÚPIDÚTIDÚPPIDÚCOMMr   )Úfilter_funcÚinclude_threads)r   )r   r   Úcreate_pid_filterÚconfigr*   r   ÚTreeGridr   r=   r   ÚstrrE   Ú
list_tasksÚcontext)r2   rK   rL   r   s       r"   Úrunz
PsTree.runv   sÚ   € Ý”m×5Ò5°d´k·o²oÀeÈTÑ6RÔ6RÑSÔSˆØœ+Ÿ/š/¨)Ñ4Ô4ˆØœŸš¨Ñ8Ô8ˆåÔ!à|Ô/Ð0ØØØØðð OŠOÝ”×(Ò(Ø”LØ”K Ô)Ø +Ø$3ð	 )ñ ô ð ,ð ñ ô ñ
ô 
ð 	
r$   )F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_required_framework_versionÚclassmethodr#   r   r8   ÚlistÚboolrE   rS   © r$   r"   r	   r	      s¡   € € € € € ðð ð #,Ðàð
ð 
ñ „[ð
ð>"˜cð " dð "ð "ð "ð "ð4 $ð,0ð ,0àð,0ð ð,0ð ,0ð ,0ð ,0ð\
ð 
ð 
ð 
ð 
r$   r	   N)Úvolatility3.frameworkr   r   Ú#volatility3.framework.configurationr   Úvolatility3.framework.renderersr   Úvolatility3.plugins.linuxr   ÚpluginsÚPluginInterfacer	   r\   r$   r"   ú<module>rc      s™   ðð
 8Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø <Ð <Ð <Ð <Ð <Ð <Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðA
ð A
ð A
ð A
ð A
ˆZÔÔ/ñ A
ô A
ð A
ð A
ð A
r$   