ó
    !Eñi)
  ã                   óÊ   • S SK r S SKJr  S SKJr  S/rSS jr\" SS5      r\" SS	5      r\" S
S5      r	\" SS5      r
S rS\\   S\\   S\\   4S jrS\\\4   S\SS4S jrg)é    N)Úrepeat)ÚAnyÚ'consume_prefix_in_state_dict_if_presentc                 ó    ^ • U 4S jnXl         U$ )Nc                 ó–   >• [        U [        R                  R                  5      (       a  [	        U 5      $ [	        [        U T5      5      $ ©N)Ú
isinstanceÚcollectionsÚabcÚIterableÚtupler   )ÚxÚns    €ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/nn/modules/utils.pyÚparseÚ_ntuple.<locals>.parse   s4   ø€ Ü�aœŸ™×1Ñ1×2Ñ2Ü˜“8ˆOÜ”V˜A˜q“\Ó"Ð"ó    )Ú__name__)r   Únamer   s   `  r   Ú_ntupler   
   s   ø€ õ#ð
 „NØ€Lr   é   Ú_singleé   Ú_pairé   Ú_tripleé   Ú
_quadruplec                 ó@   ^• [        U4S j[        U 5       5       5      $ )z©Reverse the order of `t` and repeat each element for `n` times.

This can be used to translate padding arg used by Conv and Pooling modules
to the ones used by `F.pad`.
c              3   óL   >#   • U  H  n[        T5        H  o!v •  M     M     g 7fr   )Úrange)Ú.0r   Ú_r   s      €r   Ú	<genexpr>Ú(_reverse_repeat_tuple.<locals>.<genexpr>    s   øé € Ð:šK�q´°q·¨A”±‘šKùs   ƒ!$)r   Úreversed)Útr   s    `r   Ú_reverse_repeat_tupler(      s   ø€ ô Ô:œH QœKÓ:Ó:Ð:r   Úout_sizeÚdefaultsÚreturnc                 ó"  • SS K n[        U [        UR                  45      (       a  U $ [	        U5      [	        U 5      ::  a  [        S[	        U 5      S-    35      e[        X[	        U 5      * S  SS9 VVs/ s H  u  p4Ub  UOUPM     snn$ s  snnf )Nr   z#Input dimension should be at least r   F)Ústrict)Útorchr	   ÚintÚSymIntÚlenÚ
ValueErrorÚzip)r)   r*   r.   ÚvÚds        r   Ú_list_with_defaultr6   #   s”   € Ûä�(œS %§,¡,Ð/×0Ñ0ØˆÜ
ˆ8ƒ}œ˜H›Ó%ÜÐ>¼sÀ8»}ÈqÑ?PÐ>QÐRÓSÐSô ˜¬C°«M¨>Ð+;Ð"<ÀUÒKôâK‰DˆAð ‰]‰ Ò!ÙKòð ùó s   Á4BÚ
state_dictÚprefixc                 ó  • [        U R                  5       5      nU H<  nUR                  U5      (       d  M  U[        U5      S nU R	                  U5      X'   M>     [        U S5      (       a¡  [        U R                  R                  5       5      nU Hw  n[        U5      S:X  a  M  X1R                  SS5      :X  d  UR                  U5      (       d  MA  U[        U5      S nU R                  R	                  U5      U R                  U'   My     gg)ax  Strip the prefix in state_dict in place, if any.

.. note::
    Given a `state_dict` from a DP/DDP model, a local model can load it by applying
    `consume_prefix_in_state_dict_if_present(state_dict, "module.")` before calling
    :meth:`torch.nn.Module.load_state_dict`.

Args:
    state_dict (OrderedDict): a state-dict to be loaded to the model.
    prefix (str): prefix.
NÚ	_metadatar   Ú.Ú )ÚlistÚkeysÚ
startswithr1   ÚpopÚhasattrr:   Úreplace)r7   r8   r>   ÚkeyÚnewkeys        r   r   r   0   sæ   € ô �
—‘Ó!Ó"€DÛˆØ�>‰>˜&×!Ó!Øœ˜V›˜Ð'ˆFØ!+§¡°Ó!4ˆJÓñ ô ˆz˜;×'Ñ'Ü�J×(Ñ(×-Ñ-Ó/Ó0ˆÛˆCô
 �3‹x˜1‹}Ùà—n‘n S¨"Ó-Ó-°·±À×1GÓ1GØœS ›[˜]Ð+�Ø/9×/CÑ/C×/GÑ/GÈÓ/L�
×$Ñ$ VÓ,ò ð (r   )r   )r
   Ú	itertoolsr   Útypingr   Ú__all__r   r   r   r   r   r(   r=   r/   r6   ÚdictÚstrr   © r   r   Ú<module>rK      s¥   ðã Ý Ý ð 5Ð
5€ôñ �!�YÓ
€Ù��7Ó€Ù
�!�YÓ
€Ù�Q˜Ó%€
ò;ð
  c¡ð 
°d¸3±ið 
ÀDÈÁIô 
ð"MØ�S˜#�X‘ð"Màð"Mð 
õ"Mr   