+
    KV-jk  ã                   óž   € ^ RI HtHt ^ RIt^ RIHt ^RIHtH	t	 R R lt
R R ltR	 R
 ltR R ltRR R lltR R ltR R ltR R ltR# )é    )ÚTupleÚListN)ÚNDArray)Ú	LLMatcherÚ
LLExecutorc                ó^   € V ^8„  d   QhR\         R\         R\        \         \         3,          /# ©é   Ú
batch_sizeÚ
vocab_sizeÚreturn)Úintr   )Úformats   "Úa/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/llguidance/numpy.pyÚ__annotate__r      s)   € ÷ 1ñ 1¤#ð 1´3ð 1¼5ÄÄcÀ½?ñ 1ó    c                 ó$   € W^,           ^ ,          3# )é   © ©r   r   s   &&r   Úget_bitmask_shaper      s   € Ø b�¨RÕ/Ð0Ð0r   c                óf   € V ^8„  d   QhR\         R\         R\        \        P                  ,          /# r	   )r   r   ÚnpÚint32)r   s   "r   r   r      s,   € ÷ ñ ¤sð Ü'*ðÜ/6´r·x±xÕ/@ñr   c                 ób   € \         P                  ! \        W4      R\         P                  R7      # )é   ©Údtypeéÿÿÿÿ)r   Úfullr   r   r   s   &&r   Úallocate_token_bitmaskr!      s%   € ä�7Š7Ü˜*Ó1Ø
Ü�h‰hôð r   c                óˆ   € V ^8„  d   QhR\         \        P                  ,          R\         \        P                  ,          RR/# ©r
   ÚlogitsÚmaskr   N©r   r   Úfloat32r   )r   s   "r   r   r      s5   € ÷ %ñ %¬w´r·z±zÕ/Bð %Ü-4´R·X±XÕ->ð%ØCGñ%r   c                 óV  € \         P                  ! V^ ^R7      p\         P                  ! \         P                  ! ^ \         P                  R7      VP
                  ^,          4      pW#,	          ^,          pVRRV P
                  ^,          13,          p\         P                  ) W^ 8H  &   R# )é    ©Úaxisr   ºNNNN)r   ÚrepeatÚtileÚaranger   ÚshapeÚinf)r$   r%   Úmask_expandedÚbit_indicesÚ	bit_maskss   &&   r   Ú"apply_token_bitmask_inplace_kernelr5      sw   € ä—I’I˜d B¨QÔ/€MÜ—'’'œ"Ÿ)š) B¬b¯h©hÔ7¸¿¹ÀA½ÓG€KØÕ-°Õ2€IØ˜!Ð-˜fŸl™l¨1�oÐ-Ð-Õ.€IÜ Ÿf™f˜W€F˜‰>Ór   c                óˆ   € V ^8„  d   QhR\         \        P                  ,          R\         \        P                  ,          RR/# r#   r&   )r   s   "r   r   r      s5   € ÷ 5ñ 5¬´·
±
Õ(;ð 5Ü&-¬b¯h©hÕ&7ð5Ø<@ñ5r   c                 óö  € V P                   ^8X  d   \        P                  ! V ^ R7      p VP                   ^8X  d   \        P                  ! V^ R7      pVP                  \        P                  8X  g   Q R4       hV P                   ^8X  g   Q R4       hV P
                  w  r#VP
                  w  rEW$8X  g   Q R4       h^ V,          pW68”  d&   \        P                  ) V RVR13&   V RRV13,          p \        W4       R# )r   r*   úMask must be int32zLogits must be 2DzBatch size mismatchr,   N)Úndimr   Úexpand_dimsr   r   r0   r1   r5   )r$   r%   ÚbatchÚvocabÚm_batchÚm_vocabÚcutoffs   &&     r   Úapply_token_bitmask_inplacer@      sÔ   € à‡{�{�aÔÜ—’ ¨QÔ/ˆØ‡y�y�A„~Ü�~Š~˜d¨Ô+ˆØ�:‰:œŸ™Ô!Ð7Ð#7Ó7Ð!Ø�;‰;˜!ÔÐ0Ð0Ó0ÐØ—<‘<�L€EØ—z‘zÑ€GØÔÐ2Ð2Ó2ÐØ�'�\€FØ„~Ü Ÿf™f˜Wˆˆq�&‘'ˆzÑØ˜˜7˜F˜7˜
Õ#ˆÜ& vÖ4r   c                ój   € V ^8„  d   QhR\         R\        \        P                  ,          R\        RR/# )r
   ÚinterpÚbitmaskÚindexr   N)r   r   r   r   r   )r   s   "r   r   r   /   s:   € ÷ Gñ G¤Ið GÜ%,¬R¯X©XÕ%6ðGä#&ðGà/3ñGr   c                 óX  € VP                   \        P                  8X  g   Q R 4       hVP                  ^8X  g   Q R4       hWR3,          pVP                  R,          '       g   Q R4       hV P                  VP                  P                  VP                  VP                  ,          4       R# )r8   úMask must be 2Dr,   ÚC_CONTIGUOUSúMask must be contiguousN)
r   r   r   r9   ÚflagsÚunsafe_compute_mask_ptrÚctypesÚdataÚsizeÚitemsize)rB   rC   rD   Úvs   &&& r   Úfill_next_token_bitmaskrP   /   s„   € ð �=‰=œBŸH™HÔ$Ð:Ð&:Ó:Ð$Ø�<‰<˜1ÔÐ/Ð/Ó/ÐØ�q�Õ€AØ�7‰7�>×"Ô"Ð=Ð$=Ó=Ð"Ø
×"Ñ" 1§8¡8§=¡=°!·&±&¸1¿:¹:Õ2EÖFr   c                ó¢   € V ^8„  d   QhR\         R\        \        \        \        3,          ,          R\
        \        P                  ,          RR/# ©r
   ÚexecutorÚmatchersrC   r   N©r   r   r   r   r   r   r   r   )r   s   "r   r   r   9   sH   € ÷ Vñ V¬*ð VÜ*.¬u´YÄ°^Õ/DÕ*EðVä)0´·±Õ):ðVà?CñVr   c                ó:  € VP                   \        P                  8X  g   Q R4       hVP                  ^8X  g   Q R4       hVP                  w  r4VP
                  R,          '       g   Q R4       hV P                  WP                  P                  V^,          V4       R# ©zs
Compute the token mask directly into the specified array.
For each matcher, provide the index of the target mask.
r8   rF   rG   rH   N)	r   r   r   r9   r0   rI   rJ   rK   rL   ©rS   rT   rC   r;   r<   s   &&&  r   Úfill_next_token_bitmask_parrY   9   s~   € ð �=‰=œBŸH™HÔ$Ð:Ð&:Ó:Ð$Ø�<‰<˜1ÔÐ/Ð/Ó/ÐØ—=‘=�L€EØ�=‰=˜×(Ô(ÐCÐ*CÓCÐ(Ø×$Ñ$ X¯~©~×/BÑ/BÀEÈAÅIÈuÖUr   c          	      óÂ   € V ^8„  d   QhR\         R\        \        \        \        \        \        ,          3,          ,          R\
        \        P                  ,          RR/# rR   rU   )r   s   "r   r   r   G   sO   € ÷ gñ g¼Jð gÜ*.¬u´YÄÄTÌ#ÅYÐ5NÕ/OÕ*Pðgä)0´·±Õ):ðgà?Cñgr   c                ó:  € VP                   \        P                  8X  g   Q R4       hVP                  ^8X  g   Q R4       hVP                  w  r4VP
                  R,          '       g   Q R4       hV P                  WP                  P                  V^,          V4       R# rW   )	r   r   r   r9   r0   rI   Ú(unsafe_compute_mask_ptr_with_draft_tokenrK   rL   rX   s   &&&  r   Ú-fill_next_token_bitmask_par_with_draft_tokensr]   G   s‚   € ð �=‰=œBŸH™HÔ$Ð:Ð&:Ó:Ð$Ø�<‰<˜1ÔÐ/Ð/Ó/ÐØ—=‘=�L€EØ�=‰=˜×(Ô(ÐCÐ*CÓCÐ(Ø×5Ñ5°hÇÁ×@SÑ@SÐUZÐ]^ÕU^Ð`eÖfr   c                óŠ   € V ^8„  d   QhR\         R\        \        \        \        3,          ,          R\        \
        ,          /# )r
   rS   rT   r   )r   r   r   r   r   Úbool)r   s   "r   r   r   U   s5   € ÷ 0ñ 0¤
ð 0Ü $¤U¬9´c¨>Õ%:Õ ;ð0Ü@DÄTÅ
ñ0r   c                ó$   € V P                  V4      # )a�  
Consume a single token for each matcher in parallel.

Args:
    executor: The LLExecutor to use for parallel execution.
    matchers: List of tuples containing (LLMatcher, token_id).

Returns:
    List[bool]: Success/failure for each matcher (in order).

Note:
    Matchers that fail (return False) are left in an error state,
    consistent with the behavior of consume_token on a single matcher.
)Úconsume_token_par)rS   rT   s   &&r   ra   ra   U   s   € ð  ×%Ñ% hÓ/Ð/r   )r   )Útypingr   r   Únumpyr   Únumpy.typingr   Ú_libr   r   r   r!   r5   r@   rP   rY   r]   ra   r   r   r   Ú<module>rf      s<   ðß Û Ý  ß 'õ1õõ%õ5÷$GõVõg÷0r   