Ë äüç>Y‡ÆãóÄ—ddlZddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl m Z ddlmZmZe j"Ze j$Ze j&ZdZdZd Zd Ze j0Zd „Ze j4e j6«Gd „d ««Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#e j4e j6«Gd„d««Z$dd„Z%Gd„d«Z&y)éNé)Ú_)ÚencodingÚerrorÚpycompatÚutilÚwireprototypesÚwireprotov1server)r)Ú compressionÚ stringutiléÈsapplication/mercurial-0.1sapplication/mercurial-0.2sapplication/hg-errorcóÈ—g}d} |jjd||fz«}|€n*|jtj|««|dz }ŒMdj |«S)zjDecode a long value from multiple HTTP request headers. Returns the value as a bytes, not a str. rs%s-%dó)ÚheadersÚgetÚappendrÚbytesurlÚjoin)ÚreqÚ headerprefixÚchunksÚiÚvs ú=usr/lib/python3.12/site-packages/mercurial/wireprotoserver.pyÚdecodevaluefromheadersr)sk€ð €FØ €AØ Ø �K‰K�O‰O˜H¨ °aÐ'8Ñ8Ó 9ˆØ ˆ9Ø Ø� ‰ ”h×'Ñ'¨Ó*Ô+Ø ˆQ‰ˆð ð �8‰8�FÓ Ðrcóp—eZdZd„Zed„«Zd„Zd„Zd„Zd„Z e jd„«Z d„Z d „Zd „Zy ) Úhttpv1protocolhandlercó<—||_||_||_d|_y©N)Ú_reqÚ_uiÚ _checkpermÚ _protocaps)ÚselfrÚuiÚ checkperms rÚ__init__zhttpv1protocolhandler.__init__<s€ØˆŒ ؈ŒØ#ˆŒØˆ�rcó—y)Nshttp-v1©©r$s rÚnamezhttpv1protocolhandler.nameBs€àrcó —|j«}i}|j«}|D]E}|dk(r3i}|j«D]}|dk7sŒ ||vsŒ||d||<Œ||d<Œ;||d||<ŒG|D�cgc]}||‘Œ c}Scc}w)Nó*ócmdr)Ú_argsÚsplitÚkeys)r$ÚargsÚ knownargsÚdatar1ÚkÚstarÚkeys rÚgetargszhttpv1protocolhandler.getargsFs�€Ø—J‘J“Lˆ ؈Ø�z‰z‹|ˆÛˆAØ�DŠyØ�Ø$Ÿ>™>Ö+�Cؘf“}¨°DªØ$-¨c¡N°1Ñ$5˜˜Sš ð,ð"��T’ à# A™, q™/��Q’ðñ"&Ó&¡˜A��Q“ Ñ&Ð&ùÒ&sÁ1 Bcó¾—|jjj«}t|jjj dd««}|rK|j tj|jjj|«d¬««|St|jd«}|j tj|d¬««|S)Nó X-HgArgs-PostrT)Úkeep_blank_valuessX-HgArg) r ÚqsparamsÚ asdictoflistsÚintrrÚupdateÚurlreqÚparseqsÚbodyfhÚreadr)r$r2ÚpostlenÚargvalues rr/zhttpv1protocolhandler._argsUs«€Ø�y‰y×!Ñ!×/Ñ/Ó1ˆÜ�d—i‘i×'Ñ'×+Ñ+Ð,<¸aÓ@ÓAˆÙ Ø �K‰KÜ—‘Ø—I‘I×$Ñ$×)Ñ)¨'Ó2Àdðóô ð ˆKä)¨$¯)©)°ZÓ@ˆØ � ‰ ”F—N‘N 8¸t�NÓDÔE؈ rcóœ—|j€5t|jd«}t|j d««|_|jS)Ns X-HgProtoó )r#rr Úsetr0)r$Úvalues rÚ getprotocapsz"httpv1protocolhandler.getprotocapsds;€Ø �?‰?Ð "Ü*¨4¯9©9°lÓCˆEÜ! %§+¡+¨dÓ"3Ó4ˆDŒOØ�‰Ðrcó—t|jjd«}|t|jjjdd««z}t j |jj |¬«S)NsContent-Lengthr:r)Úlimit)r>r rrrÚ filechunkiterrB)r$Úlengths rÚ getpayloadz httpv1protocolhandler.getpayloadjsb€ä�T—Y‘Y×&Ñ&Ð'8Ñ9Ó:ˆð ”#�d—i‘i×'Ñ'×+Ñ+Ð,<¸aÓ@ÓAÑAˆÜ×!Ñ! $§)¡)×"2Ñ"2¸&ÔAÐArc#ólK—|jj}|jj}tj«} ||j_||j_|–—||j_||j_y#||j_||j_wxYw­wr)r!ÚfoutÚferrrÚstringio)r$ÚoldoutÚolderrÚouts rÚmayberedirectstdioz(httpv1protocolhandler.mayberedirectstdiosszèø€à—‘—‘ˆØ—‘—‘ˆä�m‰m‹oˆð #؈D�H‰HŒM؈D�H‰HŒMØŠIà"ˆD�H‰HŒMØ"ˆD�H‰H�Møð#ˆD�H‰HŒMØ"ˆD�H‰H�Müs‚AB4Á&B Á*#B4 $B1Â1B4cóæ—d|jjtj|jjxsd«tj|jj xsd«fzS)Nsremote:%s:%s:%sr)r Ú urlschemer@ÚquoteÚ remotehostÚ remoteuserr*s rÚclientzhttpv1protocolhandler.client‚sW€Ø!Ø �I‰I× Ñ Ü �L‰L˜Ÿ™×-Ñ-Ò4°Ó 5Ü �L‰L˜Ÿ™×-Ñ-Ò4°Ó 5ð% ñ ð rcó¸—|jd«|jd|jjdd«z«|jjdd«r|jd«|jd«t j |jt j«}|r,djd „|D««}|jd |z«|S) Nóbatchs httpheader=%dóserversmaxhttpheaderlens experimentals httppostargsshttpmediatype=0.1rx,0.1tx,0.2txó,c3óvK—|]1}tj|j«j«–—Œ3y­wr)r@rZÚwireprotosupportr+)Ú.0Úes rÚ z8httpv1protocolhandler.addcapabilities..šs,èø€ð"ÙAL¸A”— ‘ ˜Q×/Ñ/Ó1×6Ñ6×7Áùs‚79scompression=%s) rr%Ú configintÚ configboolr Úsupportedcompenginesr Ú SERVERROLEr)r$ÚrepoÚcapsÚ compenginesÚ comptypess rÚaddcapabilitiesz%httpv1protocolhandler.addcapabilities‰s½€Ø � ‰ �HÔà � ‰ Ø ˜tŸw™w×0Ñ0°Ð|j d«|_t|jd<|jddz«y t‰|jˆˆˆfd „«} t|‰|||«y #|j$rˆ}|jD]\} } | |j| <Œ|j |jt!j"|««|_|jdt!j"|«z«Yd }~y d }~wwxYw) a�Possibly process a wire protocol request. If the current request is a wire protocol request, the request is processed by this function. ``req`` is a ``parsedrequest`` instance. ``res`` is a ``wsgiresponse`` instance. Returns a bool indicating if the request was serviced. If set, the caller should stop processing the request, as a response has already been issued. r©Úcommonr.Fi”ó Content-Typeó0 %s s Not FoundTcó•—‰‰‰|«Srr))rrr&Úrctxrs €€€rÚz#handlewsgirequest..Ýsø€¡9¨T°3¸Ô#=rN)Úhgwebrrkr<r|Ú dispatchpathÚ statusmessageÚstatusÚHGTYPErÚ setbodybytesrr%Ú _callhttpÚ ErrorResponseÚcoder Ú forcebytestr) rƒrÚresr&Ú hgwebcommonrkr{Úprotorer5rs `` ` rÚhandlewsgirequestr’­s5ú€õ-à �9‰9€Dð �S—\‘\Ñ!Øà �,‰,�vÑ €Cô �Œ:Øð  ×ÒØ ×.Ñ.¨sÓ3ˆŒ Ü'-ˆ� ‰ �OÑ$ð ×ј lÑ2Ô3Øä !Ø ˆT�W‰WÕ=ó €Eð BÜ�$˜˜S %¨Ô-ð øð × $Ñ $òBØ—I”I‰DˆAˆq؈C�K‰K˜ŠNðà ×.Ñ.Ø �F‰F”J×+Ñ+¨AÓ.ó ˆŒ ð ×ј¤j×&=Ñ&=¸aÓ&@Ñ@×AÐAà ûðBúsÂ'B7Â7EÃA>E Å EcóÞ—d|j«vr®|rttj«ifSt j |«}t j|tj«D]U}|j«j|vsŒ i}|jdd|j«z«}|�||d<t||fcSd|jdd«i}ttjd|fS)zƒDetermine the appropriate response type and compression settings. Returns a tuple of (mediatype, compengine, engineopts). s0.2r`s%slevelslevels zliblevelszlib)rJÚHGTYPE2r Ú _noopenginer Úclientcompressionsupportr rirjrcr+rgr‰rrm)r%r‘Úprefer_uncompressedÚ compformatsÚengineÚoptsÚlevels rÚ_httpresponsetyperœósä€ð�×#Ñ#Ó%Ñ%á ÜœK×3Ñ3Ó5°rÐ9Ð 9ô(×@Ñ@ÀÓGˆ Ü$×9Ñ9Ø ” ×&Ñ&ö ˆFð×&Ñ&Ó(×-Ñ-°Ò<Ø�ØŸ ™  Y° ¸V¿[¹[»]Ñ0JÓK�ØÐ$Ø%*�D˜‘Nä ¨Ð,Ò,ð ð" �b—l‘l 9¨lÓ;Ð <€DÜ ”4×#Ñ# GÑ,¨dÐ 2Ð2rcó(‡‡ —ddlmŠ d„}d ˆ ˆfd„ }tjj ||«s|t t td««y|jtj|j«‰ j||«}tj||||«}t|t«r|t t|¬«yt|tj «r|t t|j"¬«yt|tj$«r|t t|j&¬«yt|tj(«rf|j&} t+|j,||j.«\} } } | j1| | «} | t2k(r || | | «} |t | | ¬«yt|tj4«r/d|j6|j8fz}|t t|¬«yt|tj:«r*d |j6z}d ‰_|t t|¬«yt|tj>«r|t t |j@¬«ytCjDd |«‚) Nrr~c3óÒK—|j«j}dt|«cxkrdksJ‚J‚tjdt|««–—|–—|D]}|–—Œy­w)NréóB)rcr+ÚlenÚstructÚpack)Úgenr™Ú engineoptsr+Úchunks rÚ genversion2z_callhttp..genversion2sbèø€ð×&Ñ&Ó(×-Ñ-ˆØ”3�t“9Ô"˜sÒ"Ð"Ñ"Ð"Ð"Ü�k‰k˜$¤ D£ Ó*Ò*ØŠ ãˆEØ‹Kñùs‚A%A'cóÀ•—|tk(rd‰_n‰j|«‰_|‰jd<|�‰j |«|�‰j |«yy)Ns200 Script output followsr€)ÚHTTP_OKrˆr‡rrŠÚ setbodygen)r�Ú contenttypeÚ bodybytesÚbodygenr�r�s €€rÚ setresponsez_callhttp..setresponse&s\ø€Ø ”7Š?Ø5ˆC�Jà$×2Ñ2°4Ó8ˆCŒJà'2ˆ� ‰ �OÑ$à Ð Ø × Ñ ˜YÔ 'Ø Ð Ø �N‰N˜7Õ #ð rs:requested wire protocol command is not available over HTTP)r¬)r­s%d %sr�Tshgweb.protocol internal failure)NN)#r…rr rzÚcommandavailabler©Ú HGERRTYPErr&Ú permissionÚhashiddenaccessÚdispatchÚ isinstanceÚbytesr‰r Ú bytesresponser4Ústreamreslegacyr¤Ú streamresrœr%r—Úcompressstreamr”Úpushresr�ÚoutputÚpusherrÚdrainÚooberrorÚmessagerÚProgrammingError)rkrr�r‘r{r§r®Ú accesshiddenÚrspr¤Ú mediatyper™r¥r�s ` @rr‹r‹sïù€å,ò ö $ô × %Ñ %× 6Ñ 6°s¸EÔ BÙÜ Ü Ü ðó ô ð à ‡O�OÔ%×.Ñ.¨sÑ3×>Ñ>Ô?à×.Ñ.¨t°SÓ9€LÜ × $Ñ $ T¨5°#°|Ó D€Cä�#”uÔÙ”GœV¨sÖ3Ü �Cœ×5Ñ5Ô 6Ù”GœV¨s¯x©xÖ8Ü �Cœ×7Ñ7Ô 8Ù”GœV¨S¯W©WÖ5Ü �Cœ×1Ñ1Ô 2Ø�g‰gˆô):Ø �G‰G�U˜C×3Ñ3ó) Ñ%ˆ �6˜:ð×#Ñ# C¨Ó4ˆà œÒ Ù˜c 6¨:Ó6ˆCá”G˜Y°Ö4Ü �Cœ×/Ñ/Ô 0ؘ3Ÿ7™7 C§J¡JÐ/Ñ/ˆÙ”GœV¨sÖ3Ü �Cœ×/Ñ/Ô 0ؘ3Ÿ7™7Ñ"ˆØˆŒ Ù”GœV¨sÖ3Ü �Cœ×0Ñ0Ô 1Ù”GœY°#·+±+Ö>ä×$Ñ$Ð%GÈÓMÐMrcó€—|jdt|«z«|j|«|j«y)z-Send a bytes response for protocol version 1.s%d N)Úwriter¡Úflush)rQrIs rÚ_sshv1respondbytesrÇds,€à‡J�Jˆwœ˜U›Ñ#Ô$؇J�JˆuÔØ‡J�J…Lrcón—|j}|jD] }||«Œ |j«yr)rÅr¤rÆ)rQÚsourcerÅr¦s rÚ_sshv1respondstreamrÊks)€Ø �J‰J€EØ—”ˆÙ ˆe� ðà‡J�J…LrcóŽ—|jd|z«|j«|jd«|j«y)Ns%s - ó )rÅrÆ)rQrRrÂs rÚ_sshv1respondooberrorrÍrs1€Ø‡J�Jˆz˜CÑÔ Ø‡J�J„L؇J�JˆuÔØ‡J�J…Lrcón—eZdZdZd„Zed„«Zd„Zd„Zd„Z e jd„«Z d„Z d „Zd „Zy ) Ússhv1protocolhandlerzrC) r$r2r4r1ÚnÚarglineÚargÚlr6r5Úvals rr8zsshv1protocolhandler.getargs‡s€ØˆØ�z‰z‹|ˆÜ”s˜4“y×!ˆAØ—i‘i×(Ñ(Ó*¨3¨BÐ/ˆGØ—]‘]“_‰FˆC�ؘ$‰Ü—k‘k¤!Ð$>Ó"?À#Ñ"EÓFÐFØ�dŠ{Ø�Üœs 1›vž�AØ"Ÿi™i×0Ñ0Ó2°3°BÐ7�GØ$Ÿ]™]›_‘F�C˜ØŸ)™)Ÿ.™.¬¨Q«Ó0�CØ #�D˜’Ið 'ð "��T’ à—i‘i—n‘n¤S¨£VÓ,�Ø��S“ ð"ñ "&Ó&¡˜A��Q“ Ñ&Ð&ùÒ&sÄ/ D>có—|jSr)r#r*s rrJz!sshv1protocolhandler.getprotocapsœs €Ø�‰Ðrc#ó K—t|jd«t|jj ««}|rD|jj |«–—t|jj ««}|rŒCyy­w)Nr)rÇrÒr>rÑrÙrC)r$Úcounts rrOzsshv1protocolhandler.getpayloadŸsaèø€ô ˜4Ÿ:™: sÔ+ô�D—I‘I×&Ñ&Ó(Ó)ˆÙØ—)‘)—.‘. Ó'Ò 'ܘŸ ™ ×*Ñ*Ó,Ó-ˆEôùs ‚A>BÂBc#óK—d–—y­wrr)r*s rrWz'sshv1protocolhandler.mayberedirectstdio¯s èø€à‹ ùs‚cór—tjjdd«jdd«d}d|zS)Ns SSH_CLIENTrrGrrs remote:ssh:)rÚenvironrr0)r$r]s rr]zsshv1protocolhandler.client³s7€Ü×!Ñ!×%Ñ% m°SÓ9×?Ñ?ÀÀaÓHÈÑKˆØ Ñ&Ð&rcó„—|jtjk(r|jd«|jd«|S)Ns protocapsr_)r+r rÕr)r$rkrls rroz$sshv1protocolhandler.addcapabilities·s1€Ø �9‰9œ×,Ñ,Ò ,Ø �K‰K˜ Ô %Ø � ‰ �HÔØˆ rcó—yrr)rqs rr&zsshv1protocolhandler.checkperm½s€Ø rN)rsrtruÚ__doc__r'rvr+r8rJrOrwrxrWr]ror&r)rrrÏrÏysV„áFò ð ñ$óð$ò'ò*ò.ð ×Ññóðò'òó  rrÏcóÊ—d}t|||«}|j«�sC|dk(�r |j«dd}|sd}Œ/tjj ||«} | s t |d«Œ^tj||||¬«} |jjj«|jjj«t| t«rt || «�ndt| tj«rt || j «�n2t| tj"«rt%|| «�n t| tj&«r t%|| «nãt| tj(«r&t |d«t |d| j*z«n£t| tj,«rt || j*«nrt| tj.«r"t1||j| j2«n6t5j6d| z«‚|dk(ryt5j6d|z«‚|j«s�ŒByy) Nsprotov1-servingr×sshutdownr)rÁs%ds6unhandled response type from wire protocol command: %ssunhandled ssh server state: %s)rÏÚis_setrÙr rzr¯rÇr³r%rQrÆrRr´rµr r¶r4r¸rÊr·rºr�r¼r¾rÍr¿rrÀ) r%rkrÓrQÚevrÁÚstater‘ÚrequestÚ availablerÂs rÚ _runsshserverrïÁsä€ð$ €EÜ   S¨$Ó /€Eà�i‰i�kØ Ð&Ó &à—l‘l“n S bÐ)ˆGñØ#�Øä)×2Ñ2×CÑCؘóˆIñ Ü" 4¨Ô-Øä#×,Ñ,Ø�e˜W°<ôˆCð �G‰G�L‰L× Ñ Ô Ø �G‰G�L‰L× Ñ Ô ä˜#œuÔ%Ü" 4¨Ö-ܘC¤×!=Ñ!=Ô>Ü" 4¨¯©Ö2ܘC¤×!9Ñ!9Ô:Ü# D¨#Ö.ܘC¤×!?Ñ!?Ô@Ü# D¨#Õ.ܘC¤×!7Ñ!7Ô8Ü" 4¨Ô-Ü" 4¨°·±©Õ9ܘC¤×!7Ñ!7Ô8Ü" 4¨¯©Õ1ܘC¤×!8Ñ!8Ô9Ü% d¨B¯G©G°S·[±[ÕAä×,Ñ,ð1Ø36ñ7óðð �kÒ !Ø ô×(Ñ(Ø1°EÑ9óð ðg�i‰i�kˆkrcó —eZdZdd„Zd„Zd„Zy)Ú sshserverNcó—||_||_|j«\|_|_||_|rQt j||jdd¬«|_t j||jdd¬«|_yy)NóoT)Úlogdataóe) r!Ú_repoÚ protectfinoutrÑrÒÚ _accesshiddenrÚmakeloggingfileobjectrR)r$r%rkÚlogfhrÁs rr'zsshserver.__init__sy€ØˆŒØˆŒ Ø "× 0Ñ 0Ó 2шŒ �4”:Ø)ˆÔñ Ü×3Ñ3Ø�t—z‘z 4°ôˆDŒJô×0Ñ0Ø�r—w‘w ¨dôˆB�Gð rcóª—|jtj««|jj |j |j «yr)Ú serveuntilÚ threadingÚEventr!Ú restorefinoutrÑrÒr*s rÚ serve_foreverzsshserver.serve_forevers1€Ø �‰œ Ÿ™Ó)Ô*Ø �‰×јtŸy™y¨$¯*©*Õ5rcóˆ—t|j|j|j|j||j «y)z%Serve until a threading.Event is set.N)rïr!rörÑrÒrø)r$rës rrüzsshserver.serveuntil"s-€äØ �H‰H�d—j‘j $§)¡)¨T¯Z©Z¸¸T×=OÑ=Oõ r)NF)rsrtrur'rrür)rrrñrñs„ó ò6ó rrñ)F)'rwr¢rýÚi18nrÚrrrrr r Ú interfacesÚ interfaceutilÚutilsr r rSÚurlerrr@r©r‰r”r°rÕrÚ implementerÚbaseprotocolhandlerrr|r’rœr‹rÇrÊrÍrÏrïrñr)rrÚr sðóÛ Ûå÷÷õ.÷ð �=‰=€à �‰€Ø �‰€à €à %€Ø &€Ø #€ à×Ñ€òð"€×ј>×=Ñ=Ó>÷g%ðg%ó?ðg%ò\-òCòL!3òHJNòZòòð€×ј>×=Ñ=Ó>÷D ðD ó?ðD óNJ÷Z ò r