Îõ³h&Dàì      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk simons@cryp.to provisionalportable Safe-Inferred6   simons@cryp.to provisionalportable Safe-Inferred;2 hackage-db Parse the  package.json file found in a  01-index.tar tarball from Hackage with  Data.Aeson1. This function is a convenience wrapper around l that throws an  exception to signal failure.:set -XOverloadedStrings¿parseMetaData "{\"signatures\":[],\"signed\":{\"_type\":\"Targets\",\"expires\":null,\"targets\":{\"/package/jailbreak-cabal-1.3.2.tar.gz\":{\"hashes\":{\"md5\":\"ba42b3e68323ccbeb3ac900cd68f9e90\",\"sha256\":\"212a8bbc3dfc748c4063282414a2726709d651322f3984c9989179d2352950f4\"},\"length\":2269}},\"version\":0}}"ÖMetaData {signed = SignedMetaData {version = 0, expires = Nothing, _type = "Targets", targets = fromList [("/package/jailbreak-cabal-1.3.2.tar.gz",TargetData {length = 2269, hashes = fromList [("md5","ba42b3e68323ccbeb3ac900cd68f9e90"),("sha256","212a8bbc3dfc748c4063282414a2726709d651322f3984c9989179d2352950f4")]})]}, signatures = []}$'&%(-,+*).01/22.01/(-,+*)$'&%BSD3simons@cryp.to provisionalportable Safe-Inferred u< hackage-dbDetermines the stateÞ directory (which e.g. holds the hackage tarball) cabal-install uses via the following logic: If the  CABAL_DIRÒ environment variable is set, its content is used as the cabal state directoryIf ~/.cabal (see m) exists, use that.Otherwise, use ${XDG_CACHE_HOME}/cabal (see n oÑ) which is the new directory cabal-install can use starting with version 3.10.*.ÃThis logic is mostly equivalent to what upstream cabal-install is  ˆhttps://github.com/haskell/cabal/blob/0ed12188525335ac9759dc957d49979ab09382a1/cabal-install/src/Distribution/Client/Config.hs#L594-L610doingò with the following exception: The state directory can freely be configured to use a different location in the cabal-install configuration file. hackage-db doesn't parse this configuration file, so differing state directories are ignored.? hackage-dbÐDetermine the default path of the Hackage database, which typically resides in *$HOME/.cabal/packages/hackage.haskell.org/. Running the command  cabal update or cabal v2-update! will keep the index up-to-date.See < on how  hackage-db( searches for the cabal state directory.<=>?<=>?simons@cryp.to provisionalportable Safe-Inferred)A hackage-dbConvert the the p used by the tar library into a standard q type.B hackage-dbConvert the standard q type into the p used by the tar library.C hackage-db=Parse an UTC timestamp in extended ISO8601 format a standard qÏ type. This function is useful to parse the "snapshot" identifier printed by  cabal-install< after a database update into a useable type. Combine with B to obtain an pÆ that can be passed to the Hackage DB reading code from this library.#parseIso8601 "2018-12-21T13:17:40Z"2018-12-21 13:17:40 UTC@ABC@ABCsimons@cryp.to provisionalportable Safe-Inferred|DEFGHIJIJDEFGHsimons@cryp.to provisionalportable Safe-Inferred;Õ KLMNOPQRSTUV SOPQRKLMNTUVsimons@cryp.to provisionalportable Safe-Inferred;8 ]`_^abcdefgh ba]`_^cdefghsimons@cryp.to provisionalportable Safe-Inferredš ?]^_`abcd ba]^_`cd?  Safe-InferredÓrstuvwxyú         !"#$%%&'(()*+,--./0123456789:;<=>?@ABBCDEFGHHIJKKLMNFGOPQRSTUHHIVKNFGWXY0STUZ[\]^_]^`]abcdefgh ) i j k l m n oð'hackage-db-2.1.3-GfaKIDy1fTbJxjo09Mt5isDistribution.Hackage.DB.Errors Distribution.Hackage.DB.MetaDataDistribution.Hackage.DB.PathDistribution.Hackage.DB.UtilityDistribution.Hackage.DB.Builder Distribution.Hackage.DB.UnparsedDistribution.Hackage.DB.ParsedDistribution.Hackage.DBPaths_hackage_dbNoHackageTarballFoundInvalidRepresentationOfTypeInvalidCabalFileInvalidMetaFileUnsupportedTarEntryIncorrectTarfileHackageDBPackageVersionHackageDBPackageNameHackageDBTarball$fExceptionHackageDBTarball$fExceptionHackageDBPackageName"$fExceptionHackageDBPackageVersion$fExceptionIncorrectTarfile$fExceptionUnsupportedTarEntry$fExceptionInvalidMetaFile$fExceptionInvalidCabalFile&$fExceptionInvalidRepresentationOfType $fExceptionNoHackageTarballFound$fShowNoHackageTarballFound!$fShowInvalidRepresentationOfType$fShowInvalidCabalFile$fShowInvalidMetaFile$fShowUnsupportedTarEntry$fShowIncorrectTarfile$fShowHackageDBPackageVersion$fShowHackageDBPackageName$fShowHackageDBTarball TargetDatalengthhashesSignedMetaDataversionexpires_typetargetsMetaDatasigned signatures parseMetaData$fFromJSONTargetData$fFromJSONSignedMetaData$fFromJSONMetaData$fShowMetaData$fGenericMetaData$fShowSignedMetaData$fGenericSignedMetaData$fShowTargetData$fGenericTargetData cabalStateDircabalTarballDirhackageTarballDirhackageTarball parseText fromEpochTime toEpochTime parseIso8601BuilderinsertPreferredVersionsinsertCabalFileinsertMetaFile readTarball parseTarball VersionData cabalFilemetaFile PackageDatapreferredVersionsversions HackageDBbuilder$fShowPackageData$fEqPackageData$fGenericPackageData$fShowVersionData$fEqVersionData$fGenericVersionData tarballHashesparseDBparsePackageDataparseVersionData$aeson-2.1.2.1-1CP91TiqJNMKhmZsERtItU Data.Aeson eitherDecodedirectory-1.3.6.2System.DirectorygetAppUserDataDirectorygetXdgDirectory System.Directory.Internal.CommonXdgCache"tar-0.5.1.1-1hFLSnQnFT3Fhn8GEZhmOiCodec.Archive.Tar.Types EpochTime time-1.11.1.1 Data.Time.Clock.Internal.UTCTimeUTCTimegetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir