+
    iHàj"¢  ã                  ón  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
Ht ^ RIHt ^ RIHtHtHtHtHtHtHt ^ RIHtHt ^ RIHt ^ RIHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t& ]PN                  ! R	4      t(RNt)R
t*Rt+Rt,Rt-Rt.Rt/^t0Rt1^t2^@t3]4]5]63t7RR0t8RRR/RRRRRRRR/RRR//RRRRR RR!RR"RR#RR$R/R%RRR&R/R'R(RR)R*^^./R+RR,RR-R/R.R/R0R1./R2R3R/R4/ R5R6R//R7R8R9.//t9R:]:R;&   R< R= lt;R> R? lt<R@ RA lt=RB RC lt>]
 ! RD RE4      4       t?RF RG lt@ ! RH RI4      tARJ RK ltBRL RM ltC. ROOtDR# )Pu4  Async LSP client over stdin/stdout â€” one per ``(server, workspace_root)``.

Freshness is tracked with **document versions**, not timestamps: every didChange
bumps ``version`` and each stored push/pull result is tagged with the version it
describes, so a slow server's leftovers never masquerade as a verdict on the
current content ("ghost diagnostics").  Whole-document sync is always sent, every
``open_file`` also fires ``didChangeWatchedFiles`` (clangd/eslint only re-scan on
it), and ``ContentModified`` (-32801) errors are retried with exponential backoff.
)ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚAnyÚ	AwaitableÚCallableÚDictÚListÚOptionalÚSet)ÚquoteÚunquote)Úwindows_hide_flags)ÚERROR_CONTENT_MODIFIEDÚERROR_METHOD_NOT_FOUNDÚLSPProtocolErrorÚLSPRequestErrorÚclassify_messageÚencode_messageÚmake_error_responseÚmake_notificationÚmake_requestÚmake_responseÚread_messagezagent.lsp.clientg     €F@g      @g      $@g      @g333333Ã?ç      ð?ç      à?ÚstartingÚrunningÚwindowÚworkDoneProgressTÚ	workspaceÚconfigurationÚworkspaceFoldersÚdidChangeWatchedFilesÚdynamicRegistrationÚdiagnosticsÚrefreshSupportFÚtextDocumentÚsynchronizationÚdidOpenÚ	didChangeÚdidSaveÚwillSaveÚwillSaveWaitUntilÚ
diagnosticÚrelatedDocumentSupportÚpublishDiagnosticsÚrelatedInformationÚ
tagSupportÚvalueSetÚversionSupportÚcodeDescriptionSupportÚdataSupportÚhoverÚcontentFormatÚmarkdownÚ	plaintextÚ
definitionÚlinkSupportÚ
referencesÚdocumentSymbolÚ!hierarchicalDocumentSymbolSupportÚgeneralÚpositionEncodingszutf-16údict[str, Any]Ú_CLIENT_CAPABILITIESc               ó    € V ^8„  d   QhRRRR/# )é   ÚpathÚstrÚreturn© )Úformats   "Ú5/home/ubuntu/.hermes/hermes-agent/agent/lsp/client.pyÚ__annotate__rM   M   s   € ÷ 2ñ 2�3ð 2˜3ñ 2ó    c                óú   € \         P                  P                  V 4      p\         P                  R8X  d5   VP	                  RR4      pVP                  R4      '       d   TMRV,           pR\        VRR7      ,           # )zUReturn a ``file://`` URI for a path (handles spaces, unicode, Windows drive letters).ÚntÚ\Ú/úfile://z/:)Úsafe)ÚosrG   ÚabspathÚnameÚreplaceÚ
startswithr   )rG   Úabs_paths   & rL   Úfile_urir[   M   s^   € ä�w‰w�‰˜tÓ$€HÜ	‡w�w�$„à×#Ñ# D¨#Ó.ˆØ'×2Ñ2°3×7Ò7‘8¸SÀ8½^ˆØ”u˜X¨DÔ1Õ1Ð1rN   c               ó    € V ^8„  d   QhRRRR/# )rF   ÚrootrH   rI   zdict[str, str]rJ   )rK   s   "rL   rM   rM   W   s   € ÷ Zñ Z�#ð Z˜.ñ ZrN   c                ó¨   € R\         P                  P                  V P                  \         P                  4      4      ;'       g    T R\        V 4      /# )z.Build an LSP ``WorkspaceFolder`` for ``root``.rW   Úuri)rU   rG   ÚbasenameÚrstripÚsepr[   )r]   s   &rL   Ú_folderrc   W   s:   € à”B—G‘G×$Ñ$ T§[¡[´·±Ó%8Ó9×AÐA¸TÀ5Ì(ÐSWË.ÐYÐYrN   c               ó    € V ^8„  d   QhRRRR/# )rF   r_   rH   rI   rJ   )rK   s   "rL   rM   rM   \   s   € ÷ *ñ *�Sð *˜Sñ *rN   c                óF  € V P                  R4      '       g   V # V \        R4      R p\        P                  R8X  d?   VP                  R4      '       d(   \        V4      ^8”  d   V^,          R8X  d
   VR,          p\        P                  P                  \        V4      4      # )zInverse of :func:`file_uri`.rS   NrP   rR   Ú:ºé   NN)rY   ÚlenrU   rW   rG   Únormpathr   )r_   Úraws   & rL   Úuri_to_pathrl   \   su   € à�>‰>˜)×$Ò$Øˆ
Ø
Œc�)‹nˆoÐ
€CÜ	‡w�w�$„˜3Ÿ>™>¨#×.Ò.´3°s³8¸a´<ÀCÈÅFÈcÄMØ�"�gˆÜ�7‰7×ÑœG C›LÓ)Ð)rN   c               ó    € V ^8„  d   QhRRRR/# )rF   ÚtextrH   rI   zdict[str, int]rJ   )rK   s   "rL   rM   rM   f   s   € ÷ 	Zñ 	Z˜ð 	Z ñ 	ZrN   c                ó  € V '       g   R^ R^ /# V P                  RR7      pV P                  R4      '       d   R\        V4      R^ /# R\        V4      ^,
          R\        VR,          P                  R4      4      ^,          /# )zILSP Position at the end of ``text`` (for a whole-document replace range).ÚlineÚ	characterF)Úkeependsz	utf-16-le)Ú
Úéÿÿÿÿ)Ú
splitlinesÚendswithri   Úencode)rn   Úliness   & rL   Ú_end_positionrz   f   sw   € çØ˜˜;¨Ð*Ð*Ø�O‰O UˆOÓ+€Eà‡}�}�\×"Ò"Øœ˜E›
 K°Ð3Ð3à”C˜“J •N K´°U¸2µY×5EÑ5EÀkÓ5RÓ1SÐWXÕ1XÐYÐYrN   c                  óÊ   € ] tR t^rt$ Rt^ tR]R&   RtR]R&   ]! ]	R7      t
R]R	&   ]! ]	R7      tR]R
&   RtR]R&   RtR]R&   RtR]R&   RR R lltRR R lltRR R lltRtR# )Ú	_DocStateaq  Per-document state.  ``version`` is the LSP document version last sent (didOpen=0, +1 per
didChange) and doubles as the freshness token: ``push_version`` / ``pull_version`` tag stored
results, fresh iff tag >= version; -1 means "no data yet".  Servers that echo a version in
publishDiagnostics get exact tagging; others are credited with the current version at receipt.ÚintÚversionÚ rH   rn   )Údefault_factoryúlist[dict[str, Any]]ÚpushÚpullÚpush_versionÚpull_versionFÚboolÚ	seed_seenNc               ó    € V ^8„  d   QhRRRR/# ©rF   r~   zOptional[int]rI   r†   rJ   )rK   s   "rL   rM   Ú_DocState.__annotate__€   ó   € ÷ Sñ S -ð S¸4ñ SrN   c                	óD   € V P                   Vf   V P                  8¬  # T8¬  # ©N)r„   r~   ©Úselfr~   s   &&rL   Ú
fresh_pushÚ_DocState.fresh_push€   ó#   € Ø× Ñ °W²_ T§\¡\ÑRÐRÈ'ÑRÐRrN   c               ó    € V ^8„  d   QhRRRR/# r‰   rJ   )rK   s   "rL   rM   rŠ   ƒ   r‹   rN   c                	óD   € V P                   Vf   V P                  8¬  # T8¬  # r�   )r…   r~   rŽ   s   &&rL   Ú
fresh_pullÚ_DocState.fresh_pullƒ   r’   rN   c               ó    € V ^8„  d   QhRRRR/# r‰   rJ   )rK   s   "rL   rM   rŠ   †   s   € ÷ Dñ D˜]ð D°dñ DrN   c                	óV   € V P                  V4      ;'       g    V P                  V4      # r�   )r�   r•   rŽ   s   &&rL   ÚfreshÚ_DocState.fresh†   s"   € Ø�‰˜wÓ'×CÐC¨4¯?©?¸7Ó+CÐCrN   rJ   ru   r�   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r~   Ú__annotations__rn   r   Úlistr‚   rƒ   r„   r…   r‡   r�   r•   r™   Ú__static_attributes__rJ   rN   rL   r|   r|   r   ss   ‡ ñfð €GˆSÓØ€Dˆ#ƒNÙ!&°tÔ!<€DÐ
Ó<Ù!&°tÔ!<€DÐ
Ó<Ø€L�#ÓØ€L�#ÓØ€IˆtÓ÷S÷S÷Dó DrN   r|   c               ó    € V ^8„  d   QhRRRR/# )rF   rn   rH   rI   rJ   )rK   s   "rL   rM   rM   Š   s   € ÷ :ñ :�sð :˜sñ :rN   c                óÐ   €  V P                  RR4      P                  RR4      p V P	                  RR4      P	                  RR4      #   \         d    T P                  R4      p  L@i ; i)	zc``text`` as ``Path.read_text(encoding="utf-8-sig", errors="replace")`` returns the file holding it.úutf-8Úsurrogateescapeú	utf-8-sigrX   u   ï»¿z
rs   rt   )rx   ÚdecodeÚUnicodeEncodeErrorÚremoveprefixrX   )rn   s   &rL   Úas_disk_readr«   Š   sf   € ð+Ø�{‰{˜7Ð$5Ó6×=Ñ=¸kÈ9ÓUˆð �<‰<˜ Ó%×-Ñ-¨d°DÓ9Ð9øô ô +Ø× Ñ  Ó*Šð+ús   ‚"A ÁA%Á$A%c                  ód  € ] tR t^“tRtRRRRRRRR/R R	 llt]R
 R l4       t]R R l4       tR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltR8 R9 ltR: R; ltR< R= lt R> R? lt!R@ RA lt"RB RC lt#RD RE lt$RFRGRHR/RI RJ llt%RK RL lt&RM RN lt'RO RP lt(RQRRRSR/RT RU llt)RV RW lt*RX RY lt+RZ R[ lt,]R\ R] l4       t-R^ R_ lt.R`R/Ra Rb llt/Rct0R# )dÚ	LSPClientu–   One server process + one workspace root.  ``start()`` â†’ ``open_file()`` â†’ ``wait_for_diagnostics()`` â†’
``diagnostics_for()`` â†’ ``shutdown()``.ÚenvNÚcwdÚinitialization_optionsÚseed_diagnostics_on_first_pushFc               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )rF   Ú	server_idrH   Úworkspace_rootÚcommandz	list[str]r®   zOptional[dict[str, str]]r¯   úOptional[str]r°   zOptional[dict[str, Any]]r±   r†   rI   ÚNonerJ   )rK   s   "rL   rM   ÚLSPClient.__annotate__—   sO   € ÷ 1ñ 1 Sð 1¸#ð 1È	ð 1Ø.ð1Ø<Ið1à)Að1ð 26ð1ð CGñ1rN   c               	óŒ  € Wn         W n        V.V n        \        V4      V n        W@n        T;'       g    TV n        T;'       g    / V n        Wpn        R V n	        R V n
        . V n        R V n        R V n        \        P                  ! 4       V n        ^ V n        / V n        RV P&                  RV P(                  RV P&                  RV P&                  RV P*                  RV P&                  /V n        RV P.                  /V n        / V n        RV n        ^V n        R	V n        R
V n        \        P<                  ! 4       V n        ^ V n         R # )Nzwindow/workDoneProgress/createzworkspace/configurationzclient/registerCapabilityzclient/unregisterCapabilityzworkspace/workspaceFolderszworkspace/diagnostic/refreshztextDocument/publishDiagnosticsÚstoppedTF)!r³   r´   Úworkspace_foldersr¡   Ú_commandÚ_envÚ_cwdÚ_init_optionsÚ_seed_first_pushÚ_procÚ_stderr_taskÚ_stderr_tailÚ
_exit_codeÚ_reader_taskÚasyncioÚLockÚ_cleanup_lockÚ_next_idÚ_pendingÚ_handle_nullÚ_handle_workspace_configurationÚ_handle_workspace_foldersÚ_request_handlersÚ_handle_publish_diagnosticsÚ_notification_handlersÚ_docsÚ_stateÚ
_sync_kindÚ_pull_supportedÚ	_stoppingÚEventÚ_push_eventÚ_push_counter)r�   r³   r´   rµ   r®   r¯   r°   r±   s   &$$$$$$$rL   Ú__init__ÚLSPClient.__init__—   s8  € ð #ŒØ,Ôð .<Ð,<ˆÔÜ˜W›ˆŒØŒ	Ø×)Ð)˜>ˆŒ	Ø3×9Ð9°rˆÔØ >Ôà;?ˆŒ
Ø48ˆÔà')ˆÔØ)-ˆŒØ48ˆÔÜ$Ÿ\š\›^ˆÔØˆŒØ35ˆŒð
 -¨d×.?Ñ.?Ø% t×'KÑ'KØ'¨×):Ñ):Ø)¨4×+<Ñ+<Ø(¨$×*HÑ*HØ*¨D×,=Ñ,=ðN
ˆÔð .¨t×/OÑ/OðI
ˆÔ#ð ,.ˆŒ
Ø$ˆŒØ ˆŒà%)ˆÔØ$ˆŒô #Ÿ=š=›?ˆÔØˆÖrN   c               ó   € V ^8„  d   QhRR/# ©rF   rI   rH   rJ   )rK   s   "rL   rM   r¸   Ë   s   € ÷ ñ �sñ rN   c                	ó   € V P                   # r�   )rÒ   ©r�   s   &rL   ÚstateÚLSPClient.stateÊ   s   € à�{‰{ÐrN   c               ó   € V ^8„  d   QhRR/# ©rF   rI   r†   rJ   )rK   s   "rL   rM   r¸   Ï   s   € ÷ Gñ G˜Dñ GrN   c                	óP   € V P                   R 8H  ;'       d    V P                  4       # )r   )rÒ   Ú_connection_is_openrÞ   s   &rL   Ú
is_runningÚLSPClient.is_runningÎ   s"   € à�{‰{˜iÑ'×FÐF¨D×,DÑ,DÓ,FÐFrN   c               ó   € V ^8„  d   QhRR/# râ   rJ   )rK   s   "rL   rM   r¸   Ò   s   € ÷ 
ñ 
 Tñ 
rN   c                	óf  € V P                   V P                  r!V P                  \        9   ;'       d�    VR J;'       du    VP                  R J ;'       d_    VP
                  R J;'       dI    VP
                  P                  4       '       * ;'       d"    VR J;'       d    VP                  4       '       * # r�   )rÁ   rÅ   rÒ   Ú_LIVE_STATESÚ
returncodeÚstdinÚ
is_closingÚdone)r�   ÚprocÚreaders   &  rL   rä   ÚLSPClient._connection_is_openÒ   s«   € Ø—z‘z 4×#4Ñ#4ˆfà�K‰Kœ<Ñ'÷ 9ð 9Ø˜DÐ ÷9ð 9Ø%)§_¡_¸Ð%<÷9ð 9à—
‘
 $Ð&÷9ð 9à/3¯z©z×/DÑ/DÓ/FÔ+F÷9ð 9ð ˜dÐ"÷9ð 9ð ,2¯;©;«=Ô'8ð		
rN   c               ó   € V ^8„  d   QhRR/# ©rF   rI   r·   rJ   )rK   s   "rL   rM   r¸   Ý   s   € ÷ %ñ %˜Tñ %rN   c              ƒ  óR  "  € V P                   \        9   d   R# RV n          V P                  4       G Rj  x€L
  V P                  4       G Rj  x€L
  V P	                  4       '       g   \        R4      hRV n         R#  LF L0  \         Ed™   pRT n         T P                  pTEe   \        P                  ! \        4      ;_uu_ 4        \        P                  ! TP                  4       RR7      G Rj  x€L 
  RRR4       M  + '       g   i     M; iTP                  e   TP                  T n        T P                   pTeu   \        P                  ! \        4      ;_uu_ 4        \        P                  ! \        P"                  ! T4      RR7      G Rj  x€L 
  RRR4       M  + '       g   i     M; i\        P"                  ! T P%                  4       4      G Rj  x€L 
  T P'                  4       pT'       d%   \)        T\        4      '       d   T R	T R
23Tn        h Rp?ii ; i5i)zkSpawn + initialize handshake.  On failure the process is killed and state is ``"error"``; re-call to retry.Nr   z.server connection closed during initializationr   Úerrorr   ©Útimeoutr   ú (Ú))rÒ   ré   Ú_spawnÚ_initializerä   r   ÚBaseExceptionrÁ   Ú
contextlibÚsuppressÚ	ExceptionrÆ   Úwait_forÚwaitrê   rÄ   rÂ   ÚshieldÚ_cleanup_processÚfailure_detailsÚ
isinstanceÚargs)r�   Úerî   Ústderr_taskÚdetailss   &    rL   ÚstartÚLSPClient.startÝ   sŒ  é € à�;‰;œ,Ô&ÙØ ˆŒð 	Ø—+‘+“-×ÐØ×"Ñ"Ó$×$Ð$Ø×+Ñ+×-Ò-Ü&Ð'WÓXÐXØ#ˆDŽKñ	  Ù$øô õ 	Ø!ˆDŒKð
 —:‘:ˆDØÓÜ×(Ò(¬×3Õ3Ü!×*Ò*¨4¯9©9«;ÀÔD×DÑD÷ 4×3×3Ð3úà—?‘?Ò.Ø&*§o¡o�D”OØ"×/Ñ/�ØÒ*Ü#×,Ò,¬Y×7Õ7Ü%×.Ò.¬w¯~ª~¸kÓ/JÐTWÔX×XÑX÷ 8×7×7Ð7úô
 —.’. ×!6Ñ!6Ó!8Ó9×9Ñ9ð ×*Ñ*Ó,ˆGßœ: a¬×3Ò3Ø˜C˜r ' ¨!Ð,Ð.�”Øûð5	üs«   ‚H'¢B  µA<¶B  ÁA>ÁB  Á(B  Á:H'Á<B  Á>B  Â H$Â:HÃ*C?Ã0C3
Ã1C?Ã6	HÃ?DÄ
AHÅ#0F"ÆF
ÆF"Æ	HÆ"F2Æ-/HÇGÇHÇ:%HÈH$È$H'c               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸     s   € ÷ Eñ E˜dñ ErN   c              ƒ  	óX  "  € ^ RI Hp ^ RIHp V P                  p\
        P                  R8X  d3   V^ ,          P                  4       P                  R4      '       d   RR.VOp \        P                  ! V^ ,          .VR,          O5R\        R\        P                  P                  R	\        P                  P                  R
\        P                  P                  RT! / V! 4       CV P                  ;'       g    / C4      RV P                  RRR\!        4       / G Rj  x€L
 V n        \        P(                  ! T P+                  4       4      T n        \        P(                  ! T P/                  4       4      T n        R#  L]  \$         d    p\'        RT^ ,           RT R24      ThRp?ii ; i5i)é    )Údelegated_child_subprocess_env)Úhermes_subprocess_envÚwin32zcmd.exez/crg   Úlimitrë   ÚstdoutÚstderrr®   r¯   Ústart_new_sessionTÚcreationflagsNzLSP server binary not found: r÷   rø   )z.cmdz.bat)Úagent.delegation_contextr  Útools.environments.localr  r¼   ÚsysÚplatformÚlowerrw   rÆ   Úcreate_subprocess_execÚ_STREAM_LIMITÚ
subprocessÚPIPEr½   r¾   r   rÁ   ÚFileNotFoundErrorr   Úcreate_taskÚ_drain_stderrrÂ   Ú_reader_looprÅ   )r�   r  r  Úcmdr  s   &    rL   rù   ÚLSPClient._spawn  sŒ  é € ÝKÝBØ�m‰mˆÜ�<‰<˜7Ô" s¨1¥v§|¡|£~×'>Ñ'>Ð?O×'PÒ'PØ˜dÐ) SÐ)ˆCð	Zô  '×=Ò=Ø�A•ð Ø˜R�ò Ü(5ð ä×(Ñ(×-Ñ-ð ä6=×6HÑ6H×6MÑ6Mð äV]×VhÑVh×VmÑVmð ñ 3Ð3cÑ6KÓ6MÐ3cÐRV×R[ÑR[×RaÐRaÐ_aÐ3cÓdð ð ko×jsÑjsð ð #'ð	 ô 7IÓ6Jñ	 ÷ ˆDŒJô $×/Ò/°×0BÑ0BÓ0DÓEˆÔÜ#×/Ò/°×0AÑ0AÓ0CÓDˆÖñøô !ô 	ZÜ"Ð%BÀ3ÀqÅ6À(È"ÈQÈCÈqÐ#QÓRÐXYÐYûð	ZüsD   ‚A F*Á#BE= Ã8%E= ÄE;Ä	E= Ä'AF*Å;E= Å=F'ÆF"Æ"F'Æ'F*c               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸     s   € ÷ ñ  Tñ rN   c              ƒ  	ó’  "  € V P                   e   V P                   P                  f   R # V P                   P                  p   VP                  4       G R j  x€L
 pT'       g   R # TP                  RRR7      P                  4       ;p'       g   KO  \        P                  RT P                  TR,          4       T P                  P                  TR,          4       T P                  R \        ) 1 K¯   L™  \         d%    \        P                  RT P                  4        Kß  i ; i  \        P                  \        3 d     R # i ; i5i)Nz3[%s] stderr: line exceeded stream limit, discardingr¥   rX   )Úerrorsz[%s] stderr: %s:Niè  N)rÁ   r  ÚreadlineÚ
ValueErrorÚloggerÚwarningr³   r¨   ra   ÚdebugrÃ   ÚappendÚSTDERR_TAIL_LINESrÆ   ÚCancelledErrorÚOSError)r�   r  rp   rn   s   &   rL   r!  ÚLSPClient._drain_stderr  s  é € Ø�:‰:Ò §¡×!2Ñ!2Ò!:ÙØ—‘×"Ñ"ˆð	ØðØ!'§¡Ó!2×2�D÷ ÙØŸ;™; w°y˜;ÓA×HÑHÓJÐJ�4×JÐJÜ—L‘LÐ!2°D·N±NÀDÈÅKÔPØ×%Ñ%×,Ñ,¨T°%­[Ô9Ø×)Ñ)Ð*=Ô,=Ð+=Ð*=Ò>ñ! 3øÜ!ô 	ô
 —N‘NØMØŸ™ôò ð	ûô  ×&Ñ&¬Ð0ô 	Úð	üsl   ‚?EÁD% ÁC3 ÁC1ÁC3 ÁD% Á$EÁ&&D% ÂA D% Ã1C3 Ã3+D"ÄD% Ä!D"Ä"D% Ä%EÅ EÅEÅEc               ó   € V ^8„  d   QhRR/# rÜ   rJ   )rK   s   "rL   rM   r¸   8  s   € ÷ 1ñ 1 ñ 1rN   c                ó¶   € V P                   pV P                  e   V P                  pM!Ve   VP                  e   VP                  pMR# V^ 8  d   RV)  2# RV 2# )zPHuman rendering of the server exit status; empty when the process is still live.r   zserver exited on signal zserver exited with code )rÁ   rÄ   rê   )r�   rî   Úcodes   &  rL   Ú_describe_exitÚLSPClient._describe_exit8  s\   € à�z‰zˆØ�?‰?Ò&Ø—?‘?‰DØÒ $§/¡/Ò"=Ø—?‘?‰DáØ�!Œ8Ø-¨t¨e¨WÐ5Ð5Ø)¨$¨Ð0Ð0rN   c               ó   € V ^8„  d   QhRR/# rÜ   rJ   )rK   s   "rL   rM   r¸   E  s   € ÷  ñ   ñ  rN   c                ó   € . pV P                  4       ;p'       d   VP                  V4       V P                  '       d2   VP                  RRP                  V P                  4      ,           4       RP                  V4      # )zWExit status + last stderr lines for a failed spawn/initialize; empty for a live server.zlast stderr lines: z | z; )r5  r-  rÃ   Újoin)r�   ÚpartsÚ	exit_descs   &  rL   r  ÚLSPClient.failure_detailsE  sc   € àˆØ×+Ñ+Ó-Ð-ˆ9Ö-Ø�L‰L˜Ô#Ø××ÐØ�L‰LÐ.°·±¸D×<MÑ<MÓ1NÕNÔOØ�y‰y˜ÓÐrN   c               ó    € V ^8„  d   QhRRRR/# ©rF   ÚmsgÚdictrI   r·   rJ   )rK   s   "rL   rM   r¸   N  s   € ÷ 	Uñ 	U˜Tð 	U dñ 	UrN   c                	ó&  € \        V4      w  r#VR 8X  d   V P                  W14       R# VR8X  d(   \        P                  ! V P	                  W14      4       R# VR8X  d   V P                  W14       R# \        P                  RV P                  V4       R# )ÚresponseÚrequestÚnotificationz![%s] dropping invalid message: %rN)	r   Ú_dispatch_responserÆ   r   Ú_dispatch_requestÚ_dispatch_notificationr*  r+  r³   )r�   r?  ÚkindÚkeys   &&  rL   Ú	_dispatchÚLSPClient._dispatchN  sq   € Ü$ SÓ)‰	ˆØ�:ÔØ×#Ñ# CÖ-Ø�YÔÜ×Ò × 6Ñ 6°sÓ @ÖAØ�^Ô#Ø×'Ñ'¨Ö1ä�N‰NÐ>ÀÇÁÐPSÖTrN   c               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸   Y  s   € ÷ .ñ . Dñ .rN   c              ƒ  	ó*  "  € V P                   e   V P                   P                  f   R #  \        V P                   P                  4      G R j  x€L
 ;pe   V P                  V4       K>  \        P                  RV P                  4       V P                  '       * ;'       d    V P                  \        9   pV'       d   RV n        \        V P                   P#                  4       4       F5  pVP%                  4       '       d   K  VP'                  \        R4      4       K7  	  V P                   P)                  4        V'       d   V P+                  4       G R j  x€L
  R # R #  EL  \         d-   p\        P                  RT P                  T4        R p?EL
R p?i\        P                  \        3 d     EL+i ; i Lb  T P                  '       * ;'       d    T P                  \        9   pT'       d   RT n        \        T P                   P#                  4       4       F5  pTP%                  4       '       d   K  TP'                  \        R4      4       K7  	  T P                   P)                  4        T'       d   T P+                  4       G R j  x€L 
  i i ; i5i)Nz![%s] server closed stdout cleanlyz&[%s] protocol error in reader loop: %srô   zserver connection closed)rÁ   r  r   rJ  r*  r,  r³   r   r+  rÆ   r/  r0  rÕ   rÒ   ré   r¡   rÊ   Úvaluesrí   Úset_exceptionÚclearr  )r�   r?  r  Úunexpected_closeÚfuts   &    rL   r"  ÚLSPClient._reader_loopY  sÔ  é € Ø�:‰:Ò §¡×!2Ñ!2Ò!:Ùð	.Ü ,¨T¯Z©Z×->Ñ->Ó ?×?Ð?�3ÒLØ—‘˜sÖ#Ü�L‰LÐ<¸d¿n¹nÔMð $(§>¡>Ô1×QÐQ°d·k±kÄ\Ñ6QÐßØ%�”Ü˜DŸM™M×0Ñ0Ó2Ö3�Ø—x‘x—z”zØ×%Ñ%Ô&6Ð7QÓ&RÖSñ 4ð �M‰M×ÑÔ!ßØ×+Ñ+Ó-×-Ò-ñ  ò @øô  ô 	XÜ�N‰NÐCÀTÇ^Á^ÐUV×WÒWûÜ×&Ñ&¬Ð0ô 	Úð	úñ .øð $(§>¡>Ô1×QÐQ°d·k±kÄ\Ñ6QÐßØ%�”Ü˜DŸM™M×0Ñ0Ó2Ö3�Ø—x‘x—z”zØ×%Ñ%Ô&6Ð7QÓ&RÖSñ 4ð �M‰M×ÑÔ!ßØ×+Ñ+Ó-×-Ò-ð  üs¨   ‚)J¬"E" ÁEÁ;E" Â
JÂ"JÂ>A JÄ?JÅJÅF9ÅJÅE" Å"F6Å-!FÆF; ÆF6Æ1F6Æ2F; Æ5F6Æ6F; Æ9JÆ;4JÇ0A JÈ5?JÉ5JÊJÊ	JÊJc               ó   € V ^8„  d   QhRR/# )rF   rI   zlist[dict[str, str]]rJ   )rK   s   "rL   rM   r¸   o  s   € ÷ <ñ <Ð$8ñ <rN   c                	óV   € V P                    Uu. uF  p\        V4      NK  	  up# u upi r�   )r»   rc   )r�   Úrs   & rL   Ú_workspace_foldersÚLSPClient._workspace_folderso  s&   € Ø$(×$:Ò$:Ó;Ñ$:˜q”˜–
Ñ$:Ñ;Ð;ùÒ;s   �&c               ó    € V ^8„  d   QhRRRR/# ©rF   r]   rH   rI   r·   rJ   )rK   s   "rL   rM   r¸   r  s   € ÷ 
ñ 
¨sð 
°tñ 
rN   c              ƒ  óÀ   "  € WP                   9   d   R# V P                   P                  V4       V P                  RRR\        V4      .R. //4      G Rj  x€L
  R#  L5i)z³Attach another root to a running multi-root server.  Idempotent; the folder is recorded
before the notification is sent so concurrent callers for the same root only announce once.Nú#workspace/didChangeWorkspaceFoldersÚeventÚaddedÚremoved)r»   r-  Ú_send_notificationrc   ©r�   r]   s   &&rL   Úadd_workspace_folderÚLSPClient.add_workspace_folderr  s^   é € ð ×)Ñ)Ô)ÙØ×Ñ×%Ñ% dÔ+Ø×%Ñ%Ø1°G¸gÌÐPTËÀÐXaÐceÐ=fÐ3gó
÷ 	
ô 	
ùó   ‚AAÁAÁAc               ó    € V ^8„  d   QhRRRR/# rZ  rJ   )rK   s   "rL   rM   r¸   |  s   € ÷ 
ñ 
°#ð 
¸$ñ 
rN   c           
   ƒ  óÀ   "  € WP                   9  d   R# V P                   P                  V4       V P                  RRR. R\        V4      .//4      G Rj  x€L
  R#  L5i)z§Detach ``root`` from a running multi-root server (a removed worktree) so the process keeps
serving its sibling roots instead of being torn down with them.  Idempotent.Nr\  r]  r^  r_  )r»   Úremover`  rc   ra  s   &&rL   Úremove_workspace_folderÚ!LSPClient.remove_workspace_folder|  s_   é € ð ×-Ñ-Ô-ÙØ×Ñ×%Ñ% dÔ+Ø×%Ñ%Ø1°G¸gÀrÈ9ÔW^Ð_cÓWdÐVeÐ=fÐ3gó
÷ 	
ô 	
ùrd  c               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸   †  s   € ÷ pñ p 4ñ prN   c              ƒ  	ó¾  "  € R \        V P                  4      RV P                  R\        P                  ! 4       RV P	                  4       RV P
                  R\        /p\        P                  ! V P                  RV4      \        R7      G Rj  x€L
 pVP                  R4      ;'       g    / P                  R	4      p\        V\        4      '       d   VP                  R
4      p\        V\        4      '       d   TM^V n        V P!                  R/ 4      G Rj  x€L
  V P
                  '       d)   V P!                  RRV P
                  /4      G Rj  x€L
  R# R#  LÊ LB L5i)ÚrootUriÚrootPathÚ	processIdr#   ÚinitializationOptionsÚcapabilitiesÚ
initializerõ   NÚtextDocumentSyncÚchangeÚinitializedz workspace/didChangeConfigurationÚsettings)r[   r´   rU   ÚgetpidrW  r¿   rD   rÆ   rÿ   Ú_send_requestÚINITIALIZE_TIMEOUTÚgetr  r@  r}   rÓ   r`  )r�   ÚparamsÚresultÚsyncs   &   rL   rú   ÚLSPClient._initialize†  s"  é € à”x × 3Ñ 3Ó4°jÀ$×BUÑBUÐWbÔdf×dmÒdmÓdoØ × 7Ñ 7Ó 9Ø# T×%7Ñ%7¸ÔI]ð
ˆô
 ×'Ò'¨×(:Ñ(:¸<ÈÓ(PÔZlÔm×mˆØ—
‘
˜>Ó*×0Ð0¨b×5Ñ5Ð6HÓIˆÜ�dœD×!Ò!Ø—8‘8˜HÓ%ˆDÜ",¨T´3×"7Ò"7™$¸QˆŒØ×%Ñ% m°RÓ8×8Ð8Ø××ÐØ×)Ñ)Ð*LÈzÐ[_×[mÑ[mÐNnÓo×oÒoñ ñ nñ
 	9áoùsC   ‚B
EÂEÂEÂ)A-EÄEÄEÄ-!EÅEÅ	EÅEÅEc               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸   •  s   € ÷ *ñ * ñ *rN   c              ƒ  ó$  "  € V P                   '       d   R# RV n          V P                  '       dÒ    \        P                  ! V P	                  RR4      RR7      G Rj  x€L
   V P                  RR4      G Rj  x€L
  V P                  ;pev   VP                  fh   \        P                  ! \        P
                  4      ;_uu_ 4        \        P                  ! VP                  4       \        R7      G Rj  x€L
  RRR4       RV n        V P#                  4       G Rj  x€L
  R#  LÅ  \
        \        \        3 d     LÛi ; i LÈ  \         d     LÓi ; i L^  + '       g   i     Ld; i LL  RT n        T P#                  4       G Rj  x€L 
  i ; i5i)z•Best-effort graceful shutdown: ``shutdown`` + ``exit``, wait ``SHUTDOWN_GRACE`` for the
server to honour ``exit``, then SIGTERM/SIGKILL.  Idempotent.NTÚshutdowng       @rõ   Úexitrº   )rÕ   rå   rÆ   rÿ   rw  ÚTimeoutErrorr   r   r`  rþ   rÁ   rê   rü   rý   r   ÚSHUTDOWN_GRACErÒ   r  )r�   rî   s   & rL   r€  ÚLSPClient.shutdown•  sC  é € ð �>�>ˆ>ÙØˆŒð	*Ø��ˆðÜ!×*Ò*¨4×+=Ñ+=¸jÈ$Ó+OÐY\Ô]×]Ð]ðØ×1Ñ1°&¸$Ó?×?Ð?ð
 !ŸJ™JÐ&�DÒ3¸¿¹Ò8OÜ#×,Ò,¬W×-AÑ-A×BÕBÜ%×.Ò.¨t¯y©y«{ÄNÔS×SÐS÷ Cð $ˆDŒKØ×'Ñ'Ó)×)Ò)ñ ^øÜ$¤oÔ7GÐHô Ùðúñ @øÜ ô Ùðúñ T÷ C×Búñ *øð $ˆDŒKØ×'Ñ'Ó)×)Ò)üsÊ   ‚FŸE+ ²+D% ÁD#ÁD% Á#E Á8EÁ9E Á=A
E+ Ã.EÃ5EÃ6EÃ:E+ ÄFÄE)ÄFÄ#D% Ä%D>Ä;E+ Ä=D>Ä>E+ ÅE ÅEÅE+ ÅEÅE+ ÅEÅE&	Å!E+ Å)FÅ+FÆF	ÆFÆFc               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸   ®  s   € ÷ 2ñ 2¨ñ 2rN   c           	   ƒ  	óè  "  € V P                   ;_uu_4       GR j  x€L
  V P                  V P                  .pR ;V n        V n        V P                  R uq n        V Uu. uF=  q3f   K  VP	                  4       '       d   K   V\
        P                  ! 4       Jg   K;  VNK?  	  ppV F  pVP                  4        K  	  \
        P                  ! VRR/ G R j  x€L
  Vf    R R R 4      GR j  x€L
  R # VP                  e3   V P                  f   VP                  V n
         R R R 4      GR j  x€L
  R #  ^ RIHp \
        P                  ! WRP                  4      G R j  x€L
 '       g   VP                  4        \         P"                  ! \
        P$                  4      ;_uu_ 4        \
        P&                  ! VP)                  4       \*        R7      G R j  x€L
  R R R 4       T P                  f    TP                  e   TP                  T n
        R R R 4      GR j  x€L
  R #  EL u upi  ELO EL= Lÿ LÐ L]  + '       g   i     Lc; i  \,         d     Lsi ; i L>  + GR j  x€L 
 '       g   i     R # ; i5i)NÚreturn_exceptionsT)Úkill_process_treerõ   )rÈ   rÅ   rÂ   rÁ   rí   rÆ   Úcurrent_taskÚcancelÚgatherrê   rÄ   Úagent.deadlinerˆ  Ú	to_threadÚpidÚkillrü   rý   r‚  rÿ   r   rƒ  ÚProcessLookupError)r�   Útasksrî   ÚtÚliverˆ  s   &     rL   r  ÚLSPClient._cleanup_process®  s½  é € Ø×%×%×%Ó%Ø×&Ñ&¨×(9Ñ(9Ð:ˆEØ48Ð8ˆDÔ Ô 1Ø#Ÿz™z¨4ÐˆD”*Ù$Ók™u˜!”A¸a¿f¹f¿h”AÈ1ÔT[×ThÒThÓTjÐKj—A�A™uˆDÐkÛ�Ø—‘–
ñ ä—.’. $Ð?¸$Ñ?×?Ð?ØŠ|Ø÷ &×%Ñ%ð �‰Ò*Ø—?‘?Ò*Ø&*§o¡o�D”OØ÷ &×%Ñ%ðõ =ä$×.Ò.Ð/@Ç(Á(ÓK×KÖKØ—I‘I”KÜ×(Ò(¬×)=Ñ)=×>Õ>Ü!×*Ò*¨4¯9©9«;ÄÔO×OÐO÷ ?ð �‰Ò&¨4¯?©?Ò+FØ"&§/¡/�”÷; &×%Ô%ùò lò @ô &ñ, Lñ P÷ ?×>ûä%ô Ùðú÷5 &×%×%Ó%üs"  ‚I2›HœI2Ÿ>IÁHÁ'HÁ?HÂHÂ 4IÃH#Ã	IÃI2Ã)H&Ã*I2Ã0.IÄI2Ä)H)Ä*I2Ä1)IÅH+Å	IÅ%<IÆ!.H/	ÇH-ÇH/	ÇIÇ-IÈ	I2ÈIÈI2ÈIÈ&I2È)I2È+IÈ-H/	È/H?È:IÈ>IÈ?IÉIÉIÉIÉIÉI2ÉI/	ÉIÉ
I/	É'I/	É)	I2c               ó    € V ^8„  d   QhRRRR/# r>  rJ   )rK   s   "rL   rM   r¸   Ð  s   € ÷ 'ñ ' ð '¨ñ 'rN   c              ƒ  	ó  "  € V P                   e   V P                   P                  f   Q hV P                   P                  P                  \        V4      4       V P                   P                  P	                  4       G R j  x€L
  R #  L5ir�   )rÁ   rë   Úwriter   Údrain©r�   r?  s   &&rL   Ú_writeÚLSPClient._writeÐ  s]   é € Ø�z‰zÒ%¨$¯*©*×*:Ñ*:Ò*FÐFÐFØ�
‰
×Ñ×Ñœ~¨cÓ2Ô3Ø�j‰j×Ñ×$Ñ$Ó&×&Ô&ùs   ‚A>B	Â BÂB	c               ó    € V ^8„  d   QhRRRR/# )rF   ÚmethodrH   rI   r·   rJ   )rK   s   "rL   rM   r¸   Õ  s   € ÷ Xñ X Cð X¨Dñ XrN   c                	óR   € V P                  4       '       g   \        R V: R24      hR# )zcannot send z: server connection closedN)rä   r   )r�   r�  s   &&rL   Ú_require_openÚLSPClient._require_openÕ  s+   € Ø×'Ñ'×)Ò)Ü" \°&±Ð;UÐ#VÓWÐWñ *rN   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   r�  rH   rz  r   rI   rJ   )rK   s   "rL   rM   r¸   Ù  s!   € ÷ ,ñ ,¨#ð ,°sð ,¸sñ ,rN   c              ƒ  	ó:  "  € V P                  V4       V P                  V P                  ^,           uq0n        \        P                  ! 4       P	                  4       pW@P
                  V&    V P                  \        W1V4      4      G Rj  x€L
   TG Rj  x€L
 T P
                  P                  TR4       #  L+  \         d5   pT P
                  P                  TR4       \        RT: RT 24      ThRp?ii ; i Ld  T P
                  P                  TR4       i ; i5i)rh   Nzsend failed for ú: )rŸ  rÉ   rÆ   Úget_running_loopÚcreate_futurerÊ   rš  r   Ú_WRITE_ERRORSÚpopr   )r�   r�  rz  Úreq_idrR  r  s   &&&   rL   rw  ÚLSPClient._send_requestÙ  sí   é € Ø×Ñ˜6Ô"Ø $§¡¨t¯}©}¸qÕ/@Ðˆ”Ü%×6Ò6Ó8×FÑFÓHˆØ #�‰�fÑð	NØ—+‘+œl¨6¸6ÓBÓC×CÐCð	,Ø—9à�M‰M×Ñ˜f dÕ+ñ DøÜô 	NØ�M‰M×Ñ˜f dÔ+Ü"Ð%5°f±Z¸rÀ!ÀÐ#EÓFÈAÐMûð	Núñ øà�M‰M×Ñ˜f dÕ+üs`   ‚A'DÁ*B6 ÂB4Â	B6 ÂC: ÂC8ÂC: ÂDÂ4B6 Â6C5Ã/C0Ã0C5Ã5DÃ8C: Ã:DÄDc               ó(   € V ^8„  d   QhRRRRRRRR/# )rF   r�  rH   rz  r   rö   ÚfloatrI   rJ   )rK   s   "rL   rM   r¸   è  s0   € ÷ Gñ G°Sð GÀ#ð GÐSXð GÐ]`ñ GrN   c             ƒ  ó‚  "  € \        \        ^,           4       F3  p \        P                  ! V P	                  W4      VR7      G Rj  x€L
 u # 	  R#  L
  \
         d^   pTP                  \        8w  g   T\        8¼  d   h \        P                  ! \        ^T,          ,          4      G Rj  x€L 
   Rp?Kž  Rp?ii ; i5i)z[Send a request, retrying ``ContentModified`` (-32801) with backoff; other errors propagate.rõ   N)
ÚrangeÚMAX_CONTENT_MODIFIED_RETRIESrÆ   rÿ   rw  r   r4  r   ÚsleepÚRETRY_BASE_DELAY)r�   r�  rz  rö   Úattemptr  s   &&&$  rL   Ú_send_request_with_retryÚ"LSPClient._send_request_with_retryè  sŠ   é € äÔ9¸AÕ=Ö>ˆGðGÜ$×-Ò-¨d×.@Ñ.@ÀÓ.PÐZaÔb×bÒbó ?ábøÜ"ô GØ—6‘6Ô3Ô3°wÔB^Ô7^ØÜ—m’mÔ$4¸¸W½Õ$EÓF×F×FûðGüsM   ‚B?�*AÁAÁAÁB?ÁAÁB<ÁAB7Â+B.Â,B7Â1B?Â7B<Â<B?c               ó$   € V ^8„  d   QhRRRRRR/# )rF   r�  rH   rz  r   rI   r·   rJ   )rK   s   "rL   rM   r¸   ò  s&   € ÷ Qñ Q¨sð Q¸Cð QÀDñ QrN   c              ƒ  	óî   "  € V P                  V4        V P                  \        W4      4      G R j  x€L
  R #  L  \         d-   p\        P                  RT P                  Y4        R p?R # R p?ii ; i5i)Nz[%s] notify %s failed: %s)rŸ  rš  r   r¦  r*  r,  r³   )r�   r�  rz  r  s   &&& rL   r`  ÚLSPClient._send_notificationò  sZ   é € Ø×Ñ˜6Ô"ð	QØ—+‘+Ô/°Ó?Ó@×@Ô@øÜô 	QÜ�L‰LÐ4°d·n±nÀf×PÒPûð	Qüs7   ‚A5•; ²9³; ·A5¹; »A2Á!A-Á'A5Á-A2Á2A5c               ó    € V ^8„  d   QhRRRR/# r>  rJ   )rK   s   "rL   rM   r¸   ù  s   € ÷ ñ  Tð ¨dñ rN   c              ƒ  ó  "  € V P                   ec   V P                   P                  eI   V P                   P                  P                  4       '       g    V P                  V4      G Rj  x€L
  R# R# R# R#  L  \         d     R# i ; i5i)uT   Send a response to a serverâ†’client request; silently no-ops when the pipe is gone.N)rÁ   rë   rì   rš  r¦  r™  s   &&rL   Ú_send_replyÚLSPClient._send_replyù  sn   é € à�:‰:Ò! d§j¡j×&6Ñ&6Ò&BÈ4Ï:É:×K[ÑK[×KfÑKf×KhÒKhðØ—k‘k #Ó&×&Ò&ñ LiÑ&BÑ!á&øÜ ô Úðüs<   ‚AB	ÁA7 Á(A5Á)A7 Á-B	Á5A7 Á7BÂB	ÂBÂB	c               ó$   € V ^8„  d   QhRRRRRR/# )rF   r¨  r}   r?  r@  rI   r·   rJ   )rK   s   "rL   rM   r¸     s&   € ÷ ~ñ ~¨ð ~°4ð ~¸Dñ ~rN   c                	ó¦  € V P                   P                  V4      pVe   VP                  4       '       d   R # RV9  d#   VP                  VP                  R4      4       R # VR,          ;'       g    / pVP	                  \        \        VP                  RR4      4      \        VP                  RR4      4      VP                  R4      4      4       R # )Nrô   r{  r4  ÚmessageÚunknownÚdataé ƒÿÿ)rÊ   ry  rí   Ú
set_resultrO  r   r}   rH   )r�   r¨  r?  rR  Úerrs   &&&  rL   rE  ÚLSPClient._dispatch_response  sŸ   € Ø�m‰m×Ñ Ó'ˆØŠ;˜#Ÿ(™(Ÿ*š*ÙØ˜#ÔØ�N‰N˜3Ÿ7™7 8Ó,Ô-ÙØ�'�l× Ð ˜bˆØ×Ñœ/¬#¨c¯g©g°f¸fÓ.EÓ*FÌÈCÏGÉGÐT]Ð_hÓLiÓHjÐlo×lsÑlsÐtzÓl{Ó|Ö}rN   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   r¨  r   r?  r@  rI   r·   rJ   )rK   s   "rL   rM   r¸     s!   € ÷ &ñ &¨cð &¸ð &Àñ &rN   c              ƒ  	ó¸  "  € VP                  R R4      pV P                  P                  V4      pVf   \        V\        RV 24      pM) \	        Y! VP                  R4      4      G Rj  x€L
 4      pV P                  V4      G Rj  x€L
  R#  L#  \
         d<   p\        P                  RT P                  Y64       \        TRRT 24      p Rp?L^Rp?ii ; i LQ5i)r�  r   Nzmethod not found: rz  z"[%s] request handler %s failed: %szhandler failed: rÀ  )
ry  rÎ   r   r   r   rþ   r*  r+  r³   r¹  )r�   r¨  r?  r�  ÚhandlerÚreplyr  s   &&&    rL   rF  ÚLSPClient._dispatch_request  sË   é € Ø—‘˜ 2Ó&ˆØ×(Ñ(×,Ñ,¨VÓ4ˆØŠ?Ü'¨Ô0FÐJ\Ð]cÐ\dÐHeÓf‰EðTÜ% f°G¸C¿G¹GÀHÓ<MÓ4N×.NÓO�ð ×Ñ˜uÓ%×%Ò%ñ	 /OøÜô TÜ—‘ÐCÀTÇ^Á^ÐU[Ô_Ü+¨F°FÐ>NÈqÈcÐ<RÓS•ûðTúñ 	&ùsN   ‚ACÁ
B Á)B
Á*B Á2CÂCÂCÂB ÂCÂ1CÃCÃCÃCc               ó$   € V ^8„  d   QhRRRRRR/# )rF   r�  rH   r?  r@  rI   r·   rJ   )rK   s   "rL   rM   r¸     s&   € ÷ _ñ _¨Sð _°tð _Àñ _rN   c                	óì   € V P                   P                  V4      pVf   R #  V! VP                  R4      4       R #   \         d-   p\        P	                  RT P
                  Y4        R p?R # R p?ii ; i)Nrz  z'[%s] notification handler %s failed: %s)rÐ   ry  rþ   r*  r,  r³   )r�   r�  r?  rÆ  r  s   &&&  rL   rG  Ú LSPClient._dispatch_notification  sb   € Ø×-Ñ-×1Ñ1°&Ó9ˆØŠ?Ùð	_Ù�C—G‘G˜HÓ%Ö&øÜô 	_Ü�L‰LÐBÀDÇNÁNÐTZ×^Ò^ûð	_ús   £< ¼A3Á!A.Á.A3c               ó    € V ^8„  d   QhRRRR/# ©rF   rz  r   rI   rJ   )rK   s   "rL   rM   r¸   #  s   € ÷ ñ ¨ð °ñ rN   c              ƒ  	ó   "  € R # 5ir�   rJ   ©r�   rz  s   &&rL   rË   ÚLSPClient._handle_null#  s   é € Ùùs   ‚c               ó    € V ^8„  d   QhRRRR/# rÍ  rJ   )rK   s   "rL   rM   r¸   &  s   € ÷ )ñ )°cð )¸cñ )rN   c              ƒ  	ó*   "  € V P                  4       # 5ir�   )rW  rÏ  s   &&rL   rÍ   Ú#LSPClient._handle_workspace_folders&  s   é € Ø×&Ñ&Ó(Ð(ùs   ‚c               ó    € V ^8„  d   QhRRRR/# rÍ  rJ   )rK   s   "rL   rM   r¸   )  s   € ÷ Rñ R¸Cð RÀCñ RrN   c              ƒ  ó¸   "  € \        V\        4      '       g   R.# VP                  R4      ;'       g    .  Uu. uF  q P                  V4      NK  	  up# u upi 5i)zOWalk dotted ``section`` paths through initializationOptions; null when missing.NÚitems)r  r@  ry  Ú_config_section)r�   rz  Úitems   && rL   rÌ   Ú)LSPClient._handle_workspace_configuration)  sP   é € ä˜&¤$×'Ò'Ø�6ˆMØ7=·z±zÀ'Ó7J×7PÐ7PÈbÐ7PÓQÑ7P¨t×$Ñ$ TÖ*Ñ7PÑQÐQùÒQùs   ‚1A´A¹AÁAc               ó    € V ^8„  d   QhRRRR/# )rF   rØ  r   rI   rJ   )rK   s   "rL   rM   r¸   /  s   € ÷ ñ  Cð ¨Cñ rN   c                	ó`  € \        V\        4      '       g   R # VP                  R4      pV'       d   V P                  '       g   V P                  ;'       g    R # V P                  p\	        V4      P                  R4       F*  p\        V\        4      '       d   WC9   g    R # W4,          pK,  	  V# )NÚsectionÚ.)r  r@  ry  r¿   rH   Úsplit)r�   rØ  rÜ  ÚcurÚparts   &&   rL   r×  ÚLSPClient._config_section/  sˆ   € Ü˜$¤×%Ò%ÙØ—(‘(˜9Ó%ˆß˜d×0×0Ð0Ø×%Ñ%×-Ð-¨Ð-Ø×%Ñ%ˆÜ˜“L×&Ñ& sÖ+ˆDÜ˜s¤D×)Ò)¨d¬kÚØ•)ŠCñ ,ð ˆ
rN   c               ó    € V ^8„  d   QhRRRR/# )rF   rz  r   rI   r·   rJ   )rK   s   "rL   rM   r¸   <  s   € ÷ ñ °#ð ¸$ñ rN   c                	ó¦  € \        V\        4      '       d&   \        VP                  R 4      \        4      '       g   R# VP                  R4      ;'       g    . pVP                  R4      pV P                  P                  \        VR ,          4      \        RR7      4      pV P                  ;'       d    VP                  '       * pRVn	        \        V\        4      '       d   TM. Vn        V'       d   R# \        V\        4      '       d   TMVP                  Vn        V ;P                  ^,          un        V P                   P#                  4        R# )r_   Nr&   r~   ©r~   Tru   )r  r@  ry  rH   rÑ   Ú
setdefaultrl   r|   rÀ   r‡   r¡   r‚   r}   r~   r„   rØ   r×   Úset)r�   rz  r&   r~   ÚdocÚis_seeds   &&    rL   rÏ   Ú%LSPClient._handle_publish_diagnostics<  sï   € Ü˜&¤$×'Ò'¬z¸&¿*¹*ÀUÓ:KÌS×/QÒ/QÙØ—j‘j Ó/×5Ð5°2ˆØ—*‘*˜YÓ'ˆØ�j‰j×#Ñ#¤K°°uµÓ$>Ä	ÐRTÔ@UÓVˆØ×'Ñ'×=Ð=°·±Ô,=ˆØˆŒÜ",¨[¼$×"?Ò"?‘;ÀRˆŒßñ ô '1°¼#×&>Ò&>™7ÀCÇKÁKˆÔð 	×Ò˜aÕÕØ×Ñ×ÑÖrN   Úlanguage_idr;   rn   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rF   rG   rH   rê  rn   r¶   rI   r}   rJ   )rK   s   "rL   rM   r¸   T  s*   € ÷ 2ñ 2 Cð 2¸ð 2ÐR_ð 2Ðknñ 2rN   c             ƒ  ó6  "  € V P                   '       g   \        R4      h\        P                  P	                  V4      pVf    \        V4      P                  RRR7      pM\        V4      p\        V4      pV P                  P                  V4      pVe   VP                  ^ 8  d   RpT P                  RR	R
TRVf   ^M^/./4      G Rj  x€L
  Vfu   V P                  P                  VR4       \        ^ VR7      V P                  V&   V P                  RRR
VRVR^ RV//4      G Rj  x€L
  V P!                  4       G Rj  x€L
  ^ # V P                  P                  V4      V P                  V&   RV/pV P"                  ^8X  d!   RR^ R^ /R\%        VP&                  4      /VR&   VP                  ^,           p	W“uVn        Vn        V P                  RRR
VRV	/RV./4      G Rj  x€L
  V	#   \         d   p\        RT RT 24      ThRp?ii ; i ELE Lé LÓ L25i)uº  Send didOpen (first time) or didChange (subsequent); return the new document version.
``text`` is the document content to sync (default: the file on disk) â€” the deferred write check
syncs the exact pre-/post-edit snapshots of the edit it checks, whatever the disk holds by then.
A supplied text is normalized as the disk read would decode it (BOM, newlines, undecodable bytes),
so a snapshot and the file it was written to sync identically.zclient not runningNr§   rX   )Úencodingr'  zcannot read r£  zworkspace/didChangeWatchedFilesÚchangesr_   Útype)r~   rn   ztextDocument/didOpenr(   Ú
languageIdr~   rn   r	  rp   rq   Úendr­  ztextDocument/didChangeÚcontentChanges)rå   r   rU   rG   rV   r   Ú	read_textr0  r«   r[   rÑ   ry  r~   r`  r§  r|   Ú_evict_lru_docsrÓ   rz   rn   )
r�   rG   rê  rn   rZ   r  r_   rç  rs  Únew_versions
   &&$$      rL   Ú	open_fileÚLSPClient.open_fileT  s6  é € ð ��ˆÜ"Ð#7Ó8Ð8Ü—7‘7—?‘? 4Ó(ˆØŠ<ðNÜ˜H“~×/Ñ/¸ÈYÐ/ÓW‘ô   Ó%ˆDÜ�xÓ ˆØ�j‰j�n‰n˜XÓ&ˆØŠ?˜sŸ{™{¨QœØˆCà×%Ñ%Ø-°	¸UÀCÈÐVYÒVaÑQRÐghÐ<iÐ;jÐ/kó
÷ 	
ð 	
ð Š;à�J‰J�N‰N˜8 TÔ*Ü#,°Q¸TÔ#BˆD�J‰J�xÑ Ø×)Ñ)Ø&Ø %¨¨l¸KÈÐTUÐW]Ð_cÐ!dÐeó÷ ð ð ×&Ñ&Ó(×(Ð(Ùà#Ÿz™zŸ~™~¨hÓ7ˆ�
‰
�8ÑØ"(¨$ ˆØ�?‰?˜aÔØ&¨°°KÀÐ(CÀUÌMÐZ]×ZbÑZbÓLcÐdˆF�7‰OØ—k‘k A•oˆð !,ÐˆŒ�S”XØ×%Ñ%Ø$Ø˜e S¨)°[ÐAÐCSÐV\ÐU]Ð^ó
÷ 	
ð 	
ð ÐøôM ô NÜ&¨°h°Z¸rÀ!ÀÐ'EÓFÈAÐMûðNúò	
ññ )ñ	
ùso   ‚AHÁG+ Á A+HÃHÃAHÄ)HÄ*HÅHÅB"HÇ$HÇ%HÇ+HÇ6HÈHÈHÈHÈHÈHc               ó   € V ^8„  d   QhRR/# rò   rJ   )rK   s   "rL   rM   r¸   ˆ  s   € ÷ vñ v tñ vrN   c              ƒ  ó<  "  € \        V P                  4      \        8”  dx   \        \	        V P                  P                  4       4      4      w  rV P                  V VP                  ^ 8¼  g   Kl  V P                  RRR\        V4      //4      G Rj  x€L
  K•  R#  L5i)z«Drop least-recently-touched documents beyond MAX_TRACKED_FILES; didClose the ones the server
has open so it releases its mirror too (version -1 entries were never opened).ztextDocument/didCloser(   r_   N)	ri   rÑ   ÚMAX_TRACKED_FILESÚnextÚiterrÖ  r~   r`  r[   )r�   Úold_pathÚolds   &  rL   rô  ÚLSPClient._evict_lru_docsˆ  s‚   é € ô �$—*‘*‹oÔ 1Ô1Ü ¤ d§j¡j×&6Ñ&6Ó&8Ó!9Ó:‰MˆHØ—
‘
˜8Ð$Ø�{‰{˜aÖØ×-Ñ-Ð.EÈÐY^Ô`hÐiqÓ`rÐXsÐGtÓu×uÒuñ	 2ñ vùs   ‚A(BÁ/"BÂBÂ	Bc               ó    € V ^8„  d   QhRRRR/# ©rF   rG   rH   rI   r·   rJ   )rK   s   "rL   rM   r¸   ‘  s   € ÷ ñ  Cð ¨Dñ rN   c           
   ƒ  óÂ   "  € V P                   '       dG   V P                  RRR\        \        P                  P                  V4      4      //4      G Rj  x€L
  R# R#  L5i)z>Send didSave for ``path``.  Some linters re-scan only on save.ztextDocument/didSaver(   r_   N)rå   r`  r[   rU   rG   rV   )r�   rG   s   &&rL   Ú	save_fileÚLSPClient.save_file‘  sR   é € à�?�?ˆ?Ø×)Ñ)Ø&¨¸%ÄÌ"Ï'É'Ï/É/ÐZ^ÓJ_ÓA`Ð9aÐ(bó÷ ò ñ ñùs   ‚AAÁAÁ	Ac               ó    € V ^8„  d   QhRRRR/# r  rJ   )rK   s   "rL   rM   r¸   š  s   € ÷ Cñ C°Sð C¸Tñ CrN   c              ƒ  ó  "  € \         P                  P                  V4      pV P                  P	                  V4      pV'       d   VP
                  MRp V P                  RRR\        V4      //\        R7      G Rj  x€L
 p\        T\&        4      '       g   R# TP	                  R4      pY%T3.p\        T\&        4      '       d7   Y‡P)                  4        U	U
u. uF  w  rš\+        T	4      T
R3NK  	  up
p	,          pT FŠ  w  r¼p\        T\&        4      '       d   TP	                  R	4      MRp\        T\,        4      '       g   KG  T P                  P/                  T\1        RR
7      4      pYïn        Tf   TP
                  MTTn        KŒ  	  R#  EL  \        \        \        3 d_   p\        T\        4      '       d   TP                  \        8X  d   RT n        \         P#                  RT P$                  T4        Rp?R# Rp?ii ; iu up
p	i 5i)zÿSend ``textDocument/diagnostic`` for one file into the pull store.  Results are tagged with the
version captured at send time, so a didChange racing past the request makes them stale
automatically.  Silently no-ops on errors (server may not support pull).ztextDocument/diagnosticr(   r_   rõ   NFz([%s] document diagnostic pull failed: %sÚrelatedDocumentsrÖ  rä  ru   )rU   rG   rV   rÑ   ry  r~   r²  r[   ÚDIAGNOSTICS_REQUEST_TIMEOUTr‚  r   r   r  r4  r   rÔ   r*  r,  r³   r@  rÖ  rl   r¡   rå  r|   rƒ   r…   )r�   rG   rZ   rç  Úsent_versionr{  r  ÚrelatedÚreportsr_   ÚsubÚdoc_pathÚreportÚtagrÖ  Úds   &&              rL   Ú_pull_document_diagnosticsÚ$LSPClient._pull_document_diagnosticsš  s›  é € ô —7‘7—?‘? 4Ó(ˆØ�j‰j�n‰n˜XÓ&ˆß&)�s—{’{¨rˆð		Ø×8Ñ8Ø)¨N¸UÄHÈXÓDVÐ<WÐ+XÜ3ð 9ó ÷ ˆFô ˜&¤$×'Ò'ÙØ—*‘*Ð/Ó0ˆØ lÐ3Ð4ˆÜ�gœt×$Ò$àÇmÁmÄoÔVÁo¹(¸#œ SÓ)¨3°Ó5ÁoÒVÕVˆGÛ%,Ñ!ˆH˜cÜ+5°f¼d×+CÒ+C�F—J‘J˜wÔ'ÈˆEÜ˜%¤×&Ô&Ø—J‘J×)Ñ)¨(´IÀbÔ4IÓJ�Ø”Ø.1ªk §¢¸s�–ó &-ò!øô œoÔ/?Ð@ô 	Ü˜!œ_×-Ò-°!·&±&Ô<RÔ2RØ',�Ô$Ü�L‰LÐCÀTÇ^Á^ÐUVÔWÝûð		üó WùsX   ‚AHÁ(F Á<FÁ=F ÂAHÃHÃ1AHÅA	HÆF ÆHÆ&AG?Ç9HÇ?HÈ	HÚmodeÚdocumentrö   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
rF   rG   rH   r~   r}   r  rö   zOptional[float]rI   r†   rJ   )rK   s   "rL   rM   r¸   ¹  s8   € ÷ #Cñ #C¨sð #C¸Sð #CÈ3ð #CØ,;ð#CØGKñ#CrN   c             ƒ  ó   "  € Ve   V^ 8”  g   VR8X  d   \         M\        p\        P                  ! 4       P                  pV! 4       V,           p\
        P                  P                  V4      pV P                  '       d&   \        P                  ! V P                  V4      4      MRp\        P                  ! V P                  WrV4      4      p	  V P                  4       '       g   \        R4      hV P                  P                  V4      p
V
'       d�   V
P!                  V4      '       dj    W‰3 Uu. uF"  q»f   K  VP#                  4       '       d   K   VNK$  	  ppV F  pVP%                  4        K  	  \        P&                  ! VRR/ G Rj  x€L
  R# We! 4       ,
          pW‰3 Uu0 uF"  q»f   K  VP#                  4       '       d   K   VkK$  	  ppV^ 8:  g	   V'       gj    W‰3 Uu. uF"  q»f   K  VP#                  4       '       d   K   VNK$  	  ppV F  pVP%                  4        K  	  \        P&                  ! VRR/ G Rj  x€L
  R# \        P(                  ! Wí\        P*                  R7      G Rj  x€L
  EKª  u upi  Lðu upi u upi  LH L  Y‰3 Uu. uF"  q»f   K  TP#                  4       '       d   K   TNK$  	  Mu upi ppT F  pTP%                  4        K  	  \        P&                  ! TRR/ G Rj  x€L 
  i ; i5i)ux  Wait for fresh diagnostics for ``path`` at ``version``; True iff fresh data arrived in budget.

``mode`` is ``"document"`` (5s) or ``"full"`` (10s); ``timeout`` overrides the budget (how
``lsp.wait_timeout`` reaches the loop).  Callers must treat False as "no data", NOT "no errors" â€”
the stores may still hold stale entries.  Never throws for servers lacking pull support.
NÚfullTz6server connection closed while waiting for diagnosticsr‡  F)rö   Úreturn_when)ÚDIAGNOSTICS_FULL_WAITÚDIAGNOSTICS_DOCUMENT_WAITrÆ   Úget_event_loopÚtimerU   rG   rV   rÔ   r   r  Ú_wait_for_fresh_pushrä   r   rÑ   ry  r™   rí   rŠ  r‹  r   ÚFIRST_COMPLETED)r�   rG   r~   r  rö   ÚnowÚdeadlinerZ   rƒ   r‚   rç  r’  ÚpendingÚ	remainingr“  s   &&&$$          rL   Úwait_for_diagnosticsÚLSPClient.wait_for_diagnostics¹  sM  é € ð Ò#¨°!¬Ø/3°v¬~Õ+ÔC\ˆGÜ×$Ò$Ó&×+Ñ+ˆÙ“5˜7•?ˆÜ—7‘7—?‘? 4Ó(ˆð
 RV×Qe×QeÐQeŒw×"Ò" 4×#BÑ#BÀ8Ó#LÔMÐkoˆÜ×"Ò" 4×#<Ñ#<¸XÐPWÓ#XÓYˆð	CØØ×/Ñ/×1Ò1Ü*Ð+cÓdÐdØ—j‘j—n‘n XÓ.�ß˜3Ÿ9™9 W×-Ò-Øð $(¡,ÓQ¡,˜Q”qÈÏÉÏ—q�q¡,ˆGÐQÛ�Ø—‘–
ñ ä—.’. 'ÐB¸TÑB×BÒBð % s£uÕ,�	Ø$(¡<ÓR¡<˜aœÈÏÉÏŸ˜¡<�ÐRØ ”>¯Ø ð $(¡,ÓQ¡,˜Q”qÈÏÉÏ—q�q¡,ˆGÐQÛ�Ø—‘–
ñ ä—.’. 'ÐB¸TÑB×BÒBô —l’l 4Ì×H_ÑH_Ô`×`Ó`ùâQñ Cùò Sùò
 Rñ Cñ aøà#'¡,ÓQ¡,˜Q”qÈÏÉÏ—q�q¢,ùÒQˆGÐQÛ�Ø—‘–
ñ ä—.’. 'ÐB¸TÑB×BÒBüsë   ‚A<K>Á?AK>ÃJ Ã$-J ÄJ Ä*K>Ä/I7Ä9I7ÅI7Å4K>ÆI<ÆK>ÆJ Æ$I>Æ.I>ÇI>ÇJ ÇK>Ç#JÇ-JÈJÈ4K>È?JÉ K>É)J É/J
É0J É7K>É>J ÊK>Ê
J ÊK;ÊJ;ÊJ;Ê4J;Ê::K;Ë4K7Ë5K;Ë;K>c               ó    € V ^8„  d   QhRRRR/# )rF   rö   r«  rI   r†   rJ   )rK   s   "rL   rM   r¸   Þ  s   € ÷ ñ ¨ð °4ñ rN   c              ƒ  óÜ   "  € V P                   P                  4         \        P                  ! V P                   P	                  4       VR7      G Rj  x€L
  R#  L  \
         d     R# i ; i5i)zPBlock until the next publishDiagnostics or ``timeout``; True iff a push woke us.rõ   NFT)r×   rP  rÆ   rÿ   r   r‚  )r�   rö   s   &&rL   Ú_await_pushÚLSPClient._await_pushÞ  s]   é € à×Ñ×ÑÔ ð	Ü×"Ò" 4×#3Ñ#3×#8Ñ#8Ó#:ÀGÔL×LÐLñ ñ MøÜô 	Úð	üs:   ‚A,ž3A ÁAÁA ÁA,ÁA ÁA)Á%A,Á(A)Á)A,c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rF   rG   rH   r~   r}   rö   r«  rI   r·   rJ   )rK   s   "rL   rM   r¸   ç  s)   € ÷ 8ñ 8¨sð 8¸Sð 8È5ð 8ÐUYñ 8rN   c              ƒ  ó€  "  € \         P                  ! 4       P                  pV! 4       V,           pV P                  p V P                  P                  V4      pV'       d�   VP                  V4      '       dj   V P                  pV! 4       \        ,           p	V P                  V8X  d9   W”! 4       ,
          p
V
^ 8:  g"   V P                  V
4      G Rj  x€L
 '       d   KF   R# R# WT! 4       ,
          p
V
^ 8:  d   R# V P                  V8”  d   V P                  pKÙ  V P                  \        V
R4      4      G Rj  x€L
  Kþ   Lk L5i)zKWait until a fresh publishDiagnostics arrives for ``path`` at ``version``+.Nr   )
rÆ   r  r  rØ   rÑ   ry  r�   ÚPUSH_DEBOUNCEr'  Úmin)r�   rG   r~   rö   r  r   Úbaselinerç  Údebounce_baselineÚdebounce_deadliner"  s   &&&&       rL   r  ÚLSPClient._wait_for_fresh_pushç  s  é € ä×$Ò$Ó&×+Ñ+ˆÙ“5˜7•?ˆØ×%Ñ%ˆØØ—*‘*—.‘. Ó&ˆCß�s—~‘~ g×.Ò.ð %)×$6Ñ$6Ð!Ù$'£E¬MÕ$9Ð!Ø×(Ñ(Ð,=Ô=Ø 1°C³EÕ 9�IØ  A”~°4×3CÑ3CÀIÓ3N×-N×-NÐ-NØÛØ  3£5Õ(ˆIØ˜AŒ~ÙØ×!Ñ! HÔ,à×-Ñ-�ÙØ×"Ñ"¤3 y°#Ó#6Ó7×7Ò7ñ .Oñ 8ùs8   ‚AD>Á D>Á7AD>ÃD:ÃD>ÃAD>Ä3D<Ä4D>Ä<D>c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rG   rH   rö   r«  rI   zOptional[list[dict[str, Any]]]rJ   )rK   s   "rL   rM   r¸     s"   € ÷ 8ñ 8¨ð 8°eð 8Ð@^ñ 8rN   c              ƒ  óœ  "  € Tp\         P                  ! 4       P                  pV! 4       V,           p V P                  P	                  V4      pVe(   VP
                  '       d   \        VP                  4      # WT! 4       ,
          pV^ 8:  g   V P                  4       '       g   R# V P                  \        VR4      4      G Rj  x€L
  K˜   L5i)züFor a server whose first push per document is a seed (never fresh): wait up to ``timeout``
for that push and return what it carried (the verdict on the text sent with didOpen), or None.
``path`` must be absolute (the key ``open_file`` stored it under).Nr   )rÆ   r¤  r  rÑ   ry  r‡   r¡   r‚   rä   r'  r,  )r�   rG   rö   rZ   r  r   rç  r"  s   &&&     rL   Úwait_for_seedÚLSPClient.wait_for_seed  sš   é € ð ˆÜ×&Ò&Ó(×-Ñ-ˆÙ“5˜7•?ˆØØ—*‘*—.‘. Ó*ˆCØŠ 3§=§= =Ü˜CŸH™H“~Ð%Ø  3£5Õ(ˆIØ˜AŒ~ T×%=Ñ%=×%?Ò%?ÙØ×"Ñ"¤3 y°#Ó#6Ó7×7Ô7ùs   ‚A!CÁ$>CÂ# CÃC
ÃCc               ó   € V ^8„  d   QhRR/# râ   rJ   )rK   s   "rL   rM   r¸     s   € ÷ %ñ % $ñ %rN   c                	ó   € V P                   # r�   )rÀ   rÞ   s   &rL   Úseeds_first_pushÚLSPClient.seeds_first_push  s   € à×$Ñ$Ð$rN   c               ó    € V ^8„  d   QhRRRR/# )rF   rG   rH   rI   r¶   rJ   )rK   s   "rL   rM   r¸     s   € ÷ Jñ J #ð J¨-ñ JrN   c                ó¸   € V P                   P                  \        P                  P	                  V4      4      pVe   VP
                  ^ 8¼  d   VP                  # R# )zIThe text last synced to the server for ``path`` (None when never opened).N)rÑ   ry  rU   rG   rV   r~   rn   )r�   rG   rç  s   && rL   Údocument_textÚLSPClient.document_text  s?   € à�j‰j�n‰nœRŸW™WŸ_™_¨TÓ2Ó3ˆØš?¨s¯{©{¸aÔ/?ˆs�x‰xÐIÀTÐIrN   Ú
fresh_onlyc               ó$   € V ^8„  d   QhRRRRRR/# )rF   rG   rH   r=  r†   rI   r�   rJ   )rK   s   "rL   rM   r¸     s"   € ÷ 	#ñ 	# Cð 	#¸ð 	#ÐI]ñ 	#rN   c               óD  € V P                   P                  \        P                  P	                  V4      4      pVf   . # V'       d   VP                  4       '       d   VP                  M. pV'       d   VP                  4       '       d   VP                  M. p\        WE4      # )uä   Merged + deduped push/pull diagnostics for one file.  With ``fresh_only=True`` a store only
contributes once its version tag has caught up to the document's â€” report paths must use this
so "stale" and "clean" aren't conflated.)
rÑ   ry  rU   rG   rV   r�   r‚   r•   rƒ   Ú_dedupe)r�   rG   r=  rç  r‚   rƒ   s   &&$   rL   Údiagnostics_forÚLSPClient.diagnostics_for  sj   € ð �j‰j�n‰nœRŸW™WŸ_™_¨TÓ2Ó3ˆØŠ;ØˆIß)¨S¯^©^×-=Ò-=ˆs�xŠxÀ2ˆß)¨S¯^©^×-=Ò-=ˆs�xŠxÀ2ˆÜ�tÓ"Ð"rN   )rÈ   r¼   r¾   rÑ   r½   rÄ   r¿   rÉ   rÐ   rÊ   rÁ   rÔ   rØ   r×   rÅ   rÎ   rÀ   rÒ   rÃ   rÂ   rÕ   rÓ   r³   r»   r´   )1r›   rœ   r�   rž   rŸ   rÙ   Úpropertyrß   rå   rä   r	  rù   r!  r5  r  rJ  r"  rW  rb  rh  rú   r€  r  rš  rŸ  rw  r²  r`  r¹  rE  rF  rG  rË   rÍ   rÌ   r×  rÏ   rö  rô  r  r  r#  r'  r  r3  r7  r;  rA  r¢   rJ   rN   rL   r­   r­   “   si  † ñ1ð1Ø15ð1ØLPð1àDHð1ð 9>÷1ðf ôó ðð ôGó ðGõ
õ%õNEõ2õ61õ õ	Uõ.õ,<õ
õ
õpõ*õ22õD'õ
Xõ,õGõQõõ~õ&õ_õõ)õRõõð02¸{ð 2Ðbf÷ 2õhvõõCð>#CÐQ[ð #CØ>B÷#CõJõ8õ48ð  ô%ó ð%õJð
	#¸u÷ 	#ó 	#rN   r­   c               ó    € V ^8„  d   QhRRRR/# )rF   Úlistsr�   rI   rJ   )rK   s   "rL   rM   rM   &  s   € ÷ ñ Ð(ð Ð-Añ rN   c                 ó¨   € \        4       p. pR  V  4        F8  p\        V4      ;qA9  g   K  VP                  V4       VP                  V4       K:  	  V# )c              3  óf   "  € T F'  q F  p\        V\        4      '       g   K  Vx € K!  	  K)  	  R # 5ir�   )r  r@  )Ú.0Úlstr  s   &  rL   Ú	<genexpr>Ú_dedupe.<locals>.<genexpr>)  s#   é € ÐE™5�Cª# Q´¸A¼t×1D�aŠa©#‰a›5ùs   ‚1£1)ræ  Ú_diagnostic_keyÚaddr-  )rE  ÚseenÚoutr  rI  s   *    rL   r@  r@  &  sK   € Ü“U€DØ "€CÙE™5ÖEˆÜ" 1Ó%Ð%ˆCÖ2Ø�H‰H�SŒMØ�J‰J�qŽMñ Fð €JrN   c               ó    € V ^8„  d   QhRRRR/# )rF   r  rC   rI   rH   rJ   )rK   s   "rL   rM   rM   0  s   € ÷ ñ �~ð ¨#ñ rN   c                óŽ  € V P                  R4      ;'       g    / pVP                  R4      ;'       g    / pVP                  R4      ;'       g    / pV P                  R4      pRP                  \        V P                  R4      ;'       g    ^4      Vf   RM
\        V4      \        V P                  R4      ;'       g    R4      \        V P                  R	4      ;'       g    R4      P                  4       VP                  R
^ 4       RVP                  R^ 4       RVP                  R
^ 4       RVP                  R^ 4       2.4      # )a$  Content-equality key: severity + code + source + message + range.  Shared with the manager's
cross-edit delta filter (``_diag_key``) so both layers agree on identity.  Range is included so an
identical error at a second site still surfaces as new (the manager line-shifts its baseline first).r­  r	  rñ  r4  Ú Úseverityr   Úsourcer½  rp   rf   rq   Ú-)ry  r9  rH   Ústrip)r  Úrngr	  rñ  r4  s   &    rL   rL  rL  0  s  € ð �%‰%�‹.×
Ð
˜B€CØ�G‰G�GÓ×"Ð" €EØ
�'‰'�%‹.×
Ð
˜B€CØ�5‰5�‹=€DØ�;‰;ÜˆA�E‰E�*Ó×"Ð" Ó#¨4ª<¡R¼SÀ»YÌÈAÏEÉEÐRZËO×LaÐLaÐ_aÓHbÜˆA�E‰E�)Ó×"Ð" Ó#×)Ñ)Ó+Ø�9‰9�V˜QÓÐ
   %§)¡)¨K¸Ó";Ð!<¸A¸c¿g¹gÀfÈaÓ>PÐ=QÐQRÐSV×SZÑSZÐ[fÐhiÓSjÐRkÐlðó ð rN   i   )r  r  rx  r­   r[   rl   )EÚ__conditional_annotations__rŸ   Ú
__future__r   rÆ   rü   ÚloggingrU   r  Údataclassesr   r   Úpathlibr   Útypingr   r   r   r	   r
   r   r   Úurllib.parser   r   Úhermes_cli._subprocess_compatr   Úagent.lsp.protocolr   r   r   r   r   r   r   r   r   r   r   Ú	getLoggerr*  r  rx  r  r  r  r+  rƒ  r®  r°  r.  rú  ÚBrokenPipeErrorÚConnectionResetErrorr0  r¦  ré   rD   r    r[   rc   rl   rz   r|   r«   r­   r@  rL  Ú__all__)rX  s   @rL   Ú<module>re     sø  øðôõ #ã Û Û Û 	Û 
ß (Ý ß F× FÑ Fß 'å <÷÷ ÷ ñ ð
 
×	Ò	Ð-Ó	.€ð !€ð Ð ØÐ ØÐ Ø!Ð Ø€Ø€à Ð ØÐ ð Ð ð
 Ð à Ð"6¸Ð@€Ø˜IÐ&€ð Ð! 4Ð(Ø�/ 4Ð);¸TØ)Ð,AÀ4Ð+HÈ-ÐZjÐlqÐYrðtàØÐ1°5¸)ÀTÈ;ÐX\Ø% t¨Z¸Ð@SÐUZð\àÐ,¨dÐ4LÈdÐSØÐ3°T¸<È*ÐWXÐZ[ÐV\ÐI]Ø/°Ð7OÐQUÐWdÐfkðmà�/ J°Ð#<Ð=Ø�} dÐ+Ø�bØÐ>ÀÐEð
ð Ð# h ZÐ0ð(Ð �nó õ&2õZõ
*õ	Zð ÷Dð Dó ðDõ.:÷P
#ñ P
#õfõò ‚rN   