+
    UV-j8  ã                   ó2  € ^ RI Ht ^ RIHt ^ RI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# )é    )ÚOptionalN©ÚVisionConfigc                   ó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[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Úq/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/moondream3/vision.pyÚ__annotate__ÚAttention.__annotate__
   s   ø€ ÷ 

ñ 

™|ñ 

ó    c                ó¸  <€ \         SV `  4        VP                  V n        VP                  VP                  ,          V n        V P
                  R,          V n        \        P                  ! VP                  ^VP                  ,          VP                  R7      V n
        \        P                  ! VP                  VP                  VP                  R7      V n        R# )g      à?©ÚbiasNg      à¿)ÚsuperÚ__init__Únum_attention_headsÚ	num_headsÚhidden_sizeÚhead_dimÚscaleÚnnÚLinearÚattention_biasÚqkvÚproj©Úselfr   Ú	__class__s   &&€r   r   ÚAttention.__init__
   sœ   ø€ Ü‰ÑÔØ×3Ñ3ˆŒØ×*Ñ*¨f×.HÑ.HÕHˆŒØ—]‘] DÕ(ˆŒ
Ü—9’9Ø×Ñ  F×$6Ñ$6Õ 6¸V×=RÑ=Rô
ˆŒô —I’IØ×Ñ × 2Ñ 2¸×9NÑ9Nô
ˆŽ	r   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# ©r
   ÚxÚmaskÚreturn©ÚmxÚarrayr   )r   r   s   "€r   r   r      s3   ø€ ÷ !ñ !™"Ÿ(™(ð !©(±2·8±8Õ*<ð !ÉÏÉñ !r   c                ó’  € VP                   w  r4pV P                  V4      p\        P                  ! V^RR7      w  rxp	VP	                  W4V P
                  V P                  4      P                  ^ ^^^4      pVP	                  W4V P
                  V P                  4      P                  ^ ^^^4      pV	P	                  W4V P
                  V P                  4      P                  ^ ^^^4      p	\        P                  P                  WxW�P                  VR7      p
V
P                  ^ ^^^4      P	                  W4R4      p
V P                  V
4      # )é   ©Úaxis)r   r(   éÿÿÿÿ)Úshaper   r+   ÚsplitÚreshaper   r   Ú	transposeÚfastÚscaled_dot_product_attentionr   r    )r"   r'   r(   ÚBÚLÚ_r   ÚqÚkÚvÚoutputs   &&&        r   Ú__call__ÚAttention.__call__   s  € Ø—'‘'‰ˆˆaØ�h‰h�q‹kˆÜ—(’(˜3 ¨Ô+‰ˆˆaà�I‰I�a˜DŸN™N¨D¯M©MÓ:×DÑDÀQÈÈ1ÈaÓPˆØ�I‰I�a˜DŸN™N¨D¯M©MÓ:×DÑDÀQÈÈ1ÈaÓPˆØ�I‰I�a˜DŸN™N¨D¯M©MÓ:×DÑDÀQÈÈ1ÈaÓPˆä—‘×5Ñ5Ø�!Ÿ:™:¨Dð 6ó 
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�y‰y˜Ó Ð r   )r   r   r    r   r   ©N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r?   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r#   r   s   @@r   r   r   	   s   ù‡ € ÷

ó 

÷!÷ !ò !r   r   c                   óP   a a€ ] tR t^&t oV3R lV 3R 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	   r   )r   r   s   "€r   r   ÚMLP.__annotate__'   ó   ø€ ÷ *ñ *™|ñ *r   c                ó$  <€ \         SV `  4        \        P                  ! VP                  VP
                  R R7      V n        \        P                  ! VP
                  VP                  R R7      V n        \        P                  ! RR7      V n	        R# )Tr   Útanh©ÚapproxN)
r   r   r   r   r   Úintermediate_sizeÚfc1Úfc2ÚGELUÚactr!   s   &&€r   r   ÚMLP.__init__'   s`   ø€ Ü‰ÑÔÜ—9’9˜V×/Ñ/°×1IÑ1IÐPTÔUˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÐPTÔUˆŒÜ—7’7 &Ô)ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r
   r'   r)   ©r+   r,   )r   r   s   "€r   r   rN   -   ó#   ø€ ÷ /ñ /™"Ÿ(™(ð /¡r§x¡xñ /r   c                ó`   € V P                  V P                  V P                  V4      4      4      # rA   ©rV   rX   rU   ©r"   r'   s   &&r   r?   ÚMLP.__call__-   ó"   € Ø�x‰x˜Ÿ™ §¡¨!£Ó-Ó.Ð.r   ©rX   rU   rV   rB   rJ   s   @@r   rL   rL   &   ó   ù‡ € ÷*ó *÷/÷ /ð /r   rL   c                   óT   a a€ ] tR t^1t 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# )ÚEncoderBlockc                ó    <€ V ^8„  d   QhRS[ /# r	   r   )r   r   s   "€r   r   ÚEncoderBlock.__annotate__2   s   ø€ ÷ ñ ™|ñ r   c                ó(  <€ \         SV `  4        \        P                  ! VP                  VP
                  R 7      V n        \        V4      V n        \        P                  ! VP                  VP
                  R 7      V n	        \        V4      V n        R# )©ÚepsN)r   r   r   Ú	LayerNormr   Úlayer_norm_epsÚln1r   ÚattnÚln2rL   Úmlpr!   s   &&€r   r   ÚEncoderBlock.__init__2   sa   ø€ Ü‰ÑÔÜ—<’< × 2Ñ 2¸×8MÑ8MÔNˆŒÜ˜fÓ%ˆŒ	Ü—<’< × 2Ñ 2¸×8MÑ8MÔNˆŒÜ�v“;ˆŽr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# r&   r*   )r   r   s   "€r   r   rh   9   s3   ø€ ÷ ñ ™"Ÿ(™(ð ©(±2·8±8Õ*<ð ÉÏÉñ r   c                ó    € WP                  V P                  V4      V4      ,           pWP                  V P                  V4      4      ,           pV# rA   )ro   rn   rq   rp   )r"   r'   r(   s   &&&r   r?   ÚEncoderBlock.__call__9   s;   € Ø—	‘	˜$Ÿ(™( 1›+ tÓ,Õ,ˆØ—‘˜Ÿ™ !›Ó%Õ%ˆØˆr   )ro   rn   rp   rq   rA   rB   rJ   s   @@r   rf   rf   1   s   ù‡ € ÷ó ÷÷ ò r   rf   c                   ób   a a€ ] tR t^?t oV3R lV 3R lltV3R lR ltV3R lR ltRtVtV ;t	# )ÚVisionEncoderc                ó    <€ V ^8„  d   QhRS[ /# r	   r   )r   r   s   "€r   r   ÚVisionEncoder.__annotate__@   s   ø€ ÷ 	Sñ 	S™|ñ 	Sr   c                óB  <€ \         SV `  4        Wn        VP                  VP                  ,          VP                  ,          pVP
                  VP                  ,          ^,          p\        P                  ! W!P                  RR7      V n	        \        P                  ! ^W1P                  34      V n        \        VP                  4       Uu. uF  p\        V4      NK  	  upV n        \        P"                  ! VP                  VP$                  R7      V n        R# u upi )r
   Tr   rj   N)r   r   r   Ú
patch_sizeÚin_channelsÚ	crop_sizer   r   r   Ú	patch_embr+   ÚzerosÚpos_embÚrangeÚnum_hidden_layersrf   Úblocksrl   rm   Úpost_ln)r"   r   Ú	patch_dimÚnum_patchesr:   r#   s   &&   €r   r   ÚVisionEncoder.__init__@   sÎ   ø€ Ü‰ÑÔØŒØ×%Ñ%¨×(9Ñ(9Õ9¸F×<NÑ<NÕNˆ	Ø×'Ñ'¨6×+<Ñ+<Õ<ÀÕBˆäŸš 9×.@Ñ.@ÀtÔLˆŒÜ—x’x  K×1CÑ1CÐ DÓEˆŒÜ5:¸6×;SÑ;SÔ5TÓUÑ5T°”| FÖ+Ñ5TÑUˆŒÜ—|’| F×$6Ñ$6¸F×<QÑ<QÔRˆŽùò Vs   ÃDc                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r[   r\   )r   r   s   "€r   r   ry   K   s#   ø€ ÷ ñ ™2Ÿ8™8ð ©¯©ñ r   c                ó  € VP                   w  r#rEV P                  P                  pW6,          pWF,          pVP                  W'WhWe4      pVP	                  ^ ^^^^^4      pVP                  W'V,          WV,          V,          4      pV# )r   )r2   r   r{   r4   r5   )	r"   r'   r8   ÚHÚWÚCÚPÚpHÚpWs	   &&       r   Ú	_patchifyÚVisionEncoder._patchifyK   su   € Ø—W‘W‰
ˆˆaØ�K‰K×"Ñ"ˆØ�VˆØ�VˆØ�I‰I�a˜Q AÓ)ˆØ�K‰K˜˜1˜a  A qÓ)ˆØ�I‰I�a˜b� !¥%¨!¥)Ó,ˆØˆr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r[   r\   )r   r   s   "€r   r   ry   U   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óÆ   € V P                  V4      pV P                  V4      pWP                  ,           pV P                   F  pV! V4      pK  	  V P	                  V4      pV# rA   )r�   r~   r€   rƒ   r„   )r"   r'   Úblocks   && r   r?   ÚVisionEncoder.__call__U   sS   € Ø�N‰N˜1ÓˆØ�N‰N˜1ÓˆØ—‘ÕˆØ—[”[ˆEÙ�a“ŠAñ !à�L‰L˜‹OˆØˆr   )rƒ   r   r~   r€   r„   )
rC   rD   rE   rF   r   r�   r?   rG   rH   rI   rJ   s   @@r   rw   rw   ?   s*   ù‡ € ÷	Só 	S÷ð ÷÷ ð r   rw   c                   óP   a a€ ] tR t^_t oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚVisionProjectionc                ó    <€ V ^8„  d   QhRS[ /# r	   r   )r   r   s   "€r   r   ÚVisionProjection.__annotate__`   rO   r   c                ó2  <€ \         SV `  4        \        P                  ! ^VP                  ,          VP
                  RR7      V n        \        P                  ! VP
                  VP                  RR7      V n        \        P                  ! RR7      V n
        R# )r
   Tr   rQ   rR   N)r   r   r   r   r   Úproj_inner_dimrU   Úproj_out_dimrV   rW   rX   r!   s   &&€r   r   ÚVisionProjection.__init__`   sd   ø€ Ü‰ÑÔÜ—9’9˜Q ×!3Ñ!3Õ3°V×5JÑ5JÐQUÔVˆŒÜ—9’9˜V×2Ñ2°F×4GÑ4GÈdÔSˆŒÜ—7’7 &Ô)ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r[   r\   )r   r   s   "€r   r   r™   f   r]   r   c                ó`   € V P                  V P                  V P                  V4      4      4      # rA   r_   r`   s   &&r   r?   ÚVisionProjection.__call__f   rb   r   rc   rB   rJ   s   @@r   r—   r—   _   rd   r   r—   c                   óf   a a€ ] tR t^jt oV3R lV 3R lltV3R lR ltRV3R lR lltRtVtV ;t	# )	ÚVisionModelc                ó    <€ V ^8„  d   QhRS[ /# r	   r   )r   r   s   "€r   r   ÚVisionModel.__annotate__k   s   ø€ ÷ 1ñ 1™|ñ 1r   c                óp   <€ \         SV `  4        Wn        \        V4      V n        \        V4      V n        R # rA   )r   r   r   rw   Úencoderr—   Úproj_mlpr!   s   &&€r   r   ÚVisionModel.__init__k   s+   ø€ Ü‰ÑÔØŒÜ$ VÓ,ˆŒÜ(¨Ó0ˆŽr   c                ó@   <€ V ^8„  d   QhRS[ RS[RS[P                  /# )r
   Úlocal_featuresÚlayoutr)   )ÚlistÚtupler+   r,   )r   r   s   "€r   r   r¤   q   s)   ø€ ÷ )%ñ )%Ù"ð)%Ù,1ð)%á	�‰ñ)%r   c                óü  € Vw  r4V P                   P                  V P                   P                  ,          pV P                   P                  p. p^ p\	        V4       FÇ  p	. p
\	        V4       FŒ  pW,          pVP                  WUR4      pV	^ 8”  d   TM^ pYYV^,
          8  d   TM^ ,
          pV^ 8”  d   TM^ pY[V^,
          8  d   TM^ ,
          pWÍV1VV1R3,          pV
P                  V4       V^,          pKŽ  	  VP                  \        P                  ! V
^R7      4       KÉ  	  \        P                  ! V^ R7      pVP                  w  pppVV,          pVV,          p\        P                  ! WUV3VP                  R7      p\	        V4       FÙ  p\        \        VV,          4      4      p\        \        V^,           V,          4      4      p\        VV^,           4      p\	        V4       Fw  p\        \        VV,          4      4      p\        \        V^,           V,          4      4      p\        VV^,           4      pVVV1VV13,          P                  RR7      VVV3&   Ky  	  KÛ  	  VP                  RV4      # )r   :NNNr/   )Údtyper1   )r   é   )r   r}   r{   Úoverlap_marginr�   r4   Úappendr+   Úconcatenater2   r   r¯   ÚintÚroundÚmaxÚmean)r"   rª   r«   ÚrowsÚcolsÚ	grid_sizeÚmarginÚ	crop_rowsÚidxÚrÚrow_featuresÚcÚfeatÚtopÚbottomÚleftÚrightÚ	full_gridrŠ   r‹   ÚDÚpool_hÚpool_wÚpooledÚiÚh_startÚh_endÚjÚw_startÚw_ends   &&&                           r   Ú_reconstruct_local_featuresÚ'VisionModel._reconstruct_local_featuresq   s'  € ð ‰
ˆØ—K‘K×)Ñ)¨T¯[©[×-CÑ-CÕCˆ	Ø—‘×+Ñ+ˆàˆ	ØˆÜ�t–ˆAØˆLÜ˜4–[�Ø%Õ*�Ø—|‘| I¸"Ó=�à ! A¤‘f¨1�Ø"°D¸1µH´¡fÀ!ÕD�Ø!" Q¤‘v¨A�Ø!°4¸!µ8¬|¡VÀÕC�Ø ˜J¨¨U¨
°AÐ5Õ6�Ø×#Ñ# DÔ)Ø�q•’ñ !ð ×ÑœRŸ^š^¨L¸qÔAÖBñ ô —N’N 9°1Ô5ˆ	à—/‘/‰ˆˆ1ˆaØ�Y•ˆØ�Y•ˆä—’˜9°Ð3¸9¿?¹?ÔKˆÜ�yÖ!ˆAÜœ%  F¥
Ó+Ó,ˆGÜœ˜q 1�u¨Õ.Ó/Ó0ˆEÜ˜˜w¨�{Ó+ˆEÜ˜9Ö%�Üœe A¨¥JÓ/Ó0�ÜœE 1 q¥5¨FÕ"2Ó3Ó4�Ü˜E 7¨Q¥;Ó/�Ø(¨°¨¸À¸Ð)EÕF×KÑKÐQWÐKÓX��q˜!�t“ó	 &ñ	 "ð �~‰~˜b !Ó$Ð$r   c                óz   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          RS[ P                  /# )r
   Úpixel_valuesÚ	num_cropsÚcrop_layoutsr)   )r+   r,   r   r¬   )r   r   s   "€r   r   r¤   œ   sC   ø€ ÷ (ñ (á—h‘hð(ñ ™D•>ð(ñ ™t•nð	(ñ
 
�‰ñ(r   c                ó:  € V P                  V4      pVf-   Tp\        P                  ! WU.RR7      pV P                  V4      # . p^ p\	        V4       F­  w  ršWH,          pV
^8”  dU   \        ^V
4       Uu. uF  q´W‹,           ,          NK  	  ppV'       d	   W9,          M
^V
^,
          3pV P                  WÍ4      pMTp\        P                  ! W^.RR7      pV P                  V4      pVP                  V4       WŠ,          pK¯  	  \        P                  ! V4      # u upi )Nr/   r1   )	r¦   r+   r³   r§   Ú	enumerater�   rÑ   r²   Ústack)r"   rÔ   rÕ   rÖ   Úall_featuresÚglobal_featsÚcombinedÚbatch_featuresÚcrop_idxrË   ÚncrÎ   Úlocal_featsr«   ÚreconstructedÚ	projecteds   &&&&            r   r?   ÚVisionModel.__call__œ   s   € ð —|‘| LÓ1ˆàÒØ'ˆLÜ—~’~ |Ð&BÈÔLˆHØ—=‘= Ó*Ð*àˆØˆÜ˜yÖ)‰EˆAØ'Õ1ˆLà�AŒvÜCHÈÈBÄ<ÓPÁ<¸a¨H­L×9Ð9Á<�ÐPß,8˜ž¸qÀ"ÀqÅ&¸k�Ø $× @Ñ @ÀÓ U‘à ,�ä—~’~ |Ð&CÈ"ÔMˆHØŸ™ hÓ/ˆIØ×!Ñ! )Ô,Ø�NŠHñ *ô �xŠx˜Ó'Ð'ùò Qs   Á3D)r   r¦   r§   )NN)
rC   rD   rE   rF   r   rÑ   r?   rG   rH   rI   rJ   s   @@r   r¢   r¢   j   s)   ù‡ € ÷1ó 1÷)%ð )%÷V(÷ (ò (r   r¢   )Útypingr   Úmlx.coreÚcorer+   Úmlx.nnr   r   r   ÚModuler   rL   rf   rw   r—   r¢   © r   r   Ú<module>rê      st   ðÝ å Ý å  ô!�—	‘	ô !ô:/ˆ"�)‰)ô /ô�2—9‘9ô ô�B—I‘Iô ô@/�r—y‘yô /ôP(�"—)‘)ö P(r   