o
    �õ±j›  ã                   @   s>   d dl Z d dlT G dd„ dƒZG dd„ dƒZG dd„ dƒZdS )	é    N)Ú*c                   @   ó0   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	S )
ÚMINIDUMP_MEMORY_LISTc                 C   s   d | _ g | _d S ©N)ÚNumberOfMemoryRangesÚMemoryRanges©Úself© r
   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/MemoryListStream.pyÚ__init__   s   
zMINIDUMP_MEMORY_LIST.__init__c                 C   s2   t | jƒjdddd�}| jD ]}|| ¡ 7 }q|S ©Né   ÚlittleF©Ú	byteorderÚsigned)Úlenr   Úto_bytes)r	   ÚtÚmemranger
   r
   r   r      s   
zMINIDUMP_MEMORY_LIST.to_bytesc                 C   sD   t ƒ }tj|  d¡ddd�|_t|jƒD ]}|j t 	| ¡¡ q|S r   )
r   ÚintÚ
from_bytesÚreadr   Úranger   ÚappendÚMINIDUMP_MEMORY_DESCRIPTORÚparse)ÚbuffÚmmlÚ_r
   r
   r   r      s
   zMINIDUMP_MEMORY_LIST.parsec                 C   s.   d}|d| j  7 }| jD ]}|t|ƒ7 }q|S )Nz== MINIDUMP_MEMORY_LIST ==
zNumberOfMemoryRanges: %s
)r   r   Ústr)r	   r   r   r
   r
   r   Ú__str__   s
   
zMINIDUMP_MEMORY_LIST.__str__N©Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr   r"   r
   r
   r
   r   r   
   s    
r   c                   @   r   )
r   c                 C   s   d | _ d | _d | _d | _d S r   )ÚStartOfMemoryRangeÚMemoryLocationÚDataSizeÚRvar   r
   r
   r   r   '   s   
z#MINIDUMP_MEMORY_DESCRIPTOR.__init__c                 C   s$   | j jdddd�}|| j ¡ 7 }|S r   )r(   r   r)   ©r	   r   r
   r
   r   r   /   s   z#MINIDUMP_MEMORY_DESCRIPTOR.to_bytesc                 C   sB   t ƒ }tj|  d¡ddd�|_t | ¡|_|jj|_|jj	|_	|S )Né   r   Fr   )
r   r   r   r   r(   ÚMINIDUMP_LOCATION_DESCRIPTORr   r)   r*   r+   )r   Úmdr
   r
   r   r   4   s   


z MINIDUMP_MEMORY_DESCRIPTOR.parsec                 C   s.   dt | jƒ }|d| j 7 }|d| j 7 }|S )Nz	Start: %szSize: %szRva: %s)Úhexr(   r*   r+   r,   r
   r
   r   r"   F   s   z"MINIDUMP_MEMORY_DESCRIPTOR.__str__Nr#   r
   r
   r
   r   r   &   s    
r   c                   @   s4   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	S )
ÚMinidumpMemoryListc                 C   s
   g | _ d S r   )Úmemory_segmentsr   r
   r
   r   r   M   s   
zMinidumpMemoryList.__init__c                 C   sV   t ƒ }| | jj¡ t | | jj¡¡}t 	|¡}|j
D ]}|j t ||¡¡ q|S r   )r1   ÚseekÚLocationr+   ÚioÚBytesIOr   r*   r   r   r   r2   r   ÚMinidumpMemorySegmentÚ
parse_mini)Údirr   r   ÚchunkÚmtlÚmodr
   r
   r   r   P   s   

zMinidumpMemoryList.parsec                 Ã   sh   �t ƒ }| | jj¡I d H  | | jj¡I d H }t |¡}t 	|¡}|j
D ]}|j t ||¡¡ q%|S r   )r1   r3   r4   r+   r   r*   r5   r6   r   r   r   r2   r   r7   r8   )r9   r   r   Ú
chunk_datar:   r;   r<   r
   r
   r   ÚaparseZ   s   €


zMinidumpMemoryList.aparsec                 C   s$   d}| j D ]
}|t|ƒd 7 }q|S )Nz== MinidumpMemoryList ==
Ú
)r2   r!   )r	   r   r<   r
   r
   r   r"   e   s   
zMinidumpMemoryList.__str__N)r$   r%   r&   r   r'   r   r>   r"   r
   r
   r
   r   r1   L   s    
	

r1   )r5   Úminidump.common_structsr   r   r1   r
   r
   r
   r   Ú<module>   s
   &