Qfm 6dZdZdZdZdZdZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"e"Z#d Z$d!Z%d"Z&d#Z'd$Z(d!Z)d"Z*d#Z+d%Z,d&Z-d'Z.d Z/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d'Z8d&Z9dZ:d(Z;d)Zd,Z?ed-fed.fed/fed0fe d1fed2fed3ffe)d4ffe*d5ffe+e!zd.fe!d6fe+d7ffe-d4ffe.d5ffe/e"zd.fe"d6fe/d7ffe1d4ffe2d5ffe3e$zd8fe$d9fe3d7fff Z@d:ZAd&ZBdZCd#ZDd'ZEd ZFdZGdZHd"ZIdZJd)ZKdZLdZMdZNd ZOdZPd!ZQd(ZR dd;lSy<#eT$rYyrrc&t|tk(S)z0Return True if mode is from a FIFO (named pipe).)rS_IFIFOrs rS_ISFIFOr$Brrc&t|tk(S)z,Return True if mode is from a symbolic link.)rS_IFLNKrs rS_ISLNKr'Frrc&t|tk(S)z%Return True if mode is from a socket.)rS_IFSOCKrs rS_ISSOCKr*Js $<8 ##rcy)z#Return True if mode is from a door.Fr rs rS_ISDOORr,N rcy)z*Return True if mode is from an event port.Fr rs rS_ISPORTr/Rr-rcy)z'Return True if mode is from a whiteout.Fr rs rS_ISWHTr1Vr-riii@i8 iiiii ls-bdcprwSxtTcg}tD]8}|D] \}}||z|k(s|j|'|jd:dj|S)z;Convert a file's mode to a string of the form '-rwxrwxrwx'.r:)_filemode_tableappendjoin)rpermtablebitchars rfilemoderNsX D ICczS  D! KK  ! 774=r)*N)U__doc__ST_MODEST_INOST_DEVST_NLINKST_UIDST_GIDST_SIZEST_ATIMEST_MTIMEST_CTIMErrrrrr r#r&r)S_IFDOORS_IFPORTS_IFWHTrrrr!r$r'r*r,r/r1S_ISUIDS_ISGIDS_ENFMTS_ISVTXS_IREADS_IWRITES_IEXECS_IRWXUS_IRUSRS_IWUSRS_IXUSRS_IRWXGS_IRGRPS_IWGRPS_IXGRPS_IRWXOS_IROTHS_IWOTHS_IXOTH UF_NODUMP UF_IMMUTABLE UF_APPEND UF_OPAQUE UF_NOUNLINK UF_COMPRESSED UF_HIDDEN SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK SF_SNAPSHOTrGrNFILE_ATTRIBUTE_ARCHIVEFILE_ATTRIBUTE_COMPRESSEDFILE_ATTRIBUTE_DEVICEFILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_ENCRYPTEDFILE_ATTRIBUTE_HIDDENFILE_ATTRIBUTE_INTEGRITY_STREAMFILE_ATTRIBUTE_NORMAL"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDFILE_ATTRIBUTE_NO_SCRUB_DATAFILE_ATTRIBUTE_OFFLINEFILE_ATTRIBUTE_READONLYFILE_ATTRIBUTE_REPARSE_POINTFILE_ATTRIBUTE_SPARSE_FILEFILE_ATTRIBUTE_SYSTEMFILE_ATTRIBUTE_TEMPORARYFILE_ATTRIBUTE_VIRTUAL_stat ImportErrorr rrrs                     ######$                               ss s s s s s s s gos s ss s gos s ss s gos s s/8    "'%)"%#    s DDD