úÎdğ\Şe      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdSafek efghijklmSafeĞnoSafeCV6ğ% Abstract over a file system root$ can be constructed directly or via 6 or  .?A file system root can be interpreted as an (absolute) FilePathXConvert a Path to an absolute native FilePath (using native style directory separators).This operation needs to be in p2 for resolving paths with dynamic roots, such as  or . See also 7 tag for paths rooted at $HOME tag for absolute paths tag for paths rooted at the current working directoryCompatibility type-synonym!Type-level tag for unrooted paths:Unrooted paths need a root before they can be interpreted.&Type to represent filepath extensions.zFile extensions are usually a high-level convention and in most cases the low-level filesystem layer is agnostic to them.PathsA  is a wrapped q© with a type-level tag indicating where this path is rooted (relative to the current directory, absolute path, relative to a web domain, whatever). Most operations on ? are just lifted versions of the operations on the underlying qÿ0. The tag however allows us to give a lot of operations a more meaningful type. For instance, it does not make sense to append two absolute paths together; instead, we can only append an unrooted path to another path. It also means we avoid bugs where we use one kind of path where we expect another.Wrapped r Wrapped s!Wrapped t"Wrapped u#Wrapped v$Wrapped w%Wrapped x&Wrapped  'Wrapped y( Normalise  according to POSIX rules.See documentation of z for details.)Wrapped {*Wrapped |+Wrapped }The empty fragment  fragment "" acts as the right-identity root  / 2 "" == rootThis is the inverse to  splitFileName.,Wrapped ~-Wrapped .Wrapped €/Forget a path's rootNOTE: If the original f is considered an absolute POSIX style FilePath, it's automatically converted to a relative FilePath.0YConvert a relative/unrooted Path to a FilePath (using POSIX style directory separators). See also 1TConvert from a relative/unrooted FilePath (using POSIX style directory separators).NOTEw: If the argument is considered an absolute POSIX style FilePath, it's automatically converted to a relative FilePath.25A path fragment (like a single directory or filename)NOTE}: If the argument would be considered an absolute POSIX style FilePath, it's automatically converted to a relative FilePath.3 Version of 2 taking a list of fragmentsNOTE}: If any argument would be considered an absolute POSIX style FilePath, it's automatically converted to a relative FilePath.4Wrapped 5Wrapped ‚6 Construct a  from a native q.NOTE : Native q"s whose first path component is a ~I (and not preceded by anything else) are interpreted to be relative to $HOME (even on non-POSIX systems).7&Export filesystem path to an absolute  See also 8!Export absolute path to a native q.This is the inverse to 9.9 Construct  path from a native q.This is the inverse to 8.NOTEF: If the argument is not an absolute path this function will throw an ƒ.( !"#$%&'()*+,-./01234567897 7+5SafeCV8>' !"#$%&'()*+,-./0123456789'') !#"$*%&,-.+/012345(8679 TrustworthyR :Wrapper around :;Wrapper around (openBinaryTempFileWithDefaultPermissionsCNOTE: The caller is responsible for cleaning up the temporary file.<Wrapper around lazy „=Wrapper around strict …>Wrapper around lazy †?Wrapper around strict ‡@Wrapper around lazy ˆAWrapper around strict ‰BWrapper around lazy ŠCWrapper around strict ‹DWrapper around lazy ŒEWrapper around strict FWrapper around lazy GWrapper around strict H Read lazy Text$ from a file (using UTF-8 encoding).NOTEq: Since the file is read lazily UTF-8 decoding errors are detected lazily as well. Such errors will result in an  being thrown within the lazy Text stream.I Read strict Text$ from a file (using UTF-8 encoding).NOTE&: In case of UTF-8 decoding errors an  will be thrown.J Write lazy Text^ to a file (using UTF-8 encoding). The file is truncated to zero length before writing begins.K Write strict Text^ to a file (using UTF-8 encoding). The file is truncated to zero length before writing begins.L Append lazy Text) to end of a file (using UTF-8 encoding).MAppend strict Text) to end of a file (using UTF-8 encoding).W,Return the immediate children of a directory Filters out "." and "..".X(Recursive traverse a directory structureÿ#Returns a set of paths relative to the directory specified. The list is lazily constructed, so that directories are only read when required. (This is also essential to ensure that this function does not build the entire result in memory before returning, potentially running out of heap.)YOldNewZ   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ3:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ  SafeQVT[\]^_`[\]^_`[4\4SafeYˆa;Quasiquoter that materialises a value with a type of one of   0depending on the POSIX-style path literal given.bQuasiquoter for constructing   from POSIX-style path literals.‘;Helper for constructing 'Path x :: Path t' as TH expression’HelperababUnsafe\¸cReinterpret an unrooted path (UNSAFE)This is an alias for d; see comments there.dReinterpret the root of a pathAThis literally just changes the type-level tag; use with caution!cddc“                 ! "##$%&'()*++,,-./0123 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm nop qr qs qt qu qv qw xyz{|}~€ ‚ƒ„-ƒ„.ƒ„/ƒ„0ƒ„1ƒ„2ƒ„3ƒ„4ƒ„5ƒ„6ƒ„7ƒ„8ƒ„9ƒ„:ƒ„;ƒ„…ƒ„† ‡ˆ‰Š‹‰Œ‹‰Š‰Œ‰Š‰Œ‹‘‹‘‘’“”•–#paths-0.2.0.0-JokacokmsmYMbsTSc3AhwSystem.Path.IO System.PathSystem.Path.UnsafeSystem.Path.LensSystem.Path.QQSystem.Path.Internal.CompatSystem.Path.Internal.NativeSystem.Path.InternalfspathFP.Posix isExtensionOfbaseGHC.IO.Handle.TypesHandle GHC.IO.HandlehSeek hSetBuffering hFileSizehCloseBlockBuffering LineBuffering NoBuffering BufferMode GHC.IO.Device SeekFromEnd RelativeSeek AbsoluteSeekSeekMode GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModeFsPathFsRoottoAbsoluteFilePathHomeDirAbsoluteCWDRelativeUnrootedFileExtPath<.>-<.>splitExtension takeExtensionsplitExtensionstakeExtensionsstripExtension takeDirectory normalise takeFileName takeBaseNamehasTrailingPathSeparatoraddTrailingPathSeparatordropTrailingPathSeparator unrootPathtoUnrootedFilePathfromUnrootedFilePathfragment fragments joinFragmentssplitFragments fromFilePath makeAbsolute toFilePathfromAbsoluteFilePathwithFile openTempFile'readLazyByteStringreadStrictByteStringwriteLazyByteStringwriteStrictByteStringappendLazyByteStringappendStrictByteString readLazyTextreadStrictText writeLazyTextwriteStrictTextappendLazyTextappendStrictTextreadLazyTextUtf8readStrictTextUtf8writeLazyTextUtf8writeStrictTextUtf8appendLazyTextUtf8appendStrictTextUtf8copyFilecreateDirectorycreateDirectoryIfMissingremoveDirectory doesFileExistdoesDirectoryExistgetModificationTime removeFilegetTemporaryDirectorygetDirectoryContentsgetRecursiveContents renameFilegetCurrentDirectory~<.>~basename directory extensionfilenameunrootedrootPathcastRootGHC.Base Applicativepure<*>*>liftA2<* Data.Functor<$>dirMakeAbsoluteposixIsExtensionOf posixToNativeposixFromNativeghc-prim GHC.TypesIOGHC.IOFilePathfilepath-1.4.1.2System.FilePath.PosixjoinPathsplitDirectoriesGHC.Errerrorbytestring-0.10.8.2Data.ByteString.LazyreadFileData.ByteString writeFile appendFile#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.Lazy.IO Data.Text.IOData.Text.Encoding.ErrorUnicodeExceptionqPathquoter