grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ó vpÎ|·ÉO­ãó†•SrSrSrSrSrSrSrSrSrSSK r SSK r SSK r SSK r SSK r SS K 7 /S QrS rS rS rSrSrSr\ R*R\lSrSSKJr SrSrSrSrSrSq Sq!Sr"SSKJ#r$ Sr%SS.Sjr&\ RNS :Hr(S#S!jr)S"r*g!\a SrNIf=f!\a Sr$Nr9Ú startswith)r?r%s r8r r =s'€ä � Š �!‹ €AÜ �1‹+€CØ �<‰<˜Ó Ðr:cóx•[R"U5n[U5nUnUH]n[R"U5nURU5(dU(dUnM:UR U5(aX4- nMVX2U-- nM_ U$![ [ [4a [R"SU/UQ76 ef=f)zÚJoin two or more pathname components, inserting '/' as needed. If any component is an absolute path, all previous path components will be discarded. An empty last part will result in a path that ends with a separator.r ) r=r>r9rAÚendswithÚ TypeErrorÚAttributeErrorÚ BytesWarningÚ genericpathÚ_check_arg_types)ÚaÚpr%r7Úbs r8r r Hs©€ô � Š �!‹ €AÜ �1‹+€CØ €Dð ÛˆAÜ— ’ ˜!“ ˆAØ�|‰|˜C× Ñ ®Ø’Ø—‘˜s×#Ñ#Ø‘ ’à˜a™‘’ñð €Køô ”~¤|Ð 4óÜ×$Ò$ V¨QÐ3°Ó3Ø ðús ¥A#B  /B9cóÔ•[R"U5n[U5nURU5S-nUSUXSpCU(a"X1[ U5-:waUR U5nX44$)z|Split a pathname. Returns tuple "(head, tail)" where "tail" is everything after the final slash. Either part may be empty.éN©r=r>r9ÚrfindÚlenÚrstrip)rJr%ÚiÚheadÚtails r8r r dsc€ô � Š �!‹ €AÜ �1‹+€CØ �‰�‹ �qÑ€AØ�2�A�˜˜"˜ˆ$Þ �œC ›I™ Ó%Ø�{‰{˜3ÓˆØ ˆ:Ðr:cóš•[R"U5n[U[5(aSnSnOSnSn[R "XSU5$)Nr3ó.rr)r=r>r4r5rGÚ _splitext)rJr%r)s r8rrusE€Ü � Š �!‹ €AÜ�!”U×ÑØˆØ‰àˆØˆÜ × Ò  ¨¨vÓ 6Ð6r:có<•[R"U5nUSSU4$)zFSplit a pathname into drive and path. On Posix, drive is always empty.Nrr<)rJs r8r r ƒs €ô � Š �!‹ €AØ ˆRˆaˆ5�!ˆ8€Or:)Ú_path_splitroot_excóÊ•[R"U5n[U[5(aSnSnOSnSnUSSU:waX"U4$USSU:wd USSU:XaX!USS4$X SSUSS4$) zWSplit a pathname into drive, root and tail. The tail contains anything after the root.r3r:rÚNrMéé)r=r>r4r5)rJr%Úemptys r8r r �sŒ€ô �IŠI�a‹LˆÜ �aœ× Ñ ØˆC؉EàˆC؈EØ ˆRˆaˆ5�C‹<à �?Ð "Ø ˆq�ˆV�s‹]˜a  !˜f¨›mà˜q  ˜uÐ$Ð $ð˜B˜Q˜%  1 2 Ð&Ð &r:cót•[R"U5n[U5nURU5S-nXS$)z)Returns the final component of a pathnamerMN)r=r>r9rO)rJr%rRs r8rr¦s3€ä � Š �!‹ €AÜ �1‹+€CØ �‰�‹ �qÑ€AØ ˆRˆ5€Lr:cóÌ•[R"U5n[U5nURU5S-nUSUnU(a"X1[ U5-:waUR U5nU$)z-Returns the directory component of a pathnamerMNrN)rJr%rRrSs r8rr°sX€ä � Š �!‹ €AÜ �1‹+€CØ �‰�‹ �qÑ€AØ ˆRˆaˆ5€DÞ �œC ›I™ Ó%Ø�{‰{˜3ÓˆØ €Kr:cóX•[R"U5n[R"UR5(ag[R"U5n[U[5(a [US5nO [US5n[R"U5nURUR:g=(d URUR:H$![ [ 4a gf=f![ a6 [U5n[R"U5nN}![ a gf=ff=f)z$Test whether a path is a mount pointFó..r)r=ÚlstatÚstatÚS_ISLNKÚst_modeÚOSErrorÚ ValueErrorr>r4r5r r+Úst_devÚst_ino)r7Ús1ÚparentÚs2s r8rr¾s÷€ðÜ �XŠX�d‹^ˆô �<Š<˜Ÿ ™ × #Ñ #Øð $ô �9Š9�T‹?€DÜ�$œ×ÑÜ�d˜EÓ"‰ä�d˜DÓ!ˆðÜ �XŠX�fÓ ˆð �9‰9˜Ÿ ™ Ñ !× ; R§Y¡Y°"·)±)Ñ%;Ð;øô/ ”ZÐ óáðûô óܘ&Ó!ˆð Ü—’˜&Ó!ŠBøÜó Úð úð ús;‚CÂC)ÃC&Ã%C&Ã)D)Ã?DÄ D%Ä!D)Ä$D%Ä%D)có´•[R"U5n[U[5(aSnOSnUR U5(dU$[ U5nUR US5nUS:a [U5nUS:Xa]S[R;a5SSK nUR[R"55RnOg[RSnOSSSK nUSUn[U[5(a[R"U5nUR!U5nURnUc["R$S:XaU$[U[5(a[R&"U5nUR)U5nXPUS-=(d U$![a Us$f=f![a Us$f=f![a Us$f=f![a Us$f=f)zKExpand ~ and ~user constructions. If user or $HOME is unknown, do nothing.ó~Ú~rMrÚHOMENÚvxworks)r=r>r4r5rAr9ÚfindrPÚenvironÚpwdÚ ImportErrorÚgetpwuidÚgetuidÚpw_dirÚKeyErrorÚfsdecodeÚgetpwnamÚsysÚplatformÚfsencoderQ)r7Útilder%rRruÚuserhomeÚnameÚpwents r8rråsª€ô �9Š9�T‹?€DÜ�$œ×ÑØ‰àˆØ �?‰?˜5× !Ñ !؈ Ü �4‹.€CØ � ‰ �#�qÓ€A؈1ƒuÜ �‹IˆØˆAƒvØ œŸ™Ó #ð Ûð ØŸ<™<¬¯ ª « Ó4×;Ñ;‘ô —z‘z &Ñ)‰Hð Û ð�A�aˆyˆÜ �dœE× "Ñ "Ü—;’;˜tÓ$ˆDð Ø—L‘L Ó&ˆEð —<‘<ˆàÑœCŸL™L¨IÓ5؈ Ü�$œ×ÑÜ—;’;˜xÓ(ˆØ�‰˜sÓ#€HØ ˜A˜B�xÑ × ' CÐ'øôCó à’ ð ûô ó ð’ ð ûôó àŠKð ûôó ðŠKð úsHÂFÂ.F$ÃF6ÄGÆ F!Æ F!Æ$ F3Æ2F3Æ6 GÇGÇ GÇGz\$(\w+|\{[^}]*\}?)có ^^^•[R"U5n[U[5(akSU;aU$[(d<SSKnUR [R5UR5Rq[nSmSm[[SS5mO[SU;aU$[(d.SSKnUR [UR5Rq [nSmS m[RmUUU4S jnU"X05$) zVExpand shell variables of form $var and ${var}. Unknown variables are left unchanged.ó$rNó{ó}ÚenvironbÚ$Ú{Ú}có6>•USnURT5(a URT5(dUS$USSnTc=[R"[R[R "U55nU$TUnU$![ a USs$f=f)NrMréÿÿÿÿ)rArCr=rrtr{rz)Úmr‚ÚvalueÚendrtÚstarts €€€r8ÚreplÚexpandvars..repl=s›ø€Ø�‰tˆØ �?‰?˜5× !Ñ !Ø—=‘= ×%Ñ%ؘ‘t� ؘ˜"�:ˆDð Ø‰ÜŸ š ¤B§J¡J¬r¯{ª{¸4Ó/@Ñ$AÓB�ð ˆLð   ™ ‘ðˆLøôó Ø�Q‘4ŠKð ús¾>BÁ>BÂBÂB)r=r>r4r5Ú_varsubbÚreÚcompileÚ _varpatternÚencodeÚASCIIÚsubÚgetattrÚ_varsubrt)r7r•ršr’r�rtr‘s @@@r8rr#sËú€ô �9Š9�T‹?€Dä�$œ×ÑØ �tÓ ØˆKߊxÛ Ø—z‘z¤+×"4Ñ"4Ó"6¸¿¹ÓA×EÑEˆH܈؈؈ܜ"˜j¨$Ó/‰à �d‹?؈KߊwÛ Ø—j‘j¤¨b¯h©hÓ7×;Ñ;ˆG܈؈؈ܗ*‘*ˆ÷ñ ˆt‹?Ðr:)Ú_path_normpathcóÒ•[R"U5n[U[5(aSnSnSnOSnSnSnU(dU$[ U5upEnUR U5n/nUH`nU(aX‚:XaMXƒ:wdU(dU(aU(aUSU:XaUR U5 MGU(dMPUR5 Mb UnXQRU5-nU=(d U$)z0Normalize path, eliminating double slashes, etc.r3rVrbrrrr�) r=r>r4r5r r ÚappendÚpopr ) r7r%ÚdotÚdotdotÚ_Úinitial_slashesÚcompsÚ new_compsÚcomps r8rrXsÊ€ä�yŠy˜‹ˆÜ �dœE× "Ñ "؈C؈C؉FàˆC؈C؈FÞØˆJÜ#,¨T£?Ñ ˆ˜DØ— ‘ ˜3“ˆØˆ ÛˆDÞ˜4›;ÙØ“¦¾yÞ  ¨"¡ °Ó 7Ø× Ñ  Ö&ß�Ø— ‘ –ñðˆØ§¡¨%£Ñ0ˆØ�{�sÐr:cóD•[R"U5n[U[5(a6UR S5(d[ [R "5U5nO5UR S5(d[ [R"5U5n[U5$)zReturn an absolute path.r3r) r=r>r4r5rAr ÚgetcwdbÚgetcwdrr6s r8rrusi€ä �9Š9�T‹?€DÜ�$œ×ÑØ�‰˜t×$Ñ$ÜœŸ š ›  dÓ+ˆDøà�‰˜s×#Ñ#ÜœŸ š ›  TÓ*ˆDÜ �D‹>Ðr:F)Ústrictcót•[R"U5n[U[5(aSnSnSn[RnOSnSnSn[R nU[ La [nSnOU(aSnO[nS nURU5S S S 2n[U5n URU5(aUOU"5n 0n U (Ga×UR5n U cX«UR5'M/U S -n U (aXÃ:XaMBXÄ:XaU S U RU5=(d Un MfX¢:XaX¬-n OX¢-U -n [R"U 5Rn[ R""U5(dkU(a_U (aX[ R$"U5(d=[[&R([R*"[&R(5U 5eU n GMXÛ;a,X½n U bGM-U(a[R "U 5 U n GMO[R,"U 5nURU5(aUn Uc&S X½'UR/U 5 UR/S 5 URU5S S S 2nUR1U5 U [U5- n GMßU $!Ua Of=fU n U (aGMñN) zlReturn the canonical path of the specified filename, eliminating any symbolic links encountered in the path.r3rVrbrrrT©Nr�rM)r=r>r4r5r©rªr1ÚFileNotFoundErrorrgr rPrAr ÚrindexrcrfrdreÚS_ISDIRÚerrnoÚENOTDIRÚstrerrorÚreadlinkrŸÚextend)Úfilenamer«r%r#r$rªÚ ignored_errorÚmaxlinksÚrestÚ part_countr7Úseenr‚ÚnewpathrfÚtargetÚ target_partss r8r+r+„sk€ô�yŠy˜Ó"€HÜ�(œE×"Ñ"؈؈؈ܗ‘‰àˆØˆØˆÜ—‘ˆØ ”ÒÜ)ˆ Ø‰Þ Ø‰ äˆ à€Hð �>‰>˜#Ó ™t ˜tÑ $€Dô�T“€Jð×%Ñ% c×*Ñ*‰3±³€Dð €Dç Ø�x‰x‹zˆØ ‰<à#�—‘“Ñ Ù Ø�a‰ˆ Þ�t“~á Ø ‹>àÐ)˜Ÿ™ SÓ)Ð*×1¨cˆDÙ Ø ‹;Ø‘k‰Gà‘j 4Ñ'ˆGð( Ü—h’h˜wÓ'×/Ñ/ˆGÜ—<’< ×(Ñ(Þžj´·²¸g×1FÑ1FÜ!¤%§-¡-´·²¼U¿]¹]Ó1KØ")ó+ð+à�ÚØ‹à‘}�ØÑ#âæä—G’G˜GÔ$Ø�ÚÜ—[’[ Ó)ˆFð × Ñ  ×%Ñ%à�ØÑà $�‘ ð— ‘ ˜GÔ$Ø— ‘ ˜DÔ!à!Ÿ<™<¨Ó,©T¨r¨TÑ2ˆLØ �K‰K˜ Ô %Ø œ#˜lÓ+Ñ +ˆJÚ ð €Køð/ó Ù ð úð*ˆ÷y Š*s%Ä8B#J!Ç J!Ç-J!ÈJ!Ê!J*Ê)J*Údarwincó˜•[R"U5nU(d [S5e[U[5(aSnSnSnOSnSnSnUcUnO[R"U5n[ U5R U5n[ U5R U5nU(aURU5O/nU(aURU5O/n[[Xx/55n U/[U5U - -X‰S-n U (dU$URU 5$![[[[4a [R "S X5 ef=f) z#Return a relative version of a pathzno path specifiedrVr3rbrrrNr-)r=r>rhr4r5rÚlstripr rPrr rDrErFÚDeprecationWarningrGrH) r7r‘r#r%r$Ú start_tailÚ path_tailÚ start_listÚ path_listrRÚrel_lists r8r-r-ós)€ô �9Š9�T‹?€DÞ ÜÐ,Ó-Ð-ä�$œ×ÑØˆØˆØ‰àˆØˆØˆà �}Ø‰ä— ’ ˜%Ó ˆðܘU“^×*Ñ*¨3Ó/ˆ ܘD“M×(Ñ(¨Ó-ˆ Þ.8�Z×%Ñ% cÔ*¸bˆ Þ,5�I—O‘O CÔ(¸2ˆ ä ” ˜jÐ4Ó5Ó 6ˆà�8œs :›¨qÑ0Ñ1°I¸b°MÑAˆÞ؈MØ�x‰x˜Ó!Ð!øÜ ”~¤|Ô5GÐ HóÜ×$Ò$ Y°Ô<Ø ðúsÁ(BDÄDÄ3E c ó •[[[RU55nU(d [ S5e[ US[ 5(aSnSnOSnSnUVs/sHo3RU5PM nnUVs1sHoURU5iM snunUVVs/sH$owVs/sHoˆ(dM X‚:wdMUPM snPM& nnn[U5n [U5n U n [U 5HupÈXŠU :wdMU SU n O U(aUOUSSn XÑRU 5-$s snfs snf![a [ S5Sef=fs snfs snnf![[4a [R "S /UQ76 ef=f) zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencerr3rVrrz%Can't mix absolute and relative pathsNr.)ÚtupleÚmapr=r>rhr4r5r rAÚminÚmaxÚ enumerater rDrErGrH)Úpathsr%r#r7Ú split_pathsrJr r?ÚcrkrmÚcommonrRÚprefixs r8r.r.s}€ô ”#”b—i‘i Ó'Ó (€Eæ ÜÐ@ÓAÐAä�%˜‘(œE×"Ñ"ØˆØ‰àˆØˆðÙ38Ó9²5¨4—z‘z #–±5ˆ Ð9ð PÙ16Ó7²¨A—l‘l 3Ö'±Ñ7‰FˆEñEPÔPÂK¸q 1Ó:¢1˜a«›¨a©kŸ¡1Ô:ÁKˆ ÑPÜ �Ó ˆÜ �Ó ˆØˆÜ˜b–M‰DˆAØ�q‘E�zؘB˜Q˜�Ùñ"ö ‘ 3 r¨ 7ˆØŸ™ Ó(Ñ(Ð(ùò#:ùò8øÜó PÜÐDÓEÈ4Ð Oð Püò;ùÓPøô ”~Ð &óÜ×$Ò$ \Ð:°EÓ:Ø ðús~ÁEÁD+Á6EÁ9D5Á=D0ÂD5ÂEÂ! EÂ* E Â8E Â?E ÃEà 1EÄ)EÄ+EÄ0D5Ä5E Å EÅEÅEÅ)F)N)+Ú__doc__r#r$r)r%r&r'r(r*r±r=r}rdrGÚ__all__r9rr r r rrWr ÚposixrYr rvrrrrr—rœr”rr�rrr+r~r,r-r.r­r:r8ÚrÖsðñ ð €Ø €Ø €Ø €Ø €Ø €Ø €Ø €ã Û Û Û ÛÜò D€òòòòò8 ò"7ð×(Ñ(×0Ñ0€Ôò ð'Ý5ò6òò<òN3(ðt$€ Ø €Ø €ò*ðbÝ0ò@ ð"'õjðZ"Ÿl™l¨hÑ6Ðô#óV$øðe ó'ô'ð'ûðVóôðús$Á!B%Á=B4Â% B1Â0B1Â4 CÂ?C