úÎPĒBU;      !"#$%&'()*+,-./0123456789:SafeThe number of s in a ;1. A handy constant to have around when defining ;'-based bulk operations on bit vectors. !<=>?@ABCDEFGHIJKLMNOPQRSTUVWX <=>?@ABCDEFGHIJKLMNOPQRSTUVW <=>?@ABCDEFGHIJKLMNOPQRSTUVWX Safe-Infered€read a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2'•s bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the result is zero-padded. €read a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2'•s bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the result is zero-padded. write a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2'Äs bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the word is truncated and as many low-order bits as possible are written. YZ[\]^ _`YZ[ [\]^ TrustworthyaThe bD instance is currently based on integers mod 2, so (+) and (-) are L XOR, (*) is AND, and all the unary operations are identities. Saturating 2 operations would also be a sensible alternative. cdeafgcdeafg Trustworthy 6Get the length of the vector that would be created by   ’Clone a specified number of bits from a vector of words into a new vector of bits (interpreting the words in little-endian order, as described at d). If there are not enough words for the number of bits requested, the vector will be zero-padded. Iclone a vector of bits to a new unboxed vector of words. If the bits don'@t completely fill the words, the last word will be zero-padded. %Map a function over a bit vector one ; at a time (S bits at a time). The function will be passed the bit index (which will always be ĸ-aligned) and the current value of the corresponding word. The returned word will be written back to the vector. If there is a partial word at the end of the vector, it will be zero-padded when passed to the function and truncated when the result is written back to the array. Same as   but without the index. #Flip every bit in the given vector *return the number of ones in a bit vector Returns h# if all bits in the vector are set Returns h! if any bit in the vector is set   Bijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡_`ˆ‰Š        Trustworthy "“Given a number of bits and a vector of words, concatenate them to a vector of bits (interpreting the words in little-endian order, as described at d). If there are not enough words for the number of bits requested, the vector will be zero-padded. #LGiven a vector of bits, extract an unboxed vector of words. If the bits don'@t completely fill the words, the last word will be zero-padded. $zipWords f xs ys = MfromWords (min (length xs) (length ys)) (zipWith f (toWords xs) (toWords ys)) +#Flip every bit in the given vector ,lGiven a vector of bits and a vector of things, extract those things for which the corresponding bit is set.  For example, 1select (V.map (fromBool . p) x) x == V.filter p x. -nGiven a vector of bits and a vector of things, extract those things for which the corresponding bit is unset.  For example, :exclude (V.map (fromBool . p) x) x == V.filter (not . p) x. 0*return the number of ones in a bit vector 2h# if all bits in the vector are set 3h! if any bit in the vector is set 9SReturn the address of the first bit in the vector with the specified value, if any !"#$%&'()*+,-./0123456789:ē‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ     _`Š!"#$%&'()*+,-./0123456789:!"#$%)&*'(+,.-/0123567489:!"#$%&'()*+,-./0123456789:      !"#$%&'()*+,-./01234 !"#$%56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_]^`a8bcdefghijk]lm]ln]lo]lp]lq]lr]ls]lt]lu]lv]lw]lx]ly]lz]l{]l|]l}]l~]l]l€]l]l‚]lƒ]l„]l…]l†]l‡]lˆ]l‰]lŠ]l‹]^Œ]^]^Ž]m]n]o]p]q]r]s]t]u]v]x]]‘]’]“]”]•]–]—]˜]™]š]›]œ]]ž]Ÿ] ]Ą]Ē]Ģ]Ī]Ĩ]Ķ]§]Ļ]Đ]Š]Ŧ]Ž]­]Ū]Ŋ]°]ą]ē]ģ]ī]ĩ]ķ]·]ļ]đ]š]ŧ]ž]―]ū]ŋ]Ā]Á]Â]Ã]Ä]Å]Æ]Į]Č]É]Ę]Ë]Ė]Í]Î]Ï]Ð]Ņ]Ō]Ó]Ô]Õ]Ö]Ũ]Ø]Ų]Ú]Û]Ü]Ý]Þ]ß]ā]á]â]ã]ä]å]æ]į]č]é]ę]ë]ė]í]î]ï]ð]€]ņ]ō]ó]ô]õ]ö]ũ]ø]ų]ú]û]ü]ý]þ]]ĸ]]†]‡]ˆ]„]…]‰]]]]]]]]Š]‹]  bitvec-0.1Data.BitData.Vector.Unboxed.Mutable.BitData.Vector.Unboxed.BitData.Bit.Internal Data.Vector.Unboxed.Bit.InternalBitfromBooltoBoolwordSize indexWordreadWord writeWordpadWithpad wordLengthcloneFromWords cloneToWordsmapMInPlaceWithIndexmapInPlaceWithIndex mapMInPlace mapInPlace zipInPlace unionInPlaceintersectionInPlacedifferenceInPlacesymDiffInPlace invertInPlaceselectBitsInPlaceexcludeBitsInPlace countBitslistBitsandorallanyallBitsanyBitsreverseInPlace fromWordstoWordszipWordsunion intersection differencesymDiffunions intersectionsinvertselectexclude selectBits excludeBitsreversefirst findIndexbaseGHC.WordWordlg2 lgWordSize wordSizeMask wordSizeMaskC divWordSize modWordSize mulWordSizenWordsnBitsaligned notAlignedalignUp alignDownreadBit extendToWordmaskmaskedisMaskedmeld extractWord spliceWord reverseWordreversePartialWorddiffffs bitsInWord selectWord $fEnumBitBitVecBitMVec cloneWords$fVectorVectorBit$fMVectorMVectorBit $fUnboxBit vector-0.9.1Data.Vector.Unboxed.BaseMVectorVector$fNumBitGHC.NumNum $fBitsBit $fIntegralBit $fRealBit $fReadBit $fShowBitghc-prim GHC.TypesTrueData.Vector.Unboxed.Mutableunzip6zip6unzip5zip5unzip4zip4unzip3zip3unzipzipmovecopysetswapwritereadcleargrowclone replicateM replicatenewoverlapstailinitsplitAtdroptakeslicenulllengthIOVectorSTVectorUnboxData.Vector.Unboxedfreezethaw fromListNfromListtoListscanr1'scanr1scanr'scanr postscanr' postscanr prescanr'prescanrscanl1'scanl1scanl'scanl postscanl' postscanl prescanl'prescanlfold1M'_foldM'_fold1M_foldM_fold1M'foldM'fold1MfoldM minIndexByminIndex maxIndexBymaxIndex minimumByminimum maximumBymaximumproductsumifoldr'ifoldrifoldl'ifoldlfoldr1'foldr'foldr1foldrfoldl1'foldl'foldl1foldl elemIndices elemIndex findIndicesfindnotElemelembreakspanunstablePartition partition dropWhile takeWhilefilterMifilterfilter zipWithM_zipWithM izipWith6 izipWith5 izipWith4 izipWith3izipWithzipWith6zipWith5zipWith4zipWith3zipWithforM_forMmapM_mapM concatMapimapmapindexedmodify backpermute accumulate_ accumulateaccumupdate_update//forcecreate generateMconcat++snocconsenumFromThenTo enumFromTo enumFromStepN enumFromN constructrN constructNunfoldrNunfoldriterateNgenerate singletonemptylastMheadMindexMlasthead!?!Data.Vector.Genericconvert