úΘf     JDefilter filtered PNG data (data includes scanlines prepended with filter  types). Lcreate mutable array for defiltering the image and break out scanline types KPerform filtering on the image array (standard adaptive filters supported)         non-portable (GHC only) experimentalmarko.lauronen@pp1.inet.fi= !"#$%&'()*+,-./0123#The actual fully parsed chunk type 456789:;<=>?@ABCType for raw PNG chunks @ The parsing happens in two phases: first the file is read into B raw chunks, then the raw chunks are parsed into actual PNGChunks E This is due to the CRC checksum that requires is easiest to compute  with raw chunk data. DEFGHRaw chunk parsing IJKFinal chunk parsing LM+conversion from raw chunks to final chunks NMLoad a PNG file, Left value contains a description of a problem as a String,  if any OP%Check if the image has alpha channel (Get dimensions of the image (in pixels) QBytes per pixel -Get image data as C-compatible StorableArray R      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOPQRS pngload-0.1 Codec.Image.PNG.Internal.FiltersCodec.Image.PNG.Internal.CRCCodec.Image.PNG.Internal.ParserCodec.Image.PNGdefilter_scanlines_arr update_crccrcParserword8word16word32satisfyanyWord8 anyWord16 anyWord32stringblock allowedValues parseFromFilePNGImageHeightWidth loadPNGFilehasAlphaChannel dimensions imageData imageArraydoFilterpaeth_predictor crc_table pngImg_headerpngImg_otherChunkspngImg_imageDataInterlaceMethodAdam7 NoInterlace FilterMethodAdaptiveCompressionMethodDeflateBitDepthBd16Bd8Bd4Bd2Bd1 ColorTypeCt6Ct4Ct3Ct2Ct0PNGChunkIEND UnknownChunkIDAT idat_dataPLTE plte_entriesIHDR ihdr_width ihdr_height ihdr_bitDepthihdr_colorTypeihdr_compressionMethodihdr_filterMethodihdr_interlaceMethodRgb RawPNGChunkrawPngChunk_typerawPngChunk_dataisIDATpngHeaderBytespngFile rawPngChunk parsePlte parseIhdr toPngChunk toPngImage sampleWidth bytesPerPixel pixelWidth