
    i                         S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	J
r
Jr  \ " S S5      5       r\ " S S	5      5       r\ " S
 S5      5       r\ " S S5      5       rg)zA
See https://aria2.github.io/manual/en/html/technical-notes.html
    )	dataclass)IPv4AddressIPv6Address)Path)IOListUnionc                       \ rS rSr% \\S'   \\S'   \\S'   \\S'   \S\\   S\SS 4S	 j5       r	S\\   S\SS
4S jr
Srg
)InFlightPiece   indexlengthpiece_bitfield_lengthpiece_bitfieldfileversionreturnc                 D   [         R                  UR                  S5      US:X  a  SOS5      n[         R                  UR                  S5      US:X  a  SOS5      n[         R                  UR                  S5      US:X  a  SOS5      nUR                  U5      nU " UUUUS9$ )N      biglittle)r   r   r   r   )int
from_bytesread)clsr   r   r   r   r   r   s          </app/mltbenv/lib/python3.13/site-packages/aioaria2/parser.py	from_fileInFlightPiece.from_file   s    tyy|glUQ		!w!|eR #IIaL7a<%X!
 #89"7)	
 	
    Nc                 ~   UR                  U R                  R                  SUS:X  a  SOS5      5        UR                  U R                  R                  SUS:X  a  SOS5      5        UR                  [	        U R
                  5      R                  SUS:X  a  SOS5      5        UR                  U R
                  5        g )Nr   r   r   r   )writer   to_bytesr   lenr   )selfr   r   s      r   saveInFlightPiece.save!   s    

4::&&q7a<%XNO

4;;''GqL5hOP

##$--a'Q,HU	
 	

4&&'r     )__name__
__module____qualname____firstlineno__r   __annotations__bytesclassmethodr   r   r&   __static_attributes__r(   r    r   r   r      sa    JK
RY 
 
 
 
(E (S (T (r    r   c                       \ rS rSr% Sr\\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S	'   \\S
'   \\S'   \\S'   \\	   \S'   \
S\\\\\   4   SS 4S j5       rS\\   SS4S jrSrg)ControlFile*   z
Parse .aria2 files
r   extinfo_hash_length	info_hashpiece_lengthtotal_lengthupload_lengthbitfield_lengthbitfieldnum_inflight_pieceinflight_piecesr   r   c                 v   Sn [        U[        [        45      (       a  [        US5      nSnOUn[        R                  UR                  S5      S5      nUR                  S5      n[        R                  UR                  S5      US:X  a  SOS5      nUS	:X  a  US
   S-  S:X  a  [        S5      eUR                  U5      n[        R                  UR                  S5      US:X  a  SOS5      n[        R                  UR                  S5      US:X  a  SOS5      n	[        R                  UR                  S5      US:X  a  SOS5      n
[        R                  UR                  S5      US:X  a  SOS5      nUR                  U5      n[        R                  UR                  S5      US:X  a  SOS5      n[        U5       Vs/ s H  n[        R                  X45      PM     nnU " UUUUUU	U
UUUUS9U(       a   UR                  5         $ $ s  snf !    $ = f! U(       a   WR                  5         f !    f = ff = f)NFrbT   r   r   r   r   r      z>"infoHashCheck" extension is enabled but info hash length is 0   )r   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   )
isinstancestrr   openr   r   r   
ValueErrorranger   r   close)r   r   should_closefile_r   r4   r5   r6   r7   r8   r9   r:   r;   r<   _r=   s                   r   r   ControlFile.from_file<   s#   "7	$d,,T4(#nnUZZ]E:G**Q-C"~~

11u(   1$Q!q T  

#34I>>

11u(L >>

11u(L  NN

11u(M "nn

11u(O zz/2H!$

11u("
 122A ''72  
 !1#))+ /!#5 / KKM ',	 KKM	 sB   F<H  H
H 8H
H HH8H0/H80H42H8Nc                    UR                  U R                  R                  SU R                  S:X  a  SOS5      5        UR                  U R                  5        UR                  [	        U R
                  5      R                  SU R                  S:X  a  SOS5      5        UR                  U R
                  5        UR                  U R                  R                  SU R                  S:X  a  SOS5      5        UR                  U R                  R                  SU R                  S:X  a  SOS5      5        UR                  U R                  R                  SU R                  S:X  a  SOS5      5        UR                  [	        U R                  5      R                  SU R                  S:X  a  SOS5      5        UR                  U R                  5        UR                  [	        U R                  5      R                  SU R                  S:X  a  SOS5      5        U R                   H  nUR                  XR                  5        M      g )Nr@   r   r   r   r   rB   )r"   r   r#   r4   r$   r6   r7   r8   r9   r;   r=   r&   )r%   r   pieces      r   r&   ControlFile.savex   s   

4<<((T\\Q5FEHUV

488

((T\\Q5FEHU	
 	

4>>"

&&q4<<13D%(S	
 	

&&q4<<13D%(S	
 	

''DLLA4E58T	
 	

''DLLA4E58T	
 	

4==!

$$%..DLLA-58	

 ))EJJt\\* *r    r(   )r)   r*   r+   r,   __doc__r   r-   r.   r   r   r/   r	   rD   r   r   r   r&   r0   r(   r    r   r2   r2   *   s     L	JO-((9U3bi#78 9] 9 9v+E +t +r    r2   c                   n    \ rS rSr% \\S'   \\S'   \\S'   \S\	\   SS 4S j5       r
S\	\   SS4S	 jrS
rg)NodeInfo   plencompact_peer_infonode_idr   r   c                 v   [         R                  UR                  S5      S5      nUR                  S5        US:X  a  [        O[        nUR                  U5      nU" US S 5      [         R                  USS  S5      4nUR                  SU-
  5        UR                  S5      nUR                  S5        U " X%US	9$ )
Nr   r               r   )rT   rU   rV   )r   r   r   r   r   )r   r   rT   class_temprU   rV   s          r   r   NodeInfo.from_file   s    ~~diilE2		! $	{yy#D"I.tBCy%0PQ		"t)))B-		!7SSr    Nc                    UR                  U R                  R                  SS5      5        UR                  S5        UR                  U R                  S   R                  5        UR                  U R                  S   R                  SS5      5        UR                  SSU R                  -
  -  5        UR                  U R
                  5        UR                  S5        g )	Nr   r   s          r   r@       r[          )r"   rT   r#   rU   packedrV   )r%   r   s     r   r&   NodeInfo.save   s    

499%%a/0

;

4))!,334

4))!,55a?@

7b499n-.

4<< 

;r    r(   )r)   r*   r+   r,   r   r-   tupler.   r/   r   r   r&   r0   r(   r    r   rR   rR      sQ    
IN	TRY 	T: 	T 	T	 E 	 t 	 r    rR   c                       \ rS rSr% Sr\\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\	   \S	'   \
S
\\\\\   4   SS 4S j5       rS
\\   SS4S jrSrg)DHTFile   z
Parse dht.dat/dht6.dat files
mgcfmtvermtimelocalnode_idnum_nodenodesr   r   c           
      @   Sn [        U[        [        45      (       a  [        US5      nSnOUnUR	                  S5      nUS:X  d   S5       eUR	                  S5      nUS:X  d   S	5       eUR	                  S5      nUR	                  S
5        [
        R                  UR	                  S5      S5      nUR	                  S5        UR	                  S5      nUR	                  S5        [
        R                  UR	                  S5      S5      n	UR	                  S5        [        U	5       V
s/ s H  n
[        R                  U5      PM     nn
U " UUUUUU	US9U(       a   UR                  5         $ $ s  sn
f !    $ = f! U(       a   WR                  5         f !    f = ff = f)NFr?   Tr@   s   zwrong magic numberr      zwrong format idrrA   rB   r   r\   r   )ri   rj   rk   rl   rm   rn   ro   )rC   rD   r   rE   r   r   r   rG   rR   r   rH   )r   r   rI   rJ   ri   rj   rk   rl   rm   rn   rK   ro   s               r   r   DHTFile.from_file   st   ""	$d,,T4(#**Q-C+%;';;%**Q-C'>5#55>**Q-CJJqMNN5::a=%8EJJqM ::b>LJJqM~~ejjmU;HJJqM8=hH1X''.EH)! KKM  I	 KKM	 sB   D%E; )E/E; E4/E; 4E8;FFFFFNc                 j   UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  S5        UR                  U R                  R                  SS5      5        UR                  S5        UR                  U R                  5        UR                  S5        UR                  [        U R                  5      R                  SS5      5        UR                  S5        U R                   H  nUR                  U5        M     g )Ns      rB   r   s           rb   r   )
r"   ri   rj   rk   rl   r#   rm   r$   ro   r&   )r%   r   nodes      r   r&   DHTFile.save   s    

488

488

488

;

4::&&q%01

;

4$$%

;

3tzz?++Au56

;JJDIIdO r    r(   )r)   r*   r+   r,   rP   r.   r-   r   r   rR   r/   r	   rD   r   r   r   r&   r0   r(   r    r   rg   rg      sz     
J	J	JJM>$U3bi#78 $Y $ $LE t r    rg   N)rP   dataclassesr   	ipaddressr   r   pathlibr   typingr   r   r	   r   r2   rR   rg   r(   r    r   <module>rz      s    " .  " " ( ( (< g+ g+ g+T      : @ @ @r    