!U#      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None7=?P1 pantry-tmpWarning output from . pantry-tmpMonoid used by ' to track expected fields and warnings. pantry-tmp:JSON parser that warns about unexpected fields in objects. pantry-tmpExtends .: warning to include field name. pantry-tmpExtends .:? warning to include field name. pantry-tmp version of .:. pantry-tmp version of .:?. pantry-tmp version of .!=. pantry-tmpSynonym version of ..:. pantry-tmpSynonym version of ..:?. pantry-tmpITell warning parser about an expected field, so it doesn't warn about it. pantry-tmp version of F. pantry-tmp Convert a  to a . pantry-tmpLog JSON warnings. pantry-tmp Handle warnings in a sub-object. pantry-tmpHandle warnings in a  Traversable of sub-objects. pantry-tmpHandle warnings in a Maybe Traversable of sub-objects. "! '&%$#)(,+*/.-4321098765:;<=>?@ABCDEFGHIJKMLPONSRQVUT[ZYXW^]\a`_bcdefghilkjmnuprtsqoxwv~}|{zy "! '&%$#)(,+*/.-4321098765:;<=>?@ABCDEFGHIJKMLPONSRQVUT[ZYXW^]\a`_bcdefghilkjmnuprtsqoxwv~}|{zyNoneSXD= pantry-tmpInternal exception used by # to allow short-circuiting of the ,. Should not be used outside of this module. pantry-tmp Tell the  to stop. The next time  is called, or if a  is currently blocking, the  thread will exit with a  exception. pantry-tmp+Delay the given number of microseconds. If - is triggered before the timer completes, a : exception will be thrown (which is caught internally by ). pantry-tmpGA companion thread which can perform arbitrary actions as well as delay pantry-tmpNWhen a delay was interrupted because we're told to stop, perform this action. pantry-tmpKeep running the > action until either the inner action completes or calls the h action. This can be used to give the user status information while running a long running operations. pantry-tmp the delay pantry-tmpaction to performNone&'279XG; pantry-tmpFYeah, it looks terrible to use a list here, but fusion should kick in pantry-tmp9May throw a runtime exception if invariants are violated!None27MV  pantry-tmp)Exceptions which can occur in this module pantry-tmpQA SHA256 hash, stored in a static size for more efficient memory representation. pantry-tmp Generate a ) value by hashing the contents of a file. pantry-tmp Generate a  value by hashing a  ByteString. pantry-tmp Generate a  value by hashing a lazy  ByteString. pantry-tmp Generate a + value by hashing the contents of a stream. pantry-tmpConvert a base16-encoded  value containing a hash into a . pantry-tmpConvert a base16-encoded  value containing a hash into a . pantry-tmp Convert a  into a  pantry-tmp.Convert a raw representation of a hash into a . pantry-tmp Convert a # into a base16-encoded SHA256 hash. pantry-tmp Convert a # into a base16-encoded SHA256 hash.  pantry-tmp Convert a " into a raw binary representation.  None"#247=?MPSX`4 pantry-tmprAn arbitrary hash for a snapshot, used for finding module names in a snapshot. Mostly intended for Stack's usage. pantry-tmpFA single layer of a snapshot, i.e. a specific YAML configuration file. pantry-tmpAThe sl to extend from. This is either a specific compiler, or a SnapshotLocationT which gives us more information (like packages). Ultimately, we'll end up with a CompilerVersion. pantry-tmp#Override the compiler specified in  . Must be  if using G.  pantry-tmp'Where to grab all of the packages from.! pantry-tmpBPackages present in the parent which should not be included here." pantry-tmp)Flag values to override from the defaults# pantry-tmpPackages which should be hidden when registering. This will affect, for example, the import parser in the script command. We use a  instead of just a 9 to allow overriding the hidden settings in a parent sl.$ pantry-tmpGHC options per package% pantry-tmpiPublication timestamp for this snapshot. This field is optional, and is for informational purposes only.& pantry-tmpFA single layer of a snapshot, i.e. a specific YAML configuration file.( pantry-tmpAThe sl to extend from. This is either a specific compiler, or a SnapshotLocationT which gives us more information (like packages). Ultimately, we'll end up with a CompilerVersion.) pantry-tmp#Override the compiler specified in  . Must be  if using G.* pantry-tmp'Where to grab all of the packages from.+ pantry-tmpBPackages present in the parent which should not be included here., pantry-tmp)Flag values to override from the defaults- pantry-tmpPackages which should be hidden when registering. This will affect, for example, the import parser in the script command. We use a  instead of just a 9 to allow overriding the hidden settings in a parent sl.. pantry-tmpGHC options per package/ pantry-tmpSee %0 pantry-tmp+Settings for a package found in a snapshot.2 pantry-tmpWhere to get the package from3 pantry-tmpSame as "4 pantry-tmpSame as #5 pantry-tmpSame as $6 pantry-tmp+Settings for a package found in a snapshot.8 pantry-tmpWhere to get the package from9 pantry-tmpSame as ": pantry-tmpSame as #; pantry-tmpSame as $< pantry-tmp;A flattened representation of all the layers in a snapshot.> pantry-tmp&The compiler wanted for this snapshot.? pantry-tmpvPackages available in this snapshot for installation. This will be applied on top of any globally available packages.@ pantry-tmp/Global packages that should be dropped/ignored.A pantry-tmp;A flattened representation of all the layers in a snapshot.C pantry-tmp&The compiler wanted for this snapshot.D pantry-tmpvPackages available in this snapshot for installation. This will be applied on top of any globally available packages.E pantry-tmp/Global packages that should be dropped/ignored.F pantry-tmpWhere to load a snapshot from.G pantry-tmpXDon't use an actual snapshot, just a version of the compiler with its shipped packages.H pantry-tmp8Download the snapshot from the given URL. The optional  is used for reproducibility.I pantry-tmpSnapshot at a local file path.J pantry-tmpOWhere to load a snapshot from in raw form (RSUrl could have a missing BlobKey)K pantry-tmpXDon't use an actual snapshot, just a version of the compiler with its shipped packages.L pantry-tmp8Download the snapshot from the given URL. The optional  is used for reproducibility.M pantry-tmpSnapshot at a local file path.N pantry-tmpWhich compiler a snapshot wants to use. The build tool may elect to do some fuzzy matching of versions (e.g., allowing different patch versions).Q pantry-tmp%GHCJS version followed by GHC versionR pantry-tmpWhat to use for running hpackS pantry-tmpCompiled in libraryT pantry-tmpExecutable at the provided pathU pantry-tmp=Newtype wrapper for easier JSON integration with Cabal types.X pantry-tmp%Location that an archive is stored atY pantry-tmp Archive stored at an HTTP(S) URLZ pantry-tmp#Archive stored at a local file path[ pantry-tmp?File path relative to the configuration file it was parsed from] pantry-tmp*Exact metadata specifying concrete package_ pantry-tmp$Package identifier in the cabal file` pantry-tmp!Tree key of the loaded up packagea pantry-tmp"Blob key containing the cabal fileb pantry-tmpMetadata provided by a config file for archives and repos. This information can be used for optimized lookups of information like package identifiers, or for validating that the user configuration has the expected information.d pantry-tmpPackage name in the cabal filee pantry-tmp!Package version in the cabal filef pantry-tmp!Tree key of the loaded up packageg pantry-tmp"Blob key containing the cabal file pantry-tmp!subdirectory and package metadatah pantry-tmpSRepresents the contents of a tree, which is a mapping from relative file paths to ms.j pantry-tmp+The hash of the binary representation of a h.q pantry-tmp4Things that can go wrong in pantry. Note two things:Many other exception types may be thrown from underlying libraries. Pantry does not attempt to wrap these underlying exceptions.We may add more constructors to this data type in minor version bumps of pantry. This technically breaks the PVP. You should not be writing pattern matches against this type that expect total matching. pantry-tmpDifferent from  since / is a lower bound on the size from the server. pantry-tmpA full specification for a package from Hackage, including the package name, version, and how to load up the correct cabal file revision. pantry-tmpxHow to choose a cabal file for a package from Hackage. This is to work with Hackage cabal file revisions, which makes PackageIdentifier5 insufficient for specifying a package from Hackage. pantry-tmpTake the latest revision of the cabal file available. This isn't reproducible at all, but the running assumption (not necessarily true) is that cabal file revisions do not change semantics of the build. pantry-tmp@Identify by contents of the cabal file itself. Only reason for Maybe on FileSizeE is for compatibility with input that doesn't include the file size. pantry-tmpIdentify by revision number, with 0 being the original and counting upward. This relies on Hackage providing consistent versioning. CFIHash< should be preferred wherever possible for reproducibility. pantry-tmp_A key for looking up a blob, which combines the SHA256 hash of the contents and the file size.The file size may seem redundant with the hash. However, it is necessary for safely downloading blobs from an untrusted source. See  @https://www.fpcomplete.com/blog/2018/07/pantry-part-2-trees-keys. pantry-tmpFile size in bytes pantry-tmp An environment which contains a . pantry-tmpLens to get or set the  pantry-tmpConfiguration for Hackage Security to securely download package metadata and contents from Hackage. For most purposes, you'll want to use the default Hackage settings via defaultHackageSecurityConfig.NOTET It's highly recommended to only use the official Hackage server or a mirror. See  6https://github.com/commercialhaskell/stack/issues/4137. pantry-tmp>Information on packages stored in a source control repository. pantry-tmpLocation of the repo pantry-tmpfCommit to use from the repo. It's strongly recommended to use a hash instead of a tag or branch name. pantry-tmpThe type of the repo pantry-tmp8Subdirectory within the archive to get the package from. pantry-tmp(The type of a source control repository. pantry-tmpA package archive, could be from a URL or a local file path. Local file path archives are assumed to be unchanging over time, and so are allowed in custom snapshots. pantry-tmpLocation of the archive pantry-tmp&Cryptographic hash of the archive file pantry-tmpSize of the archive file pantry-tmp8Subdirectory within the archive to get the package from. pantry-tmpZA raw package archive, specified by a user, could have no hash and file size information. pantry-tmpLocation of the archive pantry-tmp&Cryptographic hash of the archive file pantry-tmpSize of the archive file pantry-tmp8Subdirectory within the archive to get the package from. pantry-tmpALocation for remote packages or archives assumed to be immutable. pantry-tmprLocation for remote packages or archives assumed to be immutable. as user specifies it i.e. not an exact location pantry-tmp?Location to load a package from. Can either be immutable (see >) or a local directory which is expected to change over time. pantry-tmp?Location to load a package from. Can either be immutable (see ) or a local directory which is expected to change over time. Raw version doesn't include exact package version (e.g. could refer to the latest revision on Hackage) pantry-tmphA combination of the relative path provided in a config file, together with the resolved absolute path. pantry-tmp)Original value parsed from a config file. pantry-tmp:Absolute path resolved against base directory loaded from. pantry-tmp|Wraps a value which potentially contains relative paths. Needs to be provided with a base directory to resolve these paths.Unwrap this using . pantry-tmp3Should we print warnings when loading a cabal file? pantry-tmpIConfiguration value used by the entire pantry package. Create one using withPantryConfig . See also  PantryApp- for a convenience approach to using pantry. pantry-tmpWant to try updating the index once during a single run for missing package identifiers. We also want to ensure we only update once at a time. Start at True. pantry-tmpECache of previously parsed cabal files, to save on slow parsing time. pantry-tmp\Cache for mutable packages. We want to allow for an optimization: deferring parsing of the E until its actually needed. Therefore, we keep the filepath and the ' derived from that filepath. When the IO GenericPackageDescription" is run, it will ensure that the  PackageNamed matches the value inside the cabal file, and print out any warnings that still need to be printed. pantry-tmpconcurrently open downloads pantry-tmpRepresents a SQL database connection. This used to be a newtype wrapper around a connection pool. However, when investigating  6https://github.com/commercialhaskell/stack/issues/4471, it appeared that holding a pool resulted in overly long write locks being held on the database. As a result, we now abstract away whether a pool is used, and the default implementation in Pantry.Storage does not use a pool. pantry-tmpbThe revision number of a package from Hackage, counting upwards from 0 (the original cabal file).See caveats on . pantry-tmpTreeEntry of Cabal file pantry-tmpOriginal hpack file pantry-tmpGenerated Cabal file pantry-tmpVersion of Hpack used pantry-tmpEParsed tree with more information on the Haskell package it contains. pantry-tmpThe j containing this package./This is a hash of the binary representation of . pantry-tmpThe h containing this package. pantry-tmp2Information on the cabal file inside this package. pantry-tmp-The package name and version in this package. pantry-tmp$Resolve all of the file paths in an " relative to the given directory. pantry-tmpConvert  to its "raw" equivalent pantry-tmp@Package identifier and revision with a specified cabal file hash pantry-tmpConvert  to its "raw" equivalent pantry-tmp(Convert archive to its "raw" equivalent. pantry-tmpParse a hackage text. pantry-tmpParse a  pantry-tmpSafeFilePath for `package.yaml` file. pantry-tmpThis is almost a copy of Cabal's parser for package identifiers, the main difference is in the fact that Stack requires version to be present while Cabal uses "null version" as a defaul value pantry-tmpParse a package name from a u. pantry-tmpParse a package name from a u throwing on failure pantry-tmpParse a version from a u. pantry-tmpParse a package version from a u throwing on failure pantry-tmpParse a version range from a u. pantry-tmpParse a module name from a u. pantry-tmpParse a flag name from a u. pantry-tmpRender a package name as a u. pantry-tmp!Render a package identifier as a u. pantry-tmpRender a version as a u. pantry-tmpRender a flag name as a u. pantry-tmpRender a module name as a u. pantry-tmp0Conver package metadata to its "raw" equivalent. pantry-tmp"Returns pairs of subdirectory and ]. pantry-tmpWrap the keys in a  with a U to get a ' instance.  pantry-tmp Unwrap the U from the keys in a  to use a S instance.  pantry-tmpParse a  into a N value.  pantry-tmpParse a  into an  J.  pantry-tmpLocation of an LTS snapshot  pantry-tmp'Location of a Stackage Nightly snapshot pantry-tmp&For nicer display purposes: present a J- as a short form like lts-13.13 if possible. pantry-tmp2Convert snapshot location to its "raw" equivalent. pantry-tmp1Convert snapshot layer into its "raw" equivalent. pantry-tmp+Get the path to the global hints cache file pantry-tmp'Creates BlobKey for an input ByteString pantry-tmp#directory to use for relative paths  pantry-tmp major version pantry-tmp minor version! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      NoneX=[ pantry-tmpQEnsure that only one process is trying to write to the database at a time. See  6https://github.com/commercialhaskell/stack/issues/4471 and comments above. pantry-tmp storage file pantry-tmp'database description, for lock messages pantry-tmpSQLite database file None=      ! None>SXC" pantry-tmpAn #' value using the default global manager$ pantry-tmpWrap custom exceptions*NOTE: The only other exception defined in  http-client is TimeoutTriggered but it is currently disabled 2https://github.com/snoyberg/http-client/issues/116% pantry-tmpSet request headers& pantry-tmpExtract the response headers" NoneXD' pantry-tmp5Generate .cabal file from package.yaml, if necessary.' None$%&'@AHMVX_XS( pantry-tmpThis is a helper type to distinguish db queries between different rdbms backends. The important part is that the affects described in this data type should be semantically equivalent between the supported engines.) pantry-tmp"A query that is specific to SQLite* pantry-tmp&A query that is specific to PostgreSQL+ pantry-tmpRThis function provides a way to create queries supported by multiple sql backends., pantry-tmp;Get the filename for the cabal file in the given directory.WIf no .cabal file is present, or more than one is present, an exception is thrown via -.fIf the directory contains a file named package.yaml, hpack is used to generate a .cabal file from it.. pantry-tmp Similar to /2 but doesn't require a new connection to database. 0 pantry-tmp storage file1 pantry-tmpfor exceptions2 pantry-tmpfor exceptions3 pantry-tmpfor exceptions4 pantry-tmpfor exceptions5 pantry-tmpURL pantry-tmpsubdir6 pantry-tmpURL pantry-tmpsubdir7 pantry-tmpsubdir8 pantry-tmpsubdir, pantry-tmppackage directory. pantry-tmpfor exceptions/ pantry-tmpfor exceptions9 pantry-tmpfor exceptions pantry-tmp&dest dir, will be created if necessary:vbhFLW0qnk[)Nx\*oAMlcSi:3Xr1,y]^TBCGj`a<=;56784Zz{stupmdefg_YUVOPQRHIJKDE>?@92-./+w;<=> !"?@#ABCDEFGHI$%&'J(|0K}~LMNOPQRSTUVWXYZ2[3\]^45678_`a/bcdefNone%]cg pantry-tmpHA helper function that performs the basic character encoding necessary.h pantry-tmp&dest dir, will be created if necessaryhgNoned pantry-tmpLike System.FilePath.normalise , however:1Only works on relative paths, absolute paths failStrips trailing slashes.Only works on forward slashes, even on WindowsNormalizes parent dirs foo.. get stripped&Cannot begin with a parent directory (../)Spelled like an American, sorry pantry-tmpbFollowing tar file rules (Unix file paths only), make the second file relative to the first file. pantry-tmp base file pantry-tmp relative parthimnophimnopNonePXui pantry-tmpProvide a local file with the contents of the archive, regardless of where it comes from. Perform SHA256 and file size validation if downloading.j pantry-tmpOAttempt to parse the contents of the given archive in the given subdir into a h9. This will not consult any caches. It will ensure that:The cabal file existsThe cabal file can be parsedHThe name inside the cabal file matches the name of the cabal file itselfk pantry-tmpFind all of the files in the Map with the given directory as a prefix. Directory is given without trailing slash. Returns the suffix after stripping the given prefix.l pantry-tmp/If all files have a shared prefix, strip it offm pantry-tmp*Take us down to the specified subdirectoryn pantry-tmpfor exceptionso pantry-tmpfor exceptionsp pantry-tmpfor exceptionsq pantry-tmpfor error reportingr pantry-tmpfor exceptionsj pantry-tmpfile holding the archives pantry-tmpfor exceptionsm pantry-tmpsubdir pantry-tmp#files after stripping common prefixtunopNoneX` pantry-tmp,Require that the Hackage index is populated. pantry-tmp@If there is nothing in the Hackage index, then perform an update pantry-tmpDo not perform an update pantry-tmp8Should we pay attention to Hackage's preferred versions?v pantry-tmp"Package download info from Hackage pantry-tmpInformation returned by  pantry-tmp,Package that was loaded from Hackage tarball pantry-tmpPThis information is only available whenever package was just loaded into pantry. pantry-tmp!Did an update occur when running ? pantry-tmp>Where does pantry download its 01-index.tar file from Hackage? pantry-tmpXDownload the most recent 01-index.tar file from Hackage and update the database tables.3This function will only perform an update once per C for user sanity. See the return value to find out if it happened. pantry-tmpSame as , but force the database update even if hackage security tells that there is no change. This can be useful in order to make sure the database is in sync with the locally downloaded tarballw pantry-tmp:Populate the SQLite tables with Hackage index information.x pantry-tmpGiven package identifier and package caches, return list of packages with the same name and the same two first version number components found in the caches. pantry-tmpTry to come up with typo corrections for given package identifier using Hackage package names. This can provide more user-friendly information in error messages. pantry-tmp9Returns the versions of the package available on Hackage.y pantry-tmp9Returns the versions of the package available on Hackage. pantry-tmpreason for updating, if anyz pantry-tmpForce the database update. pantry-tmpreason for updating, if anyw pantry-tmptarball pantry-tmpwhere to start processing from pantry-tmp package namey pantry-tmp package name pantry-tmppackage version{ pantry-tmpcabal file contents|y}NoneSvbhFLW0qnk[)Nx\*oAMlcSi:3Xr1,y]^TBCGj`a<=;56784Zz{stupmdefg_YUVOPQRHIJKDE>?@92-./+wl !"#$%&'(|}~vbhFLW0qnk[)Nx\*oAMlcSi:3Xr1,y]^TBCGj`a<=;56784Zz{stupmdefg_YUVOPQRHIJKDE>?@92-./+wl !"#$%&'(|}~None~ pantry-tmpFalse if not using Windows OS.~NoneXE pantry-tmp}Fetch a repository and create a (temporary) tar archive from it. Pass the path of the generated tarball to the given action. pantry-tmpKRun a git command, setting appropriate environment variable settings. See  6https://github.com/commercialhaskell/stack/issues/3748. pantry-tmpRun an hg command pantry-tmp3Create a tarball containing files from a repository pantry-tmpcClone the repository and execute the action with the working directory set to the repository root. pantry-tmpargs pantry-tmpargs pantry-tmpOutput tar archive filenameNoneX{1 pantry-tmpQConvenient data type that allows you to work with pantry more easily than using U directly. Uses basically sane settings, like sharing a pantry directory with Stack. You can use  to use this. pantry-tmp!Package settings to be passed to . pantry-tmpTA completed snapshot location, including the original raw and completed information. pantry-tmpSA completed package location, including the original raw and completed information. pantry-tmp Create a new  with the given settings.1For something easier to use in simple cases, see . pantry-tmpDefault ) value using the official Hackage server. pantry-tmpHReturns the latest version of the given package available from Hackage. pantry-tmpTReturns location of the latest version of the given package available from Hackage. pantry-tmpQReturns the latest revision of the given package version available from Hackage. pantry-tmpDownload all of the packages provided into the local cache without performing any unpacking. Can be useful for build tools wanting to prefetch or provide an offline mode. pantry-tmpUnpack a given G into the given directory. Does not generate any extra subdirectories. pantry-tmpUnpack a given G into the given directory. Does not generate any extra subdirectories. pantry-tmp"Load the cabal file for the given .#This function ignores all warnings.jNote that, for now, this will not allow support for hpack files in these package locations. Instead, all PackageLocationImmutableAs will require a .cabal file. This may be relaxed in the future. pantry-tmp"Load the cabal file for the given .#This function ignores all warnings.jNote that, for now, this will not allow support for hpack files in these package locations. Instead, all PackageLocationImmutableAs will require a .cabal file. This may be relaxed in the future. pantry-tmpSame as , but takes a . Never prints warnings, see  for that. pantry-tmpSame as , but takes a . Never prints warnings, see  for that. pantry-tmpParse the cabal file for the package inside the given directory. Performs various sanity checks, such as the file name being correct and having only a single cabal file. pantry-tmp;Get the filename for the cabal file in the given directory.WIf no .cabal file is present, or more than one is present, an exception is thrown via -.fIf the directory contains a file named package.yaml, hpack is used to generate a .cabal file from it. pantry-tmp5Generate .cabal file from package.yaml, if necessary. pantry-tmpGet the  from a . pantry-tmpGet the  from a . pantry-tmpGet the  from a . pantry-tmpLoad a  from a . pantry-tmpLoad a  from a . pantry-tmpFill in optional fields in a  for more reproducible builds. pantry-tmpAdd in hashes to make a F reproducible. pantry-tmpFill in optional fields in a  for more reproducible builds. pantry-tmpLike 7, but does things on up to N separate threads at once. pantry-tmpParse a A (all layers) from a J. pantry-tmpParse a A (all layers) from a F. pantry-tmpParse a < (all layers) from a F) noting any incomplete package locations pantry-tmpParse a < (all layers) from a J- completing any incomplete package locations pantry-tmpQDoes not warn about drops, those are allowed in order to ignore global packages. pantry-tmpAdd more packages to a snapshotjNote that any settings on a parent flag which is being replaced will be ignored. For example, if package foo is in the parent and has flag bar set, and foo$ also appears in new packages, then bar will no longer be set.Returns any of the  values not used. pantry-tmpDAdd more packages to a snapshot completing their locations if neededjNote that any settings on a parent flag which is being replaced will be ignored. For example, if package foo is in the parent and has flag bar set, and foo$ also appears in new packages, then bar will no longer be set.Returns any of the H values not used and also all non-trivial package location completions. pantry-tmpParse a  value from a F. Returns a  value if provided an G$ constructor. Otherwise, returns a  value providing both the <, and a hash of the input configuration file. pantry-tmpParse a  value from a F. Returns a  value if provided an G$ constructor. Otherwise, returns a  value providing both the <, and a hash of the input configuration file. pantry-tmpGet the & of the package at the given location. pantry-tmpGet the & of the package at the given location. pantry-tmp1Get version of the package at the given location. pantry-tmpGet the & of the package at the given location. pantry-tmpGet the j& of the package at the given location. pantry-tmpGet the j& of the package at the given location. pantry-tmpLens to view or modify the R of a  pantry-tmp7Run some code against pantry using basic sane settings.For testing, see . pantry-tmpLike X, but uses an empty pantry directory instead of sharing with Stack. Useful for testing. pantry-tmp"Load the global hints from Github. pantry-tmpPartition a map of global packages with its versions into a Set of replaced packages and its dependencies and a map of remaining (untouched) packages. pantry-tmpUse a snapshot cache, which caches which modules are in which packages in a given snapshot. This is mostly intended for usage by Stack. pantry-tmpQpantry root directory, where the SQLite database and Hackage downloads are kept. pantry-tmp*Hackage configuration. You probably want . pantry-tmpWhen converting an hpack  package.yaml< file to a cabal file, what version of hpack should we use? pantry-tmpMaximum connection count pantry-tmpWhat to do with the config pantry-tmp package name pantry-tmp package name pantry-tmp package name pantry-tmpunpack directory pantry-tmpunpack directory pantry-tmp2project directory, with a cabal file or hpack file pantry-tmppackage directory pantry-tmpaction to perform pantry-tmp input values pantry-tmpconcurrent workers pantry-tmpaction to perform pantry-tmp input values pantry-tmpaction to perform pantry-tmp input values pantry-tmpconcurrent workers pantry-tmpaction to perform pantry-tmp input values pantry-tmp(Cached snapshot locations from lock file pantry-tmpCached locations from lock file pantry-tmp(Cached snapshot locations from lock file pantry-tmpCached locations from lock file pantry-tmpsource pantry-tmpVText description of where these new packages are coming from, for error messages only pantry-tmp new packages pantry-tmppackages from parent pantry-tmpVText description of where these new packages are coming from, for error messages only pantry-tmp#Cached data from snapshot lock file pantry-tmp new packages pantry-tmppackages from parent pantry-tmpurl pantry-tmpurl pantry-tmpglobal packages pantry-tmppackage name getter pantry-tmp5returns unique package id used for dependency pruning pantry-tmp9returns unique package ids of direct package dependencies pantry-tmp5overrides which global dependencies should get pruned !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgjkqrstuvwxyz{|}~     RSTqrstuvwxyz{|}~[\jkbcdefg]^_`aXYZJKLMFGHIABCDE<=>?@6789:;012345&'()*+,-./ !"#$%NOPQ    UVW  !"#$%&'()*+,-./01023435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3UVWVXVYVZ[\[][^[_[`[a[b[c[d[e[f[g[h[i[j[k[l[m[n[o[p[q[r[s[t[u[v[w[x[y[z[{[|[}[~[      !"#$%&'()*+,-./01234567889::;<=>?@ABCCDEFGHIJKLLMNOPQQRSTUVVWXYZZ[\]^_`abcdefghijklmmnopqrrsstuvwwxyz{|}~~                 | |     ! " #  $  % &  ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; <  = > ? @ A B C D E F G  ~ H I J K L M N O P Q R S T " U V W X Y Z [ \ ] ^ _ ` a b c # d e $ f g h i j k l m % n o p q r s t u v wxyz{|}}~       ! " # $%&' (   ) * + , - ./0 1 2  3 4 5 6 7 8 9 : ;<= ( - / 6 L Q > > ? @ A B C [ a h D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _`abcdefghijklmnopqrstuvwxyz{|}~))pantry-tmp-0.1.0.0-3cd8PVq5rQN3g7kHAzCFLYPantryPantry.Internal.AesonExtendedPantry.Internal.StackagePantry.Internal.CompanionPantry.Internal.StaticBytes Pantry.SHA256Pantry.Internal Pantry.Types Pantry.SQLite Pantry.HTTP5Hackage.Security.Client.Repository.HttpLib.HttpClient Pantry.HPackPantry.Storage Pantry.TreePantry.ArchivePantry.HackageSystem.IsWindows Pantry.Repo Cabal-2.4.0.1,Distribution.Types.GenericPackageDescriptionFlagNameDistribution.Types.PackageId pkgVersionpkgNamePackageIdentifierDistribution.Types.PackageName PackageNameDistribution.Types.VersionVersion$aeson-1.4.3.0-CKhfOL9YUanCoDzOlq0iJC Data.AesoneitherDecodeFileStrict'eitherDecodeStrict' eitherDecode'eitherDecodeFileStricteitherDecodeStrict eitherDecodedecodeFileStrict' decodeStrict'decode'decodeFileStrict decodeStrictdecode encodeFileencodeData.Aeson.TypesfoldableData.Aeson.Types.ClassGToJSON GToEncodingData.Aeson.Types.ToJSON toEncoding2toJSON2 toEncoding1toJSON1genericLiftToEncodinggenericToEncodinggenericLiftToJSON genericToJSONTo1ArgsNoToArgsToArgstoEncodingList toJSONList toEncodingtoJSONToJSON.=KeyValue toJSONKeyList toJSONKey ToJSONKeyToJSONKeyValue ToJSONKeyTextToJSONKeyFunctionliftToEncodingListliftToEncodingliftToJSONList liftToJSONToJSON1liftToEncodingList2liftToEncoding2liftToJSONList2 liftToJSON2ToJSON2Data.Aeson.Encoding.Internalpairs fromEncodingEncodingSeriesData.Aeson.Types.FromJSON.!=.:!fromJSONwithEmbeddedJSONwithBoolwithScientific withArraywithText withObject parseJSON2 parseJSON1genericLiftParseJSONgenericParseJSONparseIndexedJSON gParseJSON GFromJSON From1Args NoFromArgsFromArgs parseJSONList parseJSONFromJSONfromJSONKeyList fromJSONKey FromJSONKeyFromJSONKeyValueFromJSONKeyTextParserFromJSONKeyTextFromJSONKeyCoerceFromJSONKeyFunctionliftParseJSONList liftParseJSON FromJSON1liftParseJSONList2liftParseJSON2 FromJSON2Data.Aeson.Parser.Internaljson'jsonData.Aeson.Types.InternalcamelTo2defaultTaggedObjectdefaultOptionsobjectJSONPathSuccessErrorResultObjectArrayNullBoolNumberStringValuefromDotNetTime DotNetTimetagSingleConstructorsunwrapUnaryRecords sumEncodingomitNothingFieldsallNullaryToStringTagconstructorTagModifierfieldLabelModifierOptionscontentsFieldName tagFieldName TwoElemArrayObjectWithSingleField UntaggedValue TaggedObject SumEncodingData.Aeson.Types.GenericZeroOne'persistent-2.9.2-5SptqOCGJTN8tngXbE6HpR$Database.Persist.Class.PersistEntityUnique EntityFieldKey JSONWarningJSONUnrecognizedFieldsJSONGeneralWarningWithJSONWarnings WarningParser.:.:?..:..:?..!=...:...:? tellJSONFieldwithObjectWarningsunWarningParserlogJSONWarningsjsonSubWarningsjsonSubWarningsTjsonSubWarningsTTnoJSONWarnings$fIsStringJSONWarning$fDisplayJSONWarning$fShowJSONWarning$fFromJSONWithJSONWarnings$fMonoidWithJSONWarnings$fSemigroupWithJSONWarnings$fFunctorWithJSONWarnings$fIsStringWarningParserMonoid$fMonoidWarningParserMonoid$fSemigroupWarningParserMonoid$fEqJSONWarning$fEqWithJSONWarnings$fGenericWithJSONWarnings$fShowWithJSONWarnings$fGenericWarningParserMonoid StopCompanionDelay CompaniononCompanionDone withCompanion$fExceptionCompanionDone$fShowCompanionDone StaticBytes DynamicBytesStaticBytesExceptionNotEnoughBytes TooManyBytesBytes128Bytes64Bytes32Bytes16Bytes8 toStaticExact toStaticPadtoStaticTruncatetoStaticPadTruncate fromStatic$fByteArrayAccessBytes8$fByteArrayAccessBytes16$fByteArrayAccessBytes32$fByteArrayAccessBytes64$fByteArrayAccessBytes128$fExceptionStaticBytesException$fDynamicBytesVector$fDynamicBytesVector0$fDynamicBytesVector1$fDynamicBytesByteString $fShowBytes8$fStaticBytesBytes128$fStaticBytesBytes64$fStaticBytesBytes32$fStaticBytesBytes16$fStaticBytesBytes8 $fEqBytes8 $fOrdBytes8$fGenericBytes8$fNFDataBytes8$fHashableBytes8 $fDataBytes8 $fShowBytes16 $fEqBytes16 $fOrdBytes16$fGenericBytes16$fNFDataBytes16$fHashableBytes16 $fDataBytes16 $fShowBytes32 $fEqBytes32 $fOrdBytes32$fGenericBytes32$fNFDataBytes32$fHashableBytes32 $fDataBytes32 $fShowBytes64 $fEqBytes64 $fOrdBytes64$fGenericBytes64$fNFDataBytes64$fHashableBytes64 $fDataBytes64$fShowBytes128 $fEqBytes128 $fOrdBytes128$fGenericBytes128$fNFDataBytes128$fHashableBytes128$fDataBytes128$fShowStaticBytesException$fEqStaticBytesExceptionSHA256ExceptionInvalidByteCountInvalidHexBytesSHA256hashFile hashBytes hashLazyBytessinkHash fromHexText fromHexBytes fromDigestfromRaw toHexText toHexBytestoRaw$fFromJSONSHA256$fToJSONSHA256$fDisplaySHA256$fPersistFieldSqlSHA256$fPersistFieldSHA256 $fShowSHA256$fDisplaySHA256Exception$fShowSHA256Exception$fExceptionSHA256Exception$fGenericSHA256 $fEqSHA256$fNFDataSHA256 $fDataSHA256 $fOrdSHA256$fHashableSHA256SnapshotCacheHashunSnapshotCacheHash SnapshotLayerslParent slCompiler slLocationsslDropPackagesslFlagsslHidden slGhcOptions slPublishTimeRawSnapshotLayer rslParent rslCompiler rslLocationsrslDropPackagesrslFlags rslHidden rslGhcOptionsrslPublishTimeSnapshotPackage spLocationspFlagsspHidden spGhcOptionsRawSnapshotPackage rspLocationrspFlags rspHidden rspGhcOptionsSnapshotsnapshotCompilersnapshotPackages snapshotDrop RawSnapshot rsCompiler rsPackagesrsDropSnapshotLocation SLCompilerSLUrl SLFilePathRawSnapshotLocation RSLCompilerRSLUrl RSLFilePathWantedCompilerWCGhcWCGhcGitWCGhcjsHpackExecutable HpackBundled HpackCommand CabalString unCabalStringArchiveLocationALUrl ALFilePath RelFilePathPackageMetadatapmIdent pmTreeKeypmCabalRawPackageMetadatarpmName rpmVersion rpmTreeKeyrpmCabalTreeTreeMapTreeKey SafeFilePath TreeEntryteBlobteTypePantryException"PackageIdentifierRevisionParseFailInvalidCabalFileTreeWithoutCabalFileTreeWithMultipleCabalFilesMismatchedCabalNameNoCabalFileFoundMultipleCabalFilesFoundInvalidWantedCompilerInvalidSnapshotLocationInvalidOverrideCompilerInvalidFilePathSnapshotInvalidSnapshotMismatchedPackageMetadataNon200ResponseStatusInvalidBlobKeyCouldn'tParseSnapshotWrongCabalFileNameDownloadInvalidSHA256DownloadInvalidSizeDownloadTooLargeLocalInvalidSHA256LocalInvalidSizeUnknownArchiveTypeInvalidTarFileTypeUnsupportedTarballNoHackageCryptographicHashFailedToCloneRepoTreeReferencesMissingBlobCompletePackageMetadataMismatch CRC32MismatchUnknownHackagePackageCannotCompleteRepoNonSHA1MutablePackageLocationFromUrlMismatchedCabalFileForHackagePackageNameParseFailPackageVersionParseFailInvalidCabalFilePathDuplicatePackageNamesMigrationFailurePackageIdentifierRevision CabalFileInfo CFILatestCFIHash CFIRevision ModuleNameP unModuleNamePVersionP unVersionP PackageNamePunPackageNamePBlobKeyFileSizeHasPantryConfig pantryConfigLHackageSecurityConfig hscKeyIdshscKeyThresholdhscDownloadPrefixhscIgnoreExpiryReporepoUrl repoCommitrepoType repoSubdirRepoTypeRepoGitRepoHgArchivearchiveLocation archiveHash archiveSize archiveSubdir RawArchive raLocationraHashraSizeraSubdirPackageLocationImmutable PLIHackage PLIArchivePLIRepoRawPackageLocationImmutable RPLIHackage RPLIArchiveRPLIRepoPackageLocation PLImmutable PLMutableRawPackageLocation RPLImmutable RPLMutable ResolvedPathresolvedRelativeresolvedAbsolute Unresolved PrintWarningsYesPrintWarningsNoPrintWarnings PantryConfigpcHackageSecuritypcHpackExecutable pcRootDir pcStorage pcUpdateRefpcParsedCabalFilesRawImmutablepcParsedCabalFilesMutablepcConnectionCountStorage withStorage_withWriteLock_RevisionPackagepackageTreeKey packageTreepackageCabalEntry packageIdent resolvePathstoRawPLparseHackageTextparsePackageIdentifierRevisionunSafeFilePathmkSafeFilePath renderTree parseTreeparsePackageIdentifierparsePackageNameparsePackageNameThrowing parseVersionparseVersionThrowing parseFlagNamepackageNameStringpackageIdentifierString versionStringflagNameStringmoduleNameStringtoCabalStringMapunCabalStringMapparseWantedCompilerparseRawSnapshotLocationltsSnapshotLocationnightlySnapshotLocationtoRawSLtoRawSnapshotLayergetGlobalHintsFile initStorage hpackVersion ModuleNameId TreeEntryId treeEntryTree treeEntryPath treeEntryBlob treeEntryTypeTreeIdtreeKey treeCabal treeCabalTypetreeName treeVersionHackageCabalId VersionId PackageNameIdBlobId UniqueModuleModuleNameNamePackageExposedModuleId!PackageExposedModuleSnapshotCachePackageExposedModuleModulePackageExposedModulePackageUniqueSnapshotCacheSnapshotCacheIdSnapshotCacheSha RepoCacheId RepoCacheTime RepoCacheUrl RepoCacheTypeRepoCacheCommitRepoCacheSubdir RepoCacheTreeArchiveCacheIdArchiveCacheTimeArchiveCacheUrlArchiveCacheSubdirArchiveCacheShaArchiveCacheSizeArchiveCacheTree TreeEntryTree TreeEntryPath TreeEntryBlob TreeEntryType UniqueHPackHPackId HPackTree HPackVersionHPackCabalBlobHPackCabalPath UniqueTree TreeCabal TreeCabalTypeTreeName TreeVersion CacheUpdateIdCacheUpdateTimeCacheUpdateSizeCacheUpdateShaUniquePreferredPreferredVersionsIdPreferredVersionsNamePreferredVersionsPreferred UniqueHackageHackageCabalNameHackageCabalVersionHackageCabalRevisionHackageCabalCabalHackageCabalTreeUniqueHackageTarballHackageTarballIdHackageTarballNameHackageTarballVersionHackageTarballShaHackageTarballSize UniqueSfp FilePathId FilePathPath UniqueVersionVersionVersionUniquePackageNamePackageNameName UniqueUrlTime UrlBlobId UrlBlobUrl UrlBlobBlob UrlBlobTime UniqueBlobSha unBlobKeyBlobShaBlobSize BlobContents migrateAllgetPackageNameByIdgetPackageNameId getVersionId loadBlobById getBlobKey getTreeForKeynormalizeParentsmakeTarRelativeRequireHackageIndexYesRequireHackageIndexNoRequireHackageIndexUsePreferredVersionsIgnorePreferredVersionsHackageTarballResult htrPackagehtrFreshPackageInfoDidUpdateOccurUpdateOccurredNoUpdateOccurredhackageIndexTarballLupdateHackageIndexforceUpdateHackageIndexgetHackageTypoCorrectionsgetHackagePackageVersionsgetHackageTarballwithRepo PantryAppAddPackagesConfigapcDropapcFlags apcHiddens apcGhcOptions CompletedSL CompletedPLIwithPantryConfigdefaultHackageSecurityConfiggetLatestHackageVersiongetLatestHackageLocationgetLatestHackageRevision fetchPackagesunpackPackageLocationRawunpackPackageLocationloadCabalFileImmutableloadCabalFileRawImmutableloadCabalFileRaw loadCabalFileloadCabalFilePathfindOrGenerateCabalFilegpdPackageIdentifiergpdPackageName gpdVersion loadPackageloadPackageRawcompletePackageLocationcompleteSnapshotLocationcompleteSnapshotLayer loadSnapshotloadAndCompleteSnapshotloadAndCompleteSnapshotRawaddPackagesToSnapshotloadRawSnapshotLayerloadSnapshotLayergetPackageLocationNamepackageLocationIdentpackageLocationVersiongetRawPackageLocationIdentgetRawPackageLocationTreeKeygetPackageLocationTreeKeyhpackExecutableL runPantryApprunPantryAppCleanloadGlobalHintspartitionReplacedDependencieswithSnapshotCache$fSemigroupSingleOrNot$fHasTermPantryApp$fHasStylesUpdatePantryApp$fHasProcessContextPantryApp$fHasPantryConfigPantryApp$fHasLogFuncPantryAppWarningParserMonoidParser CompanionDone withPeekD fromWordsD text-1.2.3.1Data.Text.InternalTextbytestring-0.10.8.2Data.ByteString.Internal ByteString&cryptonite-0.25-LsV8svg4QzL2Aml9CmtuwYCrypto.Hash.TypesDigestbase GHC.MaybeNothingcontainers-0.6.0.1Data.Map.InternalMapData.Set.InternalSetOSPackageMetadatamismatchActualGenericPackageDescription PCCabalFile phOriginal phGenerated phVersion pirForHashtoRawPLI toRawArchivehpackSafeFilePathparseVersionRangeparseModuleNametoRawPMosToRpmsspecialRawSnapshotLocation bsToBlobKeyDistribution.ModuleName ModuleNameOptionalSubdirs OSSubdirsFileTypeFTNormal FTExecutable BuildFileBFCabalBFHpack FuzzyResultsFRNameNotFoundFRVersionNotFoundFRRevisionNotFoundMismatchmismatchExpected PackageCabalPCHpackPHpack cabalFileNamesafeFilePathtoPath withWriteLock)http-client-0.5.14-KnXHctdOlpxKVM3UFUFL0kNetwork.HTTP.Client.RequestdefaultRequestsetUri parseRequest parseUrlThrowNetwork.HTTP.Client.Types BodyReader HttpExceptionHttpExceptionRequestInvalidUrlExceptionHttpExceptionContentStatusCodeExceptionRequestResponse+http-conduit-2.3.7.1-5W2oguRykXiE2evTTPTK46Network.HTTP.SimplegetResponseBodygetResponseHeadersgetResponseStatussetRequestHeaderssetRequestHeaderaddRequestHeader(http-types-0.12.3-E5KSR7WXSnOHFYucAejn4UNetwork.HTTP.Types.HeaderHeaderNetwork.HTTP.Types.StatuspartialContent206ok200Status statusCodehRange hCacheControl HeaderName withResponsehttpSinkhttpSinkCheckedhttpLib/hackage-security-0.5.3.0-CpN8figmD6w4YP4im74WsB*Hackage.Security.Client.Repository.HttpLibHttpLib wrapCustomExhpack RdbmsActionsraSqlite raPostgresrdbmsAwareQuery(exceptions-0.10.2-BCw4sZZBgaL5zRGtRt3vrKControl.Monad.CatchthrowM hpackToCabalS hpackToCabal generateHPack storeTreeloadPackageByIdloadHackageTreestoreArchiveCacheloadArchiveCachestoreRepoCache loadRepoCacheunpackTreeToDir#Database.Persist.Sql.Types.Internal SqlBackend HackageCabalhackageCabalNamehackageCabalVersionhackageCabalRevisionhackageCabalCabalhackageCabalTree withStorage storeBlobloadBlob loadBlobBySHA loadURLBlob storeURLBlobclearHackageRevisionsstoreHackageRevisionloadHackagePackageVersionsloadHackagePackageVersionloadLatestCacheUpdatestoreCacheUpdatestoreHackageTarballInfoloadHackageTarballInfo storeHPackloadCabalBlobKeyloadTreegetHPackBlobKeyByIdstoreHackageTreeloadHackageTreeKeystorePreferredVersionloadPreferredVersionsinkHackagePackageNamescountHackageCabalsgetSnapshotCacheByHashgetSnapshotCacheIdstoreSnapshotModuleCacheloadExposedModulePackages rawParseGPD unpackTreewithArchiveLoc parseArchivefindWithPrefixstripCommonPrefix takeSubdir getArchiveKeygetArchivePackage getArchive foldArchivefoldTarfindCabalOrHpackFilefetchArchivesRaw fetchArchivesPackageDownload populateCachefuzzyLookupCandidates!getHackagePackageVersionRevisionsupdateHackageIndexInternalwithCachedTreegetHackageCabalFilegetHackageTarballKey osIsWindowswithRepoArchive runGitCommand runHgCommandcreateRepoArchive fetchReposRaw fetchRepos getRepoKeygetRepotraverseConcurrentlyWithData.TraversabletraverseloadSnapshotRawwarnUnusedAddPackagesConfig addAndCompletePackagesToSnapshot Data.EitherLeftRighttraverseConcurrently_traverseConcurrentlyWith_traverseConcurrently loadFromURL loadWithCheck