Ë
    D·j2  ã                  ó,  — d dl mZ d dlZddlmZmZ ddlmZ dd„Z	 G d„ dej
                  «      Z
 G d	„ d
ej                  «      Z ej                  e
j                  e
e	«        ej                  de«        ej                   e
j                  d«       y)é    )ÚannotationsNé   )ÚImageÚ	ImageFile)Úi32bec                ó   — | d d dk(  S )Né   s   qoif© )Úprefixs    ú`/var/www/html/ai-video-generator/backend/venv/lib/python3.12/site-packages/PIL/QoiImagePlugin.pyÚ_acceptr      s   € Ø�"�1ˆ:˜Ñ Ð ó    c                  ó   — e Zd ZdZdZdd„Zy)ÚQoiImageFileÚQOIzQuite OK Imagec                óº  ‡ — t        ‰ j                  j                  d«      «      sd}t        |«      ‚t	        ˆ fd„t        d«      D «       «      ‰ _        ‰ j                  j                  d«      d   }|dk(  rdnd	‰ _        ‰ j                  j                  dt        j                  «       d
d‰ j                  z   ‰ j                  j                  «       d fg‰ _        y )Nr	   znot a QOI filec              3  óf   •K  — | ](  }t        ‰j                  j                  d «      «      –— Œ* y­w)r	   N)Úi32ÚfpÚread)Ú.0ÚiÚselfs     €r   ú	<genexpr>z%QoiImageFile._open.<locals>.<genexpr>   s"   øè ø€ ÒB°Aœ3˜tŸw™wŸ|™|¨A›×/ÑBùs   ƒ.1é   r   r   é   ÚRGBÚRGBAÚqoi)r   r   )r   r   r   ÚSyntaxErrorÚtupleÚrangeÚ_sizeÚ_modeÚseekÚosÚSEEK_CURÚtellÚtile)r   ÚmsgÚchannelss   `  r   Ú_openzQoiImageFile._open   sž   ø€ Ü�t—w‘w—|‘| A“Ô'Ø"ˆCÜ˜cÓ"Ð"äÓB¼¸q»ÔBÓBˆŒ
à—7‘7—<‘< “? 1Ñ%ˆØ&¨!šm‘U°ˆŒ
à�‰�‰�QœŸ™Ô$Ø˜V d§j¡jÑ0°$·'±'·,±,³.À$ÐGÐHˆ�	r   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr,   r
   r   r   r   r      s   „ Ø€FØ)ÐôIr   r   c                  ó>   — e Zd ZU dZdZded<   i Zded<   d	d„Zd
d„Zy)Ú
QoiDecoderTNzbytes | bytearray | NoneÚ_previous_pixelzdict[int, bytes | bytearray]Ú_previously_seen_pixelsc                ór   — || _         |\  }}}}|dz  |dz  z   |dz  z   |dz  z   dz  }|| j                  |<   y )Nr   é   é   é   é@   )r6   r7   )r   ÚvalueÚrÚgÚbÚaÚ
hash_values          r   Ú_add_to_previous_pixelsz"QoiDecoder._add_to_previous_pixels+   sO   € Ø$ˆÔà‰
ˆˆ1ˆa�Ø˜!‘e˜a !™e‘m a¨!¡eÑ+¨a°"©fÑ4¸Ñ:ˆ
Ø38ˆ×$Ñ$ ZÒ0r   c           
     ó°  ‡ ‡— ‰ j                   €J ‚i ‰ _        ‰ j                  t        d«      «       t        «       }t	        j
                  ‰ j                  «      }‰ j                  j                  ‰ j                  j                  z  |z  }t        |«      |k  �r,‰ j                   j                  d«      d   }|dk(  rB‰ j                  r6t        ‰ j                   j                  d«      «      ‰ j                  dd  z   }�n—|dk(  r‰ j                   j                  d«      }�nu|dz	  }|dk(  r,|d	z  }‰ j                  j                  |t        d
«      «      }�n?|dk(  rz‰ j                  rnt        ‰ j                  d   |dz  dz	  z   dz
  dz  ‰ j                  d   |dz  dz	  z   dz
  dz  ‰ j                  d   |dz  z   dz
  dz  ‰ j                  d   f«      }nÀ|dk(  r‚‰ j                  rv‰ j                   j                  d«      d   }	|d	z  dz
  Š|	dz  dz	  dz
  }
|	dz  dz
  }t        t        ˆˆ fd„t        |
d|f«      D «       «      «      }|‰ j                  dd  z  }n9|dk(  r4‰ j                  r(|d	z  dz   }‰ j                  }|dk(  r|d d }|||z  z  }�Œ‰ j                  «       |dk(  r|d d }||z  }t        |«      |k  r�Œ,‰ j!                  |«       y)N)r   r   r   éÿ   r   r   éþ   r   rE   r	   é   é?   )r   r   r   r   é0   r   é   é   é    éð   é   é   c              3  óT   •K  — | ]  \  }}‰j                   |   ‰z   |z   d z  –— Œ! y­w)rJ   N)r6   )r   r   ÚdiffÚ
diff_greenr   s      €€r   r   z$QoiDecoder.decode.<locals>.<genexpr>[   s7   øè ø€ ò á '  4ð "×1Ñ1°!Ñ4°zÑAÀDÑHÈCÕOñùs   ƒ%()éÿÿÿÿr   )Úfdr7   rC   Ú	bytearrayr   ÚgetmodebandsÚmodeÚstateÚxsizeÚysizeÚlenr   r6   Úgetr!   Ú	enumerateÚ
set_as_raw)r   ÚbufferÚdataÚbandsÚdest_lengthÚbyter=   ÚopÚop_indexÚsecond_byteÚdiff_redÚ	diff_blueÚ
run_lengthrR   s   `            @r   ÚdecodezQoiDecoder.decode2   sô  ù€ Ø�w‰wÐ"Ð"Ð"à')ˆÔ$Ø×$Ñ$¤Y¨~Ó%>Ô?ä‹{ˆÜ×"Ñ" 4§9¡9Ó-ˆØ—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¸EÑAˆÜ�$‹i˜+Ó%Ø—7‘7—<‘< “? 1Ñ%ˆDà�zÒ! d×&:Ò&:Ü! $§'¡'§,¡,¨q£/Ó2°T×5IÑ5IÈ!È"Ð5MÑM’Ø˜Ò#ØŸ™Ÿ™ Q›’à˜Q‘Y�Ø˜’7Ø# jÑ0�HØ ×8Ñ8×<Ñ<Ø ¤)¨LÓ"9ó’Eð ˜1’W ×!5Ò!5Ü%à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸À
Ñ9JÈqÑ8PÑQÐTUÑUØ!ñ"à!×1Ñ1°!Ñ4¸¸zÑ8IÑJÈQÑNÐRUÑUØ ×0Ñ0°Ñ3ðó	‘Eð ˜1’W ×!5Ò!5Ø"&§'¡'§,¡,¨q£/°!Ñ"4�KØ"&¨Ñ"3°rÑ!9�JØ!,¨zÑ!9¸aÑ ?À1ÑD�HØ!,¨zÑ!9¸QÑ >�Iä%Üô ä+4°hÀÀ9Ð5MÓ+Nôó ó�Eð ˜T×1Ñ1°!°"Ð5Ñ5‘EØ˜1’W ×!5Ò!5Ø"&¨Ñ"3°qÑ!8�JØ ×0Ñ0�EØ ’zØ % b q 	˜Ø˜E JÑ.Ñ.�DÙØ×(Ñ(¨Ô/à˜ŠzØ˜b˜q˜	�Ø�E‰MˆDôc �$‹i˜+Ô%ðd 	�‰˜ÔØr   )r=   zbytes | bytearrayr-   r.   )r_   Úbytesr-   ztuple[int, int])	r/   r0   r1   Ú	_pulls_fdr6   Ú__annotations__r7   rC   rj   r
   r   r   r5   r5   &   s(   … Ø€IØ04€OÐ-Ó4Ø<>ÐÐ9Ó>ó9ô<r   r5   r   z.qoi)r   rk   r-   Úbool)Ú
__future__r   r&   Ú r   r   Ú_binaryr   r   r   r   Ú	PyDecoderr5   Úregister_openr2   Úregister_decoderÚregister_extensionr
   r   r   ú<module>rv      s‡   ðõ #ã 	ç Ý !ó!ôI�9×&Ñ&ô Iô$H�×$Ñ$ô HðV €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �u˜jÔ )Ø €× Ñ ˜×,Ñ,¨fÕ 5r   