Ë
    ›¾jD  ã            
       óø  — d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ  e«       Z ed
e¬«      Z ede	eee   ef   ¬«      Z ej6                  d«      dedeeef   fd„«       Zdeeef   dededeeef   fd„Zdeeef   dededeeef   fd„Zdeeef   dededeeef   fd„Z deeef   dededeee   ef   fd„Z!	 ddeeef   dee   dee   ddfd„Z"y)é    )
ÚAnyÚCallableÚDictÚListÚOptionalÚSequenceÚTupleÚTypeVarÚUnionÚcasté   )ÚNumpyOps)Úregistry)ÚModel)ÚArray2dÚRaggedÚ
XY_XY_OutT)Ú	get_widthé   )ÚnoopÚInT)ÚboundÚOutTzconcatenate.v1ÚlayersÚreturnc                  ó~  — | s%t        t        t        t        f   t	        «       «      S t        | «      dk(  r| d   S | d   j                  t        u r&| d   j                  j                  | dd «       | d   S ddi}t        d„ | D «       «      rdddœ}t        dj                  d„ | D «       «      t        t        || ¬	«      S )
zÆCompose two or more models `f`, `g`, etc, such that their outputs are
    concatenated, i.e. `concatenate(f, g)(x)` computes `hstack(f(x), g(x))`.
    Also supports chaining more than 2 layers.
    r   r   NÚnOc              3   óB   K  — | ]  }|j                  d «      dv –— Œ y­w)ÚnI)TNN)Úhas_dim)Ú.0Únodes     úb/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/concatenate.pyú	<genexpr>zconcatenate.<locals>.<genexpr>,   s   è ø€ Ò
A°$ˆ4�<‰<˜Ó Ô-Ñ
Aùs   ‚)r   r   ú|c              3   ó4   K  — | ]  }|j                   –— Œ y ­w)N)Úname©r!   Úlayers     r#   r$   zconcatenate.<locals>.<genexpr>0   s   è ø€ Ò0 �—•Ñ0ùs   ‚)ÚinitÚdimsr   )r   r   r   r   r   ÚlenÚ_funcÚforwardr   ÚextendÚallÚjoinr*   )r   r+   s     r#   Úconcatenater2      s»   € ñ Ü”Eœ#œz˜/Ñ*¬D«FÓ3Ð3Ü	ˆV‹˜Ò	Ø�a‰yÐØ	�‰�‰œGÑ	#Øˆq‰	×Ñ×Ñ  q r 
Ô+Ø�a‰yÐð '+¨D \€DÜ
Ñ
A¸&Ô
AÔAØ $Ñ'ˆäØ�‰Ñ0¨Ô0Ó0ÜÜØØôð ó    ÚmodelÚXÚis_trainc           	      ó†  — t        | j                  D �cg c]  } |||¬«      ‘Œ c}Ž \  }}t        |d   t        «      r$t	        | ||||«      \  }}t        t        |«      |fS t        |d   t        «      r$t        | ||||«      \  }}t        t        |«      |fS t        | ||||«      \  }	}t        t        |	«      |fS c c}w )N)r6   r   )
Úzipr   Ú
isinstanceÚlistÚ_list_forwardr   r   r   Ú_ragged_forwardÚ_array_forward)
r4   r5   r6   r)   ÚYsÚ	callbacksÚdata_lÚbackpropÚdata_rÚdata_as
             r#   r.   r.   8   sÃ   € ÜÀ5Ç<Á<ÖP¸%™% ¨HÖ5ÒPÐQ�M€Bˆ	Ü�"�Q‘%œÔÜ(¨°°2°yÀ(ÓKÑˆ�Ü”D˜&Ó! 8Ð+Ð+Ü	�B�q‘Eœ6Ô	"Ü*¨5°!°R¸ÀHÓMÑˆ�Ü”D˜&Ó! 8Ð+Ð+ä)¨%°°B¸	À8ÓLÑˆ�Ü”D˜&Ó! 8Ð+Ð+ùò Qs   ”B>r>   c                 óÆ   ‡ ‡‡— |D �cg c]  }|j                   d   ‘Œ c}Š‰ j                  j                  j                  |«      }dt        dt
        fˆˆ ˆfd„}||fS c c}w )Nr   Úd_outputr   c                 ó  •— ‰
j                   j                  | d d …d ‰d   …f   «      } ‰	d   |«      }‰d   }t        |d«      xs t        |d«      }t        |d«      xr. t        |j                  d«      xs t        |j                  d«      }t	        ‰	dd  ‰dd  «      D ]b  \  }}‰
j                   j                  | d d …|||z   …f   «      } ||«      }|r||z  }n!|r|xj                  |j                  z  c_        ||z  }Œd |S )Nr   Ú__add__Ú__iadd__Údatar   )ÚopsÚ	as_contigÚhasattrrI   r8   )rE   ÚdYÚdXÚstartÚadd_gradientsÚadd_gradients_dataÚbwdÚwidthÚgradientr?   r4   Úwidthss            €€€r#   rA   z _array_forward.<locals>.backpropK   s  ø€ Ø�Y‰Y× Ñ  ª!¨[¨v°a©y¨[¨.Ñ!9Ó:ˆØˆY�q‰\˜"ÓˆØ�q‘	ˆÜ  IÓ.ÒI´'¸"¸jÓ2IˆÜ$ R¨Ó0ò 
Ü�B—G‘G˜YÓ'ÒG¬7°2·7±7¸JÓ+Gð 	ô ˜i¨¨˜m¨V°A°B¨ZÓ8ò 	‰JˆC�Ø—‘×$Ñ$ Xªa°¸À¹Ð1FÐ.FÑ%GÓHˆBÙ˜2“wˆHÙØ�h‘‘Ù#Ø—’˜8Ÿ=™=Ñ(•Ø�U‰N‰Eð	ð ˆ	r3   )ÚshaperJ   ÚxpÚhstackr   r   )	r4   r5   r>   r?   r6   ÚYÚoutputrA   rU   s	   `  `    @r#   r=   r=   E   sZ   ú€ ð #%Ö%˜Qˆa�g‰g�a‹jÒ%€FØ�Y‰Y�\‰\× Ñ  Ó$€Fðœ7ð ¤s÷ ð$ �8ÐÐùò+ &s   ˆAc                 óB  ‡ ‡‡	— |D �cg c]  }|j                   j                  d   ‘Œ c}Š	t        ‰ j                  j                  j                  |D �cg c]  }|j                  ‘Œ c}«      |d   j                  «      }dt        dt        fˆˆ ˆ	fd„}||fS c c}w c c}w )Nr   r   rE   r   c           
      ó€  •— | j                   }t        ‰j                  j                  |d d …d ‰	d   …f   «      | j                  «      } ‰d   |«      }‰	d   }t        ‰dd  ‰	dd  «      D ]P  \  }}t        ‰j                  j                  |d d …|||z   …f   «      | j                  «      }| ||«      z  }||z  }ŒR |S )Nr   r   )rI   r   rJ   rK   Úlengthsr8   )
rE   Úd_arrayrM   rN   rO   rR   rS   r?   r4   rU   s
          €€€r#   rA   z!_ragged_forward.<locals>.backpropg   sÓ   ø€ Ø—-‘-ˆÜ�E—I‘I×'Ñ'¨²°;°V¸A±Y°;°Ñ(?Ó@À(×BRÑBRÓSˆØˆY�q‰\˜"ÓˆØ�q‘	ˆÜ˜i¨¨˜m¨V°A°B¨ZÓ8ò 	‰JˆC�ÜØ—	‘	×#Ñ# GªA¨u°u¸u±}Ð/DÐ,DÑ$EÓFÈ×HXÑHXóˆBð ‘#�b“'‰MˆBØ�U‰N‰Eð	ð ˆ	r3   )	ÚdataXdrV   r   rJ   rW   rX   rI   r]   r   )
r4   r5   r>   r?   r6   rY   ÚyrZ   rA   rU   s
   `  `     @r#   r<   r<   `   s€   ú€ ð *,Ö, Aˆa�h‰h�n‰n˜QÓÒ,€FÜ�E—I‘I—L‘L×'Ñ'¸Ö(<°A¨¯«Ò(<Ó=¸rÀ!¹u¿}¹}ÓM€Fðœ6ð ¤c÷ ð �8ÐÐùò! -ùÚ(<s   ˆ BÁBc                 óà  ‡ ‡‡	‡
— dt         t           dt        fˆˆ	ˆ ˆ
fd„}t        j	                  |D �cg c]  }t        |«      ‘Œ c}«      Š	|D �cg c])  }‰ j                  j                  j                  |d¬«      ‘Œ+ }}|D �cg c]  }|j                  d   ‘Œ c}Š
‰ j                  j                  j                  |«      }‰ j                  j                  |‰	«      |fS c c}w c c}w c c}w )NrE   r   c                 óÖ  •— ‰	j                   j                  j                  | d¬«      }‰	j                   j                  |d d …d ‰
d   …f   «      }‰	j                   j	                  |‰«      } ‰d   |«      }‰
d   }t        ‰dd  ‰
dd  «      D ]X  \  }}‰	j                   j                  |d d …|||z   …f   «      }‰	j                   j	                  |‰«      }| ||«      z  }||z  }ŒZ |S )Nr   ©Úaxisr   )rJ   rW   r2   rK   Ú	unflattenr8   )rE   Úd_out_arrayrM   rN   rO   rR   rS   r?   r]   r4   rU   s          €€€€r#   rA   z_list_forward.<locals>.backpropz   sô   ø€ Ø—i‘i—l‘l×.Ñ.¨x¸aÐ.Ó@ˆØ�Y‰Y× Ñ  ªQ°°&¸±)°¨^Ñ!<Ó=ˆà�Y‰Y× Ñ   WÓ-ˆØˆY�q‰\˜"ÓˆØ�q‘	ˆÜ˜i¨¨˜m¨V°A°B¨ZÓ8ò 	‰JˆC�Ø—‘×$Ñ$ [²°E¸EÀE¹MÐ4IÐ1IÑ%JÓKˆBØ—‘×$Ñ$ R¨Ó1ˆBØ‘#�b“'‰MˆBØ�U‰N‰Eð		ð
 ˆ	r3   r   rc   r   )r   r   r   Ú	NUMPY_OPSÚ	asarray1ir,   rJ   rW   r2   rV   rX   re   )r4   r5   r>   r?   r6   rA   ÚxrY   Ú	out_arrayr]   rU   s   `  `     @@r#   r;   r;   w   sÃ   û€ ðœ8¤GÑ,ð ´÷ ð ô ×!Ñ!°1Ö"5¨a¤3 q¥6Ò"5Ó6€GØ79Ö	:°!ˆ%�)‰)�,‰,×
"Ñ
" 1¨1Ð
"Õ
-Ð	:€BÐ	:Ø"$Ö%˜Qˆa�g‰g�a‹jÒ%€FØ—	‘	—‘×#Ñ# BÓ'€IØ�9‰9×Ñ˜y¨'Ó2°HÐ<Ð<ùò	 #6ùÚ	:ùÚ%s   ´C!Á.C&ÂC+NrY   c                 óô  — |�n| j                  d«      dur| j                  dt        |«      «       | j                  D ]1  }|j                  d«      dusŒ|j                  dt        |«      «       Œ3 | j                  D ]  }|j	                  ||¬«       Œ t        | j                  D �cg c]  }|j                  d«      ‘Œ c}«      r-| j                  dt        d„ | j                  D «       «      «       y y c c}w )Nr   F)r5   rY   r   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)r   N)Úget_dimr(   s     r#   r$   zinit.<locals>.<genexpr>›   s   è ø€ ÒN¸ §¡¨d× 3ÑNùs   ‚)r    Úset_dimr   r   Ú
initializer0   Úsum)r4   r5   rY   r)   s       r#   r*   r*   �   sÏ   € ð 	€}Ø�=‰=˜Ó eÑ+Ø�M‰M˜$¤	¨!£Ô-Ø—\‘\ò 	2ˆEØ�}‰}˜TÓ"¨%Ò/Ø—‘˜d¤I¨a£LÕ1ð	2ð —‘ò #ˆØ×Ñ˜1 ÐÕ"ð#ä
¨U¯\©\Ö: EˆE�M‰M˜$ÕÒ:Ô;Ø�‰�dœCÑNÀÇÁÔNÓNÕOð <ùÒ:s   Â(C5)NN)#Útypingr   r   r   r   r   r   r	   r
   r   r   Úbackendsr   Úconfigr   r4   r   Útypesr   r   r   Úutilr   r   rg   r   r   r   r2   Úboolr.   r=   r<   r;   r*   © r3   r#   ú<module>rx      s¶  ð÷÷ ÷ õ  Ý Ý ß /Ñ /Ý Ý á‹J€	ñ ˆe˜3Ô€Ùˆv˜U 7¨H°WÑ,=¸vÐ#EÑFÔG€ð €‡�Ð!Ó"ð˜ð  5¨¨j¨Ñ#9ò ó #ðð6
,�5˜˜d˜Ñ#ð 
,¨ð 
,°tð 
,ÀÀdÈHÀnÑ@Uó 
,ðØ��d�ÑðØ$(ðØ?Cðà
ˆ7�HÐÑóð6Ø��d�ÑðØ$(ðØ?Cðà
ˆ6�8ÐÑóð.=Ø��d�Ñð=Ø$(ð=Ø?Cð=à
ˆ8�GÑ˜hÐ&Ñ'ó=ð2 KOñPØ��d�ÑðPØ (¨¡ðPØ9AÀ$¹ðPà	ôPr3   