+
    UV-j[7  ã                   óz  € ^ RI HtHt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 ltRR lt ! R R]P                  4      t ! R R]P                  4      tR# )é    )ÚListÚOptionalÚTupleN©ÚVisionConfigc                   ó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S[/# )é   ÚconfigÚ	input_dim)r   Úint)ÚformatÚ__classdict__s   "€Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/molmo/vision.pyÚ__annotate__ÚMLP.__annotate__
   s   ø€ ÷ 
ñ 
™|ð 
¹ñ 
ó    c                óV  <€ \         SV `  4        Wn        VP                  V n        \        P
                  ! VV P                  R R7      V n        \        P
                  ! V P                  VP                  R R7      V n        \        P
                  ! VV P                  R R7      V n	        R# )F©ÚbiasN)
ÚsuperÚ__init__r   Úhidden_sizeÚnnÚLinearÚw1Úd_modelÚw2Úw3)Úselfr   r   Ú	__class__s   &&&€r   r   ÚMLP.__init__
   s†   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔÜ—)’)ØØ×ÑØô
ˆŒô
 —)’)Ø×ÑØ�N‰NØô
ˆŒô
 —)’)ØØ×ÑØô
ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   ÚxÚreturn©ÚmxÚarray)r   r   s   "€r   r   r      s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óš   € V P                  \        P                  ! V P                  V4      4      V P	                  V4      ,          4      pV# ©N)r   r   Úsilur   r    ©r!   r&   s   &&r   Ú__call__ÚMLP.__call__   s3   € Ø�G‰G”B—G’G˜DŸG™G A›JÓ'¨$¯'©'°!«*Õ4Ó5ˆØˆr   )r   r   r   r   r    ©	Ú__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# )ÚViTMLPc                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r   r   s   "€r   r   ÚViTMLP.__annotate__$   s   ø€ ÷ *ñ *™|ñ *r   c                ó0  <€ \         SV `  4        Wn        \        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   Úfast)ÚapproxN)r   r   r   r   r   Úimage_emb_dimÚimage_mlp_dimr   r   ÚGELUÚact©r!   r   r"   s   &&€r   r   ÚViTMLP.__init__$   sc   ø€ Ü‰ÑÔØŒÜ—)’)˜F×0Ñ0°&×2FÑ2FÈTÔRˆŒÜ—)’)˜F×0Ñ0°&×2FÑ2FÈTÔRˆŒÜ—7’7 &Ô)ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r%   r(   )r   r   s   "€r   r   r>   +   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r,   )r   rE   r   r.   s   &&r   r/   ÚViTMLP.__call__+   s.   € Ø�G‰G�A‹JˆØ�H‰H�Q‹KˆØ�G‰G�A‹JˆØˆr   )rE   r   r   r   r1   r9   s   @@r   r;   r;   #   s   ù‡ € ÷*ó *÷÷ ð r   r;   c                   ó|   a a€ ] tR t^2t oR
V3R lV 3R llltV3R lR ltV3R lR ltRV3R lR lltR	tVt	V ;t
# )ÚMultiHeadDotProductAttentionc                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r   r   Úis_vit_layer)r   r   Úbool)r   r   s   "€r   r   Ú)MultiHeadDotProductAttention.__annotate__3   s#   ø€ ÷ Wñ W™|ð W¹8ÁD½>ñ Wr   c                óÎ  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        VP                  V n
        V P                  V P                  ,          V n        V P                  R,          V n        W n        V'       g   VP                  f   ^M\        VP                  4      p\         P"                  ! W0P                  ,          V P                  V P                  ,          RR7      V n        \         P"                  ! W0P                  ,          V P                  V P                  ,          RR7      V n        \         P"                  ! W0P                  ,          V P                  V P                  ,          RR7      V n        \         P"                  ! V P                  V P                  ,          V P                  RR7      V n        R# )ç      à?NTr   g      à¿)r   r   r   rB   Ú	embed_dimÚimage_num_headsÚ	num_headsÚimage_head_dimÚhead_dimÚimage_num_key_value_headsÚnum_key_value_headsÚnum_key_value_groupsÚscalerN   Ú
vit_layersÚlenr   r   ÚwqÚwkÚwvÚwo)r!   r   rN   Ún_layersr"   s   &&& €r   r   Ú%MultiHeadDotProductAttention.__init__3   sP  ø€ Ü‰ÑÔØŒØ×-Ñ-ˆŒØ×/Ñ/ˆŒØ×-Ñ-ˆŒØ#)×#CÑ#CˆÔ Ø$(§N¡N°d×6NÑ6NÕ$NˆÔ!Ø—]‘] DÕ(ˆŒ
Ø(Ô÷  &×"3Ñ"3Ò";‰AÄ#Àf×FWÑFWÓBXð 	ô —)’)Ø—~‘~Õ% t§~¡~¸¿¹Õ'EÈDô
ˆŒô —)’)Ø—~‘~Õ%Ø×$Ñ$ t§}¡}Õ4Øô
ˆŒô
 —)’)Ø—~‘~Õ%Ø×$Ñ$ t§}¡}Õ4Øô
ˆŒô
 —)’)˜DŸN™N¨T¯]©]Õ:¸D¿N¹NÐQUÔVˆŽr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   r'   r(   )r   r   s   "€r   r   rP   Q   s   ø€ ÷ 
ñ 
¹¿¹ñ 
r   c                ój   € VP                  VP                  R ,          W P                  3,           4      # ©ºNr   N)ÚreshapeÚshaperW   )r!   Úhidden_statesrU   s   &&&r   Ú_split_headsÚ)MultiHeadDotProductAttention._split_headsQ   s/   € Ø×$Ñ$Ø×Ñ Õ# y·-±-Ð&@Õ@ó
ð 	
r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# re   r(   )r   r   s   "€r   r   rP   V   s   ø€ ÷ Rñ R©R¯X©Xñ Rr   c                ój   € VP                  VP                  R ,          V P                  3,           4      # rg   )ri   rj   rS   )r!   rk   s   &&r   Ú_merge_headsÚ)MultiHeadDotProductAttention._merge_headsV   s*   € Ø×$Ñ$ ]×%8Ñ%8¸Õ%<ÀÇÁÐ?PÕ%PÓQÐQr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   r&   Úkvr'   r(   )r   r   s   "€r   r   rP   Y   s.   ø€ ÷ ñ ™"Ÿ(™(ð ©¯©ð ¹B¿H¹Hñ r   c                ón  € VP                   w  r4pVf   TpTpMTpTpV P                  V P                  V4      V P                  4      P	                  ^ ^^^4      pV P                  V P                  V4      V P                  4      P	                  ^ ^^^4      pV P                  V P                  V4      V P                  4      P	                  ^ ^^^4      p\        P                  P                  W†WpP                  R7      p	V	P	                  ^ ^^^4      p
V P                  V
4      p
V P                  V
4      p
V
# )N)r[   )rj   rl   r^   rU   Ú	transposer_   rY   r`   r)   r@   Úscaled_dot_product_attentionr[   rp   ra   )r!   r&   rs   Ú
batch_sizeÚseq_lenÚ_ÚkÚvÚqÚattnÚouts   &&&        r   r/   Ú%MultiHeadDotProductAttention.__call__Y   s  € Ø!"§¡Ñˆ
˜QàŠ:ØˆAØ‰AàˆAØˆAØ×Ñ˜dŸg™g a›j¨$¯.©.Ó9×CÑCÀAÀqÈ!ÈQÓOˆà×Ñ˜dŸg™g a›j¨$×*BÑ*BÓC×MÑMØˆq�!�Qó
ˆð ×Ñ˜dŸg™g a›j¨$×*BÑ*BÓC×MÑMØˆq�!�Qó
ˆô �w‰w×3Ñ3°A¸!Ç:Á:Ð3ÓNˆØ�n‰n˜Q  1 aÓ(ˆØ×Ñ Ó$ˆØ�g‰g�c‹lˆØˆ
r   )r   rS   rW   rN   rU   rZ   rY   r[   r_   ra   r^   r`   )Tr,   )r2   r3   r4   r5   r   rl   rp   r/   r6   r7   r8   r9   s   @@r   rL   rL   2   s6   ù‡ € ÷Wõ W÷<
ð 
÷
Rð R÷÷ ò r   rL   c                   óP   a a€ ] tR t^rt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚResidualAttentionBlockc                ó    <€ V ^8„  d   QhRS[ /# r=   r   )r   r   s   "€r   r   Ú#ResidualAttentionBlock.__annotate__s   s   ø€ ÷ Vñ V™|ñ Vr   c                ó4  <€ \         SV `  4        Wn        \        V4      V n        \        V4      V n        \        P                  ! VP                  VP                  R 7      V n        \        P                  ! VP                  VP                  R 7      V n        R# )©ÚepsN)r   r   r   rL   Ú	attentionr;   Úfeed_forwardr   Ú	LayerNormrB   Úimage_norm_epsÚattention_normÚffn_normrF   s   &&€r   r   ÚResidualAttentionBlock.__init__s   sm   ø€ Ü‰ÑÔØŒÜ5°fÓ=ˆŒÜ" 6›NˆÔÜ ŸlšlØ× Ñ  f×&;Ñ&;ô
ˆÔô Ÿš V×%9Ñ%9¸v×?TÑ?TÔUˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r%   r(   )r   r   s   "€r   r   rƒ   }   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óž   € WP                  V P                  V4      4      ,           pWP                  V P                  V4      4      ,           pV# r,   )r‡   r‹   rˆ   rŒ   r.   s   &&r   r/   ÚResidualAttentionBlock.__call__}   s?   € Ø—‘˜t×2Ñ2°1Ó5Ó6Õ6ˆØ×!Ñ! $§-¡-°Ó"2Ó3Õ3ˆØˆr   )r‡   r‹   r   rˆ   rŒ   r1   r9   s   @@r   r�   r�   r   s    ù‡ € ÷Vó V÷÷ ð 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# )ÚResidualAttentionBlocksc                ó    <€ V ^8„  d   QhRS[ /# r=   r   )r   r   s   "€r   r   Ú$ResidualAttentionBlocks.__annotate__„   s   ø€ ÷ 
ñ 
™|ñ 
r   c                ó”   <€ \         SV `  4        \        VP                  4       Uu. uF  p\	        V4      NK  	  upV n        R # u upi r,   )r   r   ÚrangeÚimage_num_layersr�   Ú	resblocks)r!   r   ry   r"   s   && €r   r   Ú ResidualAttentionBlocks.__init__„   s@   ø€ Ü‰ÑÔä49¸&×:QÑ:QÔ4Ró
Ù4R¨qÔ" 6Ö*Ñ4Rñ
ˆŽùò 
s   §Ac                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r%   r(   )r   r   s   "€r   r   r”   Š   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ób   € . pV P                    F  pV! V4      pVP                  V4       K  	  V# r,   )r˜   Úappend)r!   r&   ÚhÚblocks   &&  r   r/   Ú ResidualAttentionBlocks.__call__Š   s0   € ØˆØ—^”^ˆEÙ�a“ˆAØ�H‰H�QŽKñ $ð ˆr   )r˜   r1   r9   s   @@r   r’   r’   ƒ   s   ù‡ € ÷
ó 
÷÷ ð r   r’   c                ó$   € V ^8„  d   QhR\         /# )r   rw   )r   )r   s   "r   r   r   ’   s   € ÷ ñ ¤Sñ r   c                 ó‚   € \         P                  ! \         P                  ! V R4      V^V P                  R,          34      # )é   éÿÿÿÿ)r¢   r¢   r£   )r)   Úbroadcast_tori   rj   )Útokenrw   s   &&r   Ú_expand_tokenr¦   ’   s2   € Ü�?Š?Ü
�
Š
�5˜*Ó%¨
°A°u·{±{À2µÐ'Góð r   c                ó  € V P                   R,          pWA8X  d   V # WA8”  d   \        RV RV 24      hW,
          pR.\        V P                   4      ^,
          ,          ^ V3.,           p\        P                  ! WW#R7      # )aF  
Pad the last dimension of input tensor to match target size.

Args:
    x: Input tensor with shape [..., D]
    target_size: Desired size for the last dimension
    pad_mode: Padding mode ('constant', 'reflect', etc.)
    pad_value: Value to use for constant padding

Returns:
    Padded tensor with shape [..., target_size]
zCurrent size z is larger than target size )Ú	pad_widthÚmodeÚconstant_valuesr£   ©r   r   )rj   Ú
ValueErrorr]   r)   Úpad)r&   Útarget_sizeÚpad_modeÚ	pad_valueÚcurrent_sizeÚpad_sizeÚ
pad_configs   &&&&   r   Úpad_to_multipler´   ˜   s…   € ð —7‘7˜2•;€Lð Ô"Øˆð Ô!ÜØ˜L˜>Ð)EÀkÀ]ÐSó
ð 	
ð
 Õ)€Hð �œS §¡›\¨AÕ-Õ.°1°h°-°Õ@€Jä�6Š6�!°ÔTÐTr   c                   óf   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V3R lR lltRtVtV ;t	# )	ÚVisionTransformerc                ó    <€ V ^8„  d   QhRS[ /# r=   r   )r   r   s   "€r   r   ÚVisionTransformer.__annotate__¼   s   ø€ ÷ ;ñ ;™|ñ ;r   c                óÄ  <€ \         SV `  4        Wn        \        P                  ! VP
                  34      V n        \        P                  ! VP                  VP
                  34      V n        \        P                  ! VP                  VP
                  R R7      V n        \        P                  ! VP
                  VP                  R7      V n        \!        V4      V n        R# )Fr   r…   N)r   r   r   r)   ÚzerosrB   Úclass_embeddingÚimage_num_posÚpositional_embeddingr   r   Úintermediate_sizeÚpatch_embeddingr‰   rŠ   Úpre_lnr’   ÚtransformerrF   s   &&€r   r   ÚVisionTransformer.__init__¼   s§   ø€ Ü‰ÑÔØŒÜ!Ÿxšx¨×)=Ñ)=Ð(?Ó@ˆÔÜ$&§H¢HØ×!Ñ! 6×#7Ñ#7Ð8ó%
ˆÔ!ô  "ŸyšyØ×$Ñ$Ø× Ñ Øô 
ˆÔô
 —l’l 6×#7Ñ#7¸V×=RÑ=RÔSˆŒÜ2°6Ó:ˆÖr   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# ©r   r&   Ú	patch_numr'   )r)   r*   r   )r   r   s   "€r   r   r¸   Ë   s*   ø€ ÷ 'ñ '™RŸX™Xð '±#ð '¹"¿(¹(ñ 'r   c                óf  € V P                   R ,          pV P                   R,          p\        VP                  ^ ,          R,          4      p\        P                  ! WEWTP                  ^,          34      pVw  rgVP                  ^ ,          V8w  g   VP                  ^,          V8w  d®   \        P
                  ! V^ 4      p\        P                  ! VR4      p\        P                  ! WdP                  ^,          ,          WtP                  ^,          ,          3RRR7      pV! V4      p\        P                  ! VR4      p\        P                  ! V^ 4      p\        P                  ! VR	VP                  R	,          34      pVR
,          p	VR
,          p
\        P                  ! Wš.^R7      pW,           pV# ):r   r¢   Nºr¢   NNrR   ÚlinearF)Úscale_factorr©   Úalign_corners©Úaxis)r   é   r¢   r   )r   r   rÍ   r¢   r£   )NºNNNrÎ   )r½   r   rj   r)   ri   Úexpand_dimsru   r   ÚUpsampleÚsqueezeÚconcatenate)r!   r&   rÅ   Úcls_embÚpos_embÚpos_emb_sizeÚpatch_num_0Úpatch_num_1Ú	upsamplerÚexpanded_clsÚexpanded_posÚpos_embeddings   &&&         r   Úadd_pos_embÚVisionTransformer.add_pos_embË   sa  € Ø×+Ñ+¨CÕ0ˆØ×+Ñ+¨BÕ/ˆô ˜7Ÿ=™=¨Õ+¨sÕ2Ó3ˆÜ—*’*˜W°\Ç=Á=ÐQRÕCSÐ&TÓUˆà%.Ñ"ˆà�=‰=˜Õ˜{Ô*¨g¯m©m¸AÕ.>À+Ô.Mä—n’n W¨aÓ0ˆGÜ—l’l 7¨LÓ9ˆGô Ÿšà§-¡-°Õ"2Õ2Ø§-¡-°Õ"2Õ2ðð Ø#ôˆIñ   Ó(ˆGô —l’l 7¨LÓ9ˆGÜ—j’j ¨!Ó,ˆGä—*’*˜W r¨7¯=©=¸Õ+<Ð&=Ó>ˆð ˜zÕ*ˆØ˜zÕ*ˆô Ÿš¨Ð'CÈ!ÔLˆØÕˆØˆr   c                ód   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  ,          /# rÄ   )r)   r*   r   r   )r   r   s   "€r   r   r¸   ô   s.   ø€ ÷ ñ ™"Ÿ(™(ð ©sð ¹dÁ2Ç8Á8½nñ r   c                ó¢  € Vf   V P                   P                  pVP                  w  r4p\        WP                   P                  4      pV P                  V4      p\        V P                  VP                  ^ ,          4      pTp\        P                  ! Wa.^R7      pV P                  W4      pV P                  V4      pV P                  V4      pV# )z.
: param x: (batch_size, num_patch, n_pixels)
rË   )r   Úimage_num_patchrj   r´   r¾   r¿   r¦   r»   r)   rÒ   rÜ   rÀ   rÁ   )r!   r&   rÅ   ÚBÚNÚDÚexpanded_class_embrk   s   &&&     r   r/   ÚVisionTransformer.__call__ô   s¶   € ð ÒØŸ™×3Ñ3ˆIØ—'‘'‰ˆˆaô ˜AŸ{™{×<Ñ<Ó=ˆà× Ñ  Ó#ˆô +¨4×+?Ñ+?ÀÇÁÈÅÓLÐØ/Ðä�NŠNÐ.Ð2¸Ô;ˆØ×Ñ˜QÓ*ˆà�K‰K˜‹Nˆà×(Ñ(¨Ó+ˆØÐr   )r»   r   r¿   r½   rÀ   rÁ   r,   )
r2   r3   r4   r5   r   rÜ   r/   r6   r7   r8   r9   s   @@r   r¶   r¶   »   s)   ù‡ € ÷;ó ;÷'ð '÷R÷ ò r   r¶   c                   óV   a a€ ] tR tRt oV 3R ltV3R lR ltV3R lR ltRtVtV ;t	# )ÚVisionModeli  c                óˆ  <€ \         SV `  4        Wn        VP                  V n        V P                  R 8w  d   \	        RV P                   R24      h\        V4      V n        ^V n        \        VRR7      V n	        \        WP                  4      V n        \        P                  ! ^VP                  ^,          34      V n        R# )ÚmolmozModel type z3 not supported. Currently only 'molmo' is supportedF)rN   N)r   r   r   Ú
model_typer¬   r¶   Ú	image_vitÚnum_prefix_tokensrL   Úimage_pooling_2dr	   rB   Úimage_projectorr)   rº   Ú	pad_embedrF   s   &&€r   r   ÚVisionModel.__init__  s¤   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒØ�?‰?˜gÔ%ÜØ˜dŸo™oÐ.Ð.aÐbóð ô +¨6Ó2ˆŒØ!"ˆÔä <¸VÐRWÔ XˆÔÜ" 6×+?Ñ+?Ó@ˆÔÜŸš 1 f×&:Ñ&:¸QÕ&>Ð"?Ó@ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úimagesr'   r(   )r   r   s   "€r   r   ÚVisionModel.__annotate__  s#   ø€ ÷ !)ñ !)¡2§8¡8ð !)±·±ñ !)r   c                ó^  € V P                   pVP                  w  r4rV\        P                  ! WV,          WV34      p\        P                  ! VR8H  RRR7      ( pTpV P                  V4      p	VP                  eF   . p
VP                   F  pV
P                  W›,          4       K  	  \        P                  ! V
RR7      p	M	V	R,          p	RpV P                  ^ 8”  d   V	R,          pV	R,          p	W˜,          p	\        P                  ! W“WER34      p	Ve   \        P                  ! WÃVR34      MRpWœ3# )	z>
: param images: (batch_size, num_crops, num_patch, n_pixels)
T©rÌ   ÚkeepdimsNrË   r£   )r¢   r   )rÎ   r   )rÎ   rÇ   )
r   rj   r)   ri   Úallrë   r\   rœ   rÒ   rì   )r!   rò   Úcfgrá   ÚTrâ   rã   Úreshaped_imagesÚmaskÚimage_featuresÚfeaturesÚlayerÚ	cls_embeds   &&           r   Úencode_imageÚVisionModel.encode_image  s  € ð �k‰kˆØ—\‘\‰
ˆˆaô Ÿ*š* V°!­e°Q¨]Ó;ˆÜ—’�¨"Ñ,°6ÀDÔIÐIˆð !ˆØŸ™¨Ó/ˆà�>‰>Ò%ØˆHØŸœ�Ø—‘ Õ 5Ö6ñ (äŸ^š^¨H¸2Ô>‰Nà+¨BÕ/ˆNàˆ	Ø×!Ñ! AÔ%Ø& tÕ,ˆIØ+¨EÕ2ˆNà'Õ.ˆÜŸš N¸¸b°MÓBˆà9BÒ9N”B—J’J˜y¨a°¨*Ô5ÐTXˆ	àÐ(Ð(r   c          	      ó¢   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  S[S[ P                  ,          3,          /# )r   rò   Úimage_masksr'   )r)   r*   r   r   )r   r   s   "€r   r   ró   A  sI   ø€ ÷ W)ñ W)Ù—h‘hðW)Ù-/¯X©XðW)á	‰r�x‰x™¡"§(¡(Õ+Ð+Õ	,ñW)r   c                óà  € V P                   pVP                  R ,          w  rEV P                  V4      w  rgVP                  '       Ed¹   Vf   Q hVP                  R8X  dM   V^ 8H  p\        P
                  ! V P                  R4      p	Wi\        P                  ! VR4      ,          ,           pEMUVP                  R8X  dp   \        P
                  ! V P                  R4      p	Wi\        P                  ! \        P                  ! V\        P                  ! V4      4      R4      ,          ,           pMÕVP                  R8X  d°   \        P
                  ! V P                  R	4      p	V^ 8H  p\        P                  ! V^8  \        P                  ! V4      4      p
T
p
TpWi^ ,          \        P                  ! VR4      ,          ,           pWi^,          \        P                  ! V
R4      ,          ,           pM\        VP                  4      h\        P
                  ! WdV3VP                  ,           R
,           4      pVP                  ^ ,          VP                  ,          ^8X  d   \        P                  ! V. RO4      pVP                  ^,          VP                  ,          pVP                  ^,          VP                   ,          p\        P
                  ! \        P"                  ! \        P
                  ! VVVVVP                  VVP                   R34      R4      WE,          V,          V,          VP                  VP                   ,          R34      pVP$                  R8X  d,   \        P&                  ! VRRR7      pV P%                  WÖ4      pM*VP$                  R9  d   V P%                  VR,          V4      pVP(                  w  rï\        P
                  ! WdW^V,          R34      pV P+                  V4      pWg3# )rh   rï   ÚregressÚpad_and_partial_padzattention-meanqTrõ   r£   )r¢   r¢   r¢   r£   )r   r¢   r¢   r¢   r£   )r£   )r«   r«   ©r   r¢   r  r«   )r   r¢   r   é   rÍ   é   é   éþÿÿÿ>   ÚnoneÚstack)rÎ   :Nr¢   NrÎ   )r   rj   r   Úimage_padding_embedr)   ri   rï   rÏ   ÚmaximumÚ
zeros_likeÚlogical_andÚlogical_notr¬   rà   Úimage_pooling_hr­   Úimage_pooling_wru   rí   ÚmeanÚllm_patches_per_croprî   )r!   rò   r  rø   rw   Ú	num_imagerü   rÿ   Úall_padrï   Úpartial_padÚh_blocksÚw_blocksÚqueryr�   Úws   &&&             r   r/   ÚVisionModel.__call__A  sT  € ð �k‰kˆà &§¡¨RÕ 0Ñˆ
Ø$(×$5Ñ$5°fÓ$=Ñ!ˆà×"×"Ñ"ØÒ*Ð*Ð*Ø×&Ñ&¨+Ô5Ø%¨Ñ*�ÜŸJšJ t§~¡~°}ÓE�	Ø!/¼b¿nºnØ˜Ró?õ 3õ "’ð ×(Ñ(¨IÔ5ÜŸJšJ t§~¡~°}ÓE�	Ø!/¼b¿nºnÜ—J’J˜{¬B¯MªM¸+Ó,FÓGÈó?õ 3õ "‘ð ×(Ñ(Ð,AÔAÜŸJšJ t§~¡~Ð7GÓH�	Ø%¨Ñ*�Ü Ÿnšn¨[¸1©_¼b¿nºnÈWÓ>UÓV�Ø)�Ø!�Ø!/¸Aµ,ÄÇÂØ˜RóBõ 3õ "�ð "0¸Aµ,ÄÇÂØ óBõ 3õ "‘ô ! ×!8Ñ!8Ó9Ð9äŸšØ¨Ð3°c×6IÑ6IÕIÈEÕQó
ˆð ×Ñ˜qÕ! C×$7Ñ$7Õ7¸1Ô<äŸVšVØÒ HóˆNð "×'Ñ'¨Õ*¨c×.AÑ.AÕAˆØ!×'Ñ'¨Õ*¨c×.AÑ.AÕAˆÜŸšÜ�LŠLÜ—
’
Ø"à"Ø!Ø Ø×+Ñ+Ø Ø×+Ñ+Øðóð &óð  Õ&¨Õ1°HÕ<Ø×#Ñ# c×&9Ñ&9Õ9Øðó!
ˆð. ×ÑÐ#4Ô4Ü—G’G˜N°¸dÔCˆEØ!×2Ñ2°5ÓI‰NØ×!Ñ!Ð):Ô:Ø!×2Ñ2Ø˜xÕ(¨.óˆNð ×'Ñ'‰ˆÜŸš NÀÐPQÍEÐSUÐ4VÓWˆð ×-Ñ-¨nÓ=ˆàÐ(Ð(r   )r   rí   rî   rë   rê   rì   rï   )
r2   r3   r4   r5   r   r   r/   r6   r7   r8   r9   s   @@r   rç   rç     s(   ù‡ € õA÷!)ð !)÷FW)÷ W)ð W)r   rç   )Úedger   )Útypingr   r   r   Úmlx.coreÚcorer)   Úmlx.nnr   r   r   ÚModuler	   r;   rL   r�   r’   r¦   r´   r¶   rç   © r   r   Ú<module>r&     s–   ðß (Ñ (å Ý å  ôˆ"�)‰)ô ô4ˆR�Y‰Yô ô= 2§9¡9ô =ô@˜RŸY™Yô ô"˜bŸi™iô õô UôFP˜Ÿ	™	ô PôfJ)�"—)‘)ö J)r   