ó
    >:j«J  ã                   óÌ   • S SK r S SKrS SKJrJrJr  S SKrS SKJr  S SK	Js  J
r  S SKJrJr   " S S\5      r " S S\R                   \5      r " S S	\R                   \5      rg)
é    N)ÚAnyÚOptionalÚUnion)ÚBaseTunerLayerÚcheck_adapters_to_mergec                   ó¦   • \ rS rSrSrSrS\R                  SS4S jr SS\	S	\
S
\S\S\SS4S jjrS\	4S jrS\	4S jrS\SS4S jrSSS jjrSrg)ÚHRALayeré   )Úhra_u)Úhra_rÚhra_apply_GSÚ
base_layerÚreturnNc                 óð  • Xl         0 U l        0 U l        [        R                  " 0 5      U l        SU l        / U l        SU l        X l	        U R                  5       n[        U[        R                  5      (       a$  UR                  UR                  sU l        U l        g [        U[        R                  5      (       a$  UR                   UR"                  sU l        U l        g [%        S['        U5       35      e)NFTzUnsupported layer type )r   r   r   ÚnnÚParameterDictr   Ú_disable_adaptersÚmerged_adaptersÚcast_input_dtype_enabledÚkwargsÚget_base_layerÚ
isinstanceÚLinearÚin_featuresÚout_featuresÚConv2dÚin_channelsÚout_channelsÚ
ValueErrorÚtype)Úselfr   r   s      ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/hra/layer.pyÚ__init__ÚHRALayer.__init__    sÊ   € Ø$ŒØˆŒ
ØˆÔÜ×%Ò% bÓ)ˆŒ
à!&ˆÔØ!ˆÔà(,ˆÔ%ØŒà×(Ñ(Ó*ˆ
Ü�j¤"§)¡)×,Ñ,Ø2<×2HÑ2HÈ*×JaÑJaÐ/ˆDÔ˜dÕ/Ü˜
¤B§I¡I×.Ñ.Ø2<×2HÑ2HÈ*×JaÑJaÐ/ˆDÔ˜dÕ/äÐ6´t¸JÓ7GÐ6HÐIÓJÐJó    Úadapter_nameÚrÚapply_GSÚinit_weightsÚinference_modec                 ó4  • US::  a  [        SU 35      eX R                  U'   X0R                  U'   U R                  5       n[	        U[
        R                  5      (       aB  [
        R                  " [        R                  " U R                  U5      SS9U R                  U'   O¢[	        U[
        R                  5      (       ab  [
        R                  " [        R                  " U R                  UR                  S   -  UR                  S   -  U5      SS9U R                  U'   O![        S[        U5      R                    35      eU(       a  U R#                  U5        OU R%                  U5        U R'                  U5        U R)                  U R*                  US9  g)a  Internal function to create hra adapter

Args:
    adapter_name (`str`): Name for the adapter to add.
    r (`int`): Rank for the added adapter.
    init_weights (`bool`): Whether to initialize weights.
    apply_GS (`bool`): Whether to apply Gram-Schmidt orthogonalization or not.
r   z?`r` should be a positive integer value but the value passed is T)Úrequires_gradz/HRA is not implemented for base layers of type )r*   N)r   r   r   r   r   r   r   Ú	ParameterÚtorchÚemptyr   r   r   Úkernel_sizeÚ	TypeErrorr    Ú__name__Úreset_hra_parametersÚreset_hra_parameters_randomÚ%_move_adapter_to_device_of_base_layerÚset_adapterÚactive_adapters)r!   r&   r'   r(   r)   r*   r   r   s           r"   Úupdate_layerÚHRALayer.update_layer4   sT  € ð" �‹6ÜÐ^Ð_`Ð^aÐbÓcÐcà#$�
‰
�<Ñ Ø*2×Ñ˜,Ñ'ð ×(Ñ(Ó*ˆ
Ü�j¤"§)¡)×,Ñ,Ü')§|¢|´E·K²KÀ×@PÑ@PÐRSÓ4TÐdhÑ'iˆD�J‰J�|Ò$Ü˜
¤B§I¡I×.Ñ.Ü')§|¢|Ü—’˜D×,Ñ,¨z×/EÑ/EÀaÑ/HÑHÈ:×KaÑKaÐbcÑKdÑdÐfgÓhØ"ñ(ˆD�J‰J�|Ò$ô
 ÐMÌdÐS]ÓN^×NgÑNgÐMhÐiÓjÐjö Ø×%Ñ% lÕ3à×,Ñ,¨\Ô:ð 	×2Ñ2°<Ô@Ø×Ñ˜×-Ñ-¸nÐÒMr%   c                 ó   • U R                   U   S-  S:w  aV  [        R                  " S5        [        R                  R                  U R                  U   [        R                  " S5      S9  g U R                  U   R                  n[        R                  " US   US   S-  5      n[        R                  R                  U[        R                  " S5      S9  [        R                  " [        R                  " USSS95      U R                  U'   g )Né   r   z@The symmetric initialization can NOT be performed when r is odd!é   ©Úaé   ©Údim)r   ÚwarningsÚwarnr   ÚinitÚkaiming_uniform_r   ÚmathÚsqrtÚshaper.   Úzerosr-   Úrepeat_interleave)r!   r&   rH   Úhalf_us       r"   r3   ÚHRALayer.reset_hra_parametersa   sÄ   € Ø�:‰:�lÑ# aÑ'¨1Ó,Ü�MŠMÐ\Ô]Ü�G‰G×$Ñ$ T§Z¡Z°Ñ%=ÄÇÂÈ1ÃÐ$ÒNà—J‘J˜|Ñ,×2Ñ2ˆEÜ—[’[  q¡¨5°©8°q©=Ó9ˆFÜ�G‰G×$Ñ$ V¬t¯yªy¸«|Ð$Ñ<Ü')§|¢|´E×4KÒ4KÈFÐTUÐ[\Ñ4]Ó'^ˆD�J‰J�|Ò$r%   c                 ó‚   • [         R                  R                  U R                  U   [        R
                  " S5      S9  g )Nr<   r=   )r   rD   rE   r   rF   rG   )r!   r&   s     r"   r4   Ú$HRALayer.reset_hra_parameters_randomk   s*   € Ü
�‰× Ñ  §¡¨LÑ!9¼T¿YºYÀq»\Ð ÒJr%   Úscalec                 ó¢   • US:X  a  g U R                    H8  nX R                  R                  5       ;  a  M"  [        R                  " S5        M:     g )Nr?   zFScaling operation for HRA not supported! Automatically set scale to 1.©r7   r   ÚkeysrB   rC   ©r!   rO   Úactive_adapters      r"   Úscale_layerÚHRALayer.scale_layern   s=   € Ø�A‹:Øà"×2Ô2ˆNØ§Z¡Z§_¡_Ó%6Ó6Ùä�MŠMÐbÖcò	 3r%   c                 ó”   • U R                    H8  nX R                  R                  5       ;  a  M"  [        R                  " S5        M:     g )Nz>Unscaling operation for HRA not supported! Keeping scale at 1.rQ   rS   s      r"   Úunscale_layerÚHRALayer.unscale_layerx   s3   € Ø"×2Ô2ˆNØ§Z¡Z§_¡_Ó%6Ó6Ùä�MŠMÐZÖ[ò	 3r%   )
r   r   r   r   r   r   r   r   r   r   ©F©N©r   N)r2   Ú
__module__Ú__qualname__Ú__firstlineno__Úadapter_layer_namesÚother_param_namesr   ÚModuler#   ÚstrÚintÚboolr8   r3   r4   ÚfloatrU   rX   Ú__static_attributes__© r%   r"   r	   r	      s²   † à$Ðà1ÐðK 2§9¡9ð K¸4ô Kð4  %ñ+Nàð+Nð ð+Nð ð	+Nð
 ð+Nð ð+Nð 
õ+NðZ_°ô _ðK¸ô Kðd ð d¨4ô d÷\ñ \r%   r	   c                   ó  ^ • \ rS rSrSr   SS\S\S\S\\\4   SS4
U 4S	 jjjr	SS
\S\
\\      SS4S jjrSS jrSS\S\S\R                  4S jjrS\R                  S\S\S\R                  4S jrS\4U 4S jjrSrU =r$ )Ú	HRALinearé€   z#
HRA implemented in a dense layer.
r&   r'   r(   r)   r   Nc                 ó„   >• [         TU ]  5         [        R                  " X40 UD6  X l        U R                  " X#XE40 UD6  g r[   ©Úsuperr#   r	   Ú_active_adapterr8   ©r!   r   r&   r'   r(   r)   r   Ú	__class__s          €r"   r#   ÚHRALinear.__init__…   s>   ø€ ô 	‰ÑÔÜ×Ò˜$Ñ5¨fÒ5Ø+ÔØ×Ò˜,¨8ÑLÀVÓLr%   Ú
safe_mergeÚadapter_namesc                 ót  • [        X5      nU(       d  gU GHž  nX0R                  R                  5       ;   d  M#  U R                  5       nUR                  R
                  nU(       a¾  UR                  R                  R                  5       nU R                  U5      n[        R                  " UR                  UR
                  5      U5      n[        R                  " U5      R                  5       (       d  [        SU S35      eUR                  U5      UR                  l        OuU R                  U5      n[        R                  " UR                  R                  R                  UR
                  5      U5      nUR                  U5      UR                  l        U R                  R!                  U5        GM¡     g)á  
Merge the active adapter weights into the base weights

Args:
    safe_merge (`bool`, *optional*):
        If `True`, the merge operation will be performed in a copy of the original weights and check for NaNs
        before merging the weights. This is useful if you want to check if the merge operation will produce
        NaNs. Defaults to `False`.
    adapter_names (`List[str]`, *optional*):
        The list of adapter names that should be merged. If `None`, all active adapters will be merged.
        Defaults to `None`.
Nú1NaNs detected in the merged weights. The adapter ú seems to be broken)r   r   rR   r   ÚweightÚdtypeÚdataÚcloneÚget_delta_weightr.   ÚmmÚtoÚisfiniteÚallr   r   Úappend)	r!   rs   rt   rT   r   Ú
orig_dtypeÚorig_weightÚdelta_weightÚ
new_weights	            r"   ÚmergeÚHRALinear.merge“   sR  € ô 0°ÓDˆÞàä+ˆNØ§¡§¡Ó!2Õ2Ø!×0Ñ0Ó2�
Ø'×.Ñ.×4Ñ4�
Þð #-×"3Ñ"3×"8Ñ"8×">Ñ">Ó"@�KØ#'×#8Ñ#8¸Ó#H�LÜ"'§(¢(¨;¯>©>¸,×:LÑ:LÓ+MÈ|Ó"\�Kä Ÿ>š>¨+Ó6×:Ñ:×<Ñ<Ü(ØOÐP^ÐO_Ð_rÐsóð ð .9¯^©^¸JÓ-G�J×%Ñ%Õ*à#'×#8Ñ#8¸Ó#H�LÜ!&§¢¨*×*;Ñ*;×*@Ñ*@×*CÑ*CÀL×DVÑDVÓ*WÐYeÓ!f�JØ-7¯]©]¸:Ó-F�J×%Ñ%Ô*Ø×$Ñ$×+Ñ+¨N×;ò+ ,r%   c                 ó€  • U R                   (       d  [        R                  " S5        g[        U R                  5      S:”  aý  U R                  R                  5       nU R                  5       nUR                  R                  nXR                  R                  5       ;   a„  UR                  R                  R                  5       nU R                  USS9n[        R                  " UR!                  UR                  5      U5      nUR!                  U5      UR                  l        [        U R                  5      S:”  a  Mü  gg©zG
This method unmerges all merged adapter layers from the base weights.
z Already unmerged. Nothing to do.Nr   T)Úreverse)ÚmergedrB   rC   Úlenr   Úpopr   ry   rz   r   rR   r{   r|   r}   r.   r~   r   )r!   rT   r   rƒ   r„   r…   r†   s          r"   ÚunmergeÚHRALinear.unmerge¼   sì   € ð �{�{Ü�MŠMÐ<Ô=Øä�$×&Ñ&Ó'¨!Ó+Ø!×1Ñ1×5Ñ5Ó7ˆNØ×,Ñ,Ó.ˆJØ#×*Ñ*×0Ñ0ˆJØ§¡§¡Ó!2Ó2Ø(×/Ñ/×4Ñ4×:Ñ:Ó<�Ø#×4Ñ4°^ÈTÐ4ÐR�Ü"ŸXšX k§n¡n°\×5GÑ5GÓ&HÈ,ÓW�
Ø)3¯©°zÓ)B�
×!Ñ!Ô&ô �$×&Ñ&Ó'¨!×+r%   r‹   c                 óø  • U R                   U   nU R                  U   nU R                  U   nUR                  nU(       Ga  US S 2S4   US S 2S4   R	                  5       -  R                  SS5      /n[        SU5       H|  nUS S 2U4   R                  SS5      n	[        U5       H   n
X—U
   R                  5       U	-  Xz   -  -
  n	M"     UR                  X™R	                  5       -  R                  SS5      5        M~     [        R                  " USS9n[        R                  " US   UR                  UR                  S9SU-  UR                  5       -  -
  nU$ XUR	                  SS9-  n[        R                  " US   UR                  UR                  S9nU(       a  [        US-
  SS5      nO[        U5      nU H8  nUS S 2U4   R                  SS5      n	USU-  U	-  U	R                  5       -  -
  nM:     U$ ©Nr   éÿÿÿÿr?   r@   )Údevicerz   r;   ©r   r   r   rH   ÚnormÚviewÚrangeÚtr‚   r.   ÚcatÚeyer”   rz   ©r!   r&   r‹   Úrankr(   Úopt_urH   ry   ÚiÚuiÚjÚindicess               r"   r}   ÚHRALinear.get_delta_weightÎ   óÏ  € Ø�z‰z˜,Ñ'ˆØ×$Ñ$ \Ñ2ˆØ—
‘
˜<Ñ(ˆØ—‘ˆçØšQ ˜T‘{ Uª1¨a¨4¡[×%5Ñ%5Ó%7Ñ7×=Ñ=¸bÀ!ÓDÐEˆFÜ˜1˜d–^�Øš1˜a˜4‘[×%Ñ% b¨!Ó,�Ü˜qž�AØ a™yŸ{™{›}¨rÑ1°V±YÑ>Ñ>’Bñ "à—‘˜r§G¡G£I™~×3Ñ3°B¸Ó:Ö;ñ	 $ô
 —Y’Y˜v¨1Ñ-ˆFÜ—Y’Y˜u Q™x°·±ÀEÇKÁKÑPÐSTÐW]ÑS]Ð`f×`hÑ`hÓ`jÑSjÑjˆFð ˆð ŸJ™J¨1˜JÐ-Ñ-ˆEÜ—Y’Y˜u Q™x°·±ÀEÇKÁKÑPˆFÞÜ  q¡¨"¨bÓ1‘ä ›+�ã�Øš1˜a˜4‘[×%Ñ% b¨!Ó,�Ø ! f¡*¨r¡/°B·D±D³FÑ":Ñ:’ñ ð ˆr%   ÚxÚargsr   c                 óf  • UR                   nU R                  (       a9  U R                  (       a  U R                  5         U R                  " U/UQ70 UD6nGOÉU R                  (       a  U R                  " U/UQ70 UD6nGO [
        R                  " U R                  UR                  S9nU R                   Hc  nXpR                  R                  5       ;  a  M"  U R                  U5      n[
        R                  " UR                  UR                   5      U5      nMe     U R                  5       R                   R"                  n	U R%                  X–R                   5      n	[
        R                  " X–5      nU R%                  U R                  R&                  UR                   5      n
U R(                  (       a  U R%                  XR                   5      nO=UR                  U R                  5       R                   R"                  R                   5      n[*        R,                  " XU
S9nUR                  U5      nU$ )N©r”   )Úinputry   Úbias)rz   Údisable_adaptersrŒ   r�   r   r.   r›   r   r”   r7   r   rR   r}   r~   r   r   ry   r{   Ú_cast_input_dtyperª   r   ÚFÚlinear©r!   r¥   r¦   r   Úprevious_dtypeÚresultr†   rT   r…   r„   rª   s              r"   ÚforwardÚHRALinear.forwardì   s•  € ØŸ™ˆà× × Ø�{�{Ø—‘”Ø—_’_ QÐ8¨Ò8°Ñ8ŠFØ�[�[Ø—_’_ QÐ8¨Ò8°Ñ8ŠFäŸš 4×#3Ñ#3¸A¿H¹HÑEˆJà"&×"6Ô"6�Ø!¯©¯©Ó):Ó:ÙØ#×4Ñ4°^ÓD�Ü"ŸXšX j§m¡m°L×4FÑ4FÓ&GÈÓV’
ñ	 #7ð ×-Ñ-Ó/×6Ñ6×;Ñ;ˆKØ×0Ñ0°×>NÑ>NÓOˆKÜŸš +Ó:ˆJØ×)Ñ)¨$¯/©/×*>Ñ*>À
×@PÑ@PÓQˆDà×,×,Ø×*Ñ*¨1×.>Ñ.>Ó?‘à—D‘D˜×,Ñ,Ó.×5Ñ5×:Ñ:×@Ñ@ÓA�Ü—X’X A¸tÑDˆFà—‘˜>Ó*ˆØˆr%   c                 ó*   >• [         TU ]  5       nSU-   $ ©Nzhra.©rn   Ú__repr__©r!   Úreprq   s     €r"   r·   ÚHRALinear.__repr__  ó   ø€ Ü‰gÑÓ ˆØ˜‰|Ðr%   ©ro   ©r   FT©FNr\   rZ   ©r2   r]   r^   r_   Ú__doc__rc   rd   re   r   r#   r   Úlistr‡   r�   r.   ÚTensorr}   r   r²   r·   rg   Ú__classcell__©rq   s   @r"   rj   rj   €   sã   ø† ñð ØØ)-ñMð ðMð ð	Mð
 ðMð ˜D #˜IÑ&ðMð 
÷Mð Mñ'< ð '<¸XÀdÈ3ÁiÑ=Pð '<Ð\`õ '<ôRCñ$¨Sð ¸4ð ÈEÏLÉLõ ð<˜Ÿ™ð ¨cð ¸Sð ÀUÇ\Á\ô ð@˜#÷ õ r%   rj   c                   ó  ^ • \ rS rSrSr   SS\S\S\S\\\4   4U 4S jjjr	SS	\S
\
\\      SS4S jjrSS jrSS\S\S\R                  4S jjrS\R                  S\S\S\R                  4S jrS\4U 4S jjrSrU =r$ )Ú	HRAConv2di  zHRA implemented in Conv2d layerr&   r'   r(   r)   c                 ó€   >• [         TU ]  5         [        R                  X5        X l        U R                  " X#XE40 UD6  g r[   rm   rp   s          €r"   r#   ÚHRAConv2d.__init__  s9   ø€ ô 	‰ÑÔÜ×Ñ˜$Ô+Ø+ÔØ×Ò˜,¨8ÑLÀVÓLr%   Nrs   rt   r   c                 óØ  • [        X5      nU(       d  gU GHÐ  nX0R                  R                  5       ;   d  M#  U R                  5       nUR                  R
                  nU(       GaQ  UR                  R                  R                  5       nUR                  U R                  U R                  UR                  S   -  U R                  R                  S   -  5      nU R                  U5      n[        R                  " UR!                  UR
                  5      U5      nUR                  U R                  U R                  UR                  S   UR                  S   5      n[        R"                  " U5      R%                  5       (       d  ['        SU S35      eUR!                  U5      UR                  l        GOUR                  R                  nUR                  U R                  U R                  U R                  R                  S   -  U R                  R                  S   -  5      nU R                  U5      n[        R                  " UR!                  UR
                  5      U5      nUR                  U R                  U R                  UR                  S   UR                  S   5      nUR!                  U5      UR                  l        U R(                  R+                  U5        GMÓ     g)rv   Nr   rw   rx   )r   r   rR   r   ry   rz   r{   r|   r—   r   r   r0   r   r}   r.   r~   r   r€   r�   r   r   r‚   )r!   rs   rt   rT   r   rƒ   r„   r…   s           r"   r‡   ÚHRAConv2d.merge"  sk  € ô 0°ÓDˆÞàä+ˆNØ§¡§¡Ó!2Õ2Ø!×0Ñ0Ó2�
Ø'×.Ñ.×4Ñ4�
ßð #-×"3Ñ"3×"8Ñ"8×">Ñ">Ó"@�KØ"-×"2Ñ"2Ø×)Ñ)Ø×(Ñ(¨:×+AÑ+AÀ!Ñ+DÑDÀtÇÁ×GbÑGbÐcdÑGeÑeó#�Kð $(×#8Ñ#8¸Ó#H�LÜ"'§(¢(¨;¯>©>¸,×:LÑ:LÓ+MÈ|Ó"\�KØ"-×"2Ñ"2Ø×)Ñ)Ø×(Ñ(Ø"×.Ñ.¨qÑ1Ø"×.Ñ.¨qÑ1ó	#�Kô !Ÿ>š>¨+Ó6×:Ñ:×<Ñ<Ü(ØOÐP^ÐO_Ð_rÐsóð ð .9¯^©^¸JÓ-G�J×%Ñ%Ö*à",×"3Ñ"3×"8Ñ"8�KØ"-×"2Ñ"2Ø×)Ñ)Ø×(Ñ(¨4¯?©?×+FÑ+FÀqÑ+IÑIÈDÏOÉO×LgÑLgÐhiÑLjÑjó#�Kð $(×#8Ñ#8¸Ó#H�LÜ"'§(¢(¨;¯>©>¸,×:LÑ:LÓ+MÈ|Ó"\�KØ"-×"2Ñ"2Ø×)Ñ)Ø×(Ñ(Ø"×.Ñ.¨qÑ1Ø"×.Ñ.¨qÑ1ó	#�Kð .9¯^©^¸JÓ-G�J×%Ñ%Ô*Ø×$Ñ$×+Ñ+¨N×;òW ,r%   c                 ó–  • U R                   (       d  [        R                  " S5        g[        U R                  5      S:”  Ga‡  U R                  R                  5       nU R                  5       nUR                  R                  nXR                  R                  5       ;   Ga  UR                  R                  R                  5       nUR                  U R                  U R                  UR                   S   -  UR                   S   -  5      nU R#                  USS9n[$        R&                  " UR)                  UR                  5      U5      nUR                  U R                  U R                  UR                   S   UR                   S   5      nUR)                  U5      UR                  l        [        U R                  5      S:”  a  GM†  ggrŠ   )rŒ   rB   rC   r�   r   rŽ   r   ry   rz   r   rR   r{   r|   r—   r   r   r0   r}   r.   r~   r   )r!   rT   r   rƒ   r„   r…   s         r"   r�   ÚHRAConv2d.unmergea  st  € ð �{�{Ü�MŠMÐ<Ô=ØÜ�$×&Ñ&Ó'¨!Ô+Ø!×1Ñ1×5Ñ5Ó7ˆNØ×,Ñ,Ó.ˆJØ#×*Ñ*×0Ñ0ˆJØ§¡§¡Ó!2Ô2Ø(×/Ñ/×4Ñ4×:Ñ:Ó<�Ø)×.Ñ.Ø×%Ñ%Ø×$Ñ$ z×'=Ñ'=¸aÑ'@Ñ@À:×CYÑCYÐZ[ÑC\Ñ\ó�ð  $×4Ñ4°^ÈTÐ4ÐR�Ü#Ÿhšh {§~¡~°l×6HÑ6HÓ'IÈ<ÓX�Ø)×.Ñ.Ø×%Ñ% t×'7Ñ'7¸×9OÑ9OÐPQÑ9RÐT^×TjÑTjÐklÑTmó�ð *5¯©¸
Ó)C�
×!Ñ!Ô&ô! �$×&Ñ&Ó'¨!×+Ð+r%   r‹   c                 óø  • U R                   U   nU R                  U   nU R                  U   nUR                  nU(       Ga  US S 2S4   US S 2S4   R	                  5       -  R                  SS5      /n[        SU5       H|  nUS S 2U4   R                  SS5      n	[        U5       H   n
X—U
   R                  5       U	-  Xz   -  -
  n	M"     UR                  X™R	                  5       -  R                  SS5      5        M~     [        R                  " USS9n[        R                  " US   UR                  UR                  S9SU-  UR                  5       -  -
  nU$ XUR	                  SS9-  n[        R                  " US   UR                  UR                  S9nU(       a  [        US-
  SS5      nO[        U5      nU H8  nUS S 2U4   R                  SS5      n	USU-  U	-  U	R                  5       -  -
  nM:     U$ r’   r•   rœ   s               r"   r}   ÚHRAConv2d.get_delta_weightz  r¤   r%   r¥   r¦   r   c                 óˆ  • UR                   nU R                  (       a9  U R                  (       a  U R                  5         U R                  " U/UQ70 UD6nGOÚU R                  (       a  U R                  " U/UQ70 UD6nGO±[
        R                  " U R                  U R                  R                  S   -  U R                  R                  S   -  UR                  S9nU R                   Hc  nXpR                  R                  5       ;  a  M"  U R                  U5      n[
        R                  " UR                  UR                   5      U5      nMe     U R                  R                   R"                  n	U	R%                  U R&                  U R                  U R                  R                  S   -  U R                  R                  S   -  5      n	U R)                  X–R                   5      n	U R)                  U R                  R*                  UR                   5      n
[
        R                  " X–5      nUR%                  U R&                  U R                  U R                  R                  S   U R                  R                  S   5      nU R,                  (       a  U R)                  XR                   5      nO=UR                  U R/                  5       R                   R"                  R                   5      n[0        R2                  " UUU
U R                  R4                  S   U R                  R6                  S   S9nUR                  U5      nU$ )Nr   r¨   )r©   ry   rª   ÚpaddingÚstride)rz   r«   rŒ   r�   r   r.   r›   r   r0   r”   r7   r   rR   r}   r~   r   ry   r{   r—   r   r¬   rª   r   r   r­   Úconv2drÐ   rÑ   r¯   s              r"   r²   ÚHRAConv2d.forward˜  s  € ØŸ™ˆà× × Ø�{�{Ø—‘”Ø—_’_ QÐ8¨Ò8°Ñ8ŠFØ�[�[Ø—_’_ QÐ8¨Ò8°Ñ8ŠFäŸšØ× Ñ  4§?¡?×#>Ñ#>¸qÑ#AÑAÀDÇOÁO×D_ÑD_Ð`aÑDbÑbØ—x‘xñˆJð #'×"6Ô"6�Ø!¯©¯©Ó):Ó:ÙØ#×4Ñ4°^ÓD�Ü"ŸXšX j§m¡m°L×4FÑ4FÓ&GÈÓV’
ñ	 #7ð Ÿ/™/×0Ñ0×5Ñ5ˆKØ%×*Ñ*Ø×!Ñ!Ø× Ñ  4§?¡?×#>Ñ#>¸qÑ#AÑAÀDÇOÁO×D_ÑD_Ð`aÑDbÑbóˆKð ×0Ñ0°×>NÑ>NÓOˆKØ×)Ñ)¨$¯/©/×*>Ñ*>À
×@PÑ@PÓQˆDäŸš +Ó:ˆJØ#Ÿ™Ø×!Ñ!Ø× Ñ Ø—‘×+Ñ+¨AÑ.Ø—‘×+Ñ+¨AÑ.ó	ˆJð ×,×,Ø×*Ñ*¨1×.>Ñ.>Ó?‘à—D‘D˜×,Ñ,Ó.×5Ñ5×:Ñ:×@Ñ@ÓA�Ü—X’XØØ!ØØŸ™×/Ñ/°Ñ2Ø—‘×-Ñ-¨aÑ0ñˆFð —‘˜>Ó*ˆØˆr%   c                 ó*   >• [         TU ]  5       nSU-   $ rµ   r¶   r¸   s     €r"   r·   ÚHRAConv2d.__repr__Ë  r»   r%   r¼   r½   r¾   r\   rZ   r¿   rÄ   s   @r"   rÆ   rÆ     sÖ   ø† Ù)ð ØØ)-ñMð ðMð ð	Mð
 ðMð ˜D #˜IÑ&÷Mð Mñ=< ð =<¸XÀdÈ3ÁiÑ=Pð =<Ð\`õ =<ô~Dñ2¨Sð ¸4ð ÈEÏLÉLõ ð<1˜Ÿ™ð 1¨cð 1¸Sð 1ÀUÇ\Á\ô 1ðf˜#÷ õ r%   rÆ   )rF   rB   Útypingr   r   r   r.   Útorch.nnr   Útorch.nn.functionalÚ
functionalr­   Úpeft.tuners.tuners_utilsr   r   r	   rb   rj   rÆ   rh   r%   r"   Ú<module>rÛ      s\   ðó Û ß 'Ñ 'ã Ý ß Ð ç Lôc\ˆ~ô c\ôLN�—	‘	˜8ô Nôb|�—	‘	˜8õ |r%   