+
    UV-ju.  ã                   ór  € ^ RI HtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^RIHtHtHt ^RIHtHt ^RIHt  ! R R	]P*                  4      t ! R
 R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      tR# )é    )ÚAnyÚOptionalN)Úinitialize_rope)Ú	SwitchGLU)ÚLanguageModelOutputÚcreate_attention_maskÚscaled_dot_product_attention)ÚChunkedKVCacheÚKVCache©Ú
TextConfigc                   óT   a a€ ] tR t^t oV3R lV 3R lltRV3R lR lltRtVtV ;t# )Ú	Attentionc                ó&   <€ V ^8„  d   QhRS[ RS[/# ©é   ÚconfigÚ	layer_idx©r   Úint)ÚformatÚ__classdict__s   "€Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/llama4/language.pyÚ__annotate__ÚAttention.__annotate__   s   ø€ ÷ "ñ "™zð "±cñ "ó    c                óà  <€ \         SV `  4        VP                  pVP                  ;V n        pVP
                  ;V n        p\        V^,           ^,          ^ 8g  4      V n        VP                  V n	        VP                  V n
        VP                  V n        VP                  ;'       g    VP                  V,          ;V n        pVR,          V n        \        VR4      '       d   VP                  pMRp\         P"                  ! W4V,          VR7      V n        \         P"                  ! W5V,          VR7      V n        \         P"                  ! W5V,          VR7      V n        \         P"                  ! WF,          W7R7      V n        VP,                  ;'       d    V P                  V n        V P                  '       d6   \/        VVP0                  RVP2                  VP4                  R7      V n        R# R# )é   Úattention_biasF©ÚbiasT)ÚtraditionalÚscaling_configÚmax_position_embeddingsNg      à¿)ÚsuperÚ__init__Úhidden_sizeÚnum_attention_headsÚn_headsÚnum_key_value_headsÚ
n_kv_headsr   Úuse_ropeÚattn_temperature_tuningÚfloor_scaleÚ
attn_scaleÚhead_dimÚscaleÚhasattrr   ÚnnÚLinearÚq_projÚk_projÚv_projÚo_projÚuse_qk_normr   Ú
rope_thetaÚrope_scalingr$   Úrope)	Úselfr   r   Údimr)   r+   r0   r   Ú	__class__s	   &&&     €r   r&   ÚAttention.__init__   s{  ø€ Ü‰ÑÔà× Ñ ˆØ!'×!;Ñ!;Ð;ˆŒ�wØ'-×'AÑ'AÐAˆŒ˜*ä˜Y¨�]¨aÕ/°1Ñ4Ó5ˆŒØ'-×'EÑ'EˆÔ$Ø!×-Ñ-ˆÔØ ×+Ñ+ˆŒà#)§?¡?×#SÐ#S°f×6HÑ6HÈGÕ6SÐSˆŒ˜à˜t•^ˆŒ
Ü�6Ð+×,Ò,Ø#×2Ñ2‰Nà"ˆNä—i’i ¨xÕ%7¸nÔMˆŒÜ—i’i °(Õ%:ÀÔPˆŒÜ—i’i °(Õ%:ÀÔPˆŒÜ—i’i Õ 2°CÔMˆŒà!×-Ñ-×?Ð?°$·-±-ˆÔà�=�=ˆ=Ü'ØØ×!Ñ!Ø Ø%×2Ñ2Ø(.×(FÑ(FôˆDŽIñ r   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# ©r   ÚxÚmaskÚcacheÚreturn©ÚmxÚarrayr   r   )r   r   s   "€r   r   r   6   sH   ø€ ÷ :#ñ :#á�8‰8ð:#ñ ‘r—x‘xÕ ð:#ñ ™�}ð	:#ñ
 
�‰ñ:#r   c           	     ó   € VP                   w  rEpV P                  V4      V P                  V4      V P                  V4      r˜pVP	                  WEV P
                  R4      P                  ^ ^^^4      pVP	                  WEV P                  R4      P                  ^ ^^^4      pV	P	                  WEV P                  R4      P                  ^ ^^^4      p	Ve   VP                  p
M^ p
V P                  '       d%   V P                  WzR7      pV P                  WŠR7      pV P                  '       dE   \        P                  P                  VRRR7      p\        P                  P                  VRRR7      pV P                  '       Ed    V P                  '       gî   T
p\!        V\        P"                  4      '       d   VP%                  4       P'                  4       p\        P(                  ! \        P*                  ! \        P,                  ! V^,           Wµ,           ^,           4      V P.                  ,          4      R,           4      V P0                  ,          R,           pVR	,          pW|,          P3                  VP4                  4      pVe   VP7                  W‰4      w  r‰V P                  '       dZ   \!        V\        P"                  4      '       d:   VP                   R
,          pVP                   R,          V8w  d   VRV) R13,          p\9        WxW“V P:                  VR7      pVP                  ^ ^^^4      P	                  WER4      pV P=                  V4      # )r   N)Úoffsetg�íµ ÷Æ°>)ÚweightÚepsg      ð?.)r1   rD   éÿÿÿÿ©:NNNNéþÿÿÿ)Úshaper5   r6   r7   Úreshaper)   Ú	transposer+   rK   r,   r<   r9   rH   ÚfastÚrms_normr-   Ú
isinstancerI   ÚmaxÚitemÚlogÚfloorÚaranger.   r/   ÚastypeÚdtypeÚupdate_and_fetchr	   r1   r8   )r=   rC   rD   rE   ÚBÚLÚDÚqueriesÚkeysÚvaluesrK   Úoffset_scalarÚattn_scalesÚkey_lenÚoutputs   &&&&           r   Ú__call__ÚAttention.__call__6   sŸ  € ð —'‘'‰ˆˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�vˆà—/‘/ !¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜A $§/¡/°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ—‘  d§o¡o°rÓ:×DÑDÀQÈÈ1ÈaÓPˆàÒØ—\‘\‰FàˆFà�=�=ˆ=Ø—i‘i �iÓ7ˆGØ—9‘9˜T�9Ó1ˆDà××ÐÜ—g‘g×&Ñ& w°tÀÐ&ÓFˆGÜ—7‘7×#Ñ# D°¸4Ð#Ó@ˆDà×'×'Ñ'°··°à"ˆMÜ˜-¬¯©×2Ò2Ø -× 1Ñ 1Ó 3× 8Ñ 8Ó :�ä—’Ü—H’HÜŸ	š	 -°!Õ"3°]Õ5FÈÕ5JÓKØ×*Ñ*õ+óð õ	óð —/‘/õ"ð õð ð & gÕ.ˆKØÕ,×4Ñ4°W·]±]ÓCˆGàÒØ ×1Ñ1°$Ó?‰LˆDà�=�=ˆ=œZ¨¬b¯h©h×7Ò7Ø—j‘j •nˆGØ�z‰z˜"�~ Ô(Ø˜C ' ¡˜NÕ+�ä-Ø˜6°·
±
Àô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�{‰{˜6Ó"Ð"r   )r/   r-   r.   r0   r6   r)   r+   r8   r5   r<   r1   r9   r,   r7   ©NN©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r&   ri   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r?   r   s   @@r   r   r      s   ù‡ € ÷"ó "÷H:#÷ :#ò :#r   r   c                   óT   a a€ ] tR t^st oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚMLPc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r   Úintermediate_sizer   )r   r   s   "€r   r   ÚMLP.__annotate__t   s   ø€ ÷ >ñ >™zð >¹cñ >r   c                ó  <€ \         SV `  4        VP                  pT;'       g    VP                  p\        P
                  ! W4R R7      V n        \        P
                  ! WCR R7      V n        \        P
                  ! W4R R7      V n        R# ©Fr    N)	r%   r&   r'   rx   r3   r4   Ú	gate_projÚ	down_projÚup_proj)r=   r   rx   r>   Ú
hidden_dimr?   s   &&&  €r   r&   ÚMLP.__init__t   sb   ø€ Ü‰ÑÔà× Ñ ˆØ&×BÐB¨&×*BÑ*Bˆ
äŸš 3¸Ô?ˆŒÜŸš :¸Ô?ˆŒÜ—y’y °uÔ=ˆŽr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   rF   ©rH   rI   )r   r   s   "€r   r   ry   ~   s   ø€ ÷ Lñ L™RŸX™Xñ Lr   c                ó–   € V P                  \        P                  ! V P                  V4      4      V P	                  V4      ,          4      # ©N)r}   r3   Úsilur|   r~   )r=   rC   s   &&r   ri   ÚMLP.__call__~   s0   € Ø�~‰~œbŸgšg d§n¡n°QÓ&7Ó8¸4¿<¹<È»?ÕJÓKÐKr   )r}   r|   r~   r…   rl   rt   s   @@r   rv   rv   s   s!   ù‡ € ÷>õ >÷L÷ Lð Lr   rv   c                   óD   a a€ ] tR t^‚t oV 3R ltV3R lR ltRtVtV ;t# )ÚMoEc                óL  <€ \         SV `  4        VP                  V n        VP                  V n        \        VP                  VP                  V P
                  4      V n	        \        P                  ! VP                  VP                  R R7      V n        \        V4      V n        R# r{   )r%   r&   Únum_experts_per_tokÚtop_kÚnum_local_expertsÚnum_expertsr   r'   rx   Úexpertsr3   r4   Úrouterrv   Úshared_expert©r=   r   r?   s   &&€r   r&   ÚMoE.__init__ƒ   s�   ø€ Ü‰ÑÔØ×/Ñ/ˆŒ
Ø!×3Ñ3ˆÔÜ Ø×Ñ × 8Ñ 8¸$×:JÑ:Jó
ˆŒô —i’iØ×Ñ × 8Ñ 8¸uô
ˆŒô ! ›[ˆÖr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r‚   rƒ   )r   r   s   "€r   r   ÚMoE.__annotate__�   s   ø€ ÷ +ñ +™RŸX™Xñ +r   c                óØ  € V P                  V4      pV P                  p\        P                  ! V) V^,
          RR7      RRV13,          p\        P                  ! W$RR7      p\        P
                  ! VP                  \        P                  4      4      P                  VP                  4      pV P                  W,          V4      P                  ^4      pW`P                  V4      ,           # )r   )ÚkthÚaxis.N©r˜   rN   )r�   rŒ   rH   ÚargpartitionÚtake_along_axisÚsigmoidr\   Úfloat32r]   r�   Úsqueezer‘   )r=   rC   ÚlogitsÚkÚindicesÚscoresÚouts   &&     r   ri   ÚMoE.__call__�   sª   € Ø—‘˜Q“ˆØ�J‰JˆÜ—/’/ 6 '¨q°1­u¸2Ô>¸sÀBÀQÀB¸wÕGˆÜ×#Ò# F¸"Ô=ˆÜ—’˜FŸM™M¬"¯*©*Ó5Ó6×=Ñ=¸a¿g¹gÓFˆà�l‰l˜1�: wÓ/×7Ñ7¸Ó:ˆØ×'Ñ'¨Ó*Õ*Ð*r   )r�   rŽ   r�   r‘   rŒ   rl   rt   s   @@r   r‰   r‰   ‚   s   ù‡ € õ
)÷+÷ +ð +r   r‰   c                   óT   a a€ ] tR t^št oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚTransformerBlockc                ó&   <€ V ^8„  d   QhRS[ RS[/# r   r   )r   r   s   "€r   r   ÚTransformerBlock.__annotate__›   s   ø€ ÷ Cñ C™zð C±cñ Cr   c                ó¬  <€ \         SV `  4        VP                  V n        VP                  V n        \	        W4      V n        \        V^,           ^,          ^ 8g  4      V n        W!P                  ,          VP                  ^,
          8H  V n	        V P                  '       d   \        V4      V n        M\        WP                  4      V n        \        P                  ! VP                  VP                   R7      V n        \        P                  ! VP                  VP                   R7      V n        Wn        \        V^,           ^,          ^ 8g  4      V n        R# )r   ©rM   N)r%   r&   r(   r'   r   Ú	self_attnr   Úuse_chunked_attentionÚinterleave_moe_layer_stepÚis_moe_layerr‰   Úfeed_forwardrv   Úintermediate_size_mlpr3   ÚRMSNormÚrms_norm_epsÚinput_layernormÚpost_attention_layernormr   )r=   r   r   r?   s   &&&€r   r&   ÚTransformerBlock.__init__›   s  ø€ Ü‰ÑÔØ#)×#=Ñ#=ˆÔ Ø!×-Ñ-ˆÔÜ" 6Ó5ˆŒÜ%(¨)°a­-¸1Õ)<ÀÑ)AÓ%BˆÔ"Ø&×)IÑ)IÕIØ×,Ñ,¨qÕ0ñ
ˆÔð ××ÐÜ # F£ˆDÕä # F×,HÑ,HÓ IˆDÔä!Ÿzšz¨&×*<Ñ*<À&×BUÑBUÔVˆÔÜ(*¯
ª
Ø×Ñ F×$7Ñ$7ô)
ˆÔ%ð Œä%(¨)°a­-¸1Õ)<ÀÑ)AÓ%BˆÖ"r   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# rB   rG   )r   r   s   "€r   r   r¨   ±   sH   ø€ ÷ ñ á�8‰8ðñ ‘r—x‘xÕ ðñ ™�}ð	ñ
 
�‰ñr   c                ó¨   € V P                  V P                  V4      W#4      pW,           pV P                  V P                  V4      4      pWT,           pV# r…   )r«   r³   r¯   r´   )r=   rC   rD   rE   ÚrÚhr£   s   &&&&   r   ri   ÚTransformerBlock.__call__±   sM   € ð �N‰N˜4×/Ñ/°Ó2°DÓ@ˆØ�EˆØ×Ñ˜d×;Ñ;¸AÓ>Ó?ˆØ�eˆØˆ
r   )	r   r¯   r'   r³   r®   r(   r´   r«   r¬   rk   rl   rt   s   @@r   r¦   r¦   š   s    ù‡ € ÷Có C÷,÷ ò r   r¦   c                   ój   a a€ ] tR t^¿t oV3R lV 3R lltRV3R lR lltR	V3R lR lltRtVtV ;t	# )
Ú
LlamaModelc                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r   r   s   "€r   r   ÚLlamaModel.__annotate__À   s   ø€ ÷ 
Lñ 
L™zñ 
Lr   c                óÌ  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        V P                  ^ 8”  g   Q h\
        P                  ! VP                  VP                  4      V n        \        VP                  4       Uu. uF  p\        W4      NK  	  upV n        \
        P                  ! VP                  VP                  R7      V n        R# u upi )r   rª   N)r%   r&   r   Ú
vocab_sizeÚnum_hidden_layersr3   Ú	Embeddingr'   Úembed_tokensÚranger¦   Úlayersr±   r²   Únorm)r=   r   Úir?   s   && €r   r&   ÚLlamaModel.__init__À   s±   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒØ!'×!9Ñ!9ˆÔØ�‰ Ô"Ð"Ð"ÜŸLšL¨×):Ñ):¸F×<NÑ<NÓOˆÔä16°v×7OÑ7OÔ1Pó
Ù1P¨AÔ˜VÖ'Ñ1Pñ
ˆŒô —J’J˜v×1Ñ1°v×7JÑ7JÔKˆŽ	ùò
s   ÂC!c          
      óL   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[P                  /# )r   Úseq_lenÚattention_chunk_sizeÚstartrK   rF   )r   rH   rI   )r   r   s   "€r   r   r¿   Ì   s9   ø€ ÷ ñ ÙðÙ25ðÙ>AðÙORðá	�‰ñr   c                óî   € WA,           p\         P                  ! W54      p\         P                  ! WE4      R,          p\         P                  ! Wb,          Wr,          ,
          4      pWg8*  p	V^ 8H  V	,          p
V
# )u’  
Generate the following:

'What'      :  0 â–  â¬š â¬š â¬š â¬š â¬š    |
'â–�is'       :  1 â–  â–  â¬š â¬š â¬š â¬š     |
'â–�ch'       :  2 â–  â–  â–  â¬š â¬š â¬š     |
'unked'     :  3 â¬š â¬š â¬š â–  â¬š â¬š    |
'â–�attention':  4 â¬š â¬š â¬š â–  â–  â¬š    |
'?'         :  5 â¬š â¬š â¬š â–  â–  â–      |

If the chunk size is 3.
This can just be appplied over the already created attention mask
rO   )rH   r[   Úabs)r=   rË   rÌ   rÍ   rK   ÚendÚlindsÚrindsÚ	block_posÚ	token_posrD   s   &&&&&      r   Úcreate_chunked_attention_maskÚ(LlamaModel.create_chunked_attention_maskÌ   se   € ð" ÕˆÜ—	’	˜%Ó%ˆÜ—	’	˜&Ó& wÕ/ˆÜ—F’FØÕ*¨uÕ/LÕMó
ˆ	ð ‘Nˆ	Ø˜Q‘ 9Õ-ˆØˆr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Ú	input_idsÚinput_embedsrD   rƒ   )r   r   s   "€r   r   r¿   ç   s5   ø€ ÷ ,ñ ,á—8‘8ð,ñ —h‘hð,ñ �h‰hñ	,r   c                óH  € Vf   V P                  V4      pMTpVf   \        WT4      pVe¶   \        V4       F@  w  rgV^,           ^,          ^ 8w  g   K  \        VR4      '       g   K0  VP	                  4        KB  	  \        V^ ,          R^ 4      pV^ ,          P                  p	\        V	\        P                  4      '       d   V	P                  4       P                  4       p	M^ p^ p	V P                  VP                  ^,          V P                  P                  W‰4      p
Vf   R .\!        V P"                  4      ,          p\        \%        V P"                  V4      4       F2  w  pw  r·V^,           ^,          ^ 8g  pV'       d   T
pMTpV! W]VR7      pK4  	  V P'                  V4      # )NÚmaybe_trim_frontÚstart_position)rE   )rÄ   r   Ú	enumerater2   rÛ   ÚgetattrrK   rV   rH   rI   rW   rX   rÕ   rQ   r   rÌ   ÚlenrÆ   ÚziprÇ   )r=   rØ   rÙ   rD   rE   r¹   ÚidxÚcrÍ   rK   Ú
chunk_maskÚlayerr¬   Ú
local_masks   &&&&&         r   ri   ÚLlamaModel.__call__ç   sd  € ð ÒØ×!Ñ! )Ó,‰AàˆAàŠ<Ü(¨Ó2ˆDàÒÜ# EÖ*‘�Ø˜!•G˜q•= AÖ%¬'°!Ð5G×*HÔ*HØ×&Ñ&Ö(ñ +ô ˜E !�HÐ&6¸Ó:ˆEØ˜1•X—_‘_ˆFä˜&¤"§(¡(×+Ò+ØŸ™›×*Ñ*Ó,�øàˆEØˆFð ×7Ñ7Ø�G‰G�A�J˜Ÿ™×8Ñ8¸%ó
ˆ
ð Š=Ø�FœS §¡Ó-Õ-ˆEä(¬¨T¯[©[¸%Ó)@ÖA‰OˆC‘�%Ø%(¨1¥W°¥M°QÑ$6Ð!ß$Ø'‘
à!�
Ù�a¨1Ô-ŠAñ  Bð �y‰y˜‹|Ðr   )r   rÄ   rÆ   rÇ   rÂ   rÁ   )r   r   ©NNNN)
rm   rn   ro   rp   r&   rÕ   ri   rq   rr   rs   rt   s   @@r   r¼   r¼   ¿   s*   ù‡ € ÷
Ló 
L÷ò ÷6,÷ ,ò ,r   r¼   c                   ó�   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltR t]R 4       t]R 4       t	]R	 4       t
R
 tRtVtV ;t# )ÚLanguageModeli  c                ó    <€ V ^8„  d   QhRS[ /# r¾   r   )r   r   s   "€r   r   ÚLanguageModel.__annotate__  s   ø€ ÷ 
ñ 
™zñ 
r   c                ó  <€ \         SV `  4        Wn        VP                  V n        \	        V P                  4      V n        \        P                  ! V P                  P                  V P                  P                  R R7      V n
        R# r{   )r%   r&   r   Ú
model_typer¼   Úmodelr3   r4   r'   rÁ   Úlm_headr’   s   &&€r   r&   ÚLanguageModel.__init__  s[   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒÜ §¡Ó,ˆŒ
Ü—y’yØ�K‰K×#Ñ# T§[¡[×%;Ñ%;À%ô
ˆŽr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   ÚinputsÚinputs_embedsrD   rƒ   )r   r   s   "€r   r   rë      s5   ø€ ÷ /ñ /á—‘ð/ñ —x‘xð/ñ �h‰hñ	/r   c                óf   € V P                  VVVVR 7      pV P                  V4      p\        VR7      # ))rØ   rÙ   rD   rE   )rŸ   )rî   rï   r   )r=   rò   ró   rD   rE   Úkwargsr£   s   &&&&&, r   ri   ÚLanguageModel.__call__   s>   € ð �j‰jØØ&ØØð	 ó 
ˆð �l‰l˜3ÓˆÜ"¨#Ô.Ð.r   c                óÆ  € \        V P                  P                  4       F½  pR V R2pV R2V9   dn   VP                  V R24      pV R2pV R2p\        P
                  ! V^RR7      w  rx\        P                  ! V^^4      W&   \        P                  ! V^^4      W&   V R2V9   g   KŒ  VP                  V R24      p	\        P                  ! V	^^4      W R2&   K¿  	  V# )	zlanguage_model.model.layers.z.feed_forward.expertsz.gate_up_projz.gate_proj.weightz.up_proj.weightr™   z
.down_projz.down_proj.weightrN   )rÅ   r   rÂ   ÚpoprH   ÚsplitÚswapaxes)
r=   ÚweightsÚlÚprefixÚvÚgate_kÚup_kr|   r~   r}   s
   &&        r   ÚsanitizeÚLanguageModel.sanitize1  sí   € ä�t—{‘{×4Ñ4Ö5ˆAØ3°A°3Ð6KÐLˆFØ�˜Ð'¨7Ô2Ø—K‘K 6 (¨-Ð 8Ó9�Ø"˜8Ð#4Ð5�Ø ˜ Ð1�Ü%'§X¢X¨a°¸Ô%<Ñ"�	Ü"$§+¢+¨i¸¸AÓ">�‘Ü "§¢¨G°Q¸Ó :�‘Ø�˜Ð$¨Ö/Ø#ŸK™K¨6¨(°*Ð(=Ó>�	Ü8:¿ºÀIÈqÐRSÓ8T�˜(Ð"3Ð4Ó5ñ 6ð ˆr   c                ó.   € V P                   P                  # r…   )rî   rÆ   ©r=   s   &r   rÆ   ÚLanguageModel.layersA  s   € à�z‰z× Ñ Ð r   c                ó.   € V P                   P                  # r…   )r   r*   r  s   &r   r+   ÚLanguageModel.n_kv_headsE  s   € à�{‰{×.Ñ.Ð.r   c                óÈ   € V P                   P                  '       d   V P                   P                  # V P                   P                  V P                   P                  ,          # r…   )r   r0   r'   r(   r  s   &r   r0   ÚLanguageModel.head_dimI  sK   € ð �{‰{×#×#Ð#ð �K‰K× Ñ ð	
ð —‘×(Ñ(¨D¯K©K×,KÑ,KÕKð	
r   c                ó  € . p\        V P                  P                  4       Fa  pV^,           ^,          ^ 8w  d1   VP                  \	        V P                  P
                  4      4       KH  VP                  \        4       4       Kc  	  V# )r   )rÅ   r   rÂ   Úappendr
   rÌ   r   )r=   ÚcachesrÈ   s   &  r   Ú
make_cacheÚLanguageModel.make_cacheQ  s`   € ØˆÜ�t—{‘{×4Ñ4Ö5ˆAØ�A•˜�{˜aÔØ—‘œn¨T¯[©[×-MÑ-MÓNÖOà—‘œg›iÖ(ñ	 6ð
 ˆr   )r   rï   rî   rí   rç   )rm   rn   ro   rp   r&   ri   r  ÚpropertyrÆ   r+   r0   r  rq   rr   rs   rt   s   @@r   ré   ré     sd   ù‡ € ÷
ó 
÷/ò /ò"ð  ñ!ó ð!ð ñ/ó ð/ð ñ
ó ð
÷ò r   ré   )Útypingr   r   Úmlx.coreÚcorerH   Úmlx.nnr3   Úmlx_lm.models.rope_utilsr   Úmlx_lm.models.switch_layersr   Úbaser   r   r	   rE   r
   r   r   r   ÚModuler   rv   r‰   r¦   r¼   ré   © r   r   Ú<module>r     s‘   ðß  å Ý Ý 4Ý 1÷ñ ÷
 ,Ý ô_#�—	‘	ô _#ôDLˆ"�)‰)ô Lô+ˆ"�)‰)ô +ô0"�r—y‘yô "ôJT�—‘ô TônB�B—I‘Iö Br   