a
    d'3                     @   s   d dl Z d dlZd dlZddlT ddlT dZdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N   )*   c           *      C   s  t | }d}d}d}d}d}d|v r0|d }ni }d|v rHt|d s\d|v rt|d rd|tj< d}|d }d|v rt|d rd|tj< d}|d }	qtj|v r|tj ntj|v r|tj d|v rt|d rd|tj< d}|d }
ntj|v r|tj d	|v rZd
|v rZ|d
 durZd}d|d	 tj	< d|d	 tj
< |d	 }t|dd}t|d |d  |d  d t|d  }|rt|d|}t|d |d  t|d  }nd}d}|rt|
d|| }d|}t|}nd}d}|r2|| | }t|	d|}d|}t|}nd}d}|r|| | | }t|d	|}t|d
 }d}t||krtdnd}|rt| }td|}tj}td|}tdtj} tdd}!||  |! | }"nd}"|r@t| | }td|}tj}td|}tdtj} tdd}!||  |! | }#nd}#|rt| | | }td|}tj}td|}tdtj} tdd}!||  |! | }$nd}$|r8t| | | | }td|}%|t|d  d d t|d  }&dtd|& }'dtdt| }(|d |' |( d |d  | }nd}%|d |" |# |% |d  })|rr|d |$ |d  }||) | | | | S )z
    py:function:: piexif.load(data)

    Return exif as bytes.

    :param dict exif: Exif data({"0th":dict, "Exif":dict, "GPS":dict, "Interop":dict, "1st":dict, "thumbnail":bytes})
    :return: Exif
    :rtype: bytes
    s   Exif  MM *   F0thExifZInteropr   TZGPS1st	thumbnailNr             i   z&Given thumbnail is too large. max 64kB>I>H>L   s       s       s       )copydeepcopylenImageIFDExifTagExifIFDInteroperabilityTagpopGPSTagJPEGInterchangeFormatJPEGInterchangeFormatLength_dict_to_bytesjoin_get_thumbnail
ValueErrorTIFF_HEADER_LENGTHstructpackTYPESLong)*Zexif_dict_originalZ	exif_dictheaderZexif_isZgps_isZ
interop_isZfirst_isZ
zeroth_ifdZexif_ifdZinterop_ifdZgps_ifdZ	first_ifdZ
zeroth_setZzeroth_lengthZexif_setZexif_lengthZ
exif_bytesZgps_setZ	gps_bytesZ
gps_lengthoffsetZinterop_setZinterop_bytesZinterop_lengthZ	first_setr   Zthumbnail_max_sizeZfirst_bytesZpointer_valueZpointer_strkeykey_strtype_str
length_strZexif_pointerZgps_pointerZinterop_pointerZfirst_ifd_pointerZthumbnail_pointerZthumbnail_p_bytesZthumbnail_length_bytesZzeroth_bytes r*   U/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/piexif/_dump.pydump   s"   













"







r,   c                 C   sF   t | }d|d dd   kr(dkr8n n|d qd|}|S )Ns   r   r      s   r   )Zsplit_into_segmentsr   r   )Zjpegsegmentsr   r*   r*   r+   r      s
    $
r   c                  G   s   t jdt|  g| R  S )NBr    r!   r   argsr*   r*   r+   
_pack_byte   s    r3   c                  G   s   t jdt|  g| R  S )Nbr0   r1   r*   r*   r+   _pack_signed_byte   s    r5   c                  G   s   t jddt|   g| R  S )N>Hr0   r1   r*   r*   r+   _pack_short   s    r8   c                  G   s   t jddt|   g| R  S )Nr6   hr0   r1   r*   r*   r+   _pack_signed_short   s    r:   c                  G   s   t jddt|   g| R  S )Nr6   Lr0   r1   r*   r*   r+   
_pack_long   s    r<   c                  G   s   t jddt|   g| R  S )Nr6   lr0   r1   r*   r*   r+   _pack_slong   s    r>   c                  G   s   t jddt|   g| R  S )Nr6   fr0   r1   r*   r*   r+   _pack_float   s    r@   c                  G   s   t jddt|   g| R  S )Nr6   dr0   r1   r*   r*   r+   _pack_double   s    rB   c                 C   s  d}d}|t jkrPt| }|dkr8t|  dd|   }ntd|}t|  }n,|t jkrt| }|dkrt|  dd|   }ntd|}t|  }n|t jkrt| }|dkrt	|  }ntd|}t	|  }n|t j
krt| }|dkrt|  }ntd|}t|  }nj|t jkrz| dd }W n6   z| d }W n ty`   td	Y n0 Y n0 t|}|dkrtd|}|}n|dd|   }n|t jkrLt| d
 tjrd}| \}}td|td| }nTt| d
 tr8t| }d}t| D ].\}	}
|
\}}|td|td| 7 }qtd|}|}n0|t jkrt| d
 tjrd}| \}}td|td| }nTt| d
 trt| }d}t| D ].\}	}
|
\}}|td|td| 7 }qtd|}|}n|t jkrt| }|dkrNtd|}zd|  }W n tyJ   td	Y n0 n2z| dd|   }W n ty~   td	Y n0 n|t jkrt| }|dkrt|  dd|   }ntd|}t|  }n|t jkrt| }|dkr t|  dd|   }ntd|}t|  }nf|t jkrTt| }|dkr>t|  }ntd|}t|  }n(|t jkr|t| }td|}t|  }td|}|||fS )Nr   r
       r   r-   s     r   latin1zGot invalid type to convert.r   r   z>l) r"   ZByter   r3   r    r!   ZShortr8   r#   r<   ZSLongr>   ZAsciiencode	TypeErrorr   Rational
isinstancenumbersIntegraltuple	enumerateZ	SRational	UndefinedZSByter5   ZSShortr:   ZFloatr@   ZDFloatrB   )	raw_value
value_typer%   four_bytes_over	value_strlength	new_valuenumZdennvalr)   r*   r*   r+   _value_to_bytes   s    





















rW   c                 C   s|  t | }td|}|dv r.d|d  d }nd|d  }d}d}tt| D ]\}}	|dkrt|	tjtjfv rtqNn0|dkr|	tj	krqNn|d	kr|	tj
tjfv rqN| |	 }
td|	}t| |	 d
 }td|}d}t|
tjst|
tr|
f}
t| | t | }zt|
||\}}}W n2 tyP   tdd|	|t| |	  Y n0 ||| | | 7 }||7 }qN|| |fS )Nr   )r   r   r-   r	   r
   r   r   r   r   typez%"dump" got wrong type of exif value.
z{} in {} IFD. Got as {}.)r   r    r!   rL   sortedr   r   r   r   r   r   r   ZTAGSrH   rI   rJ   floatr   rW   r   formatrX   )Zifd_dictZifdZ
ifd_offsetZ	tag_countZentry_headerZentries_lengthentriesvaluesrU   r&   rN   r'   rO   r(   rP   r%   r)   rQ   r*   r*   r+   r   2  sH    

r   )r   rI   r    _commonZ_exifr   r,   r   r3   r5   r8   r:   r<   r>   r@   rB   rW   r   r*   r*   r*   r+   <module>   s$    x