
    Ii                     j    S SK JrJrJrJr  S SKJr  S SKJr  S SKJ	r	   " S S\
5      r " S S5      rg)	    )max_byte	zero_bytebyte_ordbyte_chrN)b)int64c                       \ rS rSrSrg)BERException    N)__name__
__module____qualname____firstlineno____static_attributes__r       2/venv/lib/python3.13/site-packages/paramiko/ber.pyr
   r
      s    r   r
   c                   x    \ rS rSrSr\" 5       4S jrS rS rS r	S r
S r\S	 5       rS
 rS r\S 5       rSrg)BER   z/
Robey's tiny little attempt at a BER decoder.
c                 2    [        U5      U l        SU l        g )Nr   )r   contentidx)selfr   s     r   __init__BER.__init__"   s    zr   c                     U R                   $ N)r   r   s    r   asbytesBER.asbytes&   s    ||r   c                 "    U R                  5       $ r   )r    r   s    r   __str__BER.__str__)   s    ||~r   c                 8    S[        U R                  5      -   S-   $ )NzBER('z'))reprr   r   s    r   __repr__BER.__repr__,   s    dll++d22r   c                 "    U R                  5       $ r   )decode_nextr   s    r   decode
BER.decode/   s    !!r   c                    U R                   [        U R                  5      :  a  g [        U R                  U R                      5      nU =R                   S-  sl         US-  S:X  a  SnU R                   [        U R                  5      :  ar  [        U R                  U R                      5      nU =R                   S-  sl         US-  US-  -  nUS-  (       d  O%U R                   [        U R                  5      :  a  Mr  U R                   [        U R                  5      :  a  g [        U R                  U R                      5      nU =R                   S-  sl         US-  (       a|  US-  nU R                   U-   [        U R                  5      :  a  g [        R
                  " U R                  U R                   U R                   U-    S5      nU =R                   U-  sl         U R                   U-   [        U R                  5      :  a  g U R                  U R                   U R                   U-    nU =R                   U-  sl         US:X  a  U R                  U5      $ US	:X  a  [        R
                  " U5      $ S
n[        UR                  U5      5      e)N      r            T0      z.Unknown ber encoding type {:d} (robey is lazy))	r   lenr   r   utilinflate_longdecode_sequencer
   format)r   identtsizedatamsgs         r   r*   BER.decode_next2   s   88s4<<((dhh/0ABJ2E((S..T\\$((34A!D1D ((S.. 88s4<<((TXX./A$; tAxx!|c$,,//$$TXX15tD HHMH88d?S..||DHHtxx$7DD=''--aZ$$T** CCszz%011r   c                 p    / n[        U 5      n UR                  5       nUc   U$ UR                  U5        M)  r   )r   r*   append)r=   outberxs       r   r8   BER.decode_sequence`   s>    $i!Ay
 JJqM	 r   c                 p   U =R                   [        U5      -  sl         [        U5      S:  aM  [        R                  " [        U5      5      nU =R                   [        S[        U5      -   5      U-   -  sl         O'U =R                   [        [        U5      5      -  sl         U =R                   U-  sl         g )Nr1   r2   )r   r   r5   r6   deflate_long)r   r:   vallenstrs       r   
encode_tlvBER.encode_tlvk   sy    's8d?&&s3x0FLLHTCK%786AALLLHSX..Lr   c                 B   [        U5      [        L a5  U(       a  U R                  S[        5        g U R                  S[        5        g [        U5      [
        L d  [        U5      [        L a'  U R                  S[        R                  " U5      5        g [        U5      [        L a  U R                  SU5        g [        U5      [        L d  [        U5      [        L a"  U R                  SU R                  U5      5        g [        SR                  [        U5      5      5      e)Nr.   r4      r3   zUnknown type for encoding: {!r})typeboolrJ   r   r   intr   r6   rG   strlisttupleencode_sequencer
   r9   )r   rD   s     r   encode
BER.encodeu   s    7d?8,9-1gn$q'U"2OOAt0034!W^OOAq!1go47e#3OOD$"6"6q"9:188aA r   c                 j    [        5       nU  H  nUR                  U5        M     UR                  5       $ r   )r   rU   r    )r=   rC   items      r   rT   BER.encode_sequence   s+    eDJJt {{}r   )r   r   N)r   r   r   r   __doc__bytesr   r    r#   r'   r+   r*   staticmethodr8   rJ   rU   rT   r   r   r   r   r   r      s_      %w 3",2\  "  r   r   )paramiko.commonr   r   r   r   paramiko.utilr6   r   paramiko.sftpr   	Exceptionr
   r   r   r   r   <module>ra      s/   $ D C   	9 	n nr   