
    h==                    ~   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ  ej        e          Zdd
ZddZddZddZ G d de          Z G d de          Zej        ej        ej        ej        ej        hZ ee          ez
  ZdZdZ G d d          Z G d de          Z  G d d          Z!dS )    )annotationsN)IntEnum)BytesIO)BytesStringsbytesreturnstrc                t    t          j        |                                                               d          S )zEncode bytes into a URL-safe Base64 string without padding

    Parameters:
        s (``bytes``):
            Bytes to encode

    Returns:
        ``str``: The encoded bytes
    =)base64urlsafe_b64encodedecodestripr   s    Q/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/hydrogram/file_id.py
b64_encoder   !   s/     #A&&--//55c:::    c                X    t          j        | dt          |            dz  z  z             S )zDecode a URL-safe Base64 string without padding to bytes

    Parameters:
        s (``str``):
            String to decode

    Returns:
        ``bytes``: The decoded string
    r      )r   urlsafe_b64decodelenr   s    r   
b64_decoder   .   s+     #AAw{(;$;<<<r   c                    g }d}| D ]:}|s|dz  }
|r|                     d|f           d}|                    |           ;|r|                     d|f           t          |          S )zZero-value RLE encoder

    Parameters:
        s (``bytes``):
            Bytes to encode

    Returns:
        ``bytes``: The encoded bytes
    r      extendappendr	   )r   rnbs       r   
rle_encoder#   ;   s     AA   	FAA !Q   HHQKKKK 	!Q88Or   c                    g }d}| D ]9}|sd}|r|                     d|z             d}$|                    |           :t          |          S )zZero-value RLE decoder

    Parameters:
        s (``bytes``):
            Bytes to decode

    Returns:
        ``bytes``: The decoded bytes
    FTr   r   )r   r    zr"   s       r   
rle_decoder'   X   sn     AA 	 	 	A 	HHTAXAAHHQKKKK88Or   c                  Z    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdS )FileTypezKnown file typesr   r         r               	   
                        N)__name__
__module____qualname____doc__	THUMBNAIL
CHAT_PHOTOPHOTOVOICEVIDEODOCUMENT	ENCRYPTEDTEMPSTICKERAUDIO	ANIMATIONENCRYPTED_THUMBNAIL	WALLPAPER
VIDEO_NOTE
SECURE_RAWSECURE
BACKGROUNDDOCUMENT_AS_FILE r   r   r)   r)   s   sr        IJEEEHIDGEIIJJFJr   r)   c                  &    e Zd ZdZdZdZdZdZdZdS )ThumbnailSourcezKnown thumbnail sourcesr   r   r*   r+   r   N)	r9   r:   r;   r<   LEGACYr=   CHAT_PHOTO_SMALLCHAT_PHOTO_BIGSTICKER_SET_THUMBNAILrO   r   r   rQ   rQ      s1        !!FINr   rQ   i   i   c                  p    e Zd ZdZdZeedddddddddddddddd&d Zed'd"            Zddd#d(d$Zd% Z	dS ))FileIdr      r   N )majorminorfile_referenceurlmedia_idaccess_hash	volume_idthumbnail_sourcethumbnail_file_typethumbnail_sizesecretlocal_idchat_idchat_access_hashsticker_set_idsticker_set_access_hashrZ   intr[   	file_typer)   dc_idr\   r	   r]   
str | Noner^   
int | Noner_   r`   ra   rQ   rb   rc   r   rd   re   rf   rg   rh   ri   c                  || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        d S N)rZ   r[   rk   rl   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   )selfrZ   r[   rk   rl   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   s                      r   __init__zFileId.__init__   s    , 

"
, &" 0#6 ,  0,'>$$$r   file_idc                   t          t          |                     }|d         }|dk     rd}t          |d d                   }n|d         }t          |d d                   }t          j        d|                    d                    \  }}t          |t          z            }t          |t          z            }|t           z  }|t           z  }	 t          |          }n(# t          $ r}	t          d| d|            |	d }	~	ww xY w|rSt          j        |          }
t          j        d	|                    d                    \  }t          |||||
|
          S |rt          j        |          nd}t          j        d|                    d                    \  }}|t          v rt          j        d	|                    d                    \  }|dk     rdn't          j        d|                    d                    \  }	 t          |          }n(# t          $ r}t          d| d|            |d }~ww xY w|t          j        k    rEt          j        d|                    d                    \  }}t          |||||||||||          S |t          j        k    rVt          j        d|                    d                    \  }}}t%          |          }t          ||||||||||||          S |t          j        t          j        hv rGt          j        d|                    d                    \  }}}t          ||||||||||||          S |t          j        k    rGt          j        d|                    d                    \  }}}t          ||||||||||||          S |t,          v rt          |||||||          S d S )Nr   r   <iir/   zUnknown file_type z of file_id <q)rZ   r[   rk   rl   r]   r_   r   <qqr7   r%   <izUnknown thumbnail_source <qir3   )rZ   r[   rk   rl   r\   r^   r_   r`   ra   rd   re   <iii)rZ   r[   rk   rl   r\   r^   r_   r`   ra   rb   rc   re   <qqi   )rZ   r[   rk   rl   r\   r^   r_   r`   ra   rf   rg   re   )rZ   r[   rk   rl   r\   r^   r_   r`   ra   rh   ri   re   )rZ   r[   rk   rl   r\   r^   r_   )r'   r   r   structunpackreadboolWEB_LOCATION_FLAGFILE_REFERENCE_FLAGr)   
ValueErrorr   rW   r   PHOTO_TYPESrQ   rR   r=   chrrS   rT   rU   DOCUMENT_TYPES)rs   decodedrZ   r[   bufferrk   rl   has_web_locationhas_file_referenceer]   r_   r\   r^   r`   ra   excrd   re   rb   rc   rf   rg   rh   ri   s                            r   r   zFileId.decode   s   Z0011 199EWSbS\**FFBKEWSbS\**F "=A??	5  	,= =>>!).A"ABB 	'''	)))		[ ++II 	[ 	[ 	[R)RRRRSSYZZ	[  	+f%%C#]4Q@@N[#'    0BJF+++s &eV[[__ E E+##!=v{{1~~>>LY*/!))$$tV[[YZ^^9\9\#23C#D#D      W0@WWgWW 
  ?#999#)=B#H#H '#1% +'%5!%     ?#<<<@FFKKOOA A=#^X "%^!4!4'#1% +'%5(;#1%     0.$   7=mFFKKXZOO6\6\3)8'#1% +'%5#%5%     ?#HHHDJMFKKOOE EA 7 '#1% +'%5#1,C%    &&#-!'    ts0   C$ $
D	.DD	H 
I %H;;I )rZ   r[   c          	        ||n| j         }||n| j        }t                      }| j        }| j        r
|t
          z  }| j        r
|t          z  }|                    t          j
        d|| j                             | j        r'|                    t          | j                             | j        r'|                    t          | j                             |                    t          j
        d| j        | j                             | j        t           v r|                    t          j
        d| j                             |dk    r-|                    t          j
        d| j                             | j        t&          j        k    r5|                    t          j
        d| j        | j                             n6| j        t&          j        k    rG|                    t          j
        d| j        t3          | j                  | j                             n| j        t&          j        t&          j        hv r:|                    t          j
        d| j        | j        | j                             n| j        t&          j        k    r9|                    t          j
        d| j         | j!        | j                             n2|tD          v r)|                    t          j
        d||                     |                    t          j
        d	||                     tG          tI          |%                                                    S )
Nrw   ry   rx   r   rz   r{   r|   r}   z<bb)&rZ   r[   r   rk   r]   r   r\   r   writer   packrl   r   r   r^   r_   r   r`   ra   rQ   rR   rd   re   r=   rb   ordrc   rS   rT   rf   rg   rU   rh   ri   r   r   r#   getvalue)rq   rZ   r[   r   rk   s        r   encodezFileId.encodeh  s   *
*
N	8 	+**I 	-,,IV[	4:>>???8 	+LL))*** 	5LLt233444V[t7GHHIII>[((LLT4>::;;;zzV[t/DEEFFF$(>>>V[T]KKLLLL&/*CCCK0D/00	     &0.+   Kd6KT][[    &/*OOOK+4	    .((LLUE599:::V[u55666*V__%6%677888r   c                b    t          d | j                                        D                       S )Nc                    i | ]
\  }}|||S rp   rO   .0kvs      r   
<dictcomp>z"FileId.__str__.<locals>.<dictcomp>      LLLTQamAqmmmr   r   __dict__itemsrq   s    r   __str__zFileId.__str__  -    LLT]%8%8%:%:LLLMMMr   )$rZ   rj   r[   rj   rk   r)   rl   rj   r\   r	   r]   rm   r^   rn   r_   rn   r`   rn   ra   rQ   rb   r)   rc   r   rd   rn   re   rn   rf   rn   rg   rn   rh   rn   ri   rn   )rs   r   )rZ   rn   r[   rn   )
r9   r:   r;   MAJORMINORrr   staticmethodr   r   r   rO   r   r   rW   rW      s        EE
  !$#"& $,0(, !#"'+%).2)'? '? '? '? '? '?R T T T \Tl -1d >9 >9 >9 >9 >9 >9@N N N N Nr   rW   c                  *    e Zd ZdZdZdZdZdZdZdZ	dS )	FileUniqueTypezKnown file unique typesr   r   r*   r+   r   r,   N)
r9   r:   r;   r<   WEBr?   rB   rL   rC   rD   rO   r   r   r   r     s2        !!
CEHFIDDDr   r   c                  F    e Zd ZdddddddZedd            Zd Zd ZdS )FileUniqueIdN)r]   r^   r`   re   file_unique_typer   r]   rm   r^   rn   r`   re   c               L    || _         || _        || _        || _        || _        d S rp   )r   r]   r^   r`   re   )rq   r   r]   r^   r`   re   s         r   rr   zFileUniqueId.__init__  s,     !1 " r   file_unique_idr   c                   t          t          t          |                               }t          j        d|                    d                    \  }	 t          |          }n(# t          $ r}t          d| d|            |d }~ww xY w|t          j        k    r%t          j        |          }t          ||          S |t          j        k    r<t          j        d|                                          \  }}t          |||          S |t          j        k    r:t          j        d|                                          \  }t          ||	          S t          d
| d|            )Nrz   r   zUnknown file_unique_type z of file_unique_id )r   r]   r{   )r   r`   re   rx   )r   r^   z%Unknown decoder for file_unique_type )r   r'   r   r   r   r   r   r   r   r   r   r?   rB   )r   r   r   r   r]   r`   re   r^   s           r   r   zFileUniqueId.decode  s   J~$>$>??@@$mD&++a..AA		-.>?? 	 	 	a,<aaQ_aa 	
 ~111+f%%C1AsKKKK~333"(-v{{}}"E"EIx!1#!    ~666 -fkkmm<<KX1AHUUUU i4DiiYgii
 
 	
s   A% %
B
/BB
c                   | j         t          j        k    r.t          j        d| j         t          | j                            }n| j         t          j        k    r't          j        d| j         | j        | j	                  }nM| j         t          j
        k    r!t          j        d| j         | j                  }nt          d| j                    t          t          |                    S )Nz<isz<iqiz<iqz%Unknown encoder for file_unique_type )r   r   r   r   r   r   r]   r?   r`   re   rB   r^   r   r   r#   )rq   strings     r   r   zFileUniqueId.encode  s     N$666[(=vdh?O?OPPFF"n&:::[)>PTP]^^FF"n&===[(=t}MMFF \TEZ\\]]]*V,,---r   c                b    t          d | j                                        D                       S )Nc                    i | ]
\  }}|||S rp   rO   r   s      r   r   z(FileUniqueId.__str__.<locals>.<dictcomp>  r   r   r   r   s    r   r   zFileUniqueId.__str__  r   r   )
r   r   r]   rm   r^   rn   r`   rn   re   rn   )r   r   )r9   r:   r;   rr   r   r   r   r   rO   r   r   r   r     s        
 # $#! ! ! ! ! ! !
 !
 !
 \!
F. . .N N N N Nr   r   )r   r	   r
   r   )r   r   r
   r	   )r   r	   r
   r	   )"
__future__r   r   loggingr   enumr   ior   hydrogram.raw.corer   r   	getLoggerr9   logr   r   r#   r'   r)   rQ   r=   r>   r?   rI   rH   r   setr   r   r   rW   r   r   rO   r   r   <module>r      s  ( # " " " " "                , , , , , , , ,g!!
; 
; 
; 
;
= 
= 
= 
=   :   6    w   .    g    N  X,   EN EN EN EN EN EN EN ENP    W   BN BN BN BN BN BN BN BN BN BNr   