§
    Ó˜ºhêF  ã                   ór   — d dl mZmZ d dlZd dlmZ ddlmZmZmZ dgZ	dd„Z
	 dd„Z G d„ de¦  «        ZdS )é    )ÚOptionalÚUnionN)ÚTensoré   )Ú
_to_scalarÚ	OptimizerÚParamsTÚLBFGSc                 ót  — |�|\  }}n| |k    r| |fn|| f\  }}||z   d||z
  z  | |z
  z  z
  }	|	dz  ||z  z
  }
|
dk    rs|
                      ¦   «         }| |k    r||| z
  ||z   |	z
  ||z
  d|z  z   z  z  z
  }n| | |z
  ||z   |	z
  ||z
  d|z  z   z  z  z
  }t          t          ||¦  «        |¦  «        S ||z   dz  S )Né   é   r   g       @)ÚsqrtÚminÚmax)Úx1Úf1Úg1Úx2Úf2Úg2ÚboundsÚ
xmin_boundÚ
xmax_boundÚd1Ú	d2_squareÚd2Úmin_poss                úY/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/optim/lbfgs.pyÚ_cubic_interpolater      s  € ð ÐØ!'Ñˆ
�J�Jà-/°2ªX¨X " b  ¸BÀ¸8Ñˆ
�Jð 
ˆb‰�1˜˜R™‘= B¨¡GÑ,Ñ	,€BØ�A‘˜˜R™‘€IØ�A‚~€~Ø�^Š^ÑÔˆØ�Š8ˆ8Ø˜B ™G¨¨b©°2©¸"¸r¹'ÀAÈÁFÑ:JÑ(KÑLÑLˆGˆGà˜B ™G¨¨b©°2©¸"¸r¹'ÀAÈÁFÑ:JÑ(KÑLÑLˆGÝ•3�w 
Ñ+Ô+¨ZÑ8Ô8Ð8à˜ZÑ'¨3Ñ.Ð.ó    ç-Cëâ6?çÍÌÌÌÌÌì?ç•Ö&è.>é   c           
      óô  — |                      ¦   «                              ¦   «         }|                     t          j        ¬¦  «        } | |||¦  «        \  }}d}|                     |¦  «        }d|||f\  }}}}d}d}||
k     �r(||||z  |z  z   k    s|dk    r5||k    r/||g}||g}||                     t          j        ¬¦  «        g}||g}nÞt          |¦  «        | |z  k    r|g}|g}|g}d}n»|dk    r/||g}||g}||                     t          j        ¬¦  «        g}||g}n†|d||z
  z  z   }|dz  }|}t          ||||||||f¬¦  «        }|}|}|                     t          j        ¬¦  «        }|} | |||¦  «        \  }}|dz  }|                     |¦  «        }|dz  }||
k     �°(||
k    rd|g}||g}||g}d}|d         |d	         k    rd
nd\  }}|�s€||
k     �ryt          |d         |d         z
  ¦  «        |z  |	k     r�nRt          |d         |d         |d         |d         |d         |d         ¦  «        }dt          |¦  «        t          |¦  «        z
  z  } t          t          |¦  «        |z
  |t          |¦  «        z
  ¦  «        | k     r“|s&|t          |¦  «        k    s|t          |¦  «        k    rht          |t          |¦  «        z
  ¦  «        t          |t          |¦  «        z
  ¦  «        k     rt          |¦  «        | z
  }nt          |¦  «        | z   }d}nd}nd} | |||¦  «        \  }}|dz  }|                     |¦  «        }|dz  }||||z  |z  z   k    s|||         k    rL|||<   |||<   |                     t          j        ¬¦  «        ||<   |||<   |d         |d         k    rd
nd\  }}n�t          |¦  «        | |z  k    rd}nD|||         ||         z
  z  dk    r,||         ||<   ||         ||<   ||         ||<   ||         ||<   |||<   |||<   |                     t          j        ¬¦  «        ||<   |||<   |s||
k     �°y||         }||         }||         }||||fS )N©Úmemory_formatr   r   FTg{®Gáz„?é
   )r   éÿÿÿÿ)r   r   )r   r   gš™™™™™¹?)Úabsr   ÚcloneÚtorchÚcontiguous_formatÚdotr   r   )!Úobj_funcÚxÚtÚdÚfÚgÚgtdÚc1Úc2Útolerance_changeÚmax_lsÚd_normÚf_newÚg_newÚls_func_evalsÚgtd_newÚt_prevÚf_prevÚg_prevÚgtd_prevÚdoneÚls_iterÚbracketÚ	bracket_fÚ	bracket_gÚbracket_gtdÚmin_stepÚmax_stepÚtmpÚinsuf_progressÚlow_posÚhigh_posÚepss!                                    r   Ú_strong_wolferP   )   sm  € ð �UŠU‰WŒW�[Š[‰]Œ]€FØ	�Š�eÔ5ˆÑ6Ô6€Aà�8˜A˜q !Ñ$Ô$�L€Eˆ5Ø€MØ�iŠi˜‰lŒl€Gð ()¨!¨Q° |Ñ$€FˆF�F˜HØ€DØ€GØ
�FÒ
Ñ
à�A˜˜Q™ ™Ñ$Ò%Ð%¨'°Aª+¨+¸%À6º/¸/Ø˜q�kˆGØ ˜ˆIØ §¢½5Ô;R Ñ!SÔ!SÐTˆIØ# WÐ-ˆKØåˆw‰<Œ<˜B˜3 ™9Ò$Ð$Ø�cˆGØ˜ˆIØ˜ˆIØˆDØà�aŠ<ˆ<Ø˜q�kˆGØ ˜ˆIØ §¢½5Ô;R Ñ!SÔ!SÐTˆIØ# WÐ-ˆKØð �t˜q 6™zÑ*Ñ*ˆØ�r‘6ˆØˆÝØ�F˜H a¨°ÀÈ8Ð@Tð
ñ 
ô 
ˆð
 ˆØˆØ—’­5Ô+B�ÑCÔCˆØˆØ�x  1 aÑ(Ô(‰ˆˆuØ˜ÑˆØ—)’)˜A‘,”,ˆØ�1‰ˆðO �FÒ
Ñ
ðT �&ÒÐØ�a�&ˆØ˜�Jˆ	Ø˜�Jˆ	ð
 €Nà"+¨A¤,°)¸B´-Ò"?Ð"?˜˜ÀVÑ€GˆXØñ A+�w Ò'Ñ'åˆw�qŒz˜G AœJÑ&Ñ'Ô'¨&Ñ0Ð3CÒCÐCÙõ Ø�AŒJØ�aŒLØ˜ŒNØ�AŒJØ�aŒLØ˜ŒNñ
ô 
ˆð  •S˜‘\”\¥C¨¡L¤LÑ0Ñ1ˆÝ�s�7‰|Œ|˜aÑ ¥S¨¡\¤\Ñ!1Ñ2Ô2°SÒ8Ð8àð & ¥c¨'¡l¤lÒ!2Ð!2°a½3¸w¹<¼<Ò6GÐ6Gå�q�3˜w™<œ<Ñ'Ñ(Ô(­3¨qµ3°w±<´<Ñ/?Ñ+@Ô+@Ò@Ð@Ý˜G™œ sÑ*�A�Aå˜G™œ sÑ*�AØ!&��à!%��à"ˆNð  �x  1 aÑ(Ô(‰ˆˆuØ˜ÑˆØ—)’)˜A‘,”,ˆØ�1‰ˆà�A˜˜Q™ ™Ñ$Ò%Ð%¨°)¸GÔ2DÒ)DÐ)Dà !ˆG�HÑØ"'ˆI�hÑØ"'§+¢+½EÔ<S +Ñ"TÔ"TˆI�hÑØ$+ˆK˜Ñ!Ø*3°A¬,¸)ÀA¼,Ò*FÐ*F  ÈFÑˆG�X�Xå�7‰|Œ| ˜s S™yÒ(Ð(à��Ø˜G HÔ-°¸Ô0@Ñ@ÑAÀQÒFÐFà$+¨GÔ$4�˜Ñ!Ø&/°Ô&8�	˜(Ñ#Ø&/°Ô&8�	˜(Ñ#Ø(3°GÔ(<�˜HÑ%ð  !ˆG�GÑØ!&ˆI�gÑØ!&§¢½5Ô;R Ñ!SÔ!SˆI�gÑØ#*ˆK˜Ñ ðC ð A+�w Ò'Ñ'ðH 	�Ô€AØ�gÔ€EØ�gÔ€EØ�%˜˜MÐ)Ð)r    c                   óÐ   ‡ — e Zd ZdZ	 	 	 	 	 	 	 dded	eeef         d
ede	e         dededede	e
         fˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ej        ¦   «         d„ ¦   «         Zˆ xZS )r
   a¢  Implements L-BFGS algorithm.

    Heavily inspired by `minFunc
    <https://www.cs.ubc.ca/~schmidtm/Software/minFunc.html>`_.

    .. warning::
        This optimizer doesn't support per-parameter options and parameter
        groups (there can be only one).

    .. warning::
        Right now all parameters have to be on a single device. This will be
        improved in the future.

    .. note::
        This is a very memory intensive optimizer (it requires additional
        ``param_bytes * (history_size + 1)`` bytes). If it doesn't fit in memory
        try reducing the history size, or use a different algorithm.

    Args:
        params (iterable): iterable of parameters to optimize. Parameters must be real.
        lr (float, optional): learning rate (default: 1)
        max_iter (int, optional): maximal number of iterations per optimization step
            (default: 20)
        max_eval (int, optional): maximal number of function evaluations per optimization
            step (default: max_iter * 1.25).
        tolerance_grad (float, optional): termination tolerance on first order optimality
            (default: 1e-7).
        tolerance_change (float, optional): termination tolerance on function
            value/parameter changes (default: 1e-9).
        history_size (int, optional): update history size (default: 100).
        line_search_fn (str, optional): either 'strong_wolfe' or None (default: None).
    r   é   NçH¯¼šò×z>r#   éd   ÚparamsÚlrÚmax_iterÚmax_evalÚtolerance_gradr8   Úhistory_sizeÚline_search_fnc	           	      óÀ  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚|€|dz  dz  }t	          |||||||¬¦  «        }	t          ¦   «                              ||	¦  «         t          | j        ¦  «        dk    rt          d¦  «        ‚| j        d	         d
         | _	        d | _
        d S )Nr   zTensor lr must be 1-elementg        zInvalid learning rate: é   é   )rV   rW   rX   rY   r8   rZ   r[   z>LBFGS doesn't support per-parameter options (parameter groups)r   rU   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__ÚlenÚparam_groupsÚ_paramsÚ_numel_cache)ÚselfrU   rV   rW   rX   rY   r8   rZ   r[   ÚdefaultsÚ	__class__s             €r   rd   zLBFGS.__init__Ù   sþ   ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<ØÐØ !‘| qÑ(ˆHÝØØØØ)Ø-Ø%Ø)ð
ñ 
ô 
ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*åˆtÔ Ñ!Ô! QÒ&Ð&ÝØPñô ð ð Ô(¨Ô+¨HÔ5ˆŒØ ˆÔÐÐr    c                 ód   — | j         €#t          d„ | j        D ¦   «         ¦  «        | _         | j         S )Nc              3   ó”   K  — | ]C}t          j        |¦  «        rd |                     ¦   «         z  n|                     ¦   «         V — ŒDdS )r   N)r,   Ú
is_complexr`   ©Ú.0Úps     r   ú	<genexpr>zLBFGS._numel.<locals>.<genexpr>ÿ   s^   è è € ð $ð $àõ "'Ô!1°!Ñ!4Ô!4ÐC��A—G’G‘I”I‘�¸!¿'º'¹)¼)ð$ð $ð $ð $ð $ð $r    )rh   Úsumrg   ©ri   s    r   Ú_numelzLBFGS._numelý   sF   € ØÔÐ$Ý #ð $ð $àœð$ñ $ô $ñ !ô !ˆDÔð
 Ô Ð r    c                 ó  — g }| j         D ]æ}|j        €:|                     |                     ¦   «         ¦  «                             ¦   «         }nS|j        j        r-|j                             ¦   «                              d¦  «        }n|j                             d¦  «        }t          j	        |¦  «        r't          j
        |¦  «                             d¦  «        }|                     |¦  «         Œçt          j        |d¦  «        S )Nr)   r   )rg   ÚgradÚnewr`   Úzero_Ú	is_sparseÚto_denseÚviewr,   rn   Úview_as_realÚappendÚcat)ri   Úviewsrq   r|   s       r   Ú_gather_flat_gradzLBFGS._gather_flat_grad  sÝ   € ØˆØ”ð 		ð 		ˆAØŒvˆ~Ø—u’u˜QŸWšW™YœYÑ'Ô'×-Ò-Ñ/Ô/��Ø”Ô!ð 'Ø”v—’Ñ(Ô(×-Ò-¨bÑ1Ô1��à”v—{’{ 2‘”�ÝÔ Ñ%Ô%ð 9ÝÔ)¨$Ñ/Ô/×4Ò4°RÑ8Ô8�Ø�LŠL˜ÑÔÐÐÝŒy˜ Ñ"Ô"Ð"r    c                 ó>  — d}| j         D ]x}t          j        |¦  «        rt          j        |¦  «        }|                     ¦   «         }|                     ||||z   …                              |¦  «        |¬¦  «         ||z  }Œy||                      ¦   «         k    sJ ‚d S )Nr   ©Úalpha)rg   r,   rn   r}   r`   Úadd_Úview_asru   )ri   Ú	step_sizeÚupdateÚoffsetrq   r`   s         r   Ú	_add_gradzLBFGS._add_grad  s¤   € ØˆØ”ð 	ð 	ˆAÝÔ Ñ"Ô"ð *ÝÔ& qÑ)Ô)�Ø—G’G‘I”IˆEà�FŠF�6˜& 6¨E¡>Ð1Ô2×:Ò:¸1Ñ=Ô=ÀYˆFÑOÔOÐOØ�e‰OˆFˆFØ˜Ÿš™œÒ&Ð&Ð&Ð&Ð&Ð&r    c                 ó$   — d„ | j         D ¦   «         S )Nc                 óN   — g | ]"}|                      t          j        ¬ ¦  «        ‘Œ#S )r&   )r+   r,   r-   ro   s     r   ú
<listcomp>z&LBFGS._clone_param.<locals>.<listcomp>   s)   € ÐUÐUÐUÀ1�—’¥eÔ&=�Ñ>Ô>ÐUÐUÐUr    )rg   rt   s    r   Ú_clone_paramzLBFGS._clone_param  s   € ØUÐUÈÌÐUÑUÔUÐUr    c                 óf   — t          | j        |¦  «        D ]\  }}|                     |¦  «         Œd S ©N)Úziprg   Úcopy_)ri   Úparams_datarq   Úpdatas       r   Ú
_set_paramzLBFGS._set_param"  s<   € Ý˜DœL¨+Ñ6Ô6ð 	ð 	‰HˆAˆuØ�GŠG�E‰NŒNˆNˆNð	ð 	r    c                 ó¶   — |                       ||¦  «         t           |¦   «         ¦  «        }|                      ¦   «         }|                      |¦  «         ||fS r�   )rŠ   Úfloatr�   r•   )ri   Úclosurer0   r1   r2   ÚlossÚ	flat_grads          r   Ú_directional_evaluatezLBFGS._directional_evaluate&  sV   € Ø�Š�q˜!ÑÔÐÝ�W�W‘Y”YÑÔˆØ×*Ò*Ñ,Ô,ˆ	Ø�Š˜ÑÔÐØ�YˆÐr    c           	      óF  ‡ ‡— t          ‰ j        ¦  «        dk    sJ ‚ t          j        ¦   «         ‰¦  «        Š‰ j        d         }t	          |d         ¦  «        }|d         }|d         }|d         }|d         }|d         }|d	         }	‰ j        ‰ j        d                  }
|
                     d
d¦  «         |
                     dd¦  «          ‰¦   «         }t          |¦  «        }d}|
d
xx         dz  cc<   ‰  	                    ¦   «         }| 
                    ¦   «                              ¦   «         |k    }|r|S |
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }|
                     d¦  «        }d}||k     �rŒ|dz  }|
dxx         dz  cc<   |
d         dk    r|                     ¦   «         }g }g }g }d}�nþ|                     |¦  «        }|                     |¦  «        }|                     |¦  «        }|dk    r¬t          |¦  «        |	k    r?|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     |¦  «         |                     |¦  «         |                     d|z  ¦  «         ||                     |¦  «        z  }t          |¦  «        }d|
vr	dg|	z  |
d<   |
d         }|                     ¦   «         }t'          |dz
  dd¦  «        D ]M}||                              |¦  «        ||         z  ||<   |                     ||         ||          ¬¦  «         ŒNt          j        ||¦  «        x}} t'          |¦  «        D ]L}||                              | ¦  «        ||         z  }!|                      ||         ||         |!z
  ¬¦  «         ŒM|€!|                     t          j        ¬¦  «        }n|                     |¦  «         |}|
d         dk    r;t1          dd| 
                    ¦   «                              ¦   «         z  ¦  «        |z  }n|}|                     |¦  «        }"|"| k    r�n®d}#|�Š|dk    rt5          d¦  «        ‚‰                      ¦   «         }$ˆˆ fd„}%t9          |%|$|||||"¦  «        \  }}}}#‰                      ||¦  «         | 
                    ¦   «                              ¦   «         |k    }nž‰                      ||¦  «         ||k    r‚t          j        ¦   «         5  t           ‰¦   «         ¦  «        }ddd¦  «         n# 1 swxY w Y   ‰  	                    ¦   «         }| 
                    ¦   «                              ¦   «         |k    }d}#||#z  }|
d
xx         |#z  cc<   ||k    rnf||k    rn_|rn\|                     |¦  «         
                    ¦   «                              ¦   «         |k    rnt          ||z
  ¦  «        |k     rn||k     �°Œ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   ||
d<   |S )z¦Perform a single optimization step.

        Args:
            closure (Callable): A closure that reevaluates the model
                and returns the loss.
        r   r   rV   rW   rX   rY   r8   r[   rZ   Ú
func_evalsÚn_iterr2   r1   Úold_dirsÚold_stpsÚroÚH_diagÚprev_flat_gradÚ	prev_lossg»½×Ùß|Û=g      ð?ÚalNr)   rƒ   r&   Ústrong_wolfez only 'strong_wolfe' is supportedc                 ó4   •— ‰                      ‰| ||¦  «        S r�   )r›   )r0   r1   r2   r˜   ri   s      €€r   r/   zLBFGS.step.<locals>.obj_func¹  s   ø€ Ø#×9Ò9¸'À1ÀaÈÑKÔKÐKr    )re   rf   r,   Úenable_gradr   Ústaterg   Ú
setdefaultr—   r�   r*   r   ÚgetÚnegÚsubÚmulr.   Úpopr~   Úranger…   r+   r-   r’   r   rs   ÚRuntimeErrorrŽ   rP   rŠ   )&ri   r˜   ÚgrouprV   rW   rX   rY   r8   r[   rZ   r©   Ú	orig_lossr™   Úcurrent_evalsrš   Úopt_condr2   r1   rŸ   r    r¡   r¢   r£   r¤   rž   ÚyÚsÚysÚnum_oldr¥   ÚqÚiÚrÚbe_ir5   r=   Úx_initr/   s&   ``                                    r   Ústepz
LBFGS.step-  sH  øø€ õ �4Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*ð &•%Ô#Ñ%Ô% gÑ.Ô.ˆàÔ! !Ô$ˆÝ˜˜dœÑ$Ô$ˆØ˜Ô$ˆØ˜Ô$ˆØÐ/Ô0ˆØ Ð!3Ô4ÐØÐ/Ô0ˆØ˜^Ô,ˆð ”
˜4œ<¨œ?Ô+ˆØ×Ò˜ qÑ)Ô)Ð)Ø×Ò˜ 1Ñ%Ô%Ð%ð �G‘I”Iˆ	Ý�YÑÔˆØˆØˆlÐÐÔ˜qÑ ÐÐÑà×*Ò*Ñ,Ô,ˆ	Ø—=’=‘?”?×&Ò&Ñ(Ô(¨NÒ:ˆð ð 	ØÐð �IŠI�c‰NŒNˆØ�IŠI�c‰NŒNˆØ—9’9˜ZÑ(Ô(ˆØ—9’9˜ZÑ(Ô(ˆØ�YŠY�t‰_Œ_ˆØ—’˜8Ñ$Ô$ˆØŸšÐ#3Ñ4Ô4ˆØ—I’I˜kÑ*Ô*ˆ	àˆà�xÒÑà�a‰KˆFØ�(ˆOˆOŒO˜qÑ ˆOˆO‰Oð
 �XŒ !Ò#Ð#Ø—M’M‘O”O�Ø�Ø�Ø�Ø�‘ð —M’M .Ñ1Ô1�Ø—E’E˜!‘H”H�Ø—U’U˜1‘X”X�Ø˜’:�:å˜8‘}”}¨Ò4Ð4à Ÿš Q™œ˜Ø Ÿš Q™œ˜ØŸš˜q™	œ	˜	ð —O’O AÑ&Ô&Ð&Ø—O’O AÑ&Ô&Ð&Ø—I’I˜c B™hÑ'Ô'Ð'ð   !§%¢%¨¡(¤(™]�Fõ ˜h™-œ-�à˜uÐ$Ð$Ø#' &¨<Ñ"7�E˜$‘KØ˜4”[�ð —M’M‘O”O�Ý˜w¨™{¨B°Ñ3Ô3ð 6ð 6�AØ$ QœKŸOšO¨AÑ.Ô.°°A´Ñ6�B�q‘EØ—F’F˜8 Aœ;¨r°!¬u¨f�FÑ5Ô5Ð5Ð5õ œ	 ! VÑ,Ô,Ð,��AÝ˜w™œð <ð <�AØ# Aœ;Ÿ?š?¨1Ñ-Ô-°°1´Ñ5�DØ—F’F˜8 Aœ;¨b°¬e°d©l�FÑ;Ô;Ð;Ð;àÐ%Ø!*§¢½uÔ?V Ñ!WÔ!W��à×$Ò$ YÑ/Ô/Ð/ØˆIð �XŒ !Ò#Ð#Ý˜˜S 9§=¢=¡?¤?×#6Ò#6Ñ#8Ô#8Ñ8Ñ9Ô9¸BÑ>��à�ð —-’- Ñ"Ô"ˆCð Ð&Ð&Ò&Ð&Ùð ˆMØÐ)à! ^Ò3Ð3Ý&Ð'IÑJÔJÐJà!×.Ò.Ñ0Ô0�FðLð Lð Lð Lð Lð Lõ 9FØ  &¨!¨Q°°iÀñ9ô 9Ñ5�D˜) Q¨ð —’˜q !Ñ$Ô$Ð$Ø$Ÿ=š=™?œ?×.Ò.Ñ0Ô0°NÒB��ð —’˜q !Ñ$Ô$Ð$Ø˜XÒ%Ð%õ Ô*Ñ,Ô,ð 0ð 0Ý$ W W¡Y¤YÑ/Ô/˜ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0à $× 6Ò 6Ñ 8Ô 8�IØ(Ÿ}š}™œ×2Ò2Ñ4Ô4¸ÒF�HØ$%�Mð ˜]Ñ*ˆMØ�,ÐÐÔ =Ñ0ÐÐÑð
 ˜Ò!Ð!Øà Ò(Ð(Øð ð Øð �uŠu�Q‰xŒx�|Š|‰~Œ~×!Ò!Ñ#Ô#Ð'7Ò7Ð7Øå�4˜)Ñ#Ñ$Ô$Ð'7Ò7Ð7ØðE �xÒÑðH ˆˆc‰
Øˆˆc‰
Ø$ˆˆjÑØ$ˆˆjÑØˆˆd‰Ø ˆˆh‰Ø"0ˆÐÑØ&ˆˆkÑàÐs   ÖV,Ö,V0Ö3V0)r   rR   NrS   r#   rT   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r—   r   Úintr   Ústrrd   ru   r�   rŠ   rŽ   r•   r›   r,   Úno_gradr¿   Ú__classcell__)rk   s   @r   r
   r
   ·   sK  ø€ € € € € ðð ðH $%ØØ"&Ø $Ø"&ØØ(,ð"!ð "!àð"!ð �%˜�-Ô ð"!ð ð	"!ð
 ˜3”-ð"!ð ð"!ð  ð"!ð ð"!ð ! œð"!ð "!ð "!ð "!ð "!ð "!ðH!ð !ð !ð#ð #ð #ð	'ð 	'ð 	'ðVð Vð Vðð ð ðð ð ð €U„]�_„_ðAð Añ „_ðAð Að Að Að Ar    r�   )r!   r"   r#   r$   )Útypingr   r   r,   r   Ú	optimizerr   r   r	   Ú__all__r   rP   r
   © r    r   ú<module>rÌ      sÑ   ðà "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð ˆ)€ð/ð /ð /ð /ð: RTðK*ð K*ð K*ð K*ð\xð xð xð xð xˆIñ xô xð xð xð xr    