ú΀x¼ÿš      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™1Lennart Kolmodin, Ross Paterson, George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> experimentalPortableNone<ÖA # is an efficient way to build lazy š1s. There are several functions for constructing Xs, but only one to inspect them: to extract any data, you have to turn them into lazy šs using .Internally, a  constructs a lazy … by filling byte arrays piece by piece. As each buffer is filled, it is 'popped' off, to become a new chunk of the resulting lazy š+. All this is hidden from the user of the .O(1). The empty Builder, satisfying   = ›O(1).+ A Builder taking a single byte, satisfying  ( b) = œ bO(1).L The concatenation of two Builders, an associative operation with identity  , satisfying  ( x y) =  ( x) ( y)O(1). A Builder taking a ž , satisfying  ( bs) = Ÿ [bs]O(1). A Builder taking a lazy š , satisfying  ( bs) = bsO(n). Extract a lazy š from a P. The construction work takes place if and when the relevant part of the lazy š is demanded. O(1). Pop the žN we have constructed so far, if any, yielding a new chunk in the result lazy š. &Sequence an IO operation on the buffer¡Get the size of the buffer¢&Map the resulting list of bytestrings.£Ensure that there are at least n many bytes available.¤ Ensure that n( many bytes are available, and then use f& to write some bytes into the memory.¥ Ensure that n( many bytes are available, and then use f0 to write some storable values into the memory. #Write a Word16 in big endian format &Write a Word16 in little endian format @Write a 24 bit number in big endian format represented as Word32 CWrite a 24 bit number in little endian format represented as Word32#Write a Word32 in big endian format&Write a Word32 in little endian format#Write a Word64 in big endian format&Write a Word64 in little endian formatO(1).ÿ; A Builder taking a single native machine word. The word is written in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes. Values written this way are not portable to different endian or word sized machines, without conversion.]Write a Word16 in native host order and host endianness. 2 bytes will be written, unaligned.]Write a Word32 in native host order and host endianness. 4 bytes will be written, unaligned.“Write a Word64 in native host order. On a 32 bit machine we write two host order Word32s, in big endian form. 8 bytes will be written, unaligned.   ¦§¨©"Lennart Kolmodin, George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> experimentalPortableNonec¤!HThe Get monad is just a State monad carrying around the input ByteStringªThe parse state"Run the Get monad applies a «%-based parser on the input ByteString#Run the Get monad applies a «‹-based parser on the input ByteString. Additional to the result of get it returns the number of consumed bytes and the rest of the input.% Skip ahead n bytes. Fails if fewer than n bytes are available.&Run ga4, but return without consuming its input. Fails if ga fails.'Like &, but consume the input if gma returns 'Just _'. Fails if gma fails.(Like &, but consume the input if gea returns 'Right _'. Fails if gea fails.-1Get the total number of bytes read to this point..“Get the number of remaining unparsed bytes. Useful for checking whether all input has been consumed. Note that this forces the rest of the input./VTest whether all input has been consumed, i.e. there are no remaining unparsed bytes.0 An efficient «5 method for strict ByteStrings. Fails if fewer than n bytes are left in the input.1 An efficient «; method for lazy ByteStrings. Does not fail if fewer than n bytes are left in the input.2vGet a lazy ByteString that is terminated with a NUL byte. Fails if it reaches the end of input without hitting a NUL.3,Get the remaining bytes as a lazy ByteString4Pull n. bytes from the input, as a strict ByteString.¬lSplit a ByteString. If the first result is consumed before the -- second, this runs in constant heap space.8You must force the returned tuple for that to work, e.g. >case splitAtST n xs of (ys,zs) -> consume ys ... consume zs6!Read a Word8 from the monad state8"Read a Word16 in big endian format:%Read a Word16 in little endian format<3Read a 24 bit word into Word32 in big endian format@"Read a Word32 in big endian formatB%Read a Word32 in little endian formatD"Read a Word64 in big endian formatF%Read a Word64 in little endian formatVO(1).Á Read a single native machine word. The word is read in host order, host endian form, for the machine you're on. On a 64 bit machine the Word is an 8 byte value, on a 32 bit machine, 4 bytes.XO(1).? Read a 2 byte Word16 in native host order and host endianness.ZO(1).8 Read a Word32 in native host order and host endianness.\O(1).7 Read a Word64 in native host order and host endianess.A!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aA!"#$)%&'(-4./5*+,6H7I012389<=@ADELMPQTU:;>?BCFGJKNORSVWXYZ[\]^_`a!­®ª¯ George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableSafe<g[°±George GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNonehõSgpnzhijklmoqrstuvwxy{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹]›œžŸ—˜™š–“”•ghijklmnopqrstuvwxyz{|}~€‚ƒ‚ƒ‚„…†‡„ˆ’‘ŽŒ‹Š‰ ¡¢£¤¥¦§©¨ª«¬­¯®°±²³´µ¶·¸¹g+hijklmnopqrstuvwxyz{|}~€‚ƒ‚ƒ‚„…†‡„ˆ“”•—˜™š›œžŸGeorge GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNone<n:ÆÇÈÉÊËÌÍÎÏÑÐÒÓÔÕÖרÓÊËÌÍÎÒÆÇÈÉÕÔÖרÏÐÑÐÑÆÇÈÉÊËÌÍÎÏÐÑGeorge GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNone<p¦éêëìíîïðíîïðéêëìéêëìGeorge GiorgidzeBSD3-George Giorgidze <http://cs.nott.ac.uk/~ggg/> ExperimentalPortableNonerˆ‡õöùøü÷úûýþÿ/6      !"#$%&'()*+,-.012345789:;<=>?@ABCDEFGIHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{‡klmno^_`abcdefghijZ[\]OPQRSTUVWXYFGHIJKLMNBCDE;<=>?@A      !"#$%&'()*+,-./0123456789:pqõö÷øùúûüýþÿrstuvwxyz{ õ ö÷øùúûüýþÿ5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO PQRSTUVWXYZ[\]^ _`abcdefghijklmno²     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“x”•–—˜™š›œžŸ ¡¢£¤¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóº»ôõö÷øùúúûüýþÿÓÜ      !"#$%&'()*+,-./˜012345Î6789::;<=>?@@ABCCD‘EFGHIJJKLMNOPQRSTTUVWXYZ[\]^_`abcddefghiº»jklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“ “ “”’“•–—˜™š›œœ žŸ +¡ž ¢ £¤$HCodecs-0.5.1-IivxorRo0zt2zKQAC1JtwoCodec.ByteString.BuilderCodec.ByteString.Parser Codec.Midi Data.Audio Codec.WavCodec.SoundFontL BytestringCodec.Internal.ArbitraryBuilderempty singletonputWord8appendfromByteStringfromLazyByteString putStringtoLazyByteStringflush putWord16be putWord16le putWord24be putWord24le putWord32be putWord32le putWord64be putWord64leputInt8 putInt16le putInt16be putInt32le putInt32be putInt64le putInt64be putWordHost putWord16host putWord32host putWord64host putVarLenBe putVarLenLe$fMonoidBuilder$fSemigroupBuilderParser runParserrunParserStatechoiceskip lookAhead lookAheadM lookAheadEexpect getString getStringNulstring bytesRead remainingisEmpty getByteStringgetLazyByteStringgetLazyByteStringNulgetRemainingLazyByteStringgetBytessatisfygetWord8word8 getWord16beword16be getWord16leword16le getWord24beword24be getWord24leword24le getWord32beword32be getWord32leword32le getWord64beword64be getWord64leword64legetInt8int8 getInt16leint16le getInt16beint16be getInt32leint32le getInt32beint32be getInt64leint64le getInt64beint64be getWordHostwordHost getWord16host word16host getWord32host word32host getWord64host word64host getVarLenBevarLenBe getVarLenLevarLenLe$fAlternativeParser$fApplicativeParser$fMonadPlusParser $fMonadParser$fFunctorParserMessageNoteOffNoteOn KeyPressure ControlChange ProgramChangeChannelPressure PitchWheelSequenceNumberText Copyright TrackNameInstrumentNameLyricsMarkerCuePoint ChannelPrefix ProgramName DeviceNameTrackEnd TempoChange SMPTEOffset TimeSignature KeySignatureReservedSysexchannelkeyvelocitypressurecontrollerNumbercontrollerValuepreset pitchWheelTempoBankPresetPressureVelocityKeyChannelTimeTicksTimeDiv TicksPerBeatTicksPerSecondTrackFileType SingleTrack MultiTrack MultiPatternMidifileTypetimeDivtracks isNoteOffisNoteOn isKeyPressureisControlChangeisProgramChangeisChannelPressure isPitchWheelisChannelMessageisSysexMessage isMetaMessage isTrackEndremoveTrackEnds toSingleTrackmerge toAbsTime fromAbsTime toRealTime fromRealTime importFile exportFile parseMidi buildMidi parseTrack buildTrack parseMessage buildMessage$fArbitraryFileType$fArbitraryTimeDiv$fArbitraryMessage$fArbitraryMidi $fEqFileType$fShowFileType $fShowTimeDiv $fEqTimeDiv $fShowMessage $fEqMessage$fEqMidi $fShowMidi SampleModeNoLoopContLoop PressLoopAudio sampleRate channelNumber sampleDataAudibletoSample fromSample SampleDataSample sampleNumber sampleTypeconvertparseSampleDatabuildSampleData$fAudibleDouble$fAudibleFloat$fAudibleWord64$fAudibleWord32$fAudibleWord16$fAudibleWord8$fAudibleInt64$fAudibleInt32$fAudibleInt16 $fAudibleInt8$fArbitraryAudio $fShowAudio $fEqAudio$fArbitrarySampleMode$fEqSampleMode$fShowSampleMode AudibleInWav parseSample buildSample bitsPerSampleparseWavbuildWav$fAudibleInWavInt64$fAudibleInWavInt32$fAudibleInWavInt16$fAudibleInWavWord8Shdr sampleNamestartend startLoopendLoop originalPitchpitchCorrection sampleLinkInstinstName instBagNdx GeneratorStartAddressOffsetEndAddressOffsetLoopStartAddressOffsetLoopEndAddressOffsetStartAddressCoarseOffset ModLfoToPitch VibLfoToPitch ModEnvToPitchInitFcInitQ ModLfoToFc ModEnvToFcEndAddressCoarseOffset ModLfoToVolChorusReverbPan DelayModLfo FreqModLfo DelayVibLfo FreqVibLfo DelayModEnv AttackModEnv HoldModEnv DecayModEnv SustainModEnv ReleaseModEnvKeyToModEnvHoldKeyToModEnvDecay DelayVolEnv AttackVolEnv HoldVolEnv DecayVolEnv SustainVolEnv ReleaseVolEnvKeyToVolEnvHoldKeyToVolEnvDecay InstIndexKeyRangeVelRangeLoopStartAddressCoarseOffsetVel InitAttenLoopEndAddressCoarseOffset CoarseTuneFineTune SampleIndex ScaleTuningExclusiveClassRootKey ReservedGenModsrcOperdestOperamount amtSrcOper transOperBaggenNdxmodNdxPhdr presetNamebank presetBagNdxlibrarygenre morphologyPdtaphdrspbagspmodspgensinstsibagsimodsigensshdrsSdtasmplsm24InfoVersionTargetSoundEngineBankNameRomName RomVersion CreationDateAuthorsIntendedProductCopyrightMessageComments UsedTools ReservedInfo SoundFontinfossdtapdta isSampleIndex isInstIndexparseSoundFontbuildSoundFont parseInfos buildInfos parseSdta buildSdta parsePdta buildPdta$fArbitraryInfo$fArbitrarySdta$fArbitraryPhdr$fArbitraryBag$fArbitraryMod$fArbitraryGenerator$fArbitraryInst$fArbitraryShdr$fArbitraryPdta$fArbitrarySoundFont$fEqInfo $fShowInfo$fEqSdta $fShowSdta$fEqPhdr $fShowPhdr$fEqBag $fShowBag$fEqMod $fShowMod $fEqGenerator$fShowGenerator$fEqInst $fShowInst$fEqShdr $fShowShdr$fEqPdta $fShowPdta $fEqSoundFont$fShowSoundFontbytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringData.ByteString.LazyData.ByteString.Internal fromChunks unsafeLiftIOwithSize mapBuilder ensureFreewriteN writeNbytesBuffer runBuilderSget splitAtSTunParserarrayGen stringNulGen