[Q@      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe05 Converts a  ByteString into a G. Only the first 32 bytes are taken into account, the rest is ignored.  Converts a  ByteString into a G. Only the first 16 bytes are taken into account, the rest is ignored.     None5IThe  monad (c stands for "large hash") is used in the definition of hashing functions for arbitrary data types.The interface for a hashing algorithm. The interface contains a simple run function, which is used to update the hash with all values needed, and the outputs the resulting hash. NFunctions for updating an intermediate hash value. The functions live in the 6 monad because they are typically implemented via FFI."adds a byte array to the hash, Perform an  action in the 1 monad. Use with care, do not perform arbitrary I operation with this function! Only use it for calling functions of the   datatype.-Runs a , computation and returns the resulting hash.$ !"#$%&'()*+,-./01 !"#$%&'()*+,-. !"#$%&'()*+,-. !"#$%&'()*+,-./01NoneT2345672345623456234567None6:QR!Support for generically deriving <, instances. Any instance of the type class  can be made an instance of <" by an empty instance declaration.<OA type class for computing hashes (i.e. MD5, SHA256, ...) from haskell values.-The laws of this typeclass are the following: &If two values are equal according to D, then the finally computed hashes must also be equal according to r. However it is not required that the hashes of inequal values have to be inequal. Also note that an instance of <! does not require a instance of z. Using any sane algorithm the chance of a collision should be 1 / n where n is the number of different hashes possible.(If two values are inequal according to , then the probability of a hash collision is 1/n, where n is the number of possible hashes produced by the underlying hash algorithm.A rule of thumb: hash all information that you would also need for serializing/deserializing values of your datatype. For instance, when hashing lists, you would not only hash the list elements but also the length of the list. Consider the following datatype data Foo = Foo [Int] [Int]4We now write an instance for LargeHashable like this \instance LargeHashable Foo where updateHash (Foo l1 l2) = updateHash l1 >> updateHash l2KIf we did not hash the length of a list, then the following two values of Foo would produce identical hashes: Foo [1,2,3] [] Foo [1] [2,3]>>M is the central function of this package. For a given value it computes a Hash using the given .YHashes a list of values such the two permutations of the same list yields the same hash.e:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:;<=><==>:;b:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None  Derive a <A instance with extra constraints in the context of the instance. Derive a <= instance with no constraints in the context of the instance. Derive a <4 instance with a completely custom instance context.cGenerates the error message displayed when somebody tries to let us derive impossible instances!After j has matched all the important information this function gets called to build the instance declaration.0This function generates the declaration for the = function of the <N typeclass. By taking the constructors with there selected IDs and calling > for everyone of them to generate the corresponding clause. generates a clause of the = function. It makes sure all the fields are matched correctly and updates the hash with the neccessary information about the constructor (its ID) and all of its fields.RGenerate a Pattern that matches the supplied constructor and all of its fields.4Sequences two Expressions using the '(>>)' operator.?Generates the constraints needed for the declaration of the <* class. This means that the constraint LargeHashable $TypeVar$2 is added for every type variable the type has. Returns the  for a type variable.QAn infinite list of unique names that are used in the generations of patterns. VFunction mapping the type variables in the instance head to the additional constraintsFunction mapping the type variables in the instance head and the constraints that would normally be generated to the constraints that should be generated. None 23456:;<=><==:;>23456        !"#$$%&'()*+,-./01234556789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-large-hashable-0.1.0.4-9ur886f1XKx6oAlwdVN0TKData.LargeHashable.LargeWordData.LargeHashable.InternData.LargeHashable.MD5Data.LargeHashable.ClassData.LargeHashable.THData.LargeHashableWord256 w256_first w256_secondWord128 w128_first w128_secondbsToW256w256ToBsbsToW128w128ToBsxorW128xorW256 $fShowWord128 $fReadWord128 $fEqWord128 $fOrdWord128$fGenericWord128 $fDataWord128 $fShowWord256 $fReadWord256 $fEqWord256 $fOrdWord256$fGenericWord256 $fDataWord256LH HashAlgorithmha_runha_xor ha_updateHash HashUpdates hu_updatePtr hu_updateCharhu_updateUCharhu_updateShorthu_updateUShort hu_updateInt hu_updateUInt hu_updateLonghu_updateULong hashUpdatesioInLHrunLH updateXorHash $fMonadLH$fApplicativeLH $fFunctorLHMD5Hash unMD5Hashmd5HashAlgorithmrunMD5 $fShowMD5Hash $fEqMD5Hash $fOrdMD5HashLargeHashable' updateHash' LargeHashable updateHash largeHash$fGenericLargeHashableM1$fGenericLargeHashableK1$fGenericLargeHashable:*:$fGenericLargeHashable:+:$fGenericLargeHashableU1$fGenericLargeHashableV1$fLargeHashableSeq$fLargeHashableVoid$fLargeHashableValue$fLargeHashableScientific$fLargeHashablePair$fLargeHashableVector$fLargeHashableUniversalTime$fLargeHashableDay$fLargeHashableUTCTime$fLargeHashableTimeZone$fLargeHashableTimeOfDay$fLargeHashableZonedTime$fLargeHashableLocalTime$fLargeHashableNominalDiffTime$fLargeHashableDiffTime$fLargeHashableAbsoluteTime$fLargeHashableRatio$fLargeHashableOrdering$fLargeHashable()$fLargeHashableEither$fLargeHashableMaybe$fLargeHashable(,,,,)$fLargeHashable(,,,)$fLargeHashable(,,)$fLargeHashable(,)$fLargeHashableHashMap$fLargeHashableIntMap$fLargeHashableMap$fLargeHashableHashSet$fLargeHashableIntSet$fLargeHashableSet$fLargeHashable[]$fLargeHashableBool$fLargeHashableFixed$fLargeHashableFloat$fLargeHashableDouble$fLargeHashableInteger$fLargeHashableChar$fLargeHashableCULong$fLargeHashableCUInt$fLargeHashableCUShort$fLargeHashableCUChar$fLargeHashableCLong$fLargeHashableCInt$fLargeHashableCShort$fLargeHashableCChar$fLargeHashableWord64$fLargeHashableWord32$fLargeHashableWord16$fLargeHashableWord8$fLargeHashableWord$fLargeHashableInt64$fLargeHashableInt32$fLargeHashableInt16$fLargeHashableInt8$fLargeHashableInt$fLargeHashableShortByteString$fLargeHashableByteString$fLargeHashableByteString0$fLargeHashableText$fLargeHashableText0deriveLargeHashablederiveLargeHashableCtxderiveLargeHashableNoCtxderiveLargeHashableCustomCtxw64ToBsbsToW64ghc-prim GHC.TypesIOLHEnv lh_updateslh_updateXorHashlhFmaplhReturnlhApplhBindlhBind'getUpdateXorHashrunLH'Ctx_unCtxRawCtxc_md5_finalizec_md5_update_ulongc_md5_update_longc_md5_update_uintc_md5_update_intc_md5_update_ushortc_md5_update_shortc_md5_update_ucharc_md5_update_char c_md5_update c_md5_init digestSizesizeCtxwithCtxGenericLargeHashablebase GHC.GenericsGeneric GHC.Classes==EqhashListModuloOrderingupdateHashGeneric floatToWord32doubleToWord64updateHashTextDataupdateHashTextupdateHashLazyTextupdateHashByteStringDataupdateHashByteStringupdateHashLazyByteStringupdateHashWithFunupdateHashIntegerupdateHashFixedupdateHashBoolupdateHashList setFoldFun updateHashSetupdateHashIntSetupdateHashHashSet mapFoldFun updateHashMapupdateHashIntMapupdateHashHashMapupdateHashTupleupdateHashTripleupdateHashQuadrupleupdateHashQuintupleupdateHashMaybenotDeriveAbleErrorMsg buildInstanceupdateHashDeclarationupdateHashClause patternForCon sequenceExpsmakeConstraintsvarNametemplate-haskellLanguage.Haskell.TH.SyntaxNamenames