
    RЦi                     :   S r SSKrSSKJrJrJr  SSKrSSKJs  J	r
  SSKJr  SS\S\S\S	\\\\   4   4S
 jjrS\S\S\S\4S jrSS\S\S\4S jjr SS\\   S\\   S\\   S\\   S	\\   4
S jjr  SS\\   S\\   S\\   S\4S jjrS	\\\4   4S jrg)zCPadding Helpers

Hacked together by / Copyright 2020 Ross Wightman
    N)ListTupleUnion   )	to_2tuplekernel_sizestridedilationreturnc           
      .   [        XU4 Vs/ s H  n[        U[        [        45      PM     sn5      (       aC  [	        U 5      [	        U5      [	        U5      p!n [        XU5       Vs/ s H  n[        U6 PM     sn$ US-
  X S-
  -  -   S-  nU$ s  snf s  snf )Nr      )any
isinstancetuplelistr   zipget_padding)r   r	   r
   _vapaddings          R/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/padding.pyr   r      s    
;2QR2QQJq5$-(2QRSS(1+(>	&@QS\]eSfX),[()KL)KAQ)KLL
h/::q@GN	 SLs    B&Bxc                 "   [        U [        R                  5      (       a:  [        R                  " X-  R	                  5       S-
  U-  US-
  U-  -   S-   U -
  SS9$ [        [        R                  " X-  5      S-
  U-  US-
  U-  -   S-   U -
  S5      $ )Nr   r   )min)r   torchTensorclampceilmaxmath)r   r   r	   r
   s       r   get_same_paddingr"      s    !U\\""{{QZ--/!3v=qT\@\\_``cddjkllDIIaj)A-7;?h:VVYZZ]^^`abb    c           
      N   [        XU4 Vs/ s H  n[        U[        [        45      PM     sn5      (       aL  [	        U 5      [	        U5      [	        U5      p!n [        [        XU5       Vs/ s H  n[        U6 PM     sn5      $ US:H  =(       a    X S-
  -  S-  S:H  $ s  snf s  snf )Nr   r   r   )r   r   r   r   r   allr   is_static_pad)r   r	   r
   r   r   r   s         r   r&   r&       s    
;2QR2QQJq5$-(2QRSS(1+(>	&@QS\]eSfXs;/QR/Q!M1%/QRSSQ;BHa8A=BB SRs    B+B"r   r   
input_sizec                     U u  pEUu  pg[        XFUS   US   5      n[        XWUS   US   5      n	U	S-  XS-  -
  US-  XS-  -
  /$ )Nr   r   r   )r"   )
r(   r   r	   r
   ihiwkhkwpad_hpad_ws
             r   pad_same_argr0   '   sc     FBFBRVAY<ERVAY<EQJ
*EQJ
8JKKr#   valuec           	          U R                  5       SS  u  pV[        XQS   US   US   5      n[        XaS   US   US   5      n[        R                  " XS-  XS-  -
  US-  XwS-  -
  4US9n U $ )Nr   r   r   )r1   )sizer"   Fpad)	r   r   r	   r
   r1   r*   r+   r.   r/   s	            r   pad_samer7   5   s     VVXbc]FBRQHQKHERQHQKHE	a1*eqj0%1*eqj>PQY^_AHr#   c                     Sn[        U [        5      (       aU  U R                  5       n U S:X  a(  [        U40 UD6(       a  [	        U40 UD6n X4$ Sn Sn X4$ U S:X  a  Sn X4$ [	        U40 UD6n X4$ )NFsamer   Tvalid)r   strlowerr&   r   )r   r   kwargsdynamics       r   get_padding_valuer?   C   s    G'3--/f[3F3%k<V<    G  "+88Gr#   )r'   )r'   r   )__doc__r!   typingr   r   r   r   torch.nn.functionalnn
functionalr5   helpersr   intr   r"   r&   r0   floatr7   boolr?    r#   r   <module>rJ      s>    % %    S # S eTWY]^aYbTbNc c c# cs cc cCs CC Cs C %	
LI
L#Y
L S	
L s)	
L
 
#Y
L$ %#Y S	 s)	
 ud{9K r#   