h)j`V      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                  0.1.0.0(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"pfile Wrapper over  that returns  instead of .(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred%&3 6(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred%&3   (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred     (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-InferredpfileModify error in  ExceptT e1 m with a  (e1 -> e2) function and then  the new error in m.pfileModify error in  ExceptT e1 m with a  (e1 -> e2) function and then & the new error as a singleton list in m.pfileCatch  of , modify it with a (IOException -> e) function and then  the new error in m (lifted ).pfileCatch  of the first  , ignore it and call the second . The second ! will not be called if the first  doesn't throw.pfile Unpack inner  WriterT w m of ExceptT e (WriterT w m) and consume its w with  (w -> m ()) function.pfileWhen ExceptT e (WriterT w m)! throws an error, pass its error e and writer's result w to (e -> w -> m b) function. A result of (e -> w -> m b) is ignored. Always return w.pfileUnpack ExceptT e (WriterT w m) . A result a of ExceptT e (WriterT w m) a is ignored.(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred "'(-?pfile Absolute  to a filesystem's object.pfile should be used instead of the  to properly remove a path without messing up permissions of a target in case of links_`a[\^]bcdefghijkUYZVWXlPQRSTmMNOnoKLpqHJIrstEGFuvBCDwx@Ayz{|}~:<=>?;5678901234+,-./&'()*!"#$% _`a[\^]bcdefghijkUYZVWXlPQRSTmMNOnoKLpqHJIrstEGFuvBCDwx@Ayz{|}~:<=>?;5678901234+,-./&'()*!"#$% b5(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'- pfile.PFile's environment that effects its behavior.pfilePFile's home directory.pfileProfiles home directory.pfile!Path to a current profile's link.pfile#Function used by logging functions.pfile that were used to create the .pfile options.pfile"Whether logging should be enabled.pfileDeduce PFile's  in the following order:unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"' (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred" pfile>Link handling strategy for directory/file links to be used by .pfile)Copy source link's target to destination.pfileCreate an empty directory at destination when source link's target is a directory or create an empty file at destination when source link's target is a file.pfile Copy source link to destination.pfileError thrown by .pfileError was encountered during f.pfileError was encountered during h.pfileError was encountered during n.pfileError was encountered during r.pfileError was encountered during j.pfileHandle links relocation with :, - copy source link's target to destination. - create an empty directory at destination when source link's target is a directory or create an empty file at destination when source link's target is a file.# - copy source link to destination.   (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"-?$pfileed  .pfile Root for ed  s.pfileError thrown by .pfile is outside of the .pfileError thrown by .pfileError was encountered during .pfile is missing.  is captured from .pfileError was encountered during  !.pfileUnable to remove !. This error is thrown after the + got copied back to its original location.pfileError was encountered during .pfileError thrown by .pfile  is missing.  is captured from .pfileError was encountered during  !.pfileUnable to remove  ". This error is thrown after the   got copied under .pfileError was encountered during .pfileMount a   inside of a  with a chosen  " for links.  does the following: Moves (renames)   into  under . If the move fails due to cross-device move attempt, the   is copied instead.Removes   at its original location.Handles links with  !.pfileMount path of a   inside of a .  uses | on the  % and then appends the result to the . For example:mountPath (Root $ Path.Absolute "/a/b/c/") (Path.Absolute "/d/e/f.txt") == Mount (Path.Absolute "/a/b/c/d/e/f.txt")Truepfile Unmount a  from a  back to its original location.  does the following: Moves (renames)  into  from the >. If the move fails due to cross-device move attempt, the  is copied instead.Removes  at its original location.Handles links with 'PFile.Profile.LinkHandling.handle PFile.Profile.LinkHandling.CopyLink'.pfileOrigin path of a  outside of a .  is an inverse of . Here is an example usage:r = originPath (Root $ Path.Absolute "/a/b/c/") (Mount $ Path.Absolute "/a/b/c/d/e/f.txt") & runExcept8r & either (const False) (== Path.Absolute "/d/e/f.txt")True works only for Posix paths. Windows paths are not supported currently. (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'-;?*Bpfile represents a filesystem's object (directory, directory link, file, file link) that is  #ed (or  $ed) inside of a .pfile2Path to a filesystem's object mounted inside of a .pfile8Path to a filesystem's object original location before  $ ing to a .pfiles state.pfile%When an error is encountered during  %, & attempts to rollback. If the rollback fails, the profile is considered .pfileWhen &$ succeeds, the created profile has  state.pfile of a .pfile holds a list of ies.pfile of a .pfileCurrent  of a .pfile List of a  ies.pfile&Get directory path where entries of a  named  are stored.pfileGet file path where serialized  named  is stored.pfileGet directory path where  and  of a  named  are located. (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"',pfileError thrown by .pfile)Unable to create a parent directory for .pfile was encountered during .pfileError thrown by .pfile was encountered during .pfile&Decoding error was encountered during .pfileLoad  named  from its .pfileDump  to its .   (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'-3|pfileError thrown by .pfileUnable to copy  ' to  .pfileError thrown by .pfileUnable to create a link at   pointing at  '.pfileError thrown by .pfileError was encountered during  (.pfileError thrown by .pfileError was encountered during  #.pfile a list of   inside of a  ) named  with a chosen  "1 for links. When an error is encountered during , ' terminates and provides successfully ed entries via a .pfile # a   inside of a  ) named  with a chosen  " for links.pfile ( a  ' from a  ) named # back to its original location at  .pfile a list of ies. For each  a link at  * will be created pointing at  +'. When an error is encountered during , & terminates and provides successfully ed entries via a .pfileCreate a link at   pointing at  '.pfile a list of ies. For each  a  + will be copied to  *'. When an error is encountered during , & terminates and provides successfully ed entries via a .pfileCopy filesystem's object at  ' to  .(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'-5pfile options.pfileWhether  should filter out  profiles.pfileError thrown by .pfile does not exist.pfile* was encountered during directory listing.pfileList profiles in  directory.pfileOptions that control  behaviour (currently only ).(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'9x pfileError thrown by .pfile"Unable to remove a directory link .pfileError thrown by .pfileError was encountered during .pfile"Unable to create a directory link  pointing at a new current .pfileError thrown by .pfileUnable to canonicalize .pfileError was encountered during .pfile current  . Current  is resolved via .pfile Set current . Previously set  is unset via  and then # is set to point at a new current .pfileUnset current .  is removed.(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'-@r pfile options.pfile " to be used when  $ing a link into a profile.pfile rollback cause.pfileError was encountered during .pfileError was encountered during .pfileError thrown by .pfile.'PFile.Profile.Internal.Profile.Profile with  was found in ,.pfile attempted to rollback due to +. The rollback has failed with a list of 9s. Since the rollback has failed, the profile passed to  is considered .pfile attempted to rollback due to 5. The rollback has succeeded. The profile passed to  was not created.pfileCreate a new profile called  with a list of   filesystem's objects to be  $ed inside of a ,1 directory. When an error is encountered during ,  attempts to rollback. If the rollback fails, the profile is considered . Only  profiles are returned.pfileCause of rollback.pfile+List of errors encountered during rollback.pfile#Path to a profile's root directory.pfile)Possible error that could appear during  attempt of the profile.pfileOptions that control  behaviour (currently only ).pfile of a profile to be created. The name will be used as a directory name for the profile in ,.pfileList of  & paths of filesystem's objects to be  $ed into a profile.  (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred%&3AG(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'(-Hpfile#Trash can for filesystem's objects.pfileRoot directory of a .pfileDirectory of a  where %ed filesystem's objects are located.pfileList of ed filesystem's objects in .pfileError thrown by .pfileError was encountered during writing to a "trashed.txt" file inside of the  directory.pfileError thrown by .pfile9Error was encountered during temporary directory removal.pfileError thrown by .pfileError was encountered during  (.pfileError provided via  by .pfileError was encountered during .pfileError thrown by .pfile  is already trashed.pfileError was encountered during  #.pfileError thrown by .pfile6 was encountered during temporary directory resolving.pfile5 was encountered during temporary directory creation.pfileCreate a new trash can.pfile #   inside of a  with  - strategy for links.pfile all ed filesystem's objects back to their original locations. When an error is encountered during , ' terminates and provides successfully ed entries via a .pfile (   (turned into  ' ) from a ( back to its original location (before ).pfile Remove a  forcibly.pfileDump  to a file inside of the  directory.pfileList of ed filesystem's objects.(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'-Wj#pfile options.pfileWhen  is set, forcibly remove a filesystem's object where a link pointing at an entry inside of the  is expected.pfileError thrown by .pfileError was encountered during .pfileError was encountered during .pfile attempted to rollback due to *. The rollback has failed with a list of 's. Since the rollback has failed, the ed entries of the  are still kept inside of the .pfileError was encountered during .pfileError thrown by .pfiles  is occupied.pfileError thrown by .pfileError was encountered during .pfileError was encountered during .pfile attempted to rollback due to *. The rollback has failed with a list of .9s. Since the rollback has failed, the profile passed to  was partially unpacked - some entries were unpacked and should be removed manually.pfileError thrown by .pfileError was encountered during .pfile,Validation error of entries was encountered.pfile attempted to rollback due to *. The rollback has failed with a list of .9s. Since the rollback has failed, the profile passed to  was partially linked - some links were created and should be removed manually.pfile attempted to rollback due to 5. The rollback has succeeded. The profile passed to  was not linked.pfileError thrown by .pfiles  does not exist.pfileUnable to canonicalize .pfile is not a link pointing at .pfileError thrown by .pfile,Validation error of entries was encountered.pfileError was encountered during .pfileError thrown by .pfileError was encountered during .pfileError was encountered during .pfile5Switch from the current profile to the next profile.   s the current profile and then s the next profile.pfile/Remove links pointing at entries inside of the . + only remove links that are know to PFile.pfileValidate that s  is a link pointing at .pfileCreate links pointing at ies inside of the  with .pfileUnpack 1s entries back to their original locations with .pfileValidate that s  does not exist.pfileForcibly remove s of a s ies.pfileCause of rollback.pfile+List of errors encountered during rollback.pfile passed to .pfile where ed entries of the  are kept.pfile s list of ,ed entries is either dumped to a file with  or provided as-is due to  failure.pfileCause of rollback.pfile+List of errors encountered during rollback.pfile passed to .pfileCause of rollback.pfile+List of errors encountered during rollback.pfile passed to .pfileOptions that control  behaviour (currently only ).pfileCurrent profile.pfile Next profile.,,/(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-InferredX(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"Z(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred'[H(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'-[(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred'\(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred];(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred%&3](c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"'^(c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred"%&3_F  (c) 2024 Illia ShkrobaBSD3 Illia Shkroba unstable1non-portable (Non-Unix systems are not supported) Safe-Inferred'-`0 Safe-Inferred`A112341153411346789:;<  =>?>@ABCD.EFGHIJKLMNOPQRSTUVWXYZ[\]^XSNI__`abcdcefegghijklmnopqrskhttuvwxyz{|}~,11 "   -      k !   ' '                 # +  ( *        + *       ) )                                   % $         2r&1134.&511534113400000000$pfile-0.1.0.0-20oPS0howQYB8ayRDFxCUs PFile.AesonPFile.CLI.ListPFile.CLI.UnpackPFile.CLI.Which PFile.Error PFile.Path PFile.Env PFile.LogPFile.Profile.LinkHandling PFile.MountPFile.Profile.Internal.Profile$PFile.Profile.Internal.SerializationPFile.Profile.Internal.RegistryPFile.Profile.Internal.ListPFile.Profile.Internal.CurrentPFile.Profile.Internal.Lifetime PFile.CLI.NewPFile.TrashCanPFile.Profile.Internal.SwitchPFile.Main.WhichPFile.Main.UnpackPFile.Main.NewPFile.Main.ListPFile.CompletionPFile.CLI.SwitchPFile.Main.Switch PFile.CLI PFile.MainpfileData.Aeson.Encode.Pretty encodePrettyAbsolutehandleStrategymountpushpushAllcreateMountunmountProfile originPath mountPathprofilesHomeDirPathCopyLink RemoveError PFile.Profile Paths_pfileOptionsshouldFilterDangling parserInfoparserforceRemoveOccupied modifyError tellErrorliftIOWithError onIOErrorconsumeWriterTfallback untilError unAbsoluteWriteFileErrorCreateParentInWriteFileErrorType Directory DirectoryLinkFileFileLinkRemoveDirectoryErrorRemoveDirectoryLinkErrorRemoveFileErrorRemoveFileLinkErrorMoveFileLinkErrorCreateParentInMoveFileLinkErrorFallbackCopyFileLinkErrorSourceFileLinkRemoveErrorRenameFileLinkError MoveFileErrorCreateParentInMoveFileErrorFallbackCopyFileErrorSourceFileRemoveErrorRenameFileErrorMoveDirectoryLinkError$CreateParentInMoveDirectoryLinkErrorFallbackCopyDirectoryLinkErrorSourceDirectoryLinkRemoveErrorRenameDirectoryLinkErrorMoveDirectoryError CreateParentInMoveDirectoryErrorFallbackCopyDirectoryErrorSourceDirectoryRemoveErrorRenameDirectoryError MoveErrorSourceTypeResolveMoveErrorCreateParentErrorCreateLinkErrorDirectoryLinkError FileLinkErrorCreateFileLinkError!CreateParentInCreateFileLinkErrorCreateDirectoryLinkError&CreateParentInCreateDirectoryLinkErrorCreateDirectoryError CopyFileErrorCreateParentInCopyFileErrorCopyFileWithMetadataError CopyLinkErrorCreateParentInCopyLinkErrorLinkTargetResolveError"CreateDirectoryLinkInCopyLinkErrorCreateFileLinkInCopyLinkError CopyErrorSourceTypeResolveCopyErrorListDirectoryErrorCreateDirectoryInCopyError FindResultfilesdirsfindDirectories findFilesfind parseAbsolutecanonicalizePathcopy copyDirectorycopyDirectoryLinkcopyFile copyFileLinkcopyLink showCopyErrorshowCopyLinkErrorshowCopyFileErrorcreateDirectoryshowCreateDirectoryErrorcreateDirectoryLinkshowCreateDirectoryLinkErrorcreateEmptyFilecreateFileLinkshowCreateFileLinkError createLinkshowCreateLinkError createParentshowCreateParentErrordoesDirectoryExist doesFileExist doesPathExist dropDrive dropFileNamedropTrailingPathSeparatorgetSymbolicLinkTarget listDirectory makeRelativemove moveDirectorymoveDirectoryLinkmoveFile moveFileLink showMoveErrorshowMoveDirectoryErrorshowMoveDirectoryLinkErrorshowMoveFileErrorshowMoveFileLinkErrorpathIsSymbolicLinkremoveshowRemoveErrorrenameDirectory renameFile takeBaseNametypeOfshowType writeFileshowWriteFileError showAbsolute $fEqAbsolute$fFromJSONAbsolute$fHashableAbsolute$fToJSONAbsoluteEnvdataHomeDirPathcurrentLinkPathprintoptionsverboseresolve descriptioninfowarningerrorpanicCopyFromOrigin CreateEmptyErrorCopyDirectoryFromOriginErrorCopyFileFromOriginErrorCreateEmptyDirectoryErrorCreateEmptyFileError showError showStrategyabsoluteRootOriginResolveErrorOriginOutsideOfRootError UnmountErrorMountMissingErrorLinkHandlingUnmountErrorMountLinkRemoveErrorMountMoveError MountErrorOriginMissingErrorLinkHandlingMountErrorOriginLinkRemoveErrorOriginMoveErrorshowMountErrorshowUnmountErrorshowOriginResolveError $fEqMount$fFromJSONMount $fToJSONMountEntryStateDanglingValidNameunNamenamestateentries absoluteRoot profileState profileRoot $fToJSONState$fFromJSONState $fToJSONEntry$fFromJSONEntry$fToJSONProfile$fFromJSONProfile$fGenericProfile$fGenericEntry$fFromJSONName $fToJSONName DumpErrorCreateParentInDumpError LoadError DecodeErrorload showLoadErrordump showDumpError UnpackError LinkErrorPopError PushError showPushErrorpop showPopErrorlinkAlllink showLinkError unpackAllunpackshowUnpackError ListOptions ListError ProfilesHomeDirDoesNotExistErrorlist showListErrorUnsetCurrentErrorCurrentLinkRemoveErrorSetCurrentErrorCurrentLinkErrorLoadCurrentErrorCanonicalizeCurrentError loadCurrentshowLoadCurrentError setCurrent unsetCurrentshowSetCurrentErrorshowUnsetCurrentError CreateOptionslinkHandlingStrategyCreateRollbackCause CreateErrorProfileAlreadyExistsErrorPushRollbackErrorPushCreateErrorshowCreateErrorshowCreateRollbackCause profileNamepathsTrashCanrootdataRootDumpTrashedErrorTemporaryDirectoryRemoveError RestoreErrorRestoreEntryError TrashErrorAlreadyTrashedErrorTemporaryDirectoryResolveErrorTemporaryDirectoryCreateErrortrashshowTrashError restoreAllrestoreshowRestoreEntryErrorshowRestoreError dumpTrashedshowDumpTrashedErrortrashed SwitchOptions PurgeErrorTrashCanCreateErrorPurgeRollbackErrorTrashCanRemoveErrorUnlinkedEntryValidateErrorOriginOccupiedErrorPurgeUnpackErrorUnlinkUnpackErrorUnpackRollbackErrorPurgeLinkErrorValidateLinkErrorLinkRollbackErrorLinkedEntryValidateErrorOriginDoesNotExistErrorOriginCanonicalizeErrorOriginChangedError UnlinkErrorValidateUnlinkErrorPurgeUnlinkError SwitchErrorUnlinkCurrentError LinkNextErrorswitchunlinkvalidateLinkedEntryvalidateUnlinkedEntrypurgeshowSwitchErrorshowUnlinkErrorshowLinkedEntryValidateErrorshowUnlinkedEntryValidateErrorshowPurgeErrormain profileNamesprofilesnextProfileNameCommandNewSwitchUnpackListWhichcommand text-2.0.2Data.Text.InternalTextbytestring-0.11.5.3Data.ByteString.Internal.Type ByteString mtl-2.2.2Control.Monad.Error.Class throwErrorControl.Monad.Writer.ClasstellbaseGHC.IO.Exception IOExceptionghc-prim GHC.TypesIOGHC.IOFilePathdirectory-1.3.7.1System.DirectoryremovePathForcibly$aeson-2.1.2.1-JbCTFV6Xk1ECJSbwVZEkyY Data.Aeson encodeFileeitherDecodeFileStrict MonadWriter_trashed GHC.IORefIORefversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDir