o
    �õ±j:  ã                   @   s6   d dl mZ d dlmZmZ d dlZG dd„ dƒZdS )é    )ÚMINIDUMP_TYPE)ÚMinidumpHeaderFlagsExceptionÚ(MinidumpHeaderSignatureMismatchExceptionNc                   @   s<   e Zd Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZd	d
„ ZdS )ÚMinidumpHeaderc                 C   s:   d| _ d | _d | _d | _d | _d| _d| _d| _d | _d S )NÚPMDMr   ©	Ú	SignatureÚVersionÚImplementationVersionÚNumberOfStreamsÚStreamDirectoryRvaÚCheckSumÚReservedÚTimeDateStampÚFlags)Úself© r   ú‚/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/header.pyÚ__init__   s   
zMinidumpHeader.__init__c                 C   sÂ   | j  d¡}|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| j	jdddd�7 }|| j
jjdddd�7 }|S )NÚasciié   ÚlittleF©Ú	byteorderÚsignedé   )r   Úencoder	   Úto_bytesr
   r   r   r   r   r   r   Úvalue©r   Útr   r   r   r      s   zMinidumpHeader.to_bytesc              
   C   s   t ƒ }|  d¡ ¡ d d d… |_|jdkrt|jƒ‚tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_	tj|  d¡ddd�|_
tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_zttj|  d¡ddd�ƒ|_W |S  ty� } ztdƒ‚d }~ww )	Nr   éÿÿÿÿr   r   r   Fr   zCould not parse header flags!)r   ÚreadÚdecoder   r   ÚintÚ
from_bytesr	   r
   r   r   r   r   r   r   r   Ú	Exceptionr   )ÚbuffÚmhÚer   r   r   Úparse   s$   

ý€ÿzMinidumpHeader.parsec                 Ã   s&   �|   d¡I d H }t |¡}t |¡S )Né    )r"   ÚioÚBytesIOr   r*   )ÚabuffÚadatar'   r   r   r   Úaparse3   s   €

zMinidumpHeader.aparsec                 C   s†   d}|d| j  7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d	| j 7 }|d
| j 7 }|S )Nz== MinidumpHeader ==
zSignature: %s
zVersion: %s
zImplementationVersion: %s
zNumberOfStreams: %s
zStreamDirectoryRva: %s
zCheckSum: %s
zReserved: %s
zTimeDateStamp: %s
z
Flags: %s
r   r   r   r   r   Ú__str__9   s   zMinidumpHeader.__str__N)	Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr*   r0   r1   r   r   r   r   r      s    

r   )Úminidump.constantsr   Úminidump.exceptionsr   r   r,   r   r   r   r   r   Ú<module>   s    