grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026§  ɯ¢ètãóv—dZdZdZdZdZdZdZdZdZdd l Z dd l Z dd l Z dd l Z dd l Tgd ¢Z d „Z dd lmZmZmZd„Zn#e$rd„ZYnwxYwd„Zd„Zd„Zd„Zd„Ze jje_d„Zd„Zd„Z d„Z! ddl"m#Z#n #e$rd Z#YnwxYwd„Z$d„Z%dZ&d a'd a(d„Z) ddl"m*Z*d„Z+n#e$rd „Z+YnwxYwd!„Z, dd"l"m-Z-d#„Z.n #e$re,Z.YnwxYw dd$l"m/Z/m0Z1e2fd%„Z3e2fd&„Z4d'd(œd)„Z5n#e$r d'd(œd*„Z5YnwxYwe6e d+¦«oe j7¦«d,d-kZ8d1d.„Z9d/„Z: dd0l"m;Z<d S#e$rYd SwxYw)2z�Common pathname manipulations, WindowsNT/95 version. Instead of importing this module directly, import os and refer to this module as os.path. ú.ú..ú\ú;ú/z.;C:\binÚnuléN)Ú*)'ÚnormcaseÚisabsÚjoinÚ splitdriveÚsplitÚsplitextÚbasenameÚdirnameÚ commonprefixÚgetsizeÚgetmtimeÚgetatimeÚgetctimeÚislinkÚexistsÚlexistsÚisdirÚisfileÚismountÚ expanduserÚ expandvarsÚnormpathÚabspathÚcurdirÚpardirÚsepÚpathsepÚdefpathÚaltsepÚextsepÚdevnullÚrealpathÚsupports_unicode_filenamesÚrelpathÚsamefileÚ sameopenfileÚsamestatÚ commonpathÚ ALLOW_MISSINGcó4—t|t¦«rdSdS)Nó\/ú\/)Ú isinstanceÚbytes©Úpaths ú-/opt/alt/python311/lib64/python3.11/ntpath.pyÚ _get_bothsepsr9$s€Ý�$�ÑÔð؈vàˆuó)Ú LCMapStringExÚLOCALE_NAME_INVARIANTÚLCMAP_LOWERCASEcó–—tj|¦«}|s|St|t¦«rnt j¦«}| |d¦« dd¦«}ttt|¦«}|  |d¦«Sttt| dd¦«¦«S)únNormalize case of pathname. Makes all characters lowercase and all slashes into backslashes. Úsurrogateescaperr) ÚosÚfspathr4r5ÚsysÚgetfilesystemencodingÚdecodeÚreplaceÚ_LCMapStringExÚ_LOCALE_NAME_INVARIANTÚ_LCMAP_LOWERCASEÚencode)ÚsÚencodings r8r r 4s·€õ ŒI�a‰LŒLˆØð ؈HÝ �a�Ñ Ô ð 8ÝÔ0Ñ2Ô2ˆHØ—’˜Ð#4Ñ5Ô5×=Ò=¸cÀ4ÑHÔHˆAÝÕ5Ý/°ñ4ô4ˆAà—8’8˜HÐ&7Ñ8Ô8Ð 8å!Õ"8Ý"2Ø"#§)¢)¨C°Ñ"6Ô"6ñ8ô8ð 8r:có<—tj|¦«}t|t¦«rLtjtj|¦« dd¦« ¦«¦«S| dd¦« ¦«S)r?rr)rArBr4r5ÚfsencodeÚfsdecoderFÚlower)rKs r8r r Gsx€õ ŒI�a‰LŒLˆÝ �a�Ñ Ô ð JÝ”;�rœ{¨1™~œ~×5Ò5°c¸4Ñ@Ô@×FÒFÑHÔHÑIÔIÐ IØ�yŠy˜˜dÑ#Ô#×)Ò)Ñ+Ô+Ð+r:có—tj|¦«}t|t¦«rd}d}d}nd}d}d}|dd… ||¦«}| |¦«s| |d ¦«rd Sd S) zTest whether a path is absoluteó\ó/s:\rrz:\NééTF)rArBr4r5rFÚ startswith)rKr#r&Ú colon_seps r8r r Xs‘€å Œ �!‰ Œ €AÝ�!•UÑÔðØˆØˆØˆ ˆ àˆØˆØˆ Ø ˆ"ˆ1ˆ"Œ� Š �f˜cÑ"Ô"€Að ‡|‚|�CÑÔð˜AŸLšL¨°AÑ6Ô6ð؈tØ ˆ5r:cóˆ—tj|¦«}t|t¦«rd}d}d}nd}d}d} |s |dd…|zt |¦«\}}t tj|¦«D]x}t |¦«\}} | r| d|vr |s|s|}| }Œ)|r7||kr1| ¦«| ¦«kr|}| }Œ`|}|r|d|vr||z}|| z}Œy|r"|d|vr|r|dd…|kr||z|zS||zS#tttf$rtj d |g|¢RŽ‚wxYw) NrRr2ó:rr3ú:réÿÿÿÿr ) rArBr4r5r ÚmaprPÚ TypeErrorÚAttributeErrorÚ BytesWarningÚ genericpathÚ_check_arg_types) r7Úpathsr#ÚsepsÚcolonÚ result_driveÚ result_pathÚpÚp_driveÚp_paths r8r r lsÉ€Ý Œ9�T‰?Œ?€DÝ�$�ÑÔðØˆØˆØˆˆàˆØˆØˆðØð Ø ��!�ŒH�s‰NˆNÝ$.¨tÑ$4Ô$4Ñ!ˆ �kÝ•R”Y Ñ&Ô&ð /ð /ˆAÝ(¨™mœm‰OˆG�VØð '˜& œ) tÐ+Ð+àð+ ,ð+Ø#*�LØ$� ØØð '˜W¨ Ò4Ð4Ø—=’=‘?”? l×&8Ò&8Ñ&:Ô&:Ò:Ð:à#*�LØ"(�KØà&� àð 0˜{¨2œ°dÐ:Ð:Ø)¨CÑ/� Ø%¨Ñ.ˆKˆKà ð 4˜K¨œN°$Ð6Ð6Ø ð7Ø)¨"¨#¨#Ô.°%Ò7Ð7Ø #Ñ%¨ Ñ3Ð 3ؘkÑ)Ð)øÝ •~¥|Ð 4ðððÝÔ$ V¨TÐ:°EÐ:Ð:Ð:Ð:Ø ðøøøs¸CDÄDÄ,Ecó\—tj|¦«}t|¦«dkrút|t¦«r d}d}d}d}nd}d}d}d }| ||¦«}|d d…|dzkr‹|d d … ¦«|krd nd}| ||¦«}|d kr ||d d …fS| ||dz¦«}|d kr ||d d …fS|d |…||d …fS|dd…|kr|d d…|dd …fS|d d …|fS)aÚSplit a pathname into drive/UNC sharepoint and relative path specifiers. Returns a 2-tuple (drive_or_unc, path); either part may be empty. If you assign result = splitdrive(p) It is always true that: result[0] + result[1] == p If the path contained a drive letter, drive_or_unc will contain everything up to and including the colon. e.g. splitdrive("c:/dir") returns ("c:", "/dir") If the path contained a UNC path, the drive_or_unc will contain the host name and share up to but not including the fourth directory separator character. e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir") Paths cannot contain both a drive letter and a UNC path. érRrSrYó\\?\UNC\rrrZú\\?\UNC\rNér[rU)rArBÚlenr4r5rFÚupperÚfind) rgr#r&rdÚ unc_prefixÚnormpÚstartÚindexÚindex2s r8r r ›sd€õ& Œ �!‰ Œ €AÝ ˆ1�v„v�‚{€{Ý �a�Ñ Ô ð (؈C؈F؈EØ(ˆJˆJàˆC؈F؈EØ'ˆJØ— ’ ˜& #Ñ&Ô&ˆØ ��1�Œ:˜˜q™Ò Ð ð˜r ˜rœŸšÑ*Ô*¨jÒ8Ð8�A�A¸aˆEØ—J’J˜s EÑ*Ô*ˆEؘŠ{ˆ{ؘ!˜B˜Q˜Bœ%�x�Ø—Z’Z  U¨Q¡YÑ/Ô/ˆFؘŠ|ˆ|ؘ!˜B˜Q˜Bœ%�x�Ø�W�f�W”:˜q   œzÐ)Ð )Ø ��1�Œ:˜Ò Ð à�R�a�R”5˜!˜A˜B˜Bœ%�<Ð Ø ˆRˆaˆRŒ5�!ˆ8€Or:có4—tj|¦«}t|¦«}t|¦«\}}t |¦«}|r!||dz |vr|dz}|r ||dz |v°|d|…||d…}}| |¦«p|}||z|fS)z~Split a pathname. Return tuple (head, tail) where tail is everything after the final slash. Either part may be empty.rUN)rArBr9r roÚrstrip)rgrcÚdÚiÚheadÚtails r8rrÑs´€õ Œ �!‰ Œ €AÝ ˜Ñ Ô €DÝ �a‰=Œ=�D€A€qå ˆA‰Œ€AØ ð��!�A‘#”˜dÐ"Ð"Ø ˆQ‰ˆð ð��!�A‘#”˜dÐ"Ð"à�2�A�2”˜˜!˜"˜"œˆ$€Dà �;Š;�tÑ Ô Ð $ €DØ ˆt‰8�Tˆ>Ðr:có°—tj|¦«}t|t¦«rt j|ddd¦«St j|ddd¦«S)NrRrSó.rrr)rArBr4r5r`Ú _splitext©rgs r8rrèsO€Ý Œ �!‰ Œ €AÝ�!•UÑÔð8ÝÔ$ Q¨¨t°TÑ:Ô:Ð:åÔ$ Q¨¨c°3Ñ7Ô7Ð7r:có,—t|¦«dS)z)Returns the final component of a pathnamerU©rr€s r8rróó€å �‰8Œ8�AŒ;Ðr:có,—t|¦«dS)z-Returns the directory component of a pathnamerr‚r€s r8rrúrƒr:cóœ— tj|¦«}n#tttf$rYdSwxYwt j|j¦«S)zhTest whether a path is a symbolic link. This will always return false for Windows prior to 6.0. F)rAÚlstatÚOSErrorÚ ValueErrorr^ÚstatÚS_ISLNKÚst_mode©r7Ústs r8rrsQ€ðÝ ŒX�d‰^Œ^ˆˆøÝ •Z¥Ð 0ððð؈uˆuðøøøå Œ<˜œ Ñ #Ô #Ð#s ‚—2±2cób— tj|¦«}n#ttf$rYdSwxYwdS)zCTest whether a path exists. Returns True for broken symbolic linksFT)rAr†r‡rˆrŒs r8rr sB€ðÝ ŒX�d‰^Œ^ˆˆøÝ •ZÐ ððð؈uˆuðøøøà ˆ4s ‚—,«,)Ú_getvolumepathnamecó”—tj|¦«}t|¦«}t|¦«}t |¦«\}}|r|d|vr| p||vS|r||vrdSt ra| |¦«}t |¦« |¦«}| ¦«| ¦«kSdS)zaTest whether a path is a mount point (a drive root, the root of a share, or a mounted volume)rTF)rArBr9r r r�rxÚcasefold)r7rcÚrootÚrestÚxÚys r8rr#sÈ€õ Œ9�T‰?Œ?€DÝ ˜Ñ Ô €DÝ �4‰=Œ=€DݘDÑ!Ô!�J€Dˆ$Ø ð,��Q”˜4��Ø�Ð+˜d d˜lÐ+Ø ð�˜� � ؈tåðØ �KŠK˜Ñ Ô ˆÝ ˜dÑ #Ô #× *Ò *¨4Ñ 0Ô 0ˆØ�zŠz‰|Œ|˜qŸzšz™|œ|Ò+Ð+àˆur:có¦—tj|¦«}t|t¦«rd}nd}| |¦«s|Sdt |¦«}}||kr9||t |¦«vr"|dz }||kr||t |¦«v°"dtjvrtjd}nVdtjvr|S tjd}n#t$rd}YnwxYwt|tjd¦«}|dkrŠ|d|…}t|t¦«rtj |¦«}tj  d¦«}||kr2|t|¦«kr|Stt|¦«|¦«}t|t¦«rtj|¦«}|||d …zS) zLExpand ~ and ~user constructs. If user or $HOME is unknown, do nothing.ó~ú~rUÚ USERPROFILEÚHOMEPATHÚ HOMEDRIVEÚÚUSERNAMEN)rArBr4r5rVror9ÚenvironÚKeyErrorr rOÚgetrrrN)r7ÚtilderzÚnÚuserhomeÚdriveÚ target_userÚ current_users r8rr@sÖ€õ Œ9�T‰?Œ?€DÝ�$�ÑÔðØˆˆàˆØ �?Š?˜5Ñ !Ô !ðØˆ Ø �c�$‰iŒi€q€AØ ˆaŠ%ˆ%�D˜”G¥=°Ñ#6Ô#6Ð6Ð6Ø ˆQ‰ˆð ˆaŠ%ˆ%�D˜”G¥=°Ñ#6Ô#6Ð6Ð6ð�œ Ð"Ð"Ý”:˜mÔ,ˆˆØ �2œ:Ð %Ð %؈ ð Ý”J˜{Ô+ˆEˆEøÝð ð ð ØˆEˆEˆEð øøøå˜�rœz¨*Ô5Ñ6Ô6ˆàˆA‚v€vؘ1˜Q˜3”iˆ Ý �k¥5Ñ )Ô )ð 3Ýœ+ kÑ2Ô2ˆKÝ”z—~’~ jÑ1Ô1ˆ à ˜,Ò &Ð &ð �x¨Ñ1Ô1Ò1Ð1Ø� Ý�G HÑ-Ô-¨{Ñ;Ô;ˆHå�$�ÑÔð)Ý”;˜xÑ(Ô(ˆà �d˜1˜2˜2”hÑ ÐsÃCà C*Ã)C*z.'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)c󇇇‡‡—tj|¦«}t|t¦«rrd|vrd|vr|Sts;ddl}| t ¦«|j ¦«j at}dŠdŠdŠdŠttdd¦«ŠnUd|vrd |vr|Sts)ddl}| t|j ¦«j a t}d Šd Šd ŠdŠtj Šˆˆˆˆˆfd „}|||¦«S) zfExpand shell variables of the forms $var, ${var} and %var%. Unknown variables are left unchanged.ó$ó%rNó{ó}Úenvironbú$ú%ú{ú}cóÜ•—|j}|€|dS||}|dkr0|‰kr|S| ‰¦«s|dS|dd…}nD|‰kr|S| ‰¦«r'| ‰¦«s|dS|dd…} ‰€6tjtjtj|¦«¦«S‰|S#t$r |dcYSwxYw)NrrUr[)Ú lastindexÚendswithrVrArNržrOrŸ)Úmr²ÚnameÚbraceÚdollarržÚpercentÚrbraces €€€€€r8Úreplzexpandvars..repl sø€Ø”Kˆ Ø Ð Ø�Q”4ˆKØ�Œ|ˆØ ˜Š>ˆ>Ø�wŠˆØ� Ø—=’= Ñ)Ô)ð Ø˜”t� ؘ˜˜”9ˆDˆDà�vŠ~ˆ~Ø� Ø�Š˜uÑ%Ô%ð "Ø—}’} VÑ,Ô,ð Ø˜Qœ4�KؘA˜b˜D”z�ð ØˆÝ”{¥2¤:­b¬k¸$Ñ.?Ô.?Ô#@ÑAÔAÐAà˜t”}Ð$øÝð ð ð Ø�Q”4ˆKˆKˆKð øøøsÂ7CÃCÃC+Ã*C+)rArBr4r5Ú_varsubbÚreÚcompileÚ _varpatternrJÚASCIIÚsubÚgetattrÚ_varsubrž) r7r¼rÀrºr¶r·ržr¸r¹s @@@@@r8rr�sBøøøøø€õ Œ9�T‰?Œ?€Då�$�ÑÔðØ �tÐ Ð  ¨DÐ 0Ð 0؈KÝð FØ ˆIˆIˆIØ—z’z¥+×"4Ò"4Ñ"6Ô"6¸¼ÑAÔAÔEˆH݈؈؈؈؈Ý�"˜j¨$Ñ/Ô/ˆˆà �dˆ?ˆ?˜s¨$˜˜ØˆKÝð <Ø ˆIˆIˆIØ—j’j¥¨b¬hÑ7Ô7Ô;ˆG݈؈؈؈؈ݔ*ˆðððððððððð6 ˆ3ˆt�T‰?Œ?Ðr:)Ú_path_normpathcóà—tj|¦«}t|t¦«r5tjt tj|¦«¦«¦«pdSt |¦«pdS)ú0Normalize path, eliminating double slashes, etc.r~r)rArBr4r5rNrÃrOr6s r8rrïs\€åŒy˜‰ŒˆÝ �d�EÑ "Ô "ð JÝ”;�~­b¬k¸$Ñ.?Ô.?Ñ@Ô@ÑAÔAÐIÀTÐ IݘdÑ#Ô#Ð* sÐ*r:cóè—tj|¦«}t|t¦«r d}d}d}d}nd}d}d}d}| ||¦«}t |¦«\}}| |¦«r||z }| |¦«}| |¦«}d }|t|¦«kr‡||r |||kr||=n\|||krK|d kr ||d z |kr||d z |d z…=|d z}n*|d kr|  |¦«r||=n |d z }n|d z }|t|¦«k°‡|s|s|  |¦«||  |¦«zS) rÅrRrSr~ó..rrrrrrU) rArBr4r5rFr rVÚlstriprror³Úappendr )r7r#r&r!r"ÚprefixÚcompsrzs r8rrÅs¬€åŒy˜‰ŒˆÝ �d�EÑ "Ô "ð ØˆC؈F؈F؈FˆFàˆC؈F؈F؈FØ�|Š|˜F CÑ(Ô(ˆÝ! $Ñ'Ô'‰ ˆ�ð �?Š?˜3Ñ Ô ð $Ø �c‰MˆFØ—;’;˜sÑ#Ô#ˆDà— ’ ˜3‘”ˆØ ˆØ•#�e‘*”*Šnˆnؘ”8ð ˜u Qœx¨6Ò1Ð1ؘ!�H�HØ�q”˜VÒ#Ð#Ø�q’5�5˜U 1 Q¡3œZ¨6Ò1Ð1ؘa ™c ! A¡#˜g˜Ø˜‘F�A�Aؘ!’V�V §¢°Ñ 4Ô 4�Vؘa˜˜à˜‘F�A�Aà�Q‘�ð•#�e‘*”*Šnˆnðð !˜eð !Ø �LŠL˜Ñ Ô Ð Ø˜Ÿš ™œÑ'Ð'r:cóþ—tj|¦«}t|¦«sLt|t¦«rtj¦«}ntj¦«}t||¦«}t|¦«S)z¤Return the absolute version of a path as a fallback function in case `nt._getfullpathname` is not available or raises OSError. See bpo-31047 for more. ) rArBr r4r5ÚgetcwdbÚgetcwdr r)r7Úcwds r8Ú_abspath_fallbackrÐ÷sb€õ Œ9�T‰?Œ?€DÝ �‰;Œ;ðÝ �d�EÑ "Ô "ð Ý”*‘,”,ˆCˆCå”)‘+”+ˆCÝ�C˜‰ŒˆÝ �D‰>Œ>Ðr:)Ú_getfullpathnamecóˆ— tt|¦«¦«S#ttf$rt |¦«cYSwxYw)z&Return the absolute version of a path.)rÑrr‡rˆrÐr6s r8r r sO€ð +Ý#¥H¨T¡N¤NÑ3Ô3Ð 3øÝ�Ð$ð +ð +ð +Ý$ TÑ*Ô*Ð *Ð *Ð *ð +øøøs‚ž AÁA)Ú_getfinalpathnameÚreadlinkcó¸—d}t¦«}t|¦«|vr¸| t|¦«¦« |}t|¦«}t |¦«sÔ*>Ñ!?Ô!?Ò?Ð?Ø$�}ð@ðˆFØ'ˆJØ#ˆNÝ”)‘+”+ˆC嘉~Œ~¥­'Ñ!2Ô!2Ò2Ð2Ø#�|Ø—_’_ VÑ,Ô,ˆ à •]Ð "Ð "Ý-ˆM؈FˆFØ ð $؈MˆMå#ˆMàð #¥%¨¡+¤+ð #ݘ˜T‘?”?ˆDð LÝ$ TÑ*Ô*ˆDØ Ð Ð øÝð "ð "ð "ð ð 1Ý�c "™gœgÑ&Ô&¨DÐ0ݘD‘>”>ˆDˆDˆDˆDˆDˆDøøøøØð Lð Lð LØ!œ{Ð Ý.¨tØ=JðLñLôLˆDˆDˆDˆDˆDˆDøøøøð Løøøðð !˜dŸošo¨fÑ5Ô5ð !ð�Š˜zÑ*Ô*ð +Ø&¨­c°*©o¬oÐ.>Ð.>Ô)?Ñ?��à�S ™[œ[˜\˜\Ô*�ð !Ý$ UÑ+Ô+¨tÒ3Ð3Ø �DøøÝð ð ð ð����øøøøÝð !ð !ð !ð”;Ð"2Ò2Ð2Ø �Døøøøøøøøøð  !øøøð ˆ sBÄD Ä FÄ*.EÅFÅ%FÆFÇ)G?Ç? H2È H2È H-È-H2có —t|¦«S©N)r )r7rîs r8r)r)s€Ý�t‰}Œ}Ðr:ÚgetwindowsversionrTrkcó¶—tj|¦«}t|t¦«rd}d}d}nd}d}d}|€|}|st d¦«‚tj|¦«} t t |¦«¦«}t t |¦«¦«}t|¦«\}}t|¦«\} } t|¦«t| ¦«krt d | ›d |›�¦«‚d „|  |¦«D¦«} d „|   |¦«D¦«} d } t| | ¦«D],\}}t|¦«t|¦«krn| dz } Œ-|gt| ¦«| z z| | d…z}|s|St|ŽS#ttttt f$rt#jd||¦«‚wxYw)z#Return a relative version of a pathrRr~rÇrrrNzno path specifiedzpath is on mount z, start on mount có—g|]}|¯|‘ŒSrðrð©Ú.0r”s r8ú zrelpath..às€Ð<Ð<Ð<˜A¸!Ð<�aÐ<Ð<Ð.ás€Ð:Ð:Ð:˜1¸Ð:�QÐ:Ð:Ð:r:rrUr+)rArBr4r5rˆr rr r rÚzipror r]r^r_ÚDeprecationWarningr`ra)r7rtr#r!r"Ú start_absÚpath_absÚ start_driveÚ start_restÚ path_driveÚ path_restÚ start_listÚ path_listrzÚe1Úe2Úrel_lists r8r+r+Äs€å Œ9�T‰?Œ?€DÝ�$�ÑÔðØˆØˆØˆˆàˆØˆØˆà €}؈à ð.ÝÐ,Ñ-Ô-Ð-å ŒI�eÑ Ô €EðÝ�H U™OœOÑ,Ô,ˆ Ý�8 D™>œ>Ñ*Ô*ˆÝ",¨YÑ"7Ô"7ш �ZÝ *¨8Ñ 4Ô 4ш �IÝ �KÑ Ô ¥H¨ZÑ$8Ô$8Ò 8Ð 8Ý�*Ø� � ˜K˜Kð)ñ*ô*ð *ð=Ð< ×!1Ò!1°#Ñ!6Ô!6Ð<Ñ<Ô<ˆ Ø:Ð:  §¢°Ñ 4Ô 4Ð:Ñ:Ô:ˆ à ˆÝ˜* iÑ0Ô0ð ð ‰FˆB�ݘ‰|Œ|�x¨™|œ|Ò+Ð+Ø�Ø �‰FˆAˆAà�8�s :™œ¨qÑ0Ñ1°I¸a¸b¸b´MÑAˆØð ؈MÝ�XˆÐøÝ •z¥>µ<ÕASÐ TðððÝÔ$ Y°°eÑ<Ô<Ð<Ø ðøøøsÁ!D2FÆFÆ;Gcó‡ ‡ ‡—|std¦«‚tttj|¦«¦«}t |dt ¦«rdŠdŠ dŠ ndŠdŠ dŠ ˆ ˆfd „|D¦«}ˆfd „|D¦«} tˆfd „|D¦«¦«\}n#t$rtd ¦«d ‚wxYwttd„|D¦«¦«¦«dkrtd¦«‚t|d  ‰ ‰¦«¦«\}}|  ‰¦«}ˆ fd„|D¦«}ˆ fd„|D¦«}t|¦«}t|¦«}t|¦«D]\} } | || kr |d | …}nŒ|d t|¦«…}|r|‰zn|} | ‰ |¦«zS#t t"f$rt%jdg|¢RŽ‚wxYw)zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencerrRrSr~rrrcóz•—g|]7}t| ‰‰¦« ¦«¦«‘Œ8Srð)r rFrP)rýrgr&r#s €€r8rþzcommonpath.. s;ø€ÐQÐQÐQÀa•z !§)¢)¨F°CÑ"8Ô"8×">Ò">Ñ"@Ô"@ÑAÔAÐQÐQÐQr:có@•—g|]\}}| ‰¦«‘ŒSrðr‚©rýryrgr#s €r8rþzcommonpath..s'ø€Ð<Ð<Ð<©¨¨1�q—w’w˜s‘|”|Ð<Ð<Ðzcommonpath..s3øèè€Ð>Ð>©$¨!¨Q˜˜2˜A˜2œ #šÐ>Ð>Ð>Ð>Ð>Ð>r:z%Can't mix absolute and relative pathsNc3ó K—|] \}}|V—Œ dSrørð)rýryrgs r8rzcommonpath..s&èè€Ð-Ð-™˜˜A�1Ð-Ð-Ð-Ð-Ð-Ð-r:rUzPaths don't have the same drivecó$•—g|] }|¯|‰k¯ |‘Œ Srðrð©rýÚcr!s €r8rþzcommonpath..s#ø€Ð9Ð9Ð9˜ qÐ9¨Q°&ª[¨[�!¨[¨[¨[r:có,•—g|]}ˆfd„|D¦«‘ŒS)có$•—g|] }|¯|‰k¯ |‘Œ Srðrðrs €r8rþz)commonpath...s#ø€Ð:Ð:Ð:˜a¨Ð:¨a°6ªk¨k˜¨k¨k¨kr:rð)rýrKr!s €r8rþzcommonpath..s.ø€ÐPÐPÐP¸qÐ:Ð:Ð:Ð: 1Ð:Ñ:Ô:ÐPÐPÐPr:r/)rˆÚtupler\rArBr4r5rÜror rFrÚminÚmaxÚ enumerater r]r^r`ra)rbÚ drivesplitsÚ split_pathsr r¤r7ÚcommonÚs1Ús2rzrrÊr&r!r#s @@@r8r/r/üswøøø€ð ðBÝÐ@ÑAÔAÐAå •#•b”i Ñ'Ô'Ñ (Ô (€EÝ�%˜”(�EÑ"Ô"ðØˆØˆØˆˆàˆØˆØˆð!ØQÐQÐQÐQÐQÈ5ÐQÑQÔQˆ Ø<Ð<Ð<Ð<° Ð<Ñ<Ô<ˆ ð PÝÐ>Ð>Ð>Ð>°+Ð>Ñ>Ô>Ñ>Ô>‰FˆEˆEøÝð Pð Pð PÝÐDÑEÔEÈ4Ð Oð Pøøøõ �sÐ-Ð- Ð-Ñ-Ô-Ñ-Ô-Ñ .Ô .°!Ò 3Ð 3ÝÐ>Ñ?Ô?Ð ?å   q¤×!1Ò!1°&¸#Ñ!>Ô!>Ñ?Ô?‰ ˆˆtØ—’˜C‘”ˆØ9Ð9Ð9Ð9˜VÐ9Ñ9Ô9ˆàPÐPÐPÐPÀKÐPÑPÔPˆ Ý �Ñ Ô ˆÝ �Ñ Ô ˆÝ˜b‘M”Mð &ð &‰DˆAˆqØ�B�q”EŠzˆzØ   œ�Ø�ðð˜H�S ™WœW˜HÔ%ˆFà %Ð0�˜‘�¨5ˆØ˜Ÿš Ñ(Ô(Ñ(Ð(øÝ •~Ð &ðððÝÔ$ \Ð:°EÐ:Ð:Ð:Ð:Ø ðøøøs%Á%GÂB! GÂ!B<Âr)sGðððð €Ø €Ø €Ø €Ø €Ø €Ø €Ø €à € € € Ø € € € Ø € € € ØÐÐÐØÐÐÐð ð ð €ðððð!,ð-ð-ð-ð-ð-ð-ð-ð-ð-ð-ð 8ð8ð8ð8øð$ð ,ð ,ð ,ð,ð,ð,ð,ð,ð ,øøøð$ððð()ð)ð)ð^.ð.ð.ðlððð.8ð8ð8ð Ô(Ô0€Ôð ðððððð$ð$ð$ðððð$Ø%Ð%Ð%Ð%Ð%Ð%Ð%øØðððØÐÐÐðøøøðððð:-ð-ð-ðz@€ Ø €Ø €ð:ð:ð:ð@3+Ø!Ð!Ð!Ð!Ð!Ð!ðZ+ð+ð+ð+øðWð((ð((ð((ð'(ð'(ð'(ð'(ð'(ð((øøøðfððð" +Ø#Ð#Ð#Ð#Ð#Ð#ð +ð+ð+ð+øð ð ð ð Ø€G€G€Gð øøøðgØ>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð ,3ð(ð(ð(ð(ðT9@ð0ð0ð0ð0ðd"'ðDðDðDðDðDðDøðCðððà!&ððððððððøøøðR&˜g cÐ+>Ñ?Ô?ð>Ø3˜cÔ3Ñ5Ô5°aÔ8¸AÒ=ðð+ð+ð+ð+ðp1ð1ð1ðh ð #Ð"Ð"Ð"Ð"Ð"Ð"Ð"øØð ð ð à€D€Dð øøøsi¯ =½AÁAÁ8A?Á?B ÂB ÂB&Â&B1Â0B1Â8CÃC à C ÃC)Ã) C7Ã6C7Ä'D/Ä/D8Ä7D8