diff --git a/src/Crypto/Saltine/Instances.hs b/src/Crypto/Saltine/Instances.hs new file mode 100644 index 000000000..e4b812212 --- /dev/null +++ b/src/Crypto/Saltine/Instances.hs @@ -0,0 +1,77 @@ +{-# LANGUAGE BangPatterns #-} +{-# OPTIONS_GHC -Wwarn #-} + +-- SPDX-FileCopyrightText: 2024 Sarah Vaupel +-- +-- SPDX-License-Identifier: AGPL-3.0-or-later + +-- | Missing instances for saltine@0.1.1.1, backported from saltine@0.2.0.0 +module Crypto.Saltine.Instances () where + +import ClassyPrelude hiding (compare) + +import Crypto.Saltine.Class +import Crypto.Saltine.Core.Auth hiding (Key) +import Crypto.Saltine.Core.SecretBox +import Crypto.Saltine.Core.Hash +import Crypto.Saltine.Internal.ByteSizes (shorthashKey) + +import Data.ByteString.Unsafe +import Foreign.C +import Foreign.Marshal.Alloc (mallocBytes) +import Foreign.Ptr +import System.IO.Unsafe + +import qualified Data.ByteString as S +import qualified Data.ByteString.Char8 as S8 +import Data.Maybe (fromJust) + + +-- | Used for our `Show` instances +nullShKey :: ShorthashKey +nullShKey = fromJust . decode $ S8.replicate shorthashKey '\NUL' + +-- | Extremely unsafe function, use with utmost care! Builds a new +-- ByteString using a ccall which is given access to the raw underlying +-- pointer. Overwrites are UNCHECKED and 'unsafePerformIO' is used so +-- it's difficult to predict the timing of the 'ByteString' creation. +buildUnsafeByteString :: Int -> (Ptr CChar -> IO b) -> (b, ByteString) +buildUnsafeByteString n = unsafePerformIO . buildUnsafeByteString' n + +-- | Slightly safer cousin to 'buildUnsafeByteString' that remains in the +-- 'IO' monad. +buildUnsafeByteString' :: Int -> (Ptr CChar -> IO b) -> IO (b, ByteString) +buildUnsafeByteString' n k = do + ph <- mallocBytes n + bs <- unsafePackMallocCStringLen (ph, n) + out <- unsafeUseAsCString bs k + return (out, bs) + +-- | Convenience function for accessing constant C strings +constByteStrings :: [ByteString] -> ([CStringLen] -> IO b) -> IO b +constByteStrings = + foldr (\v kk -> \k -> (unsafeUseAsCStringLen v) (\a -> kk (\as -> k (a:as)))) ($ []) + +-- | bin2hex conversion for showing various binary types +foreign import ccall unsafe "sodium_bin2hex" + c_sodium_bin2hex + :: Ptr CChar -- Target zone + -> CInt -- Max. length of target string (must be min. bin_len * 2 + 1) + -> Ptr CChar -- Source + -> CInt -- Source length + -> IO (Ptr CChar) + +bin2hex :: ByteString -> String +bin2hex bs = let tlen = S.length bs * 2 + 1 in + S8.unpack . S8.init . snd . buildUnsafeByteString tlen $ \t -> + constByteStrings [bs] $ \[(pbs, _)] -> + c_sodium_bin2hex t (fromIntegral tlen) pbs (fromIntegral $ S.length bs) + +instance Show Key where + show k = "SecretBox.Key {hashesTo = \"" <> (bin2hex . shorthash nullShKey $ encode k) <> "}\"" + +instance Show Nonce where + show k = "SecretBox.Nonce " <> bin2hex (encode k) + +instance Show Authenticator where + show k = "Sign.Authenticator " <> bin2hex (encode k) \ No newline at end of file diff --git a/src/Handler/Utils/Memcached.hs b/src/Handler/Utils/Memcached.hs index c7dba703f..e1de1ad3e 100644 --- a/src/Handler/Utils/Memcached.hs +++ b/src/Handler/Utils/Memcached.hs @@ -1,4 +1,4 @@ --- SPDX-FileCopyrightText: 2022-24 Gregor Kleen , Steffen Jost +-- SPDX-FileCopyrightText: 2022-2024 Sarah Vaupel , Gregor Kleen , Steffen Jost -- -- SPDX-License-Identifier: AGPL-3.0-or-later @@ -69,7 +69,7 @@ import System.IO.Unsafe (unsafePerformIO) import Control.Concurrent.STM.Delay import qualified Crypto.Saltine.Class as Saltine -import qualified Crypto.Saltine.Internal.SecretBox as Saltine +import qualified Crypto.Saltine.Internal.ByteSizes as Saltine import qualified Crypto.Saltine.Core.AEAD as AEAD import qualified Control.Monad.State.Class as State @@ -135,15 +135,15 @@ putMemcachedValue MemcachedValue{..} = do getMemcachedValue, getMemcachedValueNoExpiry :: Binary.Get MemcachedValue getMemcachedValue = do Binary.lookAhead . Binary.label "length check" $ do - void . Binary.getByteString $ Saltine.secretbox_noncebytes + 4 + Saltine.secretbox_macbytes - mNonce <- Binary.label "nonce" $ Binary.getByteString Saltine.secretbox_noncebytes >>= hoistMaybe . Saltine.decode + void . Binary.getByteString $ Saltine.secretBoxNonce + 4 + Saltine.secretBoxMac + mNonce <- Binary.label "nonce" $ Binary.getByteString Saltine.secretBoxNonce >>= hoistMaybe . Saltine.decode mExpiry <- getExpiry mCiphertext <- Binary.label "ciphertext" $ toStrict <$> Binary.getRemainingLazyByteString return MemcachedValue{..} getMemcachedValueNoExpiry = do Binary.lookAhead . Binary.label "length check" $ do - void . Binary.getByteString $ Saltine.secretbox_noncebytes + 4 + Saltine.secretbox_macbytes - mNonce <- Binary.label "nonce" $ Binary.getByteString Saltine.secretbox_noncebytes >>= hoistMaybe . Saltine.decode + void . Binary.getByteString $ Saltine.secretBoxNonce + 4 + Saltine.secretBoxMac + mNonce <- Binary.label "nonce" $ Binary.getByteString Saltine.secretBoxNonce >>= hoistMaybe . Saltine.decode let mExpiry = Nothing mCiphertext <- Binary.label "ciphertext" $ toStrict <$> Binary.getRemainingLazyByteString return MemcachedValue{..} diff --git a/src/Model/Tokens/Upload.hs b/src/Model/Tokens/Upload.hs index 199a08d6f..8aa289083 100644 --- a/src/Model/Tokens/Upload.hs +++ b/src/Model/Tokens/Upload.hs @@ -1,4 +1,4 @@ --- SPDX-FileCopyrightText: 2022 Gregor Kleen +-- SPDX-FileCopyrightText: 2022-2024 Sarah Vaupel , Gregor Kleen -- -- SPDX-License-Identifier: AGPL-3.0-or-later @@ -33,10 +33,11 @@ import Utils.PathPiece import qualified Data.HashMap.Strict as HashMap +import Crypto.Saltine.Instances () import qualified Crypto.Saltine.Core.SecretBox as SecretBox import qualified Data.ByteString.Base64.URL as Base64 import qualified Crypto.Saltine.Class as Saltine -import qualified Crypto.Saltine.Internal.SecretBox as Saltine +import qualified Crypto.Saltine.Internal.ByteSizes as Saltine import qualified Data.ByteString as BS @@ -91,9 +92,9 @@ instance ToJSON UploadTokenStateHashState where instance FromJSON UploadTokenStateHashState where parseJSON = JSON.withText "UploadTokenStateHashState" $ \t -> do decoded <- either (const $ fail "Invalid base64") return . Base64.decode $ encodeUtf8 t - unless (BS.length decoded >= Saltine.secretbox_noncebytes + Saltine.secretbox_macbytes) $ + unless (BS.length decoded >= Saltine.secretBoxNonce + Saltine.secretBoxMac) $ fail "Too short" - let (nonceBS, utsHashStateState) = BS.splitAt Saltine.secretbox_noncebytes decoded + let (nonceBS, utsHashStateState) = BS.splitAt Saltine.secretBoxNonce decoded utsHashStateNonce <- maybe (fail "Invalid nonce") return $ Saltine.decode nonceBS return UploadTokenStateHashState{..} diff --git a/src/Utils.hs b/src/Utils.hs index 3039e6e52..a3b501eb4 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -1,4 +1,4 @@ --- SPDX-FileCopyrightText: 2022-24 Gregor Kleen ,Sarah Vaupel ,Sarah Vaupel ,Steffen Jost ,Winnie Ros ,Steffen Jost +-- SPDX-FileCopyrightText: 2022-2024 Sarah Vaupel , Gregor Kleen ,Sarah Vaupel ,Sarah Vaupel ,Steffen Jost ,Winnie Ros ,Steffen Jost -- -- SPDX-License-Identifier: AGPL-3.0-or-later @@ -94,11 +94,11 @@ import qualified Data.Yaml as Yaml import Data.Universe -import qualified Crypto.Saltine.Internal.SecretBox as Saltine import qualified Data.ByteString.Base64.URL as Base64 import qualified Crypto.Saltine.Core.SecretBox as SecretBox import qualified Crypto.Saltine.Core.Auth as Auth import qualified Crypto.Saltine.Class as Saltine +import qualified Crypto.Saltine.Internal.ByteSizes as Saltine import qualified Crypto.Data.PKCS7 as PKCS7 import Crypto.MAC.KMAC (KMAC, HashSHAKE) import qualified Crypto.MAC.KMAC as KMAC @@ -1740,9 +1740,9 @@ encodedSecretBoxOpen' sKey chunked = do let unchunked = stripAll chunked decoded <- either (throwError . EncodedSecretBoxInvalidBase64) return . Base64.decode $ encodeUtf8 unchunked - unless (BS.length decoded >= Saltine.secretbox_noncebytes + Saltine.secretbox_macbytes) $ + unless (BS.length decoded >= Saltine.secretBoxNonce + Saltine.secretBoxMac) $ throwError EncodedSecretBoxCiphertextTooShort - let (nonceBS, encrypted) = BS.splitAt Saltine.secretbox_noncebytes decoded + let (nonceBS, encrypted) = BS.splitAt Saltine.secretBoxNonce decoded nonce <- maybe (throwError EncodedSecretBoxCouldNotDecodeNonce) return $ Saltine.decode nonceBS padded <- maybe (throwError EncodedSecretBoxCouldNotOpenSecretBox) return $ SecretBox.secretboxOpen sKey nonce encrypted diff --git a/src/Web/ServerSession/Backend/Persistent/Memcached.hs b/src/Web/ServerSession/Backend/Persistent/Memcached.hs index 7c090772e..41d88c89b 100644 --- a/src/Web/ServerSession/Backend/Persistent/Memcached.hs +++ b/src/Web/ServerSession/Backend/Persistent/Memcached.hs @@ -25,7 +25,7 @@ import qualified Data.Binary as Binary import qualified Database.Memcached.Binary.IO as Memcached import qualified Crypto.Saltine.Class as Saltine -import qualified Crypto.Saltine.Internal.SecretBox as Saltine +import qualified Crypto.Saltine.Internal.ByteSizes as Saltine import qualified Crypto.Saltine.Core.AEAD as AEAD import qualified Data.ByteString as BS @@ -119,9 +119,9 @@ instance (IsSessionData sess, Binary (Decomposed sess)) => Storage (MemcachedSql getSession MemcachedSqlStorage{..} sessId = exceptT (maybe (return Nothing) throwM) (return . Just) $ do encSession <- catchIfExceptT (const Nothing) Memcached.isKeyNotFound . liftIO . fmap LBS.toStrict $ Memcached.getAndTouch_ expiry (memcachedSqlSessionId # sessId) mcdSqlMemcached - guardExceptT (BS.length encSession >= Saltine.secretbox_noncebytes + Saltine.secretbox_macbytes) $ + guardExceptT (BS.length encSession >= Saltine.secretBoxNonce + Saltine.secretBoxMac) $ Just MemcachedSqlStorageAEADCiphertextTooShort - let (nonceBS, encrypted) = BS.splitAt Saltine.secretbox_noncebytes encSession + let (nonceBS, encrypted) = BS.splitAt Saltine.secretBoxNonce encSession encSessId = LBS.toStrict $ Binary.encode sessId nonce <- maybeTExceptT (Just MemcachedSqlStorageAEADCouldNotDecodeNonce) . hoistMaybe $ Saltine.decode nonceBS decrypted <- maybeTExceptT (Just MemcachedSqlStorageAEADCouldNotOpenAEAD) . hoistMaybe $ AEAD.aeadOpen mcdSqlMemcachedKey nonce encrypted encSessId diff --git a/stack.yaml b/stack.yaml index c881ba7b1..aaba0bfd0 100644 --- a/stack.yaml +++ b/stack.yaml @@ -119,7 +119,7 @@ extra-deps: # - process-extras-0.7.4@sha256:4e79289131415796c181889c4a226ebab7fc3b0d27b164f65e1aad123ae9b9e3,1759 # - ListLike-4.7.4@sha256:613b2967df738010e8f6f6b7c47d615f6fe42081f68eba7f946d5de7552aa8a4,3778 - - saltine-0.2.0.0@sha256:2232a285ef326b0942bbcbfa6f465933a020f27e19552213e688fe371d66dddd,5198 + - saltine-0.1.1.1@sha256:6f30609a5d4d7e406d5f6fc8f3eb28efcc226d25bee8cea2b248f2b525aba71b,3221 - persistent-postgresql-2.13.0.3@sha256:43384bf8ed9c931c673e6abb763c8811113d1b7004095faaae1eb42e2cd52d8f,3601 resolver: lts-18.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index e7f29eab1..d6dd90433 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -5,539 +5,539 @@ packages: - completed: - commit: 22fc3bb14841d8d50997aa47f1be3852e666f787 - git: https://gitea.uniworx.systems/haskell/encoding.git name: encoding - pantry-tree: - sha256: fec12328951021bb4d9326ae0b35f0c459e65f28442366efd4366cd1e18abe19 - size: 5723 version: 0.8.2 - original: - commit: 22fc3bb14841d8d50997aa47f1be3852e666f787 git: https://gitea.uniworx.systems/haskell/encoding.git + pantry-tree: + size: 5723 + sha256: fec12328951021bb4d9326ae0b35f0c459e65f28442366efd4366cd1e18abe19 + commit: 22fc3bb14841d8d50997aa47f1be3852e666f787 + original: + git: https://gitea.uniworx.systems/haskell/encoding.git + commit: 22fc3bb14841d8d50997aa47f1be3852e666f787 - completed: - commit: b7071df50bad3a251a544b984e4bf98fa09b8fae - git: https://gitea.uniworx.systems/haskell/memcached-binary.git name: memcached-binary - pantry-tree: - sha256: 0da0539b7b9a56d03a116dcd666bc1bbbef085659910420849484d1418aa0857 - size: 1277 version: 0.2.0 - original: - commit: b7071df50bad3a251a544b984e4bf98fa09b8fae git: https://gitea.uniworx.systems/haskell/memcached-binary.git + pantry-tree: + size: 1277 + sha256: 0da0539b7b9a56d03a116dcd666bc1bbbef085659910420849484d1418aa0857 + commit: b7071df50bad3a251a544b984e4bf98fa09b8fae + original: + git: https://gitea.uniworx.systems/haskell/memcached-binary.git + commit: b7071df50bad3a251a544b984e4bf98fa09b8fae - completed: - commit: cbea6159c2975d42f948525e03e12fc390da53c5 - git: https://gitea.uniworx.systems/haskell/conduit-resumablesink.git name: conduit-resumablesink - pantry-tree: - sha256: 0cccf4684bbd84f81d2d3d53dd81c46cb103b5322f1d8e89e9b222211281e1b7 - size: 394 version: '0.3' - original: - commit: cbea6159c2975d42f948525e03e12fc390da53c5 git: https://gitea.uniworx.systems/haskell/conduit-resumablesink.git + pantry-tree: + size: 394 + sha256: 0cccf4684bbd84f81d2d3d53dd81c46cb103b5322f1d8e89e9b222211281e1b7 + commit: cbea6159c2975d42f948525e03e12fc390da53c5 + original: + git: https://gitea.uniworx.systems/haskell/conduit-resumablesink.git + commit: cbea6159c2975d42f948525e03e12fc390da53c5 - completed: - commit: 5aa1f3b009253b02c4822005ac59ee208a10a347 - git: https://github.com/jtdaugherty/HaskellNet.git name: HaskellNet - pantry-tree: - sha256: 921b437ef18ccb04f889301c407263d6b5b72c5864803a000b1e61328988ce70 - size: 4011 version: 0.5.1 - original: - commit: 5aa1f3b009253b02c4822005ac59ee208a10a347 git: https://github.com/jtdaugherty/HaskellNet.git + pantry-tree: + size: 4011 + sha256: 921b437ef18ccb04f889301c407263d6b5b72c5864803a000b1e61328988ce70 + commit: 5aa1f3b009253b02c4822005ac59ee208a10a347 + original: + git: https://github.com/jtdaugherty/HaskellNet.git + commit: 5aa1f3b009253b02c4822005ac59ee208a10a347 - completed: - commit: 40393c938111ac78232dc2c7eec5edb4a22d03e8 - git: https://gitea.uniworx.systems/haskell/HaskellNet-SSL.git name: HaskellNet-SSL - pantry-tree: - sha256: 95dcec22fdb8af986e59f0f60aa76d4a48f34a546dca799bd571e1d183f773e0 - size: 841 version: 0.3.4.1 - original: - commit: 40393c938111ac78232dc2c7eec5edb4a22d03e8 git: https://gitea.uniworx.systems/haskell/HaskellNet-SSL.git + pantry-tree: + size: 841 + sha256: 95dcec22fdb8af986e59f0f60aa76d4a48f34a546dca799bd571e1d183f773e0 + commit: 40393c938111ac78232dc2c7eec5edb4a22d03e8 + original: + git: https://gitea.uniworx.systems/haskell/HaskellNet-SSL.git + commit: 40393c938111ac78232dc2c7eec5edb4a22d03e8 - completed: - commit: 01afaf599ba6f8a9d804c269e91d3190b249d3f0 - git: https://gitea.uniworx.systems/haskell/ldap-client.git name: ldap-client - pantry-tree: - sha256: 3fa8f102427b437b2baaec15cf884e88b47a1621b1c3fd4d8919f0263fde8656 - size: 6176 version: 0.4.0 - original: - commit: 01afaf599ba6f8a9d804c269e91d3190b249d3f0 git: https://gitea.uniworx.systems/haskell/ldap-client.git + pantry-tree: + size: 6176 + sha256: 3fa8f102427b437b2baaec15cf884e88b47a1621b1c3fd4d8919f0263fde8656 + commit: 01afaf599ba6f8a9d804c269e91d3190b249d3f0 + original: + git: https://gitea.uniworx.systems/haskell/ldap-client.git + commit: 01afaf599ba6f8a9d804c269e91d3190b249d3f0 - completed: - commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 - git: https://gitea.uniworx.systems/haskell/serversession.git + subdir: serversession name: serversession - pantry-tree: - sha256: 83ac78a987399db3da62f84bbd335fead11aadebd57251d0688127fca984db23 - size: 545 - subdir: serversession version: 1.0.2 - original: - commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 git: https://gitea.uniworx.systems/haskell/serversession.git + pantry-tree: + size: 545 + sha256: 83ac78a987399db3da62f84bbd335fead11aadebd57251d0688127fca984db23 + commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 + original: subdir: serversession -- completed: - commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 git: https://gitea.uniworx.systems/haskell/serversession.git + commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 +- completed: + subdir: serversession-backend-acid-state name: serversession-backend-acid-state - pantry-tree: - sha256: 4804260c6245c12e1728c78dd33bf16e95b7f2b69b38b6900a4e65b1ef3e04b7 - size: 544 - subdir: serversession-backend-acid-state version: 1.0.4 - original: - commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 git: https://gitea.uniworx.systems/haskell/serversession.git + pantry-tree: + size: 544 + sha256: 4804260c6245c12e1728c78dd33bf16e95b7f2b69b38b6900a4e65b1ef3e04b7 + commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 + original: subdir: serversession-backend-acid-state + git: https://gitea.uniworx.systems/haskell/serversession.git + commit: fda3a000f9039e35e76e28f8e88c4942fac9fd69 - completed: - commit: dc928c3a456074b8777603bea20e81937321777f - git: https://gitea.uniworx.systems/haskell/xss-sanitize.git name: xss-sanitize - pantry-tree: - sha256: f567a1c834448daaa164f2029fad164e6c8df2d4c92b51f811bae19cc0c95975 - size: 750 version: 0.3.6 - original: - commit: dc928c3a456074b8777603bea20e81937321777f git: https://gitea.uniworx.systems/haskell/xss-sanitize.git + pantry-tree: + size: 750 + sha256: f567a1c834448daaa164f2029fad164e6c8df2d4c92b51f811bae19cc0c95975 + commit: dc928c3a456074b8777603bea20e81937321777f + original: + git: https://gitea.uniworx.systems/haskell/xss-sanitize.git + commit: dc928c3a456074b8777603bea20e81937321777f - completed: - commit: f8170266ab25b533576e96715bedffc5aa4f19fa - git: https://gitea.uniworx.systems/haskell/colonnade.git + subdir: colonnade name: colonnade - pantry-tree: - sha256: 392393652cc0f354d351482557b9385c8e6122e706359b030373656565f2e045 - size: 481 - subdir: colonnade version: 1.2.0.2 - original: - commit: f8170266ab25b533576e96715bedffc5aa4f19fa git: https://gitea.uniworx.systems/haskell/colonnade.git + pantry-tree: + size: 481 + sha256: 392393652cc0f354d351482557b9385c8e6122e706359b030373656565f2e045 + commit: f8170266ab25b533576e96715bedffc5aa4f19fa + original: subdir: colonnade + git: https://gitea.uniworx.systems/haskell/colonnade.git + commit: f8170266ab25b533576e96715bedffc5aa4f19fa - completed: - commit: 42103ab247057c04c8ce7a83d9d4c160713a3df1 - git: https://gitea.uniworx.systems/haskell/minio-hs.git name: minio-hs - pantry-tree: - sha256: c5faff15fa22a7a63f45cd903c9bd11ae03f422c26f24750f5c44cb4d0db70fc - size: 4560 version: 1.5.2 - original: - commit: 42103ab247057c04c8ce7a83d9d4c160713a3df1 git: https://gitea.uniworx.systems/haskell/minio-hs.git + pantry-tree: + size: 4560 + sha256: c5faff15fa22a7a63f45cd903c9bd11ae03f422c26f24750f5c44cb4d0db70fc + commit: 42103ab247057c04c8ce7a83d9d4c160713a3df1 + original: + git: https://gitea.uniworx.systems/haskell/minio-hs.git + commit: 42103ab247057c04c8ce7a83d9d4c160713a3df1 - completed: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 - git: https://gitea.uniworx.systems/haskell/cryptoids.git + subdir: cryptoids-class name: cryptoids-class + version: 0.0.0 + git: https://gitea.uniworx.systems/haskell/cryptoids.git pantry-tree: - sha256: 30466648d273ffb1d580b7961188d67a0bedb3703d6d5f8cca3c15a45295f203 size: 412 - subdir: cryptoids-class - version: 0.0.0 + sha256: 30466648d273ffb1d580b7961188d67a0bedb3703d6d5f8cca3c15a45295f203 + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 original: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 - git: https://gitea.uniworx.systems/haskell/cryptoids.git subdir: cryptoids-class -- completed: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 +- completed: + subdir: cryptoids-types name: cryptoids-types + version: 1.0.0 + git: https://gitea.uniworx.systems/haskell/cryptoids.git pantry-tree: - sha256: 824ac5c55c2ad553bd401bb5a99731bbdccc828ecc5d71f174e9375c4e03c46e size: 320 - subdir: cryptoids-types - version: 1.0.0 + sha256: 824ac5c55c2ad553bd401bb5a99731bbdccc828ecc5d71f174e9375c4e03c46e + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 original: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 - git: https://gitea.uniworx.systems/haskell/cryptoids.git subdir: cryptoids-types -- completed: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 +- completed: + subdir: cryptoids name: cryptoids - pantry-tree: - sha256: b1f49dde76ff7e78b76e7f2f3b3f76c55e5e61555d1df5415ad3b6eb80dda2cb - size: 566 - subdir: cryptoids version: 0.5.1.0 - original: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + pantry-tree: + size: 566 + sha256: b1f49dde76ff7e78b76e7f2f3b3f76c55e5e61555d1df5415ad3b6eb80dda2cb + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 + original: subdir: cryptoids -- completed: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 +- completed: + subdir: filepath-crypto name: filepath-crypto - pantry-tree: - sha256: 9c31a2ffb2b1c86f9ba34eb83529c7a5a7dc68a49f89813c9b553427474654d9 - size: 676 - subdir: filepath-crypto version: 0.1.0.0 - original: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + pantry-tree: + size: 676 + sha256: 9c31a2ffb2b1c86f9ba34eb83529c7a5a7dc68a49f89813c9b553427474654d9 + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 + original: subdir: filepath-crypto -- completed: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 +- completed: + subdir: uuid-crypto name: uuid-crypto - pantry-tree: - sha256: 852e59807df1f2cf4b5a3748c46fa149d15a78651c93addfe5fc31d2d94c47f4 - size: 417 - subdir: uuid-crypto version: 1.4.0.0 - original: - commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 git: https://gitea.uniworx.systems/haskell/cryptoids.git + pantry-tree: + size: 417 + sha256: 852e59807df1f2cf4b5a3748c46fa149d15a78651c93addfe5fc31d2d94c47f4 + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 + original: subdir: uuid-crypto + git: https://gitea.uniworx.systems/haskell/cryptoids.git + commit: 130b0dcbf2b09ccdf387b50262f1efbbbf1819e3 - completed: - commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d - git: https://github.com/gkleen/FastCDC.git + subdir: gearhash name: gearhash - pantry-tree: - sha256: 89c58554f6780bff2a2cab86e94d2f562eea34e8025a9925bfdc25b56c925d3e - size: 551 - subdir: gearhash version: 1.0.0 - original: - commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d git: https://github.com/gkleen/FastCDC.git + pantry-tree: + size: 551 + sha256: 89c58554f6780bff2a2cab86e94d2f562eea34e8025a9925bfdc25b56c925d3e + commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d + original: subdir: gearhash -- completed: - commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d git: https://github.com/gkleen/FastCDC.git + commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d +- completed: + subdir: fastcdc name: fastcdc - pantry-tree: - sha256: aa588b55c7c9c079e39569489a8089ec312f0538d02cf0e1fffe2f0e058566b8 - size: 292 - subdir: fastcdc version: 0.0.0 - original: - commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d git: https://github.com/gkleen/FastCDC.git + pantry-tree: + size: 292 + sha256: aa588b55c7c9c079e39569489a8089ec312f0538d02cf0e1fffe2f0e058566b8 + commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d + original: subdir: fastcdc + git: https://github.com/gkleen/FastCDC.git + commit: f216e3c0a1efa11a62fd4c9c2db38f7e2b7ac72d - completed: - commit: 843683d024f767de236f74d24a3348f69181a720 - git: https://gitea.uniworx.systems/haskell/zip-stream.git name: zip-stream - pantry-tree: - sha256: 0da8bc38d73034962d2e2d1a7586b6dee848a629319fce9cbbf578348c61118c - size: 812 version: 0.2.0.1 - original: - commit: 843683d024f767de236f74d24a3348f69181a720 git: https://gitea.uniworx.systems/haskell/zip-stream.git + pantry-tree: + size: 812 + sha256: 0da8bc38d73034962d2e2d1a7586b6dee848a629319fce9cbbf578348c61118c + commit: 843683d024f767de236f74d24a3348f69181a720 + original: + git: https://gitea.uniworx.systems/haskell/zip-stream.git + commit: 843683d024f767de236f74d24a3348f69181a720 - completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 - git: https://gitea.uniworx.systems/haskell/yesod.git + subdir: yesod-core name: yesod-core - pantry-tree: - sha256: 08c8da10b32c8d9f784238fd87232bf90b752e82f81ef2c52c62210f9aadda9a - size: 5954 - subdir: yesod-core version: 1.6.20.2 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 5954 + sha256: 08c8da10b32c8d9f784238fd87232bf90b752e82f81ef2c52c62210f9aadda9a + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-core -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-static name: yesod-static - pantry-tree: - sha256: 32c1608243a5309005ce11e2aa379ac1d6f8c380c529785eb510770118f3da06 - size: 2949 - subdir: yesod-static version: 1.6.1.0 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 2949 + sha256: 32c1608243a5309005ce11e2aa379ac1d6f8c380c529785eb510770118f3da06 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-static -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-persistent name: yesod-persistent - pantry-tree: - sha256: 3778ef2964e1a3890afc22cc9124eacb40e64b62bed4983a85d3b99897f54c5c - size: 497 - subdir: yesod-persistent version: 1.6.0.7 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 497 + sha256: 3778ef2964e1a3890afc22cc9124eacb40e64b62bed4983a85d3b99897f54c5c + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-persistent -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-newsfeed name: yesod-newsfeed - pantry-tree: - sha256: 53ebad62655863a657dcf749ffd3de46f6af90dd71f55bc4d50805ac48ddb099 - size: 488 - subdir: yesod-newsfeed version: 1.7.0.0 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 488 + sha256: 53ebad62655863a657dcf749ffd3de46f6af90dd71f55bc4d50805ac48ddb099 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-newsfeed -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-form name: yesod-form - pantry-tree: - sha256: 260b7f16a8e1d58da137eb91aeed3a11ccbe59ba3e614457a635b9dc3e71426f - size: 1914 - subdir: yesod-form version: 1.7.0 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 1914 + sha256: 260b7f16a8e1d58da137eb91aeed3a11ccbe59ba3e614457a635b9dc3e71426f + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-form -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-form-multi name: yesod-form-multi - pantry-tree: - sha256: b21fc50db43733dfe6e285345856610ba4feb83329e9cf953bf8047ba18ecbd6 - size: 328 - subdir: yesod-form-multi version: 1.7.0.2 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 328 + sha256: b21fc50db43733dfe6e285345856610ba4feb83329e9cf953bf8047ba18ecbd6 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-form-multi -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-auth name: yesod-auth - pantry-tree: - sha256: d335b940a207f8155f421b7146746a72d20db6ad54412154f2c829a59bf21e08 - size: 1212 - subdir: yesod-auth version: 1.6.10.3 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 1212 + sha256: d335b940a207f8155f421b7146746a72d20db6ad54412154f2c829a59bf21e08 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-auth -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-auth-oauth name: yesod-auth-oauth - pantry-tree: - sha256: 39d2f7d5d1abb3a2953858c5f23880e60ecfcdad0549ddc2570204f9c47649f4 - size: 321 - subdir: yesod-auth-oauth version: 1.6.0.3 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 321 + sha256: 39d2f7d5d1abb3a2953858c5f23880e60ecfcdad0549ddc2570204f9c47649f4 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-auth-oauth -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-sitemap name: yesod-sitemap - pantry-tree: - sha256: 971f48af7011ff7816872d067e5de9cadafdd371bdf209170b77df36001abd27 - size: 314 - subdir: yesod-sitemap version: 1.6.0 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 314 + sha256: 971f48af7011ff7816872d067e5de9cadafdd371bdf209170b77df36001abd27 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-sitemap -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-test name: yesod-test - pantry-tree: - sha256: 3d5022e8e3f8e77abcf075c42cf49efaa26f4951159bbb5ab50b69fdfeacb7c1 - size: 563 - subdir: yesod-test version: 1.6.12 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 563 + sha256: 3d5022e8e3f8e77abcf075c42cf49efaa26f4951159bbb5ab50b69fdfeacb7c1 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-test -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-bin name: yesod-bin - pantry-tree: - sha256: 422d7816965b79826c6c24582d76dadbacd1bfb3e9a8f31208867cd788f2a5b8 - size: 1295 - subdir: yesod-bin version: 1.6.1 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 1295 + sha256: 422d7816965b79826c6c24582d76dadbacd1bfb3e9a8f31208867cd788f2a5b8 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-bin -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod name: yesod - pantry-tree: - sha256: cb53ef3f2036185d2b4752d6fbc5d78470b4504e646e7eb4dd2397f2599daf42 - size: 666 - subdir: yesod version: 1.6.1.1 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 666 + sha256: cb53ef3f2036185d2b4752d6fbc5d78470b4504e646e7eb4dd2397f2599daf42 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-eventsource name: yesod-eventsource - pantry-tree: - sha256: 6d393201852cd024e377159ba836398e24d191563e08165430113d3c1384aff2 - size: 324 - subdir: yesod-eventsource version: 1.6.0.1 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 324 + sha256: 6d393201852cd024e377159ba836398e24d191563e08165430113d3c1384aff2 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-eventsource -- completed: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 +- completed: + subdir: yesod-websockets name: yesod-websockets - pantry-tree: - sha256: 02df6117e9b74a77879ea750130ba2d8ad8d3c99e14ca678320cb578984301e5 - size: 485 - subdir: yesod-websockets version: 0.3.0.3 - original: - commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 git: https://gitea.uniworx.systems/haskell/yesod.git + pantry-tree: + size: 485 + sha256: 02df6117e9b74a77879ea750130ba2d8ad8d3c99e14ca678320cb578984301e5 + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 + original: subdir: yesod-websockets + git: https://gitea.uniworx.systems/haskell/yesod.git + commit: aa671eb41fdad360f2f7cb844f8de03479efe3f7 - completed: - commit: 71a630edaf5f22c464e24fac8d9d310f4055ea1f - git: https://gitea.uniworx.systems/haskell/cryptonite.git name: cryptonite - pantry-tree: - sha256: 19e49259fa5e3c257495d72b3c7c3c49537aeafd508c780c2430ddca2ef71a91 - size: 25056 version: '0.29' - original: - commit: 71a630edaf5f22c464e24fac8d9d310f4055ea1f git: https://gitea.uniworx.systems/haskell/cryptonite.git + pantry-tree: + size: 25056 + sha256: 19e49259fa5e3c257495d72b3c7c3c49537aeafd508c780c2430ddca2ef71a91 + commit: 71a630edaf5f22c464e24fac8d9d310f4055ea1f + original: + git: https://gitea.uniworx.systems/haskell/cryptonite.git + commit: 71a630edaf5f22c464e24fac8d9d310f4055ea1f - completed: - commit: e18dd125c5ea26fa4e88bed079b61d8c1365ee37 - git: https://gitea.uniworx.systems/haskell/esqueleto.git name: esqueleto - pantry-tree: - sha256: 8a93dc98eb4529ff64aa5bcdaa3c00dcdf0378033ad675864e2b0fc3d869d947 - size: 5633 version: 3.5.4.0 - original: - commit: e18dd125c5ea26fa4e88bed079b61d8c1365ee37 git: https://gitea.uniworx.systems/haskell/esqueleto.git + pantry-tree: + size: 5633 + sha256: 8a93dc98eb4529ff64aa5bcdaa3c00dcdf0378033ad675864e2b0fc3d869d947 + commit: e18dd125c5ea26fa4e88bed079b61d8c1365ee37 + original: + git: https://gitea.uniworx.systems/haskell/esqueleto.git + commit: e18dd125c5ea26fa4e88bed079b61d8c1365ee37 - completed: hackage: classy-prelude-yesod-1.5.0@sha256:8f7e183bdfd6d2ea9674284c4f285294ab086aff60d9be4e5d7d2f3c1a2b05b7,1330 pantry-tree: - sha256: ae84d4cc0e1daf985db6cdcf2ac92319531b8e60f547183cc46480d00aafbe20 size: 330 + sha256: ae84d4cc0e1daf985db6cdcf2ac92319531b8e60f547183cc46480d00aafbe20 original: hackage: classy-prelude-yesod-1.5.0@sha256:8f7e183bdfd6d2ea9674284c4f285294ab086aff60d9be4e5d7d2f3c1a2b05b7,1330 - completed: hackage: acid-state-0.16.0.1@sha256:d43f6ee0b23338758156c500290c4405d769abefeb98e9bc112780dae09ece6f,6207 pantry-tree: - sha256: d57bcb2ad5e01fe7424abbcf9e58cf943027b5c4a8496d93625c57b6e1272274 size: 13678 + sha256: d57bcb2ad5e01fe7424abbcf9e58cf943027b5c4a8496d93625c57b6e1272274 original: hackage: acid-state-0.16.0.1@sha256:d43f6ee0b23338758156c500290c4405d769abefeb98e9bc112780dae09ece6f,6207 - completed: hackage: normaldistribution-1.1.0.3@sha256:2615b784c4112cbf6ffa0e2b55b76790290a9b9dff18a05d8c89aa374b213477,2160 pantry-tree: - sha256: 856818862d12df8b030fa9cfef2c4ffa604d06f0eb057498db245dfffcd60e3c size: 269 + sha256: 856818862d12df8b030fa9cfef2c4ffa604d06f0eb057498db245dfffcd60e3c original: hackage: normaldistribution-1.1.0.3@sha256:2615b784c4112cbf6ffa0e2b55b76790290a9b9dff18a05d8c89aa374b213477,2160 - completed: hackage: pkcs7-1.0.0.1@sha256:b26e5181868667abbde3ce17f9a61cf705eb695da073cdf82e1f9dfd6cc11176,3594 pantry-tree: - sha256: ab3c2d2880179a945ab3122c51d1657ab4a7a628292b646e047cd32b0751a80c size: 316 + sha256: ab3c2d2880179a945ab3122c51d1657ab4a7a628292b646e047cd32b0751a80c original: hackage: pkcs7-1.0.0.1@sha256:b26e5181868667abbde3ce17f9a61cf705eb695da073cdf82e1f9dfd6cc11176,3594 - completed: hackage: system-locale-0.3.0.0@sha256:13b3982403d8ac8cc6138e68802be8d8e7cf7ebc4cbc7e47e99e3c0dd1be066a,1529 pantry-tree: - sha256: 3b22af3e6315835bf614a0d30381ec7e47aca147b59ba601aeaa26f1fdc19373 size: 446 + sha256: 3b22af3e6315835bf614a0d30381ec7e47aca147b59ba601aeaa26f1fdc19373 original: hackage: system-locale-0.3.0.0@sha256:13b3982403d8ac8cc6138e68802be8d8e7cf7ebc4cbc7e47e99e3c0dd1be066a,1529 - completed: hackage: token-bucket-0.1.0.1@sha256:d8e85f2fc373939975e7ace7907baee177531ab6e43df94e330a2357e64a2d11,1899 pantry-tree: - sha256: b0b4a08ea1bf76bd108310f64d7f80e0f30b61ddc3d71f6cab7bdce329d2c1fa size: 399 + sha256: b0b4a08ea1bf76bd108310f64d7f80e0f30b61ddc3d71f6cab7bdce329d2c1fa original: hackage: token-bucket-0.1.0.1@sha256:d8e85f2fc373939975e7ace7907baee177531ab6e43df94e330a2357e64a2d11,1899 - completed: hackage: tz-0.1.3.5@sha256:fb17ca50a7d943e511c0ca70342dc83f66aa2532de2745632f1f5f9b1ad783c4,5086 pantry-tree: - sha256: 6482698ea1b1a93bd684fca35836b35e8cdf53fe51b0fa6b215afa7da1f983a6 size: 1179 + sha256: 6482698ea1b1a93bd684fca35836b35e8cdf53fe51b0fa6b215afa7da1f983a6 original: hackage: tz-0.1.3.5@sha256:fb17ca50a7d943e511c0ca70342dc83f66aa2532de2745632f1f5f9b1ad783c4,5086 - completed: hackage: unidecode-0.1.0.4@sha256:99581ee1ea334a4596a09ae3642e007808457c66893b587e965b31f15cbf8c4d,1144 pantry-tree: - sha256: 4959068a0caf410dd4b8046f0b0138e3cf6471abb0cc865c9993db3b2930d283 size: 492 + sha256: 4959068a0caf410dd4b8046f0b0138e3cf6471abb0cc865c9993db3b2930d283 original: hackage: unidecode-0.1.0.4@sha256:99581ee1ea334a4596a09ae3642e007808457c66893b587e965b31f15cbf8c4d,1144 - completed: hackage: hlint-test-0.1.0.0@sha256:e427c0593433205fc629fb05b74c6b1deb1de72d1571f26142de008f0d5ee7a9,1814 pantry-tree: - sha256: 347eac6c8a3c02fc0101444d6526b57b3c27785809149b12f90d8db57c721fea size: 442 + sha256: 347eac6c8a3c02fc0101444d6526b57b3c27785809149b12f90d8db57c721fea original: hackage: hlint-test-0.1.0.0@sha256:e427c0593433205fc629fb05b74c6b1deb1de72d1571f26142de008f0d5ee7a9,1814 - completed: hackage: servant-quickcheck-0.0.10.0@sha256:1d5849d703c2487752f8fc7391cca7c998ee24f54ca0bb72d238bf99b64ac667,3755 pantry-tree: - sha256: 37dab60111c71d011fc4964e9a8b4b05ac544bc0ba8155e895518680066c2adb size: 976 + sha256: 37dab60111c71d011fc4964e9a8b4b05ac544bc0ba8155e895518680066c2adb original: hackage: servant-quickcheck-0.0.10.0@sha256:1d5849d703c2487752f8fc7391cca7c998ee24f54ca0bb72d238bf99b64ac667,3755 - completed: hackage: servant-flatten-0.2@sha256:276896f7c5cdec5b8f8493f6205fded0cc602d050b58fdb09a6d7c85c3bb0837,1234 pantry-tree: - sha256: 04f12c7bef2c3f9a25d94eb9489752ed498db8e243069fe95838dbb51df1dcb3 size: 325 + sha256: 04f12c7bef2c3f9a25d94eb9489752ed498db8e243069fe95838dbb51df1dcb3 original: hackage: servant-flatten-0.2@sha256:276896f7c5cdec5b8f8493f6205fded0cc602d050b58fdb09a6d7c85c3bb0837,1234 - completed: hackage: network-arbitrary-0.7.0.0@sha256:0cd381c80ae20c16048936edcdb018b1d9fbe2b6ac8c44e908df403a5c6d7cd5,2520 pantry-tree: - sha256: a40b62eddfb12cfec753a10836a4ef5fe8ec94d7478e6957e1fe5729017928fb size: 912 + sha256: a40b62eddfb12cfec753a10836a4ef5fe8ec94d7478e6957e1fe5729017928fb original: hackage: network-arbitrary-0.7.0.0@sha256:0cd381c80ae20c16048936edcdb018b1d9fbe2b6ac8c44e908df403a5c6d7cd5,2520 - completed: - hackage: saltine-0.2.0.0@sha256:2232a285ef326b0942bbcbfa6f465933a020f27e19552213e688fe371d66dddd,5198 + hackage: saltine-0.1.1.1@sha256:6f30609a5d4d7e406d5f6fc8f3eb28efcc226d25bee8cea2b248f2b525aba71b,3221 pantry-tree: - sha256: fdf4397f4b1ed7975f38d0b463eb6c9d206d0c85d157c41c19983e80b2005763 - size: 5016 + size: 2048 + sha256: ca0ee9387a95500a6417598650f4361f6b4077fd18c8c6414e271c7b32850d03 original: - hackage: saltine-0.2.0.0@sha256:2232a285ef326b0942bbcbfa6f465933a020f27e19552213e688fe371d66dddd,5198 + hackage: saltine-0.1.1.1@sha256:6f30609a5d4d7e406d5f6fc8f3eb28efcc226d25bee8cea2b248f2b525aba71b,3221 - completed: hackage: persistent-postgresql-2.13.0.3@sha256:43384bf8ed9c931c673e6abb763c8811113d1b7004095faaae1eb42e2cd52d8f,3601 pantry-tree: - sha256: 2d647a17372e42bc54331cfb35f5a55a71e6854dac8299b7ed6a1c69ae12734d size: 1059 + sha256: 2d647a17372e42bc54331cfb35f5a55a71e6854dac8299b7ed6a1c69ae12734d original: hackage: persistent-postgresql-2.13.0.3@sha256:43384bf8ed9c931c673e6abb763c8811113d1b7004095faaae1eb42e2cd52d8f,3601 snapshots: - completed: - sha256: c632012da648385b9fa3c29f4e0afd56ead299f1c5528ee789058be410e883c0 size: 585393 url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/0.yaml + sha256: c632012da648385b9fa3c29f4e0afd56ead299f1c5528ee789058be410e883c0 original: lts-18.0