^cW z ddlZddlmZddlZddlZddlZddlZddlZddlm Z m Z ej j Z ej jZej jZej jZejZejZejZejZejZejxZZej Z!e!Z"ej Z#ej$Z%e!dj&Z'dZ(dZ)dZ*dZ+dZ,d Z-ej.ejej.ej krejZ/ejZ0n:ej.ej1ej.ej krej2Z/ej1Z0Gd d ej3Z4Gd d ej3Z5dZ6dZ7dZ8dZ9dZ:dZ;dZGddej3Z?Gddej3Z@dZAdZBGddej3ZCGddej3ZDGdd ej3ZEed!j&ZFed"j&ZGd#ZHdZId#ZJGd$d%ej3ZKGd&d'ej3ZLGd(d)ej3ZMeejegejN_Oe#ejN_Pej e#ej ej ej eej ej gejQ_OeejQ_Pe#gejR_OeejR_Peeeej eee!ge jS_Oe!e jS_Pe!ej ge jT_Oee jT_Pe!ge jU_Oee jU_P eeej ge jV_Oee jV_Pn #eW$rYnwxYweege jX_Oee jX_PdZYdZZdZ[dZ\dZ]d*Z^d+Z_ege j`_Oee j`_Peej eej ej ej ej ege ja_Oee ja_Peej ege jb_Oee jb_Peeege jc_Oe!e jc_Pe!ej ge jd_Oee jd_Pge je_Oee je_Pe!ej ege jf_Oee jf_Peeej ej eeej eej ej g e jg_Oee jg_Pege jh_Ode jh_Pge ji_Oee ji_PejjeeZkekege jl_Oee jl_Pe!ege jm_Oee jm_Pe!ej ge jn_Oee jn_Pege jo_Oe!e jo_Pe!ej ge jp_Oee jp_Pej ej gejq_Oeejq_Pe!ej gejr_Oeejr_Pe!ejsgejt_Oeejt_Pejjee"e0Zueue0gejv_Oeejv_Pe!ej eej ej ej ge jw_Oee jw_Pd,Zxd-ZydBd/Zzd0Z{d1Z|d2Z}d3Z~d4Zd5Zd6Zd7Zd8Zd9Zd:ZgZd;Zd<Zd=Zd>Zd?Zd@ZdAZdS)CN)encodingpycompatWmzceZdZdefdefgZdS) _FILETIME dwLowDateTimedwHighDateTimeN)__name__ __module__ __qualname___DWORD_fields_1/usr/lib/python3/dist-packages/mercurial/win32.pyr r <s# &),c_shortrrrrrHrHs&fn%V^'<=HHHrrHcReZdZdejfdejfdejfdejfgZdS) _SMALL_RECTLeftTopRightBottomNrKrrrrNrNs=   &.! 6>" HHHrrNc0eZdZdefdefdefdefdefgZdS)_CONSOLE_SCREEN_BUFFER_INFOdwSizedwCursorPosition wAttributessrWindowdwMaximumWindowSizeN)rrrrHr=rNrrrrrTrTs= 6 V$  [! ' HHHrrTiiic \eZdZdefdefdefdefdejfdefdejfdefd eff Zd S) CERT_CHAIN_CONTEXTcbSize dwErrorStatus dwInfoStatuscChainrgpChaincLowerQualityChainContextrgpLowerQualityChainContextfHasRevocationFreshnessTimedwRevocationFreshnessTimeN)rrrrr>c_void_p_BOOLrrrrr[r[sa 6 &!  6 V_% $f- &8 &. $f- HHHrr[c.eZdZdefdefdejffZdS)CERT_USAGE_MATCHdwTypecUsageIdentifierrgpszUsageIdentifierN)rrrrr>rerrrrrhrhs/ 6 V$ 1 HHHrrhc \eZdZdefdefdefdefdefdefdejfdejfd eff Zd S) CERT_CHAIN_PARAr\RequestedUsageRequestedIssuancePolicydwUrlRetrievalTimeoutfCheckRevocationFreshnessTimerdpftCacheResyncpStrongSignParadwStrongSignFlagsN) rrrrrhrfr>rerrrrrmrmsc 6 +, "$45 &) (%0 $f- 6?+ FO, f% HHHrrmct}|dkr|dz}tj|}t |jt j|d|j)Nil)codez: ) _kernel32 GetLastErrorr>WinErrorOSErrorerrnor strfromlocalstrerror)namerxerrs r _raiseoserrorrgsn  ! ! # #D j  /t $ $ $C  x4T::::CLLI  rc t|dttztzdt t d}|tkrt| t}t |tj |st||t |S#t |wxYwNr)ry CreateFileA_FILE_SHARE_READ_FILE_SHARE_WRITE_FILE_SHARE_DELETE_OPEN_EXISTING_FILE_FLAG_BACKUP_SEMANTICS_INVALID_HANDLE_VALUErrGetFileInformationByHandler>byref CloseHandle)rfhfis r _getfileinforss     ,,/AA #   B """d" ( * *33B R8H8HII $   b!!!! b!!!!s A CCTc tjt}|}ttjtt }t t|t|}|tdd}|s|dz} t d|ddtj ||dtj |std|j }|jtzdk|rt |t |S#|rt |t |wxYw)aTests the given certificate to see if there is a complete chain to a trusted root certificate. As a side effect, missing certificates are downloaded and installed unless ``build=False``. True is returned if a chain to a trusted root exists (even if built on the fly), otherwise False. NB: A chain to a trusted root does NOT imply that the certificate is valid. )r\rnNsCertCreateCertificateContextrsCertGetCertificateChain)r>POINTERr[rmsizeofrh_crypt32CertCreateCertificateContextX509_ASN_ENCODINGlenrCertGetCertificateChainrcontentsr]CERT_TRUST_IS_PARTIAL_CHAINCertFreeCertificateChainCertFreeCertificateContext)certbuild chainctxptr pchainctx chainparacertctxflagschainctxs rcheckcertificatechainrsx.!344K I}_-->N>P>PI334TG5666 E  5//     L # #   L # #   6 4 5 5 5%%(CCqH  9  - -i 8 8 8++G4444  9  - -i 8 8 8++G4444s !A-E8E=c t||dst|dSdS#t$rt|YdSwxYwN)ryCreateHardLinkArAttributeError)srcdsts roslinkrsq((c488  #        cs+1A Ac*t|jS)z-return number of hardlinks for the given file)rr!)rs rnlinksrs    ,,rct|}t|}|j|jko|j|jko|j|jkS)zDReturns whether path1 and path2 refer to the same file or directory.)rrr"r#path1path2res1res2s rsamefilersU   D   D !T%>> 5  4#6 6 5  $"4 4rc^t|}t|}|j|jkS)z7Returns whether path1 and path2 are on the same device.)rrrs r samedevicers-   D   D  $(A AArc Ntj|}t}t|dddt j|ds:t}|tkrdSt j ||j Sr) msvcrt get_osfhandlefilenorry PeekNamedPiper>rrz_ERROR_BROKEN_PIPEr{value)pipehandleavailrs rpeekpipers  !$++-- 0 0F HHE  " "av|E22D  #$$&& $ $ $1oc""" ;rc|jtjkrdSt}|tkp |t kS)NF)r}EINVALryrzr_ERROR_NO_DATA)rs rlasterrorwaspipeerrorrs= yEL  u  " "C $ $ =~(==rcttd|}|r t}t|t j|r*|jtkt |S t |n#t |wxYwt tkS)zOreturn True if pid is still running or unable to determine, False otherwiseF) ry OpenProcess_PROCESS_QUERY_INFORMATIONrGetExitCodeProcessr>rr _STILL_ACTIVErrz_ERROR_INVALID_PARAMETER)pidhstatuss rtestpidrs 8%EEA% %XXF++Av|F/C/CDD 5|}4  ! !! $ $ $ $ 5  ! !! $ $ $ $I ! !! $ $ $ $  ! ! # #'? ??s A B&&Ccd}tj|dz}tdtj||}|dkrtj||krtjt |jS)zreturn full path of hg.exeiXrNr)r>create_string_bufferryGetModuleFileNameArr{_ERROR_INSUFFICIENT_BUFFERr)sizebufrs rexecutablepathrsu D  %dQh / /C  & &tV\#->-> E EC axxo o8999 9rcBtj|}tt |t dz}t j|}t |t j ||st j |j S)zGet the mount point of the filesystem from a directory or file (best-effort) Returns None if we are unsure. Raises OSError on ENOENT, EPERM, etc. r) ospathrealpathmaxr _MAX_PATHr>rryGetVolumePathNameArr{r)rrrrs r getvolumenamer sw%%H s8}}i ( (1 ,D  %d + +C  ' '&,s2C2CT J J o 9rc t|}t|}|tkrdS|tt t tfvrdStdz}tj |}t |dddddtj ||stj |jS)zGet the filesystem type name from a directory or file (best-effort) Returns None if we are unsure. Raises OSError on ENOENT, EPERM, etc. scifsNrr)rry GetDriveTypeA _DRIVE_REMOTE_DRIVE_REMOVABLE _DRIVE_FIXED _DRIVE_CDROM_DRIVE_RAMDISKrr>rGetVolumeInformationArr{r)rvolumetrrs r getfstyper s 4 F''AMw     t q=D  &t , ,D  * *atT6<+=+=t   o :rc td}tj|jdz}ttj|tj|stj|jS)zreturn name of current useri,r)rr>rr _advapi32 GetUserNameArr{)rrs rgetuserr?se #;;D  %dj1n 5 5C  ! !&,s"3"3V\$5G5G H H o 9rcd}trdSt|}t|t|dst jdS)zRegister a termination handler for console events including CTRL+C. python signal handlers do not work well with socket operations. c:tddS)Nr)ry ExitProcess)events rhandlerz!setsignalhandler..handlerQsa     rNT)_signalhandler_SIGNAL_HANDLERappendrySetConsoleCtrlHandlerr>r{)rrs rsetsignalhandlerrKsq !!!  A!  * *1d 3 3 o  rcd}t}tt ||dS)Nct}t|tj|||jkr"t|tdSdS)NFT)r_user32GetWindowThreadProcessIdr>rr ShowWindow_SW_HIDE)hwndrwpids rcallbackzhidewindow..callback]sXxx((v|D/A/ABBB $*     tX . . .5tr)ryGetCurrentProcessIdr EnumWindows _WNDENUMPROC)rrs r hidewindowr\sH  ' ' ) )C  X..44444rcZd}d}tt}| |tkr||fSt }t|t j|s||fS|jj |jj z }|jj |jj z dz}||fS)NOr) ry GetStdHandle_STD_ERROR_HANDLErrTGetConsoleScreenBufferInfor>rrXrQrOrRrP)widthheight screenbufcsbis rtermsizeris E F&&II)>>>f} & ( (D  / / 6<;M;M N Nf} M $-"4 4E ] !DM$5 5 9F &=rcTd}tt}|tkrdSt d}t|t j|sdS|j|zdkr-|xj|zc_t ||sdSdS)zaEnable virtual terminal mode for the associated console. Return True if enabled, else False.r%FrT) ryr _STD_OUTPUT_HANDLErrGetConsoleModer>rrSetConsoleMode)"ENABLE_VIRTUAL_TERMINAL_PROCESSINGrmodes r enablevtmoder~s*-&  # #F&&&u !99D  # #FFL,>,> ? ?u 77A== 88 ''55 5 4rct}tjt|_t }d}t jD]}|d|t j|fzz }|sd}|dz }tjtj t j |}t dt j|dddt|t jtj|tj| }|stjt|jt|j|jS)Nrs%s=%sF)r)r>rr*rBrenviron subprocess list2cmdlinerrapplyr~ryCreateProcessA strtolocal_CREATE_NO_WINDOWgetcwdrr{rrCrDrE)argssipienvkress r spawndetachedr*s; B M, ' 'BE   B C  55 zQ 0 3444 5LC  "8?83H$#O#O P PD  " " D!!     R R  C  o "+&&& "*%%% >rcVtj|r/ttjdt j|ztdD]C}d|tj ddfz} tj ||n*#t$rY@wxYwttj d tj|dS#t$rKt |t$ tj|YdS#t$rYYdSwxYwwxYw)z3try to implement POSIX' unlink semantics on Windowsz'Unlinking directory not permitted: '%s' s%s-%08xrlz"No usable temporary filename foundN)rrisdirIOErrorr}EPERMrr~rangerandomrandintrenameFileExistsErrorEEXISTunlinkr|rySetFileAttributesA_FILE_ATTRIBUTE_NORMAL)ftriestemps rr6r6sV w}}Q  K 6#A&& '   .rJJQq* = =>>  Ia    E    D el$HIII  $     $$T+ABBB  IdOOOOOO    DDD   s<;B BB=C*D(>D D$D(#D$$D(cvtj||r"t|tdSdSr)rmkdirryr7#_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED)r notindexeds rmakedirr@sAHTNNNP$$T+NOOOOOPPr)T)r>ctypes.wintypeswintypesr}rrr1rrrwindllkernel32ryadvapi32ruser32rcrypt32rc_longrfc_ushortr=c_ulongrc_uint_UINT_LONGr?_LPCSTRr<rer@_HWND_PCCERT_CONTEXTMAX_PATHrrr_ERROR_SUCCESS_ERROR_NO_MORE_FILESrrrrr_WPARAM_LPARAM c_longlong c_ulonglong Structurer rrrrrrr8r>rrr)rBr"rrHrNrTrr rrPKCS_7_ASN_ENCODINGr[rhrmrargtypesrestyperrrrrrrr7_DRIVE_UNKNOWN_DRIVE_NO_ROOT_DIRrrrrrrrrrrrzrr rr WINFUNCTYPErrrrr r rrc_intrrrrrrrrrrrrrrrrrrrrrrrr*r6r@rrrrasj  """"""  M " M " -  =      ?"& //    ) 6==6=#A#AAAnGmGGV]6$%%v)G)GGG GGGGGGG GGG     &"2    (&,#$ 6#.6+ >>>>>V >>>&"&"2VC[[&F3KK%&      )   v'     f&   "  O 2%. 1@%- O O O O  O O - ),1 (0?/@#,.3#+    O   " !( 18&/0J $-/4 $,")  %  *17FO)LI&(-I%%   D *1&(9 %', $   $+9  "'   O  O O O O  , (+0 ')0&/6(J %', $"(%!8  ' )0&/(B %', $"$ !' )0&/6(J %'- $   O O   O  O O % !$)  "'  $ )+ &(. %%&$UF33,;U+C (*/ '%,f$5 !#(  %,fo$> !#(  #)( !( 18&/0J $-/4 $,#)?FO"D !& -4fo,F )+1 (& 5""v!%88 ,g6#  O  O O O $  #(    """*/5/5/5/5d--- BBB   >>> @ @ @   *>   " 5 5 5*4'''T444nPPPPPs9 LL"!L"