+
    kHàjb  ã                  ó  € R t ^ RIHt ^ RIt^ RIHtHt ^(t]P                  ! R]P                  4      t
]P                  ! R]P                  4      t]P                  ! R]P                  4      R3]P                  ! R]P                  4      R3]P                  ! R	]P                  4      R
3]P                  ! R4      R3]P                  ! R4      R3]P                  ! R4      R3.tR R ltR R ltR R ltR R ltR R ltR# )u£   Shared Signal formatting helpers: Markdown â†’ Signal native formatting lives here so both the live
adapter and the standalone send paths emit the same bodyRanges.)ÚannotationsN)Úis_table_dividerÚrealign_markdown_tablesz```[a-zA-Z0-9_+-]*\n?(.*?)```z
^#{1,6}\s+z\*\*(.+?)\*\*ÚBOLDz	__(.+?)__z	~~(.+?)~~ÚSTRIKETHROUGHz`(.+?)`Ú	MONOSPACEz%(?<!\*)\*(?!\*| )(.+?)(?<!\*)\*(?!\*)ÚITALICz(?<!\w)_(?!_)(.+?)(?<!_)_(?!\w)c               ó    € V ^8„  d   QhRRRR/# )é   ÚsÚstrÚreturnÚint© )Úformats   "ÚK/home/ubuntu/.hermes/hermes-agent/plugins/platforms/signal/signal_format.pyÚ__annotate__r      s   € ÷ +ñ +�#ð +˜#ñ +ó    c                óD   € \        V P                  R4      4      ^,          # )z#Length of *s* in UTF-16 code units.z	utf-16-le)ÚlenÚencode)r   s   &r   Ú
_utf16_lenr      s   € äˆq�x‰x˜Ó$Ó%¨Õ*Ð*r   c               ó    € V ^8„  d   QhRRRR/# ©r
   Úsourcer   r   r   )r   s   "r   r   r      s   € ÷ 6ñ 6 cð 6¨cñ 6r   c                ó’   € \         P                  ! RV \         P                  R7      pRP                  R \	        V4       4       4      # )zÂReplace Markdown bullet markers with plain Unicode bullets (Signal renders ``- item`` literally).
Fenced code blocks are kept byte-for-byte: list-looking lines inside code are code, not bullets.ú(```.*?```)©ÚflagsÚ c              3  óv   "  € T F/  w  rV^,          ^ 8X  d   \         P                  ! RRV4      MTx € K1  	  R# 5i)r
   z(?m)^([ \t]{0,3})[-*+]\s+u   \1â€¢ N)ÚreÚsub©Ú.0ÚidxÚparts   &  r   Ú	<genexpr>Ú,_normalize_bullet_markers.<locals>.<genexpr>#   s;   é € ð 6Ù$4‘y�sð MPÐRSÍGÐWXÌL”2—6’6Ð6¸	À4ÔHÐ^bÔbÛ$4ùs   ‚79©r!   ÚsplitÚDOTALLÚjoinÚ	enumerate©r   Úpartss   & r   Ú_normalize_bullet_markersr0      s=   € ô �HŠH�^ V´2·9±9Ô=€EØ�7‰7ñ 6Ü$-¨eÔ$4ó6ó 6ð 6r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r   '   s   € ÷ hñ h˜#ð h #ñ hr   c                ó’   € \         P                  ! RV \         P                  R7      pRP                  R \	        V4       4       4      # )a  Re-align every GFM table outside a code fence and wrap it in a fence, so the code-block pass
in markdown_to_signal() records one MONOSPACE range over the aligned block and shifts every
later range for it. Fenced regions are left alone: a pipe table inside a code block is code.r   r   r   c              3  ó^   "  € T F#  w  rV^,          '       d   TM
\        V4      x € K%  	  R# 5i)r
   N)Ú_fence_unfenced_tablesr#   s   &  r   r'   Ú _fence_tables.<locals>.<genexpr>,   s'   é € ÐgÑVfÉÈ˜3 Ÿ7œ7‘4Ô(>¸tÓ(DÔDÓVfùs   ‚+-r)   r.   s   & r   Ú_fence_tablesr6   '   s6   € ô �HŠH�^ V´2·9±9Ô=€EØ�7‰7ÑgÔV_Ð`eÔVfÓgÓgÐgr   c               ó    € V ^8„  d   QhRRRR/# )r
   Útextr   r   r   )r   s   "r   r   r   /   s   € ÷ ñ  ð ¨ñ r   c           	     ó  € R V 9  d   V # V P                  R4      . r!^ \        V4      rCW48  dÎ   R W,          9   dŸ   V^,           V8  d‘   \        W^,           ,          4      '       ds   V^,           pWT8  d5   R W,          9   d(   W,          P                  4       '       d   V^,          pK:  VR\	        RP                  WV 4      \        4      R.,          pTpK±  VP                  W,          4       V^,          pKÓ  RP                  V4      # )Ú|Ú
z```)r*   r   r   Ústripr   r,   Ú_TABLE_WIDTHÚappend)r8   ÚlinesÚoutÚiÚnÚjs   &     r   r4   r4   /   sÓ   € Ø
�$„ØˆØ—‘˜DÓ! 2ˆ3ØŒc�%‹j€qØ
Œ%à�%•(Œ?˜q 1�u qœyÔ-=¸eÈÅE½l×-KÒ-KØ�A•ˆAØ”%˜C 5¥8œO°µ·±×0@Ò0@Ø�Q•’Ø�EÔ2°4·9±9¸UÀQ¸ZÓ3HÌ,ÓWÐY^Ð_Õ_ˆCØˆAÙØ�
‰
�5•8ÔØ	ˆQ�ŠØ�9‰9�S‹>Ðr   c               ó    € V ^8„  d   QhRRRR/# )r
   r8   r   r   ztuple[str, list[str]]r   )r   s   "r   r   r   B   s   € ÷ @ñ @˜Sð @Ð%:ñ @r   c           
     ó   aaa€ \        \        \        P                  ! RRV 4      P	                  4       4      4      p . p\
        P                  V 4      ;p'       d   VP                  ^4      P                  R4      pVP                  VP                  4       \        V4      R34       V RVP                  4        V,           WP                  4       R ,           p K›  R^ rT\        P                  V 4       F�  pW@WRP                  4        ,          pV P                  RVP                  4       4      pVR8X  d   \        V 4      pWP                  4       V pVP                  \        V4      \        V4      R34       WG,          pTpK‘  	  W@VR ,           p . p. p	\          FÉ  w  r«V
P                  V 4       F¯  pVP                  4       VP                  4       uoo\"        ;QJ d     VV3R lV	 4       F  '       g   K   R	M	  R
M! VV3R lV	 4       4      '       d   Kh  VP                  SSVP                  ^4      VP                  ^4      V34       V	P                  SS34       K±  	  KË  	  VP%                  4        R^ r\. o. pV F‰  w  oorïpVS8”  d   SP                  SVS,
          34       SV8”  d   SP                  VSV,
          34       WÀVS ,          pWV pVP                  \        V4      \        V4      V34       WÃ,          pSpK‹  	  SP%                  4        R V3R llpV UUUu. uFH  w  pppV! VV,           4      V! V4      8”  g   K#  V! V4      V! VV,           4      V! V4      ,
          V3NKJ  	  ppppWÀVR ,           p . p\'        VV,           4       Fe  w  ppp^ V8:  g   K  VV,           \        V 4      8:  g   K)  \)        V RV 4      \)        V VVV,            4      ppVP                  V RV RV 24       Kg  	  V V3# u upppi )zÿConvert markdown to plain text + Signal textStyles list. Signal uses ``bodyRanges`` (signal-cli
``textStyle`` / ``textStyles`` params) as ``start:length:STYLE`` with positions in UTF-16 code units.
Supported styles: BOLD, ITALIC, STRIKETHROUGH, MONOSPACE.z\n{3,}z

r;   r   Nr   r   c              3  óL   <"  € T F  w  rSV8  ;'       d    SV8„  x € K  	  R # 5i)Nr   )r$   ÚosÚoeÚmeÚmss   &  €€r   r'   Ú%markdown_to_signal.<locals>.<genexpr>]   s&   øé € ÐB¹©v¨r�r˜B‘w×*Ð* 2¨¡7Ô*»ùs   ƒ$–$TFc               ó    € V ^8„  d   QhRRRR/# )r
   Úposr   r   r   )r   s   "r   r   Ú(markdown_to_signal.<locals>.__annotate__r   s   € ÷ ñ �Sð ˜Sñ r   c                ó~   <€ ^ pS F-  w  r#W 8¼  d
    W,
          # V\        W0V,
          4      ,          pK/  	  W,
          # )é    )Úmin)rM   ÚshiftÚ
remove_posÚ
remove_lenÚremovalss   &   €r   Ú_adjustÚ#markdown_to_signal.<locals>._adjustr   sF   ø€ ØˆÛ&.Ñ"ˆJØÔ Øà�{Ðð ”S˜¨:Õ%5Ó6Õ6ŠEñ '/ð �{Ðr   Ú:éÿÿÿÿ)r6   r0   r!   r"   r<   Ú_CODE_BLOCK_REÚsearchÚgroupÚrstripr>   Ústartr   ÚendÚ_HEADING_REÚfinditerÚfindÚ_INLINE_PATTERNSÚanyÚsortÚsortedr   )r8   ÚstylesÚmatchÚinnerÚnew_textÚlast_endÚeolÚheading_textÚall_matchesÚoccupiedÚpatternÚstyleÚresultÚinline_stylesÚg1sÚg1erV   r^   ÚlengthÚadjusted_priorÚstyle_stringsÚcp_startÚcp_lenÚ
style_typeÚ	u16_startÚu16_lenrI   rJ   rU   s   &                         @@@r   Úmarkdown_to_signalr~   B   sž  ú€ ô Ô2´2·6²6¸)ÀVÈTÓ3R×3XÑ3XÓ3ZÓ[Ó\€DØ)+€FÜ!×(Ñ(¨Ó.Ð
.ˆ%Ö
.Ø—‘˜A“×%Ñ% dÓ+ˆØ�‰�u—{‘{“}¤c¨%£j°+Ð>Ô?Ø�O�e—k‘k“mÐ$ uÕ,¨t·I±I³K°MÐ/BÕBŠØ˜QˆhÜ×%Ñ% dÖ+ˆØ˜§K¡K£MÐ2Õ2ˆØ�i‰i˜˜eŸi™i›kÓ*ˆØ�"Œ9Ü�d“)ˆCØŸI™I›K¨#Ð.ˆØ�‰”s˜8“}¤c¨,Ó&7¸Ð@ÔAØÕ ˆØŠñ ,ð ˜8˜9�oÕ%€Dà8:€KØ&(€Hß*‰ˆØ×%Ñ% dÖ+ˆEØ—[‘[“] E§I¡I£KˆFˆB�ß“3ÕB¹ÓB—3—3’3ÕB¹ÓB×BÔBØ×"Ñ" B¨¨E¯K©K¸«N¸E¿I¹IÀa»LÈ%Ð#PÔQØ—‘  R Ö)ó	 ,ñ +ð ×ÑÔð ˜1ˆHØ&(€HØ02€MÛ#.ÑˆˆB�˜%Ø�Œ8Ø�O‰O˜R  r¥˜NÔ+Ø�Œ8Ø�O‰O˜S " s¥(˜OÔ,Ø�x Ð#Õ#ˆØ˜�ˆØ×Ñœc &›k¬3¨u«:°uÐ=Ô>Ø�ˆØŠñ $/ð ‡M�M„O÷ð ñ 39õfÙ28Ñ.˜% ¨¹GÀEÈFÅNÓ<SÑV]Ð^cÓVdÑ<dô X‘w˜u“~¡w¨u°v­~Ó'>ÁÈÃÕ'OÐQVÓWÙ28ð ò fà˜˜�OÕ#€DØ!€MÜ(.¨~ÀÕ/MÖ(NÑ$ˆ�&˜*Ø�Ž=˜X¨Õ.´#°d³)Ö;Ü!+¨D°°(¨OÓ!<¼jÈÈhÐYaÐdjÕYjÐIkÓ>l�wˆIØ× Ñ  I ;¨a°¨y¸¸*¸Ð!FÖGñ )Oð �ÐÐùôfs   Ì+ P	Í)P	)Ú__doc__Ú
__future__r   r!   Úagent.markdown_tablesr   r   r=   Úcompiler+   rZ   Ú	MULTILINEr`   rc   r   r0   r6   r4   r~   r   r   r   Ú<module>r„      så   ðñCõ #ã 	ç Kð
 €à—’Ð<¸b¿i¹iÓH€Ø�jŠj˜¨¯©Ó5€à‡Z‚ZÐ  "§)¡)Ó,¨fÐ5Ø‡Z‚Z�˜bŸi™iÓ(¨&Ð1Ø‡Z‚Z�˜bŸi™iÓ(¨/Ð:Ø‡Z‚Z�
Ó˜[Ð)Ø‡Z‚ZÐ8Ó9¸8ÐDØ‡Z‚ZÐ2Ó3°XÐ>ð@Ð õ+õ
6õhõ÷&@r   