From 4707693b47fca5a94f7b8711fb3f1ad390f9e302 Mon Sep 17 00:00:00 2001 From: pheasetris Date: Tue, 14 Sep 2021 13:16:43 +1200 Subject: [PATCH 01/19] Refactors and adding lossless basics. Lots of cleanup required. --- src/codecs/webp/decoder.rs | 143 ++++++++++++++++++++---------------- src/codecs/webp/lossless.rs | 132 +++++++++++++++++++++++++++++++++ src/codecs/webp/mod.rs | 1 + src/codecs/webp/vp8.rs | 41 +++++++---- 4 files changed, 241 insertions(+), 76 deletions(-) create mode 100644 src/codecs/webp/lossless.rs diff --git a/src/codecs/webp/decoder.rs b/src/codecs/webp/decoder.rs index b4c973e7f7..316e2d6696 100644 --- a/src/codecs/webp/decoder.rs +++ b/src/codecs/webp/decoder.rs @@ -1,6 +1,5 @@ use byteorder::{LittleEndian, ReadBytesExt}; use std::convert::TryFrom; -use std::default::Default; use std::{error, fmt, mem}; use std::io::{self, Cursor, Read}; use std::marker::PhantomData; @@ -10,7 +9,7 @@ use crate::image::{ImageDecoder, ImageFormat}; use crate::color; -use super::vp8::Frame; +use super::lossless::LosslessDecoder; use super::vp8::Vp8Decoder; /// All errors that can occur when attempting to parse a WEBP container @@ -48,39 +47,45 @@ impl From for ImageError { impl error::Error for DecoderError {} +enum InnerDecoder { + Lossy(Vp8Decoder), + Lossless(LosslessDecoder), +} + /// WebP Image format decoder. Currently only supports lossy RGB images. -pub struct WebPDecoder { - r: R, - frame: Frame, - have_frame: bool, +pub struct WebPDecoder { + inner_decoder: InnerDecoder, } impl WebPDecoder { /// Create a new WebPDecoder from the Reader ```r```. /// This function takes ownership of the Reader. - pub fn new(r: R) -> ImageResult> { - let f: Frame = Default::default(); - - let mut decoder = WebPDecoder { - r, - have_frame: false, - frame: f, + pub fn new(mut r: R) -> ImageResult> { + + let _size = WebPDecoder::read_file_header(&mut r)?; + + let inner_decoder = WebPDecoder::read_frame(r)?; + //let len = r.read_u32::()?; + + let decoder = WebPDecoder { + inner_decoder, }; - decoder.read_metadata()?; + //decoder.read_metadata()?; Ok(decoder) } - fn read_riff_header(&mut self) -> ImageResult { + //reads the 12 bytes of the WebP file header + fn read_file_header(r: &mut R) -> ImageResult { let mut riff = [0; 4]; - self.r.read_exact(&mut riff)?; + r.read_exact(&mut riff)?; if &riff != b"RIFF" { return Err(DecoderError::RiffSignatureInvalid(riff).into()); } - let size = self.r.read_u32::()?; + let size = r.read_u32::()?; let mut webp = [0; 4]; - self.r.read_exact(&mut webp)?; + r.read_exact(&mut webp)?; if &webp != b"WEBP" { return Err(DecoderError::WebpSignatureInvalid(webp).into()); } @@ -88,37 +93,43 @@ impl WebPDecoder { Ok(size) } - fn read_vp8_header(&mut self) -> ImageResult { - loop { - let mut chunk = [0; 4]; - self.r.read_exact(&mut chunk)?; - - match &chunk { - b"VP8 " => { - let len = self.r.read_u32::()?; - return Ok(len); - } - b"ALPH" | b"VP8L" | b"ANIM" | b"ANMF" => { - // Alpha, Lossless and Animation isn't supported - return Err(ImageError::Unsupported(UnsupportedError::from_format_and_kind( - ImageFormat::WebP.into(), - UnsupportedErrorKind::GenericFeature(chunk.iter().map(|&b| b as char).collect()), - ))); - } - _ => { - let mut len = self.r.read_u32::()?; - if len % 2 != 0 { - // RIFF chunks containing an uneven number of bytes append - // an extra 0x00 at the end of the chunk - len += 1; - } - io::copy(&mut self.r.by_ref().take(len as u64), &mut io::sink())?; - } + //reads the chunk header, decodes the frame and returns the inner decoder + fn read_frame(mut r: R) -> ImageResult> { + let mut chunk = [0; 4]; + r.read_exact(&mut chunk)?; + + match &chunk { + b"VP8 " => { + let _len = r.read_u32::()?; + let mut vp8_decoder = Vp8Decoder::new(r); + vp8_decoder.decode_frame()?; + + return Ok(InnerDecoder::Lossy(vp8_decoder)); + } + b"VP8L" => { + let mut lossless_decoder = LosslessDecoder::new(r); + + lossless_decoder.decode_frame()?; + + return Ok(InnerDecoder::Lossless(lossless_decoder)); + } + //b"ALPH" | b"ANIM" | b"ANMF" => { + _ => { + // Alpha and Animation isn't supported + return Err(ImageError::Unsupported(UnsupportedError::from_format_and_kind( + ImageFormat::WebP.into(), + UnsupportedErrorKind::GenericFeature(chunk.iter().map(|&b| b as char).collect()), + ))); } } } - fn read_frame(&mut self, len: u32) -> ImageResult<()> { + /* fn read_length(&mut self) -> ImageResult { + let len = self.r.read_u32::()?; + return Ok(len); + } */ + + /* fn read_vp8_frame(&mut self, len: u32) -> ImageResult<()> { let mut framedata = Vec::new(); self.r.by_ref().take(len as u64).read_to_end(&mut framedata)?; let m = io::Cursor::new(framedata); @@ -129,19 +140,7 @@ impl WebPDecoder { self.frame = frame.clone(); Ok(()) - } - - fn read_metadata(&mut self) -> ImageResult<()> { - if !self.have_frame { - self.read_riff_header()?; - let len = self.read_vp8_header()?; - self.read_frame(len)?; - - self.have_frame = true; - } - - Ok(()) - } + } */ } /// Wrapper struct around a `Cursor>` @@ -164,7 +163,10 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { type Reader = WebpReader; fn dimensions(&self) -> (u32, u32) { - (u32::from(self.frame.width), u32::from(self.frame.height)) + match self.inner_decoder { + InnerDecoder::Lossy(ref vp8_decoder) => vp8_decoder.dimensions(), + InnerDecoder::Lossless(ref lossless_decoder) => todo!(), + } } fn color_type(&self) -> color::ColorType { @@ -172,14 +174,29 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { } fn into_reader(self) -> ImageResult { - let mut data = vec![0; self.frame.ybuf.len() * 3]; - self.frame.fill_rgb(data.as_mut_slice()); - Ok(WebpReader(Cursor::new(data), PhantomData)) + match self.inner_decoder { + InnerDecoder::Lossy(ref vp8_decoder) => { + let mut data = vec![0; vp8_decoder.get_buf_size()]; + vp8_decoder.fill_rgb(data.as_mut_slice()); + Ok(WebpReader(Cursor::new(data), PhantomData)) + } + InnerDecoder::Lossless(ref lossless_decoder) => { + todo!() + } + } } fn read_image(self, buf: &mut [u8]) -> ImageResult<()> { assert_eq!(u64::try_from(buf.len()), Ok(self.total_bytes())); - self.frame.fill_rgb(buf); + + match self.inner_decoder { + InnerDecoder::Lossy(ref vp8_decoder) => { + vp8_decoder.fill_rgb(buf); + } + InnerDecoder::Lossless(ref lossless_decoder) => { + todo!() + } + } Ok(()) } } diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs new file mode 100644 index 0000000000..cb3366c405 --- /dev/null +++ b/src/codecs/webp/lossless.rs @@ -0,0 +1,132 @@ +use std::{error, fmt, io::Read}; + +use byteorder::{LittleEndian, ReadBytesExt}; + +use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; + +#[derive(Debug, Clone, Copy)] +enum DecoderError { + /// Signature of 0x2f not found + LosslessSignatureInvalid(u8), +} + +impl fmt::Display for DecoderError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + DecoderError::LosslessSignatureInvalid(sig) => + f.write_fmt(format_args!("Invalid lossless signature: {:#04X?}", sig)), + } + } +} + +impl From for ImageError { + fn from(e: DecoderError) -> ImageError { + ImageError::Decoding(DecodingError::new(ImageFormat::WebP.into(), e)) + } +} + +impl error::Error for DecoderError {} + +//Decodes lossless WebP images +pub(crate) struct LosslessDecoder { + r: R, + bit_reader: BitReader, +} + +impl LosslessDecoder { + /// Create a new decoder + pub(crate) fn new(r: R) -> LosslessDecoder { + + LosslessDecoder { + r, + bit_reader: BitReader::new(), + } + } + + /// Reads the frame + pub(crate) fn decode_frame(&mut self) -> ImageResult<()> { + let len = self.r.read_u32::()?; + let signature = self.r.read_u8()?; + + if signature != 0x2f { + return Err(DecoderError::LosslessSignatureInvalid(signature).into()); + } + + let mut buf = Vec::new(); + self.r.read_to_end(&mut buf)?; + self.bit_reader.init(buf); + + Ok(()) + } +} + +#[derive(Debug, Clone)] +struct BitReader { + buf: Vec, + index: usize, + bit_count: u8, +} + +impl BitReader { + fn new() -> BitReader { + BitReader { + buf: Vec::new(), + index: 0, + bit_count: 7, + } + } + + fn init(&mut self, buf: Vec) { + self.buf = buf; + } + + fn read_bits(&mut self, num: u8) -> u32 { + let mut value = 0u32; + + for i in 0..num { + let bit_true = self.buf[self.index] & (1 << self.bit_count) != 0; + value += u32::from(bit_true) << i; + self.bit_count = if self.bit_count == 0 { + self.index += 1; + 7 + } else { + self.bit_count - 1 + }; + } + + value + + } +} + +#[derive(Debug, Clone, Default)] +struct LosslessFrame { + width: u16, + height: u16, +} + +#[cfg(test)] +mod test { + + use super::BitReader; + + #[test] + fn bit_read_test() { + let mut bit_reader = BitReader::new(); + + //10011100 01000001 11100001 + let buf = vec![0x9C, 0x41, 0xE1]; + + for val in buf.iter() { + println!("{:#b}", val); + } + + bit_reader.init(buf); + + assert_eq!(bit_reader.read_bits(3), 1); //100 + assert_eq!(bit_reader.read_bits(2), 3); //11 + assert_eq!(bit_reader.read_bits(6), 17); //100010 + assert_eq!(bit_reader.read_bits(10), 240); //0000111100 + assert_eq!(bit_reader.read_bits(3), 4); //001 + } +} \ No newline at end of file diff --git a/src/codecs/webp/mod.rs b/src/codecs/webp/mod.rs index 24f57ee4d2..18cda0e9b8 100644 --- a/src/codecs/webp/mod.rs +++ b/src/codecs/webp/mod.rs @@ -4,5 +4,6 @@ pub use self::decoder::WebPDecoder; mod decoder; mod transform; +mod lossless; pub mod vp8; diff --git a/src/codecs/webp/vp8.rs b/src/codecs/webp/vp8.rs index 628d67ca95..b073b98236 100644 --- a/src/codecs/webp/vp8.rs +++ b/src/codecs/webp/vp8.rs @@ -837,34 +837,34 @@ struct MacroBlock { /// A Representation of the last decoded video frame #[derive(Default, Debug, Clone)] -pub struct Frame { +struct Frame { /// The width of the luma plane - pub width: u16, + width: u16, /// The height of the luma plane - pub height: u16, + height: u16, /// The luma plane of the frame - pub ybuf: Vec, + ybuf: Vec, /// The blue plane of the frame - pub ubuf: Vec, + ubuf: Vec, /// The red plane of the frame - pub vbuf: Vec, + vbuf: Vec, /// Indicates whether this frame is a keyframe - pub keyframe: bool, + keyframe: bool, version: u8, /// Indicates whether this frame is intended for display - pub for_display: bool, + for_display: bool, // Section 9.2 /// The pixel type of the frame as defined by Section 9.2 /// of the VP8 Specification - pub pixel_type: u8, + pixel_type: u8, // Section 9.4 and 15 filter: u8, @@ -882,9 +882,8 @@ impl Frame { (self.height + 1) / 2 } - /// Fills an rgb buffer with the converted values from the 4:2:0 YUV planes /// Conversion values from https://docs.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering#converting-8-bit-yuv-to-rgb888 - pub fn fill_rgb(&self, buf: &mut [u8]) { + fn fill_rgb(&self, buf: &mut [u8]) { for index in 0..self.ybuf.len() { let y = index / self.width as usize; let x = index % self.width as usize; @@ -959,6 +958,22 @@ pub struct Vp8Decoder { } impl Vp8Decoder { + + /// Get dimensions of image + pub fn dimensions(&self) -> (u32, u32) { + (u32::from(self.frame.width), u32::from(self.frame.height)) + } + + /// Fills an rgb buffer with the converted values from the 4:2:0 YUV planes + pub fn fill_rgb(&self, buf: &mut [u8]) { + self.frame.fill_rgb(buf); + } + + /// Gets the buffer size + pub fn get_buf_size(&self) -> usize { + self.frame.ybuf.len() * 3 + } + /// Create a new decoder. /// The reader must present a raw vp8 bitstream to the decoder pub fn new(r: R) -> Vp8Decoder { @@ -1684,7 +1699,7 @@ impl Vp8Decoder { } /// Decodes the current frame and returns a reference to it - pub fn decode_frame(&mut self) -> ImageResult<&Frame> { + pub fn decode_frame(&mut self) -> ImageResult<()> { self.read_frame_header()?; for mby in 0..self.mbheight as usize { @@ -1716,7 +1731,7 @@ impl Vp8Decoder { self.left_border = vec![129u8; 1 + 16]; } - Ok(&self.frame) + Ok(()) } } From 51a4ddd2a544ea0baf28479f441d0c1f812f5934 Mon Sep 17 00:00:00 2001 From: pheasetris Date: Wed, 15 Sep 2021 12:36:24 +1200 Subject: [PATCH 02/19] Added stuff to deal with transform. --- src/codecs/webp/lossless.rs | 131 ++++++++++++++++++++++++++++++++---- 1 file changed, 117 insertions(+), 14 deletions(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index cb3366c405..209a5a7c6f 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -1,20 +1,51 @@ -use std::{error, fmt, io::Read}; +//! Decoding of lossless WebP images +//! +//! [Lossless spec](https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification#522_decoding_entropy-coded_image_data) + + +use std::{error, fmt, io::Read, ops::{AddAssign, Shl}}; use byteorder::{LittleEndian, ReadBytesExt}; use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; +const DISTANCE_MAP: [(i8, i8); 120] = [ + (0, 1), (1, 0), (1, 1), (-1, 1), (0, 2), (2, 0), (1, 2), (-1, 2), + (2, 1), (-2, 1), (2, 2), (-2, 2), (0, 3), (3, 0), (1, 3), (-1, 3), + (3, 1), (-3, 1), (2, 3), (-2, 3), (3, 2), (-3, 2), (0, 4), (4, 0), + (1, 4), (-1, 4), (4, 1), (-4, 1), (3, 3), (-3, 3), (2, 4), (-2, 4), + (4, 2), (-4, 2), (0, 5), (3, 4), (-3, 4), (4, 3), (-4, 3), (5, 0), + (1, 5), (-1, 5), (5, 1), (-5, 1), (2, 5), (-2, 5), (5, 2), (-5, 2), + (4, 4), (-4, 4), (3, 5), (-3, 5), (5, 3), (-5, 3), (0, 6), (6, 0), + (1, 6), (-1, 6), (6, 1), (-6, 1), (2, 6), (-2, 6), (6, 2), (-6, 2), + (4, 5), (-4, 5), (5, 4), (-5, 4), (3, 6), (-3, 6), (6, 3), (-6, 3), + (0, 7), (7, 0), (1, 7), (-1, 7), (5, 5), (-5, 5), (7, 1), (-7, 1), + (4, 6), (-4, 6), (6, 4), (-6, 4), (2, 7), (-2, 7), (7, 2), (-7, 2), + (3, 7), (-3, 7), (7, 3), (-7, 3), (5, 6), (-5, 6), (6, 5), (-6, 5), + (8, 0), (4, 7), (-4, 7), (7, 4), (-7, 4), (8, 1), (8, 2), (6, 6), + (-6, 6), (8, 3), (5, 7), (-5, 7), (7, 5), (-7, 5), (8, 4), (6, 7), + (-6, 7), (7, 6), (-7, 6), (8, 5), (7, 7), (-7, 7), (8, 6), (8, 7) +]; + #[derive(Debug, Clone, Copy)] enum DecoderError { /// Signature of 0x2f not found LosslessSignatureInvalid(u8), + /// Version Number must be 0 + VersionNumberInvalid(u8), + + InvalidTransformType(u8), } impl fmt::Display for DecoderError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { DecoderError::LosslessSignatureInvalid(sig) => - f.write_fmt(format_args!("Invalid lossless signature: {:#04X?}", sig)), + f.write_fmt(format_args!("Invalid lossless signature: {}", sig)), + DecoderError::VersionNumberInvalid(num) => + f.write_fmt(format_args!("Invalid version number: {}", num)), + DecoderError::InvalidTransformType(val) => + f.write_fmt(format_args!("Invalid transform type: {}", val)), } } } @@ -27,10 +58,21 @@ impl From for ImageError { impl error::Error for DecoderError {} +#[derive(Debug, Clone, Copy)] +enum TransformType { + PredictorTransform(u8), + ColorTransform(u8), + SubtractGreen, + ColorIndexingTransform(u8), +} + //Decodes lossless WebP images +#[derive(Debug)] pub(crate) struct LosslessDecoder { r: R, bit_reader: BitReader, + frame: LosslessFrame, + transform: Option, } impl LosslessDecoder { @@ -40,6 +82,8 @@ impl LosslessDecoder { LosslessDecoder { r, bit_reader: BitReader::new(), + frame: Default::default(), + transform: None, } } @@ -56,6 +100,65 @@ impl LosslessDecoder { self.r.read_to_end(&mut buf)?; self.bit_reader.init(buf); + self.frame.width = self.bit_reader.read_bits::(14)+1; + self.frame.height = self.bit_reader.read_bits::(14)+1; + + let _alpha_used = self.bit_reader.read_bits::(1); + + let version_num = self.bit_reader.read_bits::(3); + + if version_num != 0 { + return Err(DecoderError::VersionNumberInvalid(version_num).into()); + } + + self.read_transforms()?; + self.read_image_data()?; + + Ok(()) + } + + fn read_transforms(&mut self) -> ImageResult<()> { + while self.bit_reader.read_bits::(1) != 0 { + let transform_type_val = self.bit_reader.read_bits::(2); + + let transform_type = match transform_type_val { + 0 => { + //predictor + + let size_bits = self.bit_reader.read_bits::(3) + 2; + + TransformType::PredictorTransform(size_bits) + } + 1 => { + //color transform + + let size_bits = self.bit_reader.read_bits::(3) + 2; + + TransformType::ColorTransform(size_bits) + } + 2 => { + //subtract green + + TransformType::SubtractGreen + } + 3 => { + let color_table_size = self.bit_reader.read_bits::(8) + 1; + + TransformType::ColorIndexingTransform(color_table_size) + } + _ => return Err(DecoderError::InvalidTransformType(transform_type_val).into()), + }; + + + //self.transform = Some(transform_type); + } + + Ok(()) + } + + fn read_image_data(&mut self) -> ImageResult<()> { + + Ok(()) } } @@ -80,12 +183,14 @@ impl BitReader { self.buf = buf; } - fn read_bits(&mut self, num: u8) -> u32 { - let mut value = 0u32; + fn read_bits(&mut self, num: u8) -> T + where T: num_traits::Unsigned + Shl + + AddAssign + From { + let mut value: T = T::zero(); for i in 0..num { let bit_true = self.buf[self.index] & (1 << self.bit_count) != 0; - value += u32::from(bit_true) << i; + value += T::from(bit_true) << i; self.bit_count = if self.bit_count == 0 { self.index += 1; 7 @@ -103,6 +208,8 @@ impl BitReader { struct LosslessFrame { width: u16, height: u16, + + buf: Vec, } #[cfg(test)] @@ -117,16 +224,12 @@ mod test { //10011100 01000001 11100001 let buf = vec![0x9C, 0x41, 0xE1]; - for val in buf.iter() { - println!("{:#b}", val); - } - bit_reader.init(buf); - assert_eq!(bit_reader.read_bits(3), 1); //100 - assert_eq!(bit_reader.read_bits(2), 3); //11 - assert_eq!(bit_reader.read_bits(6), 17); //100010 - assert_eq!(bit_reader.read_bits(10), 240); //0000111100 - assert_eq!(bit_reader.read_bits(3), 4); //001 + assert_eq!(bit_reader.read_bits::(3), 1); //100 + assert_eq!(bit_reader.read_bits::(2), 3); //11 + assert_eq!(bit_reader.read_bits::(6), 17); //100010 + assert_eq!(bit_reader.read_bits::(10), 240); //0000111100 + assert_eq!(bit_reader.read_bits::(3), 4); //001 } } \ No newline at end of file From d7711f1173d5a3e8d2f0dfb4ac18e099d78da915 Mon Sep 17 00:00:00 2001 From: pheasetris Date: Mon, 20 Sep 2021 13:27:31 +1200 Subject: [PATCH 03/19] Fixed bit reader, added lots of skeleton functions. Still need to piece it all together. --- src/codecs/webp/decoder.rs | 2 +- src/codecs/webp/huffman.rs | 38 ++++++++++++++++++ src/codecs/webp/lossless.rs | 80 ++++++++++++++++++++++++++++++------- src/codecs/webp/mod.rs | 1 + 4 files changed, 106 insertions(+), 15 deletions(-) create mode 100644 src/codecs/webp/huffman.rs diff --git a/src/codecs/webp/decoder.rs b/src/codecs/webp/decoder.rs index 316e2d6696..4ccc0b9a0f 100644 --- a/src/codecs/webp/decoder.rs +++ b/src/codecs/webp/decoder.rs @@ -165,7 +165,7 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { fn dimensions(&self) -> (u32, u32) { match self.inner_decoder { InnerDecoder::Lossy(ref vp8_decoder) => vp8_decoder.dimensions(), - InnerDecoder::Lossless(ref lossless_decoder) => todo!(), + InnerDecoder::Lossless(ref lossless_decoder) => lossless_decoder.dimensions(), } } diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs new file mode 100644 index 0000000000..2d0959da96 --- /dev/null +++ b/src/codecs/webp/huffman.rs @@ -0,0 +1,38 @@ +use super::lossless::BitReader; + +const CODE_LENGTH_CODES: usize = 19; +const CODE_LENGTH_CODE_ORDER: [usize; 19] = [ + 17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +pub(crate) fn get_code_lengths(bit_reader: &mut BitReader) -> Vec { + let simple = bit_reader.read_bits::(1) == 1; + + let mut code_lengths = Vec::new(); + + if simple { + let num_code_lengths = bit_reader.read_bits::(1) + 1; + let is_first_8bits = bit_reader.read_bits::(1); + code_lengths.push(bit_reader.read_bits::(1 + 7 * is_first_8bits)); + if num_code_lengths == 2 { + code_lengths.push(bit_reader.read_bits::(8)); + } + } else { + code_lengths = vec![0; CODE_LENGTH_CODES]; + let num_code_lengths = 4 + bit_reader.read_bits::(4); + for i in 0..num_code_lengths { + code_lengths[CODE_LENGTH_CODE_ORDER[i]] = bit_reader.read_bits(3); + } + } + + code_lengths +} + +pub(crate) fn read_meta_huffman_codes(bit_reader: &mut BitReader) { + let multiple = bit_reader.read_bits::(1) == 1; + + if multiple { + let huffman_bits = bit_reader.read_bits::(3) + 2; + + } +} \ No newline at end of file diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 209a5a7c6f..c59c8f42da 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -87,6 +87,10 @@ impl LosslessDecoder { } } + pub(crate) fn dimensions(&self) -> (u32, u32) { + (u32::from(self.frame.width), u32::from(self.frame.height)) + } + /// Reads the frame pub(crate) fn decode_frame(&mut self) -> ImageResult<()> { let len = self.r.read_u32::()?; @@ -103,7 +107,7 @@ impl LosslessDecoder { self.frame.width = self.bit_reader.read_bits::(14)+1; self.frame.height = self.bit_reader.read_bits::(14)+1; - let _alpha_used = self.bit_reader.read_bits::(1); + let alpha_used = self.bit_reader.read_bits::(1); let version_num = self.bit_reader.read_bits::(3); @@ -111,14 +115,15 @@ impl LosslessDecoder { return Err(DecoderError::VersionNumberInvalid(version_num).into()); } - self.read_transforms()?; - self.read_image_data()?; + + //self.read_transforms()?; + //self.read_image_data()?; Ok(()) } fn read_transforms(&mut self) -> ImageResult<()> { - while self.bit_reader.read_bits::(1) != 0 { + while self.bit_reader.read_bits::(1) == 1 { let transform_type_val = self.bit_reader.read_bits::(2); let transform_type = match transform_type_val { @@ -161,10 +166,52 @@ impl LosslessDecoder { Ok(()) } + + fn read_blocks(&mut self) -> ImageResult<()> { + + Ok(()) + } + + fn read_color_cache_info(&mut self) -> ImageResult<()> { + let value = self.bit_reader.read_bits::(1) == 1; + if value { + + } + Ok(()) + } + + fn decode_meta_huffman(&mut self) -> u16 { + let multiple_meta_codes = self.bit_reader.read_bits::(1) == 1; + + self.bit_reader.read_bits::(3) + 2 + } + + fn read_huffman_codes(&mut self) -> ImageResult<()> { + + //let num_huff_groups = + + + Ok(()) + } + + fn decode_huffman(&mut self) -> ImageResult<()> { + + let huffman_bits = self.decode_meta_huffman(); + let huffman_xsize = DIV_ROUND_UP(self.frame.width, 1 << huffman_bits); + + for y in 0..self.frame.height { + for x in 0..self.frame.width { + + let position = (y >> huffman_bits) * huffman_xsize + (x >> huffman_bits); + //let meta_huff_code = () + } + } + Ok(()) + } } #[derive(Debug, Clone)] -struct BitReader { +pub(crate) struct BitReader { buf: Vec, index: usize, bit_count: u8, @@ -175,7 +222,7 @@ impl BitReader { BitReader { buf: Vec::new(), index: 0, - bit_count: 7, + bit_count: 0, } } @@ -183,7 +230,7 @@ impl BitReader { self.buf = buf; } - fn read_bits(&mut self, num: u8) -> T + pub(crate) fn read_bits(&mut self, num: u8) -> T where T: num_traits::Unsigned + Shl + AddAssign + From { let mut value: T = T::zero(); @@ -191,11 +238,11 @@ impl BitReader { for i in 0..num { let bit_true = self.buf[self.index] & (1 << self.bit_count) != 0; value += T::from(bit_true) << i; - self.bit_count = if self.bit_count == 0 { + self.bit_count = if self.bit_count == 7 { self.index += 1; - 7 + 0 } else { - self.bit_count - 1 + self.bit_count + 1 }; } @@ -204,6 +251,11 @@ impl BitReader { } } +#[inline] +fn DIV_ROUND_UP(num: u16, den: u16) -> u16 { + (num + den - 1) / den +} + #[derive(Debug, Clone, Default)] struct LosslessFrame { width: u16, @@ -226,10 +278,10 @@ mod test { bit_reader.init(buf); - assert_eq!(bit_reader.read_bits::(3), 1); //100 + assert_eq!(bit_reader.read_bits::(3), 4); //100 assert_eq!(bit_reader.read_bits::(2), 3); //11 - assert_eq!(bit_reader.read_bits::(6), 17); //100010 - assert_eq!(bit_reader.read_bits::(10), 240); //0000111100 - assert_eq!(bit_reader.read_bits::(3), 4); //001 + assert_eq!(bit_reader.read_bits::(6), 12); //001100 + assert_eq!(bit_reader.read_bits::(10), 40); //0000101000 + assert_eq!(bit_reader.read_bits::(3), 7); //111 } } \ No newline at end of file diff --git a/src/codecs/webp/mod.rs b/src/codecs/webp/mod.rs index 18cda0e9b8..0c72e89f33 100644 --- a/src/codecs/webp/mod.rs +++ b/src/codecs/webp/mod.rs @@ -5,5 +5,6 @@ pub use self::decoder::WebPDecoder; mod decoder; mod transform; mod lossless; +mod huffman; pub mod vp8; From 5480dd285a54fbed92b45c22cfa0e1f08eba906b Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Sat, 30 Oct 2021 15:18:59 +1300 Subject: [PATCH 04/19] Moved huffman stuff to lossless file, really should refactor. --- src/codecs/webp/huffman.rs | 38 ------- src/codecs/webp/lossless.rs | 198 ++++++++++++++++++++++++++++-------- src/codecs/webp/mod.rs | 1 - 3 files changed, 158 insertions(+), 79 deletions(-) delete mode 100644 src/codecs/webp/huffman.rs diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs deleted file mode 100644 index 2d0959da96..0000000000 --- a/src/codecs/webp/huffman.rs +++ /dev/null @@ -1,38 +0,0 @@ -use super::lossless::BitReader; - -const CODE_LENGTH_CODES: usize = 19; -const CODE_LENGTH_CODE_ORDER: [usize; 19] = [ - 17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 -]; - -pub(crate) fn get_code_lengths(bit_reader: &mut BitReader) -> Vec { - let simple = bit_reader.read_bits::(1) == 1; - - let mut code_lengths = Vec::new(); - - if simple { - let num_code_lengths = bit_reader.read_bits::(1) + 1; - let is_first_8bits = bit_reader.read_bits::(1); - code_lengths.push(bit_reader.read_bits::(1 + 7 * is_first_8bits)); - if num_code_lengths == 2 { - code_lengths.push(bit_reader.read_bits::(8)); - } - } else { - code_lengths = vec![0; CODE_LENGTH_CODES]; - let num_code_lengths = 4 + bit_reader.read_bits::(4); - for i in 0..num_code_lengths { - code_lengths[CODE_LENGTH_CODE_ORDER[i]] = bit_reader.read_bits(3); - } - } - - code_lengths -} - -pub(crate) fn read_meta_huffman_codes(bit_reader: &mut BitReader) { - let multiple = bit_reader.read_bits::(1) == 1; - - if multiple { - let huffman_bits = bit_reader.read_bits::(3) + 2; - - } -} \ No newline at end of file diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index c59c8f42da..2b897bc8b4 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -9,6 +9,11 @@ use byteorder::{LittleEndian, ReadBytesExt}; use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; +const CODE_LENGTH_CODES: usize = 19; +const CODE_LENGTH_CODE_ORDER: [usize; 19] = [ + 17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + const DISTANCE_MAP: [(i8, i8); 120] = [ (0, 1), (1, 0), (1, 1), (-1, 1), (0, 2), (2, 0), (1, 2), (-1, 2), (2, 1), (-2, 1), (2, 2), (-2, 2), (0, 3), (3, 0), (1, 3), (-1, 3), @@ -27,6 +32,28 @@ const DISTANCE_MAP: [(i8, i8); 120] = [ (-6, 7), (7, 6), (-7, 6), (8, 5), (7, 7), (-7, 7), (8, 6), (8, 7) ]; +const GREEN: usize = 0; +const RED: usize = 1; +const BLUE: usize = 2; +const ALPHA: usize = 3; +const DIST: usize = 4; + +#[derive(Debug, Clone, Copy, Default)] +struct HuffmanCode { + bits: u8, + value: u16, +} + +#[derive(Debug, Clone, Default)] +struct HuffmanTreeGroup { + huffman_trees: Vec<[HuffmanCode; 5]>, +} + +#[inline] +pub(crate) fn DIV_ROUND_UP(num: u16, den: u16) -> u16 { + (num + den - 1) / den +} + #[derive(Debug, Clone, Copy)] enum DecoderError { /// Signature of 0x2f not found @@ -34,7 +61,8 @@ enum DecoderError { /// Version Number must be 0 VersionNumberInvalid(u8), - InvalidTransformType(u8), + /// + InvalidColorCacheBits(u8) } impl fmt::Display for DecoderError { @@ -44,8 +72,8 @@ impl fmt::Display for DecoderError { f.write_fmt(format_args!("Invalid lossless signature: {}", sig)), DecoderError::VersionNumberInvalid(num) => f.write_fmt(format_args!("Invalid version number: {}", num)), - DecoderError::InvalidTransformType(val) => - f.write_fmt(format_args!("Invalid transform type: {}", val)), + DecoderError::InvalidColorCacheBits(num) => + f.write_fmt(format_args!("Invalid color cache(must be between 1-11): {}", num)) } } } @@ -72,7 +100,7 @@ pub(crate) struct LosslessDecoder { r: R, bit_reader: BitReader, frame: LosslessFrame, - transform: Option, + transforms: Vec, } impl LosslessDecoder { @@ -83,7 +111,7 @@ impl LosslessDecoder { r, bit_reader: BitReader::new(), frame: Default::default(), - transform: None, + transforms: Vec::new(), } } @@ -107,7 +135,7 @@ impl LosslessDecoder { self.frame.width = self.bit_reader.read_bits::(14)+1; self.frame.height = self.bit_reader.read_bits::(14)+1; - let alpha_used = self.bit_reader.read_bits::(1); + let _alpha_used = self.bit_reader.read_bits::(1); let version_num = self.bit_reader.read_bits::(3); @@ -115,11 +143,40 @@ impl LosslessDecoder { return Err(DecoderError::VersionNumberInvalid(version_num).into()); } + self.decode_image_stream(self.frame.width, self.frame.height, true)?; + Ok(()) + } + + fn decode_image_stream(&mut self, xsize: u16, ysize: u16, base: bool) -> ImageResult> { - //self.read_transforms()?; - //self.read_image_data()?; + let trans_xsize = xsize; + let trans_ysize = ysize; - Ok(()) + if base { + self.read_transforms()?; + } + + let color_cache = self.read_color_cache()?; + + self.read_huffman_codes(true, xsize, ysize)?; + + let color_cache_size = match color_cache { + Some(color_cache_bits) => { + 1 << color_cache_bits + } + None => 0, + }; + + if base { + return Ok(vec![]); + } + + //decode LZ77 encoded data + let mut data = vec![0; (trans_xsize * trans_ysize).into()]; + + self.decode_image_data(trans_xsize, trans_ysize, &mut data); + + Ok(data) } fn read_transforms(&mut self) -> ImageResult<()> { @@ -151,7 +208,7 @@ impl LosslessDecoder { TransformType::ColorIndexingTransform(color_table_size) } - _ => return Err(DecoderError::InvalidTransformType(transform_type_val).into()), + _ => unreachable!(), }; @@ -161,51 +218,115 @@ impl LosslessDecoder { Ok(()) } - fn read_image_data(&mut self) -> ImageResult<()> { - + fn read_huffman_codes( + &mut self, + read_meta: bool, + xsize: u16, + ysize: u16) -> ImageResult { + + let mut num_huff_groups = 1; + + if read_meta && self.bit_reader.read_bits::(1) == 1 { + //meta huffman codes + let huffman_bits = self.bit_reader.read_bits::(3) + 2; + let huffman_xsize = DIV_ROUND_UP(xsize, 1 << huffman_bits); + let huffman_ysize = DIV_ROUND_UP(ysize, 1 << huffman_bits); + let huffman_pixels = usize::from(huffman_xsize * huffman_ysize); + let entropy_image = self.decode_image_stream(huffman_xsize, huffman_ysize, false)?; + + + for i in 0..huffman_pixels { + let meta_huff_code = (entropy_image[i] >> 8) & 0xffff; - Ok(()) - } + if meta_huff_code >= num_huff_groups { + num_huff_groups = meta_huff_code + 1; + } + } + } - fn read_blocks(&mut self) -> ImageResult<()> { + let tree_group = HuffmanTreeGroup { + huffman_trees: Vec::with_capacity(num_huff_groups as usize) + }; - Ok(()) + for i in 0..num_huff_groups { + + for j in 0..5 { + tree_group.huffman_trees[j] + } + } + + + + Ok(tree_group) } - fn read_color_cache_info(&mut self) -> ImageResult<()> { - let value = self.bit_reader.read_bits::(1) == 1; - if value { - + //decodes a single huffman code + fn read_huffman_code(&mut self) -> Vec { + let simple = self.bit_reader.read_bits::(1) == 1; + + let mut code_lengths = Vec::new(); + + if simple { + let num_code_lengths = self.bit_reader.read_bits::(1) + 1; + let is_first_8bits = self.bit_reader.read_bits::(1); + code_lengths.push(self.bit_reader.read_bits::(1 + 7 * is_first_8bits)); + if num_code_lengths == 2 { + code_lengths.push(self.bit_reader.read_bits::(8)); + } + } else { + code_lengths = vec![0; CODE_LENGTH_CODES]; + let num_code_lengths = 4 + self.bit_reader.read_bits::(4); + for i in 0..num_code_lengths { + code_lengths[CODE_LENGTH_CODE_ORDER[i]] = self.bit_reader.read_bits(3); + } } - Ok(()) + + code_lengths } - fn decode_meta_huffman(&mut self) -> u16 { - let multiple_meta_codes = self.bit_reader.read_bits::(1) == 1; + fn decode_image_data(&mut self, width: u16, height: u16, data: &mut Vec) -> ImageResult<()> { + + for index in 0..data.len() { - self.bit_reader.read_bits::(3) + 2 - } + //let code = - fn read_huffman_codes(&mut self) -> ImageResult<()> { - - //let num_huff_groups = + } + Ok(()) + } + + fn read_blocks(&mut self) -> ImageResult<()> { Ok(()) } - fn decode_huffman(&mut self) -> ImageResult<()> { + fn read_color_cache(&mut self) -> ImageResult> { + if self.bit_reader.read_bits::(1) == 1 { + let code_bits = self.bit_reader.read_bits::(4); + + if !(1..=11).contains(&code_bits) { + return Err(DecoderError::InvalidColorCacheBits(code_bits).into()); + } + + Ok(Some(code_bits)) + } else { + Ok(None) + } + } - let huffman_bits = self.decode_meta_huffman(); - let huffman_xsize = DIV_ROUND_UP(self.frame.width, 1 << huffman_bits); + fn entropy_coded_image(&mut self) -> ImageResult<()> { + //let size = self.color_cache_size()?; - for y in 0..self.frame.height { - for x in 0..self.frame.width { + /* match size { + Some(size) => { + // + let color_cache = vec![0u32; usize::from(size)]; + } + None => { - let position = (y >> huffman_bits) * huffman_xsize + (x >> huffman_bits); - //let meta_huff_code = () } - } + } */ + Ok(()) } } @@ -251,10 +372,7 @@ impl BitReader { } } -#[inline] -fn DIV_ROUND_UP(num: u16, den: u16) -> u16 { - (num + den - 1) / den -} + #[derive(Debug, Clone, Default)] struct LosslessFrame { diff --git a/src/codecs/webp/mod.rs b/src/codecs/webp/mod.rs index 0c72e89f33..18cda0e9b8 100644 --- a/src/codecs/webp/mod.rs +++ b/src/codecs/webp/mod.rs @@ -5,6 +5,5 @@ pub use self::decoder::WebPDecoder; mod decoder; mod transform; mod lossless; -mod huffman; pub mod vp8; From 685f76bc35d5f413aa6a6c56dc49c55e499a1f31 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Wed, 24 Nov 2021 20:28:51 +1300 Subject: [PATCH 05/19] First proper working version. EXTREMELY rough, so much cleanup to do from debugging issues. --- src/codecs/webp/decoder.rs | 12 +- src/codecs/webp/huffman.rs | 195 ++++++++++ src/codecs/webp/lossless.rs | 501 +++++++++++++++++++++----- src/codecs/webp/lossless_transform.rs | 408 +++++++++++++++++++++ src/codecs/webp/mod.rs | 3 + 5 files changed, 1023 insertions(+), 96 deletions(-) create mode 100644 src/codecs/webp/huffman.rs create mode 100644 src/codecs/webp/lossless_transform.rs diff --git a/src/codecs/webp/decoder.rs b/src/codecs/webp/decoder.rs index 4ccc0b9a0f..5be0c34772 100644 --- a/src/codecs/webp/decoder.rs +++ b/src/codecs/webp/decoder.rs @@ -170,7 +170,11 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { } fn color_type(&self) -> color::ColorType { - color::ColorType::Rgb8 + match self.inner_decoder { + InnerDecoder::Lossy(_) => color::ColorType::Rgb8, + InnerDecoder::Lossless(_) => color::ColorType::Rgba8, + } + } fn into_reader(self) -> ImageResult { @@ -181,7 +185,9 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { Ok(WebpReader(Cursor::new(data), PhantomData)) } InnerDecoder::Lossless(ref lossless_decoder) => { - todo!() + let mut data = vec![0; lossless_decoder.get_buf_size()]; + lossless_decoder.fill_rgba(data.as_mut_slice()); + Ok(WebpReader(Cursor::new(data), PhantomData)) } } } @@ -194,7 +200,7 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { vp8_decoder.fill_rgb(buf); } InnerDecoder::Lossless(ref lossless_decoder) => { - todo!() + lossless_decoder.fill_rgba(buf); } } Ok(()) diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs new file mode 100644 index 0000000000..544eda6a17 --- /dev/null +++ b/src/codecs/webp/huffman.rs @@ -0,0 +1,195 @@ +use std::convert::TryInto; + +use super::lossless::BitReader; + +/// Rudimentary utility for reading Canonical Huffman Codes. +/// Based off https://github.com/webmproject/libwebp/blob/f2623dbe583b28f1bff5678193d00ea8c872666c/src/utils/huffman.c +/// + +const MAX_ALLOWED_CODE_LENGTH: usize = 15; + + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub(crate) enum HuffmanTreeNode { + Branch(usize), //offset in vector to children + Leaf(u16), //symbol stored in leaf + Empty, +} + +#[derive(Clone, Debug, Default)] +pub(crate) struct HuffmanTree { + pub(crate) tree: Vec, + max_nodes: usize, + pub(crate) num_nodes: usize, +} + +impl HuffmanTree { + fn is_full(&self) -> bool { + self.num_nodes == self.max_nodes + } + + fn assign_children(&mut self, node_index: usize) -> usize { + let offset_index = self.num_nodes - node_index; + self.tree[node_index] = HuffmanTreeNode::Branch(offset_index); + self.num_nodes += 2; + + offset_index + } + + fn init(num_leaves: usize) -> HuffmanTree { + if num_leaves == 0 {panic!("djeiofje")}; + + let max_nodes = 2 * num_leaves - 1; + let tree = vec![HuffmanTreeNode::Empty; max_nodes]; + let num_nodes = 1; + + HuffmanTree { + tree, + max_nodes, + num_nodes, + } + } + + fn code_lengths_to_codes(code_lengths: &Vec) -> Vec> { + + let max_code_length = *code_lengths.iter().reduce(|a, b| { + if a >= b {a} else {b} + }).unwrap(); + + if max_code_length > MAX_ALLOWED_CODE_LENGTH.try_into().unwrap() { + panic!("aaaaaa"); + } + + let mut code_length_hist = vec![0; MAX_ALLOWED_CODE_LENGTH + 1]; + + for &length in code_lengths.iter() { + code_length_hist[usize::from(length)] += 1; + } + + code_length_hist[0] = 0; + + let mut curr_code = 0; + let mut next_codes = vec![None; MAX_ALLOWED_CODE_LENGTH + 1]; + + for code_len in 1..=usize::from(max_code_length) { + curr_code = (curr_code + code_length_hist[code_len - 1]) << 1; + next_codes[code_len] = Some(curr_code); + } + + let mut huff_codes = vec![None; code_lengths.len()]; + + for symbol in 0..code_lengths.len() { + let length = usize::from(code_lengths[symbol]); + if length > 0 { + huff_codes[symbol] = next_codes[length]; + if let Some(value) = next_codes[usize::from(code_lengths[symbol])].as_mut() { + *value += 1; + } + } else { + huff_codes[symbol] = None; + } + } + + huff_codes + } + + fn add_symbol(&mut self, symbol: u16, code: u16, code_length: u16) { + let mut node_index = 0; + let code = usize::from(code); + + let mut length = code_length; + + while length > 0 { + length -= 1; + if node_index >= self.max_nodes { + panic!("jdeiofhe"); + } + + let node = self.tree[node_index]; + + let offset = match node { + HuffmanTreeNode::Empty => { + if self.is_full() { + panic!("{:?}, {:b}, tree full", self, code_length); + } + self.assign_children(node_index) + } + HuffmanTreeNode::Leaf(_) => panic!("leaf occupied"), + HuffmanTreeNode::Branch(offset) => offset, + }; + + node_index += offset + ((code >> length) & 1); + } + + match self.tree[node_index] { + HuffmanTreeNode::Empty => self.tree[node_index] = HuffmanTreeNode::Leaf(symbol), + HuffmanTreeNode::Leaf(_) => panic!("Can't assign"), + HuffmanTreeNode::Branch(_offset) => panic!("{:?}, {:#b}: overriding branch??", self, code_length), + } + } + + pub(crate) fn build_implicit(code_lengths: Vec) -> HuffmanTree { + let mut num_symbols = 0; + let mut root_symbol = 0; + + for symbol in 0..code_lengths.len() { + if code_lengths[symbol] > 0 { + num_symbols += 1; + root_symbol = symbol.try_into().unwrap(); + } + } + + let mut tree = HuffmanTree::init(num_symbols); + + if num_symbols == 1 { + tree.add_symbol(root_symbol, 0, 0); + } else { + + let codes = HuffmanTree::code_lengths_to_codes(&code_lengths); + + for (symbol, &length) in code_lengths.iter().enumerate() { + if length > 0 && codes[symbol].is_some() { + if num_symbols == 2 && length == 3 { + println!("{:?}, {}, {:?}, {:?}", code_lengths, symbol, codes, code_lengths); + } + tree.add_symbol(symbol.try_into().unwrap(), codes[symbol].unwrap(), length); + } + } + } + + tree + } + + pub(crate) fn build_explicit(code_lengths: Vec, codes: Vec, symbols: Vec) -> HuffmanTree { + let mut tree = HuffmanTree::init(symbols.len()); + + for i in 0..symbols.len() { + if codes[i] >= 0 { + tree.add_symbol(symbols[i], codes[i], code_lengths[i]); + } + } + + tree + } + + pub(crate) fn read_symbol(&self, bit_reader: &mut BitReader) -> u16 { + let mut index = 0; + let mut node = self.tree[index]; + + while let HuffmanTreeNode::Branch(children_offset) = node { + index += children_offset + bit_reader.read_bits::(1); + node = self.tree[index]; + } + + match node { + HuffmanTreeNode::Branch(_) => unreachable!(), + HuffmanTreeNode::Empty => panic!("djiwod"), + HuffmanTreeNode::Leaf(symbol) => symbol, + } + } +} + + + + + diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 2b897bc8b4..7df5b7c00b 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -3,14 +3,16 @@ //! [Lossless spec](https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification#522_decoding_entropy-coded_image_data) -use std::{error, fmt, io::Read, ops::{AddAssign, Shl}}; +use std::{convert::TryInto, convert::TryFrom, error, fmt, io::Read, ops::{AddAssign, Shl}}; use byteorder::{LittleEndian, ReadBytesExt}; -use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; +use crate::{ImageError, ImageFormat, ImageResult, codecs::webp::lossless_transform::TransformType, error::DecodingError}; + +use super::huffman::HuffmanTree; const CODE_LENGTH_CODES: usize = 19; -const CODE_LENGTH_CODE_ORDER: [usize; 19] = [ +const CODE_LENGTH_CODE_ORDER: [usize; CODE_LENGTH_CODES] = [ 17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ]; @@ -38,31 +40,32 @@ const BLUE: usize = 2; const ALPHA: usize = 3; const DIST: usize = 4; -#[derive(Debug, Clone, Copy, Default)] -struct HuffmanCode { - bits: u8, - value: u16, -} +const HUFFMAN_CODES_PER_META_CODE: usize = 5; -#[derive(Debug, Clone, Default)] -struct HuffmanTreeGroup { - huffman_trees: Vec<[HuffmanCode; 5]>, -} +type HuffmanCodeGroup = [HuffmanTree; HUFFMAN_CODES_PER_META_CODE]; + +const ALPHABET_SIZE: [u16; HUFFMAN_CODES_PER_META_CODE] = [ + 256 + 24, + 256, 256, 256, + 40 +]; #[inline] -pub(crate) fn DIV_ROUND_UP(num: u16, den: u16) -> u16 { +pub(crate) fn div_round_up(num: u16, den: u16) -> u16 { (num + den - 1) / den } #[derive(Debug, Clone, Copy)] -enum DecoderError { +pub(crate) enum DecoderError { /// Signature of 0x2f not found LosslessSignatureInvalid(u8), /// Version Number must be 0 VersionNumberInvalid(u8), /// - InvalidColorCacheBits(u8) + InvalidColorCacheBits(u8), + + HuffmanError, } impl fmt::Display for DecoderError { @@ -73,7 +76,9 @@ impl fmt::Display for DecoderError { DecoderError::VersionNumberInvalid(num) => f.write_fmt(format_args!("Invalid version number: {}", num)), DecoderError::InvalidColorCacheBits(num) => - f.write_fmt(format_args!("Invalid color cache(must be between 1-11): {}", num)) + f.write_fmt(format_args!("Invalid color cache(must be between 1-11): {}", num)), + DecoderError::HuffmanError => + f.write_fmt(format_args!("huffman error")), } } } @@ -86,13 +91,7 @@ impl From for ImageError { impl error::Error for DecoderError {} -#[derive(Debug, Clone, Copy)] -enum TransformType { - PredictorTransform(u8), - ColorTransform(u8), - SubtractGreen, - ColorIndexingTransform(u8), -} +const NUM_TRANSFORM_TYPES: usize = 4; //Decodes lossless WebP images #[derive(Debug)] @@ -100,7 +99,8 @@ pub(crate) struct LosslessDecoder { r: R, bit_reader: BitReader, frame: LosslessFrame, - transforms: Vec, + transforms: [Option; NUM_TRANSFORM_TYPES], + transform_order: Vec, } impl LosslessDecoder { @@ -111,7 +111,8 @@ impl LosslessDecoder { r, bit_reader: BitReader::new(), frame: Default::default(), - transforms: Vec::new(), + transforms: [None, None, None, None], + transform_order: Vec::new(), } } @@ -143,38 +144,65 @@ impl LosslessDecoder { return Err(DecoderError::VersionNumberInvalid(version_num).into()); } - self.decode_image_stream(self.frame.width, self.frame.height, true)?; + println!("width: {}, height: {}", self.frame.width, self.frame.height); + + let mut data = self.decode_image_stream(self.frame.width, self.frame.height, true)?; + + for &trans_index in self.transform_order.iter().rev() { + let trans = self.transforms[usize::from(trans_index)].as_ref().unwrap(); + println!("applying transform: {:?}", trans_index); + trans.apply_transform(&mut data, self.frame.width, self.frame.height); + } + + self.frame.buf = data; Ok(()) } - fn decode_image_stream(&mut self, xsize: u16, ysize: u16, base: bool) -> ImageResult> { - - let trans_xsize = xsize; - let trans_ysize = ysize; + pub(crate) fn fill_rgba(&self, buf: &mut [u8]) { + for (index, &argb_val) in self.frame.buf.iter().enumerate() { + buf[index * 4] = ((argb_val >> 16) & 0xff).try_into().unwrap(); + buf[index * 4 + 1] = ((argb_val >> 8) & 0xff).try_into().unwrap(); + buf[index * 4 + 2] = (argb_val & 0xff).try_into().unwrap(); + buf[index * 4 + 3] = ((argb_val >> 24) & 0xff).try_into().unwrap(); + } + } - if base { + pub(crate) fn get_buf_size(&self) -> usize { + usize::from(self.frame.width) * usize::from(self.frame.height) * 4 + } + + /// Reads Image data from the bitstream + /// Can be in any of the 5 roles described in the Specification + /// ARGB Image role has different behaviour to the other 4 + /// xsize and ysize describe the size of the blocks where each block has its own entropy code + fn decode_image_stream(&mut self, xsize: u16, ysize: u16, is_argb_img: bool) -> ImageResult> { + + if is_argb_img { self.read_transforms()?; } - let color_cache = self.read_color_cache()?; - - self.read_huffman_codes(true, xsize, ysize)?; + let color_cache_bits = self.read_color_cache()?; - let color_cache_size = match color_cache { - Some(color_cache_bits) => { - 1 << color_cache_bits + let color_cache = color_cache_bits.map(|bits| { + let size = 1 << bits; + let cache = vec![0u32; size]; + ColorCache { + color_cache_bits: bits, + color_cache: cache, } - None => 0, - }; + }); - if base { - return Ok(vec![]); - } + println!("color_cache_bits: {:?}", color_cache_bits); - //decode LZ77 encoded data - let mut data = vec![0; (trans_xsize * trans_ysize).into()]; + let huffman_info = self.read_huffman_codes(is_argb_img, xsize, ysize, color_cache)?; + + /* println!("huffman tree:\n"); + for i in 0..huffman_info.huffman_code_groups[0][0].num_nodes { + print!("{:?}, ", huffman_info.huffman_code_groups[0][0].tree[i]); + } */ - self.decode_image_data(trans_xsize, trans_ysize, &mut data); + //decode data + let data = self.decode_image_data(xsize, ysize, huffman_info)?; Ok(data) } @@ -182,21 +210,42 @@ impl LosslessDecoder { fn read_transforms(&mut self) -> ImageResult<()> { while self.bit_reader.read_bits::(1) == 1 { let transform_type_val = self.bit_reader.read_bits::(2); + + println!("Transform: {}", transform_type_val); + + if self.transforms[usize::from(transform_type_val)].is_some() { + //can only have one of each transform, error + panic!(":<("); + } + + self.transform_order.push(transform_type_val); let transform_type = match transform_type_val { 0 => { //predictor let size_bits = self.bit_reader.read_bits::(3) + 2; + let block_size = 1u16 << size_bits; - TransformType::PredictorTransform(size_bits) + let block_xsize = div_round_up(self.frame.width, block_size); + let block_ysize = div_round_up(self.frame.height, block_size); + + let data = self.decode_image_stream(block_xsize, block_ysize, false)?; + + TransformType::PredictorTransform { size_bits, predictor_data: data } } 1 => { //color transform let size_bits = self.bit_reader.read_bits::(3) + 2; + let block_size = 1u16 << size_bits; + + let block_xsize = div_round_up(self.frame.width, block_size); + let block_ysize = div_round_up(self.frame.height, block_size); + + let data = self.decode_image_stream(block_xsize, block_ysize, false)?; - TransformType::ColorTransform(size_bits) + TransformType::ColorTransform { size_bits, transform_data: data } } 2 => { //subtract green @@ -204,17 +253,21 @@ impl LosslessDecoder { TransformType::SubtractGreen } 3 => { - let color_table_size = self.bit_reader.read_bits::(8) + 1; + let color_table_size = self.bit_reader.read_bits::(8) + 1; - TransformType::ColorIndexingTransform(color_table_size) + let data = self.decode_image_stream(color_table_size, 1, false)?; + + TransformType::ColorIndexingTransform { table_size: color_table_size, table_data: data } } _ => unreachable!(), }; - //self.transform = Some(transform_type); + self.transforms[usize::from(transform_type_val)] = Some(transform_type); } + println!("finished transforms"); + Ok(()) } @@ -222,82 +275,295 @@ impl LosslessDecoder { &mut self, read_meta: bool, xsize: u16, - ysize: u16) -> ImageResult { + ysize: u16, + color_cache: Option) -> ImageResult { let mut num_huff_groups = 1; + + let mut huffman_bits = 0; + let mut huffman_xsize = 1; + let mut huffman_ysize = 1; + let mut entropy_image = Vec::new(); if read_meta && self.bit_reader.read_bits::(1) == 1 { //meta huffman codes - let huffman_bits = self.bit_reader.read_bits::(3) + 2; - let huffman_xsize = DIV_ROUND_UP(xsize, 1 << huffman_bits); - let huffman_ysize = DIV_ROUND_UP(ysize, 1 << huffman_bits); + huffman_bits = self.bit_reader.read_bits::(3) + 2; + huffman_xsize = div_round_up(xsize, 1 << huffman_bits); + huffman_ysize = div_round_up(ysize, 1 << huffman_bits); let huffman_pixels = usize::from(huffman_xsize * huffman_ysize); - let entropy_image = self.decode_image_stream(huffman_xsize, huffman_ysize, false)?; - + + entropy_image = self.decode_image_stream(huffman_xsize, huffman_ysize, false)?; + //println!("{:#?}", entropy_image); + println!("huffman_bits: {}, huffman_xsize: {}, huffman_ysize: {}", huffman_bits, huffman_xsize, huffman_ysize); + for i in 0..huffman_pixels { let meta_huff_code = (entropy_image[i] >> 8) & 0xffff; + entropy_image[i] = meta_huff_code; + if meta_huff_code >= num_huff_groups { num_huff_groups = meta_huff_code + 1; } } + + println!("num_huff_groups: {}", num_huff_groups); + + //println!("huffman_bits: {}, entropy_image: {:?}, num_huff_groups: {:?}", huffman_bits, entropy_image, num_huff_groups); } - let tree_group = HuffmanTreeGroup { - huffman_trees: Vec::with_capacity(num_huff_groups as usize) - }; + let mut hufftree_groups = Vec::new(); - for i in 0..num_huff_groups { - - for j in 0..5 { - tree_group.huffman_trees[j] + for _i in 0..num_huff_groups { + let mut group: HuffmanCodeGroup = Default::default(); + for j in 0..HUFFMAN_CODES_PER_META_CODE { + let mut alphabet_size = ALPHABET_SIZE[j]; + if j == 0 { + if let Some(color_cache) = color_cache.as_ref() { + alphabet_size += 1 << color_cache.color_cache_bits; + } + } + + let tree = self.read_huffman_code(alphabet_size)?; + group[j] = tree; } + hufftree_groups.push(group); } - + + let huffman_mask = if huffman_bits == 0 { + !0 + } else { + (1 << huffman_bits) - 1 + }; + let info = HuffmanInfo { + xsize: huffman_xsize, + ysize: huffman_ysize, + color_cache: color_cache, + image: entropy_image, + bits: huffman_bits, + mask: huffman_mask, + huffman_code_groups: hufftree_groups, + }; - Ok(tree_group) + Ok(info) } //decodes a single huffman code - fn read_huffman_code(&mut self) -> Vec { + fn read_huffman_code(&mut self, alphabet_size: u16) -> ImageResult { let simple = self.bit_reader.read_bits::(1) == 1; - let mut code_lengths = Vec::new(); - if simple { - let num_code_lengths = self.bit_reader.read_bits::(1) + 1; + let num_symbols = self.bit_reader.read_bits::(1) + 1; + + let mut code_lengths = vec![u16::from(num_symbols - 1)]; + let mut codes = vec![0]; + let mut symbols = Vec::new(); + let is_first_8bits = self.bit_reader.read_bits::(1); - code_lengths.push(self.bit_reader.read_bits::(1 + 7 * is_first_8bits)); - if num_code_lengths == 2 { - code_lengths.push(self.bit_reader.read_bits::(8)); + symbols.push(self.bit_reader.read_bits::(1 + 7 * is_first_8bits)); + + if num_symbols == 2 { + symbols.push(self.bit_reader.read_bits::(8)); + code_lengths.push(1); + codes.push(1); } + + Ok(HuffmanTree::build_explicit(code_lengths, codes, symbols)) } else { - code_lengths = vec![0; CODE_LENGTH_CODES]; + let mut code_length_code_lengths = vec![0; CODE_LENGTH_CODES]; + let num_code_lengths = 4 + self.bit_reader.read_bits::(4); for i in 0..num_code_lengths { - code_lengths[CODE_LENGTH_CODE_ORDER[i]] = self.bit_reader.read_bits(3); + code_length_code_lengths[CODE_LENGTH_CODE_ORDER[i]] = self.bit_reader.read_bits(3); } + + let new_code_lengths = self.read_huffman_code_lengths(code_length_code_lengths, alphabet_size); + + Ok(HuffmanTree::build_implicit(new_code_lengths)) } - - code_lengths } - fn decode_image_data(&mut self, width: u16, height: u16, data: &mut Vec) -> ImageResult<()> { - - for index in 0..data.len() { + fn read_huffman_code_lengths(&mut self, code_length_code_lengths: Vec, num_symbols: u16) -> Vec { + + let table = HuffmanTree::build_implicit(code_length_code_lengths); + + let mut max_symbol = if self.bit_reader.read_bits::(1) == 1 { + let length_nbits = 2 + 2 * self.bit_reader.read_bits::(3); + 2 + self.bit_reader.read_bits::(length_nbits) + } else { + num_symbols + }; - //let code = + let mut code_lengths = vec![0; usize::from(num_symbols)]; + let mut prev_code_len = 8; //default code length + let mut symbol = 0; + while symbol < num_symbols { + if max_symbol == 0 {break;} + max_symbol -= 1; + + let code_len = table.read_symbol(&mut self.bit_reader); + + if code_len < 16 { + code_lengths[usize::from(symbol)] = code_len; + symbol += 1; + if code_len != 0 { + prev_code_len = code_len; + } + } else { + let use_prev = code_len == 16; + let slot = code_len - 16; + let extra_bits = match slot { + 0 => 2, + 1 => 3, + 2 => 7, + _ => panic!("djiowd"), + }; + let repeat_offset = match slot { + 0 | 1 => 3, + 2 => 11, + _ => panic!("diode"), + }; + + let mut repeat = self.bit_reader.read_bits::(extra_bits) + repeat_offset; + + if symbol + repeat > num_symbols { + panic!("aaaaa"); + } else { + let length = if use_prev { + prev_code_len + } else { + 0 + }; + while repeat > 0 { + repeat -= 1; + code_lengths[usize::from(symbol)] = length; + symbol += 1; + } + } + } } - Ok(()) + code_lengths } - fn read_blocks(&mut self) -> ImageResult<()> { + fn decode_image_data(&mut self, width: u16, height: u16, mut huffman_info: HuffmanInfo) -> ImageResult> { + let num_values = usize::from(width) * usize::from(height); + let mut data = vec![0; num_values]; - Ok(()) + println!("Decoding image data: {}x{}", width, height); + println!("huffman mask: {}", huffman_info.mask); + println!("huffman bits: {}", huffman_info.bits); + + /* if huffman_info.image.len() > 0 { + for y in 0..38 { + for x in 0..50 { + print!("{}, ", huffman_info.image[y * 50 + x]); + } + println!(""); + } + } */ + + let index = huffman_info.get_huff_index(0, 0); + let mut tree = &huffman_info.huffman_code_groups[index]; + let mut last_cached = 0; + let mut index = 0; + let mut x = 0; + let mut y = 0; + while index < num_values { + if index == 3536 { + //println!("{}, {}, {}", x & huffman_info.mask, x, y); + } + if (x & huffman_info.mask) == 0 { + let index = huffman_info.get_huff_index(x, y); + tree = &huffman_info.huffman_code_groups[index]; + } + + let code = tree[GREEN].read_symbol(&mut self.bit_reader); + + //println!("index: {}, code: {}", index, code); + + if code < 256 { + let red = tree[RED].read_symbol(&mut self.bit_reader); + let blue = tree[BLUE].read_symbol(&mut self.bit_reader); + let alpha = tree[ALPHA].read_symbol(&mut self.bit_reader); + + data[index] = (u32::from(alpha) << 24) + (u32::from(red) << 16) + (u32::from(code) << 8) + u32::from(blue); + + //println!("huffman: {}", data[index]); + + index += 1; + x += 1; + if x >= width { + x = 0; + y += 1; + } + } else if code < 256 + 24 { + let length_symbol = code - 256; + let length = usize::from(Self::get_copy_distance(&mut self.bit_reader, length_symbol)); + + let dist_symbol = tree[DIST].read_symbol(&mut self.bit_reader); + let dist_code = Self::get_copy_distance(&mut self.bit_reader, dist_symbol); + let dist = Self::plane_code_to_distance(width, dist_code); + + if index < dist || num_values - index < length { + panic!("{}, {}, {}, {:?}", index, dist, length, tree[DIST]); + } + + println!("length_symbol: {}, length: {}, dist_symbol: {}, dist_code: {}, dist: {}", length_symbol, length, dist_symbol, dist_code, dist); + + /* let help = if index == 753 && code == 273 { + println!("dist_symbol: {}, dist: {}, length: {}", dist_symbol, dist, length); + println!("length_symbol: {}, dist_code: {}", length_symbol, dist_code); + true + } else { + false + }; */ + + for i in 0..length { + data[index + i] = data[index + i - dist]; + } + index += length; + x += u16::try_from(length).unwrap(); + while x >= width { + x -= width; + y += 1; + } + if index < num_values { + let index = huffman_info.get_huff_index(x, y); + tree = &huffman_info.huffman_code_groups[index]; + } + /* if help { + println!("new index: {}, x: {}, y: {}", index, x, y); + } */ + } else { + let key = code - 256 - 24; + + //println!("key: {}", key); + + if let Some(color_cache) = huffman_info.color_cache.as_mut() { + //cache old colors + while last_cached < index { + color_cache.insert(data[last_cached]); + last_cached += 1; + } + data[index] = color_cache.lookup(key.into()); + //println!("cached: {}", data[index]); + + } else { + panic!(":<("); + } + index += 1; + x += 1; + if x >= width { + x = 0; + y += 1; + } + } + } + + Ok(data) } fn read_color_cache(&mut self) -> ImageResult> { @@ -314,21 +580,70 @@ impl LosslessDecoder { } } - fn entropy_coded_image(&mut self) -> ImageResult<()> { - //let size = self.color_cache_size()?; + fn get_copy_distance(bit_reader: &mut BitReader, prefix_code: u16) -> usize { + if prefix_code < 4 { + return usize::from(prefix_code + 1); + } + let extra_bits: u8 = ((prefix_code - 2) >> 1).try_into().unwrap(); + let offset = (2 + (usize::from(prefix_code) & 1)) << extra_bits; - /* match size { - Some(size) => { - // - let color_cache = vec![0u32; usize::from(size)]; - } - None => { + offset + bit_reader.read_bits::(extra_bits) + 1 + } + fn plane_code_to_distance(xsize: u16, plane_code: usize) -> usize { + if plane_code > 120 { + return plane_code - 120; + } else { + let (xoffset, yoffset) = DISTANCE_MAP[plane_code - 1]; + + let dist = i32::from(xoffset) + i32::from(yoffset) * i32::from(xsize); + if dist < 1 { + return 1; } - } */ + return dist.try_into().unwrap(); + } + } +} + +#[derive(Debug, Clone)] +struct HuffmanInfo { + xsize: u16, + ysize: u16, + color_cache: Option, + image: Vec, + bits: u8, + mask: u16, + huffman_code_groups: Vec, +} + +impl HuffmanInfo { + fn get_huff_index(&self, x: u16, y: u16) -> usize { + if self.bits == 0 { + return 0; + } + let position = usize::from((y >> self.bits) * self.xsize + (x >> self.bits)); + let meta_huff_code: usize = self.image[position].try_into().unwrap(); + meta_huff_code + } +} + +#[derive(Debug, Clone)] +struct ColorCache { + color_cache_bits: u8, + color_cache: Vec, +} +impl ColorCache { + fn insert(&mut self, color: u32) -> ImageResult<()> { + let index = (0x1e35a7bdu32.overflowing_mul(color).0) >> (32 - self.color_cache_bits); + self.color_cache[index as usize] = color; + //println!("argb: {} -> key: {}", color, index); Ok(()) } + + fn lookup(&self, index: usize) -> u32 { + self.color_cache[index] + } } #[derive(Debug, Clone)] @@ -379,7 +694,7 @@ struct LosslessFrame { width: u16, height: u16, - buf: Vec, + buf: Vec, } #[cfg(test)] diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs new file mode 100644 index 0000000000..c77c5ee151 --- /dev/null +++ b/src/codecs/webp/lossless_transform.rs @@ -0,0 +1,408 @@ +use std::convert::TryInto; +use std::convert::TryFrom; + +use super::lossless::div_round_up; + + +#[derive(Debug, Clone)] +pub(crate) enum TransformType { + PredictorTransform { size_bits: u8, predictor_data: Vec }, + ColorTransform {size_bits: u8, transform_data: Vec }, + SubtractGreen, + ColorIndexingTransform { table_size: u16, table_data: Vec }, +} + +impl TransformType { + pub(crate) fn apply_transform(&self, image_data: &mut Vec, width: u16, height: u16) { + match self { + TransformType::PredictorTransform { size_bits, predictor_data} => { + + /* print!("[\n"); + for y in 0..usize::from(height) { + print!("\t"); + for x in 0..usize::from(width) { + print!("{}, ", image_data[y * usize::from(width) + x]); + } + print!("\n"); + } + print!("]\n"); */ + + let block_xsize = usize::from(div_round_up(width, 1 << size_bits)); + let width = usize::from(width); + let height = usize::from(height); + + //handle top and left borders specially + //this involves ignoring mode and just setting prediction values like this + image_data[0] = add_pixels(image_data[0], 0xff000000); + + for x in 1..width { + image_data[x] = add_pixels(image_data[x], get_left(image_data, x, 0, width)); + } + + for y in 1..height { + image_data[y * width] = add_pixels(image_data[y * width], get_top(image_data, 0, y, width)); + } + + for y in 1..height { + for x in 1..width { + let block_index = (y >> size_bits) * block_xsize + (x >> size_bits); + + let index = y * width + x; + + //print!("{} -> ", image_data[index]); + + let green = (predictor_data[block_index] >> 8) & 0xff; + + //println!("x: {}, y: {}, code: {}", x, y, green); + + /* if image_data[index] == 1459552517 { + println!("x: {}, y: {}, code: {}", x, y, green); + println!("left: {}, top: {}, top_left: {}", get_left(image_data, x, y, width), get_top(image_data, x, y, width), get_top_left(image_data, x, y, width)); + } */ + + match green { + 0 => image_data[index] = add_pixels(image_data[index], 0xff000000), + 1 => image_data[index] = add_pixels(image_data[index], get_left(image_data, x, y, width)), + 2 => image_data[index] = add_pixels(image_data[index], get_top(image_data, x, y, width)), + 3 => image_data[index] = add_pixels(image_data[index], get_top_right(image_data, x, y, width)), + 4 => image_data[index] = add_pixels(image_data[index], get_top_left(image_data, x, y, width)), + 5 => image_data[index] = add_pixels(image_data[index], { + let first = average2(get_left(image_data, x, y, width), get_top_right(image_data, x, y, width)); + average2(first, get_top(image_data, x, y, width)) + }), + 6 => image_data[index] = add_pixels(image_data[index], average2(get_left(image_data, x, y, width), get_top_left(image_data, x, y, width))), + 7 => image_data[index] = add_pixels(image_data[index], average2(get_left(image_data, x, y, width), get_top(image_data, x, y, width))), + 8 => image_data[index] = add_pixels(image_data[index], average2(get_top_left(image_data, x, y, width), get_top(image_data, x, y, width))), + 9 => image_data[index] = add_pixels(image_data[index], average2(get_top(image_data, x, y, width), get_top_right(image_data, x, y, width))), + 10 => image_data[index] = add_pixels(image_data[index], { + let first = average2(get_left(image_data, x, y, width), get_top_left(image_data, x, y, width)); + let second = average2(get_top(image_data, x, y, width), get_top_right(image_data, x, y, width)); + average2(first, second) + }), + 11 => image_data[index] = add_pixels(image_data[index], select(get_left(image_data, x, y, width), get_top(image_data, x, y, width), get_top_left(image_data, x, y, width))), + 12 => image_data[index] = add_pixels(image_data[index], clamp_add_subtract_full(get_left(image_data, x, y, width), get_top(image_data, x, y, width), get_top_left(image_data, x, y, width))), + 13 => image_data[index] = add_pixels(image_data[index], { + let first = average2(get_left(image_data, x, y, width), get_top(image_data, x, y, width)); + clamp_add_subtract_half(first, get_top_left(image_data, x, y, width)) + }), + _ => {println!("INVALIDA PREDICTOR???? {}", predictor_data[block_index])}, + } + + //println!("{}", image_data[index]); + //println!("x: {}, y: {}, value: {}, code: {}", x, y, image_data[index], green); + } + //println!(); + } + }, + TransformType::ColorTransform { size_bits, transform_data } => { + let block_xsize = usize::from(div_round_up(width, 1 << size_bits)); + let width = usize::from(width); + let height = usize::from(height); + + for y in 0..height { + for x in 0..width { + let block_index = (y >> size_bits) * block_xsize + (x >> size_bits); + + let index = y * width + x; + + let multiplier = ColorTransformElement::from_color_code(transform_data[block_index]); + + image_data[index] = transform_color(&multiplier, image_data[index]); + //println!("{}", image_data[index]); + } + } + /* let mask = (1 << size_bits) - 1; + let block_xsize = div_round_up(width, 1 << size_bits); + let tiles_per_row = usize::from(div_round_up(block_xsize, 1 << size_bits)); + let block_xsize = usize::from(block_xsize); + + let width = usize::from(width); + + + + let mut trans_row = 0; + + for y in 0..usize::from(height) { + + let mut transform_index = trans_row; + + let mut multiplier = ColorTransformElement { + green_to_red: 0, + green_to_blue: 0, + red_to_blue: 0 + }; + + for x in 0..width { + if (x & mask) == 0 { + multiplier = ColorTransformElement::from_color_code(transform_data[transform_index]); + transform_index += 1; + } + image_data[y * width + x] = transform_color(&multiplier, image_data[y * width + x]); + } + + if ((y + 1) & mask) == 0 { + trans_row += tiles_per_row; + } + + /* let mut transform_index = (y >> size_bits) * tiles_per_row; + let mut data_index = y * width; + let mut x = 0; + + while x < width { + + + for x in 0..block_xsize { + if (x & mask) == 0 { + multiplier = ColorTransformElement::from_color_code(transform_data[transform_index]); + transform_index += 1; + } + image_data[data_index] = transform_color(&multiplier, image_data[data_index]); + } + data_index += block_xsize; + x += 1; + + if (y & mask) == 0 { + transform_index += tiles_per_row; + } + } */ + } */ + }, + TransformType::SubtractGreen => { + let width = usize::from(width); + for y in 0..usize::from(height) { + for x in 0..width { + image_data[y * width + x] = add_green(image_data[y * width + x]); + } + } + }, + TransformType::ColorIndexingTransform { table_size, table_data } => { + + let mut new_image_data = Vec::with_capacity(usize::from(width) * usize::from(height)); + + let table_size = *table_size; + let width_bits: u8 = if table_size <= 2 { + 3 + } else if table_size <= 4 { + 2 + } else if table_size <= 16 { + 1 + } else { + 0 + }; + + let bits_per_pixel = 8 >> width_bits; + let mask = (1 << bits_per_pixel) - 1; + + let mut src = 0; + let width = usize::from(width); + + let pixels_per_byte = 1 << width_bits; + let count_mask = pixels_per_byte - 1; + let mut packed_pixels = 0; + + for y in 0..usize::from(height) { + for x in 0..width { + if (x & count_mask) == 0 { + packed_pixels = (image_data[src] >> 8) & 0xff; + src += 1; + } + + let pixels: usize = (packed_pixels & mask).try_into().unwrap(); + + let new_val = if pixels >= table_size.into() { + 0x00000000 + } else { + table_data[pixels] + }; + + new_image_data.push(new_val); + + packed_pixels >>= bits_per_pixel; + } + } + + *image_data = new_image_data; + }, + } + } +} + +fn add_pixels(a: u32, b: u32) -> u32 { + let new_alpha = ((a >> 24) + (b >> 24)) & 0xff; + let new_red = (((a >> 16) & 0xff) + ((b >> 16) & 0xff)) & 0xff; + let new_green = (((a >> 8) & 0xff) + ((b >> 8) & 0xff)) & 0xff; + let new_blue = ((a & 0xff) + (b & 0xff)) & 0xff; + + let out = (new_alpha << 24) + (new_red << 16) + (new_green << 8) + new_blue; + //println!("in: a: {}, b: {}; out: a: {}", a, b, out); + out +} + +fn get_left(data: &Vec, x: usize, y: usize, width: usize) -> u32 { + data[y * width + x - 1] +} + +fn get_top(data: &Vec, x: usize, y: usize, width: usize) -> u32 { + data[(y - 1) * width + x] +} + +fn get_top_right(data: &Vec, x: usize, y: usize, width: usize) -> u32 { + // if x == width - 1 this gets the left most pixel of the current row + // as described in the specification + data[(y - 1) * width + x + 1] +} + +fn get_top_left(data: &Vec, x: usize, y: usize, width: usize) -> u32 { + data[(y - 1) * width + x - 1] +} + +fn average2(a: u32, b: u32) -> u32 { + let mut avg = 0u32; + for i in 0..4 { + let sub_a: u8 = ((a >> (i * 8)) & 0xff).try_into().unwrap(); + let sub_b: u8 = ((b >> (i * 8)) & 0xff).try_into().unwrap(); + avg |= u32::from(sub_average2(sub_a, sub_b)) << (i * 8); + } + avg +} + +fn sub_average2(a: u8, b: u8) -> u8 { + ((u16::from(a) + u16::from(b)) / 2).try_into().unwrap() +} + +fn get_byte(val: u32, byte: u8) -> u8 { + ((val >> (byte * 8)) & 0xff).try_into().unwrap() +} + +fn get_byte_i32(val: u32, byte: u8) -> i32 { + i32::from(get_byte(val, byte)) +} + +fn select(left: u32, top: u32, top_left: u32) -> u32 { + let predict_alpha = get_byte_i32(left, 3) + get_byte_i32(top, 3) - get_byte_i32(top_left, 3); + let predict_red = get_byte_i32(left, 2) + get_byte_i32(top, 2) - get_byte_i32(top_left, 2); + let predict_green = get_byte_i32(left, 1) + get_byte_i32(top, 1) - get_byte_i32(top_left, 1); + let predict_blue = get_byte_i32(left, 0) + get_byte_i32(top, 0) - get_byte_i32(top_left, 0); + + let predict_left = i32::abs(predict_alpha - get_byte_i32(left, 3)) + i32::abs(predict_red - get_byte_i32(left, 2)) + + i32::abs(predict_green - get_byte_i32(left, 1)) + i32::abs(predict_blue - get_byte_i32(left, 0)); + let predict_top = i32::abs(predict_alpha - get_byte_i32(top, 3)) + i32::abs(predict_red - get_byte_i32(top, 2)) + + i32::abs(predict_green - get_byte_i32(top, 1)) + i32::abs(predict_blue - get_byte_i32(top, 0)); + + if predict_left < predict_top { + return left; + } else { + return top; + } +} + +fn clamp(a: i32) -> i32 { + if a < 0 { + return 0; + } else { + if a > 255 { + return 255; + } else { + return a; + } + } +} + +fn clamp_add_subtract_full_sub(a: i32, b: i32, c: i32) -> i32 { + clamp(a + b - c) +} + +fn clamp_add_subtract_half_sub(a: i32, b: i32) -> i32 { + clamp(a + (a - b) / 2) +} + +fn clamp_add_subtract_full(a: u32, b: u32, c: u32) -> u32 { + let mut value: u32 = 0; + for i in 0..4u8 { + let sub_a: i32 = ((a >> (i * 8)) & 0xff).try_into().unwrap(); + let sub_b: i32 = ((b >> (i * 8)) & 0xff).try_into().unwrap(); + let sub_c: i32 = ((c >> (i * 8)) & 0xff).try_into().unwrap(); + value |= u32::try_from(clamp_add_subtract_full_sub(sub_a, sub_b, sub_c)).unwrap() << (i * 8); + } + //println!("a: {}, b: {}, c: {}, out: {}", a, b, c, value); + value +} + +fn clamp_add_subtract_half(a: u32, b: u32) -> u32 { + let mut value = 0; + for i in 0..4u8 { + let sub_a: i32 = ((a >> (i * 8)) & 0xff).try_into().unwrap(); + let sub_b: i32 = ((b >> (i * 8)) & 0xff).try_into().unwrap(); + value |= u32::try_from(clamp_add_subtract_half_sub(sub_a, sub_b)).unwrap() << (i * 8); + } + + value +} + +//color transform + +#[derive(Debug, Clone, Copy)] +struct ColorTransformElement { + green_to_red: u8, + green_to_blue: u8, + red_to_blue: u8, +} + +impl ColorTransformElement { + fn from_color_code(color_code: u32) -> ColorTransformElement { + ColorTransformElement { + green_to_red: (color_code & 0xff).try_into().unwrap(), + green_to_blue: ((color_code >> 8) & 0xff).try_into().unwrap(), + red_to_blue: ((color_code >> 16) & 0xff).try_into().unwrap(), + } + } +} + +fn color_transform(red: u8, blue: u8, green: u8, trans: &ColorTransformElement) -> (u8, u8) { + let mut temp_red = u32::from(red); + let mut temp_blue = u32::from(blue); + + //as does the conversion from u8 to signed two's complement i8 as required + temp_red += color_transform_delta(trans.green_to_red as i8, green as i8); + temp_blue += color_transform_delta(trans.green_to_blue as i8, green as i8); + temp_blue += color_transform_delta(trans.red_to_blue as i8, temp_red as i8); + + ((temp_red & 0xff).try_into().unwrap(), (temp_blue & 0xff).try_into().unwrap()) +} + +fn color_transform_delta(t: i8, c: i8) -> u32 { + ((i16::from(t) * i16::from(c)) as u32) >> 5 +} + +//inverse +fn transform_color(multiplier: &ColorTransformElement, color_value: u32) -> u32 { + let alpha = get_byte(color_value, 3); + let red = get_byte(color_value, 2); + let green = get_byte(color_value, 1); + let blue = get_byte(color_value, 0); + + let (new_red, new_blue) = color_transform(red, blue, green, multiplier); + + let new_value = (u32::from(alpha) << 24) + (u32::from(new_red) << 16) + (u32::from(green) << 8) + u32::from(new_blue); + //println!("multiplier: {:?}, in: {}, out: {}", multiplier, color_value, new_value); + new_value +} + +//subtract green + +fn add_green(argb: u32) -> u32 { + let red = (argb >> 16) & 0xff; + let green = (argb >> 8) & 0xff; + let blue = argb & 0xff; + + let new_red = (red + green) & 0xff; + let new_blue = (blue + green) & 0xff; + + let new_argb = (argb & 0xff00ff00) | (new_red << 16) | (new_blue); + + //println!("in: {}, out: {}", argb, new_argb); + + new_argb +} + +// \ No newline at end of file diff --git a/src/codecs/webp/mod.rs b/src/codecs/webp/mod.rs index 18cda0e9b8..4fed534e17 100644 --- a/src/codecs/webp/mod.rs +++ b/src/codecs/webp/mod.rs @@ -4,6 +4,9 @@ pub use self::decoder::WebPDecoder; mod decoder; mod transform; + mod lossless; +mod lossless_transform; +mod huffman; pub mod vp8; From 75f6b9aa55ac8498d25b940d540c45a92f2e13d1 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Wed, 24 Nov 2021 20:46:54 +1300 Subject: [PATCH 06/19] Removed old commented code and some println. --- src/codecs/webp/huffman.rs | 3 -- src/codecs/webp/lossless.rs | 61 +--------------------- src/codecs/webp/lossless_transform.rs | 73 --------------------------- 3 files changed, 1 insertion(+), 136 deletions(-) diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs index 544eda6a17..0e826ed31e 100644 --- a/src/codecs/webp/huffman.rs +++ b/src/codecs/webp/huffman.rs @@ -149,9 +149,6 @@ impl HuffmanTree { for (symbol, &length) in code_lengths.iter().enumerate() { if length > 0 && codes[symbol].is_some() { - if num_symbols == 2 && length == 3 { - println!("{:?}, {}, {:?}, {:?}", code_lengths, symbol, codes, code_lengths); - } tree.add_symbol(symbol.try_into().unwrap(), codes[symbol].unwrap(), length); } } diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 7df5b7c00b..7409702ad1 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -144,13 +144,10 @@ impl LosslessDecoder { return Err(DecoderError::VersionNumberInvalid(version_num).into()); } - println!("width: {}, height: {}", self.frame.width, self.frame.height); - let mut data = self.decode_image_stream(self.frame.width, self.frame.height, true)?; for &trans_index in self.transform_order.iter().rev() { let trans = self.transforms[usize::from(trans_index)].as_ref().unwrap(); - println!("applying transform: {:?}", trans_index); trans.apply_transform(&mut data, self.frame.width, self.frame.height); } @@ -192,15 +189,8 @@ impl LosslessDecoder { } }); - println!("color_cache_bits: {:?}", color_cache_bits); - let huffman_info = self.read_huffman_codes(is_argb_img, xsize, ysize, color_cache)?; - /* println!("huffman tree:\n"); - for i in 0..huffman_info.huffman_code_groups[0][0].num_nodes { - print!("{:?}, ", huffman_info.huffman_code_groups[0][0].tree[i]); - } */ - //decode data let data = self.decode_image_data(xsize, ysize, huffman_info)?; @@ -211,8 +201,6 @@ impl LosslessDecoder { while self.bit_reader.read_bits::(1) == 1 { let transform_type_val = self.bit_reader.read_bits::(2); - println!("Transform: {}", transform_type_val); - if self.transforms[usize::from(transform_type_val)].is_some() { //can only have one of each transform, error panic!(":<("); @@ -266,8 +254,6 @@ impl LosslessDecoder { self.transforms[usize::from(transform_type_val)] = Some(transform_type); } - println!("finished transforms"); - Ok(()) } @@ -293,9 +279,6 @@ impl LosslessDecoder { let huffman_pixels = usize::from(huffman_xsize * huffman_ysize); entropy_image = self.decode_image_stream(huffman_xsize, huffman_ysize, false)?; - - //println!("{:#?}", entropy_image); - println!("huffman_bits: {}, huffman_xsize: {}, huffman_ysize: {}", huffman_bits, huffman_xsize, huffman_ysize); for i in 0..huffman_pixels { let meta_huff_code = (entropy_image[i] >> 8) & 0xffff; @@ -306,10 +289,6 @@ impl LosslessDecoder { num_huff_groups = meta_huff_code + 1; } } - - println!("num_huff_groups: {}", num_huff_groups); - - //println!("huffman_bits: {}, entropy_image: {:?}, num_huff_groups: {:?}", huffman_bits, entropy_image, num_huff_groups); } let mut hufftree_groups = Vec::new(); @@ -452,19 +431,6 @@ impl LosslessDecoder { let num_values = usize::from(width) * usize::from(height); let mut data = vec![0; num_values]; - println!("Decoding image data: {}x{}", width, height); - println!("huffman mask: {}", huffman_info.mask); - println!("huffman bits: {}", huffman_info.bits); - - /* if huffman_info.image.len() > 0 { - for y in 0..38 { - for x in 0..50 { - print!("{}, ", huffman_info.image[y * 50 + x]); - } - println!(""); - } - } */ - let index = huffman_info.get_huff_index(0, 0); let mut tree = &huffman_info.huffman_code_groups[index]; let mut last_cached = 0; @@ -472,9 +438,6 @@ impl LosslessDecoder { let mut x = 0; let mut y = 0; while index < num_values { - if index == 3536 { - //println!("{}, {}, {}", x & huffman_info.mask, x, y); - } if (x & huffman_info.mask) == 0 { let index = huffman_info.get_huff_index(x, y); tree = &huffman_info.huffman_code_groups[index]; @@ -482,8 +445,6 @@ impl LosslessDecoder { let code = tree[GREEN].read_symbol(&mut self.bit_reader); - //println!("index: {}, code: {}", index, code); - if code < 256 { let red = tree[RED].read_symbol(&mut self.bit_reader); let blue = tree[BLUE].read_symbol(&mut self.bit_reader); @@ -491,8 +452,6 @@ impl LosslessDecoder { data[index] = (u32::from(alpha) << 24) + (u32::from(red) << 16) + (u32::from(code) << 8) + u32::from(blue); - //println!("huffman: {}", data[index]); - index += 1; x += 1; if x >= width { @@ -511,16 +470,6 @@ impl LosslessDecoder { panic!("{}, {}, {}, {:?}", index, dist, length, tree[DIST]); } - println!("length_symbol: {}, length: {}, dist_symbol: {}, dist_code: {}, dist: {}", length_symbol, length, dist_symbol, dist_code, dist); - - /* let help = if index == 753 && code == 273 { - println!("dist_symbol: {}, dist: {}, length: {}", dist_symbol, dist, length); - println!("length_symbol: {}, dist_code: {}", length_symbol, dist_code); - true - } else { - false - }; */ - for i in 0..length { data[index + i] = data[index + i - dist]; } @@ -534,14 +483,9 @@ impl LosslessDecoder { let index = huffman_info.get_huff_index(x, y); tree = &huffman_info.huffman_code_groups[index]; } - /* if help { - println!("new index: {}, x: {}, y: {}", index, x, y); - } */ } else { let key = code - 256 - 24; - //println!("key: {}", key); - if let Some(color_cache) = huffman_info.color_cache.as_mut() { //cache old colors while last_cached < index { @@ -549,7 +493,6 @@ impl LosslessDecoder { last_cached += 1; } data[index] = color_cache.lookup(key.into()); - //println!("cached: {}", data[index]); } else { panic!(":<("); @@ -634,11 +577,9 @@ struct ColorCache { } impl ColorCache { - fn insert(&mut self, color: u32) -> ImageResult<()> { + fn insert(&mut self, color: u32) { let index = (0x1e35a7bdu32.overflowing_mul(color).0) >> (32 - self.color_cache_bits); self.color_cache[index as usize] = color; - //println!("argb: {} -> key: {}", color, index); - Ok(()) } fn lookup(&self, index: usize) -> u32 { diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs index c77c5ee151..cd8d31d789 100644 --- a/src/codecs/webp/lossless_transform.rs +++ b/src/codecs/webp/lossless_transform.rs @@ -49,17 +49,8 @@ impl TransformType { let index = y * width + x; - //print!("{} -> ", image_data[index]); - let green = (predictor_data[block_index] >> 8) & 0xff; - //println!("x: {}, y: {}, code: {}", x, y, green); - - /* if image_data[index] == 1459552517 { - println!("x: {}, y: {}, code: {}", x, y, green); - println!("left: {}, top: {}, top_left: {}", get_left(image_data, x, y, width), get_top(image_data, x, y, width), get_top_left(image_data, x, y, width)); - } */ - match green { 0 => image_data[index] = add_pixels(image_data[index], 0xff000000), 1 => image_data[index] = add_pixels(image_data[index], get_left(image_data, x, y, width)), @@ -88,10 +79,7 @@ impl TransformType { _ => {println!("INVALIDA PREDICTOR???? {}", predictor_data[block_index])}, } - //println!("{}", image_data[index]); - //println!("x: {}, y: {}, value: {}, code: {}", x, y, image_data[index], green); } - //println!(); } }, TransformType::ColorTransform { size_bits, transform_data } => { @@ -108,64 +96,8 @@ impl TransformType { let multiplier = ColorTransformElement::from_color_code(transform_data[block_index]); image_data[index] = transform_color(&multiplier, image_data[index]); - //println!("{}", image_data[index]); } } - /* let mask = (1 << size_bits) - 1; - let block_xsize = div_round_up(width, 1 << size_bits); - let tiles_per_row = usize::from(div_round_up(block_xsize, 1 << size_bits)); - let block_xsize = usize::from(block_xsize); - - let width = usize::from(width); - - - - let mut trans_row = 0; - - for y in 0..usize::from(height) { - - let mut transform_index = trans_row; - - let mut multiplier = ColorTransformElement { - green_to_red: 0, - green_to_blue: 0, - red_to_blue: 0 - }; - - for x in 0..width { - if (x & mask) == 0 { - multiplier = ColorTransformElement::from_color_code(transform_data[transform_index]); - transform_index += 1; - } - image_data[y * width + x] = transform_color(&multiplier, image_data[y * width + x]); - } - - if ((y + 1) & mask) == 0 { - trans_row += tiles_per_row; - } - - /* let mut transform_index = (y >> size_bits) * tiles_per_row; - let mut data_index = y * width; - let mut x = 0; - - while x < width { - - - for x in 0..block_xsize { - if (x & mask) == 0 { - multiplier = ColorTransformElement::from_color_code(transform_data[transform_index]); - transform_index += 1; - } - image_data[data_index] = transform_color(&multiplier, image_data[data_index]); - } - data_index += block_xsize; - x += 1; - - if (y & mask) == 0 { - transform_index += tiles_per_row; - } - } */ - } */ }, TransformType::SubtractGreen => { let width = usize::from(width); @@ -234,7 +166,6 @@ fn add_pixels(a: u32, b: u32) -> u32 { let new_blue = ((a & 0xff) + (b & 0xff)) & 0xff; let out = (new_alpha << 24) + (new_red << 16) + (new_green << 8) + new_blue; - //println!("in: a: {}, b: {}; out: a: {}", a, b, out); out } @@ -324,7 +255,6 @@ fn clamp_add_subtract_full(a: u32, b: u32, c: u32) -> u32 { let sub_c: i32 = ((c >> (i * 8)) & 0xff).try_into().unwrap(); value |= u32::try_from(clamp_add_subtract_full_sub(sub_a, sub_b, sub_c)).unwrap() << (i * 8); } - //println!("a: {}, b: {}, c: {}, out: {}", a, b, c, value); value } @@ -384,7 +314,6 @@ fn transform_color(multiplier: &ColorTransformElement, color_value: u32) -> u32 let (new_red, new_blue) = color_transform(red, blue, green, multiplier); let new_value = (u32::from(alpha) << 24) + (u32::from(new_red) << 16) + (u32::from(green) << 8) + u32::from(new_blue); - //println!("multiplier: {:?}, in: {}, out: {}", multiplier, color_value, new_value); new_value } @@ -400,8 +329,6 @@ fn add_green(argb: u32) -> u32 { let new_argb = (argb & 0xff00ff00) | (new_red << 16) | (new_blue); - //println!("in: {}, out: {}", argb, new_argb); - new_argb } From d89375cf13565d9f3c1516fe8f8af15baeee2bd8 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Wed, 24 Nov 2021 21:22:00 +1300 Subject: [PATCH 07/19] Added results for proper error handling. --- src/codecs/webp/huffman.rs | 68 +++++++------ src/codecs/webp/lossless.rs | 137 ++++++++++++++------------ src/codecs/webp/lossless_transform.rs | 15 +-- 3 files changed, 116 insertions(+), 104 deletions(-) diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs index 0e826ed31e..883d32a4cd 100644 --- a/src/codecs/webp/huffman.rs +++ b/src/codecs/webp/huffman.rs @@ -1,5 +1,7 @@ use std::convert::TryInto; +use crate::ImageResult; +use super::lossless::DecoderError; use super::lossless::BitReader; /// Rudimentary utility for reading Canonical Huffman Codes. @@ -36,28 +38,32 @@ impl HuffmanTree { offset_index } - fn init(num_leaves: usize) -> HuffmanTree { - if num_leaves == 0 {panic!("djeiofje")}; + fn init(num_leaves: usize) -> ImageResult { + if num_leaves == 0 { + return Err(DecoderError::HuffmanError.into()); + } let max_nodes = 2 * num_leaves - 1; let tree = vec![HuffmanTreeNode::Empty; max_nodes]; let num_nodes = 1; - HuffmanTree { + let tree = HuffmanTree { tree, max_nodes, num_nodes, - } + }; + + Ok(tree) } - fn code_lengths_to_codes(code_lengths: &Vec) -> Vec> { + fn code_lengths_to_codes(code_lengths: &Vec) -> ImageResult>> { let max_code_length = *code_lengths.iter().reduce(|a, b| { if a >= b {a} else {b} }).unwrap(); if max_code_length > MAX_ALLOWED_CODE_LENGTH.try_into().unwrap() { - panic!("aaaaaa"); + return Err(DecoderError::HuffmanError.into()); } let mut code_length_hist = vec![0; MAX_ALLOWED_CODE_LENGTH + 1]; @@ -90,10 +96,10 @@ impl HuffmanTree { } } - huff_codes + Ok(huff_codes) } - fn add_symbol(&mut self, symbol: u16, code: u16, code_length: u16) { + fn add_symbol(&mut self, symbol: u16, code: u16, code_length: u16) -> ImageResult<()> { let mut node_index = 0; let code = usize::from(code); @@ -102,7 +108,7 @@ impl HuffmanTree { while length > 0 { length -= 1; if node_index >= self.max_nodes { - panic!("jdeiofhe"); + return Err(DecoderError::HuffmanError.into()); } let node = self.tree[node_index]; @@ -110,11 +116,11 @@ impl HuffmanTree { let offset = match node { HuffmanTreeNode::Empty => { if self.is_full() { - panic!("{:?}, {:b}, tree full", self, code_length); + return Err(DecoderError::HuffmanError.into()); } self.assign_children(node_index) } - HuffmanTreeNode::Leaf(_) => panic!("leaf occupied"), + HuffmanTreeNode::Leaf(_) => return Err(DecoderError::HuffmanError.into()), HuffmanTreeNode::Branch(offset) => offset, }; @@ -123,12 +129,14 @@ impl HuffmanTree { match self.tree[node_index] { HuffmanTreeNode::Empty => self.tree[node_index] = HuffmanTreeNode::Leaf(symbol), - HuffmanTreeNode::Leaf(_) => panic!("Can't assign"), - HuffmanTreeNode::Branch(_offset) => panic!("{:?}, {:#b}: overriding branch??", self, code_length), + HuffmanTreeNode::Leaf(_) => return Err(DecoderError::HuffmanError.into()), + HuffmanTreeNode::Branch(_offset) => return Err(DecoderError::HuffmanError.into()), } + + Ok(()) } - pub(crate) fn build_implicit(code_lengths: Vec) -> HuffmanTree { + pub(crate) fn build_implicit(code_lengths: Vec) -> ImageResult { let mut num_symbols = 0; let mut root_symbol = 0; @@ -139,50 +147,50 @@ impl HuffmanTree { } } - let mut tree = HuffmanTree::init(num_symbols); + let mut tree = HuffmanTree::init(num_symbols)?; if num_symbols == 1 { - tree.add_symbol(root_symbol, 0, 0); + tree.add_symbol(root_symbol, 0, 0)?; } else { - let codes = HuffmanTree::code_lengths_to_codes(&code_lengths); + let codes = HuffmanTree::code_lengths_to_codes(&code_lengths)?; for (symbol, &length) in code_lengths.iter().enumerate() { if length > 0 && codes[symbol].is_some() { - tree.add_symbol(symbol.try_into().unwrap(), codes[symbol].unwrap(), length); + tree.add_symbol(symbol.try_into().unwrap(), codes[symbol].unwrap(), length)?; } } } - tree + Ok(tree) } - pub(crate) fn build_explicit(code_lengths: Vec, codes: Vec, symbols: Vec) -> HuffmanTree { - let mut tree = HuffmanTree::init(symbols.len()); + pub(crate) fn build_explicit(code_lengths: Vec, codes: Vec, symbols: Vec) -> ImageResult { + let mut tree = HuffmanTree::init(symbols.len())?; for i in 0..symbols.len() { - if codes[i] >= 0 { - tree.add_symbol(symbols[i], codes[i], code_lengths[i]); - } + tree.add_symbol(symbols[i], codes[i], code_lengths[i])?; } - tree + Ok(tree) } - pub(crate) fn read_symbol(&self, bit_reader: &mut BitReader) -> u16 { + pub(crate) fn read_symbol(&self, bit_reader: &mut BitReader) -> ImageResult { let mut index = 0; let mut node = self.tree[index]; while let HuffmanTreeNode::Branch(children_offset) = node { - index += children_offset + bit_reader.read_bits::(1); + index += children_offset + bit_reader.read_bits::(1)?; node = self.tree[index]; } - match node { + let symbol = match node { HuffmanTreeNode::Branch(_) => unreachable!(), - HuffmanTreeNode::Empty => panic!("djiwod"), + HuffmanTreeNode::Empty => return Err(DecoderError::HuffmanError.into()), HuffmanTreeNode::Leaf(symbol) => symbol, - } + }; + + Ok(symbol) } } diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 7409702ad1..1999bd98ce 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -1,14 +1,15 @@ //! Decoding of lossless WebP images //! //! [Lossless spec](https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification#522_decoding_entropy-coded_image_data) - +//! use std::{convert::TryInto, convert::TryFrom, error, fmt, io::Read, ops::{AddAssign, Shl}}; use byteorder::{LittleEndian, ReadBytesExt}; -use crate::{ImageError, ImageFormat, ImageResult, codecs::webp::lossless_transform::TransformType, error::DecodingError}; +use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; +use super::lossless_transform::TransformType; use super::huffman::HuffmanTree; const CODE_LENGTH_CODES: usize = 19; @@ -66,6 +67,10 @@ pub(crate) enum DecoderError { InvalidColorCacheBits(u8), HuffmanError, + + BitStreamError, + + TransformError, } impl fmt::Display for DecoderError { @@ -78,7 +83,11 @@ impl fmt::Display for DecoderError { DecoderError::InvalidColorCacheBits(num) => f.write_fmt(format_args!("Invalid color cache(must be between 1-11): {}", num)), DecoderError::HuffmanError => - f.write_fmt(format_args!("huffman error")), + f.write_fmt(format_args!("Error building Huffman Tree")), + DecoderError::BitStreamError => + f.write_fmt(format_args!("Error while reading bitstream")), + DecoderError::TransformError => + f.write_fmt(format_args!("Error while reading or writing transforms")), } } } @@ -122,7 +131,7 @@ impl LosslessDecoder { /// Reads the frame pub(crate) fn decode_frame(&mut self) -> ImageResult<()> { - let len = self.r.read_u32::()?; + let _len = self.r.read_u32::()?; let signature = self.r.read_u8()?; if signature != 0x2f { @@ -133,12 +142,12 @@ impl LosslessDecoder { self.r.read_to_end(&mut buf)?; self.bit_reader.init(buf); - self.frame.width = self.bit_reader.read_bits::(14)+1; - self.frame.height = self.bit_reader.read_bits::(14)+1; + self.frame.width = self.bit_reader.read_bits::(14)? + 1; + self.frame.height = self.bit_reader.read_bits::(14)? + 1; - let _alpha_used = self.bit_reader.read_bits::(1); + let _alpha_used = self.bit_reader.read_bits::(1)?; - let version_num = self.bit_reader.read_bits::(3); + let version_num = self.bit_reader.read_bits::(3)?; if version_num != 0 { return Err(DecoderError::VersionNumberInvalid(version_num).into()); @@ -198,12 +207,12 @@ impl LosslessDecoder { } fn read_transforms(&mut self) -> ImageResult<()> { - while self.bit_reader.read_bits::(1) == 1 { - let transform_type_val = self.bit_reader.read_bits::(2); + while self.bit_reader.read_bits::(1)? == 1 { + let transform_type_val = self.bit_reader.read_bits::(2)?; if self.transforms[usize::from(transform_type_val)].is_some() { //can only have one of each transform, error - panic!(":<("); + return Err(DecoderError::TransformError.into()); } self.transform_order.push(transform_type_val); @@ -212,7 +221,7 @@ impl LosslessDecoder { 0 => { //predictor - let size_bits = self.bit_reader.read_bits::(3) + 2; + let size_bits = self.bit_reader.read_bits::(3)? + 2; let block_size = 1u16 << size_bits; let block_xsize = div_round_up(self.frame.width, block_size); @@ -225,7 +234,7 @@ impl LosslessDecoder { 1 => { //color transform - let size_bits = self.bit_reader.read_bits::(3) + 2; + let size_bits = self.bit_reader.read_bits::(3)? + 2; let block_size = 1u16 << size_bits; let block_xsize = div_round_up(self.frame.width, block_size); @@ -241,7 +250,7 @@ impl LosslessDecoder { TransformType::SubtractGreen } 3 => { - let color_table_size = self.bit_reader.read_bits::(8) + 1; + let color_table_size = self.bit_reader.read_bits::(8)? + 1; let data = self.decode_image_stream(color_table_size, 1, false)?; @@ -271,9 +280,9 @@ impl LosslessDecoder { let mut huffman_ysize = 1; let mut entropy_image = Vec::new(); - if read_meta && self.bit_reader.read_bits::(1) == 1 { + if read_meta && self.bit_reader.read_bits::(1)? == 1 { //meta huffman codes - huffman_bits = self.bit_reader.read_bits::(3) + 2; + huffman_bits = self.bit_reader.read_bits::(3)? + 2; huffman_xsize = div_round_up(xsize, 1 << huffman_bits); huffman_ysize = div_round_up(ysize, 1 << huffman_bits); let huffman_pixels = usize::from(huffman_xsize * huffman_ysize); @@ -330,46 +339,46 @@ impl LosslessDecoder { //decodes a single huffman code fn read_huffman_code(&mut self, alphabet_size: u16) -> ImageResult { - let simple = self.bit_reader.read_bits::(1) == 1; + let simple = self.bit_reader.read_bits::(1)? == 1; if simple { - let num_symbols = self.bit_reader.read_bits::(1) + 1; + let num_symbols = self.bit_reader.read_bits::(1)? + 1; let mut code_lengths = vec![u16::from(num_symbols - 1)]; let mut codes = vec![0]; let mut symbols = Vec::new(); - let is_first_8bits = self.bit_reader.read_bits::(1); - symbols.push(self.bit_reader.read_bits::(1 + 7 * is_first_8bits)); + let is_first_8bits = self.bit_reader.read_bits::(1)?; + symbols.push(self.bit_reader.read_bits::(1 + 7 * is_first_8bits)?); if num_symbols == 2 { - symbols.push(self.bit_reader.read_bits::(8)); + symbols.push(self.bit_reader.read_bits::(8)?); code_lengths.push(1); codes.push(1); } - Ok(HuffmanTree::build_explicit(code_lengths, codes, symbols)) + HuffmanTree::build_explicit(code_lengths, codes, symbols) } else { let mut code_length_code_lengths = vec![0; CODE_LENGTH_CODES]; - let num_code_lengths = 4 + self.bit_reader.read_bits::(4); + let num_code_lengths = 4 + self.bit_reader.read_bits::(4)?; for i in 0..num_code_lengths { - code_length_code_lengths[CODE_LENGTH_CODE_ORDER[i]] = self.bit_reader.read_bits(3); + code_length_code_lengths[CODE_LENGTH_CODE_ORDER[i]] = self.bit_reader.read_bits(3)?; } - let new_code_lengths = self.read_huffman_code_lengths(code_length_code_lengths, alphabet_size); + let new_code_lengths = self.read_huffman_code_lengths(code_length_code_lengths, alphabet_size)?; - Ok(HuffmanTree::build_implicit(new_code_lengths)) + HuffmanTree::build_implicit(new_code_lengths) } } - fn read_huffman_code_lengths(&mut self, code_length_code_lengths: Vec, num_symbols: u16) -> Vec { + fn read_huffman_code_lengths(&mut self, code_length_code_lengths: Vec, num_symbols: u16) -> ImageResult> { - let table = HuffmanTree::build_implicit(code_length_code_lengths); + let table = HuffmanTree::build_implicit(code_length_code_lengths)?; - let mut max_symbol = if self.bit_reader.read_bits::(1) == 1 { - let length_nbits = 2 + 2 * self.bit_reader.read_bits::(3); - 2 + self.bit_reader.read_bits::(length_nbits) + let mut max_symbol = if self.bit_reader.read_bits::(1)? == 1 { + let length_nbits = 2 + 2 * self.bit_reader.read_bits::(3)?; + 2 + self.bit_reader.read_bits::(length_nbits)? } else { num_symbols }; @@ -382,7 +391,7 @@ impl LosslessDecoder { if max_symbol == 0 {break;} max_symbol -= 1; - let code_len = table.read_symbol(&mut self.bit_reader); + let code_len = table.read_symbol(&mut self.bit_reader)?; if code_len < 16 { code_lengths[usize::from(symbol)] = code_len; @@ -397,18 +406,18 @@ impl LosslessDecoder { 0 => 2, 1 => 3, 2 => 7, - _ => panic!("djiowd"), + _ => return Err(DecoderError::BitStreamError.into()), }; let repeat_offset = match slot { 0 | 1 => 3, 2 => 11, - _ => panic!("diode"), + _ => return Err(DecoderError::BitStreamError.into()), }; - let mut repeat = self.bit_reader.read_bits::(extra_bits) + repeat_offset; + let mut repeat = self.bit_reader.read_bits::(extra_bits)? + repeat_offset; if symbol + repeat > num_symbols { - panic!("aaaaa"); + return Err(DecoderError::BitStreamError.into()); } else { let length = if use_prev { prev_code_len @@ -424,7 +433,7 @@ impl LosslessDecoder { } } - code_lengths + Ok(code_lengths) } fn decode_image_data(&mut self, width: u16, height: u16, mut huffman_info: HuffmanInfo) -> ImageResult> { @@ -443,12 +452,12 @@ impl LosslessDecoder { tree = &huffman_info.huffman_code_groups[index]; } - let code = tree[GREEN].read_symbol(&mut self.bit_reader); + let code = tree[GREEN].read_symbol(&mut self.bit_reader)?; if code < 256 { - let red = tree[RED].read_symbol(&mut self.bit_reader); - let blue = tree[BLUE].read_symbol(&mut self.bit_reader); - let alpha = tree[ALPHA].read_symbol(&mut self.bit_reader); + let red = tree[RED].read_symbol(&mut self.bit_reader)?; + let blue = tree[BLUE].read_symbol(&mut self.bit_reader)?; + let alpha = tree[ALPHA].read_symbol(&mut self.bit_reader)?; data[index] = (u32::from(alpha) << 24) + (u32::from(red) << 16) + (u32::from(code) << 8) + u32::from(blue); @@ -460,14 +469,14 @@ impl LosslessDecoder { } } else if code < 256 + 24 { let length_symbol = code - 256; - let length = usize::from(Self::get_copy_distance(&mut self.bit_reader, length_symbol)); + let length = usize::from(Self::get_copy_distance(&mut self.bit_reader, length_symbol)?); - let dist_symbol = tree[DIST].read_symbol(&mut self.bit_reader); - let dist_code = Self::get_copy_distance(&mut self.bit_reader, dist_symbol); + let dist_symbol = tree[DIST].read_symbol(&mut self.bit_reader)?; + let dist_code = Self::get_copy_distance(&mut self.bit_reader, dist_symbol)?; let dist = Self::plane_code_to_distance(width, dist_code); if index < dist || num_values - index < length { - panic!("{}, {}, {}, {:?}", index, dist, length, tree[DIST]); + return Err(DecoderError::BitStreamError.into()); } for i in 0..length { @@ -492,10 +501,10 @@ impl LosslessDecoder { color_cache.insert(data[last_cached]); last_cached += 1; } - data[index] = color_cache.lookup(key.into()); + data[index] = color_cache.lookup(key.into())?; } else { - panic!(":<("); + return Err(DecoderError::BitStreamError.into()); } index += 1; x += 1; @@ -510,8 +519,8 @@ impl LosslessDecoder { } fn read_color_cache(&mut self) -> ImageResult> { - if self.bit_reader.read_bits::(1) == 1 { - let code_bits = self.bit_reader.read_bits::(4); + if self.bit_reader.read_bits::(1)? == 1 { + let code_bits = self.bit_reader.read_bits::(4)?; if !(1..=11).contains(&code_bits) { return Err(DecoderError::InvalidColorCacheBits(code_bits).into()); @@ -523,14 +532,14 @@ impl LosslessDecoder { } } - fn get_copy_distance(bit_reader: &mut BitReader, prefix_code: u16) -> usize { + fn get_copy_distance(bit_reader: &mut BitReader, prefix_code: u16) -> ImageResult { if prefix_code < 4 { - return usize::from(prefix_code + 1); + return Ok(usize::from(prefix_code + 1)); } let extra_bits: u8 = ((prefix_code - 2) >> 1).try_into().unwrap(); let offset = (2 + (usize::from(prefix_code) & 1)) << extra_bits; - offset + bit_reader.read_bits::(extra_bits) + 1 + Ok(offset + bit_reader.read_bits::(extra_bits)? + 1) } fn plane_code_to_distance(xsize: u16, plane_code: usize) -> usize { @@ -582,8 +591,11 @@ impl ColorCache { self.color_cache[index as usize] = color; } - fn lookup(&self, index: usize) -> u32 { - self.color_cache[index] + fn lookup(&self, index: usize) -> ImageResult { + match self.color_cache.get(index) { + Some(&value) => Ok(value), + None => Err(DecoderError::BitStreamError.into()), + } } } @@ -607,12 +619,15 @@ impl BitReader { self.buf = buf; } - pub(crate) fn read_bits(&mut self, num: u8) -> T + pub(crate) fn read_bits(&mut self, num: u8) -> ImageResult where T: num_traits::Unsigned + Shl + AddAssign + From { let mut value: T = T::zero(); for i in 0..num { + if self.buf.len() <= self.index { + return Err(DecoderError::BitStreamError.into()); + } let bit_true = self.buf[self.index] & (1 << self.bit_count) != 0; value += T::from(bit_true) << i; self.bit_count = if self.bit_count == 7 { @@ -623,7 +638,7 @@ impl BitReader { }; } - value + Ok(value) } } @@ -652,10 +667,10 @@ mod test { bit_reader.init(buf); - assert_eq!(bit_reader.read_bits::(3), 4); //100 - assert_eq!(bit_reader.read_bits::(2), 3); //11 - assert_eq!(bit_reader.read_bits::(6), 12); //001100 - assert_eq!(bit_reader.read_bits::(10), 40); //0000101000 - assert_eq!(bit_reader.read_bits::(3), 7); //111 + assert_eq!(bit_reader.read_bits::(3), Ok(4)); //100 + assert_eq!(bit_reader.read_bits::(2), Ok(3)); //11 + assert_eq!(bit_reader.read_bits::(6), Ok(12)); //001100 + assert_eq!(bit_reader.read_bits::(10), Ok(40)); //0000101000 + assert_eq!(bit_reader.read_bits::(3), Ok(7)); //111 } } \ No newline at end of file diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs index cd8d31d789..607b2f21a0 100644 --- a/src/codecs/webp/lossless_transform.rs +++ b/src/codecs/webp/lossless_transform.rs @@ -17,16 +17,6 @@ impl TransformType { match self { TransformType::PredictorTransform { size_bits, predictor_data} => { - /* print!("[\n"); - for y in 0..usize::from(height) { - print!("\t"); - for x in 0..usize::from(width) { - print!("{}, ", image_data[y * usize::from(width) + x]); - } - print!("\n"); - } - print!("]\n"); */ - let block_xsize = usize::from(div_round_up(width, 1 << size_bits)); let width = usize::from(width); let height = usize::from(height); @@ -76,9 +66,8 @@ impl TransformType { let first = average2(get_left(image_data, x, y, width), get_top(image_data, x, y, width)); clamp_add_subtract_half(first, get_top_left(image_data, x, y, width)) }), - _ => {println!("INVALIDA PREDICTOR???? {}", predictor_data[block_index])}, + _ => {}, } - } } }, @@ -132,7 +121,7 @@ impl TransformType { let count_mask = pixels_per_byte - 1; let mut packed_pixels = 0; - for y in 0..usize::from(height) { + for _y in 0..usize::from(height) { for x in 0..width { if (x & count_mask) == 0 { packed_pixels = (image_data[src] >> 8) & 0xff; From c65f6817a44b3447d6119d7e4d70d91b29d71069 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Wed, 24 Nov 2021 21:26:24 +1300 Subject: [PATCH 08/19] Clean up decoder. --- src/codecs/webp/decoder.rs | 64 +++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 25 deletions(-) diff --git a/src/codecs/webp/decoder.rs b/src/codecs/webp/decoder.rs index b3e9ae3a82..7b6d70f477 100644 --- a/src/codecs/webp/decoder.rs +++ b/src/codecs/webp/decoder.rs @@ -95,31 +95,45 @@ impl WebPDecoder { //reads the chunk header, decodes the frame and returns the inner decoder fn read_frame(mut r: R) -> ImageResult> { - let mut chunk = [0; 4]; - r.read_exact(&mut chunk)?; - - match &chunk { - b"VP8 " => { - let _len = r.read_u32::()?; - let mut vp8_decoder = Vp8Decoder::new(r); - vp8_decoder.decode_frame()?; - - return Ok(InnerDecoder::Lossy(vp8_decoder)); - } - b"VP8L" => { - let mut lossless_decoder = LosslessDecoder::new(r); - - lossless_decoder.decode_frame()?; - - return Ok(InnerDecoder::Lossless(lossless_decoder)); - } - //b"ALPH" | b"ANIM" | b"ANMF" => { - _ => { - // Alpha and Animation isn't supported - return Err(ImageError::Unsupported(UnsupportedError::from_format_and_kind( - ImageFormat::WebP.into(), - UnsupportedErrorKind::GenericFeature(chunk.iter().map(|&b| b as char).collect()), - ))); + loop { + let mut chunk = [0; 4]; + r.read_exact(&mut chunk)?; + + match &chunk { + b"VP8 " => { + let _len = r.read_u32::()?; + let mut vp8_decoder = Vp8Decoder::new(r); + vp8_decoder.decode_frame()?; + + return Ok(InnerDecoder::Lossy(vp8_decoder)); + } + b"VP8L" => { + let mut lossless_decoder = LosslessDecoder::new(r); + + lossless_decoder.decode_frame()?; + + return Ok(InnerDecoder::Lossless(lossless_decoder)); + } + b"ALPH" | b"ANIM" | b"ANMF" => { + // Alpha, Lossless and Animation isn't supported + return Err(ImageError::Unsupported(UnsupportedError::from_format_and_kind( + ImageFormat::WebP.into(), + UnsupportedErrorKind::GenericFeature(chunk.iter().map(|&b| b as char).collect()), + ))); + } + _ => { + let mut len = u64::from(r.read_u32::()?); + + if len % 2 != 0 { + // RIFF chunks containing an uneven number of bytes append + // an extra 0x00 at the end of the chunk + // + // The addition cannot overflow since we have a u64 that was created from a u32 + len += 1; + } + + io::copy(&mut r.by_ref().take(len), &mut io::sink())?; + } } } } From 9afcba71ca6f895197e754f123a7ea9da65e89a1 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Wed, 24 Nov 2021 21:46:43 +1300 Subject: [PATCH 09/19] Cleaned up test for bit reader and added one. --- src/codecs/webp/lossless.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 1999bd98ce..b299d4ba0f 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -667,10 +667,24 @@ mod test { bit_reader.init(buf); - assert_eq!(bit_reader.read_bits::(3), Ok(4)); //100 - assert_eq!(bit_reader.read_bits::(2), Ok(3)); //11 - assert_eq!(bit_reader.read_bits::(6), Ok(12)); //001100 - assert_eq!(bit_reader.read_bits::(10), Ok(40)); //0000101000 - assert_eq!(bit_reader.read_bits::(3), Ok(7)); //111 + assert_eq!(bit_reader.read_bits::(3).unwrap(), 4); //100 + assert_eq!(bit_reader.read_bits::(2).unwrap(), 3); //11 + assert_eq!(bit_reader.read_bits::(6).unwrap(), 12); //001100 + assert_eq!(bit_reader.read_bits::(10).unwrap(), 40); //0000101000 + assert_eq!(bit_reader.read_bits::(3).unwrap(), 7); //111 + } + + #[test] + fn bit_read_error_test() { + let mut bit_reader = BitReader::new(); + + //01101010 + let buf = vec![0x6A]; + + bit_reader.init(buf); + + assert_eq!(bit_reader.read_bits::(3).unwrap(), 2); //010 + assert_eq!(bit_reader.read_bits::(5).unwrap(), 13); //01101 + assert!(bit_reader.read_bits::(4).is_err()); //error } } \ No newline at end of file From d544b605e7c0bc47d051047b5888211f7be68216 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Wed, 24 Nov 2021 22:27:19 +1300 Subject: [PATCH 10/19] Added comments and did some cleanup. --- src/codecs/webp/huffman.rs | 17 +++++++++--- src/codecs/webp/lossless.rs | 23 +++++++++++++---- src/codecs/webp/lossless_transform.rs | 37 +++++++++++++++++++-------- 3 files changed, 58 insertions(+), 19 deletions(-) diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs index 883d32a4cd..2458f61ec2 100644 --- a/src/codecs/webp/huffman.rs +++ b/src/codecs/webp/huffman.rs @@ -5,31 +5,34 @@ use super::lossless::DecoderError; use super::lossless::BitReader; /// Rudimentary utility for reading Canonical Huffman Codes. -/// Based off https://github.com/webmproject/libwebp/blob/f2623dbe583b28f1bff5678193d00ea8c872666c/src/utils/huffman.c +/// Based off https://github.com/webmproject/libwebp/blob/7f8472a610b61ec780ef0a8873cd954ac512a505/src/utils/huffman.c /// const MAX_ALLOWED_CODE_LENGTH: usize = 15; #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub(crate) enum HuffmanTreeNode { +enum HuffmanTreeNode { Branch(usize), //offset in vector to children Leaf(u16), //symbol stored in leaf Empty, } +/// Huffman tree #[derive(Clone, Debug, Default)] pub(crate) struct HuffmanTree { - pub(crate) tree: Vec, + tree: Vec, max_nodes: usize, - pub(crate) num_nodes: usize, + num_nodes: usize, } impl HuffmanTree { + fn is_full(&self) -> bool { self.num_nodes == self.max_nodes } + /// Turns a node from empty into a branch and assigns its children fn assign_children(&mut self, node_index: usize) -> usize { let offset_index = self.num_nodes - node_index; self.tree[node_index] = HuffmanTreeNode::Branch(offset_index); @@ -38,6 +41,7 @@ impl HuffmanTree { offset_index } + /// Init a huffman tree fn init(num_leaves: usize) -> ImageResult { if num_leaves == 0 { return Err(DecoderError::HuffmanError.into()); @@ -56,6 +60,7 @@ impl HuffmanTree { Ok(tree) } + /// Converts code lengths to codes fn code_lengths_to_codes(code_lengths: &Vec) -> ImageResult>> { let max_code_length = *code_lengths.iter().reduce(|a, b| { @@ -99,6 +104,7 @@ impl HuffmanTree { Ok(huff_codes) } + /// Adds a symbol to a huffman tree fn add_symbol(&mut self, symbol: u16, code: u16, code_length: u16) -> ImageResult<()> { let mut node_index = 0; let code = usize::from(code); @@ -136,6 +142,7 @@ impl HuffmanTree { Ok(()) } + /// Builds a tree implicitly, just from code lengths pub(crate) fn build_implicit(code_lengths: Vec) -> ImageResult { let mut num_symbols = 0; let mut root_symbol = 0; @@ -165,6 +172,7 @@ impl HuffmanTree { Ok(tree) } + /// Builds a tree explicitly from lengths, codes and symbols pub(crate) fn build_explicit(code_lengths: Vec, codes: Vec, symbols: Vec) -> ImageResult { let mut tree = HuffmanTree::init(symbols.len())?; @@ -175,6 +183,7 @@ impl HuffmanTree { Ok(tree) } + /// Reads a symbol using the bitstream pub(crate) fn read_symbol(&self, bit_reader: &mut BitReader) -> ImageResult { let mut index = 0; let mut node = self.tree[index]; diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index b299d4ba0f..62fc4ba106 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -1,6 +1,6 @@ //! Decoding of lossless WebP images //! -//! [Lossless spec](https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification#522_decoding_entropy-coded_image_data) +//! [Lossless spec](https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification) //! use std::{convert::TryInto, convert::TryFrom, error, fmt, io::Read, ops::{AddAssign, Shl}}; @@ -115,7 +115,6 @@ pub(crate) struct LosslessDecoder { impl LosslessDecoder { /// Create a new decoder pub(crate) fn new(r: R) -> LosslessDecoder { - LosslessDecoder { r, bit_reader: BitReader::new(), @@ -125,6 +124,7 @@ impl LosslessDecoder { } } + /// Gets dimensions of image pub(crate) fn dimensions(&self) -> (u32, u32) { (u32::from(self.frame.width), u32::from(self.frame.height)) } @@ -164,6 +164,7 @@ impl LosslessDecoder { Ok(()) } + /// Fills a buffer by converting from argb to rgba pub(crate) fn fill_rgba(&self, buf: &mut [u8]) { for (index, &argb_val) in self.frame.buf.iter().enumerate() { buf[index * 4] = ((argb_val >> 16) & 0xff).try_into().unwrap(); @@ -173,6 +174,7 @@ impl LosslessDecoder { } } + /// Get buffer size from the image pub(crate) fn get_buf_size(&self) -> usize { usize::from(self.frame.width) * usize::from(self.frame.height) * 4 } @@ -206,6 +208,7 @@ impl LosslessDecoder { Ok(data) } + /// Reads transforms and their data from the bitstream fn read_transforms(&mut self) -> ImageResult<()> { while self.bit_reader.read_bits::(1)? == 1 { let transform_type_val = self.bit_reader.read_bits::(2)?; @@ -266,6 +269,7 @@ impl LosslessDecoder { Ok(()) } + /// Reads huffman codes associated with an image fn read_huffman_codes( &mut self, read_meta: bool, @@ -337,7 +341,7 @@ impl LosslessDecoder { Ok(info) } - //decodes a single huffman code + /// Decodes and returns a single huffman tree fn read_huffman_code(&mut self, alphabet_size: u16) -> ImageResult { let simple = self.bit_reader.read_bits::(1)? == 1; @@ -372,6 +376,7 @@ impl LosslessDecoder { } } + /// Reads huffman code lengths fn read_huffman_code_lengths(&mut self, code_length_code_lengths: Vec, num_symbols: u16) -> ImageResult> { let table = HuffmanTree::build_implicit(code_length_code_lengths)?; @@ -436,12 +441,13 @@ impl LosslessDecoder { Ok(code_lengths) } + /// Decodes the image data using the huffman trees and either of the 3 methods of decoding fn decode_image_data(&mut self, width: u16, height: u16, mut huffman_info: HuffmanInfo) -> ImageResult> { let num_values = usize::from(width) * usize::from(height); let mut data = vec![0; num_values]; - let index = huffman_info.get_huff_index(0, 0); - let mut tree = &huffman_info.huffman_code_groups[index]; + let huff_index = huffman_info.get_huff_index(0, 0); + let mut tree = &huffman_info.huffman_code_groups[huff_index]; let mut last_cached = 0; let mut index = 0; let mut x = 0; @@ -454,7 +460,9 @@ impl LosslessDecoder { let code = tree[GREEN].read_symbol(&mut self.bit_reader)?; + //check code if code < 256 { + //literal, so just use huffman codes and read as argb let red = tree[RED].read_symbol(&mut self.bit_reader)?; let blue = tree[BLUE].read_symbol(&mut self.bit_reader)?; let alpha = tree[ALPHA].read_symbol(&mut self.bit_reader)?; @@ -468,6 +476,7 @@ impl LosslessDecoder { y += 1; } } else if code < 256 + 24 { + //backward reference, so go back and use that to add image data let length_symbol = code - 256; let length = usize::from(Self::get_copy_distance(&mut self.bit_reader, length_symbol)?); @@ -493,6 +502,7 @@ impl LosslessDecoder { tree = &huffman_info.huffman_code_groups[index]; } } else { + //color cache, so use previously stored pixels to get this pixel let key = code - 256 - 24; if let Some(color_cache) = huffman_info.color_cache.as_mut() { @@ -518,6 +528,7 @@ impl LosslessDecoder { Ok(data) } + /// Reads color cache data from the bitstream fn read_color_cache(&mut self) -> ImageResult> { if self.bit_reader.read_bits::(1)? == 1 { let code_bits = self.bit_reader.read_bits::(4)?; @@ -532,6 +543,7 @@ impl LosslessDecoder { } } + /// Gets the copy distance from the prefix code and bitstream fn get_copy_distance(bit_reader: &mut BitReader, prefix_code: u16) -> ImageResult { if prefix_code < 4 { return Ok(usize::from(prefix_code + 1)); @@ -542,6 +554,7 @@ impl LosslessDecoder { Ok(offset + bit_reader.read_bits::(extra_bits)? + 1) } + /// Gets distance to pixel fn plane_code_to_distance(xsize: u16, plane_code: usize) -> usize { if plane_code > 120 { return plane_code - 120; diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs index 607b2f21a0..1fc4731637 100644 --- a/src/codecs/webp/lossless_transform.rs +++ b/src/codecs/webp/lossless_transform.rs @@ -13,6 +13,7 @@ pub(crate) enum TransformType { } impl TransformType { + /// Applies a transform to the image data pub(crate) fn apply_transform(&self, image_data: &mut Vec, width: u16, height: u16) { match self { TransformType::PredictorTransform { size_bits, predictor_data} => { @@ -148,34 +149,41 @@ impl TransformType { } } +//predictor functions + +/// Adds 2 pixels mod 256 for each pixel fn add_pixels(a: u32, b: u32) -> u32 { let new_alpha = ((a >> 24) + (b >> 24)) & 0xff; let new_red = (((a >> 16) & 0xff) + ((b >> 16) & 0xff)) & 0xff; let new_green = (((a >> 8) & 0xff) + ((b >> 8) & 0xff)) & 0xff; let new_blue = ((a & 0xff) + (b & 0xff)) & 0xff; - let out = (new_alpha << 24) + (new_red << 16) + (new_green << 8) + new_blue; - out + (new_alpha << 24) + (new_red << 16) + (new_green << 8) + new_blue } +/// Get left pixel fn get_left(data: &Vec, x: usize, y: usize, width: usize) -> u32 { data[y * width + x - 1] } +/// Get top pixel fn get_top(data: &Vec, x: usize, y: usize, width: usize) -> u32 { data[(y - 1) * width + x] } +/// Get pixel to top right fn get_top_right(data: &Vec, x: usize, y: usize, width: usize) -> u32 { // if x == width - 1 this gets the left most pixel of the current row // as described in the specification data[(y - 1) * width + x + 1] } +/// Get pixel to top left fn get_top_left(data: &Vec, x: usize, y: usize, width: usize) -> u32 { data[(y - 1) * width + x - 1] } +/// Get average of 2 pixels fn average2(a: u32, b: u32) -> u32 { let mut avg = 0u32; for i in 0..4 { @@ -186,18 +194,22 @@ fn average2(a: u32, b: u32) -> u32 { avg } +/// Get average of 2 bytes fn sub_average2(a: u8, b: u8) -> u8 { ((u16::from(a) + u16::from(b)) / 2).try_into().unwrap() } +/// Get a specific byte from argb pixel fn get_byte(val: u32, byte: u8) -> u8 { ((val >> (byte * 8)) & 0xff).try_into().unwrap() } +/// Get byte as i32 for convenience fn get_byte_i32(val: u32, byte: u8) -> i32 { i32::from(get_byte(val, byte)) } +/// Select left or top byte fn select(left: u32, top: u32, top_left: u32) -> u32 { let predict_alpha = get_byte_i32(left, 3) + get_byte_i32(top, 3) - get_byte_i32(top_left, 3); let predict_red = get_byte_i32(left, 2) + get_byte_i32(top, 2) - get_byte_i32(top_left, 2); @@ -216,6 +228,7 @@ fn select(left: u32, top: u32, top_left: u32) -> u32 { } } +/// Clamp a to [0, 255] fn clamp(a: i32) -> i32 { if a < 0 { return 0; @@ -228,14 +241,17 @@ fn clamp(a: i32) -> i32 { } } +/// Clamp add subtract full on one part fn clamp_add_subtract_full_sub(a: i32, b: i32, c: i32) -> i32 { clamp(a + b - c) } +/// Clamp add subtract half on one part fn clamp_add_subtract_half_sub(a: i32, b: i32) -> i32 { clamp(a + (a - b) / 2) } +/// Clamp add subtract full on 3 pixels fn clamp_add_subtract_full(a: u32, b: u32, c: u32) -> u32 { let mut value: u32 = 0; for i in 0..4u8 { @@ -247,6 +263,7 @@ fn clamp_add_subtract_full(a: u32, b: u32, c: u32) -> u32 { value } +/// Clamp add subtract half on 2 pixels fn clamp_add_subtract_half(a: u32, b: u32) -> u32 { let mut value = 0; for i in 0..4u8 { @@ -277,11 +294,12 @@ impl ColorTransformElement { } } +/// Does color transform on red and blue transformed by green fn color_transform(red: u8, blue: u8, green: u8, trans: &ColorTransformElement) -> (u8, u8) { let mut temp_red = u32::from(red); let mut temp_blue = u32::from(blue); - //as does the conversion from u8 to signed two's complement i8 as required + //as does the conversion from u8 to signed two's complement i8 required temp_red += color_transform_delta(trans.green_to_red as i8, green as i8); temp_blue += color_transform_delta(trans.green_to_blue as i8, green as i8); temp_blue += color_transform_delta(trans.red_to_blue as i8, temp_red as i8); @@ -289,11 +307,12 @@ fn color_transform(red: u8, blue: u8, green: u8, trans: &ColorTransformElement) ((temp_red & 0xff).try_into().unwrap(), (temp_blue & 0xff).try_into().unwrap()) } +/// Does color transform on 2 numbers fn color_transform_delta(t: i8, c: i8) -> u32 { ((i16::from(t) * i16::from(c)) as u32) >> 5 } -//inverse +// Does color transform on a pixel with a color transform element fn transform_color(multiplier: &ColorTransformElement, color_value: u32) -> u32 { let alpha = get_byte(color_value, 3); let red = get_byte(color_value, 2); @@ -302,12 +321,12 @@ fn transform_color(multiplier: &ColorTransformElement, color_value: u32) -> u32 let (new_red, new_blue) = color_transform(red, blue, green, multiplier); - let new_value = (u32::from(alpha) << 24) + (u32::from(new_red) << 16) + (u32::from(green) << 8) + u32::from(new_blue); - new_value + (u32::from(alpha) << 24) + (u32::from(new_red) << 16) + (u32::from(green) << 8) + u32::from(new_blue) } -//subtract green +//subtract green function +/// Adds green to red and blue of a pixel fn add_green(argb: u32) -> u32 { let red = (argb >> 16) & 0xff; let green = (argb >> 8) & 0xff; @@ -319,6 +338,4 @@ fn add_green(argb: u32) -> u32 { let new_argb = (argb & 0xff00ff00) | (new_red << 16) | (new_blue); new_argb -} - -// \ No newline at end of file +} \ No newline at end of file From 593d74e778569000ea5c877ed27d84b68a9b0b4c Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Thu, 25 Nov 2021 00:24:36 +1300 Subject: [PATCH 11/19] Fixed color indexing transform. --- src/codecs/webp/lossless.rs | 45 ++++++++++++++++++++------- src/codecs/webp/lossless_transform.rs | 4 +-- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 62fc4ba106..e26352b067 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -9,7 +9,7 @@ use byteorder::{LittleEndian, ReadBytesExt}; use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; -use super::lossless_transform::TransformType; +use super::lossless_transform::{TransformType, add_pixels}; use super::huffman::HuffmanTree; const CODE_LENGTH_CODES: usize = 19; @@ -185,8 +185,9 @@ impl LosslessDecoder { /// xsize and ysize describe the size of the blocks where each block has its own entropy code fn decode_image_stream(&mut self, xsize: u16, ysize: u16, is_argb_img: bool) -> ImageResult> { + let mut trans_xsize = xsize; if is_argb_img { - self.read_transforms()?; + trans_xsize = self.read_transforms()?; } let color_cache_bits = self.read_color_cache()?; @@ -200,16 +201,18 @@ impl LosslessDecoder { } }); - let huffman_info = self.read_huffman_codes(is_argb_img, xsize, ysize, color_cache)?; + let huffman_info = self.read_huffman_codes(is_argb_img, trans_xsize, ysize, color_cache)?; //decode data - let data = self.decode_image_data(xsize, ysize, huffman_info)?; + let data = self.decode_image_data(trans_xsize, ysize, huffman_info)?; Ok(data) } /// Reads transforms and their data from the bitstream - fn read_transforms(&mut self) -> ImageResult<()> { + fn read_transforms(&mut self) -> ImageResult { + let mut xsize = self.frame.width; + while self.bit_reader.read_bits::(1)? == 1 { let transform_type_val = self.bit_reader.read_bits::(2)?; @@ -219,7 +222,7 @@ impl LosslessDecoder { } self.transform_order.push(transform_type_val); - + let transform_type = match transform_type_val { 0 => { //predictor @@ -227,7 +230,7 @@ impl LosslessDecoder { let size_bits = self.bit_reader.read_bits::(3)? + 2; let block_size = 1u16 << size_bits; - let block_xsize = div_round_up(self.frame.width, block_size); + let block_xsize = div_round_up(xsize, block_size); let block_ysize = div_round_up(self.frame.height, block_size); let data = self.decode_image_stream(block_xsize, block_ysize, false)?; @@ -240,7 +243,7 @@ impl LosslessDecoder { let size_bits = self.bit_reader.read_bits::(3)? + 2; let block_size = 1u16 << size_bits; - let block_xsize = div_round_up(self.frame.width, block_size); + let block_xsize = div_round_up(xsize, block_size); let block_ysize = div_round_up(self.frame.height, block_size); let data = self.decode_image_stream(block_xsize, block_ysize, false)?; @@ -255,9 +258,22 @@ impl LosslessDecoder { 3 => { let color_table_size = self.bit_reader.read_bits::(8)? + 1; - let data = self.decode_image_stream(color_table_size, 1, false)?; + let mut color_map = self.decode_image_stream(color_table_size, 1, false)?; + + let bits = if color_table_size <= 2 { + 3 + } else if color_table_size <= 4 { + 2 + } else if color_table_size <= 16 { + 1 + } else { + 0 + }; + xsize = div_round_up(xsize, 1 << bits); - TransformType::ColorIndexingTransform { table_size: color_table_size, table_data: data } + Self::adjust_color_map(&mut color_map); + + TransformType::ColorIndexingTransform { table_size: color_table_size, table_data: color_map } } _ => unreachable!(), }; @@ -266,7 +282,14 @@ impl LosslessDecoder { self.transforms[usize::from(transform_type_val)] = Some(transform_type); } - Ok(()) + Ok(xsize) + } + + /// Adjusts the color map since it's subtraction coded + fn adjust_color_map(color_map: &mut Vec) { + for i in 1..color_map.len() { + color_map[i] = add_pixels(color_map[i], color_map[i-1]); + } } /// Reads huffman codes associated with an image diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs index 1fc4731637..f8d2387ba0 100644 --- a/src/codecs/webp/lossless_transform.rs +++ b/src/codecs/webp/lossless_transform.rs @@ -98,7 +98,6 @@ impl TransformType { } }, TransformType::ColorIndexingTransform { table_size, table_data } => { - let mut new_image_data = Vec::with_capacity(usize::from(width) * usize::from(height)); let table_size = *table_size; @@ -130,7 +129,6 @@ impl TransformType { } let pixels: usize = (packed_pixels & mask).try_into().unwrap(); - let new_val = if pixels >= table_size.into() { 0x00000000 } else { @@ -152,7 +150,7 @@ impl TransformType { //predictor functions /// Adds 2 pixels mod 256 for each pixel -fn add_pixels(a: u32, b: u32) -> u32 { +pub(crate) fn add_pixels(a: u32, b: u32) -> u32 { let new_alpha = ((a >> 24) + (b >> 24)) & 0xff; let new_red = (((a >> 16) & 0xff) + ((b >> 16) & 0xff)) & 0xff; let new_green = (((a >> 8) & 0xff) + ((b >> 8) & 0xff)) & 0xff; From 765e773a5611fd975ffea1c0d2d646b9e7e55a17 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Thu, 25 Nov 2021 02:10:56 +1300 Subject: [PATCH 12/19] Add test images and edit docs for webp. --- README.md | 2 +- src/codecs/webp/decoder.rs | 24 ++---------------- .../images/webp/lossless_images/2-color.webp | Bin 0 -> 314 bytes .../webp/lossless_images/multi-color.webp | Bin 0 -> 154746 bytes tests/images/webp/lossless_images/simple.webp | Bin 0 -> 44776 bytes .../{images => lossy_images}/simple-gray.webp | Bin .../{images => lossy_images}/simple-rgb.webp | Bin .../{images => lossy_images}/vp8x-gray.webp | Bin .../{images => lossy_images}/vp8x-rgb.webp | Bin .../lossless_images/2-color.webp.d5b9a8bd.png | Bin 0 -> 1879 bytes .../multi-color.webp.d98bd812.png | Bin 0 -> 231300 bytes .../lossless_images/simple.webp.18d31ac3.png | Bin 0 -> 111428 bytes .../simple-gray.webp.6b294f50.png | Bin .../simple-rgb.webp.4bb22be5.png | Bin .../vp8x-gray.webp.6b294f50.png | Bin .../vp8x-rgb.webp.4bb22be5.png | Bin 16 files changed, 3 insertions(+), 23 deletions(-) create mode 100644 tests/images/webp/lossless_images/2-color.webp create mode 100644 tests/images/webp/lossless_images/multi-color.webp create mode 100644 tests/images/webp/lossless_images/simple.webp rename tests/images/webp/{images => lossy_images}/simple-gray.webp (100%) rename tests/images/webp/{images => lossy_images}/simple-rgb.webp (100%) rename tests/images/webp/{images => lossy_images}/vp8x-gray.webp (100%) rename tests/images/webp/{images => lossy_images}/vp8x-rgb.webp (100%) create mode 100644 tests/reference/webp/lossless_images/2-color.webp.d5b9a8bd.png create mode 100644 tests/reference/webp/lossless_images/multi-color.webp.d98bd812.png create mode 100644 tests/reference/webp/lossless_images/simple.webp.18d31ac3.png rename tests/reference/webp/{images => lossy_images}/simple-gray.webp.6b294f50.png (100%) rename tests/reference/webp/{images => lossy_images}/simple-rgb.webp.4bb22be5.png (100%) rename tests/reference/webp/{images => lossy_images}/vp8x-gray.webp.6b294f50.png (100%) rename tests/reference/webp/{images => lossy_images}/vp8x-rgb.webp.4bb22be5.png (100%) diff --git a/README.md b/README.md index 6d18e11f17..b8bd31e4b4 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ All image processing functions provided operate on types that implement the `Gen | BMP | Yes | Rgb8, Rgba8, Gray8, GrayA8 | | ICO | Yes | Yes | | TIFF | Baseline(no fax support) + LZW + PackBits | Rgb8, Rgba8, Gray8 | -| WebP | Lossy(Rgb only) | No | +| WebP | Lossy(Rgb only) + Lossless | No | | AVIF | Only 8-bit | Lossy | | PNM | PBM, PGM, PPM, standard PAM | Yes | | DDS | DXT1, DXT3, DXT5 | No | diff --git a/src/codecs/webp/decoder.rs b/src/codecs/webp/decoder.rs index 7b6d70f477..f3555b01cc 100644 --- a/src/codecs/webp/decoder.rs +++ b/src/codecs/webp/decoder.rs @@ -52,7 +52,7 @@ enum InnerDecoder { Lossless(LosslessDecoder), } -/// WebP Image format decoder. Currently only supports lossy RGB images. +/// WebP Image format decoder. Currently only supports lossy RGB images or lossless RGBA images. pub struct WebPDecoder { inner_decoder: InnerDecoder, } @@ -65,12 +65,10 @@ impl WebPDecoder { let _size = WebPDecoder::read_file_header(&mut r)?; let inner_decoder = WebPDecoder::read_frame(r)?; - //let len = r.read_u32::()?; let decoder = WebPDecoder { inner_decoder, }; - //decoder.read_metadata()?; Ok(decoder) } @@ -115,7 +113,7 @@ impl WebPDecoder { return Ok(InnerDecoder::Lossless(lossless_decoder)); } b"ALPH" | b"ANIM" | b"ANMF" => { - // Alpha, Lossless and Animation isn't supported + // Alpha and Animation isn't supported return Err(ImageError::Unsupported(UnsupportedError::from_format_and_kind( ImageFormat::WebP.into(), UnsupportedErrorKind::GenericFeature(chunk.iter().map(|&b| b as char).collect()), @@ -137,24 +135,6 @@ impl WebPDecoder { } } } - - /* fn read_length(&mut self) -> ImageResult { - let len = self.r.read_u32::()?; - return Ok(len); - } */ - - /* fn read_vp8_frame(&mut self, len: u32) -> ImageResult<()> { - let mut framedata = Vec::new(); - self.r.by_ref().take(len as u64).read_to_end(&mut framedata)?; - let m = io::Cursor::new(framedata); - - let mut v = Vp8Decoder::new(m); - let frame = v.decode_frame()?; - - self.frame = frame.clone(); - - Ok(()) - } */ } /// Wrapper struct around a `Cursor>` diff --git a/tests/images/webp/lossless_images/2-color.webp b/tests/images/webp/lossless_images/2-color.webp new file mode 100644 index 0000000000000000000000000000000000000000..e461330dc586b55a697b3c579ae5e1d207512ddc GIT binary patch literal 314 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 z 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

khR-0Bnq-A$QM;10-iN05~M&vd3=y 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 z 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%0DIYQ62cH}k*~EPMX6U+ zFy7GB_5m3T~JbcAI3msxpL0>MCe@yjS#$I16kf+aQNTSY0I)_pboXjN%3goYn}VgE2r& zBt~wlKq18L2C&PRX3i;Ni&Q)h)qD{uSw~hO`p=q<*3RWO0R8wB5G4)q9GfCPS@gR^ zGlYq-ERS5bUHI!^$C;^fw)ri2m*?2|E&zaGO`f28C@~a`)F((dM{(EW-hYdIBXToX z=j=-P>$Na0*DmZ527vc=nwx+Jzf%g;03q$t2}0D`8yt&*j*e&(<1F5!Kl(slw47m- zvm9&enkiO;WAMy%DD`Se(~L6M=D1Ta5cboa39s12z-Y6!&)+bqf*BluGd*WaPce4J zvvyZH`v{PsAB1KMEI*%+#GWN&kNU71YssY2ZNf1K8Bjq|oDlOnAQ#s79R&>=EI4EH zE~O6N=bnkNM~t!3$>-0BC^aB7KOvms&kS%xz0o?F<9OPH%3#!Nw%^9%V+61zOR|fx z+r61^e!lO5S+qy!LQur9Wj;gp(SDh>0Os`agr>LU-FV2cfNpCdod7iC6PQOH90gqam-^^+(r|RFKJ>+wGfoO;HwNM4Gt_H@??8rNV5v*hQ zIH=-S;ErB7*COW z&eao@|141vS(-O?=jhdKm>6Lek)sCs83vG0iCd}g8HV-eBgPLCD#K82l0NTj`e$e&q)+HyBBY@sVCn`U;3u*^2F6IJbPT7|hE36+3l1Rn1 zer@f}`=|||wH4DRx}LF) zAh`Or(!Lor0yo$<$yjBHI9OC;>~AZJW|zmDixCS{BOEo*G~3OugBhbFGk|p115h~@ z?<8B;$q5>2AI37FJ@P`D((jx$$%kl;Az6`NMV~BQe$7;d3=pD?MsmB9Wy7!6*ft5 zlib!^;TWYEW5DFiqP4b~)n8HbYEOkHE0sTHyo|Xz*wAWzj(0s{nTHr0Ay)TIm9kCz z8K6+w)3WzW(dic|jjAd>X3og4^xVsjsZ2X6K1cIru%bpq)nCFw22_%slZz3I3|Y{7 z9s*gIV_{=qLRfVHv&sNoavdqo&EEUB+J=1q)Cs`p_9?&jS)%3*G740+U}kYWg$ZGl zI1gtyVW|lfpZ4W_b|IY&0EZd6!&uH-^wFVB^q>4?W>s3)t^jYlP}Uwt3^Hg{VSTYB zABXIX_#HWwo}=3^)?kD^7!Wabe?X-&p2%LLGT(_5ttXoAlh=V&+O=nvzrnlEQUOh4 zu0zH%LuX+zs~Wi+2gWBHceNmU@u|uMmAnl?R@x;*Tm@59=OyZmJ;t1GVH)k((?sn( zj${j9`y}4W0M-b-Du;@05vt9RFaQ#5P|1WzMcV*xhq+gAZaC6vwyTA631DMuiv@PJ z$gdBx2P7Jx+oNC#XNZFQuU+g}WK6*Y-{ExZ#lKN}BImS+r~qfGnD){Ob1vS9{^k@M z?0I?@*x>0{%NA<_sem$KU!Lrph`zHxDOr$LkAFcR(BAaoTu#W0CK$MRefzKXg}ghr zQS25d%z!`m1Gy<4Y`r4y{(DN#&y;@rGx-lUWl!H!c~`4{@u@*MZ8KpX1A>YtXBeK( zWcC}%B0dXf?5IyjgyK}8#a)bx#j>Y}W}vEFDq!W#@31dpajIJ=%K`lYCU${TWrM$8!t`JYtE0S|eBb;)2_8MaVjWt~fB+oi1huDC zxgknwxd#j=CESaz$T=lPjG@5kjG5{i8b@x5xf@2aHkLeJjrcnRtYID+15(QXlI1G9 z0C*@-+W@i)`XJo%wotD29uA?!*Gz`_CC^_VFO>7QzCnM8>%|$&f^iZ8XMNUgIN*5L z*6Ae`%D+VZ$OZ+so59_mGw;Sir5TD&4h7U;&h&A2pY_EsU0;=cOHuEPbvz-j$$D;2 zAgod+d9LmtRMm+Cg6| z0X*0A*O2`*RrwRtVL*bs1cU0GBmb3Vw-@=d=i{!UMF)YM0p=@!2-ObzFi8PC<-a>Z{2<71w=}E$g{S zE6mYm6_C?elD@EaV$RklDqJEjzDE$KNMG|-4}BsG&F+x*sQ_y@?Xs)VA)#<-z*;Po zY!Rea>M+KE3XE~~hPBLwy-n^(zk}Mw&krZ&?g*bSQ05WQs1{&8)W?QrKV+U z9vcrXnFmg#a1Qih+u24Dox=_R#?WbDvm-fU#^BH&=@-i@d*A={()V9oDUPvHX-H0> zbwvz^{D}uW_bLW3AbkUaar#g*yg6P&##+c%g;fk?kThvIM|r&B@UJ|vOI!KBb_67hGEx3S)Uns9ou1V zm39FnI$@PO6b2xJ8Ye?Q3;?$Tyggnge~2E+WY=3|fFP%GJnd7pRHeor$T7lrrm!~J z#Emi^0FEkMcEy^^ksl$06Ex5g4F0F@!@zJlP<LYhL+Sc0g^lgJPj)J!%&t$L!DM2EB+=aw z3>-EroR2Z~)aL)EKbQBzCvyMd3*?H@Qi!of8rwZ@;RKx{oJ|0&$(uBYb1?-T-<@jO z9cy|ECbA0?xtZmm45|b`@Y#m5tdlRfpDJGSw0Piaax2ClsWMFy1($%{E(ZFhqv?&M zMvZ4M3|JFMZg)mI!=)B`WcY3a=$C|=Z!U8N88=bcH2|>8^azb+_gJ%l*%wGI!&nk> zEbfvOImO^mp;edT3M^OMlfB(1K`%?s2thGe+cLy#FMKWZ2?gIq_xp+Lm0Hf6vGfZ7 zEC<2F>@7G@P4a+&mVl_`Wc|oN7w8AbvgcDJ0jvZ^=4Vyd3`~TOa9I9=^}%6>{5`^6 zFz~odm|a6(IcK@ST$iSMw8Rg8;>ijG#<&c$O8yOWj4Eht9{?J%t`UJv6CkRncp0kj z@kGle&LtUW>K^9|*g+@lnOxogK@^cqiOM3mzpOuk4b?EQIpZYU-hUHz$r`0cTH3o1 zU%*4r-=qYGJZ1hfzzxS2ZR$ADKgy_1Q$T*Km%%_r1pVp(IQIS`JXS zD2^qZT?4Hkm8w+dFbEfevb={~0BB|Z6e{S|7+@0ta;#Mg4CL~w<#WMaQH7b%R*0ek z*)B58N*NjjSM5S84rOk8rn(4k^Gi4QK4nhUzA-|(%H4o3znlReGZ4=&k1*?E zvUb@44U(`0l>0UgK1|ul;mMrEs%%2Dhe}YU^n&~j?ctU=0Pyt*h0f4^02uW{mV}Da z3E;vYsm2*_=2y;xbatsqR@_nillM_P01ZQO3#{?Wmw;bi{_ZA##CkCFJYPoGWOwIV zlGSckaywP|?|utl+m;s}vPM+r2!|{@$hK;VZf$B@9%wlxsfsLSYeUU1Khd%hY4yNl zM-FjCGPZ%?7grb(xgc^b%d2O~o*ZDL7;6(|)SdAmw-Zuzi>rhh5df5F^j@sh8VbIJ zVdES_!qCM&b7KwdcuU4+B{Ep+EcY&qs{@B;Y z7o~uiEj#GEEiUsPy#`x&BO^R=R5=MzwK9qLO$BGM#;+3^S6nUb09=SFWF5x4IANTT zJqO)x!)pDMD(8^#AY*$4mtEW$wE$Q8AkD7ADdVy+?ZINoo~j>vFb_f;7_qUH>CKsf zQyfGD(_%jMym`BCGOeQ1s7r$L6h$c?9J9H(n+M-BG#dkl!o(DOFRPxaj%!DLtO&w~pR=CEr-6H;_ZvFl2< zqw-Vali(anRoS!2?9D~?l8^*!C|_1o`w1a$+ElTlR;QIG}YvcPetwj;i z8H?V=CPKf0)7I7T~ah!8b-!8V4kQF|wy6^th3W~dWXHDf~LnHc` z++s{+MqlRxvCM%I8JQt@K~;riMdRD#FiRQoz*r~%6wg`9YEyQd77|ru(uMiZ_XeR+ zqmW->D!Pp@YOClh%H=u3Nc?M&BPUwm?IXpP)@K6zCk+tjzIxbc9pjiB3O^}_}(sxw6MoQF1xmem7+b2 zC1-Fc42FJY&|B~$gFD-^$klqtA0T<$;kyM!3oyd;!W(>@a1Ke#xKGl%(Vz|5odO^L zg+ui*1%p)N`w-z-ZkLK*4b&2-8W*xd;SMu<-%h%-O&ND?qW0 zeI@fyff*dE%5kCA4*UDeFGMbYL{?nqI8J0g6Jzn)6eI9%{El`ZBbXPSG8x%!42;99 z_+V8$dp4E5@Rgb^-^2V+OjvNCC3{1f2HTDo0W!h6UU`Pj4fEo`)xhnTF)K%D{$jhyVhQG1S7aEp@u zdpj)KjJ`M)g*Vo{+SyWnqo<3t17uRC3zTO()A8#tIYPx%i6kuvRC}ty0s!!ro}xOe zR%eDs!Q&TXeJ4*mUkN_JI4nC ze)Fyt0VxYoBzBW_VMO}|rs%l?YcFRTw9U`uw(NQ}Z{~sogs>=@UA{0aol|(0V7maNsSaBBV@4?| zd9SYKCZ4wbQVf1_p)@Jx#&0>4Y|z61VJroV9M)u;u@5wqu#$6GBvWEm3xQ0c*9PP)SxSX6 zf7s#W3+eK?`t<`{tY0t>@*0eZEH*UW(b0X@n*Zz~#N60X&O+Ky=lB*0;eqCL6c)oy zEw#W{?S8T5^p?u;4s+Qe2UcWEbu9t6S!>KRVIJYP8E>L#?F2=oeWq(yW82FX_(c|O z1hDXk9E&|~iueRY2YAY?0Wyk<$Q8A!A2cyAz`<@KW4ho(emMeUfE-H&)&RgYkts%3 z=`}GB=8GQMg}357t2Q>qHz2-Ub${A|6_CijlTv-7C~!h4KgP&f8*=XN&^RDE3)Gt2 zmv=>Jpnj&{oG^Dt#j(k8B(KWT7C*`L%veiv0_aDwR@9=_&zY8oj@VnS?N%HI$8XnV z`HeN!0#F#S&J=*6(f~Gx9kKp)51(BwV3)6$GdA!eJBIFJcZ7R(6}eqhYCyE|unC-@ z0b3>AR()|BZR{v0bcj-5f8K$n!5LyFv40hkUpl9$-uce~0L}T(1AG85O>ty-MJ$C`Y%VcE4l+Q(jO{Rv;#WeY z9*aK!cu>p)BhKHghYlqJfNIY93ls&zvU~30K0@B@qF_VXz`lxT9mbRqPGnhAYQF}k zVaU$`D-hLbqaf#xl)gBZ_l1=qV&?~Z6@lCwDKxd0KyjQsMvR>l|s zdAlveo-k@9V(Tw|9JP&wAsBOU3#PQRy@I+o8PC=(RnbdwJ^%%>x2M7y1I@0GRTJ<@ zI1vVAkASw2-jemM&3BXBA_}e%>jDeO87YWpV5&LbwnUx)y1F-H&pz`S^!f574&b1UiYYm>@>xT{v`ZU3)%sMT01Yz;Zv}Oy@`d@KE7;5PnySx=n)}FPLFiZ? zv!9CFSzVjw@5nn}XjJ%E0U4kOpDL}rBrG9>AxxPx`f7&125@%N%YLDWe?Vxr z0dTBo=AV;eBBx3Ium46Lg9UJrVGh*jD%y!2!#&R%svS2qatFCQXI+?Jai+@460FI9 z1D#FBDxLUhJZ|JHZSoyt3iBlM#hjT4Ubpm=Q12Y)FhbU_@Jg>FpB!WH-W_xY7Fu3s zP3kKBVx?v8rTk5f#ZlTtm3EtnS0fMj($}Is*Th4g02Z%6L|~#y36~o%jk2rNlJy`x z5Y=GptZ~M8fNsK33>ZD|Nu9W)238P=6-jJ!PZ-2luI`>*%=FFx1IWq(H@L+=f$U6g z-QuUV8_x4jW8a7vnZ~j0R(Fp-ePr5NA!U(+;qN(0VcWZ$SVz`VG2%s z4Sd+uM(%p0-L}_U@un%7sdMOa)!;R~T+~OvxfbKm@6C~39_+J8c`&xn9KxG#XVSbv z;a#986pW|x+Lm<5t{Z2_gn8s6?Pm}474v9`e(EcTzwSNbNhvB0Ugdmp`Po5UCua2k zfQ96dGIUs;FD;<(;gP(-LjW?BfWLsUN4&xgqp9s<9ov{ju1YrLf0TbyI-Uoq9q(zE zL5!5GF{C`@p->vGp1JoK5B2zdtiE{;AOP7e zymY9#2w11dm!!Kx0?PeeasUiiQ_gjHxzIlV;E4q`&d1OYy853^SXz906}iI#(s22iEe?DHIh?mo@g%}LhX($4712% zfylv@*N$VZVsrWpK;~I*wf_fyWPiDgH@}ttV>l<|$UCmzYJ-B7KR=A+H}9}K;5VXZ zaI;F_qvQ?Xzw=x2CDYZTLT&tJr#1sGlq<8F5t z=l`16znVq+KYkOZKRb)jlX)B*d}8V5aasR|Xv??kwtg9t&6~Jb{&j5Rkq*j#6XV%c zjHa(R$SKc$741L}_L z^r3GN|M)mI5B6hoX`Wf3eMfiy?i+?bi`q}Ng@fIgc7GRHENP|nUEfCS^fsFNbT11g zUDe1B95*Ce0pCh4Y|_K#e&_S?A|?-j$1(U9s^gi|hcN@@<;m2(^oP^iFz(#mel66$ zdlcoY`3w^N3&@BAP@IiE*I#*ce+%I$&t3USJD4kMRF+&J)6eep~Br2 z5TlEEW5xQFG5zIVeDJH<_7-DeIp|@uI>HJKoe~OGvASin>2c~7tjE9@%%-td{T72A zfFK!eFqzQJrzh8Xw)M5e1EnElIeWviM~8)B7qRsa!dp0Kp4ZdS4sD^ZPfi>wS0x>2SChT zI~I^Egi{H6bU`OTjmK4;*%aGAV)PyaFxUbRR7DMaWQ8>3!SZ^+uy9nz@7iB!WU0EA z;JpCMlJ3Rh2WH2(R9&)~n#G1>h*dS$zuGp6e{4L$uw2fpjuJm@qUhJxG5;DsefyoT zdPWZSqW)j}m*!!uUkRbV_zK%K_lpZ{X^g6GhQ`t6U3aYgoniD>QS9wUp?b91yBG6| zc{HcJXl^}--rMcS6FcMHR%||y!+HKZ8ed#R^W}SL-+KJ1Io9Lu2_~?I0qz|Do|$#s zi@o-r*#mCIRGRNKzk&J}1NbKl{puwd6%p^Quw8m%Y>fwxqp@`&yckFOx{R%}!^qG- zF9Ke->QTHj*WyMFgeU)60cb3=;W3(ySvDuax?3Q?Y1{&by$$0Q25lWnQXfXE+{NgQ zqRt_;-!i(%1!Liemt?2#v`Xf3$naO=nE%7y#NzA+bA2tTFS0nc-n;EMeflM*)Qx-? z>*~10ajq2w81Z+K{99OsLPF8tpn+TYlC@)1(<5tCx8(dto|BeO=BX=)Y)v1N3n1#z zdtjA!G)+}aFzI|NdH#Gz^#Be1S-*NkJixtatiUAi#*kMLp6`7JrgnPJZZQ5%m3;RewB=*sv3ziYbB{AYXLHO5wH!FabWmSm_V@uG`28`Ox`UR zMqO0}V+df8*Y#~AI`iBl($>?Kcl)t7!7`)6-b}Q5(1TDYnMR(>Sv?XcQOAN*03llx$N)2{vd!mX4CfR3f{nV(f~oNIw2>=5@(TewxHFeL}5Hz9|8>FLIpa0v!9jL7H@USqhL%mMz|jG zrbhshA?6rzpFBR-D=%J^Pk1~ z#f#XS@?;-=7{$k*0g{Kp`G@3S?p;pf(Z_N1R7mygnBnV>Ol~%BV@y%k_n*dKbU%vU zyolD*pGM>LJce5rF?ukL#Y5xiY{ky@FQZT}X*~NRX3yksFwb0v`4+G%cZ7exh(@_> z8<5%vFKWlpZ9Iy*&6gG6tlqq=6gkiJs^7>}$*;{MWNVmRal_b}ThW~LDw&k`o-m4G zOjoDcXSjL(kpf74-j3Siqv~40sj6SzS+xDGX1omUlR?A>_oFd5h??*@pW>3YLP>zi z?|Jvn#Xij60lb`z>`gQ>s!)_z|K>~VL1LKUW$Aq}KZ{x83VYFqd|^JLFwZ#8TO;Rr zTa$;vz7uP~b7f*W(*qfnt^xAw{(?%e5%yI@0A$p=IgG*T3BXf9ySs}#QFTKNJE!gF z|Hd5N-~~tYcn**y>6Vvg%qwk${niS4L2hg$pUarn=H;Cx?#h?+Q2V#^6QInSfZh1I z3v&PaWPVgPL0qUh!}LVR(L80Vn_6t$+>g%oC+b5|HNLL_h((IdU03SuVJxw%WcGQ{ zbQU;n+uyS+W1C1%V6b_!$i`A-)Os(lsp3}S@~6{B`ZKQt_Qj#%%+@Ln|2yq|4?gbb zvIr}!G>E5OtlqI_6YxEj1f3&Fe40adndf;usFERPV$0h8j{ zs?!`2)fVP-c%p5}av#{tUq$WuTgpvv`rd5c^Z6u-PoKp4@^_Kfa@M9Vv}KHq0{~>V zxKf0;AGPCSbAF{y%Yz-|lX=z?a{!D%cC~&%{`Nh5O0IV*-8?t&q@xiA%SNL7_!$t{ zH$H1AH3M>m9C7lXf!o!Y0-e(=;1U!w2(G29tT z0Q-IGe$0MxL{6`x{H4aR);g8@I&2bneh?s<$3ThV;ji|I#njiaoMa09x$>|Ovg&PE|1 z0V3~Mnm7Af?9x$;#HgY*2QG4Isl(+@52L=QMd$2Q%zKQOp85$R9x3-*v(_kjceChx zSBvp~^)zl9Z>Vp_Z(P!+lNddllkrtdYn;SWIjJ|Qey2r@?$3cI{ScOA!D-zQ<{3wK zxJ6}DKF^6qHF@#aoPcK$4>(6*=Fz7d+VhyVUU?r!_k~>31#rJB<6!U4uyA&O9pzmi zZr8s7734UF6+8VH*S?N{u)8+e!<65~dV3VxS34Lrr+v$wZxIVlv^YMX!=vcDBcD|( zh99yWe`%i-6A1Sh30TJ^9``$6U|cPwt2JdQB@sTbpFe&*>2WD1D~vEJI^y zpjg9{F>HL7xUFGHffW>WmgM;5Tf5%Z!8T>tSfo7GJ3XhQWfTXz;Y^(T>YTFi@;i=i zo6P)oaA?9{NOE!JAQQ)ElI`VR#XO7+>iOq=;X6-}+ib#QCIHk}9aGdUgOMQ$f(nQ?-$Nx3MY|E)l0o~szoI_-##R?JMnrl0-J2?MD5@s$IXGO=4aP_ z*AF(F_chD#v$lJv9dlh+8w@2Yn0Z29-Ud1^^C`A`H~!5XnU+E=GP~Uy$tm3OiVnpB zS8Z~p3%3+|)PAe_HqlSRa%{z5@g(ZwJw8SvdMf|)WGilV<*kYr@$~tp(fpP}`$$NM zDJ7szDa?FzCV8(U4;0HG@Ywx2=9zz)VIN)V+w?Ac%yXgg$;_z}85-qNs9RTD>=Aa8 z;JyYPqJhnc#o*DK*R801^oUOsijc)psIlmn2ZvQVSV#Zp0r6eNxO~ni$gE{v>V@x718`2pgv@i}!u*w_gMJDA_LDT4Gb8Y+4I4bR+G=2lLBA}oBA%G0vu`Bx%k8FSicq$@7kssk_rep zguV>41R^Sso6{TZEVW~QvW^RFmT!R+FJAz(V$U=gxX_}ga|%oOqpZrU?QC&3>m9?l z9!+z?8WX5CmyWlv(E?^1L@i||VOne3CYQIl)z@_BJFuyJZOj%S$8Fs(kSS*WWUF!_ZZp!N0z^jp_jxQ!J4@HnXqInVh?lpr1&d&R%F+t`WPeVbcAZ zT3jEl<%&j83T5)Ln@ODUoI{3oYug6!2p!}nr=|Y<-R-}N%@uY3wj1L;y1>isbbk`# z<+pKJ{3b@Tm*xxR0S zW1I{u=j^y?j}zi}7nr{Z(Reu*V=UM8nCuCg=}hJl^A4?el<MWcIM^-eM|wj@BTCPlcj8bj&z2)XF@KtWM-pgYuQnZLCe(w+i@%M=57c?tj@Ixb>N`IHo;NXT-bMS@XE8rKia07cDg}}k z^in_T^IM<@)UzS-nOcnnjF0QHlNCI=26by>C;+UP}>2*v}~~A9HFgZ6FHy zi2GH?x+4`@G+4T9RVgYZGQfO3VTnB@)5_Br@^4K!vSN=YKtBr)lx%evFyUqLFPTF9 zp8dqE%R98X>32!t09I>2Sn~EsGO}En%&LZcB%86anzGpXHw?qsVpx6eZy7M~p=8j> z*lbI{LcQsic8rxUiY}Tdmz5=Lx~eUGCTMMVpp$#{XV{YIA-9%Dy=mD0unh$4_4_aF z3qTYB%EuotaBZxo_PdJBIpfb$G>(*hJMCEh{eLtD20J*3)%P!rn*!Xs?|9ov!Ue{w zmy9!kg=n+#3b{Gli+C01` zINxH1SN6|*86%4ZBWRn`{5@caVS%eLTwtz}oE)KjtRbLTPXOQyDF5Aa04|(+cP7UL z3;{sxP7W>C5#!u^-hRxD?cAyvxVx@L7Yfx#zZDs;w(h3~`O z>uQd9ZqwTM3BVH9;-d8rF?zHU+r?+PXv-&EGRUu0)K0Z<7enl4)srIvhE0{}#a_0p z)fxjABUFrqlgPI6#&&t9)8?t~N0PI~z8L6-K9u7!S{DF@!QbpK4mvHHjyNtQ-RY!x zWrgzY!b^%}z>@0DX?$uDZpnkK{Rerriz zA=d|GH0@Ivo6xUw-lRty$k4hNE6XsaE}*-M+ozm<0;P6Hnx?{`)z`u`h6_~IZH^;} z0C3Bv*lcE(65#Y=$*wrEyt_o+s=D1ciW2bL4c^AIzmBF9%VKpy_1N-WGg>E)D&|$n zkFMx+V@OBW+1{E%Wa9v;G2)!li3!`5W6ra76T|t7XnwN*4S;&9h!uyu>H<+Ik4)y5 zQ}cPlK86Yy9c!FycO(r_v|_Sv-Bpm=*ed=;m)QM{6}uV6{1{+0*_lu@i)&e^;8iis z%nZ)Wk4+d_p1L$TRGl@}WUgqvbq92N^vwu~%Yj6fpXoN_Bt|=B*|XMjfbb!Imm|fb z>{Ibv0=0ksWq7e311S4u1uQReUQG$TL*VQ-$6Zb+yu;SllpD%d7u>eIbOV3wK;f6y zkl(iM9#0^~pEJxdL#CNyg-bjr~rJIz9>;X5-k-Yf3E=U_U|Kv zBYFN=F))D{4{IuhlsZ7SygM%6 zG*aWp7Hw=V70uQxM^}I3u$E(-0i{ep=b6@dzRqyw5*3wGbD9mV?Pxt#VqmJi6qnlx|d8slB;ETeg*x;W~@_+#VZ zu!>7;sV`S#Niy87k5)0hPhxDQq%-y51wdmX)GDzoK`-zAnNJeRv%oWNw(bK$x-r{U zP`I-W9B5u!*Bx}?YW0PZzfiBhWLsPV@1Hlun|}O`zIIdqF{%UNAnOfQ+W;CF)@3-n z=>p^-_rV(nPz$ya#mC+6_fGtLITZ>;Q2f_j!61=1y2(|`(XlrM|@YHFOwPh}b75bf~J3NnB^JKL{ z;TW%(h6YnH08A%yLnw11b5_o(#5;xC6bF>?+UI=v(@iqCf>+FotJgO^6I_B;vch~w zLEdDrfat~e3ySiPU7cfB675+oXGl$gO~zKMF)*I5Ch@tJ=w06e%E6_=CU17&_xU?7 zikggs^41(56uipOt*&GB)!!L!14FqbOY;@#m>9qTT4YyQb=?*o*ujyxwLA^Ogv9CQ zYI9*M)l~CkLpp^lQq-G3&UYIqhwT>BAc?Xa<-T=d6nV{J49E~GXfXcuz*P#v3}!=1y0$DwroK zmqV=N1v2`8m=oYA<3bqE3^-KtmlMs9FTpyQTt025+1!o(*VoZ{OV6Yc^7Mq!PqlHZ zzmkDJYDpZc0B%jAg;3`m8rnY;Re@ki)>&O+77STvc?cUmSN;1ESUi#N-qwfy@_CD$ zZ_Np%z52y6_Wob>n0+W*IumyP89l-3X089(WY;l#I01-5;prl_|5-@;%_b&4V(d~l z#V);-d(A5bn)7Wrt8dBk6l*nh$?L|tAC1Qd!Ajr2EGw9k!S(y)u6-TN%{F~p$Kr## zSoSef`nmmejvqr)5uEK~Riu@9CX&Tq4K3J>imUJQ?+*LjO)3uMgF3|);42|k7kx#mSEhlj6!Qc9|i(UEQIfx z)SqJ~a!j`6*febJ=H|D2rRej2@B8r)FeJd{U;b3>pKTc%TrpSdC#k*V$=d-{EH{78 z{d~+Q!5|~WTG+Q@%D(4s)!HQB*|*w|~3~3xO*7;XU`Z2AO`@M!^`t%Zny`=ujSxg@Zxzc$WYn6}jm*HEot^POl=zRNrE=}zf z&vcLvo)ykk|R!67!=29K`5HmZ6-)z0se?u=xVxn(D`V-kQ9S zKN(6srmK!Q=FR*Ppqp>}c83{?MDo0@?r1w6oc=4hDE8Iq%3mGFaPXQ8tsZ&hlcI7S zdE#iEUzNp+EOIPPtjRwDw;eJ!HqwnnvZb~;uw|5&4#5qko+q`Y{^YYFDS^*)o`Pl= zp7-ug5|dBV>3whg?+t{HQUE(lx?}g;Uw@s`0XbT;S5h#8dQ9(g%BA15o3>K^yFdBl zSJkNtI*zpRl@}^*1N~AVD4zK$c1_mN*pCd$GGthd09DJXX(%5dmDQ%zt!kQbY#R7` zL(^OW#DZb1fKx8&41-cN3uWzOR(S`9%@kw{7pjrlo=i?g0$3U(;94(en2Je)NmAq$ zgISBmi70A2kAUd~E84Y>nETu||K)hr65g9Jbn*{pkM*6!czYMk`>GGTNrKnvQu}jb ztH~o7XTf{rjr%gcmB5yuQsup-gq%5uQz2h%%a58pHNNR0$~{7bZ<`f`wm7T1f(#tP zQ_xxMdB-9$6y~;##TfJasVy{I#V&8%llw^M=+OR4W6imzA`ne3XZraAn zr7Be6zp)0O8gG@@2t}fd?2=(ey!ZfHYxNjQtGfF@??ortwZqu@Cn3`F>zF^O$JX70 z*!%5)1oushpHkeR^}n0N?c*EDS&yB6wB`VA_Fxf>n~3fIL{^UuqPkFe3Dn0zqZaW~rU@;*v{>zy3U)-Hn`#o)IMxh7tlj?a%U zpkX(Tmwyq(*XNj+5IyHg*3By*Fcvn=KaQq$8h_78cD1k4T>t7a>Tdy)bxVM2oCCft zQEyobYu-E~9P88h&iY`t%`@Y>({JaK*lqnx!gvBS_F{B!TY+|tx&OHXc(LY9lisx= zAIMsx138ukm2RGwG5$#ror_jl`6fXg=UpUYj% z2GRScMYO*FvM=ePwI2MfIi6j|-A9vXZ#||niVkrWgWG-6!KUO4Yf}}`n@-d*qDaR~ z_wsp*4v#JX$#bjbm|TDo%=uZVscE@ za*3_GPRvf|w2-`u$|2)Kl6Z>@(L87I5>%7XB&tLIe6=|I^;Df z0Odt}P{CLL!F}_Vl$Q@$y;#TUI+-Em8ta4NtzQ|Rvc_gk@c`-a8o*7&@~?nxTT{tj z8FA%#j3KL%38ZU4kU*0~i3G=uFttV&c@1EwbQ%nx@jp&uJ?7P(r{gf!p|=DQYLXze zd}Eg@07ixzo_eK^^)(g<*eZ|%CJw8{oSSlOvfr|2yLPH4HVA4U5$ zZ?9B8J{mzI2E0;wmkwy(0=YTk11foAx6G@6ndsddDA)I*v-1)8S&NBzt>}n&q0VWv zm;2GaaQsWn{X?Dps91h&Zfn0yI9SfIPAB@ue|@Q;CYE7~`JXh^QwY0u1g^C+|}5OW(HWSA#x2e;%#BIgj2a|01?WPl5P6dcQF@2EX@DgV@4` zGL+8TVLrvD{{xwR$|ng8fUa@$I0oa#(ReY6 zZgCQMW5Hy^+ZPY$zYv*|sPdv)eIfK9TD9%yw?B%*|3L&bx&}t<>k#MxtNs_l!7uls z|6M1R3P;^5a&Bl75U(dHwVgrK2cowrXFFXY9&*RjC>_Ug7c;}wJFlgNuB;J9S=|ro z-~I7}Uu{mu6rNGN6ASYc$&A(vVWZJZPP0nysw_M}QvJM=pEgl8-e(}B+W;KM4xNf#Pe+lVX5M4o-iDWq&%PK`Wx!b}#!B>z zeiwLH@GAgT0>Jx^7#?8sS6kZ+5LA!Hq5!c#Yq$0^UU!V`*;byyKtVS8=kNVSR&6|2 zf-^%)Klq(YDS!2-t@@Vl7Hq+jP}17LWAX;nS6A4Pc7+^k1&j5l3xM)82dwUb0d@C) zfi(bFtLc7}56FIf7prrFOyEp|(p^3kx_TgNIuZ(%6(L=dAD~iQil((nBob!ozz^2B zc^ovAF}yMca&J|ejf2tc9L8;L7DFNas_V6L6w60X94coqxG%KcV`#^6HW4>R=P}zE zMg4|FZL)VwKvh|9WtQ9=)XIN=34${k4_yNN9#Xd0Ln=;cTS=_x+k(Ay9b=_ zECgO8)+SSAV+1vw>qt=GEI>0(xG0z|@}gqkHg^X!gj%dhBdIi`F%px+ni?EO}~EYqb}7yPMtZe-*vafprm1W0CFF z!&s~@h3L)LIe!|Hr*d$|n;5J=GTna6w`Wlz65R{o^8E*R3LqTH$&TnSd&!$M=JON_ z`dhZhLi7_Y(T{mp@fD!~A-Y>)MtRTe4VqUa&M9wYT(4%7egR~#4itUUP9nW zlzcDtccZp%EWtPjA2T|h=JHH)7Nw7^&3InN<~drKFI%6!i98*lymyZffW!ROy!_sl zcjz+yG0-dRyG41^BFQ0m_uABac;<5NeiYB{N8XMmFNfG%jH5KK8YRv9qnDrkJn}&u z>sK!vM;5@K0Mwc6-dtS8X4_%{-r5f1;(_x)wzYpAd3{@KlPv`f zp+?MiBaX3+JoQ5LBrI%k|HIgvzcua~APwm98cUVK#;4CLq-6g$_7gK^)vtPNIT@5d zZPP>Zc6huJK$HNyuzrn2tbdTVJK7@?{b9DrVDb{H@{^weOftoaYBg&hySd4*d+B&y zesXvhi@l{1IFQ;_Jv!vYwKqAQM%!HHxt;|;!iJWM>$qzF-tW9}`STe3=r3Yf`!x^B zJI0kN;dx9y1uPg(2fB2}_oGoCMLrHaPjivkq7&Lw^(^RBktg;II0sB>y?7O~9yvau zd%HW)xc3COzLb=gB;KAzT|P4}WvOw5aW;#_Az(kkEV^<$056}l*%)3{tfGBQBZ+kN z$Q+M_qzxF|Vu;tnsQ>FfkJ-B~MG?T}qYtB*awQY$$Ys!1IW2V?s z>#am=5!V}6fQ z-)R7t$FY){phQu7bYHbiEYP$5A0N{Pw${Fg^&uTQ*)#5k(P$eJJ)1rTQcL;F-hHVK zL?qkevGYD#>tZ6bp9%TCXTS7i$@~kc5n*oLwkYqcsu4tk{?Nba@>ITW6U_%ZG2b7^ zy8Jo2JW~Z$)w}pwXpjB&=u}63?x%mmMywYyF+2Y*)(3R-Bh2}x8_Q4j0Tt(T?-P~J zC6FALBZqVVG*7Rhb$l;6#xcG9ff*RzR+kgmi>Xk1amYxw*vJN6%&kY!0TfL}3{;k< z46FfR=ai)@@jPIRTRY-NlMv^|`kjnEb_8tl;j6XoV@kF|=?V4jMU)g-8OLOy`u$67 z@yK_Ck>E#ARk;-#%gbc)yr}}XWhj!NR#ld-i)s7DAZ)2}FR8qf7eJ2y`$86qm)8uY z!R7tpvyz#&ZwU$V+DavFKryktqK)BQE`ePERIs=mtf$`s99~+@=fCBnu5upK)Z(}O z9t5wQ(N~NgYisIrdkL6I2j~;n%3@Zp0*Dq}zty!T43z|sj~Zx-qBO`r-luvzmyhYW z^18B3sXbw5l^4?HdLw*lYOl>B9~@EOkI80(o$kiw?DHu1QQ?DZUtd3_yh8SnfX#y^Niu>VEa01*BIX5e$;NxqI}Adrf0f3AtzP{OlzHe3QWGqob;`PgLP75fW9&2 zyxD(o|AVOi@)zWN3iJW2Z0LH(Y5d}U6^qs12_eW}HDv?^MFw2=uH)vOyp-hmY6Un8 zY`2c)3n5z@N%Q7SJZ}7weqbiT^GW|Addo-V-H!9--$tj7k^!vi?hDSNjJ)n{QofDD z^`FP2eIBFr4**L}sl!0qz;XSis#FnHhb(2beZxsO2&<7N+-Pmf}Kfkj}> zbB^Su{K6dB^4?v|hv_V&BCw%_{Wj&9Tw5P=wEmQ0 z(;UW%e$0!zC^GMaX|7rv8Qrf)47P#dI)hV%;G8GF z@&al*45hP0zzHr3038>fF>XNUI9Rf?w1pSh4k`3d0ka9zq}m`DcRS1jUWlj zs(W2J#$o_12NI< zpfbd;NQBGd0;AnewEqgzG=E08$py-)-hPh^2SP*&zoIaH&-23aiQ46d53wC%KXr_p zU^<9A&uz1j2Ym8b)DB+jek;~{pTzpB@9lr+{qHb3AYxpZD@?{3@^qP$&%9(_T9g12 zJbgLP&)ucqJhw zB+9OSje9{4CV)WQ&-gg-8YcjZ@+N(Gk2Bb5)I_Pztl9~RWJ?)$7IA#rq%94sul()Z zF5n6|p7kR}eI3*KIW@W^M*tky&E|qG103s6tnMNoG`cFT0nzhV#nkxU>PcHd{5E@mn#fy%y8}yaZfZ@)kOI-rx#Bn0u|rswkR%$3{1|F{@q4X#6kC!5SOK zbaM`D_vvL_Z@2J6F0%h5N=fi~o%3x8C#6;!`T-gV7X2G#G=vL|!on5S`BTHQY=~pj=waI39>gt5e zW|N^)s0Kra(&fQJa(HVp8}B7UWUv+>?_RmKu&Zyr_WcYy5oe;bYgIqCj4cc({>QOC z{hH^RMDh5U_Mv5qA|-1oyd(+rOtH=h*dkKI_uF&@WsO|hx!nfI@d~{1*VKYM&MO}) zUZi)(ZE|WPY=2*TWG|H5r2SmonV&`Gsfwqx=?jgZ_ z>n8*@6pVWVSa+f=5jyT(X@^Y7%alpuD)KSr{o2#`a`k@#PF%&{B|md7hVw5asJG*A z@gsy?SjNkDJAW8&JB*~E9}aF5-xfw{%4^00B>LA8m+R<^AIC-UpS7~A*g$)=r`*n=0+8*|CsDf^ zM+1&`CYVkKdpvnSKSsCAr znHuGd_7ZRtAo6dW+t^eM%g$oK6l=^APaBIZYFYyTLOYBz_vT0ToomMB z=9PV0;AKfC(s>DoZMWVqTuiT|fcXbAv|)wvcmE}ry#Lct z(mL;XtpE9AAOIxG|9N-FWK%u>BEQTicLE$u$uPG9--$NaYv!8rFK?)q46ZtFH4a|4cbT-`(ne#4`OSM}KU1Plsk z=V}bK`2~5%N96Y1j~q{tFpd~wsY?d7Mc&yoC8*@Oz!+PU2tCPL#^fatn;Qmm{vy^F zFQOQoV@ao!^%hgopRhZxpNl!r(YC<>FNO$&^3E7(?CY5|vtBh}QZmv!T_kgBF>^cy zwK;#SawH2peaGm9H+ADlgWQ@k%K)-)-W0 z|A&~ijluSXT;gc+ooMuJ46aWipW>Xi)Ll+7s<|+&|5`gUZ7`mjK^*(xI;Q%WgWS_saX5DCvISS*4k*`NuD zRQz58I2x~6gd9qqTa`Dfe1E50>z4nS)21MIMTO?IuvqkxcfLqKvy+AKMz(p4WAWUtgk#`BL(Syb1Tg>ydIv2gebb7y5F{PiYyK}4Oun#EvkUQepTRTGl%hpSAj(J6=R+FSSFafYWy;*nC8J6N^_ReuXI1OS z2W?r^3M8z)kMF-*gzB^i|8ha{H~;L;YVw%uk9S^Q`YePj&EoyO{$-v6faHCwk_i>m zy0(=+lt2zU)PG^0{4M`DWBWVCU!MQv|N3xz)i1@f-c_|MnMwZTuGycz#L)!J9HTwW z%f`;3;Zf{t14Dt}_QzOEyf%7i2Y<60uJcG+X;gQ@Two$W8n@pA7V^4dbQ0{*yEkMv>N_!400>)K}sUGFTk4TS8P>~eJ}XQVLF_#nexeFL%>W5L3tjbmAw9EjhH zdzlqRgU)L+V?Grg8beEtWWpfsc-r>c5LLwBi$YpM7`TU>UsuZe~w{lbCn4N7$`_(p&|2&4D&Vk5KB3CINK%q#n z_jm2s`gR)2pYO(_^1q1rP*{0PmKaa_Z}fZoGS2s3M{}r>b=HsBzBW(harDL03SjOU zx5CCU)qox}VS%X z%NQ~mTIj2CO!U1m&M^xCQv`siT^x`DJ@U6)T~KWRvgT;7r*YHzR$^Q~#?X9co*iX@ z`O9dWZn2~5xcdY+Vu!U;prkK~p%AiV*h6fZ`hNc#?0zE%mG}Da)0mI`A%^4M#rp9! zXF|7H+tK~MUq<=4O8YbGb07O!PmP@p-F+7;#i7RCTQj?f#;wMw&3@1hepaD%IN98In&`^BZke2A-bFE>_f( ze6K=d{bW0oo2&Di_OfkrtyrOXlw@Oh4P~+a zn2`cQEf#WRF_nv?4D{3?yyT^ET^dKzaTA~pb;=`jyu6CVxqg(#Vvw*ZZ8>T{Hk>{|ue#hkm^}e(tL=-dy+-7fNNgF-FaP$=}891s;fXEFT&4oJpUH@$k1N` z3gFl}|Ia`n#t8&Tm25Jk=i@OL?)eZZ&^+8WMc)&e?DgvAMBfO4}I(kZxX ziFH-N-v+<_Vlx!OB~aZki-sU=i3_ z<<_Ww^%R@KV-hg4{GOFKp1iuX3~);HPX?CxiYkms1LpbC`15~x2ZP-9J|RwGQ+Xcc z+7x_J|GXzuP5BcNPzuWDPy;m&WAZOUH_W-`hRY;usv0kNV!6UsnBypCThn2k}rsIzEwFIyUE^qDY>x z1>km$l=WYe8BYs<^Ongu)%;7WOb1o8^0*v312|bmeV1}?F)s5<_L&M6Mb|s*Iw1d? zjO zV@3e^@Y2?KVU0HxIF#4q1B9snanld`Bn!{+Hm@b0`G&RhL!}!kTFs^E?*s^@Wm~%? zc`M5CImX@eZr;TVh*)+eRkf9W-5-FJCRkoI&noSZ`?61zjLbAA2b-7nr2oo(%Q*nC zW_kT+$|Ub0mXE0EfwK#E7S=GzM z%)YAd3#+MaELQ@(V66TsgDDw5!>z7&OB4k(2##$eh2mF0MiHuWuo&zb)iq^!Wd#9K zwvkmxt7kj2o*JVNG7Aj3e@!#h9KG8S5VGR@Y;g_5rrgimbBtk(XvxOBD-g0z=9RJv zRxPr=@&fJZWYIMMvEWtSD*q@6?e=az;G;?71G-}X#N+3&4kEuZG6G&5GS9g!$K=e2 zS{w<($S3urta0hesU)D}ZG3ZERUH*>R;QNesyergOI*FvrtuVQW68B+8M#(D=4vgi zP0llyK5ucIw{F(C#u;ssY%K>^fF9UL-%!`~^;a&rCH;53-qGm1olD+3e7RFrpBrcT z#G-TFS*Gta?_*`#6=T_)T^fh+=DKPwpQ_XQMjzyqfV2@BO&^*15o5I^_3tOqIyF~{ zyx9ZDBkMi(o6pr>=6x7x&Tk=~me;AJfma|wZh7a>8pfR=i!O!L+tF&Bm^vmo2AJ=J z)C@jznt8EwVUUUMf*zo3FZZmU->hANU|!t4*_H&~^RDXx zds;0uY`Jaypj0wM<@Yz64$k@+io5)z?Ow{!m|L;y`U1e^x5%w*YOZ9owr5 z(GySTPfMOHpC2$kR5p0f7BX{uqKeTGA_S?j?Y!Y(zH)wfmynG1HoXMEcoXY0EXsmI z9iX(LDHbPpLC{X@J z%k1ZPZEdiq=(ehHRTaV<7idf7MKftL*~kUi;Jd&7-@ARP&vI7@^a*f=V;p(BKg_9O zL*t$=R(Edo&2b~nmjRBVm)e$cOmGJ{Cbt=xH^Z#XakFhTb6k5*RB>kL%E3Hi-m1C~ z{;VXTtB2l}`oR`c7MW3UBfCN$f9om<;>O-Z|sA*d4CHI1O~dq$t* z56D`saD@feZ`QHa25m*EA19!1mAMhqJqLoVb+`+^RaLI zMbwAZpROi*$!iDsTH664j4L^w#=CipAFxTkWiB^wp`5p+$-GmZxxNtc=|mdAx}$PwCK4u&>lLYC7u$mcwKs&;sS}7X1AsFR1Uv;-b4c)>gJ{V*0O6M@S|G#2}HE-xnkyd8{)p`*Hbs zd`z@0Osj4~EPGkwrLsK;;AQSyK&3o6<^(iewff8cjB%3;BSX&AT=|ZCMqrM!YUA#V zRoGs!G5g6SR`c#ZvAfST>td|Z!hXjZQdR&V<&q8~+fKF+JZ^ci4Loz3IUPJ9k8^|2 zZi$U$?n#oh8gqgarjYjl%QZ;L^v`D>DPv83GSB}(qJT*aS;iOu)P&-XJ|d^whpr5M zFLAxzXSC*HoOxU0$iKu$t@vfX( zbqNb!Qdon$NOpEI6P{W6C$+dNRFWpw#H7jvtR|meGdW*aEX5h?0nd)PHOnoli4Cl; zg^9+w)r?{5%)9(7qpojZQ{>nFl7`*?F|Y>&^>3;()2AObVtNwM|9@f85BR86{B2ya)`GN1a~sPCAUTrkF**9Nw*v%KwcAtGpD8dHL< zSSfui=m3+z0*gxPuS;HnSIGEX|>ScL7# zE*(4t?he(tv?du{GDJSx>=NVpGCiN)j{^?)UxI)>dBtQ431<1=ioCg7)Jbc8?X&iI)Vw=r>QtW2 zfZ7?Fx}tIOV`GSfq^v2+*=Jgbn4_a@UxR zrvh_=^grX-(;hhl>!Oe;-~zCQ9N&hF@_t#>zR6-Jc(N$MH;x_SrL8$p%CC|4+l2_5 zo%=RnNW$s7%t+(rt6yM~g@U}a264xhjEe!TmHx|>&?AD^BY78Ja|dto&*28!#OW+sMa>Ae#rp)KUjl7 zPq@fHj61%iXuHhoK7HBCdO^erXlgJqMf&!>0l9epJAXxlGUXYU!L34ykZzsyN)5O zPL85!j)4)4u-LrMQs%Vs@$u6W0C0rad_RoFH}B%+4{u|k?fC=i3pA(qv`KH83$o10 ztTonCHILEpD#p#1lKb0`&Dc1LT=V5t?%@U0tJ4NDjHg5G)sA$DJQkgt9?J2g!x!46 zeLMG1Uy=cZR^ANkV#&LI(=d(_pBcs zSniO`E2d3{nrGGk;MbCJ0|x>U;?<*j(Tmm;INX~?KDZ;VZv=ahcOb1zFq|F|f)QrU zX@wB1%qvf(Zd}m`A>syLt~&H?V|c`CkyU=RJ3AudM=|VNnm1ddJR5OpeT)uFJF(o$ z6L()kTuTS^wqm$*8Z)}L;@}$_1&f1bv=x0?x5jJUnMznHl-%CqsLi$fZ~x->S7t`w zz+jdP3NQ)3Hd98?VW5P$c-;z)3Sgn|wVPPIevJ*>NIgkfLP;v?N5arfEfdCp32>1K zLPc>&l8h65gv&yeoSjJ!`sxy@n*8c)1RMZ>0ac+Ocb>`aylqPEo3~%7LKlFz9#clt zvrw9;EmhHK`?P~_RgUuB=sBJ=R`?d15rGTys&kTzFE0qrkZhgQ8INW2B29=7Us#zq zn(>b3kr!{%mdG>t6O`9Cm?uTsF!s#h<=q|14uHX!_)POBr_yU`oAPw#xHbSVPd})g z97k+FF($w=Jk4Pk*ha@XPluoixal906(#8MuDn^*Uh4pRIWZ5&FuuaXW;uPwSRcSq z6+09hOpu85lWbKR(9xI}L+)EKL1P|WIo5g(KERfa^lh%gAz#4|Q&3f#_Ddxkb;*RR zfcs`+%rzdfKaUCHTHMkRzQ6!u#))1ZuVd?rMjZZ+T@|=qbelf$z2*&`yQ`rWRL!GUI{i0S~`wVM~w6vV(xBn;$dGj%YyWLJ7#nxa_vr zR<-QjVU2fj`x9fU(?NOCWq%Rlhl)h3u_+?x{2E)ZZ<9ff9@3#6W*{8Pr{An)-j|$y z-p)54robOmY_ET_uTSmwhcWNp#@6VO{97kxdEFz&Qaz(D9h{|WotH7&A&)+N$DH!~ z!3+aC<6WSr>UfI-G2-64U5UX$D6FY-3 zz-={H8vh`6);|@h)A1@=;e?V50ORuC|Jl*6Dz?)+iQ3V}O5InY1prg)Ggt#=49hc% zY!c=6ody7a4$D3;0)mTI=EOd7cC{4ru7enRZ3f{?tTLn}09c~JiMWh8jdk^wav~h% z0a{Dx%#!Uf9@qzq&1MHH;GKkdnZwT06_!H_k!Oq70Y$DdLqkFtKmx?XP!9>{5b8^6 zXVou3!oaGqFu}Bh77R0Q>#`|#B&NqK4-lvpRO10z?y}0R3j~L*u5QcNeyqACS#5^TuKq&wduQ!^aHyoYF9et}0&U&JvW` zTf(A;#(Y3y%_|?_-`tM4zNTo$jOQfQKYT&?&gK0km;w2$joEyvM~lggBz4C1jgdjq zs=Vyx{|~PE$ZPrXxV1U1ZYb>!gl^yBcv}cj7`OebQ--CR{)aLD?Ja}djp|Mpj57-e z6Tq~%Y(@PCp&05W7O>Eyih~=R& zHA-JMt*ly2@8?<3)}K*k2$gpVt-uIaBM!VcxnV0=MZ5XaGDaWFfR^pXR8KbdIm7vZ zP8xpesvXVeix_@rPIPtfS3;tTb=>@XC`l^}((mxuDDrZh-G7iHd#Ar#PwX>Qu_U|9 zpJjDxP3<=FRQbf4k|cZoVy}wc0m#L%NZO zA2nio_Gy%<6P#z>7N%S^qc=LDe%6F8?p{BQ_G~xqwofrQRic(OuNf*~Z8kCqtBz?yVnL&m6p@`4t&8L|B|u0%X0mEi~UX2Kwbc zgN`IUTQf3$%Z4rUYNw3l9>$Ixmw)+3N52w;Q+$f9f%W+dAkwaclgVaW5g_r@12ML+ zBZaYso_RL>deV*MTRTd`Xes4b-U?~1W*Ea>l>3gyf;Oe&bFpT;?8PXGJwWp4 z6a5JDRDdc*arhzDL$Pum##^zTJXvc0v9NSMHW!zamKDhdQ9A%^jJ#5Dav0^wfq78s zEv3{aACLy^yfM~~e-`D_Ps{;`U=m@j#nT__M}qqNl6;IwsXZ@l&H_QPw+pQFfyzg_ zYfgLbUwe-o3$V$@?TQareQ|zy z%0TP25GQ{Ra-CrpUs$qRKnZJ`V>zf~^B8#dOF;6;Ph%m>D2GcCIU{4totFv-Z+D}0 z*Nwa;utckNzTdCL+7Z^R*7TB1^@hM~hGhboH1cFPt#hp5nndODnhWgYlCGpI*hF1) zQ%FxVYCF+ud>{lA#@&r#y3KBOB;`xa+>mp>)%-5<7R~vzow5bE4(|go@G~9gYX^VZ z5fo$*1JhY&p7Dt702EHD$vcz)HE;S?YKszJhiu2Plo(HQwgtcd(wTk8qq8(OYnl&@ z$cNV=%eaGFVZko*uB!5EF&Rq{)Xc>^gs{!+#{iERb7T#PuFgBfmU1tOYhf;X-@o}Z znoU3(yU}hv78M_my>Y%Vhp&d#HFX7Z<)}L&tnx4a9K#~OyghMIzlm~JDAdwn#WYqv zGmP#-hD;GIQ0%Tn+@l4-<_Eq zLN38Dw;9u5U%0@)w|SxlquMaKWP9jxaRjs&bPSGsK5-C5FDWL$WR9hlh7NeR5}4+7 z{E*=?7>2z%w}6CQK6?s)?|2#GZUSK-fc#(>0JgoZ7)Ir3yZxv?-V-iuMg8N?jFVDs z(+J_6#E=42D`g%D=x0NR8$DZvil18d)ca z^!i6ne0L1xUdiEw+%iHKeA#q!d&k-jhAM*YKk zQEc^$l|#A$78f`1{Qp1+TfA+*8Ka#!qhH0{C+oQUv=&ESeGv05nQu2J?1Zw_F$#LK zl%SWZX~u5e0zD=@vC?+zkwUzATCzWP&npVKmK z|HPcSzzy5X1a^JWh=p?a_>WpK-%L(^i|p*AJM+`ZZB#d zJjPt_Vz$0yK&$9}O~*02dT$SF-;U~Gp_g<*g|*dYK(l@%@brsE(fh;yWi;!UF}Au` zT%ue6sreW|ej4p>mp~MgcsULP1E57TZxUS1i8IMNjkXv2(N-PJ>+z<=g;1y+dBelv z6(AW8jQJiWe--7`A|^d+KAcsIrg85BCexM;cpi(%yT}_#)~xw-^j!rC4Q#P`+VX?# ziV2Di0kOQ#^LY%u?nQg&F`ZiSm;X$U=*)Iu3>T5CG#_MJf9J(X1}9fsaC~e&tB85o zPveSSNs%-!~2$TR^F*^=4% z`XY*RP7ElO+q*IU=5s(KZ`rgqKLGP<%zgVwb+4{g<6hKXv$_BDyQuC?%P}ucUqyK~ zeb1iP~G769S$mEQox!1n|cN)@v^ zE5;a<;%i684zy?zzrZ9j9gIV9{ z^ZrM?<8y71&GafZFK(iE^q4oazc4xhZ_V3QYc*tj3-W#ZAey%lqQdAnwqE4B8h#T^ zW1Dv;@%Gs_kvCGzJBrq@+LkrTTNOvA6BmcC;`B!^qjRln{js@YKv{y%aASM+Vbw-n z%8}=N9bNn~mLD!+=hb6j(w%(BIJz}s|LsLw|6~-c!Gq`yK8uU{|4F)0$OFi04DH~D z$1&f|%X=maV25rA5l_ASi$9O~%l{CI-ZW-Ao7jA~Ek87k`gargDL}v1k}t7#A3ci3 zl9TxalYjL+H8kg~qbPp&rqb#5-p8@^=)WW%3~Bb8xcR659GM`_$6Bp7H!(ZLqBw>2 z)h=f_j@Iw3+o$Hw5iQG`81DXgj4JFO{~8D5-?y<=Fw=# zwQ;5)49be|Qh{qzQ{)g{)h#p4;;H73#$KL}kvmpA&! zNz5~K@=n+*ZO`LEG)vpZ=uq5fyqZ$UYh%*~l42pT;Z~Fb#jEu)I(PR0HmCOnR=l{3?vFo+Mc1wz z)S}JF2_I{3FQpn@kliNAUuIF z_O)Yd3*i!^+=$g3%t#HC!N=^h+IQ2sXS4n#3TZUlBtUtja`CP00PD_vGbp=y4O|FV z**rmjw6sU*RDqH;tjB%FnON&qpZ1wjlJb&y1DpioVDyrYc|vTSla$v17BftVu=BKs z3?~cBC}xgd=#v7ZffmN(f4~;|6nk%O-!W+OjIoz~>ILu?a*kH^H@De2<0U8FFe{iv z4QN$=`sJBw({l?+UgH~|&&Z7|Qwgx147bBR#hO==4@+4{?-{ydDa1zdvWDVUcgVof zih*P2x4_Lj0SqBvtRGW8G=CeTT{x~gz<~RHxA2)WJlXI*n9pcl5ur+K8@S<*F5Y|Y?nX94xYu; zF|M$)lsKvlt6yr(5)k!|4qrbl#>QLaa~ zv7)DI94E%J*#5?v{OGCu&STaQPWNXjo`7jr_=_CW_l~2{If{kESk6o4E^h9hVpi6Z zsWe~EwOdL0<}^n4uC2S4*KZMVhJMF6lvI7&HXvBG_hN?0&Ia_W1B8W(jk9%3yXJd5 z6M_Q^Ip1buHzpmrsV&|m=7*$rqMc)`d9aCT>z(nda9Z;!On;*wmle|wy>kjneJ$Bl zGB5#cwEy!hcKB_qFswZ3b@Xr?vlf8f!;*I#Gg!s`&cD_l*7*7>B%5x(yomX?zXQzY zF*TNX09B^D*fE|1Kuw#Gps|VGgZzx6zo2wqFb>uvKl>mTY zS0S7!3NbckZ)0`Zpxj-H4-n>WjFABY>ev9UWuKN|gB4i&z9#3f`7|h=MK%a>6IT83 zGU^9_&LU|TSgm6<)4wR+B4}qqo~mp&=3MO-=&Z7S5lURTI zwLVWxOFuv`fjTlA2EJ=fq`E5vFt#|ld=u+e0Q0b0eXiZTj4h!^=e3;71EI#S1gdAz zGnTvo-l8M)7MA8C#q-pHJk6y2#<_odYEHJ1N2aX!Rb&z4G72sQ!J#zKY%9 z^Js3SvDNumyer=%1lbG$Tl;>Z@+vWc)O6d%y9`*Z}#qB62$HN#t<*;jX@wL#d zQ3|b8s*eUSI(Y?1=CLOKyz$;>?>ufkAo7=NL3kB&diL4lsD1FneBZ?QrxR6Iz;`G4 z4fK~MLelzC+)jUEtaLZhuHH^Q~~t~}eTXk9d{={)B5 zYOy$w0>b3PkZLH{UK8W@UnazxlU__dP8qNz^IcM*-tRMa$(FY`i@Ur_!w`G)dq*0f z_nexSY+0DtNV}NfD5r9!ZH{4y8UAxD?k-~dCn~8A`jNM>sl(#TrRUSI+i&F?*R!2i zqg=Mea>@u%@w}m1t#K2pX)BsPB6Q7V_><=X<>?QbJHUjomkC$!RyMQyY1n8s=h{Q5ygVj4CT{c?Zo{3p0c%W#>j4*bEm^Z;fK{LmrO? z-roag*v)$EJ3Cr!VL5;db*@2swITfy#I8`S1b`EulOUn2x;Q1!EhS#cw_fz$1EMk2 z^j}hjpF3tlK9r*dXeh>dVZX(J5Xrdf9ScAn1u#5+ z3$y_A$-gqgbA6jL@W`raK1rMOeeXELwub$0-vIoTaV7|PgC&c%SSYWVms%LUagveO zCM_OwVPRyDay)I1fh9oBc+%&X!q$ZftoPQdSjvkmmlC0zMJ%z< zTpPe#U}d?sMR8#$!lcEn_TLFv0UCv}G3vAIqaBU!D7+G3Q5QO5rIW8Dk4FFy_-%gq zF*)e_TMEdF_gg=T=9%2fyKiH8eM%&~DF4_0J4ss1DCM=L(5gjZ_|=ziFeDVakT$m$Gg#g?|ai+X;S?Y`nYq9&hh`SSdShr4e>9X~`FpK<|>T-*Whb-oJ&5#>0xVy(8zhf)2m~U;O zf76Zb@;Gk)OmFk1>=V-p1(YjWx1X9Q0-PJhr~yjYj{F ze6h7L0C{T6bff=yEv|kp-1T3{2Imjfn2(gn^F?%}HpbEk^)isacPCmtD^=vmH9bS*tm+vqIM4UDRKm$L&X#alN$vaVNUl zPojUO-=3Eizhm;E_B>jLHf@!`R*xJF7#-+9=)MsIU^CbICW4r;1Nn+YYMi|LV* z83mzKHbMrr!$!C+ z1JVZ%CxKSI>7;5usAZwLl7_pc(D`(jd=z^=U1yCtSJ#= z(y*jsjc2KKc#WoUHU>aJNK4tW&8Q5V5PLvtC0vWKu6Kb_A?)ny142^O!Z=9ZvDvq= zWXN2{n(j_1qy%a*(T+B^b{ID=UkKND9X4l7+xh`!;(uiwb0@ng87;KUNZvn*h`bq9 z-a(aL^Vy3m)m-O(qVj)=HizZ@!oLqUaqOCwXK+z;85xJb)E8R$JY` zGTQ(ZvD&TcxSl+gb!ne#E88@Vl&@rOb)BO*E6s2=)>Ft<-@z=Cf!EA|V&=H7<|w*i z$m|ccV)mi6fBlvbn!mi@=JRhOtEO`RGLy$#w8ydfm(NVec#Na0busde@IfA=b_Ez- zV_Cd3P*?$hlt2Lx5iUIks()l4dD%!ME5%VDpTk(lhMmu_U`#`HuYk5{(0dTwj zvT9?}d{=>SK3XjQ(k7ODfLFYYJiVii9pjqzPOwu62DD5g8NRj55{-&%)j;vxsm zIL~X#v(p=!JrRi|ml)6Up%V1lb89!?D4rh0d`$m=Q{Kfi8TaJAHR~&`>;mW`g6WZq z1bjZwc+(b{7=NDhnpX(qiRpQs)uJ(u>t{Ey#OTJy@S;W6$L4%-X};`1%A|={T>mjg z_V0iB=vP#q!P;p{$71HyxdBfJ;ltyoAGc6gBZex~tywUR%24`SjKBbdU~9t4AET?;rB-?;ki6CE znxNJ<*K7+y?=~VIT2MXfkhdvN&>};lM%TW^sIO4v+gt;fsrhXgE92hC1!$16crmzw z66KlTMe4aev#OTkqA~F%#KPg8e;X zGcJo7gGa);y3dZ4Pt5z5tv2^%_Z2(HibDYqzb4LBf5efqva^Z;cZUalqKA&vUcFgMLqB^I{qFGYYofW7R*tbR_HIZY0^IimygJg-yi)t>^@ zlbA2w3DtyM!vkOks9W+~_1upGqgQ!}Os&~6o_oe8Z)Sbg^k$=qOCZLT^Y8h{sb;mC zy_Rgw#PodyU^t?kM)dYRBkNU6$}|3l4%5v%vA3zP1HtLJWV`ihap3t>p*+na3uE=2 zL)GHzm^3i=24*Gl%A9JRG&}BG%1Lu_9BTquo=mHx>P3!Z(E@l|sly2#IEmIkMbA4z!*|^uNVrCoPzv__nkMQc=nWF zUSdTBMb{}HSdY*%1FAfBDmHJD16uQZSpmu40*gtI$_FGCJw~zxD1cg4=D5iH0GS`>z9741_162>h5mBuHp4J@=#?dCvCpa%Go!YAHs=Gs}# zF&FQui1h&jQ+>z_my5z&+HLLe)W`yD<1rrqw*=f2J|JYkG4&&cS?q87d~STUVU~IF zX?1b5#CPPG?HFF>MzW%_S^I5ha8)11h(0IERhMTZqh#n=Da*SiaAbBMqmg4;$?$*N+TcVAo((ZcWA6@nx~i&o#9hvrBrc%x$dMK$&W@C2p=p4#qVtlqtn zWIu>_^l5Bfdw~XahqI((_f3b?r1?CHgZl?c(IcR^` zBqHHWS}RADxg%4He1v_2a1uCHbGqWUyl${xJOu(D8Rx_hE@HU;M#buNES9G+DnE~{ z`ezdJFXcqcfn4)8#w*H@4_GJ^a5AJ>Vo*!#me13h7H@=)SJ9euV%m5oXR}~z&&hqm zKo5mb%@~%?$;*7}?U<~7sP34$=>ctFPKJUDp>aLenyglh1%sSLW7dyZAK=!1kl&kO z9TNLkW}Y%+q7wR;Lm}EI+tFC{%nx`d2y~iHB(ftW%OBK$ter8>jzkmdN#IfD)F6I& ztoas3;`njSk<(JqT{TDAGhe_u>0Mxb*cR`ZU^$i&s5M_95;uIFHIa`ZX6;*729T#g zh$F2vkhbI*VdbeEl4){*_Fdn`u>Y2xOQSDZj=A%a`vuq#Nk7sfigrtkcO{il&~5&K zgJh?iM_ukVZ>5|k-R2|FG8cGrU!kcmA3&HV%g(jg*g9rM6XE4FmYs)y^&)1wZ=yBr z$NGSY%j>qz*>d^#u`rloyftY6v@wwSJ(HkR>s?lLCDfth`JE<3KINl&(n>N0%8-ML z<~Bfpm<+S1Gf;|B%So*mnviUh`3Q;K=xew7BOnV=?UOiQa!L>O$>U6zZv?LCs=7U5^2TV6$FK|AOA)(?7{ zi?rr#(_66)v(vEMCgMJe5 z^bt#-R|M=8{V`4J{q+hLj?{=ovX`uG?)A3 z*i$@f;FjQ21kbqy$UTmLT*MLf-NxX~A}$v|YX_@(z}SE<$53Du)!%Jj9_&HX_Q?s@ zg=%H7%W`JGu)Ylt?K8cpl#jH43Z_M~^LD>83D|sc%ti=O9x~wVJ51+|+{;09{`Wi4 zyg7*JvBc})+h}91ix8%HnU?jbX>sU-w)~ReQ8!Ki(dUfB+Uj-poN&od6Aju!itx*pBdz;SFQbubevZDK3v zkKe<%no~*S=4Ay~vuvvrhFY7&;u@2(i#ZpVTRFs5ffXVd%ZYH3F63z*O9}W~@2T8P z-pybpMAk^u&pFSw$mUcIi-TRQg?Dm83uEnE>149c_MiZ%gub^Ws8y4y-dj%;Du-Arkc0^E+#;kB#{VH}fih&E}R4$e79J z)`o4eFqYdJZ6N|V2DY0guI8mXjVro}bY$uvAIQ4qm`3F}^Y(dhW2NYTR7!7rPm%n& z;*B|ee-Z6_hw=L8d!cq2xA#YMUc`6H-v9DnJ@{27(=*4T1Y@!cawaFkfL0X?0az*! z>9uHq7vpQ~kgSfdq>5Eg+AO~p7BCGpQJPe|lN?1@Z+Hj>o2M|m2ca}FZEdnm6C%j> z;fHO0sqWbX^m352H@Cds&9Mnig|X!AUaX#1?glU@0VH4ufKb1APxb17l$ktb5>Nzq z@;2s|-}4$XT3}ycBLf^H7)>FUL_wb!t<7=R!H{fF6RMkj4dCBR?Ua8M!Mye|7Sz(MDs=>kzqYpMmSbzK+$1e;cp-tV0f<3Q1LEGMr3yX*JB* z7`g|P$=p}AQ{w0xX~VukK0j3Z5s>j<$-G~U@|Ar<&ct{Bh-d!J7yB`=6q%iX_)uTj z#?;t)UVfmwo55qig{d|;EV3uO{8zP~cR=|1PsWZHe%Pi--cnoSI+sgaVYTB2KwOdIp1YYa1)1N`$j7$DULY={{h!_D#9RknFCXN!Z`$lk>^*weqg6jck9nL9S$Fgx$?a{30 z3hif3E3Q>QIhNwxH2Nx$t49Nl$bQC}r?ZIlIe@L`{C6(|Ij>_f`(7?li2nI`-2DOU z;b8I+{CR`GT#NF*{oj7{s|tJwCNlAj5hX*|Nbu!Z=$j^EW2j;xU|=!oK07e;JMh@P z9ZF>Yl`D3vNsxe-W6{*8Lt4g}p^%OKV;Dfq2H*W9DCHl|?Ev2ybpEKc@a013kO!9VXSn&9|#xnn#QEDfG9iwCN)laBUsaM_Pz9F33r>?NmFq_;D^ z>d$ToaCvM#vDs>1Ish*(%dS!80E@vDUCUf(iFoLs(Y5H49#Uj0y#c|Jv_^va50ww3$m@BQKZ*qVPLe{;&v zv=2}dc>2SmIC$|vT<7DKF9IRQ}F1w z)nPO8uAqft(Cib8scW3tP6n3p_J1i6;5Op8UyzgW=NZO9NC{Lck7k!V`G1`C1~N4u=6Yi zgmyB?op-Zn4g2H{RI!~*SL9U*CF+-#43*X;Z{0K(9cd+M-=6_fOo$W9Ybf(k{Q1CT zDSh)!@FhQe%#VQ^(voYR4m)r5mydRT_ z_~OgRt0R^_+ciFE0?6J_w#eHsXE>ULh4NSbn}@%O-NzP!@{W1Z&YsC(5+chyX9&%* zcvGvRV~Z;>Krmw+S}~rDrm!7e%H*otNQQUbQxRyK-@RMtOzP&@?HMvw2FOmUKcA_T zmwp(tfq3PQ?-z>H{P`Vgs!K%7`p_aZA@b`*NzEpBpacuv8GTgqFrn0vXXh_ zn6u4FtL*PTJDQ*EgqLH;@tBA{yo8Ar`&s~S;c_j3xyIqb45o<1T=AHtW zY_J6@R_$kC+OSK8qY1=VSx6q&Q0-7D%jXM5>wX0yCZ~G={Q(00mgAUwy$2AR-~Z1W z8S(b{TRM%HSqEOTmOxGZxn?=Pwdzn-dDo}<7~4mmdEc^RbUFUjIKfpr*j0`_0pLB( zX8+_#0joS&7DI$Zi@gLT(jv1we~rC_=sdprsrk=sH_TOA-wC1(MhraCsI&ET>W|~{ zq|&^Axc&}9lIP6gK|aebK`?Jov-S5y45s&0cZDV+{aqV-|Vc;%2Wa-?9y?us^w{(wa7aTjfX% zJD(Pl#;0T#&AV>&pLb*WfGiW4Os%^2mW5;*dlv%EKZ+C!z9cFRiHrlb*=QMxD7 zvvRelt2DRX2wM;CN2$tOKNTt-tfPIUuhk$%A7E*H?EsWKUny^K13$=>&FDvq)qmMq zI*K(LN}wcNFJmya@Vy*kazM90sprSIUKU>Rta3^E1b9aROC!T->I!6ej#%$z%Xa`N zy|Kiy>+E!+c(Vx1c*%ykJr2wMcVO||CbnO(ImMZJZwu?XlV-5q+rY}2=bBQm>XlE5 z&oDV1M~0$cB4+o2vLyayTX-&+o`Ah|ejsc=iQ@BDQSR==@?JA0dy`lk5xW%9-sn@{ gd1i{zEllJ816I_Xp^uWA;s5{u07*qoM6N<$g3p0H6951J literal 0 HcmV?d00001 diff --git a/tests/reference/webp/lossless_images/simple.webp.18d31ac3.png b/tests/reference/webp/lossless_images/simple.webp.18d31ac3.png new file mode 100644 index 0000000000000000000000000000000000000000..a1458a1b8f0822464de5ee1a15f023f3d3066c8d GIT binary patch literal 111428 zcmWifc{~&TAIIHGj#YAmZKS9aDdyftC5d%8a)&Q+-*e0mk=#k-nxowJeUBU?xpU{7 z``YH*X5-iIkIz5vzdw)1>-B!VU$2Pgx|&?)1GOEfF2y4etK1azOWi1FB`uN8y z7thG^VvnQx_J22+wbGHNM_b_&Nk9nfWV<7FX~qSP^6{k;!}xa=h8BK!7ema5`es`~ zfs|f71K0`qhR+x2v#SB-XrG1+6#YUv=V=PiH1U{Bja)Z3SPDtwDOBZgwiukXR3g}jbvQ01j0LG`sZeUQ4 zqKYKtY_~Kj`ex(}N(N(H>?502-8=K5&%nRElcS&FrdO9F#xMb=cKh1fC>8RieE)yf zUvYWTzPp;a=Rr~9#n2<_jsYdxT+yn$eG`&W#azvN5Bc{n;5_Ai&&4!Y94|JdKT$HQ zZ*|(eADieihbMb>uZJcC;*(nCEePbpo7N`@Jvf4+soe9f19`c}WeY2@utpP?{@0{; zt&d&>p7-eimuq9ZW`;(=lxV%oT?<+pxqVT&e0-yNwYZ8%){+4PFOEKji*&H-50XL1 zX&DqkCFP;p(0AH3W!KX9X+8KY(0-2Q-a*(|~Tnko@bzEgquN!nV+ z^Gn3^JNQJbNG~L+7*;*fKC8Pk2~7MwV0O@i}|x4#!%Fxl?3DJR-tv~Wlhl!@NGkN!@G8`(gNI3 z$_rxowq@^Kj&6abBYn}!hyc$*@7mWA>E=_iPzrUXUNCf{#Ktz-)t%WfB!%W5ccyMa zUFg~4@ue0PwT9^8rOj70VB9qn=;`@n?R{CLg{L-3GwaStqdP;8kBJK|Z=E z-0BH5IDBYho8tp(wn@dxd0cakj!E0aF-v#JD!ptKr?lB#)^l_QNv}Ak&hE0fBqaRa zv*szI61{{J{P5Bc7$Hr1ywO;gJo#&NNq6m74Ko=%A8c?tv#^Dd-E3t3ioSWxqzN)p zZJ&zmh9cM9S)ehK@?ZNO3w{zASoIltEJVbgUwM?aCj)+hLygIO2igI2D|2F1dN|fG zP$K`3a)y=VS536-nci&0q=onX;nt=jvU3zD@ts}S zIxx#v1q$T2?<`ETi#(C&;*A_RKyU$Ofu}1=WUZB$-a0daLSsg;TpG_3mGZidQ0vGedkMW(SKGX{26#U!sEm})7zLrdmW~j69!(f9&lN7pa(;UT`<>g^|LKkhrtDQkzsRi9-wtzH)nw#N^rX$52|kh5 z1m?y{dig~>D1vj3!JbO|lz;$TSYd=^6{(+advaIZY@?V~wc;qMo2K}(GRlDR*{UO;v$z%v`|k35*g^N#tdystdqRO-pLPvL2WXIsAi|57L`}#Zy`Da%@$Ur-H*<`y&nfqSgkgT%x+wClXWN+-b$N?Hdch!5hvK`q?epssB7;GT zQw`@2NdsyQuy&;-4QB0DwW#1E*$>L!s)83Z);K`+6%!`PLQT(0K@hZ3R)u^U&vZGO z*XmA$MX}a5uJ&ksbvrwC_e~8#>a<2~s93po*Iif6?Eagk@Xf)S176#>VMav8ba=6o zy2fb<{9%HlMD4Y+3+oNQJhXco-}+KWA0P{8dG;LE+IX(3sz2(gP%<^A|9isA+iUUp zt0Mfmjw-MJq`OyaLtBh?SB|#qof>LoydJ=ywDYs(XQkeF4L8KZO|(f59M-%%FL?se z*o3juy5!7lC1*;1qO!i0O(O(w#$3JF)6yoqRsN~SpfQ|R>9(tE54J)G+0IN4`71E! zDL0Ujc6k)lkLzN?RchsQeU~8eU5BIr` zkG@H?=3v$7G4cvD7NyQ9UPDP%^-|#Qqs3RJ zpWPmexNSsk2SYTOp4?k*YGK__D2Tf2uzvxoLYfiKS1676N; zjf2!r;57K!ahZd;tb(5{A$y;)oB*biOi6^L%Vl0KN;Nr}LhcWOqf5f&pJWX1j9QjJ z%wR5DBZ1b{j6k%UnFHyS-S!XUji!&WKOnSev8z*0FzMYEc+nloo+1Crld7Xkg*i-I(q@@pU9yq?_w~#}m zf3#N)d9+h|5|l%=_NNue{|-+g*D2hJ=m((IS}u8J^B#r3(*ziHbTII3E4_WvLMN-{ zLlcm;tP1^xi=08T;qg5WuN!D+5>G|Jon*Ux%)NkCLq~IZtv3qsP^<$^>(-Zlt%AVx zGMf#JS>uw^=4AZjmVXKjk-X5&IMuHl;JR^sA-hy_G?bqb|(K?T1(B&K^U9`VzY(2sY zjIwwG{%509R84Em%B1jnSi?Z@?Deu`p;TcbW7Bq9f)))QZcd9HsN%c%->bQw9iC!_*oUIV!v*6iEN$-BE}K!RJC}Kc zdQ}LG&Fhf?sExpyIMP;Ck zF<)vkt`P|8=Wdk#6(WE8tnEzVlFfcl-0t=J!VOojcbf#H7jT-$oql9LrBW*@i8CAL z>akdQcka>~_TKXso9yA_BRz>7`I6&9$qR#?7xVp?6&Y0KZ8VOTB}SRep$2TyLy17< z*&xCz1w7zjLDhR<{T4qSS7pH3B?;&rCgdw~txj?Q-mHC`USND9A{|bSp1C%ucp;%w z#VALu8{bS5O51JYP7@IHQ{W+%YkftpOm+0R? zTuB(d;m?BJE2%%kbt-~CIQV4xakrbwtL)S%%)IfQfq?xwP@63;%#>dou}6=PbzLJr z&|`SFHKMzD@=J~PBi6)UFG^=jHHZvT?c47Aqv(6e^9x+&J7pWMamF=JG?JsM9I0Uk z-yr?6JbA=3Ft{|yF}r*B_~TZoHa2VHTePKV35%i}e-~*a+xPG^D!SAA^BYf0&6U&J z#_$sdr$1;wD;LZvGen2Vw<## zSMl!B(PjsT#mc_EP%#)bM-38}fPH+?DT!OxyvgH4{P?ch~vb;RBYDICqWWKLx zIOCHi4VvC8%mcZ;_37s8fBYk(^uS2dT>fl4$t1^oG93(8;^R;M=jI`9W6862)c%=) z!}9%X0T`M*hK;M>te#AbpF>pFzk9OU!Qb+bzBGt01#P^*_xb3YPrCgSA+li#-_B#T zBju|M&NL|VOk1HF57Az>N2BIHj`N)KYn%*+b)2KAp@sN)2~%@Vc}+lorPlGP z`OD>`i-(EkGGbg)H7_tchlSbihAt`<92=(f_Kulel?ssZG_KzeY-#QPN+GT1I4~>C z%WFPu{;11+>OXw?2*EH6M&?E{Qbt$p-gduE{|y=!TEH^H9d|ywHcvyOC2YJ~zF4-6lbT3l_kKg{^8o-4(er=SFq2O60b_7BgY!0(L`N`pP{s+ zvg5^v@;6|U?9UvfzIZV8yuXH-4$Uyll(ssYHp|DoJcN|SQ3Ot(k3E&L9Y1d|fN{>iXSrNG%)OZuNFxV`1 zysna|#qBb%tQD#Tm}3rT1Hj_dl*xr>o+EUuiKKE+VEY z5%~#RLv3WxI_P>KWM%bP_Ow7xjT?dYE1n7!OpS?TN`B&*pb~fsaZN05X)BpKK$1DN zwHdHq<70xFWOg2kMr$^YGV>4s87o;*aV;GRifH2~=pFM{73~V5LMaH>X&M@M&_@U# zJjB=yU4_>!`97GjaYWzt#0MRd?;r!>_7^nj7aruy%gk6xn0q{N{3zQ@SR1j@jT}o> zyj=J97HYNQO8Bd)_HkNqKzO7Pe-YaAHBr4^G@cT$jvBh0cW4QAd_Dc?boIv)?~p%{ zhs<~G(G)-zB!WH~3 zr|X0TWKcZ&mi~fg%E^R&QE|XE#Q#d{m1i~@#OBK9QQ}(G2Q|ZL7}y2cn_zpTp(Ai1 zQ(DalCMlcx{_d6M$LdANEFykf!0z>3pG{VGEU@CfJcwpy8qvx_h!h{tYCpOX(gd=5 znFK^*K0F{bqzL3_s9_y=WO{YFJY*)TGtr%&8c&7Uf9%9}#60a|5cOki(Fu$cyQNZU z#Ov`+n2eoa^SVIbp@`SUNK{8y^6(qud*KToX9{@4x`%&`+Qi7O?U$^&R&ahqJv)B5 zG>V=qs9sOflo-q^3Om!!hK-ef25WiwZ3n9K>NVfsMFmRk@A4 zE$-A1?X{EDKoIB=2w(HDKN?WC_f6Hn|Om?!gHC&>%?(k zciW0RZDH||?`6*0sneFdtKvPOHr{*7L1~kDO^~J6SoB=$Sk4eMXRgcZCHAwe=RM%8 zG0*(vB%i-r<*c;KIvzKG$QozbN+ zD$mx&76GRrqq?)`dXJE#RbbiQQDo-4u*0)k^v&eSdh| z0&_dvPD+I4y6kDs>qJ;w4*~kDR3ENi-5+VFKgPf}ygJw51U8E8p)zC`)xwIcDg0_q zj+_ghW;C9WHv7+duxz~LAgg;TX)2LNW=1<3F8zJg2KG8r^lema@_Xny(mE3YIk9c) z6}_NE`l+zTss3Gb1ypgUu{VbNq891iTO)Gi^A}~R1jLeH*5(IhcSrj4cRjy{!2xE>qlbb3${PIR!s9rz$x{@6!6ooLY-Le z)ZhD3)%}IK+CL7DDu6bQFP)wb_CJL=h7G8ua$|$Q{A%p?^?5<;%4=!7wZweW zZ2w)kI?DPE1KZzk3X0g`YEj3F-bv+C$|5<&uAcwIn+sEvQTs4oIpZ$dwj{s@aW==M zB(m3GL!Z{BU64l8-AAJI9~i(FokmF8F;A7V8x3pk5`~O8Z=M!U(yz+Of=Qcs%JXKX z-)sP%fAqbtZaAx!wDq(4BoF4eS<@tdDi_Ulpl!0PM|jE5t9h!Eddk2J5|DI+4+A`o zSNeAu$My%)>b?EmGHH4H`de?K(Gz)26(Q3K3ZfzXu1{JH<GliN%P2s}9p*nge7bV?_u=dRoj?M}#3JlBplYuGFt%yvGBi(m z_CpIbsDCsX5#NHR=5kmc^n0kx_$a9DwgDJCg+~e&iM<<)=3Z+qKV)Ig{p~IU-jZ-} z!Z)p~|62}DBk8vdQ=f*M*m$Ox1s)Gx+EfTeM%LR}C44ZD2^P1x4)aPN3iQPZvRt=Q zE}tIQ78?G%d}Y#~)c~EqoyNv^J_f(bbiH2y#t|#cHP38>`3(v~J}?*2JPuC2V}kw} zcF8iSG^I)cT6<^Ry>n$_lT3Vr=WA)IewYhyf$7b-{0i)UEQ2a2`%@Rudl5v2f1Nj{ zy*+ThSr<5`*Z1HsLe%K{Wf;{)52kawr@d~a3h_H5)8ka4=gj^1*2FgRH^kM(4}NMm z5Et;+$c(%4{>Qid=;WpxO+SkB{R;lFV=p4A+SbyN;Uer$V`hJ~?>F4CF@KV)cLX zt|NWVmAqa`QH$>Sdy?O)8iup2!1N{_48Mn(r+?u~?Ja6Zv#u-d{v3OU7@!`5ol}oX z3c+}J(e?)I*9e1+Pxtz)`*M70rY!t-XojFWBL{Z-97btZeAgA*;1qH-a1}36o+;hD zrsxL*o*;}qq^p;(z#t1NkYvnW)#NZxmN(PfaW6}}i0i}sA&>Z04U~^M=gMh)75eBX z|6`e-$MD5PdxJk*@Ch!MXMmE@>U@JpsxiN;XPJtLV-&>NL!o-qe4zBGef5@L>VfM( z-J!%N+j2In$eDb5A6E- z;^xWhg=dwSLMeFfEI~D`nBS&ZnUmj72A!=(;+Ho%CTr4*NT>OYT#et7uFLnukbkx3HK z61`=ND#K0@L(J3xt;1UAA4f}eCR$_Ed22*7{9QX4cG<{V$zHRr;*sDwWo5ocH-yIQ z-BtVH?@6hr%czwFswPJV@C}bSA~Y7!wf6P*-_|kt^xWW6n$=}7c;g-fA$!`94+kgP zhyB;d)v;+uAgXPYba|-Bjqht@#wOPu6f8Z58Kt?)UCSL~ZrvY2oA3;tngt5EJ3V{Q ze^W`(*9K?9azL!GQdusn*e=yq+3MsE5V@Z|mI>)=TV^~NcfMu+2Qk-VL!bqjdV1vb zyTHIh{s4beg9bM&!e_%eHRIWYP_0Ds#D1yrn~M4Nx`zOzh4tYH*kLgGhvrXsG5?Jp z!mEbLRoLaB?Aazsr2g7&f$_jB_w?jnR;>%)T^}n2n|&fS@!S-Ym}21QxE7l9xtYC& zaXM3<==JkLI4YTYL8$!EU^~^RSPlZ0viP>MN%=fySZCLoPfXh73Gw#J5GjJwZyK9! zT<9o;uK#eaUDm=@0Dke9-LqB>$a234|Js+*_$%T@mtn`%);-m(kLz8<2 zkAMBpas3E|DW%G90m@Z}KOiB^3m#wv2yM=uHX;w%x7{JHYPOP&!Wz@^}vFyF0B|hUX85ofn3u{U8le@C+&r-rwDw2{= zl%>1&+#?{`=_5b6P?Gzu;`CJ8V@Wkx7+v#d`(fPKKN9nq_Sw73u{Ma=QW4|3sHDJt*PJ5Cr1lg(OA(oVaHn*P61!t*#S z1L_MGH+opnncw6cl7#c~Khadn6<=3r^6BUnvh5&(Pao<-;>IwL!(ekj%J{kR8bctS z^#HMe--6IeF3pNBuVgCc&kZ~7IX(UyySkE|@N>5JY4>fF*e4n3nv#*6eKsBU4d0u$ zt{0x#2AU|NGgAKGjc;pT2pF=Q^v}lp$M1sU3q?wo{+cAFn$#p1m%wM_Z@=x`)8P!; z;;sNzaCRrN$fCBLMFn5WyCOC#j9Z>Zdcl%!D-_#Vhsd2gmfzcZAy(TyG%b^795o1c zxHMxrKQz=Pr3qt2CrovN2BDvO_~I+dn?5q{yHSh4DhNR$*Yvshpg_stDV6{yInd_u z!kK#UaVySj(&Z4+Jh3=C4_y4@2Age{XdGMdmGBwEmu7XgHg?$O%&Q=K%qMLwy=x{; zQ*S4_SO{~+DyoP8m)uTi|Fz{EFUaE-uHgQg6ijgNe4Z|M-Vt*ITd+i^1UwviB1%7RX@ zpu*6DDGoK1F86$0w#Lh0wM)0ZY&*TGe!I95{;V9aR(57qDX!|PmKr_%IY*~V&>rS9 z;uho$z)ppu(oH8Hhfj%LN$>AKs>xdu?5`UHD@&fN7obLvpYw!to^1%kk%pYy=ofZ1 z5K~2`qC=|IYL3gduU-)HjifENr3uS6)8Z8Cxdsh1JbN}kcCPk*LH)-flIEEKZ-ur% zniHUdmb{$c&0K=k8i)T<_xFIw?z6)OLd6EYA$TC48stpEg1&%V8vRl6+8} zQuS`G@!kgi;DXG;Swvz;X(%luk|vBDyaM_L9=rmeE_Aw53F@aoST*dviz^AXBlLJv z6VTj1j60KD_`hea-ei+-V4s^1QW)rssTn?~nTj|ZE_*w&5_O+UtS@}+WFpe)B>6&d z>P5`S+e*>#XpjX16}YbOWF@FmTw^=vQ(BW4PXQO|(}C9V9xX6?fD|n~VcOdk<0E!o znclU{U;5UqeX5P(^m3!3ZHVk%T1wMA5ncFU<@F)pkkJo!e;0LS63{pm7H_nW2ej@v z-^0q<^Ow{L+y?)}#qLfux~}m?zVDuxDtjnM@0s5Kc*z^M*0G0kFEd0=#z^z~Dp+lM z#?MV-J4`^yF8iJ+Wd(;&ZUv9~X4mu9cVEvG@v-(Y&mnU5;YZ8lnBb%yWp1HbmqJKjI$jUtfQT)m-j!Q=8auV1DBx zG0*H9p%T}2soZ*Tg72E>dCjK85LUyB&62-lR<|fA@kbqr9lY1JXWP=YSYF7}p4GzA zcy@yVQ5%!#{Qjj6cYl4d!k)f-0>t1+$l(BX9&ydqu6Arpc=~pTH?F%nI6x>P`OjS= zY6nc!$qqi!lB`slJd`1lpqtv>kTY_8$FpG+CxuhfcP#h5{x$0YEW)t%W{gZaKvO@f za#u~dDKCsio=8wr0nIaKm#yE@ktKk?`0pu0F z(oO$1mniOFP&f7$5DDaX-5y0bxmfUPXXtvt16>C?HcsOXe=jcj0Q$rV)9 zi!9_$82ODq#Cc4ZtLL$x;Jig_Euz}__^SDCFO#XOXWRC?NFJQ+bT$iqLQso!?=H1h zkbUR|>3Owom3!$YDTeje$L~*S+fbY?%r{ztO|BwLKCx9+#Nfgz=OeXA6T=(D4V@sE z*2vMo@5fA+@^x^*$ag4W&$`UmgBkHeM^P1Mj6;Wr#Pi@fwWCvx10elRoXLARDZA0s zLV8cS)1_mD-f(&~@me6vU{hCu?#cLOr%<$J=3t2Q6I!-8*&04f4aR`w=0cwANAxr6 zG!LUL)g*1{g6%x!X^-#0rZzff#*BpTLL^s^=#jUu!7T=kx6-jSE(%JE)rp?)3Up&| zYeCRNAuYtB{(F_#H}NNZCGA9hZny}6+Kh!WEwSg+)PHM z)k7L3-QTHtjQBp7oLUD~Q$f=dgp6H_CD=|6+@sy>anuj=Txi$K{uB zG(BcR*i$M^hJzU6k3{PyNRO+3kkWNat*RMYv1%UXtwesoPQ8-IUJA#$9o&-QuO2_K zG?OZ-0ghnzz^MD?nOvR_;c5S7iBXw36#N3-vQSp#1O$9I^wj}R1&t>B9oMYf`t+YB zp|B88LGrNbbqGN(y5Omoi6c(wts!#lyXAt2E}rn3p2ZDB-G1(B2QUIiX{l*cNWHct zP_k?9FrzYiv9CKIx~q9O@`-dgGH!})$hiqB7{Gc|wLNZiG4*+=@DVzsZM!soeV>UM zT*GF!9bEX~c-3^p9~4(o8AnQnqaJPABT)#ERf!l6f}3!gLozqY-fDd-FyTt7zK+4f zwiC%@GS8Akm^sXLGg$ewkh%*s^dl=~@I`bsI(&4N(UtZpeST6p`hlXOTTu2@?e~6; z;2uHwJ7;Ouom)L0xZbWb^;c0V?l$EVs1ALQWnGzwVBwnw;f~r5nwjCe<*p6yUA#PN zFVmUPUlJsGw!r?~>R?^v)0#;J&xZHi-kO}3oJwP)TAS7J$Bz_nQgdR=%VaMiOkQX@ z7Vw)lE%GO$s)f{~suHDON+Mz=G%GnS!)=}(d<+W`Hd*THXs__^{@J?AG%;C}$9cna zpKIO1n0_;EC8^O0)gK`@{?q|%v`>rrPvvgLxn(8qQH!ciDrXbt+}#0l8b4nK&QA$N zr=N?!VA)jY7j_~@CM+_0|Dp8+Q_3)TMg1-^j?IkwD}NO-{TuCtM#AkNNF0-wO{P^Q zO=N}#Hko|sbwp{{tB!POfPuTWvUfzFDd>($+CDm>3b3f>Y{Q{xg`c~#oo~0nMP~#7rjg9Fd>+UhQk* zG6MIHwRb;Q-iTxNK)TX`{8J$!;+1W{06F4L(7>oXc;*6y9e+?rVhG52$DgFkBoidu zv4Ll$sR4ysgNR*Hp?If`TD)%FBPme*xXnJwBQ?uWv4tCY+a{R^d;0 zddRyCMam}kP?Y))x4se7$qO})wARbrIEOOA%BVdBQU15@uUZc*I4gDmxwsJDaAV9z z(M$8!aQbf03l%S2JEnQHL=oI2R(=7oZ2j5C?3im?{J)S-`0hC7eDXTlvuYGFo48fmfcYy z0shtXvIa8kJ|*+^XauVqSJhqxacagqxQh5o7iC7l7YuNA=P}C-%OYWUD8; zBOS;N1V;HtjM}<;zhTo!Wcc$H$6Cj!AFBq3`%?5m##k6Qd&M|I_S>+Tt>09^(UZ-M zP^Z|m2xpZk)u&1TP0sk^(5gdoV+`SdN%5|C+;p_i{iLN*#RjmP7v+#TW4?x5ix(g> z4NGV;^efrbBMlXA^>BsxH?2m2*MSDig!U?5xz|jDgeFpArp~l*!Qc$lqu2^k5^Yi{m5 z=!uGFb7wvID%Zhp-1+>TObkIS_;lkJ?+}K5rHrCFA!s5is6_KmM!JQ8}tYxhpl zA)4Y_`Vj7*It^Q=W=96izt&pQmWaJMMWpGQLL~Cs2e*3kcsJ>67T2>f{9(y-G+=NhmWb0a)Sh30Xki3dCrlo-|H~I{L-H| z$U|kJno@sL_M>k#j#B=r(etCBD6TysqlhBiB_}hGyYZqEb{TfbGLUPG3 zPzAU3rEg}HUf~_F-qXZ`ocb&`si<(N3(^61XU57E%ZPeH_PTsAv~I}*;S}pRFVMPG zRt|o+Otj8p`@#1qHisGV;%MFY)Tqkc80TiM`QLwl2fxi698`kur0O^WC0dnZgyV`F z(h-9dv(ssaZ}g#p>aybnR>hXBdS?3jnr0!+^F?*1Q^5hI1vmvE$4NYho;Pqbep5(F z#J>E^yS!Unz|Lcz^V$aP8ntyVmJ;h?YBYrOKZBUxI$i%J(@}6!i8YQjCpM4Wt*DMQ zJ9<&!rXj1K?UH(#o*c-coY;7V90`;F7;XQr7dwG3=WI=BPHu|?G9UQ)BA0L zf735{#->!UzXPgM-TIwvn3OI2i!&K-Wu4@~R;%-K$p8Nd10`plAv)M}Mam8g!{>2P zM`$;1%P$r_eZE6pQ|ZYo6nx#Ci&a#N6b9*{H+Xr5F-D;v}FeALi5d9=#0D;is;~ZQCdN z2r8(AY)auiGoP=!Q(yH?PX9ZdgVb7G&@lbyhA}oO+3|p~rps=N3*ozHE(qT7Y>ckm z_({_jwBj(KldmR~-rJ1%JQMrbzEUTd{W2n!|4%I754EC1_pnuY?fh7TieVb=pEhX- zZ!b2)?tjp^@nwqP_BS79N9438ZxXAN?dGuMrNI7Z<2XA9O_SbaY9AOr;Fqr)_&4#J zErAO-(lkdhJ!JjmH2aIO$(AlGz#}$m!A)d14J%8Ii+s zH2L}5VD9LPKy`aQ5%_p%{r&b1Act|f^AgZhZWFeCND>T8Tv*32wV;j^HUfWA4Cy)v z3j>9n&LQ{Mb-G)HMmo1cU+(V=sbN%Wd965&mk-oBm|<2$Gn_?c*zFHiwdTKGA>1f> zH0TA29jd1jDn|_zjGuE?`FO0lF2WoJ#5UsD71i^;z5wb8YmWu)f zE*qqR_e)}f!PP4T(_2gu!Dp|>#r>DIACMONbY)`~mwSw#yXO$nqj^$b`BM+JHDS|# zS~Mc+;U22~USjtt`6uf02jeAJuV;CJ;;ESimn}F46c!j!@@XE--rNE99m1xj1smT# zq@K| zc6_E;vb{Jmy;*04YuKeSQfR*2NR2PyyC|Pt_^ph%)B|fd(a7)@Lx{!qtPj3CgthIl zS@-5k|B19&%+i}qd$yF}fBk+QIO5%Qkd8W-nFKU@?lQ_D@u`>1PfF!rf&tn_e%C?b z>2)N&z_DKi>d@Am^bmn|3j_DTb5x|BgRV~*ftW{;ogVe&BJi_VS+*@t>~Uy2xgDjG zo0s0TuB!w&%0B(JMeQbf-=6dNy>ACti9qZne7$SC%bCdR$w3Ty`Riq);7e%6t301c zb^|VHb3W8zJfjjr^qiQ(14Z_A068k~JgeWsZUAyhIVPQ%wp6_Rv_`969;p{EroUNc z>Qpfly&L%QD?Gq+D2zwCvZ#6**w~)jlq&wBsX#J}@2A_&pGhH13vt9!K1YEaXyGqWpk7Lx_9Xv)Op#J~bkgr14j+G)-m*>5;y)45m3bgUJr!&ZcQ4X`!0xH# zx$9m#IMBt>$d#{caUVX)HM=K&l3x%@?dINuNxilXnItg^@t605Q>MGyxec2D-SU7j zi6ok{n4xKnFX`OhrrdN5H3_22PFiIH;Ro8Z`Xp?uvBD<91KW6s{=z`X2Fca>8b@tu z4r*}p*}ns)Qiz7Ji5!1)HE*A!d@^{kF-xg!UkLED7bz0WJNhjUV(Gkp`#)3mRg2p- z^KHE$M;2%iRS#~{%fMj*UQqX)O5(pbd6fR%{`ZCRK{*q|_m5M5b4f66z6TM9yxIok z={|SJJ*myiPSvxA`Jdm#Z$tUk2R{UJ1-x5UZl{;*OzS1s%2UEie1>le%RU47e^>AD z_!p`Vqy&A3SH6R8rm~UoKb|$O_%#cE}ZMu%zP(Y z2Zu1%v$u{C7iUv7`PGp;v!;%t+4H%wYoFV#gYoy1X6{Or*B$C*#d4+oq!paK^2_cY zv`7oAdhsuki|a7)l$E;*Yh0$(VWqm#uU()t$i(G&?0<3Ea`SjG?=v>tof7Lo3Up=> zF_<2Lcb95&A94L)z zUz#~&F9XKA4E%l73=80X_+X5x(QEJpp%iMwis&3lum#_t&98il6gEYH*Wn*)!6}RL zB$N`3n6P3U(49m^5`O!8x47JK@uFX!5x;65{6V$l_-dymZg&oMdL{7N#y}d$$=6|LXa~B&Tn6TVNe>FV5 z@odO+>o0UHs**sr1G}yoHc}QkqnibYp8-3^3Iim$d5DCLtRL?^N2Yl`2Z`te=RkB* zW!br9NqCwG$}Yp(Jzy@c`edtOBN$FO`SD#@PK8oa{ldJZdv*>aGzh)s@bu^%KkMql zw;J;{Lt?zG?dhq1hh~T3cG$p&6+#I3=!>dNlGu=w${Zc>>cEQHXdn)a4YPUG98E~5 zw>yzqT&;9#twoczvqj9i^@)W-kV{{29`alEl69v>(*tAT550`KV=y*TsQ)8<7jplAHK#hnWMWLQgFoj z$jq>3_k2tgT;S;8&Sb_%Q|>fCj^s2Uep1+K#!~*KE0Y2v$FB%iB5YlrUes^vmv1NP z10j)*+yYoP2f|`(95Gdu z9yS4>(y&3$Al=&ZW|-(}^ter@xPRu(!>k;h-5LEY03}oh~9}OlI=@!ZH2^IHz~by22T2? zacvWUFPlvE;^#pf1$j-E{{9u-e!wXew)gnxXE&c_dPvS$c$<00_F`3OkW@gA?tML6 zvdHH*Eowz~1k}yAr7!Y*O6Wsc3p5CC^t`b8VtO|W+Sy0`mDA*n)2M$uc8JdgO{wvp zJ6F1!fCfx4`?YJKLa%8&(+rqRBWNmAzk)2l6_i%OCacVc!>5{tSQifabUo3kzA}K; zpoBB-quplm?p_euLO260q+G4tope)f!;a*{^C-WiNZ?yzLRI-nsQGHc4@)08;-lTb z5d}L9C5&252d}DjESmdPpXM?!z%F==VQ`yuE3Rb~g}j(2?d;tdJRo!GT~}d93&%nq z9$0IJXopdqSk^rc&s!o5DK$+G%)KbZP4UoQ>cs>ZBmC|)lvy(%!%$QPww4mcLIiUjSMYAjF{Z+9mj)AW%0rz3ag zS7wAI2TUnGA=C*YH0%Rt61Xf0idG4dNUh?f_m;(Y9r}yJPtkr2#JKx+%{vZF$D)I)@vuvsR@ zWJ}2Jyf*Na6^5OK(i7EAGT3FZEavzw(sKeTOtB&?cM%g~x_ZMUTvk-cXwROOTFOV- zALc(oE_Ru9R+(5UwNWUhzYnb0(|{j_cC%fHe8F`fW622x943y+h7KyNtE! z@zhh!u!$yVbL#$;PQgqSAn@HwZ|WfCKk{szo?IN_MqCpbqZWw~r6GKEz(mKW^M<(n z0z*e5r@pGDJE~DxMFc}6yfsA1OyRT{SD`UKiaY-VmIfQji3M(+_rD=O`XL|e zqWJzWp}^=w^*5kJpc?qG%IgWLxkI1+| z!|;7mV0q`Z^~!#(IJIVUrSz8IxB<1}6d>4I0h!@RZVd7*CdPPf4OmYV*D4lxymzz; zvn*UDxcEhFvdr|_IjZOtpo%Ay_BbPTj2jqtdhpjz*3PQQO43Y$yFT>Iy)hF%!0RTF z$SkGp-5nA4D0+V3Z#I)=nPaiyfsDVH<1EmXL47pf_IkTeZ>w%~ujER3FqE@A*yXIl%i%UAOtsZE$4bHX(w|_PEt|#- z)@rqW91u?5V*ex9xZ~+w?e^{Vsb;=8BexTyD8DRMlsD%*bdG6`ty^F!mKOyN3ZTY& z7&AZ>r42{RAK(}q|Nd2KYM|22tYE(DrfAOpTp2RfWz$ zmv&ztwLgtT#U|t%ZR2cVh91=TH4#Bte_)MryxHru-={W>zMi-h)#(YW&b5@k{CHY$ z%HUBjNjV06p|1tF`+PAD@7tW@x9&@$u@K|h&1*~;lpg$RPKAOwC}nhTFHmA4h_KGk z5H?PckjI6r{=8!QVodH2G=k`GYgmpL2K z97tw4$T(v3Z)>ffm<7becKE_QFU;_ShnE&n9Ls%OQIbGJ`Sr6*9ezlzb_BXR7(+Z| zv3sjRP7FnPD9aiD4HAc)=4Y+0lG;!Y8f$xqyHbUXr}n3eC%7bv5j}|!q=xbGd5&CQ z=7a3kS5?YPg}Qs1ADCjf3UF=o>s(f(mg(ldSNCGgx4-}NFJk0c)|c`mE$zcG`+x%y zZ3^yaMF3r}MS=b!Jq|yi1*btMh(-E^rnYhSBxhOluorIFVf&Sc{5*@0eJMiz+lJ;o zK4ui|rBJ3+dKc3Z&O_yy-@pGaaVMvT+H!6R9WwxU4CLXhmtCMvj?hd9OemO*r$_ev1F+rbA}_@zZDtwYW0Dkpa5Q9a@Prw)q8kc__V66j z3PC(t;RC_HIg$9e`Z<&&n4OauS!Lnn`I?a8{D@}wQ<=EIRtO;Fi%$1C} zm9=wbPbJmC5MN2PHhq;+VLJw^5?j5uA`U&f4hk;;FzaF6$I^4DW`m#p5ClT|?M$<% z<8p~$HZk>XyHNeF`k4WvD=>1n2lTayQpoDffrclnj5vSne$3bfUyTor_z2ILPz0^Z z4qa#zWqQBH`*p*usjzzu5#H^A_iOT)Ut@Qz=k_dFK)UYs@^(kTeVWBrNWUju*2tg# za&G>glMKHumnT@(S_C51LXK&<1Fjlv zSqn_`(=!7*XekbCKJBP~WxKOdHOzRMIvb~d3SH@}EuW*`n z6A^5bJ{{!i;uSNFfuWSN6~+aKyxHS^kD%_#;u9uZ{sO`L&&5F?F@59U;bCrj0d%gT zE%^c=oW>n;qqP?B(8rJm~snd zjOBLVGFK|1Vhd6KGLiVy>jG3nqy?KY45$kiemy791AOS_OrK4-Fb+4)srONUc}`k& zNg`XLM>TI|YahP`=QaU_MNNo+CLoUFmsKdX9foa}kZmsSTl;CG0#i;cTy_rFCT0p4 zAM$s1!G36jDf#A9w(0bm z)hmw*!FiZ2AbL^KE@6}-;AjXNjhK`Ni_LClIYl)pdcxq|+zQcLN;oLh|@ zg|;Ok%0K>Ys!WCjU24cwx@$Lf5Vq3V%^7`nIq@-%PwtIb!1ljO{HmJWq~I(**c%C7 z?7RsjTbJ!~QjX)Bh}AvcG2|%cg;&;r4Gk5lN8egz3RzI; zLqz^^fe)ztgN*X`?jj`(@rSkAfm>4QUKO#p-X7^3t2DQm{mwh|#W&d6VmVskR7nd2 zH(#u#MH@IeJcfmA66WW(a;!jdJMgee?#j;K+^psXnfe`X3N9q*j0(eq%t-7=;jTUT zey?tWAo9H;&5B!Z!lF25oEuy_pK4&ms*(G%VPK01R&%ZC!s(P2#y?pefXNOX%i{|nHgMF`DGZ;BLu23oUBm&^J39G!;-DV^+ z$Zbh1$3)q2Drb8}$|esZ_>@q>kZ$m*-PXM~1NxFAfEVSu97E%UKGOvq%jb6V3J9)b z(9KkT2C^G{nprA^=!!-*-<%s63R(lR&5(9|>WTd7_&&Rt=#y;3h>&~Y2~c{>1YfSI zo9tS@Y%E?tds{H1H%@fsmd6eLLd&6c(dnmnm3d1$Z4xH46rHYL*GbTyiJ1GKjodX^ zvow73#@n_+9m$OsE+CoZ3QYcd3NB+8CGXAxkG?4D`44j1K;QFqw9zjxUHpmRW+Sm4 zOsyX9U%(;l2F~v^+So!IF${DXg&FK<-2#mi^1HNW)pP!Xu;I8 z@vB>G)1}*8q(>L?^17~ViER%=X-&gJluhND*9(cnB{RyB?x7fQT+=y#8+r5J+v6Vc z1#;^uIDF_MIK1JaDf;-J6%nom-88x6cT*GbjnN;s&q-p;_e-D@GOB5H+ddy=QzuUF z72c$O@0f4TZ-@$aDL2)D?eM`zt|sgH&CK^)KZ;>~*_~7) zoIK-#*_!G#R%JAbmVRZjr5S$$ewqHP{;*~)wX%Cvp`hX>F$3UFUD#$Tb-AZ>M|S!H zxg)vGtLG+#5K--gHcWw5w@V=rKQ|n{Da~z#IIgZu_Nq0VR{YxZC<83IYs6^xjf`nV zjG+hbDF8c)bR{_vMOmRfE>(%yYK(J6(K)o{vO7#AR9^Lwi=x5t;kuBY`g`S9KDXtw zNaw&~l*BUSFXyofyVn-I$IFPLw(-=yBENITPL+62MAsvG^ORKZI&0M>x>quIUmjNk z5=_}up*X`aJh*_xla|g_D;i!X(C!w~_UnCPLugWTiL0^_r013M*9TO-wwWW3bG>3- z?+EcWw{&N!3a>$>PD4p9%&jqjCVT#Cjy#^pH4=$YWsbLOi4mQ)iEjBBO}LRPUY{aC zh>psfnxN-i$f-{@eq-?Y64ZJ20Rvl`@cNOWT>K?Yc>Ua{K7S&LbjZo1Ddd!EG5nww zfOJjYPW|7^$U=FWvwwNq_KJk^8{9MVeRrzTEwKY%s|bWOO> zEb!-!&ysM3-FI27fD1wum9!tHhBYSRw~Q&&b`<&zBo?rt6Nxq8yY^E#ZqYEOHPv@k!s*Tk zXX?*XDanBO_)DUPl)+lHA5h_tX|yuj`%dxOGMDu&qKk3TJi%5-rd#0@?|u76(xY40 zt0jJ1VFUf)4E=XhQxs5ir(N}z1jzFo3$Nf3GTGACs^kQ>@kOng5 zA!94@C`1qjS5tMT=0QY4a?^zP_Q@s2KeAPkac#GS2SkTvb$P7^9o@Z2qVfB8JiqCg zBw8nD(<;LtZsI-OhPqklq@;M0ZCmx%2L^IYXTVE34UUHzlg$4TLyez0j-T{7>Ap&^ z$1_8oBaa8E-1@c8G6d{f9D}J}Jw0^3p=7~5Ljav6Ej~y(y9xQ4mw&~R@nPz1<_7#OV&%zOiAw0fWov`d^#-zDX$ za^9qq*~Uxli=W<5k>3*Byq7M>jrg`H@%w{ZH&r&1&ha}KaS(KtHmC+!xK5HIiSy*50KPmMB zPR7pgBd;QN7_uUwu9X*y57cItu8;TL0Ug!1bs#A{BNB5x01anZ+NX`}b?*QR@(Iyi zn7_RC5sp!YLWC<UWsFIlt~bql#5%*!s8xx20Eh*S=&Z^hQHB;F>ziT0|BaqNXf( zr@DBSWivjj+BxB_P=dU})+A{t?|279NILy~jTkydFDQ}nEUG0%cQK~kS*pWX&f8ycdl5=%mwBUR1t}-BF&`KtrzPaUS zb-6L+UTo?*y7H~VH@SS^`|pMpU-mR?>)mG@V@RaW?70Vt4Pv>3LG~-A%9Ey`NfzWu z&^$Ek?QCQSV^UqgAD(mbrpPnhEC47|;~PN=r5;szQ3ycDeY%}5688ti&Z3MBfRpE4 zrvID!ffQuEdLMLj4d-CSg68=nq)=#QiExQdEcAG@_6LT1*YWmmZrs?~mSFsemFCAR ze9#r6A>FiFwe{@!<*v_bzeS0EGXp=44tRW}eNHH8+kWhlI3S2;$#Tzekw321c_13u zxckty8%)%+QViuWA<=cXwYS2u8#YepaYmbG&421+&6b~3%`)QT)#cGGPQN!P1Gby@ z_^gikVqQQ`5Wd@uK#J&G2-;+5aVv4;0w81oF%aqRRw9ZY=N-i#touyz^*o&HD%Nj5 zZ$EMgK9uwB%21gPm2Krtuv|fhqS_%YQ=Qd&d{R_@xji`AZa98qn_-`)yLH;(mRnXI z>jQdtjnNW!WhB@*gI5(P@^3oqV2-*iEds3z&k_ko20F^)c?U7??RftjyHj)O%&Rs_cGOvsN(!ZtKYod%(YZ z{L`gpKB^MqnY-e`YZ83h?VE$g9AIUL^{Mc>VO?!FX-hF#2n5}&_!_+okMS&XXW0#u zIjVS9Lu0L*n}m=36hc7?0Eh`tNFGe?th$PbZ7_-9hS z`qG>ol~u+UX5|z0ap>ijcISpX0`Fy|5HzYzHFg$`{M-H`usQP z2*eW*@((S{jhVR_WV(H|IubIMZz#f?eraZH#2TWFHbF~I_L}>CZ_!Xh^e(N7T|^)6 zd`?&KRX#4B+OPfh(>%iq*c`exF-W~mtw$p{dRSWsC_sjoh}cbK*i8#@J5V`ttZ`^$ zyS}e^K~$o}{n2h7G)Ef&SE&jbE=!lAq?Gy2XKdQ*rc9Lm0BxyH6{XK;@PY;hEL#uU z?3532(MYd>WVO7J`VN$fLJQ70a1Hum^}n)hF7SaXx5o{&7I7KT^?~H>zg5^+42=&B`RhDdJrc{6 z*AhdSKJPeRiIlo{RU0CDwhqK+^>Q5PI0{&85L!dKGG6&yy?5rD8jTkuNYKcv9ytx8 z8pQz|A-N`(tgTZh6}t%e)KDczrXaIfV&}daq0P`zz2MK?tDMjb@y&e2kVs|(6g+Q~ zoexmU1)LT&!9pD8Btp$czOg_RI4R(N(hW-n^=;K7kkLXH9&G1|kXlAmL+L-Ro`e5}-I(1~K zUFy@g?vM1{!*`AWri+>Pwn}ka;>^W+14(x-DZe_zdr<$qCyW43n4Js(>Q z;AXbQZE50yw-B_(gO(N7JI!HDc(K=7sqI)a)p5qLwi(YttuIW|AhO>)dLfQ>&`{GF zoVb&pa-4fC-Fejcd|q-2P$73e*Qmf{U*|2aOX%C|cAN0xDnIq*}^n3a$~<53=`o{0UBK}Xeq994JbvcdJ8rKXQA}-@@AqNVG~hSj+OF;dvLX(pA2r1-*iJ`XkkS`ZPS@?bz%*vNsR}ibhztj$|#%p*7na^ zoEo=2G&A+g&L-&GluxE93fteae(vk|F}+f4%0)`ZS*#`g!hT1;RO>{f6}Z0mMttP< zSEm}GTJ^_Ni6-@4A>Ziv6$})p%Ccyp-yUOs3QiJe6)JY)^{$B zqqrulSI3p$U6DJMN{Xs6aCz+M_|#zhj+a2kBJn$|N((0AWRJP}Dl5os+%wSb%N4H0 z2@jhmc2wGD@bo_pJ4Tye`E8kT+h%Yex!Y3tc=bZD-}%rMTuMUMbK4#lu|33beZm;f z?nrl5?)>AwB&{ur-7Zz2x)}6vw_t^alP5IrxUum{fGO;L6>^8QigeFkI~6piQa{|b z>|@cSsw4atq-LZ1#Bob#t%l=tR^1Rx63II1O5eVIpW-I?!-$l&aU#v?bs6W-b{A- zWV8z9zLj75;m?#YoT^k_wZ6q`BW`Tro-DF*p=;*wPEKR}7pV9O%wx0vg&ndaWO-{0 z9N&QZG_RPyHRTIo!9;iCG{j<9MC|@wlT^EOyngf=5w?gi{R1?mwa=FY?5~b+RFE3ad zL&^n_<5t$jV{6ZlM?(pgUsY5O<6dazTZ;Wi-$p)D#fUW?tV8?7rYX*VCg!7#6x$&5 zWR!+{sEbuYJBQQ(W^<&3D_p78%{KcO7 zPot-g@#FW%Eb*N`$66`Kr491LP+QU>W%aXBjfN0We{OwDWGzujRJK*1ruW)N^mat* zuZH&j3>#nFeBuPqf+(Z_q7vo}_b4AF#HXb#C2Yb5l1d>W(~Ao^%@=;Nf$LpEH{~2G z1DS-TZV(s_WJKO`tHC6t!sar96ifYgD!rKiERpti6H>I^-jOvgNp~9=;DtdwS2I!-w9Z>KA?6OQ)g!)5yd4lJL?HuhzHE(g zVE((XZfV`UjPP}C6qIT=ruaQlR?^fH(v%iC)vg{A-En3BRKuHt^as|2Hvx>G%opD9 zwq%VO-pNKnPkGBf^NuXzH+FwwRjW1rg^SGr)c;xr?_U$D%Q^izIT(b#7(Wx;1Gre*Gi4@N_#0Q*%p@Ab9)KWb89vn2W%@t9KBj zL}$$Jl()()3(CAsN<-03GJ30}Pi)#IIH^5DV`Ycsg%&QA^JXtw%=5ravksFvkS)w> z1(oGDW#_%O`^VE7{O2bi22SYS5klzqKAUY<^>Ln8Lro^POj39z1VJ?~r(E1zw^oj_ z8~x5DY;~n@Pkva8OMs}VJszQ8jpx8?Ijr|L{-0mRa-M#-e^k=#;yX z>HSw%l%zTw+0LFYH8$NEv+PT-_mc$^Y-h`lZ(SFadpc6oc@$V$B0`?mxTw;9?VZYy)bjVH`g@v36CqRW;S2emhj6|oppov}IF;VCAEqd;~&Zzs~r6ENNd4)xm~9o@OuDVrM7 z=)vs}LicM0Ho~IvcM}h8kr*2yYMTeYQWgPa%A5{EWjGqqlB1*{wG3A-^6Kn6@9rVU zxOR$b+vbu~`rByW-G(s9*Z^X|g3+c-5S9^k<>A=?s_yGnPP{`}2{Rpq7`A0mF82Sj zYjXMNJ+$nzU{eEJ8`meL+8?YCHR6_!ZH@=KL}B(8Jw@Dy2jL^(+c43=A;1?n%e z4Db;CqG=rZ7O10&;?l)pK2PugD%m8NADq=$U+F$kWGB^}V7D(IB{X;^09$#3bNAHv z6`>h%ft~WkvFuVJ=C7QB`$)dLdF8jzv4I8ywF@KAO=A>VCd6~`@|e_wH>{P@TCAak z85j6NcN8lq2!x1hc;XZVCr2!~C$h={m$uAQ;mXaCj39!;p%?}Q!r~(d0_4+w8Dp7! z2fr9zUe54L2oaxW2ouadrsfXcMSuJAyfOg2-l_3aYNpWZ1K1yb*pJ!U%>R0}`Y&Hm6b1I^bK_rlS{{Sh7}H8m-)!PWngaeCgX;LKEUpWQ2|tA! zw>Je=7lqCmPTDc|Kn#4;2mYPnve#k9Z0{5))xTiO#)PyR;SAEq>Q_T`5|lz^>&6eY}h*Q`1b&x&+7+=x;>k$;6Yuf4>|L+ z)6b=TNy4bbPz7=U%C%#g=a9#)t37kZi&{@e3q@i$_%+HoD1$3+Uq<8VNA5yUl+9zg zDgzrdjUkh;hdE|d4;jTs;1jB^y{q$ae+)|B#SY zX`hX^G4encZNQ1sbJjZ$#nQaygN1H3{%I5jL+==F0K<==r6}z7ldF?U!~1O`hu2%ky*CvFwD6m2g;2K!A8>C0Xkn^w@c z>)N)T|EBulrL}`Z2lP$5$C~MrNtC9rgg>_#kNkS6h502g#kQf@FU=;PceA?VNvgpKvBdW2uR^FmC+8M(OBFNZjqU0m=PRTo z9=MbAlh7tH7q_Ycg7Mnd`}!c?g=anOQRa;k2l;ay%qBM%>k)1A>#bzeZgN?FG}^GS z|9PW4C&gsm%;|nOw>~cgb!rl67qL~ZZA$*H*qfgf91qTNwd@RRzdceagerc?^*Oup zN6&$+gH%)FB+GR~MtmSbggMNRwlq}Ys!#B&pIU!$yhHr@o$=p+VfU)cuj2o3hb_yzH1P<~??AsoPaftp3NR=w)|- z>*}qI*mOS3c&;P*O|sBa9vt!tgG_o4D>o3!QfL^O1%O0J;m57NXfN~`TG>Boj-euR z2^1}|IgS13w{SnJHSA5u^?{L5?N1F886F&AX>j#hTmy(AopAC1d zjD55!0Pzfpo23Bj?RPkqmUdWCWVR<9A&XOi^mxH4)|p?WdBhM@&EBJ}gtuK=qTg_8 zY_Y$`mOsTqLd~rKQvB`;Fd!AiAv`U*5x!S&qcpL4`>Ek_DNgee49PCg+?3frj`+@b z2<}J*HqzI?fNYKa%)_%gd-~5ajny8zKv?nB!mlp5x)U&-hm#5QFX^tA`pn7lxp)K;qP|RzJ-z0|#as{~4&Uxh3 zMYhQT;gmbKQ}yrcy~DuAXUG2B9)+RPw#GBhZh*45&mKF|G&7FMbo>KqC$jpIeN`-! zzj~`Cr%c1Xruk_jw8{EClzW(h)Z*0 z+ttWKZ2P0#>XVnB9v-_9cwNt3DqS`AXkmvM0el}sY^LMjd~GIm&5-n(uL~MPv-}xa z%#i9Rf_$a6PvN5c!lBED11V9ThC8^&O4YBdr0Q;cHp zlWV*cp~=bG)(-n!iAIuSNqG<|Y>9?K5Cw*wPv*Z#>?cln%iBvBdg_ z%aM3yIP#jXL$wV_Ym?EdXNbU6+)OOS{qfKuUR^b~k#`XOP|(gjDofLxAYekWg2)-~ zh2-LIra6(sqX$0MJE}H|Ebb~~qLIzzhRtyH9 z>DtH9UQtwDBYBY>v;EP-91s=!#qs&c3IW0Zp+usRxtIa&|San z@tNB|%jG>D_M?*yc-Wme8TU(x4;#(1lo*RWoSx4I@ZB0OQ?xFVE1jBa&e_B@=WPdD zzU+AQJ8peRN?n+;nbPyF?|xPvDCeWE9YF1Pul`or{k=Go8!a1I7Y~`Ian+eyoqAWca$AJ+`LD-b?Wzm{bJbAfvUmcb$CSl4KvWR z5r5bD(z_`v?t2jvM)z!#FLLG2lO)T+32_|q7u~?PkU?PJvh`91p5LST5|YI_a7BMl zvWBBGDuKf{qaUIkhrj!#l-%}`F!0XGxqF{$1%ycmL5P_6?$G23tGpe#)Xv92hwH~a zIZuxaD6JESjGVEP3*!PlR9%W+Onv7y^4bnXAaqB10J2Dd5~t)dd;M<}z_IYT=Rjkz zB^KkH1dYEJd)5~}I_nRx204lf!+gd^+wx|-r$V|^rjR|3&ay=zy}5X!igQKUBi1i6 zK|5?X?J~8M zp1IiW_b@0A6WzGyUD&Y-3;o`F&lTLb(oo-^y7q4ch!!axqMf1mZS+5}8XAx!6)ZK= zJUdE{h~7@%nWIwl_%Q|Mu4<}eq;q~ox+=^LO2RCHj=IjLgh$#Pa$&kZLqe zmaCx1X{c)r=Sl z-!JuWFxkkZ@8Mld=#@g-zcT`<{;d;$im;d2ALJ{iBPy(zqSv`z#OWPfqB}|y->|p^ zx%gx9^*@bhjqAT={GQ!=QAK$Xol)$VcFc(fxHCUT{L6w|*B5XI1%!5iq~P`*N3-6A zL!n)mRB~o<3!=~eion;t(9o4Pq=DYIv{ISy1k0}re+P6ZO9DCIsaR8~zq1@cuwQUD zIi*ze^6#>1-y9lOMIM_p4OI_())-5iLVF-V*}iNta_90H-3NL*k$4AIO~TkdLG&lz z63g+_oDKUFyINoBA?F!#^+^fWogd0Pu|j%ewN4t>4E%5nS@Cr?JzU$bXb2MsaBQJl zYs^ELLnwboP@#;!`{w)B#pc$u^c%Ar7CIRT#0{;XPQz2#i|!WkIfq*v&B~j4@Hn^g zS>%*~=HrhO5tz>p_=74;+2}(L@wLcZSF~aBT}5cl+C*rCVRGSsa*I0hj-3SUY*rPKJQGv$jKd_v+i~rEWY}++qaQKo;BAF8#a;c1af2<5}BC+1{($iDF!XO?IvFjx@Ddp8I*65pdZe(9a+}Q z@>BmVaz1D>VbX?s+MaKc9<@xu+*EpLw6p%ht}HkdlIaMy0#pV(cU24>*910#{Avs3 z#hP6wo`I=@$=mn6hxJt!=(NWOFN3dzY#VL8Kzn6*O3t&}!7qhFgDU}kg)1iwVlDeS zQgNi*J_On67I>Gj+rOET>hpHvXpIn!KYUX1X2$qv@fFw>NsGP;Sm%BRs zfhj$abF|a(2Ygrzwmsfzu|CczkkVJ}+%BKV@U4#(rJqLvHN;oXzwg=jK)(7!ttRJc zPS2f*8OPRmc7JPAaPx)}1={^aL(R3NCf7g0qG5RBO7&@D=zl9jM0n-dy?hXEclW*8 zFUrPHesJjL1g6mezw2vQvpmVw(z=yjva{ir+-xd!|NDUe>OILp`YzY$6uv!2fpe(X z9Rbvb1UivQqTYcV&3W?QMJL#B@5B6$X)w2~g*}^V>a;U;k9~&CbTlw4f0jpTuTQDA z?&@(z{g~D6pQC=0O@*A_y9o5(3gjJYm9o6CwxrM8;p$$TCAmfHw{^>e{pC^mjL>WT zz(78B@bc-$Q%Y<`-sbHoS2XryBx*zn?sLs2^+XS(7nfzUY;3$d5rw^*(A>tR3wm-u zj(8W})!Kvin9D0`g1#6rj3#1qD7L))HwZf()_}Z|>9UgY^slIi z)ASu`UPA>>jAuA>CF=}@_ARQzGv!N%=EmI~D-}bxS7rLQE#F1Ndq_;#e1NGici$75 z3~tMRoY?yL>3an7un&x)k`In%d?vLcqycF!*gQ>q1Y5fJlr2U>B@)u3PNZ+z5*rqa`{+yc%h`7~UW{?FrS%Ys z)zrP$pV@Zpi7k=x@6=9PvZ_DPl%vk}dLDh%Gk8X_%KU5mhA!Vi&p0_<+s6kT(Ji#H zG5J%cY3`(!jdzk0QSG05XThp}gnL`3MgJYeSJ*jyLIiV2B|BM9Hcxvmi1n-x!@v)E zEVI1MFBpfH7Uk4$q24;m#}&~MLS!#zbv`+AMKhU|T{!@x&JlEWeRMznsC72n=oFFVqk*1& zNSR7#WfP|O#{MUQi;{P5WQ~bQLb#vLxL}hq7AsF5ML1@FlHC-nrRdO^tp}Irzg+a! zsaGED_L!;b7@_v_q4egzYX=WqJvMlexv_Q2Z}^L?a6kX%1o3D5GTHpPXNxgd346uTrg0Q}B&aN+~Z|8>u{1Gz{ zvMy~T?Zi#nG}$fNU8ZdEwNurTZ}iZr_^Qum2cV0m5_}--?U?YkQTfboUi2RZa!}T-&J9{} zR-atTr~Ru(`?p%|E<4EC?N(-XeQI~^{TSy?rXa?xHg<2Kz9P=%6FOyc zTt_CJ4Fl!caZ^u@RyV{ogalz{BaeK4vRMYyv~NVvKnGJIfhXqMG+#!*7RcHIRlSclx`Bjms0=j}Xh7 zK|2%3&ej7LWNANViv?aBP5C3*WG=mU2+)@wBC&9A60Ol)Q^>At?9hN)&9|EIp_h|yZ?SaW+CBImLE@rKWM z#ItD9aW$uLc$kSoq<;jzxxFjbSy0-lL6N?2%kO!a6&XDfr=&k75s6?x27GWyCOg~4 zX6h~f$kEyr5!{f$a#czQn`r-}Xg6=x=KPwl?0j6y=|J&m_@8j^^1u(}90?pWXsPFdej%iG+O;P?F#vt$+Yp-4Z7siK)moG=0caKjBPJ(f(oLpD6 zZ2IxpPL0b_qYm$oK%vZMfDnbJZ#VdDq?&O!wOlms5&T6q7;;+pK_goKn^Pwyp}cv2 zq4-{N;Ha?|bUiYmNid+xa}q~%dsnFG>}fp8sq12dKd|p7ldCne<9Ih5Tt#nhX)d>N zRMi-$k>r*fngtA@H>5a?v;HnfLoRHX?YUEyat2!W1!YoBM)mWHnXtvqI~Lmgz~*AW zh24;w=37@~5>I%V1D=kh!?=dbWzpx=_#`H$^OF}8xJ zZ-Ow7Is3%NybH;hTE?2aSGhrKp$S;8J=xU1LUxZ!mjgk(^7{7u-(|gs3O3Kj669#2 zDWN|<0DFc*TWhTYu92m{v;&21{%PZ=`5%0t3m&O*-r=Vm33G$^>DwzgM!F&D@872L z1OLWzto>-#E115}_X}eZK8Oi8c;>j$-e;TKJ(Sdst1k1 z4#KO?;5PL^X#ILW_^==A&R;yTxvY((p%xyR=%-g=${thCe%qq3*|eI(kWL%HmAqd^ zA2#ADb@j0l-9FPF;{CT;%a^;o5RY~ZZ=eLbDv&b=b7h*4-c3EVjxar6y?^Hc$uG}- z%Kg0xKGkz2sVrD#B4GVma&mTS2tDx9uru~3Zz2l>^jPAE0a1}aHO#5Z_C43q6Iam^ z`%BiWKNr$}K$Wo*3P+xScQV*7LVsvr3U%e?R6DyxZ5~MJn$#%T!k&&%^fO?} z0T)iJW}8%`&`3-l2hH$Mx3pc(nubZ8#$Smv_?g1Bs6>lGIj-)m;sd|5nQJ*O4Na*2 zd@a@QoRk@0M57DFjgq_jk{e9XkxhVq0tE~w4`=5X_oGZd=>T~3R!xzxgh}gNvpvf6 zQw@92;ACG}D%2h28_iB=zyi!8!C(@FAO5&ED=?HeqB@`xy z|JY;A9cvOT?{T-`ILA377k!g&?Q;tjJ$15*H1va_u%;-2<(8zxFua0ci`UV;+5k2Z z(%QNn{PziBDCA!3Y%l2xxdCNyeauby@(M$EgSmMxmvHG7wDxuGlWWFo@@m$f?=j}W z&Bjc|IgACu`=k&F0WTQM!D!z9sfk#QjiipEfb;jh;L;nd~v2sBTMl zPq+~lRM?5c%=E#{u8fo9&}Bv4OT)|4#ouPW*~M%UJR0Of0oZHO z$&BnC`jAe`+UdL7yf?>02e02F-S=6nn+)=aD6M2a7QaOJByeJ&KdsLcX%@7N9%%Q&wE z`7Vj_9aKsvIE7Gql)h;5@p4%XG7jeyr*E(qCO~~F1+%Spoa#EYW-`z$V3F_0ajQXc zuli6`YH6oht)$zDZxkOZ{mGeWAC210|8nCkee3b!%Q|t(JLu1?%v!OPe3J;*=C*l7 zsgl}l@FJlV=xTG;jrGViP_=QP#i~0$VP7m798ciVJK4m!Ys7NhZg z`YyOvxS%>1?eLbS;cw^aB^*SUi9z;nE_uwTpM;-Fg}gE)eUl;nL}geb zUCc6J`|-8KK>a6w=HIbMlyUByAHje<3PUM!*XU>vmADy5h^ z9w&&}QVp$E9sT{fIQ%5)-ZP&_l$?qU2^3Fe#VaDe9R-0DP+!a^g5zf{9d%{(@!zOT zb(Eq3!5~ZFj4jSf`>XR3v*fk4r8Dm0)|FFPL`qg=f2OXZd|!v0`qY!qWfsZ*`poT; z;_?p+ykCBg7^j8{YX8;tZyqm<(@YQYyMuQaZua>>>P&XMkaV!F53jHc@KeKO#cl)O zHng*hTnjeanz7vB)lgsyzvDG!JZ00~cA|cmJqg^l=_{vTzBzz>Oew zrtF>_eXv`UKNQhs=G&_HRG$zMuzHuJ4VvdEHxPYhIXj-Yb7^O~p3~M#Kyu=pFXOVw zEP_@MjJ4k=YLKym@Hc7vwyyswf4>-QzFqiAQ+9ihhX|DH(~H44 z@^Lx8M`}kQu$Ar+AR?=J?tC<8%&YrmZpcJecbk1scuc}wDN?7Z|mayWt&eU?|xzi zifmYAXDuJtr4Y(4z|D`z82xW{%n}HrG+Rd`69(l@6C5<823X=aA1J^&pBJvgVL$fd z$F+^UbBLSERB$RRo6JGGZ09%pnDf;S0~Wbl#jB(h_nKQ@k$h?S6He|p2wSw__BnBt z_Jx`|(uzDc$TLHC&l8^IfC9-;L%a?l)X;EGQQ#wats*+_+x^9P;7ouh=@Kl&^3iJf zstcq4Uz;&It-#QDahtdpfbHg`(j3oDh)RWRK$m5Nm0tmP)aM_xId>!%{c{If@nJz7 zuXrcbPX@n4b$=7^U{6`8_RNx3P)rp5S2zwW-!Lxs0yH{^jYL&^yr-;w<`JIeWj_+n z6e(_azc%#^MAZE3;dhk|RnXBGyaJ+rN(r=31E~YuOr72rzB(4ZfZDG6Q_DgkwXDW? zy1%36azeKPK0e6h8}|6cQ@rvI$EZ%^Fh6(d`5xP!j(Wr3I0xQQM53?U#*d^lHO-aE z>s<)yv_lrsWOoAV#^S&@Vd%Zlux;h=BXNi-p3p7oI=x--1j?opP*%_ zlp%MQwJtl+Kh$`x52WsDiPTJIX?~Nh5eTlTM^{ur5)XzdGut*SI!!$5X5W0)CVfRH z;Z5Hpb|-ooMznh7xBil3Tf$a{H|Phh~%$8DVg z!o40Ma=((oxV9aNJU6?K$SP@Yd6=7tXIJB|hU3kg39QJoxyA>z*-b)cClHAihfI&l zTFabOQg#o83v>j!Xqm!&SgY`w_+4t0EF6}5Ob&QqL}kzc3;G$ zR!hQG3f4Mx%V05)n_bhN8?^YAMbY}_OuP24Mc4X|Edc%plR#|0ddkbjw8f%Lk57BV zd*?0v4}BGmiPLWgsEzZxll`T;lILab+oW^%f(=E zMt_X=-jcr^iw&wD@)7f4`teUsGOki_+ewTTO=~jGrkLK|32LLK@9If zFVJ_|?m__n(V?!p82D#QEaD2a{0vM13Pe+$^77J76*Ly z>9qQXkn4jDVewQFVawk%o3AIHq&ULiLkRR>nV17J}Kr!|Xs{zD$8YF3tEpXKv zjt-QrpJ74i8%oU(o#N3HFlN!l`@Dj8g?|i}3_iGv5P&-z{dnh>FZ!9ClD%Mm?vuyH zl798oe~H77_80%8Jh#F5a$og_KmSLMgkD$(u|ARdCrnPh&91ER#U=xC0>;pd+kjo2 z$gHHe8F?Q+%K;(rZWC>xf8L-? z(UsQA*KAL>A8Tjy_yKg^VeHVvtPk4namGOV$kB~oeQ?IvM>p=#`oLo?|He~4*Sl&& zzt&*n;WY4eqAs`T9uK{(@g}J8_~c}D#d`@eT_x0meHRd=ESwlS#>drr$9m zpbdv7I9ax7)n2d~0+dXNSJ2s213l^A2DxC-C8J6v*(2X0);`(vr&DZLzx)?lWWCF3 zY%lQ1;8*VY)2+F?HI0o&XHTPdZ;#(5uTO7xcK*}Umyg}ydH(j-T7TE=unF{6B)UuT zA9Gr>Db24=+Txx*y4jJd3s|0@-=t=C$hSv+YS$FYba}60qU+{hW3>-#Wa4lKCeEWX z+t2qP7O-6He>QFn(9L1GH(r5G!~&`W()$9E&GeO*16v+uBHR2;l-{a7tWbvKIUDWkjxYqJBVTQI|RlNb-JFgup$C_=EJ&U5BHG?rMcj-vTKyc6^KKBpi%Su7%=}%zxt0qvh^S(Czx* z&g)wn3At|zsf=pU!_PbNp)Kzr%kL&s@x{6QqAnfef#1tdM@9Ym7d__LVE6_nKX^|Y z$g!QhCyori?!ae=?X}ZYHE@MmdA2E8L{PKU5-q_NO$q9jzsKk{*MY-qlTp(lV?rQMJ~mBeCUNO#YCh z^*g-{;IHgY!#FQ{Bz$Sj@5upw^u<@@NpiGxs>Pbm?T-1tUPCr0cJsjv!|KkJk7;c1 z0zo+S9g=m&yY4c?D3~Da(Xwt*@mJNUl+=>_-HW$;s5y9az=Q5ADW1vI91b5~kqC>y zL{EHc#M zcUk^q1~EVAjBS3og7Vw<%-R6#;k!HFFNhIuEN_sS#q&cD!|wxexVr%CiOckpe(af3xtQH(M-RPn=-fFl zhJGL(aiAIN7)I|fXN|?tcyobhGpZWI*%4Devh$3&;s+UXHkoQjpP`MR`L!f#dUsUK zt2Lj@!fE~PJ5x}+`vw76LpDnGzV!~R8rszAM6Z?;vh1-V7xSayd}F6LJL75}97Uf3 zML_AnogZ1>IPdS^jGb2G)6*Tz>I==`k0P~4=YA1efb^ZoGp5vi_)$^wMH_4ii1-S8 zK9L8D2qfx`*d|}%x53U`0&Xzc73S~rtVxJrhXZnx=3xQ;p^pebkv{NU@9h0E?BCjvg~hWP4lI*IADb*9**hi}t}12yfcVII)OnMW`gg?g26zD9(WOQotwQe|=I;^Y z1MXZ7G>`oYTc3AKXEbrX2U%lsySa(BdDbpbYIi#Z%#(L*lW9`B3!BbuIF)ZZCu5(h z=V@s=s~1znUB30_JS2;5E^Dq2r(WFeKxam}=Y2OQhyzSO@xetJI0VOlzQyxIZB8C& zADw5yk39*}MuUcj$SLk95hY=FWh-b6b~4XCAC&`5x;i#~KvuF29nY!J`2ZznI`k{E z3r^r~ynJl}E;M}o2=tWJ>7ReKiGKZ?%XIQkr*4Ff%ntmBKF~*3n_I^Nb>Cx~6^yqU z4(;f=!yFte#^h{%u7Fj$N>^|3FSqd-bLT6bNHO)JxY+bE*|!ee65I>L2V=Py99j z`gh{hmK*-d-}GO27>$;`uX;b(aF>|~K}Y`Ryl^f+cPy?0cPKC)k|!%yvtJGL0$-Nz zpnca}_X%<2-V^L8U=4yk`HtoA%F}YBl;73(%{6<+kNMYT^<}xT`IHAK+uUPOKup@= z`ntPPa(q)jpH8|#PHl*M6Q_a(Xu#)-J-gDOG)2^=hxiK5x@!=%l;P{Fc-urP9L0&yv4OaqS8}OP?pCEOjS!0`2DKxf8 zZt^za74HK)COTO-lEAA!J?&157+)+g7}8CH-=}d^||oXuyfn(6Bn0Z35Lcxy?fZYA2Mq&4YPyf{I=KT2n9S+MoROKJJu_ zXA95b4mNkR-reo7NB@b7Z~R?|YCdAGuMOBwyYxK#4wuZZjWfv4MOyn)IQg6}l^)Ah zAO5=QZ#?7HYR$(wt+5i*p^J@!=B^9!AdtOxROcH$cKM8t-;<}O!Mf|qH~!hK7zcfG zgs*8B-MG0zH+MF#(PMHBD(qZ*jeZ|{L46P}fj1k|dr)>Tr{3XC;>dx(8E~aL(7fBa z^V4k{ZshS8E1)-^AN}cH{X34_r$9#HS64c;AAc9V_P%si?Z*~D1^IQi_buKgK*_Sdb@AbjT6^mYZ@US590D z)u%?k`KOO|8_Q0rPK5ns&-{>|lY%vh=_MVnugNuDr@FBNX7SzdCbk3dl+WpxpN`E9 zU-8#mKc2y6B?jOlsGo7BV0x7DbwDnb-8tg%^^l|IQ;2sMZ}ow8Zar|xUzI6(1OGq3 z-7oQ|i*-5-)!(ZZimP)ldL=)N?Gr}4=IQv0$9&S)rY=`Lc!52BgE={%PhVXgmutG4 z+d461w{z{$Mz8K1>5;GoK}hJ?zJsF6_#2=DxgUZcejfyT$6bbQb~rp-!5`dZ-}_GX z;D^TU=f{5Sg?7*l=u4EuCE;x?>qjwY!{sByMB! zmnVMK3tFEz?YAkCN!GY}zDs_a(c@3yRMbxNodgws33bZrvJd&XO(ve*agpidu#o{* z2OD3T*JC4$|3Hife4*D}m~XT14y^uePZF!hFI)5LFa9`v-A#hNF&CGu1$DGDS5%Z! z^E#jMd%1^bgNt5+9r2eF^Jo4$=9fH2dIFt#{>T^PL&xyk7=W!a0EtZgt}_!Oa^Ujm zY@TD`ll%jHewP&Jf@^3vIaa&4$EMiU+y=ZRS6D`am4yqh9xAq&h2E1wEFnzobqoYeYa ztg@&V4_cU3wtQs%o8EK$`X5CsHa=Ewe0sCPmb=T3KQC433$N*Gpc4GIW*(!H+nk@r z6IXU~gPy`i4z-hWVjR@BZss4T>Z31SUwm~EZlj>He$4?N;MKO_@a1}+Hkcb@>VwnF zrv{pvs$>5EKiYUMv^E-uoKGx}<{ z`wZlb%aa^g*J6k?M1RadxxKLYvdOan^@To}QwOTI&a4;fqxR#Q?tfK0ou}~!aFXLH z46`1{TtiQASdhSB`VT+UkMh7>o{f^Ry6VxcY@?_?FbPf=v2MIlb8WzTCH7#8yki*s zO1OCF-*|sn96=Qf$7C-Tup{=iVgL=|2V*-FTR@7t+97iUG>n(GNwHp#cNUdRStd0 zvmwn^?T!eQP=BA`;Um`_+3V-sk^S!1A71{^f6#f74Ud$+X~S~01{bP({L`Ji+~Vru zrM~_h&+g%o6S@704`0@eLykaOtmV^Mm|j1`T7R1rd9*u>e*)7%=R5YnotSmt?hp@@ zleL%s%6l~YS4L*Ohx}S%*jUc$vx%1vt;^@d*QdGVV|+lCkDv`?6ncj8Yp&ASk(t_X z$?a^`-e59E4||02s#? zzBB%S-4z}anH;QLxw<=1i9{MsA1oM*HXnX9u;*=?#QI@8fqrfFooGiNHoTD+WAx|Z z0&?K)BV-|#;w+ZY;+_4Sa93T~|GL{rwEqC1e#B%dKdb!K7ww|)!__>Wmp5^5vg7f4 zd3>e+wG(!TM{alP9JCMUX2(e{esERv{TO;X27ZrMyC3Ukqvk*-US;%jsf(lCB=+Jb zL%`-nM>$yx>|Wpe_xShXk2baeZS!(h)JF5_rMs^=_`OxWwPu#skfQ^B;8!24U2!4Z zSfzR1CZk{VgGg+?$G7vm=HML`|LSj^55#VsS62=q4e9YTv$fWmbFNXpxrS&Tr(961 zStJxu_(M3#A(1yQ)|?Ja?sM@#?N)xqtMM>__9@JVYM_%pII*iA?^b&3aUwWDT|KoU z&#zA2m*4(rdrI^{a5u0Ee0Yyf#X{$i0sXTez!<-aVKsmK=a)7(K5sQNPd%3H|CIAP zm^Pk2_?r(Naf)Z_BE3#_XQ4tTEGOMnb@%wE~M|HNssdk1~rqt%c6Nf;C3=Co3C^?Mx~xM2Jab7t5@=dOn@XT86NeB7{& zo=u6iZ)jJZ?;*kZ_#xbFibwxoKIP-aDjiQ~XXoP?C`U&Gz@U(N)M=m_SP861x#{9|g zwQplj9390lzpI|KVtUeRj^5qviG{7rgSqdhgIFCOdhL3(>mOYmPoRN|6j{Iny3DYZ z|I5WSG#-8DP}S(_t*dI#Z{E{f@{`{nL5Wz&xXHk%|3n0f#_!?zP5gowI09JdQw#iD zc`mj`u$4RL;4E;QAMbJKWa&5y?GEDy&t@Uw?as(%u}`k_LCl?K(+%Xc)#CT@Eqlq1 zZsYPuBjF~{q@-ftODEgvj;D_Gui_EsH-D1ZgluYP3LZ)8SkCwa{Ocs$Mdf36Ki$Qw z{InC<9T1-gsmaxT$;VfBc4&O4^5bz=7f<8+6`?QxthC1)b(;e}Ad^nc2p!c`og&$9 zfIrh&xdR`2{N6>&312_#r0;m}$eGQmJE8H{kG)nuYQ*^1kP`U1zB|&|JBc9K<&+(u zQ_)T5E;tWu-vJ#G-4MI!e4_5gU~yNP*S!=r&*n-Ub_e|_h>`#IVKz>m5A5DS=IA^1 zC$Np_;F9?s?SReijMmS0=Ot3-vQ79?DBO6{TlLaTwm%@?w>FN?&dt)n_ETS^jiZ4+ zU-UcXi*ZH!Kp*qnl}zPaKZ5GaL+e9Y2fD+@=l{-nz?=#5Rc%qQCL_ zw08{Toxpg=3i|NDc%y~q;ug%ggR{{Y#s}o+;dsY>bPR%h`cWzQ55BUpems$SnbOJH zCq2gSgX-{+7h7c~O7;A|a)Na<{`wC>A=?v0Z&B=|!Dy3f?9s0VzgOo!oA^*MDK-`x zpw)2VynM5`_U!IIHTA_(FQUK924f&s`~WhL+$eN8@pZJJvGFDTk}kR4|5eBD+U;l! zsH0_jaeEgf7@v5en@_PQaz!UhJ|C?K8)A9hrkUR_#rC>8pT_W{C+-K>s6RdY!~=9+ z*vSJEYMgBaoqWy5=6|*6;y=Ck4vN`J+l9#AgB#0EBI^wB&`V#{z(0P{4aQ=V)6u~g zI(hLj2z*rlkDT!N_rV&V?}@8TKj@xudc}OV(=p`V;x0GVHassT=Ps)wjt8C%s8jBi zoAl_e_Drr#@Ap7)U?aBqWX=e5oZ*eP4!7PBFW(0I`gm%_)N1|3AJhs7jB1hw?Mf_~ zn8!m{vU{}Hgjk@i-u(BY;RRr#zG`faMyxsGcU*k^jEAnZ-hy3|1~xIE=OPW-*U)_I zWnGP2H_%DvZp5VU1Nh`F#XFau{W!LGoldrpj*Dt$6TD!@s|9F=X zy~@?V_p)Ao(q_O1d^RKRZA>oP*PnP^--bmn8yTst3^k%{aTVvTc-dg*!})a}x*BUh z`l|eBT;~pput~Q-V-3w^Y~u$$ymZ0RCp(^y7{1MMvUC7FcRclg#jJny6a(z8~n%jfJb3jkFmbbksXdF+?#}6e$dg$$3a%18Ab6&ae@I5(m!cMwAe)v!S z-!0`*6{b6Y-F7Z%4VFY3gw2ZXy;q7ho%JPWe)9Lg=CMsD zd7B?uZTjfFgD=MkvB}YU9-sr_-{|69>pSoT?qodUt!?2S9yoU1(>hl8BB$g=_yq6( zI|pRoja>De2j*8a_FE25M0$hqR3DH7zRpIV1JGdot4;n>K%pJDiC! z*%A$RzwWUfI$Fp2$2WG~w-vxg<_<9&n(+g&@9FdF9qm&XUl9KthknCn|JJ|X&+qW< z-}%@38IJAa`@ylR(#Ch{J0dMMIAdbcY<>ngm;YVtTIqLx(dY&8rww%P!+xo{x`aldYJ>lqAp_vcuJJ6qU6-_)x_T&yM za{R0F6ZkM+u0G!ye)@!e3WGM;83}hANQq9Dxgk??1@gUPDh5wKi{2+ z$H(T;aaH3t2I4*Knol`A1k_cV9J;p3#W#So2Xm zQ?R>lbIc|fM?28ho$fo*59qU9oAUa*0XRBbs89Qj_=d%B0q?*N=-GSN zZk#U%XhV9v3l^vILwyoZcQ~wcfG<3wVLLRSv*Y1^dClJZ=$IeTAD?I@WOGvXiMO$y zpnT#TAC}!LG&c!Ei+`_l!dJhHrJD<~jeY#^t3P@$#P@@UaY#8QK79T2{A=+rP&Z!} z%XfiS)7i0swJS@I63yasb<@{Y(Rna>D4(;*2RhUsfV%7F*S?J{`Q%I_8T@y&F+F_* zviRbEPP&cuz;|xm!^iu0#B`AS8>H){JH{>4v+(erw#^DgiwDNbeg#b6!MzRm@WbJU zLpu=99pkOwTl)q!=sm#mm%)2Jdd&gcZ}smOPjc$!Zh5G?`8+tj%TFv@AI498fG-`J zKl5!}oH*|5%YQEGF{6G*^~DqKYbS(_Wheam?;`Gln+xybxz@qH7iCVL!_mc8**iwI z($B^|nRTb39{s^LsN8*|bGj1U*q$`5`uK3!rgxjd;;v6{I%;-$59Q_!%$c>Qrk9W4 z{5jy8e5&d9KTyfz`pJMcT>Zz-kWafnki$cdV7y9F3gbbqAPu(==L$W>$m!edjyyRqejqkJg@><|L>`HbuWE(9CP7^L6%u!y z0u2vRcC)8!mkDG!=M(plNO(o+*cZuKmB|4 zt4sgp73e7!dk-6!+=c7lv{g14_R!)x*b-uA>#^bv22{==X#S_S;damHRR`$u0$;TO z)*f%i=nQa7Y*i0h1^6Qmuqp$5Vf&@pS_A8@IEV4wfJ`UQ%V+k;I7#XM)!!FRC8`WYqR&zAt#~$!g{^$pJI_)nTW6wA~bpH4|W&A&5;p0BZI^bAi69B@PEt*)j zYjVzF@RfkWA79kQ>W57}hw-iyhzxc-9IX}%r(Bt|)3N^btolqU8$&j=750A-sk@km zY&3qbPd_`rHq3t5SOsF8os|UM@N|b%y$u+BdfF6ydKUeOhGvuBH}abNi9F!B5>EGg zAk(oi_(?P{#wO4KXrBVV;pl+7e+Os$uIJ8o#{a6I!2rL45uarvI@B=!wjir(bkhldb2+uOcPmu4JV)#7gv; zclsIIoqw{{>X@!}b7`Hxeqr5Ri!M3#?r1os=DA`63fq|Y7b#_xkd9XyA2ja27R%U! z*EjVWPpA@kvXwj7h<7@*L7z=N9?)@Nx=;7Wyazk{>gHgm`HU&~>AyfpzcGq(($;vYJBt2yx6ezo~`(c)%W=xznTLSKk+aCn?P_9ok{ZjqOfEKylcPF zaRD7T4|f)RNx~iJ8jy_(2CbkoRJ#GR6ZmM=^m3M;kY0=F>6iM#7CjwwJ)vJwr+R-e zz%V)VsuVujF!{=R;>{eX{F`Hl;SH<)S%x{rsniJl6d-2Vc|q?VlvpdWoH#7~*ftdMaNX4_^-GZS#5c zKY+9APiXp|!0GGacE=tC$)DH!y-+>~7-vwYv4rqXH=njjY#;fVs8u!6en@WV0J;K%8>l5wp_}gxk za`t#P-JHa`+T8F#-U*f?^RtVJJL0fkivP+xtg~b0=XYqA*Dt`lsjL1DZ+rDQ0~`W| zfCHGT2ICwKCK2}k`kje@)1+fQ;IGV~V7%_YuOo~9U@}#eH@N)V7vUt!V&mi4xHb{d zjrr9Ci*GFTg9$cCpgli~k)ua!#kDbX=&CS3byK<9>gBX5k&RvW?0@us@8@^;_TTw0 z_45MV2V^ck1}9?Ce)ezuzpB5(xBvFv?&pQ(^0UA5cKkiQ{dX>Y`hNtU{hj}3KfjM} z|LuRHpP`(|!*Y__pZ%NvUWDI|Z~y22_54ggtQPFY$1haB?$?r9tVtat^J@4Wk{H=X1Ot-wUZ_LJG4lbnffnziF#bV8i**HaXc#TrCiL7?c zH%_ltQr|Q#o{o%1Yu=WJ#^z(V_?yKGm=8ENg9&^Jlmlld2JIA152Hisw;5EUbu5Um z-_;VaV6gz3^c;|Z$ivlrf@}+OFgDqk1$ThQ7|^##xZ1!!a%}U-;v1Sl&Ng-?6860< zCB!31OP+ z$lHjl+xt5uFg6`2(3ZFLtCJx<-Hq*!C|b8_Jcxel;jC$XD1`itwAtxX!n*f!WwG#e z=U9aLF*KkqZ{8czXU*ZmV@z)NssF`q`%z3D4|@gFWvC-XQyiQSk2|KAF4{0!pyX;k z!O7%OQk(OKAtQI-IUoZZJnh-I+S8K{X!Hp}fa^C7HHT-v#&|0S_cl8=lorMkw+*&- zIhZc(^Qn-lnUe({y$AF|s-YBp;=7C=9;w;V?v3qNkynB2WX4$Cs<|NaAf`@j5eH4iy39VJ&u)z*qlr_5{| z(IbQ6vCiTzmxI_D_tE)Je%^HUX}G`JMg9-|g=p4&cSnExAGII;al9A!tXO}YAkVUm zsd4$>Pk9~qc#!RN`N6)njg;T8oQL?v7#$mPL!_+@bIOKxN5o2fYecagnz!*CBr6@_ zn%w6VHuz~Hf9Wy!r$4>^lhj|HVt7I- znAcSq(i^!(VqUw+7-!EgCsOGJIa1UIJ!U#WcdNw(1|{z?jiTUl2rXf{VnDy ziCN>PP43~ks$sgq@lOIRa0|->BG-H(exboCS6`^!N8+v?a`qmsYGCZxy2Ii`HfEyV z!yjkN_V@7d=lPe;y?gi+L!i?f$jf^;38CQ<*^hVl{8#-59#t~)JveE83_rX413t8< zXG?x1b{kYp;OEJYwT5p#UAf_a-}!Xne3@Ur`Ww-WcVRXu_h0^>j>gz&UWVyJYfV(m z)*frr7s$yI()b&Ltn1PCamR8MbJa$%_cYmi$=*JF-a4wbhQ#S{X?G&EUA*I4 zEc|9a-m@_ng48{+cT=3sr|*7!E*g=u>2?0+NF_c4)BR{JZua2IUw60DT`9C~Hz)pL z3&Y|EIk-U0aOM#%U!O=c1MwzD&t>WjGBaG~ahI8xJEmB|I;ObeFg<~u-XBCe>%eh( z51!r!6A7G@5H+ai2W{XFsLq%+@b`c{dW_KtY@+ewB2C9)YJsSpDDka_@u$oCwI#7b zf0MJiQZt6iHOVy}sL=x47vk`Cya9VA#UkMcw6I_O4rT9Y$bI|2`p;K){P+HM4Oai1 z|3^O)`Ct4uo2gE~_xP9pc0Ydd;j{nl|EBsoeEYxt?_{DA(qrSv;SHbt5B`t+{1MpD zJjRMgd5=H(SNm~cvHV{vH~jpsWjDGp8~Jby`2be(}a5Zhzy zpe-l8dwSplZ0_28Yh271l4!8jO)lJo{wqS9Ks0!{*YMhvq{U$mNQ z)7P<+lfT;(gA7w)<{>k5+ zndN7b{a1v)WZ~}3)mZHBvB#rybG3YZAK4T)FFrYbp&=^12an=>XS-@Sm$T^%SM@#o z|B3svpxeKFzw3IQ|6aR2XP+)P#3TeIdSM9yN>fxW0E^;AE!(PCWqHE|T16FQgYYXV|<+h}5gXUgMXGix?h$S=G^RsN6}&G*Xkkl#e2E$Gkxa+b{u@|=i|G!$NnC^{!6`Gas0mrpT)m1 zKEv?}Y-S&kN!1Fy^=#^XOg+ak&gOx%c;>r!H=O8?M={eh|yeZ~e&o5Dw2Z z9`j+e^i{t2*GA5dUg-Nu2O9vLe3%RTsz3ygwF_tR0Kfjf9++$77z2JNm$7fLqilJ= z3-t6_O5dA3$H?ehN``Wby{eQHuBd6kB2U3Rj^eWA5*k9Uy^U7?4ek|;IV!Gkj@YY| zX@2pOiI)I|cO z20=FQ_xvW^Hk@yNy?V4aUy2r-N_}m?^9FMG(X#{cFJD%yuPfDVx%$ZdE1y2Se6vkw z6TAM4*#|(5@puHgrp6 z=p*=HI_e__W7cc>l6|oiA&id$;m{6_Ts&~!PR2d%7xe*M`ry^f4t^H%+n)*1!7k7@ z@(|D3tSetVIP!tKd*~nQC1?*Ilb!=I@q=8QT@|NO!5E`g91k3xQx9*Rt`9)>T@eP# zdyVPaUn#%RK>6U%7*>pKxY4EB)a4wO_gY#x+I76A53e*eEnzl9cbN zU7om`Y$tsNnZ1N{&9Da^db3mzaRmzyayKtar+o-AZ&occj^c1Ji6J=meI=b zvaf}A`7idbXn2^k-}ZOG*~Oy^&X>zA7|+(|uKNv%xyUQgL8lGA;^KRS6W#&Vz2VP> zXBVm~_G6H219k(M%Ii~tsskF3&o>|!%*)ZTXZaPezME5}#NTk!9aEcmfhe!se7vm@ zZG1DY0Uv{WfFO5)^?^`4Oxd&2x~LEO-P=QF>u$LDlN^52eGuE|)M!%%UlO~@>x4yd zC19uqfdD6g9CwV|Rf?botW6&{lS4iFfK=CkSZ&}6n;kbCeh?t~ZXK`S_-refha4tk>%&&$Uidve*v<@I=Md-Y{GUQCw@yGvgfmX!WGX> z-l#r+)%or%GV(?_pt+f5G+m zed>;)_$5j?4*~(F4tQ(~NXp~@gYUu4L&JkNOGjf!#X%dLXdojS&1Pqyly{Xq0~S*@ z@i|9I_)EP#cRRTM?9(TDVuttA>haG8xjs%={5DYHSkpyLvB77u@Y5$@o{M$BvgmIQ zB8&Um-}6^2|Kxx8FV*-CZ-4jih*zOh{>k6;`zpM{+8fjctUPqvV*+<5E6AmtOI`S<~Nx{X%bJ;DJx%zTJlPTL=5UKmem}7iL(g(L<$4N6GFE07aD-EgsyRb0I7Zjh3M+;2%1b~7K6DdI z84cJ(*G*?_cqAtzi^dn|oYHI{2IC&bpR2f?e!lzdr|0i}>*?idzwq?*3xBi#exsHH zGGdmB-SXtVF!lsqK0U?L;&@w8Y`by~COF(|et?JJ$cg?S{MZ@44~oU*ME8JVu!Se? zAHv$$aLpglBp*IxBcSt>ZgF_Pz7vF}<_|)w?{Q@41E+pN@fP2nd5ZbkjjuqR#RErf zC8k@zD!y@_iU_50^8){#b0!z!{UDM9 zlcf)|Aq?u#2ji2yDSQX>=itzd1+b;@pIs37uxvg8Uypt4pi4}by70DfSocHvdquB} zllYZqYdO%l>a}ijI?z{D&Tg^x|BSNXJMYE;xc%noOFva(6$ZE$6--|U8w&7G{kfM# zMVY}bUH(QZPlv0(U70G&B~Ez`)FPie@_|8&xOYOm*N)!!oKlpX7V!6iSH`ox*CwX> zZ-c-l^z|>{H%XTofU7KWHW39^UVYFP3=rRC%8ttP9(lUtv#V3r`$$f&p+4_H?9lmihx5(!+c(l5PE-fC zzdig`&*mU|*!PH!{w<+jBGqT8-{Won70-X$AL#vk-1Nf&7044$v$~0Xdx*XTQ5>Uf zlUlnmDqp=m%~NI!b=jQqA(Od*Zh@d1+s5YU`A4$1F^o*b##c-?7TpfkXXA4Zd_(=A zY!`#<-1D%5bxyaj^=Kh^13t>Mlg*~(+L{-eNBJWIahV)^G0m4~6^ELJNb5s(_B1Y3)3Uww(@OY`SvfQ8>d`4fdtUGNmlvDaLsAoTOW`j}t z%a2`ho1hucy?h-@m8H53n=CEnCfojoN!_PR9t?Zvy^~1wP9ghbPv2g{kwM3|;$3@_ zI(x+W1_KKwc@uO08K(aVp3i`pzv|gBU$SY*EhGO8kP~RKGbEmJ11D!U8SLRB-XU9B zBwJvesxG(IAv4!6TVhFE^3#9e3kK}wEY3w`=O!vBCozd>OR{OE7&!zusKYqu#U9=#TG$gj(3UKuSuo8nWSw$^rF{9*l#xjEXr zSRQFP8?}q0KXg}bIXr#Z2TeUFAM^!$bzH5X8m9jpPJE|x{j;l0g3a>ho|Dc-50LZk zA}sit1AAA`hS{m;Es)o1NZiVJ%+0bw@DBQD17*1O-^RCjQ#x%nWOnP5jkBw4<2Y!G z=D(VI+rb0yWQ5mUY2Pc5B&~vaK~g+28qA z%cHxM_@3YXGk;waxC+tRuI=jI>FBwW(tc{iroi~6cqmPoU@SM-D;LOZa#fTM$UT9g zQSmF0|93ANoI$kc=&`xlBsT(Au)9DD zc#YM|`QxgKjz5;^1T+|bkg+k@8!#KzJ)%tqumK_o?dWI?ss&|HP8K?xzO@bU9pHy8 zhC9p#wwXlu~tLHPgbv$8y~V2_g4AcIFeU9!L6o~2Kfi+Ti^PlM`5)N5rOx9+MFUy)6>4OM>id3+e{0X7xu$mT}xjklr)?DX%yuZzYG zb&Yh=ZyaixZ?mmjOvwN|z!o;b@fizSPF=iwdJFNsdHUu5&!wT_PEicK8opb<&vjDz zY)ai0+C*$76mv8IL+o{oR)Mm6<6~P6$_IEeYG3R`$HO?kDdd05@q6--YHsdili)eM zwMp%ZoY}V%8N2BE{1-3wIhEO9<>#4?L=YXDhz0Oq^^(AY`T;&R12)pV6o0|eG<>t$!ZT4RP~O)duFxmk^a8#s-jzOpo013I({o}n*nM!{ z-uTQWT=zEMzw7IuK3g60PyC9*VmhB6V54$EF^}rqRWZN2f`8hrD0NWtP;((Gk3bf= z6>sIEL)it3&Avw9>pDIKwCQPE|Afgco-#fZ-1N2}(!W2GGM}_}QCi!|@c~`>o9oKW z!Asu!B#<4gnb|BJ;pOW;caeFJDVI+XuPA=Q(V>1~82o(mWYJ5$a-=3-sq*K_w_Ymi z$Jbu7O*yg4T$G($hV1dHBxf8J7b$-`tv-FHbTGLkag`tav!z^rO7_R-rHY&LAa;J? zfm|Dx(~`|k=3sZ%DyC|C4B7{UNf+YtSC@nnRtYKPAzA04sGX0V?K5loIs-~8(3G)11t;p+uHQOGWPR2=E3=&zm@5r%i?p@PwdUU>C-o) z|5A^E%rY^4{${s|pJ^_T1KRnHKkQ;@^D(wxY|($|C!@xDZNK${d>Pn-hdt)9i>Q+! z8SK+g;M+cgpX=|I&qJkA=jEoP%%tVtpFNiZz%ibs~`90#c81CyJgKl~1wf zNEX}_lysXh8IZ!>s+Z8$Cz{PDr#c$ zpFIAd13QvAocw@13sIg;mz4kb=uW=ww@qm}qia)?gFgBipPb#r=IZS$_*w`*@XM3` z>elAiLcbiuh%bCHW-HgP;_@>NcUX;%*<0cStXxJnUFLC%iI^O8WjBctz6(@ECI+p6Nq| z4eMwAt!!))7L)PhgP8F}f46q*=I`v2C%bW*Y&2+1+Zz~sC>6~ zcuuU@9OrDXDOcZzPHjw8(qG#57xRfdb=`**<_L> z^tDOuf%^iGLaE>^5DZjJ)^c)l_USucNlyGw)9Ctb@TwMsEwl|rsh7>;95HhwLWre? zc+0>*9pJ$W^_va!Y(ZuFIS!+x@8&z;1#!u)eJi-IS1HW-hMDZit$Orwq3j0zKL&l) z|Ede{uX?o!V#)DKy}>Uyl_Sd86!|i7s~Z!i2<6&de7(h=@z9|!8NDtty+QscezzQq zf%*e1TH|~fml)_5JGR+q-I|qczNGsS=gRlv0Bk^Kqw%!}$RwxNc-baClNIP<7aG*O zx^Y>*0)Ids&~rmHpL&0*MfB~S<5bO&cuVQtJeL;7>{;RflR#|0Lwd6(u1mXh!$^Fs zhuyjkahMm!zUeNB4;ga(B{=z@z2uaYExW_mg&=!-=-*p1=nWO8BlbZIdhLx4K23Ld zq}BOYAH{)hKA>VdUYnSW3#KO;I(aE_LpQJyCa)yN2ePU+xF{H3$fs@zn>^KTJd9hX zD6fJMwBf96-`N5?>^%~CQ*JWdjFU3F`i`jIXt3?@j)oqjyN&Z4s#Dj~7o!{G1tebm zrq`8Tz$&-+E0k*Tyb9>0)3Yllvlh@cr51&l?37i1xMr6i>-UHoL%45_-Jo3r*5HKH zefn)~lCh4sY{w5uN&OlgQtRxBy5TpYz({Pe+g6*DUpFBc zT&VVIpxI+w*wn_hO$K(CI;-zn6XcL9wdTDrCMT3nW@NRZC18r7A{rF0pm%@6IB z2l|q~7+RE0C7z%9+fkbgY@WokwoXCX&FSWOjivey%2#lhjlM!;{rTw@zk2F}E*s~@ z;~+U*n4en<+YDQ>>l^K~UDipddA_#qd@ZfbePi*t?E1`?BR4;Z^_I`iJ&RV1G4!VY z@w>GZcVW6**kSWm5npki|Cofr?;e?XVU*t^d*7k9Y#umrU{dt5X>0+HCticc(So+LpqGJ-#pDJP(=&_)?YWPd z_XGd+^BdC#uYy9x7k;e#64)0%F!t>pWIHvQe8;vX?X|}{oVNN-4jVIgcAqv7VDXS2 zA?aGB*B)MW9J=*EOVkie_2Pr-Y86UX_QBwM49R!}^&vj|CfKX{_!No!W*x6 zf=Mj#<6E7U>9CMp2u8h`&eYwR5jOinp$QRnY1hRN2i zIdj{1-NJt1N1vWQ|K%>W)%lrU+b9S+`3G^8%O;DIZb|w0Wii{NMz5@mUu+U<7m~8s zmCqZCVp-vuM-$UC4xO;}y-FWuxFc#l>~;&tRBv3Ljc=%0KkfSG*PGh$MeBXohF7Xl zC0+4J_K)h*$H#>2P_dI;`bnt1vh_WGjY)jvu}6<)T=tEA zH9|(7##b;A!iEFoST>f~aDy-Osp}8< zd8t=Uls+c&HYUHU`Pn9n7+bh(F`?zrT@srq+Q$Lg5)j2trq#;bywQQd7XQ+&x?41B?rcU!V zAe*ZCY>)4N{ms9{_1M3>Iq3qR-iC0og$?mZz{b=K%IqjxuFjV17>_tAv*n9FUfnpb zLxNfhIKWo=mP|z#l1!93-zIj$Y-`Uj*`y*aH_uGnj zbE@^z!wHf~^&8YVaBze|O+$i*S8Xlw$`>Q9i~?jqESHp%-K&|B9JD5@fpgXB>adA= z?LH)PNd6pa@@-)JNsY;-?{D~Xo}PZ?PhB3+3Fi0OxLlxuRf32558StZ#m#GQv)ubq}`>OzSJdDA2fPU&^^}1nnDey!4Jyxy% z0aF1JLOj8V6bd&sI@ zEZ*VhiY`7D(qy!Gp!xgE_%B!Uz?UtKa&yKPe))Bf9}~&0`VGllneR?|+55t#>{;Es zG2iIEj_H0Ai;wE`iFb5bJfzBW6HoL_BpNM;S)LZ_EPVa zi28XJ>Lhh+N4rO|l5nAGryoWP%cIe~amY4vt&M5xh41u=@p33Gk+*r`5hMIJ)JPxU z*LZBxcAMS@Jo|G#{sX@t@dG=Q4O+vGN}mzNHX@Y+_Q5L)2-$^fG(GZt(T_aGZ4KWN2!d!7K*Z+b=8MC3q&81p3+ zz~161=mw{cwNqBAO}{(PiR?LyJ$v$izH4!)Iv8LwccN>e7n8}vFXFB=f=k~Wb|vxv z8SwjL)Wn42AKy}X^VuS(Jk(_%2l&hIY}pqIcQQ#HdNhmcGMSoGi69de+g`H)(tEo_ z(D$^Tn38p$H&J@)RpPsg#G5u28G0E^y$SXTYmgcEVFT-pRM?%jem1e(b&bh%E87m9Fp@<_1&XO1r98ywUXofg|Wn&G=6H%54a$=c?(-uOA{l zv;zYw_#Bh88|;mKNd4&9a3RH;eMH?LR%n1ue)_hU{1*MU>vN6qcww0ht%4J*b`u6F z(zn#)-)X~!Q-9%jce1Hnd8snQGq7QTqTgh+S-G`o1BxNu?9-QCUjYdFcptC1QTuLj zdKB>D*_Dag!{Wt<-FWk1liYYEXP+*Yn;ZKm9FI2oW=FpEtZ5e&wB%22bK>&X8sF+e zK;`C0`iIyqaV`0MvtRw0#zI@N>0%2xE+odM{^N(`wVQ9C&fZ&`D(er%eqWrt0*|&{ zEAt1ih?~CTqVvrLmEYPnM%p(HCAZ1FCJR5izw_1n&1X8u7b`xUzGQnFx~4X z3&wY86Piu>$~P#|^AR}pwX$Q8S5L?#_H~qcCA3sK*|pzvnl>+i-nkpeCxswS4{WCzxa21VDZ>Y={Jedu(`5!%dwy7@gJjp z;YY5|l#*lYEUrCYO14v@TTCa?^MH~DH{`3stwpcM)A3vKJ|@8p45i4_LIh6vT!OV`2zNN#?*LEUv1koN-q{( zr>mDfY5U~A{*T7|4sZXD|3H3c)0cn4)6<{$*L(Q>i^;G5J=l7D0)D8U`~V-@r0Dwt zT|P9n8y|L<3pU3u_6c(~jn9TQ)XxTD(OJxm$KuAHp}BpPJzab}O-N;XlWJN_;y2{u zCr1LY26NKbH?B8%^;xW!M{rs{UpYZ1y#6jSE(G(9IQ*26^SLia2$hpiTMTW?x{BLw zk>9kb@zd#49VeTieiKKBIia$=L2>wChKQIGXfrbo+jc z_-HerWYGn_1S?h#AZl;Pw<+)0)nbsI12Rru{<8t!7H2kUXTP!Q`NJkZUu#ZLjZA86Y(mlxGABc4W5hc=<_K2_ke0F6|aer>pdSNrWjHRCG zns4-!oEBgw2KI{0eH`(QR;tT*N;^fd85@0Wo4(n&I$eD2mpYO3tPR$uzV(?LAfHXA z?o)7j3gP&{V*(7&x=f8Pv{48#9Gk@?e7AeFNdB2h>#@5bv zdQQm3aJirrtLm2r<)z6fw}!~w8+=jEUs*g=#^F%#ay_Eu6)Y)%7 zgE2R!>Ci7TFTRySd%RWIPS!99FzsWh&fn zP?X2N_Oc5q#4AD^Fs~-JM zX~1l{XPf*$9mWvoJ_GOwGGTohbhesE4eZlrx&nST8_@Cf%Ane%c!+P{HvyE<52mvR z)Wvxl`6Jql6P(P(;r6|%OMdf@{Ttl$qmfg#7~3?POw^En>$5C=_O=mDCK=j`Yp>+S z0v3wRtA#WllGkfptCV8a0kp%(LD`s#*(1cS+Y?vk{TEwKKSYsNx68&{*#;KPX1Tc; z-KM!s$egG?J1xBO=j`3dj_w}5zm&E)^#QI_kAe#EntPS+Ush~^k1iJUh{fh2z3eUD*FM6xqJQI;D+IdmHvjjDW3K~4 zy7ugted1=0_=D+8a~rjX=ij}`YW!~}sspwFIwWU((Z!L!_fYjkShno;?wZVF(4S%H zxatKAz0_-Ux{Ps)Dr=((k`4v&^1s7k$|;Hss&DoZ0*o-}QZ!VYVBmlq^R%D* zK)VS?<`2SYrc;`Y*#s3MToO82scB^6sXiSg^n%6Q8=nph&%x}u*2y8W0UK)K*CyMCKo(tYJ3$@9vaF8DOMw3=#<)#(`O49nls>@N z$*j}pOV5w?{U2A=WK4)Yz~4xKY)&kBFb^I~zy0ObZddMjn{L%h?5lnQdGoVGhsoY; zxc?sh5zoKn&#SF@M{zGA6P~;lVCkYO-$%RVS71%(C7IN6ez%xk{?s2VCe245^E)L@ zN3cOk7CG1~ZX)ZOm(g0XjKi zwsJH)Y(YP?WB+WY}Pon-gP?XA6Z^A36x#y8PX9 zsDlYBJ%Y~lEr(?6A$dp2U7aX8IKiEv9|6l53(8o_5?Efc+g>4f+nIUVmF0%$7yimX z#zEu(t!}$AjJI@vE>1V*BPbxPTA=|PL?85vJQ#e_`(+6C$o3P~c)+<}uZ2XV!@1a{%8q=}hFy19m6%uu z_Cu_bb#86(0o#*v`?f$V8xQuUXYkAlw8Pbpvrc!CD(*8%KYlwLRo<;V2hEW#YIQ0_ zI&-;hlUt16JbmfQ7Xo1!mGo;;PI$#R(d!1h1W=SQyP}zBl=qzAa`me3`js37V_Q;3 z2Rv|JU$6t&aINke+IP4(8QAg&wgFwB&Q5`cl}lvXwB&$xfCscIvk_m}(&g=v)jVCj z2E6)6P+VTgK1K0`Jx8n0hkOC?JhGsnxnWn*CPl@89YCKxbl>6HdT9sQm2Y1a*hH$& zWU4o|k+$d;zv^v-`<@NHA$t64Ckw>jY-&yxyAW1BKHuTx-~8u$FE337JBX2+#5NA| zYa5A%uJ%pj{WJ`oHYPUh;_Eq^Pal)>;?96xKS$)(Kb*Fj^aZ?qrhcDRchdMw&$4`? zW&?`sk;=eS>Ws_1Kh}o1njAh^jIhn&K%awa`*2rWnLaUVJa*Ah?v;b38doj{w0pGC zZv)7NZ5S2De?`>mTOfjLkg{Rn=;z05)-ItNB=n9{*(WO-i$}d0QjAKCnhLHAN&6x58nO*|LOSY z&)~Y>=9@ZyAU`&K$8Y1I{UAN7mshIXyY+_eOj5M;jE|hUH_Oc04JhkN-BPHmY54 zFu4e_OP@!i3Y@lgL3DxfpSl{C?0K{QZavuD!9=_T2#!#Jfm=Nu(!bZ0DTjL1H{l$r zyxd|Y7ag{sul>vl(fP(S*A5PVoLK~ffMV(7ca0@t}eHrz#3H=bbO}xh!e!PCs z%&T7u{IbaALFEJEV}TkVV|EWV*#MlF9R|cgfAQfvKYl&X{~pC{F+X~h59qkZ@zFTm z>D_HO99jCY4Gs;8_oZH$Ux&wf>@^#5^Tv-Cu+=pBjfU_V*lzQ{9E8fxZ~vjcxI2Ms z!$+{)_O$EVPQ2ViKFS>77#;6`Ke=87mdDI7T)Xs_x*Xjhign9Pj+wr{=Xn%x*-{l-$Q%*kNhRQUE9kZ|JR?l|HNM% z{WEQ_Ht6E_*Z&`)zQfyp_&<}}bbAID-zR_b|0C)@0Ji=hoPLjXz|jvMXdbOo&I(Q#kML8w2Yh(M<4NTai(xj1sq!PxYFa#UEiv=fgTpOb7YDMIdZxV zw6O)~II?5Cl|en$@siW)=AX*(Um5U$Jz#Q`+mNcSsj>~~(soV7cVAs;{JWg?sgF;c zICr2pi9sV{l*WA7uh z1D@0O;IsjMj=o2T-5u+D&?b@hp#|MQZ$fAnuSfV2BHyp^*oo^NbsN}s%J*P1-zNW) zPF$ThDqiX(xQ?^&dk;RS;iI{fs7E~h57_U)cL{y$ouBjN5$rIR&4G$<|MCAEVg+-w zeDg4pLHK}uFK+#OqDn^XJ8>=+rRIvScWmAqklBl_0Uunm2BWvI`reY0Z2gjdzi&(r zuo14+SGdW)<~NXaMa>^V3WYxEDn#qRiYkH`aky)L*G*z9kH%e24P zh{;ID=Bnq(=Bjx?e)CHF-#mTe7b4aXbM!H+v3i|H`w(h+diho<#|)SSEH`j6?NI-H zqIdX4C_A_hOomSuM4(h)}7n`{?+z$w#qwV1aTyu1N$#3ykIFltPa){Pj6T7TW zKNRPWf#m~SvrYcG-s&f(`yS*2{|~ODTR|VX=}>-zxPbPLK|l7oXgs1%$M%Ime$w+H zoN)*KKSGnP(j#0Hz)3DMZpox%7hK1AF@MC`zTe^DI=+7{cX;-!OY_udFGkDn zpg$5nAJIen-7$PX_HaKgc*r_AD2p%T<9j%K@ zzzo!{*?#+~zc1u{(pAq#&5m^6_@&G5R{8iC@b?Oa|lXE^m3^rc^ZaQO7Q7H>2&ze5=Y2o@GkON27 zJ$5R5(=USS=bUpgd!PqWSoPpr1au^d7Qn zzyq=UP#oTS+|y1B9&yj}F|hLyhjzy1T*x5OXopAaiuol)(}z>1{T{Kt+5fhoq~jw_ zaBNDTD%hJ;@+OZ5oi-;&a>|-WyWc#C)AiX;iG2CbiWZM&BGtF3*PggX{TW=hntMC? zOjbI{mFR|Vf2ICp#Y66{hHZ-eq!H7=+f{$a^c0S4VH)W4-o75QYs6AcLel7U?7qTsx z;-TNK7oY25DE9f=t1$MqkKiBRR*?TS$JE;ce2>rfsoW;`zSVUe?7Lu3mCc2Go4tKX zIDdaFPX6R?OKwV+z8@ic^J~dY7oUF^x={E)3i7b`pvnhxZ={5IRyB+h2DI1J7^XH+oz?Q%GvfiKk*Poug)x>sd!Jab_#N zxF7y|SkRz}AMfE!-5Ue;m@HT9(>MJ0_BUZZ`P=`MDzRQa4cjv*JlgND?;+iT{BTZO zpZu-=a_^CU*I#ncoedwgf8&`g;`Rt*<$~yh<;$U-yEbO~rn=3^x79!YV^4l+c;DY~ z!RkT!+yC`{t8w~jh8B0Wv!O+DK1DqF+yD80t+v`5U+tSuok$lSV`V<`pWNi!PF~kI zT~1`##)I2btoNB za-fqY@(4}PP>}X8UESs|9=xR{)Fm%5&WXdslbp2tAu4`!d>jlDw|b6({@T`14rst; zo69}i9)4P~;W%aG>{9eS9L?#03_8f1{1Th#skoe9a&pcFx>!S#Lni3=Mh^s>8R@~=%X(=2mbWrzJ8C^ z)1V)j$8Pm|XnVvxPht2V*zzH~qTiRpk&CC7*scuxxVOa^kCu;kG!@DQ=;E8T(+Z+-|+iOclZszJ>OfryRGfn&h_MT@b-88 zrM+K~Pw#>4g_L?R{p9cYH!8ftPGGuyQo{ELG0^S;upd%<0N-NS#PmxFj}V(rzBd+l z{+<8h-rwQv|K_jFw|Ja>^YN3v{(m3!9rmfUPfy!~JPPVc>%GxR+DYo$9F&)_t0IVr>o?B@7=OwGLm^W(lvH~o{dlikOl z->(JaJi=Uq(?(Wva!@|@oU$h6@t4Z&5lDN(<6?VYk2v(L%aVEd9F1@Mmo`?-_vYjH z%yE64r1gPFYfIl!y5DRdDS)!NTrkFJx3)`%F;LFQDZVU%-Yy26!2*i$dj9a;_!vpv zkyCRs$0eqvCY+C2m(U%2nisaH|654FP`lr&DU+}%l(e=fzB^(I;0sUeVyvLd8 zm5NpGx3(cU?<1Q)jL3RK-Jgru<(D?9KjKG!V>*Abu*A3x{a-GYq5TWZw@p(Y}}16Hhr{z{Z}ftp3tqe_2X>0zUCu7?P%rC zJzwb5#j+-3a?l5c!h%+Qc`Li-=&-)wJ_!0UkVh67qbcXi+DaCeO<|{`l7ZGnZVv6Y zp_+u#*X`WY7p&>A=ng&7Y}cpqd}$+i4^5bDDs`{WTQ;%dJ{KebQnrB!p5OIh2Y(h+ zJe3LhUTw3Z#5ZzNkL3pT0ORltm2Iy0Dh~QyWAw@Y;Qt!o9p3()zp6JrnvA734i6<^#(jsLgaKaQPDW^=mzNeSJMZg~90`y<}|BY%0kpA^pYF+hAv zkN&;JozUg`tc#-{nPHPD*ay3rizmLI6!<5gRY>6jerq3Y%ho$NwBpc8-DY&RB5mC5ku zI&6W(I;ei{n~7I=jrnz;c=U!hdx(6k432l{xdp+~eD$NKiL?dIFpkI=ik}Ala&6fBrbP9SUC~?u825O!ReA@NXM#pkS1ac4DT6k8Y&*7JU3_tRd z^)Jtd%Zb)zKEe;ge*cQumG@@M#Ela+ksk)*V{A;ko(XL{=WA`!55t##!&Pqy615mV z;PM|t6chH*#YVRO5WM(bqRAgB7+W}tqLeoK0;#x*mcj@b~O; z>y>U-YgQzjD_$gRutDA#_|Eq1Q-(~l|8A8fWMc(ZkzR{8WN+vZM>i-yg>Gr#Go4NcqT zK|;2vq|;cKq)tY1Gk+0hm~x3 zvw-NxxT>q4$;d&IMBoVVWAmF>jEkKhbjB_(JtBoWp+E{}7=0^8+fV-1-@*;KlwmEP z>ichjY8tTRm(#_NpOaOP1mY2#8|XH0@ePNUPtq1_Z9M}@VeRqLdH5(63pOjCjX}1c zE5xg8Qy>G_URC|#M?y8ZYB*h)Y)%$(u{#N#`JY@i=*J*U(xKIyU~eV-WuJ5+@*Iu5 z+W1%TQqCBC8KKNpr$!sUD_@_uJ$)8_)V5 zSWL!}y?nsaAPUFEn7>s_r-7{?rp81L#^m^b#y|0P>v+oZwG&0GSPpN?B-?xTQTy$A z=s_}HzVfr#)y53$wE3B{%KD1gbg1@r>|)a+^a~c)#{A&6K9tKrCb^J`tH12npZ}E8 z+3Qx`e2Y2%*07B_nqNcAuh|CpA93_$!hTtWU&d==)233h&1B<57yn(f$)DhIHi9^y ziJ`e;ez0eE0LcZs-|d2I{WjLqXG7}4mW??WB>K&BADEQ4@->&mK7YhmA938*5IQ1HUNUT4;&k-upI_5$0udx08<#tn46s0l zSf&r~(|csGO_@Atc6`1E!$11;>=RI%sF-BW%g_D4tJmf$2o{G)XtI%=h?{I!Jg#lu z?Ub_Hq8l-6943iyYU1$J9>@Jm4UwtcHk%AgLpS@=#hi0>S$7S zKDS5}Hztp$eSwfLv9+v#Wn28lZu7a5rnY+<(ytrLonu4v?!9CAZqv89CYJdzTfcMN z$R?&YG#4p%BS1dAbjf`%cKPj?Qp%FU4|-p0RxWayhWJ}=i?vO;{JFlj&FdcNariJt zw!ZmmbDWIIpL{Wj%_LjjDY&9O8z0D+85=DR%dZW}93YTjo1avDUldLGzBO#ec9dVx zYR>2t$dQ_SFaCR|L?Evp*#{!u7!DQ3w;Xd|r~r@;Wa>YgD}#JT)dtD48Nh=shuIZ2 zVN%lRW1HLlSC?VzT758mVVhaIef8bEK>9%YkA4W zo!^S@2KElu_F?TM`cl0&zS&4DN*h$0){9%L#i}-T@z*JfPN2+$o^A4MWuI|T)($3l zqya5A)+dq1wO8dTo{R2}%hUNpPvxf;O?`GNCp9OUx)qZ@J+ZJSp6P_ulXsxs0l)dr zr_D>k z^(;A3M)y`Ve-;ztQNFmaD|rzwcHZJ~zUdCyueL2fy@n|%H?b-%U}&&%Ik*)$iY&w_ zD03CON6lH@Tet>ef#T%!Vz`3*9J@KyYq)f)9{+*e`v5Q4pafzAaD}$y4eTZK1m417 zKRP}WOo(>7)P`HYwt<-->sOZe8`Kw@4CI?+K^W-yd@Z{L@yrB`9`@+RAMJ1!C9v)A zX>K8GV8tf-VspS>b?xjhxs9EP#xGxT6)TgDuj5Vr;vZ{W{4m~Z1MT=q`@MclPTA=@Sck<9w{_Vo0tf2v!t7OgrN zj@}lrcrBLE`QB@GoI1I6AJC)ib{Hy;1`AR$C%4IFK-3S&BZy7*ZRp%yR7Cx*&ADpN!exo$DkkGbi8d`sy=;czEmK;4Waj@pN-TU33N4G_%JN5tD@>>@LH1GcKSRNFSj#9mH**Et6=-Q;|j?V-)h5*^43JLP6e8&(tY z0C7%MCZ*Q~sn;YBNZINk-IqS)CPtHTV3d9udd-*<47hh5uZ7xu?`eJy*z3;V89p1! z!~UmY2HAM&w8+|ss9Ye?JcBVIC3ZqhqwBwC0_Bd;>tD{fZ8qVes`e7F*K+^^-4$ie z1X_%vqixb(^?-o_{WW>kvjL9RgJ}GGI$$%~PrQrKtIZsgp|%_18MKMhfnbOc-uYIU zZ+tH8s@wA;qu&_utBkLgFC3O`V-O!65Cb@J zKL&DpO^1Tb575v219iZ5us(s!^cbtdcfclm$i?M?>iByVtXNurcn;2(!0srDp{_@^ z81R$q1OAeE}wIAJrmwM z`(JaeFpnCK{MVRMCb0*iJ?GdYCZwhlV2i? z9_ekjA#UN0vj_M%f|qei)qA}|a=TJY2c%=WIZvrH*(jvD)nm7f&T~V047i{8;ahQ8VmJB4ZT~Z{;(10_eFV?3#5C5~ z1CL_^P1GrOs$dV`V<$PVa*1y8)nT;KBk-~D$RlQY>I>x8d;=MgZg!GeOg82fU)9Ct zY$#nMFM3L3PDk`phP78N8)~Z-jhs6iU(xT&2d8{%%K&KxUU7KfuDEh~U*ps@k`u%s zKeq{pVP)yX24%ByVIDu!Up$?v-6BID1Z>VM)nD9z|8UI)_P8U1{J{G zJ_NEsKXVqc`6mC`JpH40ktnw>y?Jqaa*z@0b2adqwU#QJL1kDnR)z!(WdsUP(o0^+ zJA7y+i$%)d#Lb|L-eliNFM6*nx|$Ybo6BTIkRS)9cl{H@Hg-w$sc#ciE^X4K#|CgV z7X9d6yQ@&PlGp2^zk-C;rdxB~RHhf|j|N!gpH0u^#BP0OcY1uEi7jr={7s*e9y<@n z?6p1$+R*e-PxL^?7F%+~MMF9^A;r`tr5w%1x?iW*#+eKorurq4tBzGut+-J=8jZIfj}zVYLP1iaHDo zo&e<%I@$&;gPPROEfnNk;VI^v`tp)S&h@&KqdD==&5p9C=bWCir2}mr0vWCh?2xxu zSC;r!R%Ch$<1Hsv5F4pwkq2!0&Bq!F(QZW#$jL5Z_&UtT=$_XkZyQJ9og9#9-= zHjxi#_)fiirzQ$au;ry_EBA`ftE3|4J6)#tQ~Xk!5j_X`>sz0T+)}ThdOa>+U3TIXau{+R_mE(ABQha8jlARaa?=O0uZ*m&1{_KF*vHoW?- zeilITr>i#Y2keb!aOxD zK{M}9Ob@Ns@_i-Zissek5P!s17j-t>_gncwd$ZfV%C8h0=j_DjXh6V+z&U;JLlbge z8Uu9wPv4xrOseWfww;;53}L*1uz4}Q;()JyAA~;ow^8kR4Bic3L3Nwy%ck2DNttc-^)Rc-mdIZ|=AEZW8s zLv5?y&yVHR>ws-Bg3-&9HGf@P7*sa9#fmRzOVy*F?nB+k-FTL*?@)ox_|2`}%fC`R z+A4RTW1W-X5ej=?^gzakFq^Kt2kB~{OCfV#fn3cW!l9E1{9>yZnRh@J8SDh>^PshT zE zropaSevF=?UYF$U0c%grJvdkQ(Yvx);{zJK>DvU=ZnN?+bXqq_7}smS&q=o2&ngbt zY)ZR#XP0F0@B{w_`VO(php=6K{nE)EDOuZ0&I9u7tKn+X6>Q<}6}J*O_#^C7#lk#& z5P5xEiOcrvNPK`i&<=N#8JEA;0dVZJY6ovKGOkONjU_!5>r~(RaI5~4HJN3`$HhR!oN}RH2bLDm#+Uq^s)NTH z4g%&6Ip)y$f-0RiBxkxR-h)lR_g=4n{}FV22=u{`H)JPhLe^J%*?d`_VoUe2YwZpK zmBVGNb~xySG$isi?|R+jq5+%L?;+mzNahX3#@Ojnd2^(qM;>qXEpA{91%%%tMYqWV z97)I}FJZ6R=%gb@BJHj64avZFCepq@XTerqLla{U-}GTZ6NHF8^j+Z!{4HW2>mC*? zpr7((04kGPz&EKDs3r|suR)NZ<{=q_c$jF8`jCuQJ{HIbrRvddb%gJAo1kyNI-T@` z|2kc~kDjymPyG%k=NB#y_6wJfXiV@<8C$BHU;g|U-u~|2kxsg$kj)#b?CAAFe+}a8 zKlB&pZt>u6`NhX_HV|-+NPF|=Ki?M5+S9dPmW0ZaAqQneA)CCrQx`qrT%Aa5+axr$ zA?%`sM|K_W%{eD$n}|+w8`qcuS;hn`yq!|3S1d5)6>M5IEQYa@9&((-_dn~@WHUnt z@|>tVC$@pPIGIc46&Y-!BlBN@F1X2w5AeciKXBSSz&p88bmQB+JrF~vgg!>l3dW&psV5pFPJ`Wi*I=h<`R3GpIVS4Z+2D0?a4mD z5)kBMVHah@Jx=`uLf&a?-wBF+b?E~*0gK@xpPmEb7;d+dN6!fc+w`xCFS+fDjBcm2 zSFV!UOZz6H+dH3-Ir8RkZ>2!4iMP{0`4(!qepqUL`lN|<`!Z||*mW|qyC59FN zUUt`QepoC&3_bv$hhFTNbLtz*UjuGe*0Syiv!OC!>`TsjVArA3b@RJa(_-bMvXg&h zn~brHN7vaX-Y0g-_-q`X`9fn|QZ}A82w#f){&)KLUS9m!$7X#9vykNU8&ftxq>I8U zjz8M9;rD!xJh%AY`g(2geC=nVr$X_Ooe$&FWzNd(D>S+Md_J>S7qLSn#*vKsLm`wxfvs>dUV@aQF{Y+0bx# zdnrA?{XKtG+Ef0W2G;^e&fW|vW&`sG^heozcY53c^0GeoTp*(l_j3+&PdLA&2j^W0RM54F-W*-qSq;7i^s96KJ!9|S&_@!^c^ z$G{F?C!9Lu$1D5*F#~o!7L(y#FZz*32Yqrl{BY=p_a2G3A-3@W-qzro{Q|>Ls*y0* zgeedog3gaPGTy^g-sF}xSa-5B0&E5w{9eO74-|}jQis$j1Qyz z&BO;UZB*ke+bzT7S6Na)GP{-Ad!$jS#kT}nkt>U!a~`6=ISca!t{nNO2Z zyM=ZS?ZB>HH`{kg`yuFr_S~Yq{N9xlMfNw81HYgCrP3XK^f#r4O_kUFfG_^!rOj>7 z{lq#DPn*EU;3QBSw-Gt@@O7I=zBnQANsNmJ%=6 z=}mRC&y<{S+N9Q=126j8AoO+nW|KPKlXC$fk8D1sFD~7pRa*QjN3YW*pI@cgt5v@0 zidDY9mxZ&*@z*%8=`-EAXn*b$OFtibZ5)gRFdxvxDVFuQ2R=Z~tQ*85pNc@m zc&;`N_i;X`c_2r#98Mq5Z+4U_-f+r%J?*{bKfjFsDc_LK=J^%YFD(yzWQ^$v9}LDYWHkv5JSkO6jsd|Iv$bVHRh{4nLl}(KN)XK<}v*q0f@QHw@<6L z3DPsv7oT5>sCbK&*z}ql8;Xk&yTrt;du`_0ZA{r_&W*41y;7uY)NEWluK729F`oJX z`E^@@y4^6DrC0_s!(tx!1{JoL_vDF}yw|?Gxwa|?Vz+pOx+wb|9?Xwk)60(obuo!| zkj)?dRd!JjSN-Ae+pIvj3;FzHn>fle*M_`4Q1;@F;3vN%cd;?&z+7O*RrZ@pLn7`s zk9&s?2>TE+;Ma;hUpf%nQ_t}&!1B>*nvo}n%0ctq@&U^YX!^~T0;RP9HOY26mp|04 zJ(~I@FTpjtfvj~1$|q3^7aYFWLhZuF~U!ip{=z3nIf7|25 zFE+akbGkG~nyhCy-oxjGOjkiGl@p8JsFn=^XSn)Z0A?E zj>f}grjtde?EwE`U*2oEv9>YzzXzQ3=1a75F{?W0d%&j~lAo{pGH>~ldyt_*CP z{>tRh1DYd`mS4ugCbc`2^2K118b|-vFnZhCTS1QJc$R+6CzOeARvdAe+=4x5IB9~ z$+4;nG)JX5Q?NNKKe+X|;@$>Lt}+K~hvTRKj;Dm6y`V2IL%PX()Pr32OTc3`=_-zo zT)<<2_*q<628&|Ie!fX2(0S%!0{iW$Hk}v00D<l2|?`gix&gF z;$RMoiE{0kaY3vvTLfWqqW;MojHx=5y}F>n90|$TJb=b!&`*DTu%WYCVy7IOxCvL+ z=SO}jdD$vH<~f?S1N8&4dkx0ViP4xVw-NZF?jAqrfB58yzCqdMQhXGLTX3#;r88M@ zXl#JfrRu9MB*$mtxwY%=@ytOsPG3BWZ?DD2diZP?L2-i=S|9v=e63T(CiLRoLt~$C;dSLRsOdk8^&Zb(`iVY}`$}Whq7~O-xZgSI z;Z zlexW3px5M2k8(L1%%9KvNYcwsd$0K;?_|C|SWne>f!zwTA8tCX5Zmc5U1hJX4CaZx`W=YV#x5N4*yD@0+0bAb0E^}px0hhnYSu1oU=9E#8!R}WDCwC1eq>*Smq6lEp@vA z-9y*mu3^3>dwIzO|9+E5|8q(;sr-s#GM+!_p}Wa#<8W(WGJW%xpPqjCPsU$=vEX35 zmqk_?j79!?J>up6^}nmHLWzvo66g^hc4fo9@r4ViKQpE?bE?0?sJ`#<|H#S=3hboL{R3{K^2LpQl2k+TiPz=^AYB_G(&4vUZN zWZ8tYGe*1Hk#5Z{7qb-jxnJ@0^^;T#(|1MwZ(Q}S%f+4&kZTd9VzTL$+fc#Ww>3tyOdkhExer$wWEtYUGp!4=pHKn_-|@HH16|R|768}1KsG5Ew_ybs`o}^Y*!i} z;42o2FD^Fb)~6-^fvknkoPj|TT+ zkj&NTBF9`&rU$kemTRNa#ix_t){(yA6wAs`oZdYB*l&(0jhyf>&9`!Os!yl(ay{;F zGYrEOH`+CyqPy}v4*eh_2Kr}RKqHHxCx?m)JfPnL&nsF!!LjWT?ANA`zCf?wvDu%e z03Hx%n;<(a20WTpj@Cf0&9f}!{qNQ`tIGQUz^?vIRlXPGA-Bb6L-~BSQGSh8u%lgm z%&@jSk15~j;{j|kL3hEZT}%}DvbO4vVA~^p?%%Foe&oLoL_l?KPL1X0u$IG2QsZ zi$+hI*-qa!81_WEAr|}_*YewZIlxQq=(Ve#_USKIHFo%bo#tzs&kb}#>b1Z4E0c|N znGG@f4pw5jm~Je}ZN6mCGt|dMaF6V}jr;nS4m-a=9(i`$!()x+s#x7(2jnGpzOqMW z&n0_48L?`0ZFmmoIQZ(%wr<#68Ti>nYU7b_Z=QbfkGJu)NL&FaHQ8$%WcR|*dkwL^ zhcf^P9vD}!2W^~TbXWTsjdpm;j!_vD;h;LyHk_t=+1ixZN-iG`A`f_8LI2XZlHP1; z(nP-Dl<6y6v-yaMeLgMt(a8Xl*~!KiM?v@sD)p@{TFWR(`#`j zAGG~Y)QL#_L2h9ir;0Zymllsb4rqKT!sh0XUKb3jO1y6j_)E}6=+pw+43hJz9mrFk zFXh~bRL4>@b8e|JDA%-Se&a8tXZ*&_-1QwWn}f2r@KIS`zPbP|=4`KfrP)tjuba%} zCH*9u4_RdQ+|}cY7xP)FKAr<}YA3vMbFjI%-;!6R->slrz46>54uF8CCfSjl(-wJ&aX}2^rf~Pv-AKz9YYU$VRGuD zU&YyLme_#V^0_um53aSNJ^jJb9saEU_*GVON4zDAVmeB0-55HWA{$HUWSUp{_nN=z zy>2jn(Ak-|$-jp>o&z>Nf=n3iH7BfF_8Zu65BkDbjW^#H*Tz(nF<`&3Mz@%i>B`4F zoFdm=#xb|7fesR>#V0#|=CYoPFu&J?)4K5h; z+9dQdU&US^$iU;I1eM?0Xvqe2v|g95uq5BbnT^Wk(BV0V1f)>A`YLzOhtHrdd9yQA z-I}@L&C5^zIUU3Pbi^FespHp;xqdf9UhoZuV1qIRkFZHW%>zDt?V@mNkM<#O;6QOf zRk#BiI3@?>dtf&xbOZhL(n*#a=u#(#3}t-`03jyJ2EW*p@8Pyd>8f&W`5D z5$@BV+1P?8_AhRYJEP}FeBWy(7|_hLS2XY4Qzxnk(Zay_0j(T?H)%4Xq$i8 zHTzGxKGPX3K0X22P7dEKDYNkh;kpUz&OuC1pF8u03tO^FnUeDQ^ehRzGJ96(wRAB4 z2-*OjXG?UM`v+w3@!;_5dq9?Id9TXxH(vhFfCi`O5LH~|Vu-BFAHa9yA&H}UGA3*D zvN&$-v<9k&Ylb6ud zA7K&Tk%It`b@;Vaz13k3#Ru#GHuYMalY?>z1e9!bJY)&V(Y0U}JVAu}i535CvTApl za^-w;-B=dv=xtQ{DVx#Sl-OZ2lF-_$p3!YcZB|>rE(~9Ei&(i^#ploWNl&rZ_gehI zXZd96Q`>BJ(t3oynS=VyH(+ml6Huzoo=5n*QJd*Dv{F7SMoxHEk?~iSH%TvJUJ^^T z^vT{%36JoLtj7*|*&=pLFR|KYWzn-Q+BSV(`b?xa`R|)%Hysw627c3P;jytXGCr@6 zn0?9%>D{=cYH##Kn|x*e`><0^St~z*SEpprFXVg)(-Oe?=K71FQ3dgas6I%qel#@U3-12zk-Ik(BG^6CHlo;bKqL`Nj}?pjpsm_u9NcVxewI#*lB;8oKIc+Ga|;2 zs8?`@f(P)h$1~-+zS(WcQM%(Fr(H4cj2Y^12ID~c0mI-Zulo&~7}xd#Mvy0%y_hni z)Q^$91~kBr4)^koe1oF7YSF1&+JH*YoR-Lt^x>Qd@6SB4f0HEMec$H<)FhCT*E6R5 zCy^CfJx%J`YyjKPN*09$Qk#DJ4pj@lYr?JcRPnagLbUW`RUu&2YQATr4H#! z2A|mX2<Z~6Vv-{I}={>!4L!^i7v6Kfj^IrN+fn}}CHZlf6Le!;Eq z4*IhJd@Y6FzLzHchkk%Jz1yU-^>&hA)7naP8^}Rp2vg+;{L$u$U8d}j?E2f3jIlTy z6Bi3tZh3q$##cMYjl(bevD#7s^!h~e)7F8<7j!(8E{2w04ZQb{Tu@hLAFNzbjeULd zdp3l#37ac6+>EJQZY|39>#cSET!|3#(mZZ{ZLYD6uk~Bo=R0A2t+_-GCCwj^d9k^q zW5~um1{%s!@e0_81U4M7wU_=Y!!;Y9*e|g~PDnO2*Y-b6MVjsGHAX%atbB_BlMixD zch69Jt5Rwsd$U`YoPYk-S1wLOUy$=}iVq^ahb{V#AVY3A<-^ZFX#*!E+;1eg9X&XG zw6Q1l0U7Ps#;Y^92UP`O-xAId6Je9U-~?@8!7NI>Zb;nV@6-y<{64zCmDeWKNo(KC z{`^lA+{<^K_GdXJzrg?-|HYX2yYhYMH`LZ3#khI?2z9|HY&Pn`5OVef&5PII9AddqnG=iogirdk`1^jEyQYieVKxE%;twmA?!k^j zYYMJ@kgXe|3{^tISaIU;UJcW83|7y_KRhr0H|&S8kOz|aBeaB}^wO*cduM(@p_ zl?^8ceM25ybcEZ0U9pk(GS0g zxLb)T<4M;x_wRskoh=&`b)9=K;UaGKli+F zzsq$MoxsW^NWP}YhWHmNSh;-g;Yr!S>93vK;&MApdebic2dkHm5_?0Wi=JX}K+mT! z>cbYfzPSb+`chhjyF~t3m+x{eX(rr zPe*0Y??V_5S>>P%>Zcsu>;do>EUa!#YTOa*b}t{}36}2#2|_*$*%Na-@dE=vFwj3_ z*cl)WDsCbsvo5a!1NtN3BU@kjS;)#2mxv)tfaOi(1f zHN@Jc%W>OB#vW?wYq6~@9*Qiyj;y2EcpP`zvY)pQ-fttm; zK_A$s9ke~-Xa3FJt{{U>cIaY)Ji-|I1oUl_$yh?;-P@%f-DjJzrTgH3K2;xJ-{Ut&93r?(_F#%4B@p`U)r^n-F} zr>b*WcK`4HDl;+BT)|A3o{RXij{T?}Bd;CVoa7QC8{~{(%N&+dYQPVsINljw5i?%T z20VyUPtJ5>;7E2|f>=5W9u52{kv~6hvVaYQws;EO4cYYy*nlp`E~<<6%9jDDTg589 zx@~C^Z}PLFV=414{nI7ywX(@F6U%uFb?{CsUUh*xbT@1<{<<&tO zoccXHux9JMZ|n#5Jm8c6-oMcM$Fc8GktGGc)?fjiUx|4BYyX+v-^bg3?60ixC4YW7 z{n@GeZmq6!#rU%`c#hXuCSw}MH*bnfx!ae;HJ(^C!-jx7g_`yi5QtCp73zM2fz0k3 zPD}uO?FK>Ke2qMG!aBag=%;Ud81DqehJXRor+Jl4>saTCLBd^ToK#w^d5A-+K! z9qM;0hn3KP{$mH4#;ULCK%NN~X}(q68o_5BiY-jfHNKzLW{&S--1r!$=_)6KOt@x4 zmtTpl^-#?0zS|u8{Ry9<+h)&HmPtNHp5Bn(G=5$UXJ)qu#&^>VB z#l(y66|^G}lklCU5c||(vOO$c;3}tofeHKHrp-cq<#aDEQ3eK`kNR#Bu=m=w&8p;z z&#oSXZqqjrY`iw$u_h0l-CzFc7GS(bK3#M^f?W3DI|B>szpMV5(WZRs$BuA${~_3E zGn}zL5Er-;va2t6%%FI)yPTis&=}1>ekb;pz<8NU{FcKhpB(TVkPXY@IeL940Bk?t zyE-|>50rZiHQzuEo%f&u_!lm}K2UlD9WH{vRyxpn-O%(HT`U%p>Ui$;YQGjQ?Ny9} z-weYCn-kF{qp~$+4qA6)lYw4y9ivy!zRjw+>%!tTd%QVjep-8yi&E^H&v?!C&vbhA z7aeZ-JIP)?SPDn~P;SkgHDyi9S5Ib6IV3@)*sp!F<@xPD^?T6P0F#42oKUma6Ejb74^ z@5%>sURBkpl#K{ZTgs8lkuyIAa)=<_YAeF_9Ub(fs^-wNG@_6Wi{fftAe76WMLGRXCFA`?XeXJCL6c=f#p3wjM$m8H55%5ZW6c3^PGW0MJP z@v^HR%o$}i*v#BQ$khcvzW&L%*?7&h--F!;{J=K5>5)fcSH;@OHvG`gn zw?)gI24phsA?EksZ++ea`oU?Z^XR|F;brRq8y>+&kdHSXEq;@4S5FhLD`%5t@uq8h z7wiOFy3Ge;bmoWorA-3;*uZwDWnUpMpCaGro5jXBWOYc|~D2l`w(<3nb?Z%$Pms*moJw0M@Av&OHB zXm1x`G)a0Al2W|l}Z=gf0TnNOj2_S6XdCtK$Fq4?A6^G(5@ZSU=>vX;c zyO58a`iT#q=`Vq?y9fH=k(aG+8*9Ys#TBiMtnk1Qwg(#%`vtk8See^lpBZqc1OkJ|LHloiM)g1ND0x-b21tSE%iBQmP#G zsdlsq7Yd-&kLMSJ;1G0)D{3Nmcoo9kz7nVWL;_~tj6WEo%WA#jcdkfgeVj1M<(g9lY?#e#6CwUCC343lWjO9Tw+i*JL>f%5r=UZ4Gu>-goR78Gp@u#e*TRW>B&>7~;WM7}{e zkprKnqdfU*YrtmvbzBlb3zG2lFF)8A z#b;hAH&>=h-S|}3?PlW)k3dGRj7W9`^O;>;u$j4eW@BK73!ud=&XZZ4JTmfe{n~gp zkJ(w%5P6`F-2@vWpK7yj^Qn|hW^~-i+<0eCKKrW*U)OPpwx0DrdGH?uU;c2pWHHzu z*sN|XA4B-|*%WMiE7MDcWE|w#Kb&zm5I=I*dk=l?Xm6f=;0{Z({qSWfMT~57@80;B3P);mU3x$K*MPFJmf%?3xN9 zi_Pq;IGGj&UhoN$A1JDQy!SA1>FhO-tq$U0a+D41n2gdr&=0NRu)vmOgb-bv&p4;sfB%bRD$_d8Bl^$okI;KL8y zPTv0X298X?cj-3VwOk-(c-RhXI^~M9ySX%-$mSTkqRlQFFQ^+oC)AoZ=Zpnf<6Fck zCb07CiyX1M@;$U2Okr8+l}!h!9FMlynY%=3w+|2*T0eX*0y12W84o1)ECzDEGjv>lMinO^e;7KiNF zW|m%cYj;Vx0HQrY|LD(e|4;v5?>P$=0pS1o&u7SYBej{7z?1v^vH-Xe977r1DsFeLD@W*&T_^n#}`AXGTp?iJ@B*FVkEB0Adhu(=J1*) z#>{*cC*M~yugL)Vfsfh`9Znl)2Q;>Q3?~-s0`kyKAN~21&-*g7`F0ZhKo=f&Bc3hp z_AGjH^*LW&zTRDk4eqQjx|XNs73xGUo%c94J&;Z7wZYmELhB`ClT~?fExzP>#RXP9_NDJ7) zeg4tx%Mi>AOYjz})Fjy7jVW*P#570awctNjflQlKd^5}j7|T#IJ7xppl|PfdU-?tT zqpJa#J!9D)SI++Up`i8}b_FExIo_4SY0M|jl-5@u`DEwse*HyI)J+OyK6dikuMgNOD% zy}_yw#0|s_uG!j?-5^%E;HGPO^1J$luk4llXak;z**V@`vmLVwn;@~pqLJex#KIF( zr>r-{$7xx6Y-DV_uJUfrElqTDOLD=RUooJQCw=})<=QTNc7gTiz%N7WKL$x|UADkK zpI(2l(5=vOV`MIy2R?Xu`4j(YpO$|mdm1=>TyV_IE|Sl0ss~}24dT~)$k0nYz01|h z#>j8}pmEY#U>BJ#xZ;!Qwb$piNp(`%AJ>a_wE0N>=3z-JmgU3!nTXJsrUSVP=+mbcJH=w;LSE1OV*3BTH5efvWOO#UzIp4C%SV1Zm zkS*SL7==IbWM5_MZ}c`GCQ+NioGvv8`etO8y-V2|Erwt#iKH|BAALRNRkar!A$-oQv zTzKTtHD1GH7o%7gBgUG%c=iS0a^wSLvW=xVr$4Ok6`H-V;R2>L(u_4bINZt_3{OU#C zbnX{MyV(2R$3xcCUJUqVyx6L~yhPvhmi&+2i)UqhlSdA-kHyp zxa#7o&-@IR_b~s$mA?O4-e3OXC5NB#6TbtWej3oL`-66Ti`5nS(^1na-q=>BH(i(i zB1{U8{KfV%K`MKu_dRiq=ljL)Ho>cl_t6LS8C-zAolhpA&3tpD+{82?!NO{+HYWa_ z@pC`&^dh&3>c6Xed_Vr%im6Q^ooBp&Oz~)JD#R;Qo=uTvQ}&1r9sc^^Yd>F}>}{we zbAlgaNybm!;@ScftFVhrY}3c5DoO+S0+p)Ss|@-YABcbS=&rcBSkh1CE&$QAvkT~}O2lZZSDF4As!p%DU_IP# ztdyj0cS&UKdtO(lKZ1PFe|kz}FE5F)yli$VM|)Y!Dpz;MRO709?i!5^Z}uyf$y!Uq z%OqA#+VWDg8e$5OFHV*~9UsHX>Rd{3zKwQnjb!R6-C!J$e*#z0!0l9FVCbm61+)Q+ zz5y-CdxrJgv!Bb)3pZI4Jv&Wk?H%`@e&jdo=>M#I4}9}09V^RQ#DuUv*)RT2K0mBy zGFX&_>*)($e0utFi^{EVw-VB`4U)e4&wt=!18f6)zUG$&jb2WN6x_PNx_;yO?4jF% z$+YS6C)s;8Ve>R$Y@~bcS6!Nn^w-A;6?QvhbM2GaZ6s{s9~seZpHS8JxvStFzJHR; zbj{bQ(`_8ohxqj)tA4#zk5;xeFviB!?MAojn@i%j@sF;bg@6x?gU!+{j9BjCQ*85P z(2s9o-lq5Tg&*%CQ0l?)vkg%nynpf!wjp+LI5zu3a2Ej=o~m8JnhUjyPa=0hZBZDL zOF8>3cJX8z8=>-Z7u0QTK3sszMZaM-26EO`0&^?U#lOZdUoDr-;mY&LZLvA(^mN7S z5hv-4oyE;Y>t!20p6bfl*n{t8ON!_RnV8hqC#srK938E`z6)12es;;@dw$8@$Qe|< z-1w0LGJ^2mVVl1>R?{n}vk~aj7trc6{pL!HPMKoGm3>N0fAsFH%9RmH8x)=QDO=@) zJh$_`+Qfhm0TaM@CP!cNdn_RG(#i2Xf=my67389f8HFJpYImHz@GHZ z=3ZN97M@MYhSkE_Eijwn-9~;xGWhlsPYc%g(?#|sOJi9jT9d9t{o;9pi-5l@@Dcyf z)x>ae++W$ZNn5-&TKe|stxd;wrM}-LnVwxd{5DgfFY!oEK1_GE+(5sSJr}=A=8FXe z6>ngJh49h^s8ivK-y9PY$c~}$-R+P8W4rNe9_+6P#+zJ!n@CTu)u(Tj_{+%%<_RqB zaOMm6-);0gV1Ky0KY*Oah9eV--)zAr@9m{D*vP>n2T0ByvzX)TAxA$pv#rm)0;0FlZx5;;*^HJ*NtBpnvWNh z_qsv5dZu3Aa{ZE%ITVXGTYMacV*umj0+YhcF^Wt8lN7)9d!T_#|N0G!PKflX4}Nun z3LFHqYnRas9=n^+%-JL}SvwJQl;}#^6*m^nIxw2V8}to+J9Gw2fO%;T$j}k(C;BWFrMT!5Ejukn&+-` zPEg{V{yksGHvTORH@y)|k|ywr&CN5rHl}?TLhkzHt8W-Pv2+sLM!3PR{VM+wlgh*z zTk}C)Ot!dw@lSN3`HA?7j5@9Z5YMS1!B*Y$Yu*h_V~T=8*0~= z4FjDmX!>KXQXc<_l}SN2w5hGXv8F5AY`WWQi{p~b(;xHGPmZ`5x9r&8bT*&B2Nw}a z(eZ&k=rCDVpx=B7+OBLj)clH;X~R9OZa2Tk0GX4NpQGM_FIC-Pfvx831|S>Rz;6qp zv3l-8v$$2?JmUMactitnuKPtsWjHxI?#n+6_blWgq;tC1HCi^ZvzR8lbcYkWY@Ob^ zWOVeBiwY=*i!XRe5WN*au*#LVO3=9pME9W6D~ImO55RkxIl!=?vijOf9DD?OOqQc7 z6NdWi)(<#ay+SYLV(!}?MSO=V4J~}lWPHg?k8KoEwnGT81+q-pDTX) z*?%iqw++A+n}?K4%{GXO?mMsn1RgYxhuol?+R=d^vgc!|y!T7{k-=zXCnNGrP@8~F zhu!<6tIgVX(!TKJLL4u&c!{Y~qSG@ZUEITNH4ZHDCcB5s&-wV`*2!tof(B)Orlmg{ z7sF)A$%!`KdN90`5uch=3A)s^n@3kT;v4q8xwX>QZLRqc>wu=6|2AS}w8<)&ll+R5 z!c5IZ?fIek#dqC|v3R&kkoTH=xwp5;Eu^s9jmb`?jiC@PAFV{+BhZ2V(~id0dzhEk z=3CqN$}KFkvhgV|4kb3CHRdli<>FRlua%|RHXqug_rsCqL$Wu%UHG1R7I^s(L7!w4 zqg(vNq_WD!DgG0W#gC@THD4~@Ta1oq z>>%EaO)VE6$}4nB7!%-!o1)4e!a81&&>sr2$b=bQ`e7jVYSs;-MOL1VTPn`&(H zov$XavEoCoj4Z|HB>Smy@d>6JN1; zY`fusesAkN=mCBL`{)+~K`=IzpVOmhZTC2Si*2X=n;a0YP|F4S^08CfF39{S?mM~F zwu?}tcRp3Y56Av%^%d$nS$MN`3d>$We@PqNa4|1>3G(G?@@ue%{0EpRy=ug8k6Tcq zD{C*CfsbH3kaK|l5olz=;nf%ITHONv5VUK$^1E7qps$VWZ6*ysgRw=#VGrZ+3MvO| z22M$?P8PgNi@M}_!l&Qr>eQ9UNu~#(@BB?ZnUY1mdb;EW!@%&VjG7xF-R!2b4QJ1s zToFBRwOK}+EfSmAd$4)}BzkPHorX54w|Kh3_V40j)YDUR>zu5g`L~{4{MJ>nb*Db3vw?1@vii5ao|^K+?^Fcz9?Y)N#wXa= z^gWy5p69rBUixg~F^ly>TFUOy#Af4U0GSMHv)#DEiGlvWcp#S!{Bod&(8a2Dzp_vGcGU#P@O< zPTx}HXg82`?QCK{`;}IAoAP0;sTdsfO z`-o;PVU-S2IOz0)K#^d9TwPLrgn|sBdu~)V z06<>HW-{|`3Sik9ION)Ka+p5l8#s3&~Z?lc3WZdMt@s>lbp}1*R$6vuxXoB4ZUXT z+aCN^Tp5x(|K(zVUI=a=8$1F~EEAW(+<>}FzrHqu#NB{?WN2p-9D1*hf=$3aZhS8+izch(S!`*VKX^qH$+y3l&9@3qgq zX9u;<4))kk8sGhfmLM8C&xmbC_@ypp`*5RqLe5Uwpg%cZ|D|Z%0o1&8DD`Z1Cv{-E ze!ViHw>yv@Ud2rg(FS@TyWfn6p~|2PCdq*&RUKQ<7o7ayv3>^=lODJ)13h#ae7U;a z_3$(afI|n^_I9OhAoP=R=|V5HFlCpI%PTt>_+^K0H#i2-;uOsJRGZsB3r{S_zX$uE z333D4;j7E^iqQdIXFz=vrMher1%2zYlY??E_4&-MikJNAU&WQ<-PIS!RFog!i)X-R zLTcyRY-*D8gP+IV*dkxB{*l^Lwh__E4wG4YL4EXW+4r&PAdVgydv=6Re8mW_{MhuF z9u&vF$xT0-jEC}Ux*BrwNO1XH*%e3DJ@}bD@8Q~iIUNVH_kmyk!}Hj7uaiGO=QfIb zX`|%Q^ejauqw(b8pq}^hQyQv6ZJP_KVpe&2Y!)_=6MwPN)#(lH&(7ryELAjU7 z1@CMu^@7_oul*NM*+Eox>&M(1TnNa)qd~u9k=;!~W$}p)#s<_7Z!PCF1izCh+u!sOTawE4bz zJYrcrV&%pA7d2FFtG{q}S6Q{eN~5?{NtK#V_{DTRI~R^i;heHrOZUE^2JeSM&M;r})O7t+{xh zeKcr}45wb(4a)n#EZ>qtUY$G3SkPBo0$F1X99-Z8TFwEBkZ_KEF z9-%K8kij#4V%kt_EJ@f&;DEvGA(yS}akWuC11*>6_0^c_!+>~aIZALN=Z zJkeb(=}=}^es1BZXYYj`@HarSZ2=ASz40F4!($aF-nYkp@vq!Oll*<9PXSFfS5gp1 z3!%QvjbhH8rN;t78*?(epNrD#^$^YCcF1%Qx(Sx>;SPkv_wpX^;DnD z%U%~WxBb$BIqViqKhH&tce2bg<2D`Pxlhnv`ZV|HZO#i@z>_YkbmLxpyyzg!0A0Zda@}Z=J9sRlT;o5Bo_guR;~N z6pG86%R{k{4V%Qtn}LN9X%lhOdhd7$aYIv zfBz%Q%dh-wgVe&Ftomu^i#i;cX!Uu8CS)5qev`ASV};Tc@m)Gzp(xJy z8K4e$=!%rG68oFfCpLHwln=dP9jm983^;S*9%Me^k&k}ZbImJ?|KKDty`^5Spdb3j z@F6{D%S#8j{0iEReozO#=r0xWA+~)g8)>)DXPj(EP8Ir$DL;B$_@epy!d|0WdwjH^ zh_CX|86MZ;t%m2=IlV#SwRmZ7Ei|Tz7oMwaa#aoFv%`k9d8Dnz`i-~deO;!)PGIAY z4)NUn&x9*!e%_7Cm*}UCo?1G ze8tP+t!{@mI2;9m*Qv$jVc?wgRfDI}x7!T9)jfNg%r-E6CZqm!nH=>;9g?H6PYcOE zK5Bp4$N9>x1hs7vt$%$?h;wo}y0m?^yhT4dC^8U04n0muyV8}yCXV>c&JxgPqWRi{ zPgwkMv_aoRAp6(>`fQSRr6ea*d>`bpPu^xMo2{c&o^Q!-?Dpq4gpkKBaXYAeIwv5s z!422yplyAc)cL#k_44N>djPELnW0HbzX{+LPrT1~yPEGdvSxNJzNOS(Pz<)IMPMt; z*3z+GoBraJ-r?j2bm6-PIUfSQ?{WGelLPdh{xbB#hoCF~^QST}318#ld1A_FtcxcWb9FS@W%!pug=+fA~W4OdB4$mlvPKDf%O96!$R3y5;}I(j8X$ zF5+|;7v;%KzxmiHjk`{9TQg$9&RBD%F7-FZQ&mfCCHAP*Ha{?%C)QZ{RHp;F^O$UM z`En4gXINczGpK8Kx(b{ioq!&2YKycsfo%dlyMOlmBu)sJ;K&m?10cBrXVSC2uGl_- zI6BA%j%48TcF4$y+9GY^+5)%BlFwNgkeLgY#gRNR`QQY`R%JAL9DxOQh(C`<*B>AF zei6k6m0je|=KLVX_o2iGvUR??6=RSE==(eDRsMd@1jdt$`JaqaCeK$U{4CG>u0Pu( zzB=Wx!35u+*6)DM6JMJ^)h%wf)4mCAW0I4r4Jyu-1Nyb!iJjlIsW)`woC z@iZwdIC1&x=gYtN^ui}!W|j5~Mc>coLS?*kGyz|Jvg4aCqq}3^#~Jul4V>Sg}o+zv3r8 zVrSeB?us|y^D{WRgNPr*rFAxc*gy}RT_`4-K4T--hDSVY4*DF2PCT{8c8N)R>NbpU z*{n)Vcw|?6<%660b^%-Hx4&!hr^fiVY)8R^^5Ga87|Umzo| z|F!P|H@4nP_$}JXnr#RMgFGE=Qoae^!^E{8`JSD4Cblmg#%CbFvoB@AA8%KK>eI=d z?{#&v*(md^0QXj(`mv|i9siSeF5zT;ly_3QUi41Eunn~HXnNMzZ5Jv9NMo1 ziN8V24i>v`-+n`Fd@kO5#zNmFbU9nigQeo(qO*%a$)5#%_6yx@|Jc*Zmwswx^nJHW z-~8Q4*#>3d_`~I&`9qD*S1-1q#j{xQPaUSSbRc#xo5JiX&E|3gw8h*8>ExOpNPD~S zgsRhPjL-a~AB+opOgGR^_GFgm% zT&*=1ZENVX{p`PU*=(Weo>$^2o30?UDea`M0=bU|eKhfq{{Xys`sqKnEMQL9?bi?N znj%BkEl4?#f%|(khzIc7?F1%y>vxP;TQFdr6VdbOH=85hNM|%MoNUOe=vO#( zy*QM8wQYx9fJ^?nZh!n-Ha!RNEb#b%5R<}!0TWJJJh!h0_`>K}q$aY>TQOD>;nl=A zec;$;0hnkynEWQnfsVy(xk*vc?esRws_((Edpya}eq^cFbOTuj>^Qi$5AK>~CmbH* zbjspHSEt5ZkjQ_vP%GEGSh$TXZ$L`5wNUF_fBm9``F77E7r&LGoAhGmR}_H$=`Ftp zLE?A7#@Hr@-|G74>m=?cb^M%(*HH{YbYrtfXS@Atsr|4wy zvvFzxU&?3)lUrhYqAvAoe&9m-oosk&V};YyCy!%Rcfe>(uOGXh_*F|^Y4Max$#P+- zeRO~O37J6LAcnI^hgcRUn1Zf^KB1BbXrcC&z;Z#g!?tr?exoX98I*y~r3GeI)USzh z`84F3DE!)=etPx2qK!(z!1bVLxsnrYx3*g( z2WNaijDZ@Y!=?;)^LwD5&199WejlS#KCodN`}Kp^HWus>v!&ur=G$M`xS7-I+iOt2 zVjC~z$8PcuAK7rzRZf>&Oy+aRg8Q_&8tryrl|wWvH`IN$v8RjGzOSYXJx@(Qh2ZZY zA^To|?1Q5N==m7fn-4c%caexbpVKX7$FKNey3l}JD$NJuA=gB=HqZ}$BDNO!C17aJ0z4UXF{vN!lwWFR)U7$2|OyF-N3q_nrN z_HcsOYh`@_?H;Pxe1oz;%Gs;$k%@l5-UFwvNAMl8fBw)*CWpzqhqikhUvAL94E?e1 zJ&v99C_eI{!TgYF*N0qo98- z@M>!=>{Q+bXmKJ(49p*M$?4b0$ZdA2;Q6WD2> ziz6AYP$RqWef|sC*)yY_v#p-Ujk7pfY!(dvs!kt#v)kCO{Y*Ty^WRSp=g%&rolM`! zDA7GzYvVUm9Zg#-8#{CLTukBQVsQ_0^ab|Rl{*7E+CBII*|P%#h_gP13Y7H)u?@S6 zLGo5P=MXDLgR9tK^x}CyjRT0^Kl>2)3(FfLHWoj5rH_Lh@w|EZ)BkR@JEVWmn*$6Y z(7-8k+(u)9`ZQ1e>VCXPBzV}MM3?uv;k17U_!)PQ$Q$NlKs!9KPu{Iw`4z5o&>tUv z?s59aBv<%fHy9O6S~w!;d{Flu7M~9=q5mL|eQ1Br+lCe&XfNJd(D;!jqcmGeoye!(=B0yqw6?1Ea65MTZf=%5@K?8+ znUCfo*nmDuW_=Fm@hHMYx5e`Ewc3G9ve@UMbrxvFS0@oX`?UG0!#p9A4=28pbxql| zlTF3RBUh}hY6t6S{wiY(^#FT7gufY$%zOLKg)+JC_>(u;@k#eMRcsLdKG{X+0&*Fv zlGxwry1a+jrpFtfnS}3(-E|lfC#cz6{3{L)LS(Zow(00Gg6`9=F6Rp(TuHOz(C(3_ zH{OQhtY;R7Hen@KK>rJefT1xI1iOLXz{z1dxc2KnyV9;-Rfa&mjc2!F(a`CU!^r_3 z9Q)u#E7xEB^idW(!J1tGZN==E&guvEa*vE(FWB&B3O?L}tPj!d@z{P3ywb;T-}e+3 zpAv}M4+6GLHYmrxUzKe(lXGxl$(9>`z)zPkkm|EVJ(~93wy@Uo++7UnPeK!3cRsdj3z-(b4rB{*ZoF7{WPT=nm_(RTvgvu|zw>SVXRb?!A> ztBYSYuP>R)>l6KQOUR0hxhN~u5J%;h?8IOB`JQ3?NVLH52F(Mw{baAfTLiAqf8gLH zTc1bha!+Q%hw!1kw~eTDEe>?^q1S?)eM80hbYwm1Is@?k575o#gZnanfc>WokM{ps zaW5Oh=*+KKXq*%!f8Ly=it80ARN_#nQhAt=>I{`|6{n9bB{lhJ|Dx!_>aF-oieEZ zFnq{9dhY2b?#6j2cf*^5nR+=XY}3xC7tfwNEA!uo*&Ms=*#+Hqs5nWsl$e3f z2j(ffqTQ7t--g-y0UR0kC>BHZEp|lCkE;ypn;y5%z5?VVTJ!ke@XqguPCI|m!`^+Mp#2^;Eqri%oStNYGTRTZW|te<3$z(1{I6&^w9Y0&>9a8yJOf5} zP1~9A%;1ublxv!t41eyve_vZT214xP=ZLEuD0BXROb{G6^#i>3eYE41=wrYMMt0oF zk6>59_#hJhQG7@qS#vHNnWNp|(AjiweE9W(&%l-=PnqwJIOFvpoW3W&2YDm+W{w1MZgDWCy)I}I@M#+8KY5jrPCfXuqnm$D zX%?6{YlE}FeD&uqyqmk#ZEV>TLp1&3Uw@k)d9|T|e(btV} z#}{&5AsX=YK=J6fN4BgDY<_TJb@*jR$NVTEvR&DR!^f3NVgtxk=L4D6xwz9))w8O7 zwM7D(FhqZ+uUMsLRq~BNw3~0rVElUBfR7nOSG)*F#MQRNes%}tbWDE5H%~wDTk2S& zL4a$v4GG4ub{cjY*%>B zkzetKNJHcg!lX9{WwZ6>WVT2K937PJakcG+$NIrTxA)|b&-O>$^C{y4yvlM3)C~-n z5RW)*AH$Jza-j2LKGF9vkfB|EaOB)*#a!HvUFcO;cROKnRNS1omUsHGD9(R=3$of) zaB}Cnxo|)(8RYWkTDSSZdlUQGekr4uw&0q3Zg2R}YySBOBOj@k?L-!+0Bq~G<70EX z;?3q=T%FL$EHJuY3q2lvow{CX1I>~)G7rQB?&Anm2fhG#hjzMa;)8er+2jDaPTJSd`mL%4Nh1$CiWX2*rA(vv+Ll=&9c824Bb)OZw`w#{nkHT=8b#N>0c-=Ynj^z5VJR@5tDuQt^g@u`0tED}MxqN6Nn4kyu`kkO*-;??Pj=TeXbwR(1e6e|;|5`A%-q?3r?8!Rt>5>Ue2cPcr z=r+{6n10XQz;!e7g=h;^qg%y2bnk-gPmBD&m3|}Y$9_}Ouf=seDf+$q{mq=`Q@$j+ z-;Vl9dQ#3Gd2xS^1-2-e*C;CHWg^>Y5oI~m#_E??d*v0r{$ zGw~cuZ|OjPr(C-DWV}6JV%uU`O#E35=-X@k`8ZznQY0bV*BP>P|MAB?+;ZD=vd3xo z<qI<9D0C4?EapJ^p*Yw~hX5@m406SlyI?4egz?=VogR z;@2z1`Rbv2AJvW!-#S4CzZTTVh$F!H({_O8KMWWKj5`oO&YDoj?y;L-moFd|7^B0M z)1E7vcs4Yj4#AKAmV(qIY~l@`$Jxm4u&ZzSJ!FJ^Y|TG0nA|`Q+K12tn%!kX#g&&| zW46AhT)M;k#;}XT6}L^|zWosovfcx`9&zLXyZHM7-1I~78IC+Q-OAVe)X5_k?q#59 z(-*||oZOC#dmMR({{WpVxp`oY(4*Yk*ydy&G*?Emz_gnma#wx}%T?Uf9B<^w1RKF@ zD+e}fyDr?t+*f?)1$LN=*UjJD z^n-Tg+Ae$;li&JJKzgdv!-nOh$kU&#+i)T&FE09%gHN4e-`XcXY#r!;ue9$^NyY2( zn`$vp;2Q)sq@{>9X7)&Am+8O0j1_xp)_5qh=gOyOEe^Bk4wGTSqC~(laKWQcZ@3!& zs`JItcSuMKrNGF8(eH2!IRS-q4)nv(2MlD#nK*9mdd(~LXsBYE>Vydf^!!{m~EblC@MFbXhFOs>0R-KHkaN&k#T2 zu04j{!YkUfe9dmQkbQJ1KjK~%8S5u6X_Fs3_Q#9o;I!Z5g!?k&`bUBH9&7?SlutXG z#P%M>#hBM5w-{lcYWZ~wUoALDmi8?KbHoYXZ6Ud6wc)vpefe~iEU*@*wtZ#dJ>HTS z@OOI4(R`7$5197-tnv!A)o}VHdZ-I9=hB`ZHiC+KJG$sNFmK80!zLG4Cm%;(B`rrS$-(3XtZE{BTi3-{%EZyh?>^;qZSJJD@AktcJqlG|A9TLjsaLDg%6 zikEnHhs4LN&-m9bzw6=xd3(0yVp2TT$3^8X^~5a8Fr{El>jZ+sV9tzQ0uD+9-UH3m z3$K24yEy}B2OK(x{`~y;*lVYo^dKIN) zC-Wc~lZ)1d<;u#%eYwy_*9Mw=_9*ku1Z*Pic}86pn}dr%7hQ0gkc;hfLH19P!C*Vx zd}Pl7ouEnaw6TFKiEec{ke}GgGoP;9RZZxPqYCn5H9?X$b3Jdt!=7GZusR#rc3>>V za0h*0+1{>MZ)8BlfjqQy53|4g9%%T;Wn4C{9{I*g2JnYXW%|9iFdW{gs0^b;C>!+m zX?E++I5&AS(W*xNj`p=@2TcZ#najlX$i z?&?#%=Vr?0UHv8xbWzOL%b4|?)*Spyz8hcQn|@?swxN(U+vJh8qt*6m6BbW#h&EKV zA;Ne-8~a=>+H`uWSR0#KFV8kIhXJ?4Ha90O;6uI*T_|3BNRs_~M3f%-ZC2v(%paST zufC-3*?!UqdH*Gy+s|!S22^nBV2oA<0Z?Sn35vz#EBzEyoTK-c0ny5aYq#OhKoBx$ z$)7J!)N7l^HmN{P%~_kVHRf1vGkVV$1ZxlCuF1W0w}bx2TlwWzC%Qc>_u#Y5qJ*_ojk<>orqXpfxY~Kii;zg(Rxt2GKa*uiEL6YZ}RL5 zi3a-~xd*w%hAnXT4(KbcvRy#vOR-Nln@!bYx6+G+mam5!QqAZ5!hohwxKBNBsR;llixOu<;A3Vuy(T8 z)MjxRm%7w{7du$JxB9Fv|I8o$h_`VSN8lejmnzpbl0VB)Nc`ycpdTX7rt0T{YVO=@ zT-%!>zVF4NgkwLDBcf`Q<;>bFTudt%2+9 zVvpP>GI-Y~67YYruX0x|sm8YYP;T>c_3_=auUFopjE>*O#&Xb?eEESoy}$<0_d~$f zMBe}ITXAp6?v=S>p5V&cgcXw0`*6!KgT6lqH(N^J?+V2-oZH>KqowBu;wI~kkKe`x z(DAeoZcvXrKDN>m|K-0w4`}$y_Q6YWS+dB)f}g!6pyttlKdY~?T&%80{@QjNYd-ov z{l-^v+w_GV%G1f-&7mt!+?S_^?r!hkvZ+^Z%r5p_af+Ld<>sPtYh}LcQ{T;NbaIuu z0C92pN00Xr`rSi6ydQ&hedz3!!SP?@?opDt4c2RG&;M1p?_kEZxahAho6v3aouDf8 zDyB!)qph(|U*x2Q3KI$hjS!cP47{PTfPh{09(WI~iif%k*b}+$OHqr3ksTB5oC0(FV0o99*@wQMBt4q8;ShyeePb(v>nnWMfy(7r(uQ#)k!}Hn?UB9L(Oz?C3uG z>GR4Zy4k_TbU&BxD!}d|uN;Zm=~>|l<=SVSP4Lq`;IJ{d6`|Y2)JD#Hi4N?M=n>am zo2ctkS$(oga`m#6`F`ZcTm|=BuGefSfsB0caF`RXaOyF>*LH>2J_0X2z=wONYm^#%D|3dGpt+!nKdH$bd(%r zKiLD_CN38EZ0z%`*q<2kpU?awlWb6i>>b#`*5voly$WDf%vNi6ozT)I(D33r8)FIt z!1(Hb_u6#JBkM27Gs>V}uPB>Llubwyp5SJr-xxqK8{1a@)S@Z_{oEUChQc$#Vaty*inG3Yr`?l=g?`o@dl^6Vnydrudz& zWOwpIE$>j*0Z}5WI8L`QISc;47y!~e9Zs9^yoa&E>y*I9d>hc-OD<<@fjY_j(%N`=H6n09+th*--hI*W2?! z^Pu@M`^dy|o7?g$nrjKU^oRQ1(7Iq_23D>P>~O(L&UBc6)|;|1E`NFR#oDg4`*t}e zmBXGJg`&`VK&LAtrD6_u7})x#zLTWCrBpT#{mk>*Un+gSuK4iTH7aG?~&-p3mEiW=rj!)otUtLotc7_EKeiGV)Sp>rUU2dYN`@aE(a{dMjglcBZJj zvfMAx`b(HDuDjSiw|=hJzCpWqkgw}-E!^UB)dT84SIvt9pL{Q~!$c>ngt3%hn~6X$ zc!sBtvb6^t1(6Wa80m^4STm?3u#SCr-Cj9STnA-?i!Q+W(su>~w#jsLa-`kqA?Pa* z89P}WH=R5tM_<7Qw&u&eL@H41R*rT_@u34-f!+nCL}mm2?3DIf|H7vi-`TPOkna;2 zCm6Sw%4i@K*N6S<51z|ScS%f}#7|%Q<#eR$46;ENWBy8fF5iEXwU6a%yAI~KIo&3qx6t@;v)=SJ%UoQ=2mmhU(IqxY77 z#Z%dQU8q5qe?wY{@?J%0=HN(!%a$G@aZ?kSgSN)~*Z(KaWk&FQ&Gva5$gx1=nQ zAa5Z`I5Ak^aXwCZlIsHDK_Bb*odxu_h%)Z5v*Ri%3h$CDhnO@wS+j7z;P^^yhScF+&m zp^0rgyIS_*!^OUAM<6pF)=aK3l!07m>OYL>l#?xPs>*CJrm=J?#e?dcA6+n=RtrN$eJ1W5f|=;aR^@U1N$~gImG* z8Lg#rSs#t5aqW@B<@dK5gFaMw?xMQ~(fHeZ7K3zbOe$Vv1o6NF74aOMGws&a2G&0= ztuvqK*IpbhDIaZ=-|w-&*W=yXi08BsNIn~s??GPlE^}2v<&9miiAk`H%cgway?Og$ z4jmky##>qa*NgnGbLpU<761Jw6gvhBsIL%UG&tFBK<7xLR#WBbU;6PGI4l?i!j)Zc zoKBps(15|{7SsXbIpHKCr|)1By=0(Uu=^;SE*r)+gY?&DK@$)T(X|1Ql-Z=IayXA(&nIS7Hn~^sMSF(4Ve>c{Ps~w%M^^dGcHotd-5%s~+XG$M*=j(dTPv`lD66#Hm76 zAsLh-6^`ZJp+)Q>%4D$gF{pt!fnH;`YyE>Es91lQ>H zp`w7pIY?m&!^HtcJgqVIYBnC zHU|kUcKjJ}Y3qvRPagIYwKfv%oPg}iu-Ka@(<%7%ZFAXGh76~j>P}KN*5@zv?9L`e zQ0<$b;?M-xsf@4wyZE2~_nH{rolj3+{Lwb-pR8XG!`Wk#!u!-l{l%Y3PBPN7XGCmo z5|F!x^?iEt3Kq-kFQxMagP1+Yw+n)?>9vi8uY78A*dj7{OjbYoFMou-A+C>ueVa7J zXf}mp59zs;L5yHye+8T1nr%YsgXOe+46%*>@O@1FU3E5&R(?>N=Lh-$-^KGD{JE#$ zsqc$en>YJ#!@Q{s$g5Xq+;^HXZ|XDDw(){*HO8H;rekB8J?0UgTu5B7_FT6_mrUQu zs3J9Ibh|+r9aip*e4U$T?nDw;wK}?a>9ixJ^qzU9AMls{*7(*pvNrZs->+ZD*QdT^ zlT(gu8~Tl2qPtfeN>_*#J-sgemp_6q_TnWIe=>GafJisQvU+@PwoB^_^}lqy;I^ax zAW(>hlPoOY8{D0`t^;eMz|*35x&BSykO7wsD#aW-`p7b2^i76rU+33MmU6Oog~LZ* z`AessF|(r={_9&nh>yND85@rO_;Y`#xd~X?Qdd)>m`(d1iofs^b&C$4cKZ9qzhB;o zYW8M}+f@JiieIDnu|KN~xy`zX?N+6?QhM=x;wTQ}xt*>#G+r7$Mdv&akAO0rmOkCjz68` z#;rTR9?LVbnvBZLQMAc9&=6%+yXoKXE);?_Tz@`j)44Z zXQ$h^=>~LQ_w+442DY_7s}H+RY?F^afu3OM77`8)3 zj-i(z$75j)Eeb!>#c49^TckWiyJNbV2+K%Ru{BhliH>kh|+=Jpx{ulrG+9v%-%B3dm+T$On z9N4+VdPsssI9owuAiE| z?k7EXY;niaF<+F!i-iGvLE=ltHY8)gPrBgfJHTfV?_K41#EN`< zUtEiye!Tp?xs|GYa=wM?q_ive=CHBchp^oSa#EccJ|55uva9d-5CU7u_$p?gv_f@; z^U*wXW&f+6wrPAndUH6qHU9Ybf6;uc-JI||jh=jqSRUQRHQ&nES*pUsP@T*Hdd-Vn zbK=of-rAXOlTRPG1?HFM31q-W9Bg9x2x8GO8MI>h=yNn}6$f;nAJ|9Ag5MRwY&Ym1zF%jUBf`sb>u{*6b!!Gy_1&Xt#d&O6W#Kd^If=*HVb3XhGlbZ~g+QQQVDHvuA+nUm%T z8_ZQ4@HI9&Id?_zc+Oeh&}x3XR7dmwI4#h|Y`FUb`8jA#?SPc(W9RZupY^@^E6|CC zsbl5j@W1$-F5@4|bm|+wwc{gG_0e9Lg5(B#@XQ9f#G1|Kdz~-+LvJoWyqU^%TqD#2C=<=EwTJdNQzb3B)3M^(dG)#e1LsG01lu0pJ{P;+t>`VYBf)&CE${ z9djCT;$ySJ8FHIoG5F|NTC&`#@d0u=Er=DTAC6DXB8q~Fr?hu2D3QjOUYJi!ju!mO zKeTB|zirdpW>u2^s=;^bH=hc;KJd8%sB{(f!I!1k#Mdz%zz}&r&;OSu{3ef0JAE%6 z%v*qHr$0@IjRBqfuOGVt)x180_u`N52kEzo;-gQV4(!_~)!U$7A-~28CdCaV(7`5B z*ydm(R^_72x%56N!)i#tAZ-dTeZCr{%6J~!t%nvEzMFdxzZcl+}RSzOfP+nC~2&dl2NT}oCT zhQ*?Usm-w0inWmg&y)^YD}yYV`Qvse%pbb-3FxpUKn&A^f3m=JJO^(#iS#E>Oe%L5 z^6)>NV~5`dWZuKKS|812cE{qS@^phTolm$*eDJ80*q@z}`4Cz)8K3tN2urUJ9kjy~ zgsWcOLDj=R10~l{gEs!!-$;a-MFv$+s(` z5}K={Kly%n$%B1q6EQygpq%2JHSs&U8eD!H{P^FtVRhLZ_5fXf*QamApFXR}16DfR zC(O6}_e@a#Kp*byHbbCGEIbo?X;U=u)y3eB*ya;Do-z~jU=z+n;}ctc0a83%vJ>WK zb&o2Id4;c`Oc%ZMBk*6{7}d6k3HtCvExp7;CKEYPI`tCFuhKnke1NxCAXKya#5K9` z>z8u*#=!V3b#=p5^f~mT4aRYsc8PEB%*Kz8KXS&!$ce)oXfEu-pT1_|!^=L?#$O** zC?>NxzI>d2wJ#+vPu5lTurB4xu0YE{$M8ZrQj)$>^xa~E~fXvx?aS80| zuX@Lz4%+xs%xqA*{62W2fm2_xaS7>({>s5DmTJ>f$FJ9g_n-1DlGe znBLW^%rCUk$|dbUCmRMzyu?W?oWvT3eOAoG8_zR04)uv!usw#}#o$Tg({#sIw&#O% zZ%jv+j*a^sO84NqH$Rl!&R@!b0lFItA2QxooLm`|Z=?ImfBlHx@7tu--(+nZ^R=8E zabve*wn5!t59=aD?4z)NYbbvE~!61PQiv)=coN$jjhU3_?amM5s?6Pzd z)b6XU6VpY$q{6NVVj+1a!X$YbqRM=GH35{#{`6Yp5Z|7u@s;tF%PI6lX7z%&&v!BOCnimkFT3;M_$DSYWfRCICtfDD4xta} zCFkmpUJrMD_2E06?fIKu+o?KJ1dLzW*Am0__8=2151UutL5I2hyS#&&JWZ0aK!d7wrY z=-6WezL>MgZOle1H->JzZBoU{J7*JQG@llm=9~`~FJ@>q3T0PD^?4uO^}Lck_W2V% z#^zWXKOIg`u5^+g9Z$szY=VAvY`(9(yu&b04>>kK`8}L=I57g{qXRlI?T!J8(`*Bh z_*B?OY@XynMVx`YXL0oPp}y%~W_G2C_m}BH6I1pVoANiPT-UcR%X`50gO7jGeOT+D!=F0 z>QMW^laj8RerO=1>#~}^f>CjH*>`3?8>a95#k7}w+4Rs|pDgU&PB#r&zTRC2_Hs<0?nK;Yy^JU-BY}|qE$ZMaC z%A?gE^7NqZq*3{MZQ@n;IY7Loz5+%4StL~p`QSe17YYO~t{ zb|Q;5*`IeS__M!ES2kjqEZqlUen2;j=L<;xV);!xd2nIzyVY%^8&s%`p7Df=NTb2Z z@gKO_2X{D7T=)DAkn|;5vuef7yXs3edi%nqJ6bW?Ew6Vck*$w!wRZfn3AC0oP$95$ zo1+hTc?oUx+UYEtKWO>CUz@Oo$Tc>uvb67n)|~DNtHK>IXq>LgaDiY5On8Xzfs{AE z>~BNH*D(h&@ZqZ#d>Nw`)bV78*mR*e+vd_HEcx1}gH1eyIA)SV%@+#B7ViOvnzYM1 z1Y`BYKYX{BbnJtsCd4+MSnI%IP6mGPXSH?Zrp|60J!Jqlf zCVBJ&F|v4GAszZ#EGG-TQ+UH_uk=L0D@SLaZskbptNKAEF7OFt?7~HR%FsYoV}c|0F}pM4Lp|KU@F;^GQ+ywzRJSqPXr#-GlOwRZX0a(mkAU(Kop30GkAuBT#I|Bfs$E5ih!=(=0}jUt#SL@x#_{H1sy1<0B%L7JnRFe*pi|lo6!{4JG$DHzXIE!BCUAi7jw5qGmXA+V%l4c4fl6+@f1 zTcpn9CT>1VFXM8)$?vvLF}YXZ%SB6f-5wU7lAtZW;pinNMs!%%a`n{YVD*yRGf8bg z<_@~<`tfZ;F1L71I?wDH51W<#F5dcVA~jK8_z2XnxA9Dd9%Y>}*}4K+`%pRA5Bo=& zm7N&h;=a(b-%F~}Hyx*prMh;!HWWn7pC03Ip|bdj*<0w_m!Rz)<2%e1nC}N~d7pLu0Q>mG1^9TC%Z@0_B5PuW1r46rB@6m;>huoJz`zNJNi)Bq3!H(LEIPq-*0J!G zsu!}|pS!g&vAu&tSI2A~;5q)$r%hd%!(s#$>;ahrWHKEWwDXA{asfe`uWk0ueA>1c ztG7Uz+h&8_Shzw0E)O*gk*R#}rl(DCpNl&&^Sn)eU5)wxY}JR71oaEg>VXdLfPVGk z*;Cz%`1)`qzI=HF{^6kqG%H$Yhc=t>g)M~fXM1^xenRU=Wn%~Vz|B3wT0e@zr#9PY zlk;8Bo_X!rp?3!HyRtUMjFRDVP1C8rAh>Tq>79<3e?aeh_!9j~z|Ri7{D;$bNfC;} zxia253Q0ZSB!br!sqv=IMZ?E7bYqd+bWgVQ%b!$EBy0$tWhy4S{Ue>{K49P#;}R)=UKWRWrR`AUmJ`MY@RZGP!u)^RreCAe+Cc#Y;c0AUFw*Oa(XtY0PTP| zLDScKiMeuh<@xeV9jntNe+zWjAeH|yz`J~C_V>IPow&2@L zwpi$>-}_H8(^a*6eJN+_+HB1^^Uy6ubMdj5$Tx20Sj9cOr=xsVL?-iY;X>_?IT!7# z`dPmX@#bFrJ_~rCQ16jI28z?ql7AFuOP}bSpgj8e5T>WHd``TQetCI!BFDV|;)Nz7}i<89Ox^c(0qOO5+jvN8heoI$|!57sz!y_@e#VPG7r@n&fq1Xfi&0 zDCv(y${+a#p-t4pzWVjd8BEnB%NKsY$?w1e+MdN%&`!r&paZ{w?aPOtd_W#u-^+&Q zAilUld5c#%OMs*fbSHiRInsdd-u502FOcPzxLfpH#qG@K1lJ~`X;(5nTJTZ=GEKPM zPL{7877_x+6>)hm7UrW3$GD=SDVLva4f^im1g;G5rB4Xr-y;M%toXFtgfo?Jo z@A~$OPOdg~bjppbPmSBO)XBdEo_zTX_z&Kb13cQKd|LhBJ)H+^;)iEng>CZcVJCg{ zvtd}X3&{vRoa3)21271OTFG1Dk%L9BnIP&j-FTiib#U-6|n@n=J_xk`po_CraZ8b>6Zv)IH z@$6U};I9A42a6Rvv+0?9=>X5-_w=DF@fGlyeD(XqZ+DygCgnD>=7P@JJj6Vn3LUj? z?v)Pm=hDsoVx1hj`n^rDx{s0gkKlgl$i~=h#Ou#nbq&f+XXJv=!B%N`3(xJ|uY0%4 z=fa!-%-vsfB1~?5(P#YZtG@-^e+>8y`f|srdxxZjmov@i|jOWAex*hkw1sdMX zvE;`qr3V{yg_RHmYDx03$;-}Nrk|Jl6mc@>{iy@f^2Cf26+u|3SpguHLqdjHey@5M8Wj?^s z3ux+h9(A~vk9|2h=ugMMHeU7o8_?k7@jpvnLp%;@zv^PNSVXgd+YAnk{f^c7V{w;l zfvabKS}t9s%ZHQ4r|7DP%z4&uKvr@kC6~Yk!=BGG`Dg%N&gRoGy+_YzB~|5v=_*F% zlVTgtV?cxY!J+5#ojhI7@j|~&0te0o z>~}gwMhcIIu}?f{>oisiV?M^yQBTTikfRAk)ghUWzx}HDoiDnW=)mXNmKzug0N7H8 zli#5oj(--`F(%k=`$+%6U7zC7H6(lL{DPzF;MC`93g{*y@n?A{@)eh`1*olKKHRUe z=(yjOK`}Hrh&*0G_1Tjjs6)CshU+<%{K#fMgUMD#TfIuf`RYv?y6Em0k22)T@$c%# zo?VukIihkOouYEpNza#x4iRZ!b<%_7D|KEh8gKr0ic4Wl} zPCjxk_ccN$_b=q{P;9OX1AT*&e-n;vcIXxp8_5Cv=tDf(fo^T=0-uEpE&h#F#f@{@ z%;M?fg{E%Yw7JsiKJf7`?EmXdf^O5zht}&h-8ySsW!IZRy%m%Lm(x#R$mr1Io-xXy z>Q%lbQ}Q}s2d3`;A3D$JkiXZlmE*%tC)D-|ctD0v=MxzW=IrK+GXK>p!ag(Q4Eq^U zHoY;*?il?Ez7J2@-8YLyAI~DVLtL@qS6(HE0YA&u##V871#~he*Pl!OlLlhW|D_Py zkUIx!VGrmFtFe3a?FqD$FgF~VZ~KRj?D7`*X^J$Oq}^DRZ=B1A%4_e~Hwn<=+a{@B zo^{Fr&lXTq72o0=u_D@J%>|6w)GY#6hkWLkU)1<2`W}1qPGO|kF?XvkR*BE1JU<3{ z>7es~-={tHK{Gm>Ho6YGkoUwBOp$znxT*l>wy-6Y#-~H3_ zXB*$FUAN}TeXN1g2N}9>kt+y*`^p1GfrA{A1G-zb)NThgf#{U*7&tts+#mK<^fPFo?h=JMwg26TyHP`04{9 z`2+u!E7Ce8SI}-^CN_R}8?#szqXRO4rijO<$PZl~t9~Pnelp4yF+El1%jt_e@}sRX zD1-jPi3=2u%P*+7IB$-W<26BdRr5@d#?BAW{{vTJPmBlXhcj_~7K4=qPHi1)LAa`=GLx9Xss z17sO=M0)X|O1e}ML!WG{_y9C*MOoWU|f=d={Gd0|{2>$Ruz!Zw zQc`*XFPcP8#~>bbnrKk*&_0_KC+3nx_5|iS%coP;2{itcExO8BWYjc*QHyhJ^ z>dN$fr(|Aa=fX?x;#oLoZUtP#?x)PCDTwKmGj8 z|2@WOY+vbYE`M4FCBy^o4hhVZ#0aOI!UH^jru|t3{;bYPyQ8weWOPs`$03VmsfEBM zhgO!C@VP=r{4;0+1B`(!HV>w*m!JPQ^S|kNeZlzH86sSPfR#)7w7gW2%By~SLRU61 z^-0^We%jh;qTI2za=^Ck12?C1F?6?*sf}G zjZ~YLz>g_;1GeDa#*Ys6nk1Wy8yB|)ZVznsM~)wR=Z)=bRb9?5o3N{}@~#9n7B)}@ zoJ7mSc%R=>VVliWE4xkj<RmSE-AY-DLtQrf#VCMt|p{C0VJZzGs zUpjX2XnS6cJiee@9*Nl@$A{!6qLHs;3=(4kj4fRsV|w|QEnNRurbV(v5KGGAQ?6pt zx9G-Ono)hU*nQeImVG_JC-^OZM0fk^R+OG!{rJJpx6@~!`(Wg~T-hH4`SJGBA{<6* zkz2HHq3tc=9g0PrtMCOF1MTCh4izt;Nn6=XzPh{L+WLK0Hi-^L9!y%XG#TaU+W08> ziqCb`Qr(0`@9a8XT;*=_D$eNs#gtD&i}B&{ive;p3(pux>3i|@obvf}yCvj@FZx~! z4CZ5Xc^m!5Hjgb9zYZa%zv6{huRbeF*^Di@{WwA66)}P@KU;jq zpauq&uDwC&n1ggKFIAl5bj@xw^_<Y%J0AfCx=4(;EmV`;qi|wqE(&~#)@L!-E&JQo=wI1 ztF3X|X635MXRVA4IVUA^&iwk>-^Lf2Z{0$)dzT`ZR~{QguA!qso5o|DIQBr)uW|Z> z_leD`Z-Th92Xem8p(oJt`C8c-QQu<3jX^rD9|q zwn@8+8mTrL@JBM@Cv`kFC%S_+zJWL%G>*DE#17M&PS~%y%t&J(*-yf=d7%0+&f%^b zF8k(68>4j<9(u!k>REE}t7l=_o=SA2GdE*8xItEV>Kq%x27q|VJiCEyNH#U}4sFxj zBwU9xsJsbjP;{Ce3%td;9o0ss({dA0AY56HRlYl76GEqxpLEu-$5|rT8HHqQRLjZK zRB=B~{OfKjeqLpLeWv+cJ9Twr?|4LdJXEhC_Sw$o`50*mwdpS?N4h}ggK}GXPq|lpjC^4( zG%k(pe$UF45{CI#uHDyZToqlk_}C)XiD&;hOJCUYuhjgoo(;_Zi~QaX;%!rlC+6~a zjIp`s*{S5p!Bv}gi2tNJiEQaFbt&(KT$!$rUqhJAQpaek2XhRsIRxoitjNkc%!f{I zvBqPL)U?}~gTs432OFTRV}6MPA5Uz6A8r1RM>f&$1ATmBFWZB4RdHW;TU?8O@p|dX zO1_QX{Qau=pU=DMGEPnsI-c0RRpR@==|Otr`1CMXE9~k6AIPL~^{`jtpaCl|)Xxq0 z@)p{j{IKxVY(hWI^6~M# zCUoT&KC>q`=X@Dj{+kw&tNCnXq`U-NfXJ_~MHm|I%|H6dVpPu77Wi_B&FcEQ_W0G~oAOkz>~_2A1wQkayu56E zKJ;R@c#Go`=FQ@tA2CHJBga=Cwst~?{9S(_nd##%-um(IH~F&J?~cqmKH$P^kTdpx z*fBZlNZ*ccbl^QWx~@DvJg0s~`aga6Cx2Ec1s1b`l5<%3V2hK2Hk@8B_?m;%nQNWf z#Es5jn}US_9R8FnM>^(=vc(tc%0td}3}m#!)&3A4_}D;gfVc3f3%CVVQLy%pMx9Z7 z-|YMUy!5A~a&>YTP1IM&&tAdz(XI#9Hf=#qWbrWYCM%kW$*!1L$olslZvA){`phqE zvy*)>JbkNAE{hk(Vzb-ij^0u!j|Obx2NR>}g;bAU{>0Us%ocMoeN6sndu9}~4cHjd zJv%MPvMrF+Lo#IB??PvC@zAuCJl*-e7;Q}2e9B+`$-hj0{yX{k3Qs4CZH_h>eO7PM zfAlj*Kl~SKd->P@OSgo7o!s#$8<~69exg`Sp56RiY}x7VVRNrmD1zaC`tk&?%I;AP+okU1m<7Kw_VC+n?AhaYRr%SVpS9D#0i{0JNng?(LkL( z&?mM)P6t}g3TGGi=Ok#;0`(JfsQT%{Pyc-lo#{-3(!TlLB>CuUWYa2f+JT@)uFdOB32Yqpy;%wEKU@)-{ z4$Z*pKmLx@4IH3Zgg`&vV;$Iy7UgT;KXEcq;8`7xEIp9?uuJS9Mu#@R%8e2CF0gUH z&u9Jd8pw+g`z@3vPVqV^8b&_yU%R=~2K3?kUA>xL&9%{-D7TsA6Mgc=>Z7*i)!HHd zKK$^%OmF(=&)&!Hc17$t7dn2p`kc?4=n%a<#P!RhZgqS<&ti48W}a&A3Su?{A=V4I z^QwN33xlsC4Ke92tPl0Yq6;>|ofJCON1Hmu<`%-?d) z0sYEr#p$ARv5fE#`x-S}(5ByP@YST3Q)JDuiAJbn5YC!&q?Dfr<_6hBHa5$n(Jx2H z_d&nK#2j&A@+{N%nh*P=dt(CRh%C=m8~CRQ6}%S$zHdgTLBBRDPMByGqD^NV2qvg2 zDy!nFHYo3sxw^=}&OCFjBp5owV1d?`VeJ7gsG5L>;m}VGZoyKsfE{^31vc*B_j`D& zAD$`(V)3jGAh7z(HWL-KlmF<$obTc3)8pzap#r`5iCHmNe#hy{9r*58wHNekPlldT zehV~hfREgrCO-OcVt(lQ3iqpvV(?fX73sJGKOIe_>D)r8+G4skMo7nEV2;=%{NKl? z+~d}^SX$hj0Qb&tx%szS-RjfZNp!dA&Cd^i($z9F?k{d@e%bu{@&BEj{3he}%>1-q z*iGYp3oQP@7_Hy&%3-v|43Bx6%piU`2-Wk!;&4uV-;o}3WE-**HQ%Ex79ehW_NE+NUtLvql`WPJ zT5$LCt2Y1o{K`gsHjX{R`tQ3U^7*6!Zg(@0JgoFT1EVj%m^XlxP5gtNKh%R#WjHw; zKD|898Pz(rj^y(Lm4_Pfr*iT+IKI2%+UfZw&_92J^5JiSO&+G7p&PU#;g=8f9Sk_x zvg6OY?<76jW*6AOSGF>o{Eox_7KisV(*>IlB{0^fFMQ+!HVO2Hoc;}!)j^v@XVREp z7EYw~U%oiD7seJ->RW7dI$`cC zU)_nJM+zy5uQ}??kAM5WKjz;-HgYqWa(2~0EZ*XavA)sy259)HLCWuQOXhsPHUY4H z;K?)Cq!+Vr{NUG<^a`=Q0v>%Cze-RBy4Wq7BVl(fK0V!%d4*^D_<;;t=tmzM6U_zB zFh6F4&W}y5wyFqi&IB6@<>h4&A4va-^n&=|BWp||V`tX1Jua61C5C*}qn|mntWcoTlrR6E0*cmbQ$y6O(KEwxZg*paK07vN(WBNh8 z0DX<<9g{gc!E>dErLXbX#xb5J_zv{*^DS<=_b$^n;l?`L?HpugxVI@E`WN75H9qUd z9e3A`&+qxGNngSE8Ltt86Axd|y!CHV889b?=Fc{i4d@ei#m~5~NhWLqGV$_x|4g=~ z@kJkweRd*sR4$z>E{oXwDYId1VS85hyEdt=re5|;t~Q$#x_8Ft{?*Ugul}a1sh>no z*RDir3*M>ruzPlVRx3S^jis`FZX+&-znqJ zzWlnY93pLCJ9)Ue^$#e>;g#sN2Q0-W7w5IHQ4V5b?(Jk&?uzoOpO%_Co`Jh^Gy%<5 zIDO?WU(HWffsMnb55M@^8e)h(#djQmn(IS(IN(eF2yPLo z?}L{nzVy|P;;-4lF|U@I>@9-LLue80vv?VM*)2zM^rdUM-sSEkqc;TMRD&2@;*z^UUM5e5@>dG6&qzC`~6_~NGUhx~X4HkpH?_vG*5JsXgn$=%zH%T52_ zs#)v-|63f|;kg5CI!h+g@=|1rb0@5-&7kPDn^@5{nVZO)*d{L<&fuMW%|Q=~+gYBe zGCNS8rtsL9T)J8iFKs?M!?!7I5q#A`vbm&Ua%TDXD?%iycNO^C&dlFxejnWjce`y! z<3+P!wUKVY>dyyP6;J)EKg;W%6lr;F=n~KcvUCskHE`Mw@N~F>SlL>1Rnb*r_fNG| zXY+u)E&k~6R^Qt?9Q&@4$z!RX%YpCc^=DUAy)p8!HzmYn<t9*evdz=XzXpkdBV8 z!7u!f$kmwc^+T>1&)d3w&9BnA<@bz||IwNi9h}YA3FY8`VW>_4x`g*ab;0G}7ZHDk zrsIH~FX8Aq`N7-z|DX6r`mzn?2^*Jmr@ad{#O*B(?GMG%xE$PA-^I~&>23lI)v4j@ z$?q^nnqOV7S8lQSnoh+BE$9QJx1)M`>0aK1Lu@hF&>}8>ERN=+TS3XM3gGvX#x^?g zAKJjalRSE2!}^;KCVU&3+T$hQiG2B!=!N>kjXekEZCR&YV(i0KJHOX3T>`{ z-}sTQ`4!OL1KW$^4SYTGh+O@7@wL6|?b($$6pvj!xpFpsjo0JE5hBW1Vn`hFVLC$A0%b#agEFIN94Q-=-@`ih%n!(_uLISAlLv|g zWMGRkc<(^}j|>~fd-#K!$-$R=eoH^7{g2iS@qZC_-|s4qZSeNcb|HvgmJy}p~^#;fd+ioY`+TG<8VBaa7+3HkRx9>hrb zJV>|bPuXk}19d#@0p`Y@gP1JkRhoT|d>>ti-0JBiS_@~N3$%$@ES{PC=-;IFtKPNm z9c`04xqYa0a>?jJa?9`F*MZIJ^pXGixCN1l{B`@Ydga9hh|{Sb@ZLf{@L>A@{mC=` zz6tEH3l)WLZ|m1j)mNC#5?>F{REzN=22UR=&p&?2K}>f-C>8&go(t`BP(H}(3To}e zw)k%oLi2wDZAz{jmkLf-Mvn*P=^ibo=aanb*{A*M`Jer`a{O#=>?=Yn1wH-}h*Kx1 z58ul!-i`wOh(+U0ZyZ5~!63q^zs2b^2o7*;n-g>?cy!z`QZF5_MSVd29|JzTC-WZd z9lWyrp9}7N7oUSopm1_9R`>B;TZxV%E4%X?7+Yj~CRP*dTDbHyL8oVkZnCv_&cY!+ zczb(S5lzGci^_B)V7kJW^#PG%XfSo zljz{2gZBtVoKmChjeGZF~gAB|Ng`f-spymsQ_6FC6aCFJv zBJvzPpzG9?fh@e0KlJ|`@V0LUCl&`{@`w8UC0+1V)&x7ai{Yc^ZcknLEV4)+dseltA#HPN0-Kj6t-8tl{r@7_+U-(5{j1hSwtcMQ z*ybBxfpo4d`xmN?4yUbbG`jf)=pB1G{c%+?8Gco7>Da7o#MmZtK-V4HJYvhoiy!1R zn8lzzBj~dYqlLaN@H@dA)I8l18JJHR+6XGH|7dJgy!xacM9x*O4bln2CUXaRb|5P9je+XB<-$0+%w3o7Hevi#t z{1LIbL)^qnp23wb99<^|t3 z#Ig3pU9O#OhCL!!`3d^Tb>!@$Y%JI(JK8NBY||<6O@H+Td_7Mw(q5c+yz3h_-h8pq z%4@FEy##g8pF8sJ(;j>#JLjMPfFQsEM*(F^)eHVL8PHA{@ZNz}hfgQ&IK0~H@MFQe z#;e8i2k?*K{r?p2_5Cg0_I)vV;>e@nGd3L!QZG-KEU<wK3?lfLW~ z*aEzOUs(>yK(NWQ1=5ro3yS6b+HRYzyV**|>Exs^RL;|rW|q~pM| zG(I$M(i%g@UIse1 zB8QhQdS*MC{0?pZZ^71kIKI3EA5NR{!9T{AWAoBeQtnvNzCkWWKVZT{V~cGu(XM=; zesC);-lvUT6RhkNQazj;o;I!r>dEcwX|lV*vSBSX)$p=o{+Lg*Qyq+@w$k;pEzOBN zE5SoXPG_R)lkd&Z;|k0i_56uU{tWc{#m;<+7|+Q|rhZL($MHLCXbV1f1=C-$X}(!R zyTVKN^2@K}^2KI-hbten*dILXn!Dn`fn%3`dOG%iS?(4JE%V+q9i}K={C8yI@oX@- z)dMF1$gg4cL#*Rx+ZqQ=nfeUIaWHFg?PvRoUrG|;ZFbf1^j7%2XUd_h4T^n=-mhF)=fS-lBP zUuU~*9@~sOe~QNT{3^GQ<-U3Eog_B2e+lFv8{=Z{@~>Px%+-n+ELV0VQTf|Hj3=@( zJ?xkhY}#zht%~!Be`2=&DfiB!A{!l#jU=2peXa^;uX;B2xuksCKUtw;>qBEzV>LTf zD9)wnK2Ws4#lPn90G|)&L>Ftmr(^AC5`8BJK0@mXzFu3UF3XHqn~m| z3VOML+yQy^--0c`tCIYAKS3FPs;MAwD zaua{3c0yX>qI`uP|yZ^`cgPmZgMNTBUW%BG6WaHi2*Xh~^1)W*D3g6q<#&nY}QFEqeGt;fCjsN1wmK-WB)x7y5rvN{2 zqw4xLzhX}9`o>3e3eZox4`0&7Z#cH{+lM{(y-0}nV^;)JJ@h0$*7ydr%Gxb7S2X(I za~t~E^R)sP8-^Q>z3~PH@TgJ=X#72Jt45BDwpWM-M;2el?vC>NrK^#$ksk8-3KfkL zY`(YdCJW=sPRC$Q9Hi?p4o|F23bI6(!^z>!r@xYQ=nA*K?l;rM6PfKZe)NTx?=)Uc zN;Xn{mOg#>;eYjDbjFPKP+Gy{-#}J|$eW~{kw#L_=sF4HK-)oT*RGADoT)guc70Wj zzWnN^Ib+a^3SS`l%aod&n8~ZJ?iLi@*&}>9laz>_k7AeK7&`eDE6E( z8lG)l<@8!)RrkUM;F+GvWs|ROHkHX+BzK_IJ{eHIBX=$kJV#50i($$q=|-LSKlm==Tin~C|{G5`2k7BOAv)JB(aQYL%Q`0O??*7YGb z9&+&`itlum%(M76m*nc`>>c1Y9@A0%#J|mCcF~tA@AG}Js2@yUNz9sOk2sX`+t|^~ z2H)82Sl$ES$8W-wER@*icQGnR&vG=ned!y>>Bm<+2h%4wy3bgcN3$I-Ojmj2*#KoY zbzci|0$}qFeJ&18R@c0Ji+I+?=7s8E^rO@Kk<#@U?y{|k$s9KQ2Q>Q1rbB+@WZHc& zRGW2_scovyu-N;DOXjh5U?-7ZB*&ImiCN?D$)|}ouq>E71n~W!%Y2vo-d-MaEIuRg z)z3>^<~Kq1tReerW;BBvYy-HnuQGadDTz%U?ce#qhnM{@TlW9W|Mp@3;K2atm9v*c zA{g{``8dbVGl+_NX@U*kP39kdTp-FDtPAAt;EQHD<@xdA0p#$s7j}CC_zvP7kPPyv zgJS*L6-w<}yh9au>iw{R%dmc$Xy~J9D;-3d&W2}KIL5~r*Z6D`2zVIdN8_ZpTM<{A zu=bJ{pWbEzs^)0?#ZHXFVxZ3*H9S*(hOZ}3IT?ZD`yC$4;v-j){zo~#M~?>D(6>Vb zad^qM(VoCBE^uN)4#YxC&_ESp8^%|=Gq+grcX^C_DSIFRv68#p_+6V1UgH{RCqQw= zFHL8K>8R`~6V%Od_;&mjgSgSr`k2h=%fM!^cqwiHuD|+UadLNt za^RG5s#5$we2-l?UC9mE-bRVHj&fmT_=m3Wv?Ka4v!kaCa1+P^XaJpoU{?`$WaE`@ zPu?xaqpbGzrR>7#d;K2h#q+E}wFmHOqvycjy{bRU21B{#0Z*jSoQ-S-zw7J``8hs5 zGfx~x?D{;u~<~-_&_|r^QXPj_Rl_i_|tz;UJ^&Y!iuLWkzI9}FsI}7!xxtK zu>#LroTz-Y!qtUMur@pypZx4v&?e~?a%H!MJ`wE-#6x6yey^NOF+6Bo*7xZPsh)rO zfX*j#@|_ z9*iGd9RqTv2ehZ3o3nQqU$zb%pK`||7Ufqt+kCsOOpBMgIGYc(?_GSUHrc^rE#|*i zJCS(PfWKgT7u(A1K_7qrKm89cV*)}VpYd@)AzJZChL1&lD(V=gXO-3BV z2G})eCsP7VYtMhYatqEGon64ohR)ETeDoU&i+-CxG?U)M!^;kxblIrC|EC{5`fc=o z{@;H1@aO-kTkNiafgH%`9~@5$(3?%r~8Do zd~<~y(DR&QFTTX=*Fk@skK6p(%v{m9f-D9fi$Pg3`9Yp6JLZA!6w(j+u#}tunhtp} zOmz0vN3_als`^FOcYPhD4ZPTG({ks)XLlU>g2wLbOT9nk`*Z$tPvw_C|5x3z)Q|jK z?vX@nLndd>IBot!;ETd&Zx0er;~ns5bwv||Ihzp zuY@Ab;mR)6&*kd`GcH*mCXF*wiuT3S?fUVMGk6BaB-#R&GLE(ZsxDO>KfBuGU9}1N zeDjk2hd-qud6R4|15D2FqZ=V~0;b&Ms(ECnnGaz+h-!|2s=) z3mydyWW*7VK~eX7t_k(H@~f{DS`0RVd}suUO}WLUJX)z^WzgqCJ5Wy5d^9QG&^-K= z^NSyi6PvoBuaExM9Q0vj<8j97*n{}jAB_6%wwzxUpR26(Eq>!W2LeMJ;1?P5W{bT? z0OEKiBAyoikjzKALnG7c11+~+qirr_!yIsx=2>bdua7_b>p0?PYre*OHq7TZ#hh&Y z0`c(OIsY~3x%sS5#RonXj6EAPNtx!q*yv-~!_PJ>zs&o~#@40L-~YQzw9w2mV-9?Q zNDsLR$xWYswgKX;aq&zKJH*tl_&@2===mi-P&9Y%U|W3I?AVntJ+QvLftZltJ5}}Z zQSQQ}{Hzso2h1Np{|syb)@0}ytz)2@Z*;BwMpG9PF5<@{W@Rha{%PNuzGDVRJV4ir ze-vuh^KQsTXQGIS?paUAls!8!V^!--NiAr=+1|a4FVMxEJAt^ zli#4>wb<`Ki)8_DoA>Q1p-6jBq#&jWRV*LMOUJ0@3?@EUv3%7 z*2Z58=RiFj^Ror)GjC0c!fJs( zobUORjy-NKyDE#e=SrHJIcvk)F~{QJ*k}hPLq2VzBWv?Z-GXiK4z@wo2RWJaWVjTM z{#1Q{aOleLp%YL1P0Vd<^hW;-_&O5mMV7B{Cd!dXMXSH05RhxmKq=tm3q7TeErhm> znzPSWK6nEGjt#o%`<{oq_3!6@lRgT=bc<=_bRT(f{u0*z;W1v*jW+ob9C?$mvgXB6 zyxIPCx28509V5f8wxg@!;&PylujVx@?wpc)8znG}&^Bs4Zz5-rQSMHd7d}UwL%lRpX zyB**XnaBrNUV$tb`4iQm6?3vW(&qG-H!0k>mXx&}u(>!r4a7f)k(h)}`;8k7loP;A z$l%I#lGk&nRB`1*UV*dHLH=ygw9)Jr3<hUlBqhFJ8eq))I525@PeNNcESRp<1IJW>O0>)d@Ei0fR9|qAf~|I zeX|jJ zs~h&e=ANLRoepDmu>QBu=5KvElN!&XEx9L78@rE5R!7yDp=0rgrYwnveixJL*G2dI zivHLw8qaK8DcJ-h8@7e%8HSHTn1^hYU8uUNgFDzc;1k~u80(l0@y9E_BhupBF?lxW zkc!2|rMAaE$Eb}C{59=e$8&r5t)E7UNN#g2LE~}ah{m=!?GB>;Dzm9ibZaUozk)f2_F#S>J@W;f z!H4MQcs8drp3*8IA4cmLVV>k?G10GQv-$98ySYW+(pJk92wa8*Bhj_hG(@6PuJb2= zd#!rGgUg6V#Xu));L30E7tm%P@WtZgAJMXlUr?s}31^xqZEzd!0Y6>SsS?hhPriEP zSA&5c&`hW^0p7!SOVcSYZl0;JZy@&&xHwewQ2ma_q)ATyI@XtC6HVX$7?4|R;&-My z;P?CsM^_}Yoz0@{pXW9?cKi36Hib3~3xsbze-(3o`Jx<6SLH80_miFrY}Y*fpbf3* zH5qYPU%R3Z7Z|-dKMCf~*H?j+T@i?-O)MYhm-!<$P26iPMNet`>5!A{nC&gL^6ZR8 zKU>eu@&X-n8aNr$&(Xn{ywYFntO@hdts%YoxV(1H)u%md9lNfwFd>6N>wwe%c@#JNcw^Yhdk-NlimnaaXy1Z48c& zS~~XV2=oK^0s zP*1F0j`msbwUvOat2tg3w)`eI;2VF34V+#voKF}7T9f(2_KF={e+=|%ew5!KJ_q6k zPnO5Rk7hG)rR)mGFHgphs}E=g{&y^)`OqeapE$x(@A6n;tX%T0GAN>t7LFXy$p#YD z&$@VQaaa(MRz7lO_bG$2{x7dS9Tkkf#|#wQarh3IZa|-Gsbh1}5;4d9D|m56a|@@v z#l0LYe{(vX+F+YkIeG2unNP-kcGP1ya_Z>EmxI_BmxHIw-i1RSdp15r*9NH^T|eG} zeq?%s&FZnSm!>ex$CSLZu}3~gvNstb=!ZG#O8Cf}c`;Ou?LzGHDYc_Z%5Ra_WBtTz zJUvT=)34_3r|obifMjtRlvk*ZCtSPm0cR;L2(>(bhk*|Ci(ek=^0z=D<4kXGJ+orB zL0K^A$=T^XaK)lp^DEqW=`4GcOBbGWIR3DOM}DA8-{FC(&zIV=19v&)S2*_c9ZUvobg_M8#RgNfEok)Ss`_9&z=Y#>{q9J2iyr91stx$@``-0(#d~;w zzVy#7#5O;tOnTB!Zj282z&AQnJbRT+QeX*GqmpWQr8}RGc0ka`cT6qj zurUIgo-$iNSJDqVkS%>>&p&$jU4BFw=x3Ad=iJ`A#o~$9n>DYHjrGy<;12cKoBirU zj9KDzEw`T7lWTL^E+*z3StxcHuHV`FP4BjfAN%R(sIS^6dqNx95HI^nkLt=D58(=B z&zC3d$OgK?rw>2;=T&Ohgw5Ctc5CoxA9ANo5?gfug z7I4r`w*alJU}+j}zByaw>Z&=u!6=^%?V$01ud3SV1rtGl4TivXRkJn&?_DDPz%wiQ zwU-c<-@r%xlG9Of<@_4vTPe}`pngr*>Y%-2H0`H;2i@AH|JhGyBJSseq2>Y4lXM~R z(>zokfnJb{1DL36-22rr$Y1HEB%mvb;e{AeA$z_&`0(f>sM~1R0^`DF*>dwi`FV9U z5JkHK@2fL=K!fKvZ>~^6rz^=eq&BGj`Izo)h{IF2KAM-RwWqMW6gkJrE37@ABftFgukxYI?|F6X4(2iEGjd{C@q)Gs zodD^-Lvtn`b{`uWygc<^7YUxHc@FBkk^BCB+0<8;#tXklui>(go5XPBaGLlA`XZc@ehqb%rk^;J&B1o2;GKYYIw zviq@z)w?38xp7Z#@_6|uXSX8X_aBbYI!0#?I4IbW=-iL|^DR}|xV0VB{0j8I#zHxv zikBawh0#ikMB5b?^ERG*yT;(&UqTkz7DB0KR)v3yt zJv(EJkHxM+Jk^08O9_iv#Sg#DKVt#OZvvo~J@l&t<%8MFR(i`)Sv|XxXE)V*u4sYQ z^w1yCiJI-3&OKBQ+bAmcS|vT^lqUJ&ELCO)?K{mUn=M*;$ktGv{jw!}rI$?)U2Q_1 zBSt4OoqRH%vpHWR{*kkBiPPqlI$I@qq|29@zK+*(JYtwW@-`pI38cCC_@sY6^+t_N z?d3P|(NCVvWbxNBQcRUH;CY?C^xTn)TSMsc^_gHop?=PnvJ2T>LZ4hTP$w7d(>_FZ zhXy#oh6%_^kds3JTBq>o6eu5XQs*-?#2a&Y@<&!#Adeh}femd7QaCz*-Y0*hP;lsV zIWF)fK-ndOAN>xx;i+ec?-A(GgdY+ejxK8Q8-2GepzZK~3H;M1Y;yMH&-ykT<%VQ! zCNCpzaVPO5pH22X90$*AC`unJ#_GXY8nysUF7=KJ9>Sma1G(fc;8m61fp&*>=E?Iz ze=6>$aZa2pXfer;y-O?Z{5j^a@db^Zc)HJu7-VQbw=zFFysXd4UMi=&DUzNE28$hv z+iYmZ2X2oW513zKh2M`5>I;85sr8OU<#KZX&mDMv6J5@S12!ThPY5dulbjK&#mTD^@=Nthq`trDzpQ_`kS5$Z7>gh=ww}=ZCo}b!xN!;3Fw+m Date: Fri, 26 Nov 2021 00:14:40 +1300 Subject: [PATCH 13/19] Applied clippy changes to cleanup the code a little. --- src/codecs/webp/huffman.rs | 8 ++++---- src/codecs/webp/lossless.rs | 15 +++++++-------- src/codecs/webp/lossless_transform.rs | 26 +++++++++++--------------- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs index 2458f61ec2..943721d28c 100644 --- a/src/codecs/webp/huffman.rs +++ b/src/codecs/webp/huffman.rs @@ -61,7 +61,7 @@ impl HuffmanTree { } /// Converts code lengths to codes - fn code_lengths_to_codes(code_lengths: &Vec) -> ImageResult>> { + fn code_lengths_to_codes(code_lengths: &[u16]) -> ImageResult>> { let max_code_length = *code_lengths.iter().reduce(|a, b| { if a >= b {a} else {b} @@ -89,11 +89,11 @@ impl HuffmanTree { let mut huff_codes = vec![None; code_lengths.len()]; - for symbol in 0..code_lengths.len() { - let length = usize::from(code_lengths[symbol]); + for (symbol, &length) in code_lengths.iter().enumerate() { + let length = usize::from(length); if length > 0 { huff_codes[symbol] = next_codes[length]; - if let Some(value) = next_codes[usize::from(code_lengths[symbol])].as_mut() { + if let Some(value) = next_codes[length].as_mut() { *value += 1; } } else { diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index e26352b067..1ac80e5a8f 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -312,14 +312,13 @@ impl LosslessDecoder { huffman_bits = self.bit_reader.read_bits::(3)? + 2; huffman_xsize = div_round_up(xsize, 1 << huffman_bits); huffman_ysize = div_round_up(ysize, 1 << huffman_bits); - let huffman_pixels = usize::from(huffman_xsize * huffman_ysize); entropy_image = self.decode_image_stream(huffman_xsize, huffman_ysize, false)?; - for i in 0..huffman_pixels { - let meta_huff_code = (entropy_image[i] >> 8) & 0xffff; + for pixel in entropy_image.iter_mut() { + let meta_huff_code = (*pixel >> 8) & 0xffff; - entropy_image[i] = meta_huff_code; + *pixel = meta_huff_code; if meta_huff_code >= num_huff_groups { num_huff_groups = meta_huff_code + 1; @@ -354,7 +353,7 @@ impl LosslessDecoder { let info = HuffmanInfo { xsize: huffman_xsize, ysize: huffman_ysize, - color_cache: color_cache, + color_cache, image: entropy_image, bits: huffman_bits, mask: huffman_mask, @@ -501,7 +500,7 @@ impl LosslessDecoder { } else if code < 256 + 24 { //backward reference, so go back and use that to add image data let length_symbol = code - 256; - let length = usize::from(Self::get_copy_distance(&mut self.bit_reader, length_symbol)?); + let length = Self::get_copy_distance(&mut self.bit_reader, length_symbol)?; let dist_symbol = tree[DIST].read_symbol(&mut self.bit_reader)?; let dist_code = Self::get_copy_distance(&mut self.bit_reader, dist_symbol)?; @@ -580,7 +579,7 @@ impl LosslessDecoder { /// Gets distance to pixel fn plane_code_to_distance(xsize: u16, plane_code: usize) -> usize { if plane_code > 120 { - return plane_code - 120; + plane_code - 120 } else { let (xoffset, yoffset) = DISTANCE_MAP[plane_code - 1]; @@ -588,7 +587,7 @@ impl LosslessDecoder { if dist < 1 { return 1; } - return dist.try_into().unwrap(); + dist.try_into().unwrap() } } } diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs index f8d2387ba0..69f980828a 100644 --- a/src/codecs/webp/lossless_transform.rs +++ b/src/codecs/webp/lossless_transform.rs @@ -160,24 +160,24 @@ pub(crate) fn add_pixels(a: u32, b: u32) -> u32 { } /// Get left pixel -fn get_left(data: &Vec, x: usize, y: usize, width: usize) -> u32 { +fn get_left(data: &[u32], x: usize, y: usize, width: usize) -> u32 { data[y * width + x - 1] } /// Get top pixel -fn get_top(data: &Vec, x: usize, y: usize, width: usize) -> u32 { +fn get_top(data: &[u32], x: usize, y: usize, width: usize) -> u32 { data[(y - 1) * width + x] } /// Get pixel to top right -fn get_top_right(data: &Vec, x: usize, y: usize, width: usize) -> u32 { +fn get_top_right(data: &[u32], x: usize, y: usize, width: usize) -> u32 { // if x == width - 1 this gets the left most pixel of the current row // as described in the specification data[(y - 1) * width + x + 1] } /// Get pixel to top left -fn get_top_left(data: &Vec, x: usize, y: usize, width: usize) -> u32 { +fn get_top_left(data: &[u32], x: usize, y: usize, width: usize) -> u32 { data[(y - 1) * width + x - 1] } @@ -220,22 +220,20 @@ fn select(left: u32, top: u32, top_left: u32) -> u32 { i32::abs(predict_green - get_byte_i32(top, 1)) + i32::abs(predict_blue - get_byte_i32(top, 0)); if predict_left < predict_top { - return left; + left } else { - return top; + top } } /// Clamp a to [0, 255] fn clamp(a: i32) -> i32 { if a < 0 { - return 0; + 0 + } else if a > 255 { + 255 } else { - if a > 255 { - return 255; - } else { - return a; - } + a } } @@ -333,7 +331,5 @@ fn add_green(argb: u32) -> u32 { let new_red = (red + green) & 0xff; let new_blue = (blue + green) & 0xff; - let new_argb = (argb & 0xff00ff00) | (new_red << 16) | (new_blue); - - new_argb + (argb & 0xff00ff00) | (new_red << 16) | (new_blue) } \ No newline at end of file From 477f5db38a3522fee0c428910d60ee454ae1e5d0 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Fri, 26 Nov 2021 13:14:43 +1300 Subject: [PATCH 14/19] Update src/codecs/webp/huffman.rs Co-authored-by: HeroicKatora --- src/codecs/webp/huffman.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/codecs/webp/huffman.rs b/src/codecs/webp/huffman.rs index 943721d28c..2c2b8a8c0d 100644 --- a/src/codecs/webp/huffman.rs +++ b/src/codecs/webp/huffman.rs @@ -109,10 +109,7 @@ impl HuffmanTree { let mut node_index = 0; let code = usize::from(code); - let mut length = code_length; - - while length > 0 { - length -= 1; + for length in (0..code_length).rev() { if node_index >= self.max_nodes { return Err(DecoderError::HuffmanError.into()); } From 5777361f6a01efa7e32b5000ab3aa5d4442e1358 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Fri, 26 Nov 2021 13:15:01 +1300 Subject: [PATCH 15/19] Update src/codecs/webp/lossless.rs Co-authored-by: HeroicKatora --- src/codecs/webp/lossless.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 1ac80e5a8f..84aa332020 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -166,7 +166,7 @@ impl LosslessDecoder { /// Fills a buffer by converting from argb to rgba pub(crate) fn fill_rgba(&self, buf: &mut [u8]) { - for (index, &argb_val) in self.frame.buf.iter().enumerate() { + for (&argb_val, chunk) in self.frame.buf.iter().zip(buf.chunks_exact_mut(4)) { buf[index * 4] = ((argb_val >> 16) & 0xff).try_into().unwrap(); buf[index * 4 + 1] = ((argb_val >> 8) & 0xff).try_into().unwrap(); buf[index * 4 + 2] = (argb_val & 0xff).try_into().unwrap(); From ced5bd2c5425f08cb599dcb72e4db280c603540c Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Fri, 26 Nov 2021 13:15:09 +1300 Subject: [PATCH 16/19] Update src/codecs/webp/lossless.rs Co-authored-by: HeroicKatora --- src/codecs/webp/lossless.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index 84aa332020..a992fd2eed 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -185,10 +185,11 @@ impl LosslessDecoder { /// xsize and ysize describe the size of the blocks where each block has its own entropy code fn decode_image_stream(&mut self, xsize: u16, ysize: u16, is_argb_img: bool) -> ImageResult> { - let mut trans_xsize = xsize; - if is_argb_img { - trans_xsize = self.read_transforms()?; - } + let trans_xsize = if is_argb_img { + self.read_transforms()? + } else { + xsize + }; let color_cache_bits = self.read_color_cache()?; From 29f233040884ceb70cc3fb1550a31053d32f75ed Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Fri, 26 Nov 2021 13:39:07 +1300 Subject: [PATCH 17/19] Fix converting from argb to rgba. --- src/codecs/webp/lossless.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index a992fd2eed..a96d07a40c 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -167,10 +167,10 @@ impl LosslessDecoder { /// Fills a buffer by converting from argb to rgba pub(crate) fn fill_rgba(&self, buf: &mut [u8]) { for (&argb_val, chunk) in self.frame.buf.iter().zip(buf.chunks_exact_mut(4)) { - buf[index * 4] = ((argb_val >> 16) & 0xff).try_into().unwrap(); - buf[index * 4 + 1] = ((argb_val >> 8) & 0xff).try_into().unwrap(); - buf[index * 4 + 2] = (argb_val & 0xff).try_into().unwrap(); - buf[index * 4 + 3] = ((argb_val >> 24) & 0xff).try_into().unwrap(); + chunk[0] = ((argb_val >> 16) & 0xff).try_into().unwrap(); + chunk[1] = ((argb_val >> 8) & 0xff).try_into().unwrap(); + chunk[2] = (argb_val & 0xff).try_into().unwrap(); + chunk[3] = ((argb_val >> 24) & 0xff).try_into().unwrap(); } } From 67d1f5b305c309f870e58a1774d1256ac5bd3498 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Sun, 28 Nov 2021 16:50:25 +1300 Subject: [PATCH 18/19] Inlining shift into div_round_up. Also stretches the type to avoid possible overflow. --- src/codecs/webp/lossless.rs | 20 +++++++++----------- src/codecs/webp/lossless_transform.rs | 6 +++--- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index a96d07a40c..e50d3ef66d 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -52,8 +52,8 @@ const ALPHABET_SIZE: [u16; HUFFMAN_CODES_PER_META_CODE] = [ ]; #[inline] -pub(crate) fn div_round_up(num: u16, den: u16) -> u16 { - (num + den - 1) / den +pub(crate) fn subsample_size(size: u16, bits: u8) -> u16 { + ((u32::from(size) + (1u32 << bits) - 1) >> bits).try_into().unwrap() } #[derive(Debug, Clone, Copy)] @@ -229,10 +229,9 @@ impl LosslessDecoder { //predictor let size_bits = self.bit_reader.read_bits::(3)? + 2; - let block_size = 1u16 << size_bits; - let block_xsize = div_round_up(xsize, block_size); - let block_ysize = div_round_up(self.frame.height, block_size); + let block_xsize = subsample_size(xsize, size_bits); + let block_ysize = subsample_size(self.frame.height, size_bits); let data = self.decode_image_stream(block_xsize, block_ysize, false)?; @@ -242,10 +241,9 @@ impl LosslessDecoder { //color transform let size_bits = self.bit_reader.read_bits::(3)? + 2; - let block_size = 1u16 << size_bits; - let block_xsize = div_round_up(xsize, block_size); - let block_ysize = div_round_up(self.frame.height, block_size); + let block_xsize = subsample_size(xsize, size_bits); + let block_ysize = subsample_size(self.frame.height, size_bits); let data = self.decode_image_stream(block_xsize, block_ysize, false)?; @@ -270,7 +268,7 @@ impl LosslessDecoder { } else { 0 }; - xsize = div_round_up(xsize, 1 << bits); + xsize = subsample_size(xsize, bits); Self::adjust_color_map(&mut color_map); @@ -311,8 +309,8 @@ impl LosslessDecoder { if read_meta && self.bit_reader.read_bits::(1)? == 1 { //meta huffman codes huffman_bits = self.bit_reader.read_bits::(3)? + 2; - huffman_xsize = div_round_up(xsize, 1 << huffman_bits); - huffman_ysize = div_round_up(ysize, 1 << huffman_bits); + huffman_xsize = subsample_size(xsize, huffman_bits); + huffman_ysize = subsample_size(ysize, huffman_bits); entropy_image = self.decode_image_stream(huffman_xsize, huffman_ysize, false)?; diff --git a/src/codecs/webp/lossless_transform.rs b/src/codecs/webp/lossless_transform.rs index 69f980828a..b3a18487e9 100644 --- a/src/codecs/webp/lossless_transform.rs +++ b/src/codecs/webp/lossless_transform.rs @@ -1,7 +1,7 @@ use std::convert::TryInto; use std::convert::TryFrom; -use super::lossless::div_round_up; +use super::lossless::subsample_size; #[derive(Debug, Clone)] @@ -18,7 +18,7 @@ impl TransformType { match self { TransformType::PredictorTransform { size_bits, predictor_data} => { - let block_xsize = usize::from(div_round_up(width, 1 << size_bits)); + let block_xsize = usize::from(subsample_size(width, *size_bits)); let width = usize::from(width); let height = usize::from(height); @@ -73,7 +73,7 @@ impl TransformType { } }, TransformType::ColorTransform { size_bits, transform_data } => { - let block_xsize = usize::from(div_round_up(width, 1 << size_bits)); + let block_xsize = usize::from(subsample_size(width, *size_bits)); let width = usize::from(width); let height = usize::from(height); From a56d4975638cfd0bf48da965a78c842a8d7ac462 Mon Sep 17 00:00:00 2001 From: Tristan Phease Date: Tue, 30 Nov 2021 20:15:32 +1300 Subject: [PATCH 19/19] Refactored webp decoder to copy frame. --- src/codecs/webp/decoder.rs | 115 ++++++++++++++++++++++-------------- src/codecs/webp/lossless.rs | 51 ++++++++-------- src/codecs/webp/vp8.rs | 45 ++++++-------- 3 files changed, 111 insertions(+), 100 deletions(-) diff --git a/src/codecs/webp/decoder.rs b/src/codecs/webp/decoder.rs index f3555b01cc..ecaee71918 100644 --- a/src/codecs/webp/decoder.rs +++ b/src/codecs/webp/decoder.rs @@ -10,7 +10,10 @@ use crate::image::{ImageDecoder, ImageFormat}; use crate::color; use super::lossless::LosslessDecoder; +use super::lossless::LosslessFrame; use super::vp8::Vp8Decoder; +use super::vp8::Frame as VP8Frame; + /// All errors that can occur when attempting to parse a WEBP container #[derive(Debug, Clone, Copy)] @@ -47,43 +50,44 @@ impl From for ImageError { impl error::Error for DecoderError {} -enum InnerDecoder { - Lossy(Vp8Decoder), - Lossless(LosslessDecoder), +enum Frame { + Lossy(VP8Frame), + Lossless(LosslessFrame), } /// WebP Image format decoder. Currently only supports lossy RGB images or lossless RGBA images. -pub struct WebPDecoder { - inner_decoder: InnerDecoder, +pub struct WebPDecoder { + r: R, + frame: Frame, } impl WebPDecoder { /// Create a new WebPDecoder from the Reader ```r```. /// This function takes ownership of the Reader. - pub fn new(mut r: R) -> ImageResult> { - - let _size = WebPDecoder::read_file_header(&mut r)?; + pub fn new(r: R) -> ImageResult> { - let inner_decoder = WebPDecoder::read_frame(r)?; + let frame = Frame::Lossy(Default::default()); - let decoder = WebPDecoder { - inner_decoder, + let mut decoder = WebPDecoder { + r, + frame, }; + decoder.read_data()?; Ok(decoder) } //reads the 12 bytes of the WebP file header - fn read_file_header(r: &mut R) -> ImageResult { + fn read_riff_header(&mut self) -> ImageResult { let mut riff = [0; 4]; - r.read_exact(&mut riff)?; + self.r.read_exact(&mut riff)?; if &riff != b"RIFF" { return Err(DecoderError::RiffSignatureInvalid(riff).into()); } - let size = r.read_u32::()?; + let size = self.r.read_u32::()?; let mut webp = [0; 4]; - r.read_exact(&mut webp)?; + self.r.read_exact(&mut webp)?; if &webp != b"WEBP" { return Err(DecoderError::WebpSignatureInvalid(webp).into()); } @@ -92,25 +96,27 @@ impl WebPDecoder { } //reads the chunk header, decodes the frame and returns the inner decoder - fn read_frame(mut r: R) -> ImageResult> { + fn read_frame(&mut self) -> ImageResult { loop { let mut chunk = [0; 4]; - r.read_exact(&mut chunk)?; + self.r.read_exact(&mut chunk)?; match &chunk { b"VP8 " => { - let _len = r.read_u32::()?; - let mut vp8_decoder = Vp8Decoder::new(r); - vp8_decoder.decode_frame()?; + let m = read_len_cursor(&mut self.r)?; - return Ok(InnerDecoder::Lossy(vp8_decoder)); + let mut vp8_decoder = Vp8Decoder::new(m); + let frame = vp8_decoder.decode_frame()?; + + return Ok(Frame::Lossy(frame.clone())); } b"VP8L" => { - let mut lossless_decoder = LosslessDecoder::new(r); - - lossless_decoder.decode_frame()?; + let m = read_len_cursor(&mut self.r)?; + + let mut lossless_decoder = LosslessDecoder::new(m); + let frame = lossless_decoder.decode_frame()?; - return Ok(InnerDecoder::Lossless(lossless_decoder)); + return Ok(Frame::Lossless(frame.clone())); } b"ALPH" | b"ANIM" | b"ANMF" => { // Alpha and Animation isn't supported @@ -120,7 +126,7 @@ impl WebPDecoder { ))); } _ => { - let mut len = u64::from(r.read_u32::()?); + let mut len = u64::from(self.r.read_u32::()?); if len % 2 != 0 { // RIFF chunks containing an uneven number of bytes append @@ -130,11 +136,30 @@ impl WebPDecoder { len += 1; } - io::copy(&mut r.by_ref().take(len), &mut io::sink())?; + io::copy(&mut self.r.by_ref().take(len), &mut io::sink())?; } } } } + + fn read_data(&mut self) -> ImageResult<()> { + let _size = self.read_riff_header()?; + + let frame = self.read_frame()?; + + self.frame = frame; + + Ok(()) + } +} + +fn read_len_cursor(r: &mut R) -> ImageResult>> + where R: Read { + let len = r.read_u32::()?; + + let mut framedata = Vec::new(); + r.by_ref().take(len as u64).read_to_end(&mut framedata)?; + Ok(io::Cursor::new(framedata)) } /// Wrapper struct around a `Cursor>` @@ -157,30 +182,30 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { type Reader = WebpReader; fn dimensions(&self) -> (u32, u32) { - match self.inner_decoder { - InnerDecoder::Lossy(ref vp8_decoder) => vp8_decoder.dimensions(), - InnerDecoder::Lossless(ref lossless_decoder) => lossless_decoder.dimensions(), + match &self.frame { + Frame::Lossy(vp8_frame) => (u32::from(vp8_frame.width), u32::from(vp8_frame.height)), + Frame::Lossless(lossless_frame) => (u32::from(lossless_frame.width), u32::from(lossless_frame.height)), } } fn color_type(&self) -> color::ColorType { - match self.inner_decoder { - InnerDecoder::Lossy(_) => color::ColorType::Rgb8, - InnerDecoder::Lossless(_) => color::ColorType::Rgba8, + match &self.frame { + Frame::Lossy(_) => color::ColorType::Rgb8, + Frame::Lossless(_) => color::ColorType::Rgba8, } } fn into_reader(self) -> ImageResult { - match self.inner_decoder { - InnerDecoder::Lossy(ref vp8_decoder) => { - let mut data = vec![0; vp8_decoder.get_buf_size()]; - vp8_decoder.fill_rgb(data.as_mut_slice()); + match &self.frame { + Frame::Lossy(vp8_frame) => { + let mut data = vec![0; vp8_frame.get_buf_size()]; + vp8_frame.fill_rgb(data.as_mut_slice()); Ok(WebpReader(Cursor::new(data), PhantomData)) } - InnerDecoder::Lossless(ref lossless_decoder) => { - let mut data = vec![0; lossless_decoder.get_buf_size()]; - lossless_decoder.fill_rgba(data.as_mut_slice()); + Frame::Lossless(lossless_frame) => { + let mut data = vec![0; lossless_frame.get_buf_size()]; + lossless_frame.fill_rgba(data.as_mut_slice()); Ok(WebpReader(Cursor::new(data), PhantomData)) } } @@ -189,12 +214,12 @@ impl<'a, R: 'a + Read> ImageDecoder<'a> for WebPDecoder { fn read_image(self, buf: &mut [u8]) -> ImageResult<()> { assert_eq!(u64::try_from(buf.len()), Ok(self.total_bytes())); - match self.inner_decoder { - InnerDecoder::Lossy(ref vp8_decoder) => { - vp8_decoder.fill_rgb(buf); + match &self.frame { + Frame::Lossy(vp8_frame) => { + vp8_frame.fill_rgb(buf); } - InnerDecoder::Lossless(ref lossless_decoder) => { - lossless_decoder.fill_rgba(buf); + Frame::Lossless(lossless_frame) => { + lossless_frame.fill_rgba(buf); } } Ok(()) diff --git a/src/codecs/webp/lossless.rs b/src/codecs/webp/lossless.rs index e50d3ef66d..f2d828cf1e 100644 --- a/src/codecs/webp/lossless.rs +++ b/src/codecs/webp/lossless.rs @@ -5,7 +5,7 @@ use std::{convert::TryInto, convert::TryFrom, error, fmt, io::Read, ops::{AddAssign, Shl}}; -use byteorder::{LittleEndian, ReadBytesExt}; +use byteorder::ReadBytesExt; use crate::{ImageError, ImageFormat, ImageResult, error::DecodingError}; @@ -124,14 +124,9 @@ impl LosslessDecoder { } } - /// Gets dimensions of image - pub(crate) fn dimensions(&self) -> (u32, u32) { - (u32::from(self.frame.width), u32::from(self.frame.height)) - } - /// Reads the frame - pub(crate) fn decode_frame(&mut self) -> ImageResult<()> { - let _len = self.r.read_u32::()?; + pub(crate) fn decode_frame(&mut self) -> ImageResult<&LosslessFrame> { + let signature = self.r.read_u8()?; if signature != 0x2f { @@ -161,22 +156,7 @@ impl LosslessDecoder { } self.frame.buf = data; - Ok(()) - } - - /// Fills a buffer by converting from argb to rgba - pub(crate) fn fill_rgba(&self, buf: &mut [u8]) { - for (&argb_val, chunk) in self.frame.buf.iter().zip(buf.chunks_exact_mut(4)) { - chunk[0] = ((argb_val >> 16) & 0xff).try_into().unwrap(); - chunk[1] = ((argb_val >> 8) & 0xff).try_into().unwrap(); - chunk[2] = (argb_val & 0xff).try_into().unwrap(); - chunk[3] = ((argb_val >> 24) & 0xff).try_into().unwrap(); - } - } - - /// Get buffer size from the image - pub(crate) fn get_buf_size(&self) -> usize { - usize::from(self.frame.width) * usize::from(self.frame.height) * 4 + Ok(&self.frame) } /// Reads Image data from the bitstream @@ -680,13 +660,30 @@ impl BitReader { #[derive(Debug, Clone, Default)] -struct LosslessFrame { - width: u16, - height: u16, +pub(crate) struct LosslessFrame { + pub(crate) width: u16, + pub(crate) height: u16, buf: Vec, } +impl LosslessFrame { + /// Fills a buffer by converting from argb to rgba + pub(crate) fn fill_rgba(&self, buf: &mut [u8]) { + for (&argb_val, chunk) in self.buf.iter().zip(buf.chunks_exact_mut(4)) { + chunk[0] = ((argb_val >> 16) & 0xff).try_into().unwrap(); + chunk[1] = ((argb_val >> 8) & 0xff).try_into().unwrap(); + chunk[2] = (argb_val & 0xff).try_into().unwrap(); + chunk[3] = ((argb_val >> 24) & 0xff).try_into().unwrap(); + } + } + + /// Get buffer size from the image + pub(crate) fn get_buf_size(&self) -> usize { + usize::from(self.width) * usize::from(self.height) * 4 + } +} + #[cfg(test)] mod test { diff --git a/src/codecs/webp/vp8.rs b/src/codecs/webp/vp8.rs index f8e08a9e0f..56a6a326c4 100644 --- a/src/codecs/webp/vp8.rs +++ b/src/codecs/webp/vp8.rs @@ -839,34 +839,34 @@ struct MacroBlock { /// A Representation of the last decoded video frame #[derive(Default, Debug, Clone)] -struct Frame { +pub struct Frame { /// The width of the luma plane - width: u16, + pub width: u16, /// The height of the luma plane - height: u16, + pub height: u16, /// The luma plane of the frame - ybuf: Vec, + pub ybuf: Vec, /// The blue plane of the frame - ubuf: Vec, + pub ubuf: Vec, /// The red plane of the frame - vbuf: Vec, + pub vbuf: Vec, /// Indicates whether this frame is a keyframe - keyframe: bool, + pub keyframe: bool, version: u8, /// Indicates whether this frame is intended for display - for_display: bool, + pub for_display: bool, // Section 9.2 /// The pixel type of the frame as defined by Section 9.2 /// of the VP8 Specification - pixel_type: u8, + pub pixel_type: u8, // Section 9.4 and 15 filter_type: bool, //if true uses simple filter // if false uses normal filter @@ -885,7 +885,7 @@ impl Frame { } /// Conversion values from https://docs.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-yuv-formats-for-video-rendering#converting-8-bit-yuv-to-rgb888 - fn fill_rgb(&self, buf: &mut [u8]) { + pub fn fill_rgb(&self, buf: &mut [u8]) { for index in 0..self.ybuf.len() { let y = index / self.width as usize; let x = index % self.width as usize; @@ -905,6 +905,11 @@ impl Frame { buf[rgb_index+2] = b; } } + + /// Gets the buffer size + pub fn get_buf_size(&self) -> usize { + self.ybuf.len() * 3 + } } #[derive(Clone, Copy, Default)] @@ -964,22 +969,6 @@ pub struct Vp8Decoder { } impl Vp8Decoder { - - /// Get dimensions of image - pub fn dimensions(&self) -> (u32, u32) { - (u32::from(self.frame.width), u32::from(self.frame.height)) - } - - /// Fills an rgb buffer with the converted values from the 4:2:0 YUV planes - pub fn fill_rgb(&self, buf: &mut [u8]) { - self.frame.fill_rgb(buf); - } - - /// Gets the buffer size - pub fn get_buf_size(&self) -> usize { - self.frame.ybuf.len() * 3 - } - /// Create a new decoder. /// The reader must present a raw vp8 bitstream to the decoder pub fn new(r: R) -> Vp8Decoder { @@ -2035,7 +2024,7 @@ impl Vp8Decoder { } /// Decodes the current frame - pub fn decode_frame(&mut self) -> ImageResult<()> { + pub fn decode_frame(&mut self) -> ImageResult<&Frame> { self.read_frame_header()?; for mby in 0..self.mbheight as usize { @@ -2077,7 +2066,7 @@ impl Vp8Decoder { } } - Ok(()) + Ok(&self.frame) } }