From 898367f096fef507488438e00caae8c4ea1d0ff4 Mon Sep 17 00:00:00 2001 From: PgBiel <9021226+PgBiel@users.noreply.github.com> Date: Wed, 6 Mar 2024 05:41:16 -0300 Subject: [PATCH] Repeatable Table Headers [More Flexible Tables Pt.5a] (#3545) --- crates/typst/src/layout/grid/layout.rs | 1035 ++++++++++++++++------ crates/typst/src/layout/grid/lines.rs | 103 +-- crates/typst/src/layout/grid/mod.rs | 187 ++-- crates/typst/src/layout/grid/rowspans.rs | 450 +++++++--- crates/typst/src/model/bibliography.rs | 20 +- crates/typst/src/model/table.rs | 194 ++-- tests/ref/layout/grid-headers-1.png | Bin 0 -> 126196 bytes tests/ref/layout/grid-headers-2.png | Bin 0 -> 113070 bytes tests/ref/layout/grid-headers-3.png | Bin 0 -> 102354 bytes tests/ref/layout/grid-headers-4.png | Bin 0 -> 36452 bytes tests/ref/layout/grid-rowspan-basic.png | Bin 94597 -> 98653 bytes tests/ref/layout/grid-rtl.png | Bin 72464 -> 97027 bytes tests/typ/layout/grid-headers-1.typ | 162 ++++ tests/typ/layout/grid-headers-2.typ | 52 ++ tests/typ/layout/grid-headers-3.typ | 35 + tests/typ/layout/grid-headers-4.typ | 58 ++ tests/typ/layout/grid-rowspan-basic.typ | 21 + tests/typ/layout/grid-rtl.typ | 15 + 18 files changed, 1737 insertions(+), 595 deletions(-) create mode 100644 tests/ref/layout/grid-headers-1.png create mode 100644 tests/ref/layout/grid-headers-2.png create mode 100644 tests/ref/layout/grid-headers-3.png create mode 100644 tests/ref/layout/grid-headers-4.png create mode 100644 tests/typ/layout/grid-headers-1.typ create mode 100644 tests/typ/layout/grid-headers-2.typ create mode 100644 tests/typ/layout/grid-headers-3.typ create mode 100644 tests/typ/layout/grid-headers-4.typ diff --git a/crates/typst/src/layout/grid/layout.rs b/crates/typst/src/layout/grid/layout.rs index a27e42697..c18a50351 100644 --- a/crates/typst/src/layout/grid/layout.rs +++ b/crates/typst/src/layout/grid/layout.rs @@ -242,9 +242,15 @@ impl Entry { } } +/// A repeatable grid header. Starts at the first row. +pub(super) struct Header { + /// The index after the last row included in this header. + pub(super) end: usize, +} + /// A grid item, possibly affected by automatic cell positioning. Can be either /// a line or a cell. -pub enum GridItem { +pub enum ResolvableGridItem { /// A horizontal line in the grid. HLine { /// The row above which the horizontal line is drawn. @@ -275,6 +281,12 @@ pub enum GridItem { Cell(T), } +/// Any grid child, which can be either a header or an item. +pub enum ResolvableGridChild { + Header { repeat: bool, span: Span, items: I }, + Item(ResolvableGridItem), +} + /// Used for cell-like elements which are aware of their final properties in /// the table, and may have property overrides. pub trait ResolvableCell { @@ -327,6 +339,8 @@ pub struct CellGrid { /// Gutter rows are not included. /// Contains up to 'rows_without_gutter.len() + 1' vectors of lines. pub(super) hlines: Vec>, + /// The repeatable header of this grid. + pub(super) header: Option
, /// Whether this grid has gutters. pub(super) has_gutter: bool, } @@ -339,7 +353,7 @@ impl CellGrid { cells: impl IntoIterator, ) -> Self { let entries = cells.into_iter().map(Entry::Cell).collect(); - Self::new_internal(tracks, gutter, vec![], vec![], entries) + Self::new_internal(tracks, gutter, vec![], vec![], None, entries) } /// Resolves and positions all cells in the grid before creating it. @@ -349,10 +363,10 @@ impl CellGrid { /// must implement Default in order to fill positions in the grid which /// weren't explicitly specified by the user with empty cells. #[allow(clippy::too_many_arguments)] - pub fn resolve( + pub fn resolve( tracks: Axes<&[Sizing]>, gutter: Axes<&[Sizing]>, - items: I, + children: C, fill: &Celled>, align: &Celled>, inset: &Celled>>>, @@ -363,8 +377,9 @@ impl CellGrid { ) -> SourceResult where T: ResolvableCell + Default, - I: IntoIterator>, - I::IntoIter: ExactSizeIterator, + I: Iterator>, + C: IntoIterator>, + C::IntoIter: ExactSizeIterator, { // Number of content columns: Always at least one. let c = tracks.x.len().max(1); @@ -380,6 +395,9 @@ impl CellGrid { let mut pending_vlines: Vec<(Span, Line)> = vec![]; let has_gutter = gutter.any(|tracks| !tracks.is_empty()); + let mut header: Option
= None; + let mut repeat_header = false; + // Resolve the breakability of a cell, based on whether or not it spans // an auto row. let resolve_breakable = |y, rowspan| { @@ -411,213 +429,361 @@ impl CellGrid { let mut auto_index: usize = 0; // We have to rebuild the grid to account for arbitrary positions. - // Create at least 'items.len()' positions, since there could be at - // least 'items.len()' cells (if no explicit lines were specified), + // Create at least 'children.len()' positions, since there could be at + // least 'children.len()' cells (if no explicit lines were specified), // even though some of them might be placed in arbitrary positions and // thus cause the grid to expand. // Additionally, make sure we allocate up to the next multiple of 'c', // since each row will have 'c' cells, even if the last few cells // weren't explicitly specified by the user. // We apply '% c' twice so that the amount of cells potentially missing - // is zero when 'items.len()' is already a multiple of 'c' (thus - // 'items.len() % c' would be zero). - let items = items.into_iter(); - let Some(item_count) = items.len().checked_add((c - items.len() % c) % c) else { + // is zero when 'children.len()' is already a multiple of 'c' (thus + // 'children.len() % c' would be zero). + let children = children.into_iter(); + let Some(child_count) = children.len().checked_add((c - children.len() % c) % c) + else { bail!(span, "too many cells or lines were given") }; - let mut resolved_cells: Vec> = Vec::with_capacity(item_count); - for item in items { - let cell = match item { - GridItem::HLine { y, start, end, stroke, span, position } => { - let y = y.unwrap_or_else(|| { - // When no 'y' is specified for the hline, we place it - // under the latest automatically positioned cell. - // The current value of the auto index is always the - // index of the latest automatically positioned cell - // placed plus one (that's what we do in - // 'resolve_cell_position'), so we subtract 1 to get - // that cell's index, and place the hline below its - // row. The exception is when the auto_index is 0, - // meaning no automatically positioned cell was placed - // yet. In that case, we place the hline at the top of - // the table. - auto_index - .checked_sub(1) - .map_or(0, |last_auto_index| last_auto_index / c + 1) - }); - if end.is_some_and(|end| end.get() < start) { - bail!(span, "line cannot end before it starts"); + let mut resolved_cells: Vec> = Vec::with_capacity(child_count); + for child in children { + let mut is_header = false; + let mut header_start = usize::MAX; + let mut header_end = 0; + let mut header_span = Span::detached(); + let mut min_auto_index = 0; + + let (header_items, simple_item) = match child { + ResolvableGridChild::Header { repeat, span, items, .. } => { + if header.is_some() { + bail!(span, "cannot have more than one header"); } - let line = Line { index: y, start, end, stroke, position }; - // Since the amount of rows is dynamic, delay placing - // hlines until after all cells were placed so we can - // properly verify if they are valid. Note that we can't - // place hlines even if we already know they would be in a - // valid row, since it's possible that we pushed pending - // hlines in the same row as this one in previous - // iterations, and we need to ensure that hlines from - // previous iterations are pushed to the final vector of - // hlines first - the order of hlines must be kept, as this - // matters when determining which one "wins" in case of - // conflict. Pushing the current hline before we push - // pending hlines later would change their order! - pending_hlines.push((span, line)); - continue; + is_header = true; + header_span = span; + repeat_header = repeat; + + // If any cell in the header is automatically positioned, + // have it skip to the next row. This is to avoid having a + // header after a partially filled row just add cells to + // that row instead of starting a new one. + // FIXME: Revise this approach when headers can start from + // arbitrary rows. + min_auto_index = auto_index.next_multiple_of(c); + + (Some(items), None) } - GridItem::VLine { x, start, end, stroke, span, position } => { - let x = x.unwrap_or_else(|| { - // When no 'x' is specified for the vline, we place it - // after the latest automatically positioned cell. - // The current value of the auto index is always the - // index of the latest automatically positioned cell - // placed plus one (that's what we do in - // 'resolve_cell_position'), so we subtract 1 to get - // that cell's index, and place the vline after its - // column. The exception is when the auto_index is 0, - // meaning no automatically positioned cell was placed - // yet. In that case, we place the vline to the left of - // the table. - auto_index - .checked_sub(1) - .map_or(0, |last_auto_index| last_auto_index % c + 1) - }); - if end.is_some_and(|end| end.get() < start) { - bail!(span, "line cannot end before it starts"); - } - let line = Line { index: x, start, end, stroke, position }; - - // For consistency with hlines, we only push vlines to the - // final vector of vlines after processing every cell. - pending_vlines.push((span, line)); - continue; - } - GridItem::Cell(cell) => cell, + ResolvableGridChild::Item(item) => (None, Some(item)), }; - let cell_span = cell.span(); - // Let's calculate the cell's final position based on its - // requested position. - let resolved_index = { - let cell_x = cell.x(styles); - let cell_y = cell.y(styles); - resolve_cell_position(cell_x, cell_y, &resolved_cells, &mut auto_index, c) - .at(cell_span)? - }; - let x = resolved_index % c; - let y = resolved_index / c; - let colspan = cell.colspan(styles).get(); - let rowspan = cell.rowspan(styles).get(); + let items = header_items.into_iter().flatten().chain(simple_item.into_iter()); + for item in items { + let cell = match item { + ResolvableGridItem::HLine { + y, + start, + end, + stroke, + span, + position, + } => { + let y = y.unwrap_or_else(|| { + // When no 'y' is specified for the hline, we place + // it under the latest automatically positioned + // cell. + // The current value of the auto index is always + // the index of the latest automatically positioned + // cell placed plus one (that's what we do in + // 'resolve_cell_position'), so we subtract 1 to + // get that cell's index, and place the hline below + // its row. The exception is when the auto_index is + // 0, meaning no automatically positioned cell was + // placed yet. In that case, we place the hline at + // the top of the table. + // + // Exceptionally, the hline will be placed before + // the minimum auto index if the current auto index + // from previous iterations is smaller than the + // minimum it should have for the current grid + // child. Effectively, this means that a hline at + // the start of a header will always appear above + // that header's first row. + auto_index + .max(min_auto_index) + .checked_sub(1) + .map_or(0, |last_auto_index| last_auto_index / c + 1) + }); + if end.is_some_and(|end| end.get() < start) { + bail!(span, "line cannot end before it starts"); + } + let line = Line { index: y, start, end, stroke, position }; - if colspan > c - x { - bail!( - cell_span, - "cell's colspan would cause it to exceed the available column(s)"; - hint: "try placing the cell in another position or reducing its colspan" - ) - } - - let Some(largest_index) = c - .checked_mul(rowspan - 1) - .and_then(|full_rowspan_offset| { - resolved_index.checked_add(full_rowspan_offset) - }) - .and_then(|last_row_pos| last_row_pos.checked_add(colspan - 1)) - else { - bail!( - cell_span, - "cell would span an exceedingly large position"; - hint: "try reducing the cell's rowspan or colspan" - ) - }; - - // Let's resolve the cell so it can determine its own fields - // based on its final position. - let cell = cell.resolve_cell( - x, - y, - &fill.resolve(engine, styles, x, y)?, - align.resolve(engine, styles, x, y)?, - inset.resolve(engine, styles, x, y)?, - stroke.resolve(engine, styles, x, y)?, - resolve_breakable(y, rowspan), - styles, - ); - - if largest_index >= resolved_cells.len() { - // Ensure the length of the vector of resolved cells is always - // a multiple of 'c' by pushing full rows every time. Here, we - // add enough absent positions (later converted to empty cells) - // to ensure the last row in the new vector length is - // completely filled. This is necessary so that those - // positions, even if not explicitly used at the end, are - // eventually susceptible to show rules and receive grid - // styling, as they will be resolved as empty cells in a second - // loop below. - let Some(new_len) = largest_index - .checked_add(1) - .and_then(|new_len| new_len.checked_add((c - new_len % c) % c)) - else { - bail!(cell_span, "cell position too large") - }; - - // Here, the cell needs to be placed in a position which - // doesn't exist yet in the grid (out of bounds). We will add - // enough absent positions for this to be possible. They must - // be absent as no cells actually occupy them (they can be - // overridden later); however, if no cells occupy them as we - // finish building the grid, then such positions will be - // replaced by empty cells. - resolved_cells.resize(new_len, None); - } - - // The vector is large enough to contain the cell, so we can just - // index it directly to access the position it will be placed in. - // However, we still need to ensure we won't try to place a cell - // where there already is one. - let slot = &mut resolved_cells[resolved_index]; - if slot.is_some() { - bail!( - cell_span, - "attempted to place a second cell at column {x}, row {y}"; - hint: "try specifying your cells in a different order" - ); - } - - *slot = Some(Entry::Cell(cell)); - - // Now, if the cell spans more than one row or column, we fill the - // spanned positions in the grid with Entry::Merged pointing to the - // original cell as its parent. - for rowspan_offset in 0..rowspan { - let spanned_y = y + rowspan_offset; - let first_row_index = resolved_index + c * rowspan_offset; - for (colspan_offset, slot) in - resolved_cells[first_row_index..][..colspan].iter_mut().enumerate() - { - let spanned_x = x + colspan_offset; - if spanned_x == x && spanned_y == y { - // This is the parent cell. + // Since the amount of rows is dynamic, delay placing + // hlines until after all cells were placed so we can + // properly verify if they are valid. Note that we + // can't place hlines even if we already know they + // would be in a valid row, since it's possible that we + // pushed pending hlines in the same row as this one in + // previous iterations, and we need to ensure that + // hlines from previous iterations are pushed to the + // final vector of hlines first - the order of hlines + // must be kept, as this matters when determining which + // one "wins" in case of conflict. Pushing the current + // hline before we push pending hlines later would + // change their order! + pending_hlines.push((span, line)); continue; } - if slot.is_some() { - bail!( - cell_span, - "cell would span a previously placed cell at column {spanned_x}, row {spanned_y}"; - hint: "try specifying your cells in a different order or reducing the cell's rowspan or colspan" - ) + ResolvableGridItem::VLine { + x, + start, + end, + stroke, + span, + position, + } => { + let x = x.unwrap_or_else(|| { + // When no 'x' is specified for the vline, we place + // it after the latest automatically positioned + // cell. + // The current value of the auto index is always + // the index of the latest automatically positioned + // cell placed plus one (that's what we do in + // 'resolve_cell_position'), so we subtract 1 to + // get that cell's index, and place the vline after + // its column. The exception is when the auto_index + // is 0, meaning no automatically positioned cell + // was placed yet. In that case, we place the vline + // to the left of the table. + // + // Exceptionally, a vline is also placed to the + // left of the table if the current auto index from + // past iterations is smaller than the minimum auto + // index. For example, this means that a vline at + // the beginning of a header will be placed to its + // left rather than after the previous + // automatically positioned cell. + auto_index + .checked_sub(1) + .filter(|last_auto_index| { + last_auto_index >= &min_auto_index + }) + .map_or(0, |last_auto_index| last_auto_index % c + 1) + }); + if end.is_some_and(|end| end.get() < start) { + bail!(span, "line cannot end before it starts"); + } + let line = Line { index: x, start, end, stroke, position }; + + // For consistency with hlines, we only push vlines to + // the final vector of vlines after processing every + // cell. + pending_vlines.push((span, line)); + continue; } - *slot = Some(Entry::Merged { parent: resolved_index }); + ResolvableGridItem::Cell(cell) => cell, + }; + let cell_span = cell.span(); + // Let's calculate the cell's final position based on its + // requested position. + let resolved_index = { + let cell_x = cell.x(styles); + let cell_y = cell.y(styles); + resolve_cell_position( + cell_x, + cell_y, + &resolved_cells, + &mut auto_index, + min_auto_index, + c, + ) + .at(cell_span)? + }; + let x = resolved_index % c; + let y = resolved_index / c; + let colspan = cell.colspan(styles).get(); + let rowspan = cell.rowspan(styles).get(); + + if colspan > c - x { + bail!( + cell_span, + "cell's colspan would cause it to exceed the available column(s)"; + hint: "try placing the cell in another position or reducing its colspan" + ) } + + let Some(largest_index) = c + .checked_mul(rowspan - 1) + .and_then(|full_rowspan_offset| { + resolved_index.checked_add(full_rowspan_offset) + }) + .and_then(|last_row_pos| last_row_pos.checked_add(colspan - 1)) + else { + bail!( + cell_span, + "cell would span an exceedingly large position"; + hint: "try reducing the cell's rowspan or colspan" + ) + }; + + // Let's resolve the cell so it can determine its own fields + // based on its final position. + let cell = cell.resolve_cell( + x, + y, + &fill.resolve(engine, styles, x, y)?, + align.resolve(engine, styles, x, y)?, + inset.resolve(engine, styles, x, y)?, + stroke.resolve(engine, styles, x, y)?, + resolve_breakable(y, rowspan), + styles, + ); + + if largest_index >= resolved_cells.len() { + // Ensure the length of the vector of resolved cells is + // always a multiple of 'c' by pushing full rows every + // time. Here, we add enough absent positions (later + // converted to empty cells) to ensure the last row in the + // new vector length is completely filled. This is + // necessary so that those positions, even if not + // explicitly used at the end, are eventually susceptible + // to show rules and receive grid styling, as they will be + // resolved as empty cells in a second loop below. + let Some(new_len) = largest_index + .checked_add(1) + .and_then(|new_len| new_len.checked_add((c - new_len % c) % c)) + else { + bail!(cell_span, "cell position too large") + }; + + // Here, the cell needs to be placed in a position which + // doesn't exist yet in the grid (out of bounds). We will + // add enough absent positions for this to be possible. + // They must be absent as no cells actually occupy them + // (they can be overridden later); however, if no cells + // occupy them as we finish building the grid, then such + // positions will be replaced by empty cells. + resolved_cells.resize(new_len, None); + } + + // The vector is large enough to contain the cell, so we can + // just index it directly to access the position it will be + // placed in. However, we still need to ensure we won't try to + // place a cell where there already is one. + let slot = &mut resolved_cells[resolved_index]; + if slot.is_some() { + bail!( + cell_span, + "attempted to place a second cell at column {x}, row {y}"; + hint: "try specifying your cells in a different order" + ); + } + + *slot = Some(Entry::Cell(cell)); + + // Now, if the cell spans more than one row or column, we fill + // the spanned positions in the grid with Entry::Merged + // pointing to the original cell as its parent. + for rowspan_offset in 0..rowspan { + let spanned_y = y + rowspan_offset; + let first_row_index = resolved_index + c * rowspan_offset; + for (colspan_offset, slot) in resolved_cells[first_row_index..] + [..colspan] + .iter_mut() + .enumerate() + { + let spanned_x = x + colspan_offset; + if spanned_x == x && spanned_y == y { + // This is the parent cell. + continue; + } + if slot.is_some() { + bail!( + cell_span, + "cell would span a previously placed cell at column {spanned_x}, row {spanned_y}"; + hint: "try specifying your cells in a different order or reducing the cell's rowspan or colspan" + ) + } + *slot = Some(Entry::Merged { parent: resolved_index }); + } + } + + if is_header { + // Ensure each cell in a header is fully contained within + // the header. + header_start = header_start.min(y); + header_end = header_end.max(y + rowspan); + } + } + + if is_header { + if header_start == usize::MAX { + // Empty header: consider the header to be one row after + // the latest auto index. + header_start = auto_index.next_multiple_of(c) / c; + header_end = header_start + 1; + } + + if header_start != 0 { + bail!( + header_span, + "header must start at the first row"; + hint: "remove any rows before the header" + ); + } + + header = Some(Header { + // Later on, we have to correct this number in case there + // is gutter. But only once all cells have been analyzed + // and the header has fully expanded in the fixup loop + // below. + end: header_end, + }); + + // Next automatically positioned cell goes under this header. + // FIXME: Consider only doing this if the header has any fully + // automatically positioned cells. Otherwise, + // `resolve_cell_position` should be smart enough to skip + // upcoming headers. + // Additionally, consider that cells with just an 'x' override + // could end up going too far back and making previous + // non-header rows into header rows (maybe they should be + // placed at the first row that is fully empty or something). + // Nothing we can do when both 'x' and 'y' were overridden, of + // course. + // None of the above are concerns for now, as headers must + // start at the first row. + auto_index = auto_index.max(c * header_end); } } - // Replace absent entries by resolved empty cells, and produce a vector - // of 'Entry' from 'Option' (final step). + // Fixup phase (final step in cell grid generation): + // 1. Replace absent entries by resolved empty cells, and produce a + // vector of 'Entry' from 'Option'. + // 2. If any cells were added to the header's rows after the header's + // creation, ensure the header expands enough to accommodate them + // across all of their spanned rows. let resolved_cells = resolved_cells .into_iter() .enumerate() .map(|(i, cell)| { if let Some(cell) = cell { + if let Some((parent_cell, header)) = + cell.as_cell().zip(header.as_mut()) + { + let y = i / c; + if y < header.end { + // Ensure the header expands enough such that all + // cells inside it, even those added later, are + // fully contained within the header. + // FIXME: check if start < y < end when start can + // be != 0. + // FIXME: when start can be != 0, decide what + // happens when a cell after the header placed + // above it tries to span the header (either error + // or expand upwards). + header.end = header.end.max(y + parent_cell.rowspan.get()); + } + } + Ok(cell) } else { let x = i % c; @@ -722,7 +888,36 @@ impl CellGrid { vlines[x].push(line); } - Ok(Self::new_internal(tracks, gutter, vlines, hlines, resolved_cells)) + // No point in storing the header if it shouldn't be repeated. + let header = header.filter(|_| repeat_header).map(|mut header| { + // Repeat the gutter below a header (hence why we don't + // subtract 1 from the gutter case). + // Don't do this if there are no rows under the header. + if has_gutter { + // - 'header.end' is always 'last y + 1'. The header stops + // before that row. + // - Therefore, '2 * header.end' will be 2 * (last y + 1), + // which is the adjusted index of the row before which the + // header stops, meaning it will still stop right before it + // even with gutter thanks to the multiplication below. + // - This means that it will span all rows up to + // '2 * (last y + 1) - 1 = 2 * last y + 1', which equates to + // the index of the gutter row right below the header, which is + // what we want (that gutter spacing should be repeated across + // pages to maintain uniformity). + header.end *= 2; + + // If the header occupies the entire grid, ensure we don't + // include an extra gutter row when it doesn't exist, since + // the last row of the header is at the very bottom, therefore + // '2 * last y + 1' is not a valid index. + let row_amount = (2 * row_amount).saturating_sub(1); + header.end = header.end.min(row_amount); + } + header + }); + + Ok(Self::new_internal(tracks, gutter, vlines, hlines, header, resolved_cells)) } /// Generates the cell grid, given the tracks and resolved entries. @@ -731,6 +926,7 @@ impl CellGrid { gutter: Axes<&[Sizing]>, vlines: Vec>, hlines: Vec>, + header: Option
, entries: Vec, ) -> Self { let mut cols = vec![]; @@ -777,7 +973,15 @@ impl CellGrid { rows.pop(); } - Self { cols, rows, entries, vlines, hlines, has_gutter } + Self { + cols, + rows, + entries, + vlines, + hlines, + header, + has_gutter, + } } /// Get the grid entry in column `x` and row `y`. @@ -904,11 +1108,18 @@ impl CellGrid { /// positions, the `auto_index` counter (determines the position of the next /// `(auto, auto)` cell) and the amount of columns in the grid, returns the /// final index of this cell in the vector of resolved cells. +/// +/// The `min_auto_index` parameter is used to bump the auto index to that value +/// if it is currently smaller than it and a cell requests fully automatic +/// positioning. Useful with headers: if a cell in a header has automatic +/// positioning, it should start at the header's first row, and not at the end +/// of the previous row. fn resolve_cell_position( cell_x: Smart, cell_y: Smart, resolved_cells: &[Option], auto_index: &mut usize, + min_auto_index: usize, columns: usize, ) -> HintedStrResult { // Translates a (x, y) position to the equivalent index in the final cell vector. @@ -924,7 +1135,7 @@ fn resolve_cell_position( (Smart::Auto, Smart::Auto) => { // Let's find the first available position starting from the // automatic position counter, searching in row-major order. - let mut resolved_index = *auto_index; + let mut resolved_index = min_auto_index.max(*auto_index); while let Some(Some(_)) = resolved_cells.get(resolved_index) { // Skip any non-absent cell positions (`Some(None)`) to // determine where this cell will be placed. An out of bounds @@ -1021,6 +1232,13 @@ pub struct GridLayouter<'a> { pub(super) finished: Vec, /// Whether this is an RTL grid. pub(super) is_rtl: bool, + /// The simulated header height. + /// This field is reset in `layout_header` and properly updated by + /// `layout_auto_row` and `layout_relative_row`, and should not be read + /// before all header rows are fully laid out. It is usually fine because + /// header rows themselves are unbreakable, and unbreakable rows do not + /// need to read this field at all. + pub(super) header_height: Abs, /// The span of the grid element. pub(super) span: Span, } @@ -1046,6 +1264,16 @@ pub(super) enum Row { Fr(Fr, usize), } +impl Row { + /// Returns the `y` index of this row. + fn index(&self) -> usize { + match self { + Self::Frame(_, y, _) => *y, + Self::Fr(_, y) => *y, + } + } +} + impl<'a> GridLayouter<'a> { /// Create a new grid layouter. /// @@ -1074,6 +1302,7 @@ impl<'a> GridLayouter<'a> { initial: regions.size, finished: vec![], is_rtl: TextElem::dir_in(styles) == Dir::RTL, + header_height: Abs::zero(), span, } } @@ -1083,31 +1312,17 @@ impl<'a> GridLayouter<'a> { self.measure_columns(engine)?; for y in 0..self.grid.rows.len() { - // Skip to next region if current one is full, but only for content - // rows, not for gutter rows, and only if we aren't laying out an - // unbreakable group of rows. - let is_content_row = !self.grid.is_gutter_track(y); - if self.unbreakable_rows_left == 0 && self.regions.is_full() && is_content_row - { - self.finish_region(engine)?; - } - - if is_content_row { - // Gutter rows have no rowspans or possibly unbreakable cells. - self.check_for_rowspans(y); - self.check_for_unbreakable_rows(y, engine)?; - } - - // Don't layout gutter rows at the top of a region. - if is_content_row || !self.lrows.is_empty() { - match self.grid.rows[y] { - Sizing::Auto => self.layout_auto_row(engine, y)?, - Sizing::Rel(v) => self.layout_relative_row(engine, v, y)?, - Sizing::Fr(v) => self.lrows.push(Row::Fr(v, y)), + if let Some(header) = &self.grid.header { + if y < header.end { + if y == 0 { + self.layout_header(header, engine)?; + } + // Skip header rows during normal layout. + continue; } } - self.unbreakable_rows_left = self.unbreakable_rows_left.saturating_sub(1); + self.layout_row(y, engine)?; } self.finish_region(engine)?; @@ -1130,6 +1345,36 @@ impl<'a> GridLayouter<'a> { self.render_fills_strokes() } + /// Layout the given row. + fn layout_row(&mut self, y: usize, engine: &mut Engine) -> SourceResult<()> { + // Skip to next region if current one is full, but only for content + // rows, not for gutter rows, and only if we aren't laying out an + // unbreakable group of rows. + let is_content_row = !self.grid.is_gutter_track(y); + if self.unbreakable_rows_left == 0 && self.regions.is_full() && is_content_row { + self.finish_region(engine)?; + } + + if is_content_row { + // Gutter rows have no rowspans or possibly unbreakable cells. + self.check_for_rowspans(y); + self.check_for_unbreakable_rows(y, engine)?; + } + + // Don't layout gutter rows at the top of a region. + if is_content_row || !self.lrows.is_empty() { + match self.grid.rows[y] { + Sizing::Auto => self.layout_auto_row(engine, y)?, + Sizing::Rel(v) => self.layout_relative_row(engine, v, y)?, + Sizing::Fr(v) => self.lrows.push(Row::Fr(v, y)), + } + } + + self.unbreakable_rows_left = self.unbreakable_rows_left.saturating_sub(1); + + Ok(()) + } + /// Add lines and backgrounds. fn render_fills_strokes(mut self) -> SourceResult { let mut finished = std::mem::take(&mut self.finished); @@ -1150,11 +1395,34 @@ impl<'a> GridLayouter<'a> { // in quadratic complexity. let mut lines = vec![]; + // Which line position to look for in the list of lines for a + // track, such that placing lines with those positions will + // correspond to placing them before the given track index. + // + // If the index represents a gutter track, this means the list of + // lines will actually correspond to the list of lines in the + // previous index, so we must look for lines positioned after the + // previous index, and not before, to determine which lines should + // be placed before gutter. + // + // Note that the maximum index is always an odd number when + // there's gutter, so we must check for it to ensure we don't give + // it the same treatment as a line before a gutter track. + let expected_line_position = |index, is_max_index: bool| { + if self.grid.is_gutter_track(index) && !is_max_index { + LinePosition::After + } else { + LinePosition::Before + } + }; + // Render vertical lines. // Render them first so horizontal lines have priority later. for (x, dx) in points(self.rcols.iter().copied()).enumerate() { let dx = if self.is_rtl { self.width - dx } else { dx }; let is_end_border = x == self.grid.cols.len(); + let expected_vline_position = expected_line_position(x, is_end_border); + let vlines_at_column = self .grid .vlines @@ -1183,8 +1451,10 @@ impl<'a> GridLayouter<'a> { // lines before it, not after). x / 2 }) - .map(Vec::as_slice) - .unwrap_or(&[]); + .into_iter() + .flatten() + .filter(|line| line.position == expected_vline_position); + let tracks = rows.iter().map(|row| (row.y, row.height)); // Determine all different line segments we have to draw in @@ -1198,7 +1468,6 @@ impl<'a> GridLayouter<'a> { tracks, x, vlines_at_column, - is_end_border, vline_stroke_at_row, ) .map(|segment| { @@ -1234,35 +1503,124 @@ impl<'a> GridLayouter<'a> { .map(|piece| piece.y) .chain(std::iter::once(self.grid.rows.len())); - let mut prev_y = None; - for (y, dy) in hline_indices.zip(hline_offsets) { - let is_bottom_border = y == self.grid.rows.len(); - let hlines_at_row = self - .grid + // Converts a row to the corresponding index in the vector of + // hlines. + let hline_index_of_row = |y: usize| { + if !self.grid.has_gutter { + y + } else if y == self.grid.rows.len() { + y / 2 + 1 + } else { + // Check the vlines loop for an explanation regarding + // these index operations. + y / 2 + } + }; + + let get_hlines_at = |y| { + self.grid .hlines - .get(if !self.grid.has_gutter { - y - } else if is_bottom_border { - y / 2 + 1 - } else { - // Check the vlines loop for an explanation regarding - // these index operations. - y / 2 - }) + .get(hline_index_of_row(y)) .map(Vec::as_slice) .unwrap_or(&[]) + }; + + let mut prev_y = None; + for (y, dy) in hline_indices.zip(hline_offsets) { + // Position of lines below the row index in the previous iteration. + let expected_prev_line_position = prev_y + .map(|prev_y| { + expected_line_position( + prev_y + 1, + prev_y + 1 == self.grid.rows.len(), + ) + }) + .unwrap_or(LinePosition::Before); + + // If some grid rows were omitted between the previous resolved + // row and the current one, we ensure lines below the previous + // row don't "disappear" and are considered, albeit with less + // priority. However, don't do this when we're below a header, + // as it must have more priority instead of less, so it is + // chained later instead of before. + let prev_lines = prev_y + .filter(|prev_y| { + prev_y + 1 != y + && !self + .grid + .header + .as_ref() + .is_some_and(|header| prev_y + 1 == header.end) + }) + .map(|prev_y| get_hlines_at(prev_y + 1)) + .unwrap_or(&[]); + + let expected_hline_position = + expected_line_position(y, y == self.grid.rows.len()); + + let hlines_at_y = get_hlines_at(y) .iter() - .chain(if prev_y.is_none() && y != 0 { - // For lines at the top of the region, give priority to - // the lines at the top border. - self.grid.hlines.first().map(Vec::as_slice).unwrap_or(&[]) + .filter(|line| line.position == expected_hline_position); + + let top_border_hlines = if prev_y.is_none() && y != 0 { + // For lines at the top of the region, give priority to + // the lines at the top border. + get_hlines_at(0) + } else { + &[] + }; + + // The header lines, if any, will correspond to the lines under + // the previous row, so they function similarly to 'prev_lines'. + let expected_header_line_position = expected_prev_line_position; + let header_hlines = if let Some((header, prev_y)) = + self.grid.header.as_ref().zip(prev_y) + { + if prev_y + 1 != y + && prev_y + 1 == header.end + && !self.grid.has_gutter + { + // For lines below a header, give priority to the + // lines originally below the header rather than + // the lines of what's below the repeated header. + // However, no need to do that when we're laying + // out the header for the first time, since the + // lines being normally laid out then will be + // precisely the lines below the header. + // + // Additionally, we don't append header lines when + // gutter is enabled, since, in that case, there will + // be a gutter row between header and content, so no + // lines should overlap. + get_hlines_at(header.end) } else { - // When not at the top of the region, no border lines - // to consider. - // When at the top of the region but at the first row, - // its own lines are already the border lines. &[] - }); + } + } else { + &[] + }; + + // The effective hlines to be considered at this row index are + // chained in order of increasing priority: + // 1. Lines from the row right above us, if needed; + // 2. Lines from the current row (usually, only those are + // present); + // 3. Lines from the top border (above the top cells, hence + // 'before' position only); + // 4. Lines from the header above us, if present. + let hlines_at_row = + prev_lines + .iter() + .filter(|line| line.position == expected_prev_line_position) + .chain(hlines_at_y) + .chain( + top_border_hlines + .iter() + .filter(|line| line.position == LinePosition::Before), + ) + .chain(header_hlines.iter().filter(|line| { + line.position == expected_header_line_position + })); let tracks = self.rcols.iter().copied().enumerate(); @@ -1287,7 +1645,6 @@ impl<'a> GridLayouter<'a> { tracks, y, hlines_at_row, - is_bottom_border, |grid, y, x, stroke| { hline_stroke_at_column( grid, @@ -1695,19 +2052,29 @@ impl<'a> GridLayouter<'a> { if let &[first] = resolved.as_slice() { let frame = self.layout_single_row(engine, first, y)?; self.push_row(frame, y, true); + + if self.grid.header.as_ref().is_some_and(|header| y < header.end) { + // Add to header height. + self.header_height += first; + } + return Ok(()); } // Expand all but the last region. // Skip the first region if the space is eaten up by an fr row. let len = resolved.len(); - for (region, target) in self + for ((i, region), target) in self .regions .iter() + .enumerate() .zip(&mut resolved[..len - 1]) .skip(self.lrows.iter().any(|row| matches!(row, Row::Fr(..))) as usize) { - target.set_max(region.y); + // Subtract header height from the region height when it's not the + // first. + target + .set_max(region.y - if i > 0 { self.header_height } else { Abs::zero() }); } // Layout into multiple regions. @@ -1809,6 +2176,8 @@ impl<'a> GridLayouter<'a> { pod.size = size; pod.backlog = backlog; pod.full = measurement_data.full; + pod.last = measurement_data.last; + pod }; @@ -1908,12 +2277,19 @@ impl<'a> GridLayouter<'a> { let resolved = v.resolve(self.styles).relative_to(self.regions.base().y); let frame = self.layout_single_row(engine, resolved, y)?; + if self.grid.header.as_ref().is_some_and(|header| y < header.end) { + // Add to header height. + self.header_height += resolved; + } + // Skip to fitting region, but only if we aren't part of an unbreakable - // row group. + // row group. We use 'in_last_with_offset' so our 'in_last' call + // properly considers that a header would be added on each region + // break. let height = frame.height(); while self.unbreakable_rows_left == 0 && !self.regions.size.y.fits(height) - && !self.regions.in_last() + && !in_last_with_offset(self.regions, self.header_height) { self.finish_region(engine)?; @@ -2036,13 +2412,26 @@ impl<'a> GridLayouter<'a> { /// Finish rows for one region. pub(super) fn finish_region(&mut self, engine: &mut Engine) -> SourceResult<()> { - if self.lrows.last().is_some_and(|row| { - let (Row::Frame(_, y, _) | Row::Fr(_, y)) = row; - self.grid.is_gutter_track(*y) - }) { + if self + .lrows + .last() + .is_some_and(|row| self.grid.is_gutter_track(row.index())) + { // Remove the last row in the region if it is a gutter row. self.lrows.pop().unwrap(); } + + if let Some(header) = &self.grid.header { + if self.grid.rows.len() > header.end + && self.lrows.last().is_some_and(|row| row.index() < header.end) + && !in_last_with_offset(self.regions, self.header_height) + { + // Header would be alone in this region, but there are more + // rows beyond the header. Push an empty region. + self.lrows.clear(); + } + } + // Determine the height of existing rows in the region. let mut used = Abs::zero(); let mut fr = Fr::zero(); @@ -2085,6 +2474,9 @@ impl<'a> GridLayouter<'a> { .rowspans .iter_mut() .filter(|rowspan| (rowspan.y..rowspan.y + rowspan.rowspan).contains(&y)) + .filter(|rowspan| { + rowspan.max_resolved_row.map_or(true, |max_row| y > max_row) + }) { // If the first region wasn't defined yet, it will have the the // initial value of usize::MAX, so we can set it to the current @@ -2111,39 +2503,47 @@ impl<'a> GridLayouter<'a> { // Ensure that, in this region, the rowspan will span at least // this row. *rowspan.heights.last_mut().unwrap() += height; + + if is_last { + // Do not extend the rowspan through this row again, even + // if it is repeated in a future region. + rowspan.max_resolved_row = Some(y); + } } - // Layout any rowspans which end at this row, but only if this is - // this row's last frame (to avoid having the rowspan stop being - // laid out at the first frame of the row). - if is_last { - // We use a for loop over indices to avoid borrow checking - // problems (we need to mutate the rowspans vector, so we can't - // have an iterator actively borrowing it). We keep a separate - // 'i' variable so we can step the counter back after removing - // a rowspan (see explanation below). - let mut i = 0; - while let Some(rowspan) = self.rowspans.get(i) { - if rowspan.y + rowspan.rowspan <= y + 1 { - // Rowspan ends at this or an earlier row, so we take - // it from the rowspans vector and lay it out. - // It's safe to pass the current region as a possible - // region for the rowspan to be laid out in, even if - // the rowspan's last row was at an earlier region, - // because the rowspan won't have an entry for this - // region in its 'heights' vector if it doesn't span - // any rows in this region. - // - // Here we don't advance the index counter ('i') because - // a new element we haven't checked yet in this loop - // will take the index of the now removed element, so - // we have to check the same index again in the next - // iteration. - let rowspan = self.rowspans.remove(i); - self.layout_rowspan(rowspan, Some(&mut output), engine)?; - } else { - i += 1; - } + // We use a for loop over indices to avoid borrow checking + // problems (we need to mutate the rowspans vector, so we can't + // have an iterator actively borrowing it). We keep a separate + // 'i' variable so we can step the counter back after removing + // a rowspan (see explanation below). + let mut i = 0; + while let Some(rowspan) = self.rowspans.get(i) { + // Layout any rowspans which end at this row, but only if this is + // this row's last frame (to avoid having the rowspan stop being + // laid out at the first frame of the row). + // Any rowspans ending before this row are laid out even + // on this row's first frame. + if rowspan.y + rowspan.rowspan < y + 1 + || rowspan.y + rowspan.rowspan == y + 1 && is_last + { + // Rowspan ends at this or an earlier row, so we take + // it from the rowspans vector and lay it out. + // It's safe to pass the current region as a possible + // region for the rowspan to be laid out in, even if + // the rowspan's last row was at an earlier region, + // because the rowspan won't have an entry for this + // region in its 'heights' vector if it doesn't span + // any rows in this region. + // + // Here we don't advance the index counter ('i') because + // a new element we haven't checked yet in this loop + // will take the index of the now removed element, so + // we have to check the same index again in the next + // iteration. + let rowspan = self.rowspans.remove(i); + self.layout_rowspan(rowspan, Some((&mut output, &rrows)), engine)?; + } else { + i += 1; } } @@ -2152,13 +2552,72 @@ impl<'a> GridLayouter<'a> { pos.y += height; } - self.finished.push(output); - self.rrows.push(rrows); - self.regions.next(); - self.initial = self.regions.size; + self.finish_region_internal(output, rrows); + + if let Some(header) = &self.grid.header { + // Add a header to the new region. + self.layout_header(header, engine)?; + } Ok(()) } + + /// Advances to the next region, registering the finished output and + /// resolved rows for the current region in the appropriate vectors. + fn finish_region_internal(&mut self, output: Frame, resolved_rows: Vec) { + self.finished.push(output); + self.rrows.push(resolved_rows); + self.regions.next(); + self.initial = self.regions.size; + } + + /// Layouts the header's rows. + /// Skips regions as necessary. + fn layout_header( + &mut self, + header: &Header, + engine: &mut Engine, + ) -> SourceResult<()> { + let header_rows = self.simulate_header(header, &self.regions, engine)?; + while self.unbreakable_rows_left == 0 + && !self.regions.size.y.fits(header_rows.height) + && !self.regions.in_last() + { + // Advance regions without any output until we can place the + // header. + self.finish_region_internal(Frame::soft(Axes::splat(Abs::zero())), vec![]); + } + + // Reset the header height for this region. + self.header_height = Abs::zero(); + + // Header is unbreakable. + // Thus, no risk of 'finish_region' being recursively called from + // within 'layout_row'. + self.unbreakable_rows_left += header.end; + for y in 0..header.end { + self.layout_row(y, engine)?; + } + Ok(()) + } + + /// Simulate the header's group of rows. + pub(super) fn simulate_header( + &self, + header: &Header, + regions: &Regions<'_>, + engine: &mut Engine, + ) -> SourceResult { + // Note that we assume the invariant that any rowspan in a header is + // fully contained within that header. Therefore, there won't be any + // unbreakable rowspans exceeding the header's rows, and we can safely + // assume that the amount of unbreakable rows following the first row + // in the header will be precisely the rows in the header. + let header_row_group = + self.simulate_unbreakable_row_group(0, Some(header.end), regions, engine)?; + + Ok(header_row_group) + } } /// Turn an iterator of extents into an iterator of offsets before, in between, @@ -2172,3 +2631,13 @@ pub(super) fn points( offset }) } + +/// Checks if the first region of a sequence of regions is the last usable +/// region, assuming that the last region will always be occupied by some +/// specific offset height, even after calling `.next()`, due to some +/// additional logic which adds content automatically on each region turn (in +/// our case, headers). +pub(super) fn in_last_with_offset(regions: Regions<'_>, offset: Abs) -> bool { + regions.backlog.is_empty() + && regions.last.map_or(true, |height| regions.size.y + offset == height) +} diff --git a/crates/typst/src/layout/grid/lines.rs b/crates/typst/src/layout/grid/lines.rs index 7084c71ad..b659ba77d 100644 --- a/crates/typst/src/layout/grid/lines.rs +++ b/crates/typst/src/layout/grid/lines.rs @@ -40,7 +40,7 @@ pub struct Line { /// its index. This is mostly only relevant when gutter is used, since, then, /// the position after a track is not the same as before the next /// non-gutter track. -#[derive(PartialEq, Eq)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum LinePosition { /// The line should be drawn before its track (e.g. hline on top of a row). Before, @@ -122,7 +122,6 @@ pub(super) fn generate_line_segments<'grid, F, I, L>( tracks: I, index: usize, lines: L, - is_max_index: bool, line_stroke_at_track: F, ) -> impl Iterator + 'grid where @@ -154,22 +153,6 @@ where // How much to multiply line indices by to account for gutter. let gutter_factor = if grid.has_gutter { 2 } else { 1 }; - // Which line position to look for in the given list of lines. - // - // If the index represents a gutter track, this means the list of lines - // parameter will actually correspond to the list of lines in the previous - // index, so we must look for lines positioned after the previous index, - // and not before, to determine which lines should be placed in gutter. - // - // Note that the maximum index is always an odd number when there's gutter, - // so we must check for it to ensure we don't give it the same treatment as - // a line before a gutter track. - let expected_line_position = if grid.is_gutter_track(index) && !is_max_index { - LinePosition::After - } else { - LinePosition::Before - }; - // Create an iterator of line segments, which will go through each track, // from start to finish, to create line segments and extend them until they // are interrupted and thus yielded through the iterator. We then repeat @@ -210,20 +193,18 @@ where let mut line_strokes = lines .clone() .filter(|line| { - line.position == expected_line_position - && line - .end - .map(|end| { - // Subtract 1 from end index so we stop at the last - // cell before it (don't cross one extra gutter). - let end = if grid.has_gutter { - 2 * end.get() - 1 - } else { - end.get() - }; - (gutter_factor * line.start..end).contains(&track) - }) - .unwrap_or_else(|| track >= gutter_factor * line.start) + line.end + .map(|end| { + // Subtract 1 from end index so we stop at the last + // cell before it (don't cross one extra gutter). + let end = if grid.has_gutter { + 2 * end.get() - 1 + } else { + end.get() + }; + (gutter_factor * line.start..end).contains(&track) + }) + .unwrap_or_else(|| track >= gutter_factor * line.start) }) .map(|line| line.stroke.clone()); @@ -554,9 +535,25 @@ pub(super) fn hline_stroke_at_column( StrokePriority::GridStroke }; + // Top border stroke and header stroke are generally prioritized, unless + // they don't have explicit hline overrides and one or more user-provided + // hlines would appear at the same position, which then are prioritized. + let top_stroke_comes_from_header = + grid.header + .as_ref() + .zip(local_top_y) + .is_some_and(|(header, local_top_y)| { + // Ensure the row above us is a repeated header. + // FIXME: Make this check more robust when headers at arbitrary + // positions are added. + local_top_y + 1 == header.end && y != header.end + }); + let (prioritized_cell_stroke, deprioritized_cell_stroke) = if !use_bottom_border_stroke - && (use_top_border_stroke || top_cell_prioritized && !bottom_cell_prioritized) + && (use_top_border_stroke + || top_stroke_comes_from_header + || top_cell_prioritized && !bottom_cell_prioritized) { // Top border must always be prioritized, even if it did not // request for that explicitly. @@ -660,6 +657,7 @@ mod test { }, vec![], vec![], + None, entries, ) } @@ -723,15 +721,8 @@ mod test { let tracks = rows.iter().map(|row| (row.y, row.height)); assert_eq!( expected_splits, - &generate_line_segments( - &grid, - tracks, - x, - &[], - x == grid.cols.len(), - vline_stroke_at_row - ) - .collect::>(), + &generate_line_segments(&grid, tracks, x, &[], vline_stroke_at_row) + .collect::>(), ); } } @@ -955,15 +946,8 @@ mod test { let tracks = rows.iter().map(|row| (row.y, row.height)); assert_eq!( expected_splits, - &generate_line_segments( - &grid, - tracks, - x, - &[], - x == grid.cols.len(), - vline_stroke_at_row - ) - .collect::>(), + &generate_line_segments(&grid, tracks, x, &[], vline_stroke_at_row) + .collect::>(), ); } } @@ -1144,7 +1128,6 @@ mod test { position: LinePosition::After }, ], - x == grid.cols.len(), vline_stroke_at_row ) .collect::>(), @@ -1211,6 +1194,7 @@ mod test { }, vec![], vec![], + None, entries, ) } @@ -1297,22 +1281,17 @@ mod test { let tracks = columns.iter().copied().enumerate(); assert_eq!( expected_splits, - &generate_line_segments( - &grid, - tracks, - y, - &[], - y == grid.rows.len(), - |grid, y, x, stroke| hline_stroke_at_column( + &generate_line_segments(&grid, tracks, y, &[], |grid, y, x, stroke| { + hline_stroke_at_column( grid, &rows, y.checked_sub(1), true, y, x, - stroke + stroke, ) - ) + }) .collect::>(), ); } @@ -1496,7 +1475,6 @@ mod test { position: LinePosition::After }, ], - y == grid.rows.len(), |grid, y, x, stroke| hline_stroke_at_column( grid, &rows, @@ -1542,7 +1520,6 @@ mod test { columns.iter().copied().enumerate(), 4, &[], - 4 == grid.rows.len(), |grid, y, x, stroke| hline_stroke_at_column( grid, &rows, diff --git a/crates/typst/src/layout/grid/mod.rs b/crates/typst/src/layout/grid/mod.rs index 6675f3e02..0f431bc65 100644 --- a/crates/typst/src/layout/grid/mod.rs +++ b/crates/typst/src/layout/grid/mod.rs @@ -2,13 +2,16 @@ mod layout; mod lines; mod rowspans; -pub use self::layout::{Cell, CellGrid, Celled, GridItem, GridLayouter, ResolvableCell}; +pub use self::layout::{ + Cell, CellGrid, Celled, GridLayouter, ResolvableCell, ResolvableGridChild, + ResolvableGridItem, +}; pub use self::lines::LinePosition; use std::num::NonZeroUsize; use std::sync::Arc; -use ecow::eco_format; +use ecow::{eco_format, EcoString}; use smallvec::{smallvec, SmallVec}; use crate::diag::{bail, SourceResult, StrResult, Trace, Tracepoint}; @@ -20,7 +23,7 @@ use crate::layout::{ Abs, AlignElem, Alignment, Axes, Dir, Fragment, LayoutMultiple, Length, OuterHAlignment, OuterVAlignment, Regions, Rel, Sides, Sizing, }; -use crate::model::{TableCell, TableHLine, TableVLine}; +use crate::model::{TableCell, TableHLine, TableHeader, TableVLine}; use crate::syntax::Span; use crate::text::TextElem; use crate::util::NonZeroExt; @@ -293,6 +296,9 @@ impl GridElem { #[elem] type GridVLine; + + #[elem] + type GridHeader; } impl LayoutMultiple for Packed { @@ -316,43 +322,20 @@ impl LayoutMultiple for Packed { let gutter = Axes::new(column_gutter.0.as_slice(), row_gutter.0.as_slice()); // Use trace to link back to the grid when a specific cell errors let tracepoint = || Tracepoint::Call(Some(eco_format!("grid"))); - let items = self.children().iter().map(|child| match child { - GridChild::HLine(hline) => GridItem::HLine { - y: hline.y(styles), - start: hline.start(styles), - end: hline.end(styles), - stroke: hline.stroke(styles), - span: hline.span(), - position: match hline.position(styles) { - OuterVAlignment::Top => LinePosition::Before, - OuterVAlignment::Bottom => LinePosition::After, - }, + let children = self.children().iter().map(|child| match child { + GridChild::Header(header) => ResolvableGridChild::Header { + repeat: header.repeat(styles), + span: header.span(), + items: header.children().iter().map(|child| child.to_resolvable(styles)), }, - GridChild::VLine(vline) => GridItem::VLine { - x: vline.x(styles), - start: vline.start(styles), - end: vline.end(styles), - stroke: vline.stroke(styles), - span: vline.span(), - position: match vline.position(styles) { - OuterHAlignment::Left if TextElem::dir_in(styles) == Dir::RTL => { - LinePosition::After - } - OuterHAlignment::Right if TextElem::dir_in(styles) == Dir::RTL => { - LinePosition::Before - } - OuterHAlignment::Start | OuterHAlignment::Left => { - LinePosition::Before - } - OuterHAlignment::End | OuterHAlignment::Right => LinePosition::After, - }, - }, - GridChild::Cell(cell) => GridItem::Cell(cell.clone()), + GridChild::Item(item) => { + ResolvableGridChild::Item(item.to_resolvable(styles)) + } }); let grid = CellGrid::resolve( tracks, gutter, - items, + children, fill, align, &inset, @@ -385,52 +368,136 @@ cast! { /// Any child of a grid element. #[derive(Debug, PartialEq, Clone, Hash)] pub enum GridChild { + Header(Packed), + Item(GridItem), +} + +cast! { + GridChild, + self => match self { + Self::Header(header) => header.into_value(), + Self::Item(item) => item.into_value(), + }, + v: Content => { + v.try_into()? + }, +} + +impl TryFrom for GridChild { + type Error = EcoString; + fn try_from(value: Content) -> StrResult { + if value.is::() { + bail!("cannot use `table.header` as a grid header; use `grid.header` instead") + } + + value + .into_packed::() + .map(Self::Header) + .or_else(|value| GridItem::try_from(value).map(Self::Item)) + } +} + +/// A grid item, which is the basic unit of grid specification. +#[derive(Debug, PartialEq, Clone, Hash)] +pub enum GridItem { HLine(Packed), VLine(Packed), Cell(Packed), } +impl GridItem { + fn to_resolvable(&self, styles: StyleChain) -> ResolvableGridItem> { + match self { + Self::HLine(hline) => ResolvableGridItem::HLine { + y: hline.y(styles), + start: hline.start(styles), + end: hline.end(styles), + stroke: hline.stroke(styles), + span: hline.span(), + position: match hline.position(styles) { + OuterVAlignment::Top => LinePosition::Before, + OuterVAlignment::Bottom => LinePosition::After, + }, + }, + Self::VLine(vline) => ResolvableGridItem::VLine { + x: vline.x(styles), + start: vline.start(styles), + end: vline.end(styles), + stroke: vline.stroke(styles), + span: vline.span(), + position: match vline.position(styles) { + OuterHAlignment::Left if TextElem::dir_in(styles) == Dir::RTL => { + LinePosition::After + } + OuterHAlignment::Right if TextElem::dir_in(styles) == Dir::RTL => { + LinePosition::Before + } + OuterHAlignment::Start | OuterHAlignment::Left => { + LinePosition::Before + } + OuterHAlignment::End | OuterHAlignment::Right => LinePosition::After, + }, + }, + Self::Cell(cell) => ResolvableGridItem::Cell(cell.clone()), + } + } +} + cast! { - GridChild, + GridItem, self => match self { Self::HLine(hline) => hline.into_value(), Self::VLine(vline) => vline.into_value(), Self::Cell(cell) => cell.into_value(), }, v: Content => { - if v.is::() { - bail!( - "cannot use `table.cell` as a grid cell; use `grid.cell` instead" - ); - } - if v.is::() { - bail!( - "cannot use `table.hline` as a grid line; use `grid.hline` instead" - ); - } - if v.is::() { - bail!( - "cannot use `table.vline` as a grid line; use `grid.vline` instead" - ); - } - v.into() + v.try_into()? } } -impl From for GridChild { - fn from(value: Content) -> Self { - value +impl TryFrom for GridItem { + type Error = EcoString; + fn try_from(value: Content) -> StrResult { + if value.is::() { + bail!("cannot place a grid header within another header"); + } + if value.is::() { + bail!("cannot place a table header within another header"); + } + if value.is::() { + bail!("cannot use `table.cell` as a grid cell; use `grid.cell` instead"); + } + if value.is::() { + bail!("cannot use `table.hline` as a grid line; use `grid.hline` instead"); + } + if value.is::() { + bail!("cannot use `table.vline` as a grid line; use `grid.vline` instead"); + } + + Ok(value .into_packed::() - .map(GridChild::HLine) - .or_else(|value| value.into_packed::().map(GridChild::VLine)) - .or_else(|value| value.into_packed::().map(GridChild::Cell)) + .map(Self::HLine) + .or_else(|value| value.into_packed::().map(Self::VLine)) + .or_else(|value| value.into_packed::().map(Self::Cell)) .unwrap_or_else(|value| { let span = value.span(); - GridChild::Cell(Packed::new(GridCell::new(value)).spanned(span)) - }) + Self::Cell(Packed::new(GridCell::new(value)).spanned(span)) + })) } } +/// A repeatable grid header. +#[elem(name = "header", title = "Grid Header")] +pub struct GridHeader { + /// Whether this header should be repeated across pages. + #[default(true)] + pub repeat: bool, + + /// The cells and lines within the header. + #[variadic] + pub children: Vec, +} + /// A horizontal line in the grid. /// /// Overrides any per-cell stroke, including stroke specified through the diff --git a/crates/typst/src/layout/grid/rowspans.rs b/crates/typst/src/layout/grid/rowspans.rs index be63da5ce..d33b79434 100644 --- a/crates/typst/src/layout/grid/rowspans.rs +++ b/crates/typst/src/layout/grid/rowspans.rs @@ -6,7 +6,7 @@ use crate::layout::{ }; use crate::util::MaybeReverseIter; -use super::layout::{points, Row}; +use super::layout::{in_last_with_offset, points, Row, RowPiece}; /// All information needed to layout a single rowspan. pub(super) struct Rowspan { @@ -27,6 +27,13 @@ pub(super) struct Rowspan { pub(super) region_full: Abs, /// The vertical space available for this rowspan in each region. pub(super) heights: Vec, + /// The index of the largest resolved spanned row so far. + /// Once a spanned row is resolved and its height added to `heights`, this + /// number is increased. Older rows, even if repeated through e.g. a + /// header, will no longer contribute height to this rowspan. + /// + /// This is `None` if no spanned rows were resolved in `finish_region` yet. + pub(super) max_resolved_row: Option, } /// The output of the simulation of an unbreakable row group. @@ -44,9 +51,14 @@ pub(super) struct CellMeasurementData<'layouter> { /// The available width for the cell across all regions. pub(super) width: Abs, /// The available height for the cell in its first region. + /// Infinite when the auto row is unbreakable. pub(super) height: Abs, /// The backlog of heights available for the cell in later regions. + /// /// When this is `None`, the `custom_backlog` field should be used instead. + /// That's because, otherwise, this field would have to contain a reference + /// to the `custom_backlog` field, which isn't possible in Rust without + /// resorting to unsafe hacks. pub(super) backlog: Option<&'layouter [Abs]>, /// If the backlog needs to be built from scratch instead of reusing the /// one at the current region, which is the case of a multi-region rowspan @@ -54,7 +66,11 @@ pub(super) struct CellMeasurementData<'layouter> { /// backlog), then this vector will store the new backlog. pub(super) custom_backlog: Vec, /// The full height of the first region of the cell. + /// Infinite when the auto row is unbreakable. pub(super) full: Abs, + /// The height of the last repeated region to use in the measurement pod, + /// if any. + pub(super) last: Option, /// The total height of previous rows spanned by the cell in the current /// region (so far). pub(super) height_in_this_region: Abs, @@ -65,9 +81,10 @@ pub(super) struct CellMeasurementData<'layouter> { impl<'a> GridLayouter<'a> { /// Layout a rowspan over the already finished regions, plus the current - /// region, if it wasn't finished yet (because we're being called from - /// `finish_region`, but note that this function is also called once after - /// all regions are finished, in which case `current_region` is `None`). + /// region's frame and resolved rows, if it wasn't finished yet (because + /// we're being called from `finish_region`, but note that this function is + /// also called once after all regions are finished, in which case + /// `current_region_data` is `None`). /// /// We need to do this only once we already know the heights of all /// spanned rows, which is only possible after laying out the last row @@ -75,7 +92,7 @@ impl<'a> GridLayouter<'a> { pub(super) fn layout_rowspan( &mut self, rowspan_data: Rowspan, - current_region: Option<&mut Frame>, + current_region_data: Option<(&mut Frame, &[RowPiece])>, engine: &mut Engine, ) -> SourceResult<()> { let Rowspan { @@ -97,22 +114,42 @@ impl<'a> GridLayouter<'a> { pod.backlog = backlog; // Push the layouted frames directly into the finished frames. - // At first, we draw the rowspan starting at its expected offset - // in the first region. - let mut pos = Point::new(dx, dy); let fragment = cell.layout(engine, self.styles, pod)?; - for (finished, frame) in self + let (current_region, current_rrows) = current_region_data.unzip(); + for ((i, finished), frame) in self .finished .iter_mut() .chain(current_region.into_iter()) .skip(first_region) + .enumerate() .zip(fragment) { - finished.push_frame(pos, frame); + let dy = if i == 0 { + // At first, we draw the rowspan starting at its expected + // vertical offset in the first region. + dy + } else { + // The rowspan continuation starts after the header (thus, + // at a position after the sum of the laid out header + // rows). + if let Some(header) = &self.grid.header { + let header_rows = self + .rrows + .get(i) + .map(Vec::as_slice) + .or(current_rrows) + .unwrap_or(&[]) + .iter() + .take_while(|row| row.y < header.end); - // From the second region onwards, the rowspan's continuation - // starts at the very top. - pos.y = Abs::zero(); + header_rows.map(|row| row.height).sum() + } else { + // Without a header, start at the very top of the region. + Abs::zero() + } + }; + + finished.push_frame(Point::new(dx, dy), frame); } Ok(()) @@ -141,6 +178,7 @@ impl<'a> GridLayouter<'a> { first_region: usize::MAX, region_full: Abs::zero(), heights: vec![], + max_resolved_row: None, }); } } @@ -156,11 +194,17 @@ impl<'a> GridLayouter<'a> { engine: &mut Engine, ) -> SourceResult<()> { if self.unbreakable_rows_left == 0 { - let row_group = - self.simulate_unbreakable_row_group(current_row, &self.regions, engine)?; + let row_group = self.simulate_unbreakable_row_group( + current_row, + None, + &self.regions, + engine, + )?; // Skip to fitting region. - while !self.regions.size.y.fits(row_group.height) && !self.regions.in_last() { + while !self.regions.size.y.fits(row_group.height) + && !in_last_with_offset(self.regions, self.header_height) + { self.finish_region(engine)?; } self.unbreakable_rows_left = row_group.rows.len(); @@ -170,23 +214,30 @@ impl<'a> GridLayouter<'a> { } /// Simulates a group of unbreakable rows, starting with the index of the - /// first row in the group. Keeps adding rows to the group until none have - /// unbreakable cells in common. + /// first row in the group. If `amount_unbreakable_rows` is `None`, keeps + /// adding rows to the group until none have unbreakable cells in common. + /// Otherwise, adds specifically the given amount of rows to the group. /// /// This is used to figure out how much height the next unbreakable row /// group (if any) needs. pub(super) fn simulate_unbreakable_row_group( &self, first_row: usize, + amount_unbreakable_rows: Option, regions: &Regions<'_>, engine: &mut Engine, ) -> SourceResult { let mut row_group = UnbreakableRowGroup::default(); - let mut unbreakable_rows_left = 0; + let mut unbreakable_rows_left = amount_unbreakable_rows.unwrap_or(0); for (y, row) in self.grid.rows.iter().enumerate().skip(first_row) { - let additional_unbreakable_rows = self.check_for_unbreakable_cells(y); - unbreakable_rows_left = - unbreakable_rows_left.max(additional_unbreakable_rows); + if amount_unbreakable_rows.is_none() { + // When we don't set a fixed amount of unbreakable rows, + // determine the amount based on the rowspan of unbreakable + // cells in rows. + let additional_unbreakable_rows = self.check_for_unbreakable_cells(y); + unbreakable_rows_left = + unbreakable_rows_left.max(additional_unbreakable_rows); + } if unbreakable_rows_left == 0 { // This check is in case the first row does not have any // unbreakable cells. Therefore, no unbreakable row group @@ -254,10 +305,37 @@ impl<'a> GridLayouter<'a> { let rowspan = self.grid.effective_rowspan_of_cell(cell); // This variable is used to construct a custom backlog if the cell - // is a rowspan. When measuring, we join the heights from previous - // regions to the current backlog to form the rowspan's expected - // backlog. - let mut rowspan_backlog: Vec = vec![]; + // is a rowspan, or if headers are used. When measuring, we join + // the heights from previous regions to the current backlog to form + // a rowspan's expected backlog. We also subtract the header's + // height from all regions. + let mut custom_backlog: Vec = vec![]; + + // This function is used to subtract the expected header height from + // each upcoming region size in the current backlog and last region. + let mut subtract_header_height_from_regions = || { + // Only breakable auto rows need to update their backlogs based + // on the presence of a header, given that unbreakable auto + // rows don't depend on the backlog, as they only span one + // region. + if breakable && self.grid.header.is_some() { + // Subtract header height from all upcoming regions when + // measuring the cell, including the last repeated region. + // + // This will update the 'custom_backlog' vector with the + // updated heights of the upcoming regions. + let mapped_regions = self.regions.map(&mut custom_backlog, |size| { + Size::new(size.x, size.y - self.header_height) + }); + + // Callees must use the custom backlog instead of the current + // backlog, so we return 'None'. + return (None, mapped_regions.last); + } + + // No need to change the backlog or last region. + (Some(self.regions.backlog), self.regions.last) + }; // Each declaration, from top to bottom: // 1. The height available to the cell in the first region. @@ -266,25 +344,34 @@ impl<'a> GridLayouter<'a> { // 2. The backlog of upcoming region heights to specify as // available to the cell. // 3. The full height of the first region of the cell. - // 4. The total height of the cell covered by previously spanned + // 4. Height of the last repeated region to use in the measurement pod. + // 5. The total height of the cell covered by previously spanned // rows in this region. This is used by rowspans to be able to tell // how much the auto row needs to expand. - // 5. The amount of frames laid out by this cell in previous + // 6. The amount of frames laid out by this cell in previous // regions. When the cell isn't a rowspan, this is always zero. // These frames are skipped after measuring. - let (height, backlog, full, height_in_this_region, frames_in_previous_regions); + let height; + let backlog; + let full; + let last; + let height_in_this_region; + let frames_in_previous_regions; + if rowspan == 1 { // Not a rowspan, so the cell only occupies this row. Therefore: // 1. When we measure the cell below, use the available height // remaining in the region as the height it has available. // However, if the auto row is unbreakable, measure with infinite // height instead to see how much content expands. - // 2. Also use the region's backlog when measuring. + // 2. Use the region's backlog and last region when measuring, + // however subtract the expected header height from each upcoming + // size, if there is a header. // 3. Use the same full region height. // 4. No height occupied by this cell in this region so far. // 5. Yes, this cell started in this region. height = if breakable { self.regions.size.y } else { Abs::inf() }; - backlog = Some(self.regions.backlog); + (backlog, last) = subtract_header_height_from_regions(); full = if breakable { self.regions.full } else { Abs::inf() }; height_in_this_region = Abs::zero(); frames_in_previous_regions = 0; @@ -339,21 +426,25 @@ impl<'a> GridLayouter<'a> { .iter() .copied() .chain(std::iter::once(if breakable { - self.initial.y + self.initial.y - self.header_height } else { // When measuring unbreakable auto rows, infinite // height is available for content to expand. Abs::inf() })); - rowspan_backlog = if breakable { + custom_backlog = if breakable { // This auto row is breakable. Therefore, join the // rowspan's already laid out heights with the current // region's height and current backlog to ensure a good // level of accuracy in the measurements. - heights_up_to_current_region - .chain(self.regions.backlog.iter().copied()) - .collect::>() + let backlog = self + .regions + .backlog + .iter() + .map(|&size| size - self.header_height); + + heights_up_to_current_region.chain(backlog).collect::>() } else { // No extra backlog if this is an unbreakable auto row. // Ensure, when measuring, that the rowspan can be laid @@ -365,6 +456,7 @@ impl<'a> GridLayouter<'a> { height = *rowspan_height; backlog = None; full = rowspan_full; + last = self.regions.last.map(|size| size - self.header_height); } else { // The rowspan started in the current region, as its vector // of heights in regions is currently empty. @@ -380,7 +472,7 @@ impl<'a> GridLayouter<'a> { } else { Abs::inf() }; - backlog = Some(self.regions.backlog); + (backlog, last) = subtract_header_height_from_regions(); full = if breakable { self.regions.full } else { Abs::inf() }; frames_in_previous_regions = 0; } @@ -391,8 +483,9 @@ impl<'a> GridLayouter<'a> { width, height, backlog, - custom_backlog: rowspan_backlog, + custom_backlog, full, + last, height_in_this_region, frames_in_previous_regions, } @@ -561,7 +654,13 @@ impl<'a> GridLayouter<'a> { // expand) because we popped the last resolved size from the // resolved vector, above. simulated_regions.next(); + + // Subtract the initial header height, since that's the height we + // used when subtracting from the region backlog's heights while + // measuring cells. + simulated_regions.size.y -= self.header_height; } + if let Some(original_last_resolved_size) = last_resolved_size { // We're now at the (current) last region of this auto row. // Consider resolved height as already taken space. @@ -689,87 +788,18 @@ impl<'a> GridLayouter<'a> { // which, when used and combined with upcoming spanned rows, covers all // of the requested rowspan height, we give up. for _attempt in 0..5 { - let mut regions = simulated_regions; - let mut total_spanned_height = Abs::zero(); - let mut unbreakable_rows_left = unbreakable_rows_left; + let rowspan_simulator = + RowspanSimulator::new(simulated_regions, self.header_height); - // Height of the latest spanned gutter row. - // Zero if it was removed. - let mut latest_spanned_gutter_height = Abs::zero(); - let spanned_rows = &self.grid.rows[y + 1..=max_spanned_row]; - for (offset, row) in spanned_rows.iter().enumerate() { - if (total_spanned_height + amount_to_grow).fits(requested_rowspan_height) - { - // Stop the simulation, as the combination of upcoming - // spanned rows (so far) and the current amount the auto - // row expands by has already fully covered the height the - // rowspans need. - break; - } - let spanned_y = y + 1 + offset; - let is_gutter = self.grid.is_gutter_track(spanned_y); - - if unbreakable_rows_left == 0 { - // Simulate unbreakable row groups, and skip regions until - // they fit. There is no risk of infinite recursion, as - // no auto rows participate in the simulation, so the - // unbreakable row group simulator won't recursively call - // 'measure_auto_row' or (consequently) this function. - let row_group = - self.simulate_unbreakable_row_group(spanned_y, ®ions, engine)?; - while !regions.size.y.fits(row_group.height) && !regions.in_last() { - total_spanned_height -= latest_spanned_gutter_height; - latest_spanned_gutter_height = Abs::zero(); - regions.next(); - } - - unbreakable_rows_left = row_group.rows.len(); - } - - match row { - // Fixed-size spanned rows are what we are interested in. - // They contribute a fixed amount of height to our rowspan. - Sizing::Rel(v) => { - let height = v.resolve(self.styles).relative_to(regions.base().y); - total_spanned_height += height; - if is_gutter { - latest_spanned_gutter_height = height; - } - - let mut skipped_region = false; - while unbreakable_rows_left == 0 - && !regions.size.y.fits(height) - && !regions.in_last() - { - // A row was pushed to the next region. Therefore, - // the immediately preceding gutter row is removed. - total_spanned_height -= latest_spanned_gutter_height; - latest_spanned_gutter_height = Abs::zero(); - skipped_region = true; - regions.next(); - } - - if !skipped_region || !is_gutter { - // No gutter at the top of a new region, so don't - // account for it if we just skipped a region. - regions.size.y -= height; - } - } - Sizing::Auto => { - // We only simulate for rowspans which end at the - // current auto row. Therefore, there won't be any - // further auto rows. - unreachable!(); - } - // For now, we ignore fractional rows on simulation. - Sizing::Fr(_) if is_gutter => { - latest_spanned_gutter_height = Abs::zero(); - } - Sizing::Fr(_) => {} - } - - unbreakable_rows_left = unbreakable_rows_left.saturating_sub(1); - } + let total_spanned_height = rowspan_simulator.simulate_rowspan_layout( + y, + max_spanned_row, + amount_to_grow, + requested_rowspan_height, + unbreakable_rows_left, + self, + engine, + )?; // If the total height spanned by upcoming spanned rows plus the // current amount we predict the auto row will have to grow (from @@ -841,6 +871,7 @@ impl<'a> GridLayouter<'a> { { extra_amount_to_grow -= simulated_regions.size.y.max(Abs::zero()); simulated_regions.next(); + simulated_regions.size.y -= self.header_height; } simulated_regions.size.y -= extra_amount_to_grow; } @@ -850,6 +881,189 @@ impl<'a> GridLayouter<'a> { } } +/// Auxiliary structure holding state during rowspan simulation. +struct RowspanSimulator<'a> { + /// The state of regions during the simulation. + regions: Regions<'a>, + /// The height of the header in the currently simulated region. + header_height: Abs, + /// The total spanned height so far in the simulation. + total_spanned_height: Abs, + /// Height of the latest spanned gutter row in the simulation. + /// Zero if it was removed. + latest_spanned_gutter_height: Abs, +} + +impl<'a> RowspanSimulator<'a> { + /// Creates new rowspan simulation state with the given regions and initial + /// header height. Other fields should always start as zero. + fn new(regions: Regions<'a>, header_height: Abs) -> Self { + Self { + regions, + header_height, + total_spanned_height: Abs::zero(), + latest_spanned_gutter_height: Abs::zero(), + } + } + + /// Calculates the total spanned height of the rowspan. + /// Stops calculating if, at any point in the simulation, the value of + /// `total_spanned_height + amount_to_grow` becomes larger than + /// `requested_rowspan_height`, as the results are not going to become any + /// more useful after that point. + #[allow(clippy::too_many_arguments)] + fn simulate_rowspan_layout( + mut self, + y: usize, + max_spanned_row: usize, + amount_to_grow: Abs, + requested_rowspan_height: Abs, + mut unbreakable_rows_left: usize, + layouter: &GridLayouter<'_>, + engine: &mut Engine, + ) -> SourceResult { + let spanned_rows = &layouter.grid.rows[y + 1..=max_spanned_row]; + for (offset, row) in spanned_rows.iter().enumerate() { + if (self.total_spanned_height + amount_to_grow).fits(requested_rowspan_height) + { + // Stop the simulation, as the combination of upcoming + // spanned rows (so far) and the current amount the auto + // row expands by has already fully covered the height the + // rowspans need. + return Ok(self.total_spanned_height); + } + let spanned_y = y + 1 + offset; + let is_gutter = layouter.grid.is_gutter_track(spanned_y); + + if unbreakable_rows_left == 0 { + // Simulate unbreakable row groups, and skip regions until + // they fit. There is no risk of infinite recursion, as + // no auto rows participate in the simulation, so the + // unbreakable row group simulator won't recursively call + // 'measure_auto_row' or (consequently) this function. + let row_group = layouter.simulate_unbreakable_row_group( + spanned_y, + None, + &self.regions, + engine, + )?; + while !self.regions.size.y.fits(row_group.height) + && !in_last_with_offset(self.regions, self.header_height) + { + self.finish_region(layouter, engine)?; + } + + unbreakable_rows_left = row_group.rows.len(); + } + + match row { + // Fixed-size spanned rows are what we are interested in. + // They contribute a fixed amount of height to our rowspan. + Sizing::Rel(v) => { + let height = + v.resolve(layouter.styles).relative_to(self.regions.base().y); + self.total_spanned_height += height; + if is_gutter { + self.latest_spanned_gutter_height = height; + } + + let mut skipped_region = false; + while unbreakable_rows_left == 0 + && !self.regions.size.y.fits(height) + && !in_last_with_offset(self.regions, self.header_height) + { + self.finish_region(layouter, engine)?; + + skipped_region = true; + } + + if !skipped_region || !is_gutter { + // No gutter at the top of a new region, so don't + // account for it if we just skipped a region. + self.regions.size.y -= height; + } + } + Sizing::Auto => { + // We only simulate for rowspans which end at the + // current auto row. Therefore, there won't be any + // further auto rows. + unreachable!(); + } + // For now, we ignore fractional rows on simulation. + Sizing::Fr(_) if is_gutter => { + self.latest_spanned_gutter_height = Abs::zero(); + } + Sizing::Fr(_) => {} + } + + unbreakable_rows_left = unbreakable_rows_left.saturating_sub(1); + } + + Ok(self.total_spanned_height) + } + + fn simulate_header_layout( + &mut self, + layouter: &GridLayouter<'_>, + engine: &mut Engine, + ) -> SourceResult<()> { + if let Some(header) = &layouter.grid.header { + // We can't just use the initial header height on each + // region, because header height might vary depending + // on region size if it contains rows with relative + // lengths. Therefore, we re-simulate headers on each + // new region. + // It's true that, when measuring cells, we reduce each + // height in the backlog to consider the initial header + // height; however, our simulation checks what happens + // AFTER the auto row, so we can just use the original + // backlog from `self.regions`. + let header_row_group = + layouter.simulate_header(header, &self.regions, engine)?; + let mut skipped_region = false; + + // Skip until we reach a fitting region for this header. + while !self.regions.size.y.fits(header_row_group.height) + && !self.regions.in_last() + { + self.regions.next(); + skipped_region = true; + } + + self.header_height = if skipped_region { + // Simulate headers again, at the new region, as + // the full region height may change. + layouter.simulate_header(header, &self.regions, engine)?.height + } else { + header_row_group.height + }; + + // Consume the header's height from the new region, + // but don't consider it spanned. The rowspan + // does not go over the header (as an invariant, + // any rowspans spanning a header row are fully + // contained within that header's rows). + self.regions.size.y -= self.header_height; + } + + Ok(()) + } + + fn finish_region( + &mut self, + layouter: &GridLayouter<'_>, + engine: &mut Engine, + ) -> SourceResult<()> { + // If a row was pushed to the next region, the immediately + // preceding gutter row is removed. + self.total_spanned_height -= self.latest_spanned_gutter_height; + self.latest_spanned_gutter_height = Abs::zero(); + self.regions.next(); + + self.simulate_header_layout(layouter, engine) + } +} + /// Subtracts some size from the end of a vector of sizes. /// For example, subtracting 5pt from \[2pt, 1pt, 3pt\] will result in \[1pt\]. fn subtract_end_sizes(sizes: &mut Vec, mut subtract: Abs) { diff --git a/crates/typst/src/model/bibliography.rs b/crates/typst/src/model/bibliography.rs index e34640262..576d1171b 100644 --- a/crates/typst/src/model/bibliography.rs +++ b/crates/typst/src/model/bibliography.rs @@ -29,8 +29,8 @@ use crate::foundations::{ }; use crate::introspection::{Introspector, Locatable, Location}; use crate::layout::{ - BlockElem, Em, GridCell, GridChild, GridElem, HElem, PadElem, Sizing, TrackSizings, - VElem, + BlockElem, Em, GridCell, GridChild, GridElem, GridItem, HElem, PadElem, Sizing, + TrackSizings, VElem, }; use crate::model::{ CitationForm, CiteGroup, Destination, FootnoteElem, HeadingElem, LinkElem, ParElem, @@ -238,13 +238,13 @@ impl Show for Packed { if references.iter().any(|(prefix, _)| prefix.is_some()) { let mut cells = vec![]; for (prefix, reference) in references { - cells.push(GridChild::Cell( + cells.push(GridChild::Item(GridItem::Cell( Packed::new(GridCell::new(prefix.clone().unwrap_or_default())) .spanned(span), - )); - cells.push(GridChild::Cell( + ))); + cells.push(GridChild::Item(GridItem::Cell( Packed::new(GridCell::new(reference.clone())).spanned(span), - )); + ))); } seq.push(VElem::new(row_gutter).with_weakness(3).pack()); @@ -948,8 +948,12 @@ impl ElemRenderer<'_> { if let Some(prefix) = suf_prefix { const COLUMN_GUTTER: Em = Em::new(0.65); content = GridElem::new(vec![ - GridChild::Cell(Packed::new(GridCell::new(prefix)).spanned(self.span)), - GridChild::Cell(Packed::new(GridCell::new(content)).spanned(self.span)), + GridChild::Item(GridItem::Cell( + Packed::new(GridCell::new(prefix)).spanned(self.span), + )), + GridChild::Item(GridItem::Cell( + Packed::new(GridCell::new(content)).spanned(self.span), + )), ]) .with_columns(TrackSizings(smallvec![Sizing::Auto; 2])) .with_column_gutter(TrackSizings(smallvec![COLUMN_GUTTER.into()])) diff --git a/crates/typst/src/model/table.rs b/crates/typst/src/model/table.rs index 2285e9a74..250a527cf 100644 --- a/crates/typst/src/model/table.rs +++ b/crates/typst/src/model/table.rs @@ -1,18 +1,18 @@ use std::num::NonZeroUsize; use std::sync::Arc; -use ecow::eco_format; +use ecow::{eco_format, EcoString}; -use crate::diag::{bail, SourceResult, Trace, Tracepoint}; +use crate::diag::{bail, SourceResult, StrResult, Trace, Tracepoint}; use crate::engine::Engine; use crate::foundations::{ cast, elem, scope, Content, Fold, Packed, Show, Smart, StyleChain, }; use crate::layout::{ show_grid_cell, Abs, Alignment, Axes, Cell, CellGrid, Celled, Dir, Fragment, - GridCell, GridHLine, GridItem, GridLayouter, GridVLine, LayoutMultiple, Length, - LinePosition, OuterHAlignment, OuterVAlignment, Regions, Rel, ResolvableCell, Sides, - TrackSizings, + GridCell, GridHLine, GridHeader, GridLayouter, GridVLine, LayoutMultiple, Length, + LinePosition, OuterHAlignment, OuterVAlignment, Regions, Rel, ResolvableCell, + ResolvableGridChild, ResolvableGridItem, Sides, TrackSizings, }; use crate::model::Figurable; use crate::syntax::Span; @@ -221,6 +221,9 @@ impl TableElem { #[elem] type TableVLine; + + #[elem] + type TableHeader; } impl LayoutMultiple for Packed { @@ -244,43 +247,20 @@ impl LayoutMultiple for Packed { let gutter = Axes::new(column_gutter.0.as_slice(), row_gutter.0.as_slice()); // Use trace to link back to the table when a specific cell errors let tracepoint = || Tracepoint::Call(Some(eco_format!("table"))); - let items = self.children().iter().map(|child| match child { - TableChild::HLine(hline) => GridItem::HLine { - y: hline.y(styles), - start: hline.start(styles), - end: hline.end(styles), - stroke: hline.stroke(styles), - span: hline.span(), - position: match hline.position(styles) { - OuterVAlignment::Top => LinePosition::Before, - OuterVAlignment::Bottom => LinePosition::After, - }, + let children = self.children().iter().map(|child| match child { + TableChild::Header(header) => ResolvableGridChild::Header { + repeat: header.repeat(styles), + span: header.span(), + items: header.children().iter().map(|child| child.to_resolvable(styles)), }, - TableChild::VLine(vline) => GridItem::VLine { - x: vline.x(styles), - start: vline.start(styles), - end: vline.end(styles), - stroke: vline.stroke(styles), - span: vline.span(), - position: match vline.position(styles) { - OuterHAlignment::Left if TextElem::dir_in(styles) == Dir::RTL => { - LinePosition::After - } - OuterHAlignment::Right if TextElem::dir_in(styles) == Dir::RTL => { - LinePosition::Before - } - OuterHAlignment::Start | OuterHAlignment::Left => { - LinePosition::Before - } - OuterHAlignment::End | OuterHAlignment::Right => LinePosition::After, - }, - }, - TableChild::Cell(cell) => GridItem::Cell(cell.clone()), + TableChild::Item(item) => { + ResolvableGridChild::Item(item.to_resolvable(styles)) + } }); let grid = CellGrid::resolve( tracks, gutter, - items, + children, fill, align, &inset, @@ -338,50 +318,138 @@ impl Figurable for Packed {} /// Any child of a table element. #[derive(Debug, PartialEq, Clone, Hash)] pub enum TableChild { + Header(Packed), + Item(TableItem), +} + +cast! { + TableChild, + self => match self { + Self::Header(header) => header.into_value(), + Self::Item(item) => item.into_value(), + }, + v: Content => { + v.try_into()? + }, +} + +impl TryFrom for TableChild { + type Error = EcoString; + + fn try_from(value: Content) -> StrResult { + if value.is::() { + bail!( + "cannot use `grid.header` as a table header; use `table.header` instead" + ) + } + + value + .into_packed::() + .map(Self::Header) + .or_else(|value| TableItem::try_from(value).map(Self::Item)) + } +} + +/// A table item, which is the basic unit of table specification. +#[derive(Debug, PartialEq, Clone, Hash)] +pub enum TableItem { HLine(Packed), VLine(Packed), Cell(Packed), } +impl TableItem { + fn to_resolvable(&self, styles: StyleChain) -> ResolvableGridItem> { + match self { + Self::HLine(hline) => ResolvableGridItem::HLine { + y: hline.y(styles), + start: hline.start(styles), + end: hline.end(styles), + stroke: hline.stroke(styles), + span: hline.span(), + position: match hline.position(styles) { + OuterVAlignment::Top => LinePosition::Before, + OuterVAlignment::Bottom => LinePosition::After, + }, + }, + Self::VLine(vline) => ResolvableGridItem::VLine { + x: vline.x(styles), + start: vline.start(styles), + end: vline.end(styles), + stroke: vline.stroke(styles), + span: vline.span(), + position: match vline.position(styles) { + OuterHAlignment::Left if TextElem::dir_in(styles) == Dir::RTL => { + LinePosition::After + } + OuterHAlignment::Right if TextElem::dir_in(styles) == Dir::RTL => { + LinePosition::Before + } + OuterHAlignment::Start | OuterHAlignment::Left => { + LinePosition::Before + } + OuterHAlignment::End | OuterHAlignment::Right => LinePosition::After, + }, + }, + Self::Cell(cell) => ResolvableGridItem::Cell(cell.clone()), + } + } +} + cast! { - TableChild, + TableItem, self => match self { Self::HLine(hline) => hline.into_value(), Self::VLine(vline) => vline.into_value(), Self::Cell(cell) => cell.into_value(), }, v: Content => { - if v.is::() { - bail!( - "cannot use `grid.cell` as a table cell; use `table.cell` instead" - ); + v.try_into()? + }, +} + +impl TryFrom for TableItem { + type Error = EcoString; + + fn try_from(value: Content) -> StrResult { + if value.is::() { + bail!("cannot place a grid header within another header"); } - if v.is::() { - bail!( - "cannot use `grid.hline` as a table line; use `table.hline` instead" - ); + if value.is::() { + bail!("cannot place a table header within another header"); } - if v.is::() { - bail!( - "cannot use `grid.vline` as a table line; use `table.vline` instead" - ); + if value.is::() { + bail!("cannot use `grid.cell` as a table cell; use `table.cell` instead"); } - v.into() + if value.is::() { + bail!("cannot use `grid.hline` as a table line; use `table.hline` instead"); + } + if value.is::() { + bail!("cannot use `grid.vline` as a table line; use `table.vline` instead"); + } + + Ok(value + .into_packed::() + .map(Self::HLine) + .or_else(|value| value.into_packed::().map(Self::VLine)) + .or_else(|value| value.into_packed::().map(Self::Cell)) + .unwrap_or_else(|value| { + let span = value.span(); + Self::Cell(Packed::new(TableCell::new(value)).spanned(span)) + })) } } -impl From for TableChild { - fn from(value: Content) -> Self { - value - .into_packed::() - .map(TableChild::HLine) - .or_else(|value| value.into_packed::().map(TableChild::VLine)) - .or_else(|value| value.into_packed::().map(TableChild::Cell)) - .unwrap_or_else(|value| { - let span = value.span(); - TableChild::Cell(Packed::new(TableCell::new(value)).spanned(span)) - }) - } +/// A repeatable table header. +#[elem(name = "header", title = "Table Header")] +pub struct TableHeader { + /// Whether this header should be repeated across pages. + #[default(true)] + pub repeat: bool, + + /// The cells and lines within the header. + #[variadic] + pub children: Vec, } /// A horizontal line in the table. See the docs for diff --git a/tests/ref/layout/grid-headers-1.png b/tests/ref/layout/grid-headers-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae2d8d34ea454e6af8559b5c16bd9060ef3f699 GIT binary patch literal 126196 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⪼>t@JwAx3>*f+6}-dLWKz!xK-~TA0L1H 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 HI`IDhkod|? literal 0 HcmV?d00001 diff --git a/tests/ref/layout/grid-headers-2.png b/tests/ref/layout/grid-headers-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbc07c884334709be6da5ba090fd99b538fb6a4 GIT binary patch literal 113070 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�O@cE;6t4q94w!I|7N}iurP~&(zyWw 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%0D=+k{8iJ6s|SsMt{fyVo)n{j${ zWSmN;_Z9+2u^HEE;|Zj4_RsKmT7}XfA#4Jp%hqVo2cRKHw)Ry(W|uzs?_bZ4GBJU1 z=!lmD=#<&$@D+PGM&JFOuJ)rd2jXzv+Sq)rmcr6O0DWwiQ2`2shQh+aAk3~%uMlHr zXIyl1?DOvJjdqXEpFh7BvC-;fiKd~YMGGxQLszZ|1MH{FvukTiV4%J$5+P2EhQ&uo zJ=AiiBE+udigiN;1;^U;jVorOuj?8b=FmWRczE2j*rlVT%}q`7)4*7c=<|#C83{r! zR6B8h-=>OM9U=!Xdo2HmV?*Foq>3slV?+V5Yb5jE9s(plRZ4H<;o|ZM3H0|x5HdJ4 z^jZuDsodDyd>?>M@&lTIq2UD?l$Z`Z{PpV{GU68QXrT}smRk_O?Gf|b1%st7c`PZ%JBzN0q|n< z%vAV^V9n{FxYvN5Rch~f6*fFRZpMK1g8?GB)7B)VTiXdIwg zFMoVnq=^`7OhS2R2Ck%{&oc z?!YS|U;$fxk$&}AbGd45J-xl0?~NV5_g|EsCpJ6V4K)lL;m&apT190kDFbPgWC;}C z5Xq|l5J$B}unr31Sw#&BN|PrQt3-B;{ZfpoYfT%0%7b2@ZI%Dcf8hKUEl%hp+iU95 z$MO8Zck6t0!1(8QuJ9*|8q3pfizheZAKc%u@vrG0YwFbUguV`%H6#(o{i`ly={_H@ zUC(3sg!v71Q1Zss^Pgr{o1BJ&+)r4Z0zyciwIy5h!0tlx(r)GD zQfg$lZuaJcy+9zH45`}}%~x>WI$2!H3ju@XD0&!3PRabYl|9XjI@Z_Ne&dD8YwA^r znDw$#AT4e?{N1B*hql4Qr!&bU?~QZc^H0RjK{BECsC;4+tmjjHe;T%@W2f&)h{ABy zZsLY3BlI-|g~iuNzaoD~kve7cV*TMvPO^C?aDK$kj0u^92mjRnNTFiHZn68;LEUNY z42VuuA;5iWJ_rZ*5_ntU_oVhSTsvvTnF~=X@Rek#Z+?WsoLvmk=Rz;hy-hDXK8vu_ z)B2cBV^y)*$A_(#F8}nIHEtqBHq4R=Lo9r-Nm`un9|$tDxc8RtZKUc#`rV{QSKq7) z)y#){r5^0QksO3LbODPrZyr*l(@bvC0M;AF-TH@EM<42>$TU*8lh>5n%JQ}|E^$&g zG9_Au-bb{vQ==w($aTHgLE@_L)!_FfrfE^F-}F~CNgRTz{U7&UpY8sWb>9vXLGBB3 z&JDZwe|gx-_>36F85l@a)NRE~%3>G}FZyRxUrlmiI&1*9igFbrC0X&~!_1iY^5KzqK(=I`6@+6}eN`!AVU#z5c* zkXiB{5hVX~bAcEUR#FJ_OTFwI!UFL#1MnFWy>(yt+T}Kzr?0}W!;tgkKrJaz``tq> z7E~MY3c|1!KbWjZ)IgsBlz9!0dJHp-bVT}!(1Dgll^vJD&~qo$l#vuC1DDgWnaW`4afvF*G+u5kXL8IhZGKwE*qlAS$BUOEu^ z!(RSFe92rRn~w8U!(41V3pwko$*a8)id4#tR@PfuV@*)TkA-#5q=#49Ftlk}-EIjd z4Rv-2-=!c0>98E`2A=h$(P_$d%y3@076ei?7UV z@Q>nt2*SGk3+s2=R6|mG;EE?@09zX%0DC|wmdLH;qJD2hkz=nS8th=xU8|QE$O^xj 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 Yo_fi>eRm@C-}0F12pxF2l5O~Z03UYjBme*a literal 0 HcmV?d00001 diff --git a/tests/ref/layout/grid-headers-3.png b/tests/ref/layout/grid-headers-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee77d50b5e1c514ec8ab9b7c4e07434dbc65dc7 GIT binary patch literal 102354 zcmce;1zc2Jzcvg4Bj|{=t()&P{zQ( z#KyoNtHZqpejyFn#=*dhNRp8dRdM~kIVl=yrcc>n=N+1qOs=8HEE}uL&8;deq593z zvJL~!$)(geLADNZ|JmJ}tgcuUvGmT&OQ~9ly$?BKjLo;Vrk>39{}h;vc@wI43Ly#Xw-RVh~`7{1^Y3ML;eS+h~yGn!%XIJO*V@mQszIuQc)81i^vcsFeT)$e| zm;SSRQEYxoXEAx_|V3(=zW$DqcHHX2hNH`=E}{UqZh199?QX3lBlBL3egAy$mUf(~lubx7d=$W_b#lpN z5C>|LV1%jWxnn@KucL35wIc&>US-;8Y( z++;}lP6CeL($o>xqYpRB8g?d4>bv9TC(2Cd?UyzYlS(<5 zYr-O&sB_yF#!tR$2Z2E1A7OdDk|@&sVog}A`-Q9^FE8MCOEk19HSo@%H?gUWjjmS; zmw*6k-^JO{LwW`V@zjuz8)TG5>J%KQyms^gD6KtfqP~>@)!@#6n|GiR*GCt)9zQOb zV;1i+ta3m6feggs^?Pn&XxN&%+Mf~n;`wtu!nU?HyOhr^J355b&RfZnORK9_N^4b5 z7_`k=!(X2tD@jyXO`=~hful%=LB~nk%C)Ij!>^7Be+iDhD=g%^PLZiqX-!J_vfgoh zsNUn~)8fI}U`};4A14J3&25_wUe9CpieRFfRE=;4cX#*QV0%Je&3T)x*)O^;ySuwJ ztYYaNbEv4PmErOj+}&C}Z3 zh+V_;uI=gC;o;$wl$1R(-#bl}t^}l4zqTfi)9+3-RywRI96PTK(7C?U)$Lc#fm$4r zS*LQ2zfVd|Mg}NBys849L%Kwmv5aVAeK`oaMBunanNWX@=MXVCGgcO~$Aq@W;0fu>mro(enP7*)B4~uYro8UqUV|#V zGHSpdf{nl_DL+e!@J0p+xc&4$dj@vp7ik|4bCgSKygzO<|i;XJv5c=E&|)F=I3xVmmW)b%lF zs?30u?0O*mKBRhoukQG8V{Eanwe>n?sq^y=vcc);*Ng49SOZG@8wcE4mD}3Fj$)2> zW)~IFYG}(_w{CUHN;KcADQ+|L;THBf_pww@n#0*6lYldeml|R0g;bQ6kM@+7mKJGO z`|T<^kyB8#Bu3w&;Ld!(as4(#)TfVnC2^uaF+&17!qL$&abj(a*`5OXn4T9}^YZ0~ z<~y;N6RPaDuIa5)eh(TT{(Z8v;zmY!{6U7?oZ2a&At3}>Z}F7{TgD&fYHDCF3`k;s z6&T$bN6qm)ev^ z6~HSfXl1WQ=7+1mNZz8yX(KIOuiX{bo7mFr1HVj?@IC+T&Hs%MWfvu@Pf zCv@9ezyZ_pemrL8=7{Lj)o_90qNSLVy}fp6svY z88r^3@TxbxfOJK=!v|Vg3v7;WcfeoFKc>(%5ErqrDdq(;paR$N#gAh_lJ58>HQa@{ zkqD0G=#g$8Dcr5dAU&5(A|I>;f8Pv*nVH%9n%8H}l%s8KL+?YZyC_?~vwdT_I6rxj zdW=n;qD1ef*7BV}3GzWk-8+_Ug2P9xSSPp>+`NaFQ_ghs*YPQ(1(-3`0tR^B{Rq5G zGjOn|wZwm2bYOJU2>(|=Yqirx{6*i^WM!ME$XmXbFJHcAq35{}h%Qo;cmy zEEZ2|BwYbzo_&4xt5+CToNep3S*+{dS?*2cRT(c#7Dz z`x=od6|;TIYWYajh}ZHLVy*7 z>9ur?d`jML5=L1wKhTTE6@=LeqJcl!)Be$*b?!>Yww@9cisRPkiCiAzG{O4x>(8=*R%yT=jG#Ct9h!axFnrB8x`VadG%&t4uT(vOiBE1hbCDmOT`Y`k51R5HU3ymmxsA!^h&u z`B|T4cls-9rmc^WW1c!t+!o%MK7IV?g&(`&yooY)cdrvKcTg?+564pkd{0@bd5U+B z=T3D*EvmPTCi8xFXB#h6{*22;zP7BkP3L+4(UMz3gmwc>{f(&di$0*eN?9Y^v)5}gCsd+i^@qlD6{|k9hg*36my6_!IxRx;<1-6>q#M! zO7BO_*HlsQ#+3866v^A=`bQ9bUYP6@& z?L1oC_BY+je&J&qf*JiVUjKQ%aG429GTFk>)A!FvB>6vSvlRzoHsBkv#BmtQ<`JbO z^{@WXOpgHD_wt>$=OD7A>N4@O=10?{uZC}uR0}0jTILC`0@($wLw!Yjw&yM{xbU1E zSi8mGHv%%b$VMHF`O}bd1nAl(g3z{0O{T^heuL!`mZk;jtV8qGl@@PqL9iARmmK+< z!a5ewlk1Lhq7f4G2l@K!s_#@X7j1b-B%2!Pphv!lHI&#duk7c5SCZ6c3NoF&Lm#LxNV#SOQw(9@T zi^N39lm&?@v0mbsj~H`*@1^Jd2x-b};%!=>y|jj0M~S+6>^2)|xIL(1-w{0aigwse z8nhMa5$*8kgj1KWK8rUBiPSv*AkEkeqkux*a(C`N=70u@n|t^*>G4wL_XU1M6qC2kEam2xCYgKA;0N&FgS zg9xoigIThajyw}_EV<$Fy9iq_QzEX~E38ythK(5>7=}Jj3=R7S`+R^gpB- z+i((~Uj6$1{m&jA+E6gNJoGfaIW%8*W%L? zRK8gV?V+?I79nTWZ2q+Mm)NGABXLOQ+-I;xGXyiOb+BK&Be~6;B2NfRPfd}xfL-l$ zIx2gWkl~wd7i|#)PKz4m2x3ZiXKYvJA}2j-1BOQgpF) zbEuZNe(d3gCZbg)E_WzrZJw;AH<>J~yawr6mC*;N<<1dBu>_^i*M?+0jFjPZY)cg; z*3Ji=`nIrZmLD}GDI^J7x|cc96cAS`yZa}d`MIO!QTNx0{6=mY{)%j|t(?qyMQ=yR z*;5Lgh0wG3HHlm@smx#LM^=*NVq)Z#nYJFZ{_d-B*Hs`_fi(&K)3RZ9XPk^BsIb6t z%(lGr*(dR*A9#;U)nAe_j--A6DR2k6xR)4?$+LIp{y0wtX~vP{+B?UNjrQfLpSI5F zYtn1Xp`wd7lJVrFBm&8&CCK_1_Or6*^}Y>O;Hp-*pWl&eiq!4Z$2#)Byv1VpqDT9q zDn6=(paCmvlkxfHWkPqJ8!-#GpLV+)uLrh+{JnT7Epc)!b^4rOzs@dPV5aqEOr&)! zbL{?szLf1XHs|{Li9?(zx`f#b@-O6dSjos3Q=(f>&G4+q@~WS2iI>_+(|j zT0x)Sedqp(;eGn!pc(5*;a}U-lKQmJ#!vSmOUAHpA?FWpUaZ})v$J2 zNN}}Mrx;Agf?=6x!*b0ug#wRQqX}m6hz?Yf9(PLI!?gZYF8Q;IOJ;KXz?9w<>aC+Q zonqja?u54Oxu*87%0#m!bWdBGV7JYA{dU~{-S_WM=O3ej0z{*SKS3)7X`5b}xK;4) zZ9WC(z7VyTIS(lJ^rv;>>*W8?{%^bQp3y-NwEwH`-+|fhIOKdDHYX^Ci}VRWe(KAr z`1fP~6*K+qRD8^B3&f=+@_Bumv9-wgh{*(Cn&d>#>c))#B_&zxp0LSSHNG!Na<#Vw7RP(BtQ->=!IQUfq!tJLaAwW0FI4Tths5eI139)kLA+Y z(N1F0)E94E3G{86J~+1#E*Tu8gy%auJ;{%|<s?))Hdi1%RjC2BpgUu7e}*t80D)#B z^}j~nHNIWcQ7AK>BCZ**^1a+*@H53|wv4PSvQY``^YxR{hH7onTs2M>S6p0N{_nIZ z+wJ1Coa)!*g+~gLd@`4eg!AUOesP26$1nR>_X{5xGKM@l~~81pIo8UvQ9 ztFl(J9J}nuA3(*$|rH)@SGp46X%3+U`wHGW*g|X;NT9l1`|gCpy=iu zw!~-Z2b? zVegrSGXFcr?cr26XN~((@rtu^a^U8%S;Y;_VXx6eI>RF)t++YR^F``E5utxi`aovx z&+$nJOaJvBNRmYj;U6&2?@UnrG@hV{iLiO7(%<%a@;}2w{?F002~Ct+Kk8v-1_lg^ z5gfv z7t=xd%DwQ#If7B0Z)2j5A$j-N*tV^qAy~nkU`4~dW1AE?d_Zn~UtU7Of2%ckUlwJ6 zwz_A}=;^zbJW#&?8tE8*8hs6bw%tl7z@Ajd4fjpI6Wx$S*`q7=!Mf&kuI)yJhvWAv zr0kCqZ3uPw)G9%`2w?EYR)(j_vh!1J9y*>^mlu1+*;`zh-|!d4x%Yqm{IxwD`i?!H zfY*`Q=$)nQ;@Q$dTj+7zd|%{4CMHNZk#;&Q{zL2Xs4U1NTWA z%r7X&Ia&G|1CX)o@>tO;V!{JMBcm*hSFgfq zZe2TIgpntnG9?Chbm^IEHF4qkyelgqlvD&m!}WpcHh3zL#~Mlz_pgA3nPr(Zl=;5k zel7aF>MsW7KsNffQwGUfTU+c+<;q&}@?oamK57M0VVx6sU!G6AN;cH~{z)He6&g#| z$U!SlgFyN#o419Kx_)LL0PyDE7xPgT$8b0&r2A>1T5*Nb+fVa)&z?@EWX67UJLloz z$_&oPZn{=7P?ed(DrX&cve{2TKxsq%cwII2cQ$;$Ld!&34 zQ`dLr1SUb(T@fzl>*S$IrVG}I9_sL(RR6uF@biaQxVLZLiK=zksc~K?zv-xu#y@IF zq8@pZ&Q4kORgEK_jBxVXjZIz!1%+_9j}zUXKl&26vu#I$-HZY4xCz@l#9)d(R?~cL zs$U(?P1bHOV24daZhnJ2T%rm7cEXUqtb)z>$gQZc?rWnbaRb^Uq1%XP#7Piae%Svc z^y`TyTL`^O^zP!pS4-{(-9tnqEj#T5@jISES8fE(yp*M^9(=1ut^)Dh%gBScZ2Pn3}Df3CTnsy4T;Vn6ygH7k~b8)Vw@dpQm|M&|ZItt2`hO#R|fAM*;{s|gI-!a{NjF)a;yM`9$xi|1H z`+z@DtAVgqpa0eOUue#5pn=c7ozcIa!GFYddfL_uSbs)E>>P_QJ#M`JDv+ApoPNe! z=Rw)A*Uh~$1NtVh;bpGjZdN)HHHXr-up7| zWQN})MVfK+zO7DNJwKIaNZ5BdPxI~>SuIDVn|x^4DVP=DTv@$B%x#1>jrj)#GC(k{ z-e4B89&b6jxJ*2cOGsdVh(Lod0h31y0c0Lv;Rpa@b$opMi%^aTxjPCw_W8c$+@A;l zAV6E$^3FUtC<+Y?O;1lpqtS2PK$GN{>;X?9n^&5hEk+;pR)qyhjNBcBar5v1c)9Zd z6O*y4>v6sK4svgEYYPVgAsT!Eb+2#8$wBd!Yli8IL50XstM4jTFhr&nEE zyxub)A|eWs&UzlC8Yt8nwZ$w0~T~! zo8&@xLk(DIfJq8qGlZ~wD60YL9F?d<&gEV#fx_>G!>eE*)F zp1bP{32M;vppJZEeB8EnnwXeaf`p6=tu`Liq=tl1Ql9VUjf{+_AuO$|N{IYWC_$H3 zCdS4=%(S#~^YinI2uEjUA|+?%inX}ZR5^*Hq$Gs`Vyr;exk1v%_wTY2Sy@@$ww5Il zsj7t+uF%bO2^C%4NA8Eeei6CY+xz*7LoW%jYEwPfes~KzI6ME^Gm37~qbl+#245MKU_t1xjP8FNM z;o;$-p#~3VRNERGeL720(uJQmy1RG9D-s3!huJ77^c^2pnQTwkX9P4U7%K*cg*{|t z6%Y`J?OxuD_@q05vRpVjJIfF%%T-~?$<9`{xqtuuhr+ZpsyF1w-LVK;t&ggE-eu~n ziR`UD-rJbKhG2l?>i3!;0Fd=R{rSrTW3&JFc0EO&zpWK4jEV-F#%V?j%hxx3Tr$Bv zz-jQ*XtCHYO=<=Gz3Mb**ZD3 z^_krBKBZ_qJw0W4@Zg2AGPWqMu<)JP=Y^v;0B)aj$RxVe#+1TAWBKmzfkL1Sq*9OuY5V2DKa_v|+O@Z~qiCkyyQb+`KW18d&V7-u*dmb)pL^34TZBu!g=rgjmx~5n6?`<|b zs!N)sNQdzY`|4A66}Vc}`FFeR8r}7la85Y^#-s&F$?= zA@t8ha!xKTl?4PPku-q468~INllE+r^`bk6$b%^OA;WwwM+rD7|$+FF5{>T0~fg$3m0%+Qc>P+x!l{@TJq_UlU| zNIwn^0H|N_NMUDd>*Lr)d?xJD8ftff4~3o!;HD%c@$vJY?xxNHkF&P6HaDl2r~Gcz zyw{jB;>Y1>rK!2OITDEkzF=CpaP+-u;o{=rZ1&f$UoS2$1o)pkp`f66Htc9*v1W85B%jg^1A6RH{MK# z-Wob9<^OLk4#ZmhN-S}$7*xN>xJS?a^_>4@2(*wjR$T@xPm|T{SIVJ_yy5#!>_H*z z=uGCQy z|9s+Ft*XZA7ryHiMm;5D!>5S*m)yz6rhNm3vBLxay8l}3)QWN71wEfe^nk!85#}@V z#)mkVXjxzwY5)pdDS&EfUM!*#PdxsOpYAYy{xIO9vL4M6}7*=5B4!{ zUp#a_J3WT(`3RoSXyqrgeod3X8X73w@X0t!}Sde z#AC&>GAk#irbzB)^b=zR&8NYD|DnWx>Tm?2HZ?W1AKy<65V5j(;4%Xh&febM#KZ(R zpagx>NKg|iVrpvY+?sm= zo20}FNvVZLTzzu6%p8}rquim4~snRMrvy-H3 zEsc%Q@jrjst0s-iGm3L?d}8S;pK?#6^#0yfQ*cO0P0fG%W~PymQ9F#hwx$LIcbl(;xnx5PUtD%*B9a4Sxv_#VC`y?FWR71h0|i3uf}80go|PnDG& zp9DZ$@U%Y_?AwNlJK}dS}ub)4MUi)?u{UEC>FIW0(qo*fwp~$f$4)M!<3o#SG!NEbH zP=;eQi61|H9EpzL;o<4+?QIvAmkvL-qY@IM{t%d5xP3F$>MkO=zC96G`9F{D!?+K; zje(qujEp%KMVpVAjk&q~Rr6>v{d>NZjmUOAL68Ko-SWqR8%RBUI(o$@o^I%KdFi#m z$IEMrP)V(%?t<3B+NGyNJeeF7SRXz#it}}(0hj3K!j72Z4nuBx;Y1hV%g>O=WR+U>)In>TN|aU#kIJHKbq)Fu`d z7B(~p=&WY zt62?O7zjf!9`W{1PEs)CGL;Jo2*4CgOztT{j|o7(U#OUH5^8E|ADcu%@wyw?>py=U z(VYDLy(=#*{P^@#*2BZ&Nf;?9DJu<_hyIi-)V%&{rgy|+tsGCh-QAHf8SO3CtXJ^3 z-m@n!bnflhfvZatkGbajO?>KVd|bVg>2vz%=u4t=85(Ft&>pZBwXhodPJ4wo;K|v_ zpaSlk)W*AD<}yCQGDzG#2=gAlFxt5kE!AAa2;X;L4hp%WNuDb#p-+dsJfuP>InAU+ zZuyq3+JcZ&+mCs5n+R9mq7XYwl=m%adx18@FLN#5FC_hJkup}Um|3M^=IjJ2+OW2; zb9O4QO8NR*U*h|jvi;fjkzD|zj|CA{$m8l{bLM4ElG+eD7hI*TS}!C)%S=b)%`9zv zNeLY)mWG&H67TqT9bN&Kp|D?K(D74s`qXXcBuZPJG*95$ui1DRfL4bMol>pU!AJ>D zM(uY>sKv|gA-s{t(}-MPgo0czPM!ABJU8j-6;gSXrkT|fEV8tDmk)&9elp&hc@;+vB1fW;bLo2mCu>cSEWRR($c;kjfw!}p1aBp1H-sNwy@>7pVw24?gu zm3X)fFeWP$`fhAiPoH+g_n!!Qo%2T2_HtV7H-$}csw8NV zSQIKf@P`f?K-|_x3)Lh62cig;B3wP4MUbCAS*_@&#Y%r3PK5K9^5nT~m#9>z`FlzagjN%l~`y z9*C}VL2wa_`HLB{LHXm)fbU;U{Ga~(RC&$~q!53+JbD&ka}$jJwEf?PO@Os|1v{@c z_#ywt(E9F~$P-?ZglTw~Dus+NYv#5rLMBlM8#*HTUj~A9-O6MaQt%_-05c@ z_y8eSX3}5bVWtHKp-MksVHl8tXuz~pR8%knj{;{xjF>@3YcBybUrG7R^Zx8&&dBVn z?xvi9fq}$Sy+@_`K2Vo3--1G6ps5Y?{%l(gm!RM)OUI3GADKa_P5Q*)=h9b@Kp*cJ z#6qrLzZC=f!H=G-w0UXZzO*Mw$w^6sSjcgD^!E1l##r&{)Nd9JNcyTPXRM$g zMgwHk7yIR|cP|Q(Q&MOI-MNH>tVdd(KSBTr=Xw1gpvibTb^+oK{4mHsfRc}b$67)n z{AUp|F*WsrGXtP^`qI9p@Yv8V041{XIPz@*EM4gJ>6jG2#!u+bfaNpB1KimAq8evs zXQ@_Stm|ZCWX{wrErGWg7McTYwk3nf|5O63Yn_(Iw#ads?p#3ZJ#7U;zhYfR-j@Ye z<4FXaups^AaUf8U53YwTx~^u%258fd1+bFbSd5>Py??iwEQFq$EsB+yKDtyXR)SlM z^;79{#s}}b8GDe{^1UNmWr>qWW5nUPuwa3Mdx!RM|ADt|Ouq?&Z}s(R=ke>lGmrGu zp8e^X$4ivLUIM|MfGqHPfi9uLs&v3VIaS1)1=Hq&`yG&42X9W-@+<*jO)yx%`*P}! zRxPDQ-KCGK2>Y2zxSwjZ%>xzjwWXV*GE0jc5oDjehCP}@!!mP^3%v~fNYXyh?y zhk9y#(!~7;z@=+;BFQ~0jAua(m7R;!IG2Gel6-4BRFXwXQ4fe;!7+Dnv9;K?YnmY zP0S_6Lqi+!T$-U3j!p%vQpuJx3}}vRVAtH!>5&&aMswy}nb5eX-$+#Okm2kJ^2;$` z2=@(<>oT+!f&BP<0JEN~urgroA@Gx54bEc;N$HOPD{-G;v8(ep{ai{UbDVodE(`fw zZNGe@6u~j?=ZSqE#SyCoVV3#~NVxgkmEM#TZY%n8&M-jO(}mtoV%NWxrW|A&y@!=1 zxMJ(NJ;i69z&ZQHd-YR!dE68ldw~{qtJITNY97@kQbC$ehatY&BPFI7D+*_!Z3(^e zXb3l|htl503-neJVCJvV&*~heQWz;t$=@bxuNZW2aG)ngfIJ%F4O=z?$4 z6qTyac8gLS(5~nDaMR&?is^DrMVjRyT2BJTr>A>Q9$S2~wLd*rm!tXks z9Y3*p(aS6WyG0kM%vPHE%!n88in|=24&o(XO%G5UDmoDNMC4(Zw`~+6Zo2G56L!tX z$w_9Z(HDy@(3&M|7ux0>?Mo;|q(7<%kInkYF@QUWujJi>A3$VF8*J#CffGvhFgv+G zKBZmxRn)y+c+EQkx^K>Jxz~S;7RuzR`xIo3KL{Fg2fF zi+E*ge|dhAcN0hCk;J0JVFsTAIzL0)J`FAoGTA`feK8qBAkWSce&Vt%N004~?(9x@ zR83;iNeGrITOp-}EkB|bFw>u~r6I;7G*PR9)&ApGwPQhpS5l8%Lmux72Eq%dFYWDETgRf=p ze?UO~A9ndGybW*Sl2KM$d!`0G@f4CE4?`n@>AoSfb#()! zzszPlss)H@luq$INb9aBG(c<~q`M_&0R2>9c}yK~^%xDR`T$_z?p{+_>Eh@JAl-5E zayfaZT`*mm!j+~o;1q?>h8)!;B~jhWfGV(Y?j4i#We!@jZK7o{*HD3Gi+;xCM&RD? zdxaB|h>wkG$3iuEi?*5$<-V%L4Wy;uv79iPtdQ@v*QIoIz1chy=cLcXC!D^1=GK=| zGGR%7^Zpecf?UeJ;=PI#g?$T&$mv!CDbT_2nW0& z;63Vf_K4{&07%Bx5ulH;{e*c?qy9{Z44w;xAf7?!L%;Y$H(S0StJS!?j(Xn1p)T!Z z17SkV*E;-I-*{4gUpK9xvdF@{f6I$z=(SUNi`}fQu06BpyJOkB>}`!`iepcqjALUM z+VwGc81rMG5U;fDK7w8~bY6HBG)MZ<9AR+KV$ou8{AXYLaG((H#OQ34;{ob$p#L_+ z&^vgDk->z?eoE$JlZhFL3H0KB|G0F37maO9o>W&(hMkH-o*43G^n)S}`|3`bKP2Kw z59=E&B<|w@CF;++CyV&VWqZCPIdXKC*?05uQYJuhsj!fSNjbd&^{pc`9OHE2IfIeb zkzaIpDZ{ndc#`BsazM>Qe|*H`7B?k+%GV)cWe(x(7Byy)&v#OK+mm-ag-ptl1XvVR zSjpZA8-5apI7C-ZZpD}GyVsj@rA$E87qXtO6??uKV~FbP*moM?f^4;UeYs-mSlsI@ zWQmjgeNdO)$ghT<@3hQ6$ML97hikJXurPZt^7+0^8lV}ruAJ?n9ey2&3Ezy@XNQ?S zGUO@t3zlex0#if^q|8lv12xTyd!Hbq=}*Jdy&s@7Z^0v*tl=X}I=`fqlZRY%4ntk| z)9g*MZzQ)O5$_C~s&tBn*FWpS?D6R2fr7n`#hNcerSPR&x1mv#l>jx6<%-bK);=nP z%BH9m-Yxwa7tG3BKx-%hsWl=PA>BfjM797PJ)*;+JQ)u7=aodFgzmdf?(XX{zTK$V z+-#%d`!KelT>E9>iTFz#KW3<~pJ-0vEzPd?_xqRO4beS?)J#A){Rl*YK%I#I^^yWQbBDnaXiQ zX*oYnTJb~bT7hBVkmq>h#7|WWpMt_ue7OV@y0iMEa+(Ii2^M*oW-Ph!$Zp^iMQDDE zw|i^K3*-OJjcHW4C=3=?5|Hwyt^GHDg;&!&zS`XCmgRt0p}?OEH|W zjmOyDYp7pRj0Y2z#!qOC4EPFq+0zteQ+&Urs46$rf@4mk{3#RHGmu;FS$Tm!2sF2v zQ#(fwrMd40KUF%2g1;sB99@)=($pJS5100r4jiDV6kq41j#S1u|EvTG5gddv3SOEB zn9&=)NcJngcqFgMmf&tkWy+S5SV~bIm?Zi*c%#2}*NT%J6k?xhv68LNop>^-v%~?N zxG0;%g8%8g7@&!IQPnpxFt+jXX4ReOh1%&NdT#gnbZSi8mrJe!rKE(s*`RobEwFK2 z&$)8)Vwnn%~7gQ2Bbf?#Wh#JG#r)=Om(W=D&=A>b#&{EOhGzCMxc{SE{#!l5?2SWq7leN70@2Y+vx zhjnz@LcZ$dMUvcW>so5vb1?a&S7Vg(+$H9NORR28FMTb%t#{#eBz@}&tj{q+;LthE z!-mSmZe(9Bef7+>|K~+reg7GF+JH6)zao=xAz{rvwGG4ThQ=?YKXv4Ar767h8bOwb zcylBff-1nU(4JKX4&tWF^(0XeNv@4OR~6|fY3#g~`OKfcxj;6-{mdef@K0Y!>wsI+$}Ul>$S~ATCpk=10gE zP>v!$j*U{)Vxk=Z)#h_A+P&m<|>sebw&8 z)j3(=sO$y8taciiESsmUm^0Y8pvO+zLI^F!MD?$>@Kjw*GtEzeXIVr-u3<_~h(G?- zW6a4x*|f_AYo6cLjlj!h{$UMnZAocXn8- z3<{yj5|@eONMe+s2fg?EipDR4f`XN}3ica|(|7WqjP$ZwhM9)6C(JZgzEE}%#B-_6 zRv+I^i6mwR&aVn_50b3d%AC(#h2AKvx{FE zJ2R8+ya|Eomf=^R7B7m5pP#>!_KwH{78Yr3KS4o3P-38MM@~g`aeBJ2w!dE{7(O^Y z-f5KGBk`2oASxw=;xZ={*L0%r$Hs;Rpq|twm|#P``rh6dr3Lx<`9($HUDsKRO-!~3 z?g%<9HpzfSLeMM4pzGwnx}R55>;|n z`%+Dh*0h8c5b~*@@$UX59AOiv!4>w;3z42w$Z5pQA zbY${sW%mXuNIOi!f1-fwFZPe!d%o6v{v7-H!Gi}57TgvPxw^c(HZ)t`H!h`z1G?9F zAgKAvOQA8!9^d1S?HwJz4_PhP(%2{xbHh3A~cGEAW~CKb#WIgSqy0h*f2o+VS~$559ZvBH6~QzwanEDBQjd32`;g zCAju_wO-fL&JLl-ytk^WO2~a@xEBv@H^foNHknZ#_Z1EfH zK)o5DuFk=^G*wq#9$=M)V|U0k`B?ko`Q7oX7*O;!zPq@HMZ}Tz9Y|)N0Q$DxhV3#@ zQ&KLm#JtIynbFyTV~cmOKhIA{NC+eV@*uwQm>|G8wgPbjp6bh&b|-HO3%g&xt(u?v zHrN1a-<(gq-Q4s$)lyn;rp_r$pJyc_SC*D?!JNF`;v-#4aI^L*I2iAU>GRym3KKrK z#ivh@!3|YaYY!s3wwF`!S^(GV1*9H$au3>er2mP^uXm{^0~}(#MTAa*PvX+fiJ2203p)z#RRgq@Vz@v*I`!T` z*oxEA9ubO`)dy!z{Tg0AxvxIys5E1t2vNRSZ)6k4UC!02 zA2W~4&Sq1%Q+jt$ej_KIMXH7CKR{LM(V1X9s6>mCUAC_l;E;)q3b+#~{srHaSA@teUzahz*kSNDU;+H%d0Kp}_* z$w`lJS^fg=wh06!S~*D-Cgt|5a`ItFwnD*h|ABjbukn5-C4L}qt`P2w{^GF>R{{JM z+Yl&CBUv^CRz zCjCD9zbpO5^%H?Ue-2G|I9C6U800_H-hWok{jJ_jq$E`e@+a(*saIj(Q~%ea0e0JF z>H|uzI)M12URQ}D?B)u|O5_VV~v`M zFd!2Gs#`y?T;+988TT|)sC5C6BsVxXC~-iE>NVcj-e&5v@sh>jje#iS%8brJfWp4yB=582pirngT|-RY4z z=i&&EkIxMTHR<7EUjuZS1j(H{feeSjAZ`d`z^hGRr?ZbzQ&T;?c)nU!5|0fI()oi?5P<58KRQD) zKYVyg2X(eyCZkiFu%$|<VAYxaib4Ny0=#^RG#5#doD@D}A#RNNoE1iOZ3W$mQ{jovqEKsED5`z%UVA7rt zD4SXo6>zB@;E`a>dJoEq8SmW#o(4FW2XV5$o{kr9igWLQ_@MuY z)r>2-wN>I9 z1O!AxR9Z@;MMOkOKsu#MI-~^@>6R2kT1r6al!pI3xc7eRob#^l`@d&>d$IT0)G!P) z&vQTbbzQ%!bH>h~o*47!JIv6fV+Sxkr)w4BQHROCowht$5T5mLmhd!zt>s3lyZQG1w#2kie z8e=2gN%zD#cnZN!#`t`#a(v}IY>^UFeReX{!Acmy+6K4=C9O%OeavuB+JwQj?se6t z!M(kGM!H-|GD@EhcaO<(QsR^32!0>2TfcB&=#N+7b!{Q;$lU%G$^^KDB4ohN zbd5Hbq9@B)cyj8bGo!3#tY688QF56nZ<{X5KD&-B)kDEDs68TrkTh%|mHU3m6fmvek@v5Z;yh;wN!@yhnIfTF&iUc{efioeQ()p17c=S0Yx)M-q) zq1oVLxS}g}=9fP+T7YAg{l@B3hj#-#4_!m}17fzy36^Dv_TmT?R6LOIuwJASWgPno zmkhCstFdOX&%Hsf#vf8RIP=Prh{CsQJWwMF&$r(5yxFXI)baHpk8FImsXdGrF3DDG zLggb%`#j%CJcK{&(PQ$6>LK{0EqpqZM^dyU38TYtT$wE1>EHq}@26(edYTOGe8!tp z?UC-`v>7{d)en*nDIS>Y@paP3QSgPUy=Yw>;qhH_vNZ8;Vjvfy2{zGstL5)=Iz?9@ z@FuPSPfXU&fx9yz552_`R6l>#ZH?D0I6n?g;7)Z(GY3K+nWMuqGrm^kckc_YPdGF! zE<0XTBBpS?i-@#N*LeB@_a?`Z#k;-LXRfKA6>Q5tl|JI5jHOuT&sD>&5qhh2y^?h% ze~!a^UM=Oa=5~|0K-|WzsL1|dwQj+6u5=|mj`NT5H)HO+ek4Ezx4I+t-|d+H%f<6Q ze-OAMJZSjH-~Z>}CIyBoLN1;jvo_o~x!Yah%pae1!Nugm7-4iP=dp3X46?chYwF3! zgsYk=R|qGBx+Ja;1f21F+u;C-8$|*?L!O7f@MK-^X(d-F*d4jEr1WYnHTWnszg#x8 zEPUpJa$H+n-<3W7Jbt^&efrejY&^ebx1A%1@Be4t{v521z;-mQfR@EBH%*B64E}pS zQ+|6*=&9dRSOrh8k(+7wpSShj1@Tq^OYp&HiYZh9U{of^{Nf!)K(FxSz|j@G%KOXn z3?)d`O64bdoqt>|%`eL28K}lrzFNq<|0t+?0#-5)Ja8J#*ySuvsuT4*X+gnF{ zU3grj`{McY=PoV>TXFX{aQIn*rkoBDp2XyG2<{402M>$VkUEocL4LogesPAcV_E3v94Unvd?&SbWpZ3H?W&ve=$@eJ8ePadZ2+58Qig7 z1MgV<)~UR&rP6yrB+93OK1TUObMszuyk2nj)-8etvv)c>WkZ$+^(H7?Y;T>nzn(sV zsTYAz>67#rvdqW^G?d&|W1b7aEiDGHp0WY?EpKht#TUy{>O^yEcvh;o>q3*?WVkCt z6?=&d_D_H_nYQ7L3CPRVWYgqL>IO}%;aRQQLOjRT${A3kg3A?Qtvq^u(SB78(Ps?CnL&5@IBA`n+Jf%49*3sFj6zCu#yL2L?yE>hO0 zc1>8AKNzwRig*;(GA$*LpxSO(Fi?5c8NgOi-o|;l1sA6rM1HGo-R`Gus*ld3IjQtn zX+%HM0Q#1O+Q4I7$y{dkplw8Q`p9Retew z>5qtk1u|(EGPS50R;eK|g*QwS)ebbP&%17Z7Vnf;Z{1o+huz^YGdyQ@;lj^k!>4M) zoSzwg+Ns8XUinU2-VYY4J7%BirSmSGVW28-3&XC|8)Bt;_V6hYxpYxsFT16}(F$Ma z%a?XZCi4!JeJbzy$L@}Ie-hmgN}KD8ZxHH!QMGLT;fA3akChQU1YRrIw;5dGh@|S7Trc%LZe^+I#-EoE%c3m(qIca_SKec9)Js zK2mum7Xfpry=Y`r(GgEQMn9|z^q1EWOWNbM_*Z?{tc^^K{8r$DQDqb$DzV4*X<)Nb|*4+ zs~8gUuEinjsAGwa__Nh|%8J>V3^#i(VrA2|F4_|I&DgzidOvKo=8JESRLqT=)`SdW+PNASY7nPYJG_Cq9Jv zot!!&FHm$v5H5`iTYGFOVNnQA_W{uGJUS&~VL7gDn%QUYP~O)(_S}kNC01@fTZ=qg zXb5TYQ6n!r;sgn9Ng~K7c zfx(ljDdwQ^0Uq9!`8cGsHp{I+h`~i1&e_`Vr#$-Q4~} zDgztyCzWG0#~X2-CKFZ$!ypM;ATE^fsM#!7gVNcRF_GVXUGoC&g)FNDpMcqGh zEIBwm9jtk!+`ooxFzy-|&RzNFL1sFEwW&$%;b)IQG3sSiLUoy-V*d}R&7g41%DQ~S zDCEHq_y#zlGW)Xg7Z?@cVhUu1zAwb2o*Vy(gdD&sw{huxPhIn?6ZL8PJ$clupC+hg zs@q1fe=zvmiT_{0DtG_)EZlz*nnKa4VDW!9&-^vAxY-H^B7cuUwXK#d7|;IwD74EB z{{5RI(!`i9CPh?H+CC-5$r#DYJYJOlajO9uLv;9QU$r zW(LJzQviWkOIzElEB$(urgB({-zN;wtxCrwO22obmlD@z?^U}9=cArJeQF|LQ18`K zVm&Ty4>r{d!!YEn+lUEPD^)NP-+TQzRX%P5Xfzdur4WLMM*Mn>l z{1_^k19mQWd~-Cyk+Egf(PSLZaxSl_rR0+3ux19 z91VcyHgjD0CN|nvWF+srzOiwq;Z~iZ_dK_9tgt;(CxU?TV46#tXAYdKWKr(cnP`u_ zO*c4`JKx(*d*iF}XcAF4#rJ(*IIgkX|Fz^t6t4Tx$)GEMg127ms^cQp++dLrn^2pY znDGy=x)$SX59BH?c5>&v5e7_DtU>B+3@7TtQJ^KYN{P%lDhx^|j2S6yKPNk_su9my?21mQ893H2(&lNGS>9PJ{1LO< z`}S@*N_=hV!pumje6UKKz@^9CHniLoG1lh&Ikx}?m9Ja%sQ_2pizz|#09ZvQ8MlFt zPwib6zGRc=f<03;orxj`LT-z^jghnPDCKaqB}*)y{fAT=#MS;G^tMjnwSMw}PYxu~ zJh=1}UXW>H+0(*(%Y>Km<1T$E<`pkv;=ewFPP@sFMbT3)#nK0Cf<-qkLd0>? z46g_$X{l{no@P`3jGUxXvT_2H&bIxAUJ_jycu5J1=SZtq{D9C+l__bAH%Cr{;&PMO z&rnUs*$YPwg}BqPs(SKeUJIlIK-tAgfqP;uJ2pb=XMxN0rQBN2UWlZ3<$$WtH^irP zvZr4NI|!Y1%QX>r_?5js$+*=UDH-;3?8D>EJlDfL`d9)XWb~14m2=aBN%KznoXCy= z`apU+u(h7cbhn}7jpH>9n!mwgtcZx_GuQYYFaBJ_!EVasyG@79595GFPU3E_d{Qvl zcF@TvY@_30BRtf?c8qqY&OYQ>{7{*AgCCIc5Nxq(VLjMcyQqq3lt^5pD@C!x2k9-l zifSatfxBgvQUWGSE_5{~nYS`@<_#?7Y40Jm0tpL}BMRa3oVv<} zN*4V&O$w}zKa7uRTWRdg^6!*1cl>~)3t=aO%V%ZxnTtM}-Hd4KHi~+xr!(Mt;^6Ml;Z-KDGy$iL z*+5|#AHoMMZnRSnI_V_{KNsaqK$Rg3iM%2tvX6@2LiRDd(30e@zTDZ}Fx^9=txZcz zI<>_q`OMV7yWK!9E8j9f{2)&B2(Vj{;RUmWZgEdf2eJiZbXZQ-zl3M%cWp%SB7;xG zG5iAFmi4WWb0ESyN+a@4@)d^sN}vH&_y7mkv<&({q(V?sJWQ& z4v;|ezu5_|xd*u%-xd2B%-9@#->C>H50^cP6E?t!ZDNUap|lUCli^`jKUDO#Y{vkr zH%|#9Lwsl^-klK{dG|2Nk`xPdhTG=N-t9c?y5uCL_gx(+D`S=CujZYJ;eERPy@LH_ zhBCL0ThAcupC?m)(94%*W%=F@ViZb<9s}EIWU_H<88X5eqR;c!w594e9hbkANuAIu z3$0EO>9;8yUA`!F>UxhFU30P#mXgI+eNudrWTtcX8Ka77+cxqr3LI?4$8PuWan2p& zxsKNT0Wq!axedq4bn_2or5zjbjBQ)a&-0eIpWPp5&so`Tp82JCnjOQ&7bf@>B-8{ zBI(3^{qPZA*dSV@e6JokS81O!-?e*eO?Ljg z{Iv*04|-bzIw>%2-;aGA5dnZ90K3RmlHTIftA<=~4F5x|U>Y$d)%YJC@OsrQHTw)_ zS}FlcC&&+63fEUqLjjmk)U1cjGf(H8#XExrZ?mX3_)aiG+{#qFF#8N8?s@=uGRr(T zvgaC~L*n6kKAQ)++Zgl1K^TOZ=OGo9K64XBqiBiedk(b1&YM|9&O56qVTxRg97x~H ziXtTy6@p4W^Ik@yEf`aJ*RuhUX}|?V9rfB`&YKEtjHq*z-mEt>P`MCU^S&P|@;Ikx zZ*AH~KLo4cMXe1SIN-D#x($QSNb!R+4;TFELlP3I%=eD-T`cmK)O;t=mSbhryg$_5VNd3kv-o7hKc<`bhib+);o*P}R!c%W?K{J5aS z7lq4~bs;QVd3Vc~3)Q^AFTX$yh3HQ#SvnGf*ES&OCNclLI6pNJaZCC6d=6Sda zNUNFa*&Txi{zc^a--k9y&um`5!f(N=Fp&rkB{*(+b|Hdfpr9TN5 zic8Hi6f$hY^*%}-)*b`2CLS|t3en(&NAgKTc>{ z3y+i!)%BgiGUkzyp`j^A66D?-jUpE=;=lj5HAyN=!V{iVo}y!niokIH?M6adkd~Mf z!}6>zDKhtf_2}v8mc%fdfv?5iH?Ml@f zzBk78P_F@2B&8?Bci&l%1up)4a~`V>f>R94`gf$qr|4z8drGZg$^_d7@tG4dQd&`t zdTKKy`&RR}Zo_lQfdOQ+6T~1JW;aSRURjVGKDIH!&HDyVlCNM$3gCvjp#^swRp$nf zPYUh(z@WwXDYW8IO7Tm|g7L^r`^FD8bNGIB{ncf0@C7wedh?ogVQFb@Agf+_oG~>0 z0pl)B+LEKW*ZTT8gJ<>Z8u`MEmwP21qK=pr#WIy0s-UvhwePwHajx&3va}BM4}C;` zH9&T;Gn(5oo$ESoY?sk>IlKL`Etqa*ZZ{{mFF{1j>C)7y;?^y4q<#rh)#w{Ns3+JZ zVFVjdo`IyR-2V4A;6!b&(DIrfXOlRbAmwFxQzKXF3R}9yWskhy)+C7EwcTfcA>A}O zHrCG?^K3aT0&~u~o=x-|V(t;PIYw>o&}ZMDufVKh>oy6OOzvc_JCIKWl3-LEkv`wp z-#3&$X)z<=aY3Zb&pwz6TvO80SvN-@;T_lyaWi4=i6|#{=@x%tZ0UuJ)jJcoA#Zn{ zDmWw=&q2ocX=%7GpxGKBNUK!%bYs?%7J64Y_SI}BCf=qVsuUJqsy_g8g0~C5mgU4X zJwPq>lk&m{K@Y!Xyn$reef^hX$6=SQe-unPLnGpVi}PX>=g_)Q`_V{Q=eWD(FWs&b zF1TRh7eP{2QC!wqMgMtd5f-Qyd(A|PVi}{naRrIQo3ou%MnH*M^whlRPPU?^iHp#} zZT7n3sOW&$S zw0B9&1X59Uf?sK95amqj=;wQb8vut}Yv8crg?PH;p%1_6sFeHpcf>DAhK}cI7RRmx z)k~t>CefayNeo85$r}u8l5|pr#9o*-7}WA~b($Bs;!g+4G6-RYIfQ33_&>P*dhWgS zoJvN5b#MRt2{Icb>}=rEUnd7KRf8)=x!4p;{-od|Vh5FO_n^s1^xKl7V%T>H)q;Kt z^H?1Z!<`XS{W_48YKZC~*aI~c!gJ;KIAE0o3)g9$d=a&X6UDIP$6L)GZskE|p_&+crt)9mfCZ+doYj)qDu2 zU>3hd4D2TTq=uH?OCipu?g+i`31Nhfm5_t|{{v(8zucq$$*bfy^H-`Ln>Xl`$-gdz zRvW$@zAWBG`<0%PULxT*h}w;N@lqjF`UqJWCUN=RgmlgN-08r*$TMv-u2JhNN*omi zGj?X@sV1YsB6M`(t{Arse>oc5eZH5s`+RMGZ+Fjie|UbY!f>vmfB)&;;-V1F-ytXe zaxBqp8r3cZ(GNB@g6ihhbAqaz0hGj`TK|_Xzp;G(fT}D2jL7CMGC)=0eg#zJhkG2y z(R(i9!7bBJ?KX0Ps;sN4gZMv~SHLP1dNW(Is;UY|6X#yZ!cG@#M?ONqxc(%*||Hqx{kIq zTwRYwP)y9s*izcMx&U?s=cjDrwOt=WST7&lxCmFID8xIIlM&>R6oZ4Cu1Lf@?9WJzReYb)KGj~_*U+kH}slr>mL zWl71%ws2a=uQyTzHV3!Vep8hN$E{&)PY1`Dk0PtE)@ATDe%8 zy%Bz~SEtZa&qtP)`e0)+YgE(Fm^vn0?lTR)$8r8HSd?zvibN%AWcvc_s`hUdB|RqK zAL5U0ZM|y+Km&1kX(=NjFF#+LGaL?Mz6#)!IR%uO0z|_7gvsNywb4P~(V^Slzz&I| zHr$Ctjams_eSHRah)>@svPI%Uf<34;MmYmuEewX7U^jZ==vd6FIyN>2PN_##H8tCM zL7@o=OB=gK7aW54FWMnI!N%q7tF3eN1OOFy9);D_LFQ=lQ^VJ<%ifjOu;B;KgiZZS6$F(w_N z5lEBV7$D~U!@IQ`6d2v6=nt+!UhOy46%&I75S1m07*3E|t9A#%<)4tslP~ZPMZ|Uf zs_E{2?&MT^K<_<%*0aeFD|UEW&gW#gW!Lxy8pol?`^5PVjs!?lE8}@8y2~1Kp#~3mQN1G+ zkU07PrrI88ewaVkVr#~8QBM7Pd=KXXo|pqXOh;N^J1S6l&)8*iC~rhar6hCwK+4z) z#KD>8yF8qe))_lQrHYPjpoGwf%5RvMGNQa;IS@Wrt=Um#y2(y1(}y!axGfaXG7XAf zF@A}3MEiqM%}Ki!TTyDlUE_G9<;W8GZ3gcf83m?XZV(hj2ndi62E1v7o9p#<_X>2Z z8NUhcT-8j^gPZrkm^%<*Tylpgz47IVN$I;<(6x(aQ|yJPSpXRM4MA^(hrnDBG&pli zh8WcfL15%{C0nNH)&+{s=lj%+B;<=VlJ%8@y8z_awY8%eB3;?pP^> zCREPYosH7Uh1LF!FDPY0(ckY_l#i4Fq0-vhox4hnCCei9^Mv^vgKoj?JrI^mvNiYg zSAuMj$aanTawARR^3qnH_7)RY?Q@@IM)>CLs;eYWPdhzYmtIp+5 z0_{xu2l%h9FjmIMn*?-%s}F>&Sef)QK71k~qh=A0T=pfBx}9_6?HeXn*G}nVn+ZNJ z8MBH)`A#-*`@X*4Wj^}i^#gMOgRU#&XH-@PHtROea|_Z0Hw3=6i=A4^a{Z;v>*HVBt$|`xwAR^{x zzr!yD?nYj`gvQXw0RHyD(aTw1NE?sYHP-#4EUDBjxZ}~dx`--uIrFl9&Y!C@ z9kNe)u4sR@`RH4dVIT@7P)xPty&*f8o!@ePr_(>WH5jIPLFWf$&i*W%6^wcCtV)L9 znTMT`-3uz(kmWpo2|Jh}*rg07jwvLOF#Vv_q!VyqBYH^$g9Z3u&_y5rZxW&#r>z@ehYxQDg&Acv(Hlr*2Bu0dEB{prd-6YSPaKz{ zFTLY(o942VA zuK{5BTcIm7(rp3EQL+X343a&4l})Up7X$d3r4)HBjg6S0E$9`F?2V4o^(HJT%fm+yv4yb#+qj zbofs^NE+EdkRcPlKtto|;$kT>YI1#-|6S#+9=P8}0l}mxPHZ`p002l3p z_}7`wQELW_y&_mSyYNPmw9&RgpP1~O zub&j3FL@mkLQ1MISN~j}yMB+8KGzPXuNkj-Z~lEkLa6|%vc=*@?ZxJImi;k_tfdAk zi_5vf<7vA$4@GA?7oj5$2@fe9kOJ@#w{D$~0v?SdcF*lxcqNM_1st3QGfrE}4cO5V zqQG^cfQ#_tdwicGsucokeSBjLTqxuOxxbuxc&Eu(R#N=v$>IqV;zg-ql`fGL3#s!9 z6u6c^-xfm(5tffx`Nw`XljR>+h{SGzcs=6YoI~~tv7tlPC*w@4e$rOuBV_#kO&(w| zNIdxhZvX^et&q48UKl5H7aKBx^<@4QIe_zK7xJ#-Ma6c`<~}&BMQlyf#}~-ZFd5

jvr4ps+|XrZnB=k3KI{f`sGTfli%_DJH)1%wF;gCZCT<*>{? zX9JBuVsyzdPr$p53V;ci!-=vCp-SmJU|CvoQf5Vp>7`qhQw?X@2qAZ0E2R%vUPBk- za;XJegjkD4wu@`Y6Y&CstUC1yfl@<6r1ocUFe%*8_I+n8WjxK9Y+N_2Iy88<{aBx# z)V~~UU~*mI`^?VH{>|KKOxN0(wP3dDHaM8#g*kq@#6F|g{#es@$peuhgRjwaJNK4r z_qnm!ImgO2!8@4u5qaG+I7jm@o6xq94iKFzz7t|1+`p+Lb-M*lw*qohhlp%9d7$fZ!}j@ci&G3 zcJgpWFrlR!(Rotv@KF*3w`^n>6=|>U9vJgXnnH|z?h377oC@PPgErTiBp$tQJ_XwB z_#z8i!_m-d264%R^z%RffI>QbZ)9Hh`!TD`VwfS4?v`ZdD6QED9bD22OEcr!vwLyj zTcA`AV6ew$ps!&i=N?BY{LH5h;e~hk2c%JH7Pp+)vsmzndZ}M=(0ydyY%d*I%H$DB zP;JGa=s;5ga7Fmy=75mi<^i(;4m5MIkn#lC)Qks8iO)@5`I_{pR^AgCGWo=~hc9qe zK{Hl7DR|{PM3(MzoG0R$S`+H$mViPufUCZKpd;;6^-VgZ7VTKld3)`|u>`${l61sK zcyXRMmfq?7i(`p{{EP?`*@4Agx1a>BupT^8vJ{}|j2OJh!lD?);%7{F0W3_-Z1^%# zq=#5%t~3qTf4W857~J!mSt5c3RGQR$a1iBL`Y=e<}OX=4q#sMGoN0&ym~ z^dH-<*VqB4)w))8U7F=Kb?ZWf*94TFJXouMleJ!da}r%~AuZNZb%xEsdE)1c3lY*c&Q zMU-Zxm+`5&5VbS<28NJnKcU<2F?iO+mvFh;d8Xjn6<(G``&r{FR6c&*o++tI^vRZ6 zyEpnGSZj0|5X*C?DRVTy+)?TE+)S zLW+yx{Y}72nbaw{pmI5TVhn6j>z$H>Mq`3Uh1?mNowK(IKjSv2`7?*V!fwl8wCz$m zXhUk^>L?C$qwn81l2JNM=11^YiXkSrEa+TdibyX zDvmoiv7Ia#qJhH=9m%ncTXQBXlgZ!EscGN=puR(_?pkWfHFp9#`g6=*YVL6;?#0wU z&hRGmkUTR8&;a?=PzHhK=^_p^G{CiH;Q*WZbKg(dD47WduFAQMp-VqZcB}y!;9PYy z4A6jQLe#EebAn0Tbz}9VGZP4Y&$2rdEISLP4k8zR{mrqIpAQiS$Zp)tA9$GCU$3v0 zp31UkG8Y7WEvGU3-~yc|ow=~2WWa<_-`a2vPZWntK82Z-+9MT%!jUBWia=#buUq9x zq#BO|MKpzB0K6QXtH|XH{zJ@w9cYw$h)&P*Ht8oe82%2>>HS_!JwuX@75*^6{;wM4 z4*oCn!vFbO{!|l>Y>=yz^jO@r%G}X&h5tT4SNrj=0G+Xv}}g3;urB33!vs z(dl^L()z}WC}B^`&jD&a6lOO4!z?s+o%QgeA>%89_uOd_AM&pU8;Ar=b0MFP-x!Pi zQU-t0t4ZCJV;s#pYaw&HfMZEejqA)Xr}R`ro(W802gZNM^C7G9?fvKTU(@mz=089& z;GNe^J8g-(l}t!%+mFVrbW;;K$qXI{soM!i$`{Kb6kj`t*K_NrsZ4fDTzMGiQ?!M!ZgEQ5rH0A?j<;(vo$M z)nuq%+q2|o8@lVFYQlixBanepZ%Jae=}S`oCN+@+RV+;Gx>W+CXC2(3)vA_h@I+gd zX%Ts{w?ozhx*gwYL6vEz2~b1s1nT$TBj4#PZHeFG7`To4G{e(ko1i*p_a3~~YIUD# zJPgW5Ci!@%2@QC%wQ^T2fd^C1gepBPlcMJIo(Nv8ZU%gmr|`g2ef&Xyl0fZgVvTOW zyg{omPYAw8tuq{QHRDz1mK-la9zWPtSt(s31nBs4!NhWBso=uY88z`(VR}ty0q)iy zRCTo4U^N)k(&3)Anzv3ee19)Tg6UEDUFGmL#)a&G1?|P{ePbbyNpAgB=PDQI--{nfZB1B=R&oiY7}O|jLsi3t>VmGDH_BI*bnO=63!H0k zc17pxiLAO8MuCXbvJr%haFl!h8Ye}Y`q97DBzRtc^w|A9C8_LPGs*Z^QOps@iAs2B@P% zJ9pZ`U(xVQzLTNZUxnY&!6D*LeQu_$bFS^vCwyxPQ$!i8?>?Th-AUVHLtqX9`2G~t zWfIj^`4AA&)EnGfQA1H_qtl>BXri-nvB=8CK;*w}8V2#U~XXJ}51p zdtXyyx^r|C1k&7HEKm2{xI%nRuey(K=?E~iMW_O!6LCR9#6-d(Sc-)`hQjWVI4pC^ zdORweW0xrNwT{j$_9$w_KeLQ(Gp3^-&t96I_N1o-TtLt%>nXS(E#hg@rlg_y8VkQC z67zvG1eAw{pj0G1K~_1luMsX>@dWtz3ZL_FaZQM8j@sBPm`UIPHDLD!<2mH6h5cad zl`1y`Sq`fSv~@uKpO_cvTY5&?U|T{^aPFHIIV5RX>S(v6UdXe5hVG+7WLhy4p*27_ zSc?*2RW+piTahEeHm_NlI)neOX!4r?jP|M_0c;NgfI? zY#q{mCWI_I(c`iVBw>I3eH^+;Ttiwoj*6cY2;s{ZU|jR8lk&q6#Zz%ol*PtnR6u$Z zVvxHT;W0*AV0qutycn8yS}{6mV|-&k0wot~J4LSdML-Awf4i2z_zZ zEg_6>O?oVhOGW52vh-_4yr$m*x?P|y1?Am7!}Fpu)^EBZi2{j$OL;!ZnJZ&fDC8KI1F!qvVW)rR)!b0`BpP9V{vUn&BPQl1L5=xQo*2u} z4Xrr-sSy5m^9%Z${AM2hNsGicxr!K!!#eru>cPsWkS}FILDTF+C|PfQmS-t<6m>$> zu;fBCOlDb}rG&E(wka*i^&V#k7$_ZmK0hQSu+xy1xlC=We&55F&X-svTY=%T9S3bf9b^ zuxmzt{Svs41Gtml3dG;D2X?jq0rE}4Ls1&JMu|z)qsG!03~>?Ai2>@Enoa}B>>H@%g8De$K9qof05r}j1jsT_03gTgrwktr6pcqj$l^W? zg3^yCj~}0Hp0v>i{Vu+_wr1fx8CeyrmaAfl8nMZfCsF(HqoenveLtIhH=LcD!?U-s zaRc=Z?o4XmPh9j#t?Fw}k7V@1!oy{I029QaUcY{gYwzUb3twe>K?aIT4P3-&w_~AK ztz&5kO-5MdJA(*xC=wamrq$ntS zJ2%ah4M!WRjI^|aI>^q|3ng@Qw@4M{uh~Pe@pJ z_rL%`YV^ubc5t3oOiTp@J0uA7zdGxw^LDno?r^gl9#jPu(%#Pbd5fUQ8=530*49Mu z^QzgsK^Dl>tKO^U7&+tkL3u~L$IXNY0nP$F!@3{pjnWm1;&MFFrz-tXJ zdY!B+jg7sC!x9r|faz$1PWR*bG-zaN)(%>h30~)kQLeSLva$Mw6 zqUgNs0vbYB*J}mFQoocG`k*46x8rw3#Ki?rNQO|~AZta%HaP!FY(wJ9Tk1*14LDD- zadM82k3)cAQ|<@T^AOd8iHV5~>(?OJKnL%V3P)65J_yQO7QXcAFX}JgVpSY>u526q zdu~7la08A`xB<(5#|?OEeQNd5ISeZh=XiVmL6XCOCwI#PsE-?e^~YT`gcS`(RQtkK zuLR7hkhb1Gq`l`GwhX9O#qG?i$D3r02m}JK0HCDeVnKX#^eUkbs2y5bT7I%`UcV;) zO&^HvGcTvGFU<0BJ=g&>R`wBXtL<#Kydq2yGLIU z_iVx`#3QfNe@8*Uw1y`O$bflFGaKRUY2>yIXS*FI{==A>P8O=y8%tdghroN?0eIu# z+!=QUMxxN}T^Gk!qDeObJ|CPYa$TUvVIwX6bKwsZJD0bsP7;lT{!k~&xM<8FxA)hHN7@vhF0XN(A)rkT-@}0=wna) zsqg2PCC582@6f}gj!uqE#nU9%XIW9)MwBf%`d>cVz}$D65~2+oup9h8X z&NHAhNF7_*jsSy8-%q;ZFSAzVH&qnHlT0=2#QBD3qk*_&$4B`JH(`2B;VH0A1$sVT zLLt9c*OMoDNsav$-w9I&f1gHuco<96_n3 zI{yQc={4v%PSL0E3c7DYx-CH&XeVG`Q#SJU+(D#xw8U9^Sbe+5%L|(d*L;G_r9_le zuAu#wx{H`Rq@11>(I21pQFT$={0VZLr7y5SXOTV)F6#Z7HZ;L4HSHlHSoWn`G6-W9 zT?Cml8(;(aQg%GR6OQd_0x}o6@$KQQsExG8a{ZbPq!0JYdCaSHOy7mw*irh|B&laC1f^*Qfd($LG)Y zTI1mo@&!D&(W!1dKfutmxewR?PAI?8BFCVeR3Uxo`{ja#R|BMIt?+CX4zzg^TA5cpad1~S~*_YQCgGB)`PrXz2 z=O=u6Br&;EJoFYvi-K6yscR?WEpk;N?phWDV#Ar#E9=XbL`i|fdQ1gT&ug6cq#xaM z`4f7+aL|JZYEvD@l)D-gMC#0%+ww z`u0act@Z^q<^dHPdh&bj+2aFSF^o;XjNYM&Y=&E zPoU~3U5Zhj-PpaEb~0Oob_KvAYC`B20cb$M!1c_&$#MYNTuZfm_%p*^)U$5l=TBBI zn^y+nNw;(R(R2WBMI?9N@v&-Fp||UcfWLkrJv+ z8uw!8fk@m6_^|shh0%jAM|Jz@vuFDky+NpAfWsdbn$``QBH}v*1DOxgHCSa~5rZOb zIL{3xyL%i@68AOP`Yi=GyT5L?6b@O6i@O#*Y)(eJRHrVuIx2!(C) zkiZUXb#)82PlE*Dj^$bBW_>@dlPOEI8&bR@2CXx8JxXDXqBOxcOh6WZ6!-+L_kead zsFS7FQrDI=0X7H^?>Hf*DB&XjbtXbVb|R=#?kCVn=+u@!T)3^0**7wf)@11ZNF>1| z@mi{TgKN!=-(PX(^%~)Fb@}h@Q)!ACE`gJJU?PZk@M#)^3_E$HV+?U{%ln&ewJyh# z;$!ncRjJ8>W2L2vok#-YL+~=nbl&8)UjZP{23W?BHdzWh6Qz;5Uof!q1PP&%g}oa+H?TVwSXQvXY%v2~2CMk$KjBk~~ zx@(Nc)8-SSsh!9tJDwjAb#x|elE!Q2)jnXx6|?$}u^)R%A(2cJ?2I*np5b-+6*uI? z8pOtOT^2SEzwYx3cRzJe=+5n)vvHxJ_X5zJ$;Pei(otq^mY76__Tv17jotVRTuLuO zRs}M>w_3Z2mp-_6uWW}~=j4Rl1}Z6#16+X|056>dPn5Siz9(|Wp2+P44A2T{nlTW# zc|cG5J1q`GxMYcwPl%17nE}7?0A|n6U{tG|#(?3gmb2$?`rIE0Zl8;?oe?JqLW_q^0fsk24n`?VtMj$K^Zfq@NC)XsaO~s|;2v z{z+KbX5JLJ&Z)^3srDkIj*vn(p#wCp$OM>SzFHP^y0Ox{l0Etq#i%#{DAxrWL4*OY z{*EKT^!W2WKwp7&P^gGti0i};2i#E|VD^s8`rgxPERQ{mnP!Gugs5xDb8!1_4)SMd{W@#&!?4ef&(Swv2_7CeREWT#CfLy{nh|eHD_5@Q9*6yNn9TxZn(FI%KBwWU zl{p{CtIK}M?Xq#-cXexq9+Y_Mz-v|rL75{eGh=3Vk9~N`H8W}2R*p%p`iPs=_Y_A67vLI8D=jXpaa!o8 z6{(CX()Jatz_pGe`J_uhfg4G&yl|qx>3p%^{{sEc+WizaV)4f!Gz!ZKhSLD>RBnmc z`GAylym`^Uq(^yb&z{$11lefJBlQBN)4LzyJ&-4 zx9$_K(`jcmLa8QUH>8zx`A}da;@6k}H&E?z*=>b$LX2G^R4`1mt8)D~$2qX)>} zw{FE|z(UMP6rMCP{~?g2PcudVIy;9X^?XX0`r89^^c|bhMa3hDTic=GO&pooKTJX= zo2r@VbLO$%o`Ds@Mu<_7CqdQ!4Oes{S1+oVeZ;bQ=xT6JP8kcbB#4Zx z$%EhV<)GTy&>3GtxyB$w9vu<;;0R_By@w~W5Uzy-1A_>ch%Fu4yrkT77DEc{!c=ud zPEW~iE#C^?f4k1XYGZx+SORzX@h>rb?eX^ySDqIi)gXl*FAYD2%APikOJu9)QaCw( z@(v;{=qD4te7QY-dAz0o@^S>Eh~qD`LN@veUn{PQPIvx5A*TCLLUvv=XkG{mM`P6y!O%I8-vb36U5G?V0s(b;Rc7BbgLPK;`SH=1{MY>Z4^;tqfY%4nY}!w0 zkVUt7Jlhd7IS={gsdLbZd!TfYtL*u{BLgrO^rI9ZbJvTBS@}k^{US4Yi*3~4c0fEN zC1*S>-O8-TzjffM#`2lBgz3hPJ^+U$WF8-#K;pcUaDPxRmuHIxGjc0Pk{$%GdS7&x?exT+vBb z?pD<;P0ciPSZ?}%DJ+NSQ&;Y&Vs#D5rn3%6klAkT-h-w7jUrwzdZvP0vr9LXdVRz2 zAc1Kh9=1sgt+1glo0*1e7^E7_RncL&gp;tGFofl7{|L*)T+yq(x66#uIOX|-$9kwZ zJ?5R&n22`Cu1Rg94*?aqU{WT(isr)40#7QL@0$?JoS)SvG&TXugeHWZNbB5YyOU^z z$0}?uVnJ5Uvy_4mvU1gu@yrfY4vT|Dj9gexXdzyuL4ZyRl&Yhf~ChtRrDo z?QyJRlY&y%S9NL|SpHj-^|fPI0PrS4lCFJGNMm|FCsVVNp%S-lVu8)lf?jvfhXc9vxkpOyD!-PlIU^ggg&8UKoon>HeP+zrr@QNy8X%$J zLWO)U$AxlwL83MJip$CRvH~W?YcP5%-$36eCh~Uvy;t#t#wM*LyYP*J1aiQgOv zZs)F^UF_*Z&e2G~`qsxwJF^TzyRm(ZuSia!auCv;|HRnc3yp*5sGK=EDhJdO<2lIA zp`&uJhi-&p=JmpxnW~nw5ai_8fv6mDUTVYdsGNt#Y3~C*W&xXU&Sa^V7Je~MsEO9h zI=Se2Iqd3}UjQqkF0KdXMxy8|Pl;vENkKzZ;E9}hLKo>7WzUX;*NzGyro8oRBfc)c z)i)a?2}o3d8-NqcdfYK#caJp5fKxkDDY%)Ff{eU1ha~l#V4YocW?8RMO=0YgKiL%LgX zf`~{r3J8d_N|#8BNSBn--605qgaQJBgmg(L0@5O-l+uWB$JDjfKKtxA=bq=>yB?Nn z0h4cjPQDoPKYrtVsb86`SpR>Xj`Ig?NeoI`Qb_&GZT!EXExGZRwxkmI-_n-+<_6sU z8#iEVAJ%rfrE^fF+@EFEf%#^me8J^>A@v(<%7|1qbM@j>wn#%#QgR9N5VO{R)Vp%( z;mmbG#O6Mvq`pD{2h6;@)LLhibV)F+-E}iF+x&FphCMb#$qW7w8gQm9N8iQ8#Zoa1 zX70~olZnd6%of@KGTF?`OioU&`il1M_r<=%#6-g?>)n-Mi%;zl0-kd%fp95~Vz~4Y z-~jhFrnHfGp;!;*;eo-}gvjm^xaR{;Al!qeBw+bNnep8(@6DRR=7AjpN$bupP*Ggw zY>mwosw?sXAdl~h&>NpITZ?^XYiaAe)J+OI%CFe`@|;}REF(XkL8C|b?n9(SAx@?Ubb%a_fG^`V|9 zQArc^Kk*4Aq!m5ri!|>sfD2UlvCx)FC~$JN-So;$?4B{o_&tLHW)u^faT#%VS8Z%D4X&l(-q>9sL`K4 z_5oDD;wYq^DwOxE4J(=%qZD4ASKaWtj2Z=X_i;5`mJg9np{_H@0!L)C*XQoIO2y@M zMD57dqq1Ag*{ZNt6IMDlmkMkC9=b1oMTT4vlJZ04a{`88tI}eE_l(j=k0+g zwI&W1w@Toklmg($wZZ}_mZ&@VLtrjhV1;L1lIe{INdBP$RY_B|9rfL$C>UUS=B zWCS#es3_4HglPMd8|)ugd=wsDIw~9)Id_@uGN;ecPQ;;lxjW8tIE{w8vjx25NI(P4 z>WY!fvBS@Zw8Yi;VLg~#2Bp;V0CYB zS5>X`UZEr=fs`8hY`@b;<+K)5d2XfQ%Aj;6?X=jR^{b&WFst)FJrTC(G(A}j0=R^S z7)Oo$Xub|_4QuyNU@xO9wc}J>+!V+6<3qPlR7+iq#O0x>kn;)Wvo~yJ&NHYM8($W~ zAK4@vYSfzp1GAp~SetD?X*}n5mot&d`V~%M`|UKTGjntlU=NX~LA|Rmh@!t3Pmbvq z0TmQask$p)6r+^UZAcc`P;$TPV$rQ{(Shx_b4IjSOGDVLBa#yJ*QCK#{CGxh{HLJdi*|4FS974j zb>8ao9XeHhGzu`XV+K{L%|&|rHnY_|BueW-FG%$e^oM8c z()WV=nrBztL)*+|Mt=HTjW3vX+z*024CMb!n`dE626ST?0{~#R6^&f*l+JOgHHK|( z{IA(fB3V&(lkw%PKZI^qZsxX*v3o|h=Ft&NXa2J$S@!?CCK*#S_*VYY9{tmd^&bm3 z0p|68!X#x||0z+a?Sl9I+1?qZE|c+#HBni!MT6DmH5?P?{5uwCoXDn1)KA{HrQfTSuA{v^SsAM>$q<&sUT)A@PPq=_q*U>e#qAIYoeJLT&>h zL-H1B1-iTu+<-42j^l^GV0IC*ieBYvZ3xu6Z)3aT=G`YO}^U@0aZRO98lr7+}Bz<0eya}l$ax62LsC*X+TMmti zB7C`~rmCu{scC(VNv~sTtFqg!=HuoaiHjG_`nW)++F4s!>Fnw{BD3#M4`P!`RkiFK z9AKehpr?oS`(r>ZJ7~fOf60og&Ft)bl{A%y*P4_sIT7H+z5omHJq9CfkQ$QRn zGs^x7ApHlM2}p4;|M+z75D~BpS2|gQ=M%cWl7TT`G?`#WlRTnAo0Y}oZV`aG4@xVCY<6+s8rvlK(`H)!f&W^LN`%h{BNT*5j z;J(QXnz7&1fZ%ZmDV7;%%PZteAXjD&#|r-MM2TP*gH%pH!6f z&{HC71>6Hw_qrsWC~2dGRyAT27E`iQ_gv?upm0}Ia$)@q4QND8{t^Q&Qoh zpG~K^S0)Br{i0zo)|asjx*G~tw_qy1B1UdsXk#Peq}8!A@n`=B75(s!oBQVAMn9Fi zcMW|3k_g_2y%1*Q8Y2#Db5CEyE7Fnm*zlE6meU9^=1_)%Rmd{j7-%)!@@S~PKXL^7 zI31%0NVe6?islQ5Y)w z@~>P*MxnrQe^+t!Zh2L9-o1t_Cm6612G`5!%|abgi+YozPLNE`HiI+)%q^h8YF(AE zz9*eig%vShYB973Deu!p(&PbaaLI+uZbL~Xv7u-4v2(#iN@Tq6*=7B$j5y7rgdR)j zoLc_XrwV65Y~U%P^At>7sxEa|-mi=;fT~n-+6V=;~HG8UBGK z&^%FZk^KG*T6A0EwO<&4_`hKU>gx{h6p#M}Mu1>OVB~>7w!omsQS^zwYls`sucaLy z|Nog(_uu@~pYZNe7sQqmI~ksEOQ5-PmV(27-L(r_wEHthPSn3nJ@;Q5cYRK&8#hwx z)KGerO`70Rz9tix6nOMyV?*=rpqB?;&?8+yiBAqXD`{3BiSpJRDsQTXhdxc4wiS>D z9I(E1>lPdpyh%nXFu^5})zsW9BQ5PHmeI)`n%b#VItpdYn+BL(G7+eSAJLEm=g7(m zcgWVcP&n?Ph+!?$>q~7Xc}M-S`3OoFrmj~~kgR5b*wR>zo0k`@yyyM-$3#9BYc9;GNW|u870|V^RH_TRcy_^Xi1QkQ%EBy2J z{a^Z%V405vnnjowDDZtH5d&nD-7nS{vFXF$o}mOdn%s0SmmC6-^L0SKV9PCIt}dVs=H-F$|r<|4K6fxNOH0E5g&DxDt%krN69K!bpHT%$6Gi{5tFcH^J& z6Uk@>o_;BwyAoO4;pnz}RKd=qAkHb%BOotwti5eW_2O0eyJhNnleaI|ZSvY$5K54_ z`~xK5E)j)FLjMK{?ER4X1rku_M7dAqomGE<1mK?j8zeyWuw&Kz@}D4q*|n^}K4EQ& zE^nMdv);?rO8OJs^4F-S%=ryTCJqR=4J%(>6WjanUB&>n53{$qfN+9HS< z0!(gie59cd{~rQOdfh{|q7a*4V#pXs{uN-70W?js<007L9}gGD(c@xqZ!h>BM0Vuo zLgCPlS1|@}GlmVl@^qetKmbaw+teKiI&NJLft0VeZ-aQ78x>&cfdG?sA_SPW91%fp zA%Z8MLZRfP5AkgXT|F}v0hp1TjX3>xQ_#f)m6UvE9*A4Pc;hYauih~2cP@BxJroh! zYEJ{Mj$DPR`;6+G3Ca*f{B8=Vt+2Kw((J*ai@(h$#=p%c27j4PHutxGeuAtU zJtZ~4d;*{g&IB`*`6PMq7f0aw=zrh{K=FkCKvYAd56mZj&k?9WnNI+4_!mcju65Pj zzM98HoL=-AGFx6wEne}Pptnsiphq6eH^~Jn3)5BCMFt&^7!hI*I|^~*1~mn?vMN6o zYanLfyd~R*Ab+yab>d9zO!-oLaZ1Q}aEiwH;I!}JKJM( zCp@X(wNd@;KH2oR^iSL;(H5Dp>@`x1#A$h>_QS$+Y}uMc`gV|Ga;$v~Ii>;!?2#P@ zv4=p0kTAX^|0qA)^YJiq>frK4X?wV)=jG3vuGo6xaU0(`l_L>aEICg<*Cd$x9Djo1 z98PdxM(aSV9}ew=TJGEl@ED)tQ9|#D4LQdnb#f`Vl2+ zCjO40S2F@(ly_*>{JAPNz_D7*pBMj05|Ckx`GX_?0ym?UddM-Yx>GzKUiY{QIVRSw zg*biEKsK-&uDIf65?O=k0B#x=Ufv0`QT_2 zO5n#m$XWdd`APW(q|HIkcuI?0;jj?k12f zAE7#D`PBVxsr!LjrP6Z)K7gyC>~?=W zgR{SI=dAuCcH#aDq0|7KjF#hsyn!LNNTCaKUrTf-sKb&G^&j4=it8 zw$ymhm3aQBH=g6G{tI;-BI!lbH_ogPm~9c5EEi=DSPhBzCM;roFKWfy8oP1Nx>G&a zYc}oZl!$Zxr{s3>>XDS2;NaA$#NB?r-Yw|eLqNbyz@#o0r8ChD-Fm+X%8&$BoiKM#*K6LSSEhc%~ht>gJBh!)w0@}qvVRIlu)mOV@2E-yzLw3dYPpkHq` zT9ca_Pzs&NlkbaH7Ohe*I57@D#;3y@a#ONbVWIza-7ir|s2VVm3npN%{OPf;EP;=p z@;h>CT@<>8Oq+%;EF&(CmEX9Aa-^_e#<->X{5<7?=7r&**+`YmV1Jshg>s_}w6K=w zrMz^{aM6^6A)xa|il0y| zqPx)6F@4+Q`{UCcpff*eD}eQWx4ZqR!r#6?fABJ;gp*B3nzFkCv{QC~z8-R&lQPq? zI~wr}VBc5iIlBr4o^PayL;OjNfl3w{6AsqyL=ba=zUVXYfo!QC5U(-ug~QL2;j!ED zTR!riCMy9VPu)NQbCRFQ_#S_D6sX?PTL4Ke5$lO%K&d9)Ru)04xXh@={BtlR{PM3d zP)YSQxG!`PhN9YbhhUKLg$82Y2F(T=_JwVJXw0rn)^0BLr5sYWh7A=YMBV~jijPgi z*@N^8PSH+)9Bwa#m#gGGyTV=H2N}MhI~9k(dFNF}uEcnUSc1z0`Jas^a2&}YaeH!o zu=9MddzjgSk<%gYIF#8Wm?W}^QodB}mjGp5mf*Jy<@a~u<#2nnI;?P28uaLuLHOd0 zvW|ox=)(tG;uOQSh@0}UCnW}DJwa!o9rz= zB>!Z>_B662uJ3ZuAXzZwbTYB+G^1$GL*hr-<4&U&G<`fjvq^ex{=pTO_;3CAzqu^rJS-1a;{n5}@H=~EG#kC_fcn)70YFuG@q=;Uat+I1VCdmO! z&%i)oI;0+Y^=|YhJP8}twI#c4JR@WWA9+`ZEUc#-WABF)0_?l*LvpfR z`iSUj=&p?Z^sD&lWq9|-y?T@AE(>jnHlfe=8I`mRlQrH^|1VWN(opq8p{kz8Q1y)e zS@kdt%{l$ss%Pf^U7rrBo|~wuXB<`ac>LE@&-mY}9*6&4)w9VI{55(a1OC=?QWipe zpH`2WWax?1;(x)?|Ei}3FAQ#Paw*4C@6okM`d8h%nWxQfM!!sV?u$0xxHp@a?iyuB zd3ZQslmUxLrK!`|_E6j){Vlm?f~@((R3uD_N|-$C_3R<+Bs!{GNjupYul=n}4es^4 z;H+#2Jl$jw7qKCxZknBNvesPsQBhw%5n>06F}H8uzH;SZ1xrprQIU$G;u>5_;8q67 zB%v%~MoClx8Ln6KT@jIy=0e(`BuVp-o*_6ZK#@yx(e*Q&qCSL&Sl^F9q5;=rR&%TF z!9iH}IjaE}?BEDwNHJpRsSJ2L=$PICbA*L9my#zo!zQP zBd?DQMUXADaHK-T9H+R`Kh(3j-% z2nrSI0RFI2cZ#3|d-T6n@XG zP~7bdmlS_Lo6bixGf0yrA48s95FNaF1viZkW)ykHDyXU|ZK4}?Qb?r!?$_jS1ig5y zh(j+4FESG%6q~bY5Tgo1K#U|94{kCdrR6b9GM%;%Dx#yMJx-a2Tf8mYSKi$O-OJx)PqQgMT*<6b(%V8c0uh2v0<3`2Nk zW`rFzI~Eia9OQ6PQc*=(!{+zW!I2V)x^*DLdxxYfq1eiv2>!ZbPqw!dtCv^rbLc9% zu3TelZec;=oXBE}e0HmO#*x$0Nse2?#pU_xMUS;qTeulo3wrN6D?NH1L%ga#0<~IPY9caSJcVuzx$dxDsfzbPdwWZG`Z; z_1Qi~w8o)AZ>rv4?i2Rfv9*-0`~>kFYuty~41^q9Tx`Cs^eQ}X3ws8)os2q_SH!~3 z!qQ0l_r+%jsMt_WRD28kK!s)PPpXnAX!5FbC(2=OJzuW27& zvxBa=Mp`_)FJZanYB#hhPK5MM4PJu8xe}HX90s;PB*}LSMw7w|#eUL+XFWfIO#P@Q zM2KPf#lb;wm>iCWAm%nWz>}~!(uUis4x!ZMHZB$|{$kf#o>!9e6Sp_-AujKJsx`n& z)SWBd0|0_Eo${QXX%|{^J1C^w6FF&8z@6A}5q9teLiHUEA#Fh-*bPY;*Kyl{>#_qW zB&@8qP{OwF!|*2Y4g;@)`1r{19w)ceZN}5<*RR`tDzdE%`09;8cs*7lq8oztJij)D zW>zH1z3&ehN#hJHI~ctP!9OXMw)JPrhf$OC*O>AXA6z|B=HYc{vTFH|VJj3|gh*sL zKr)9tZ*V#wo}|6Dloplqfh0C5i6eb$%Xu=w;j-Np(SuWDDov1W z`mGX;EL|&-Jq@2kHI^F7j7FR);Fki$!3=R*mem0BRe~f14g0o&xDDRGkNB7SVr4KQ zZNKX-K?yEoJ{*uw*8#n(x7Dv%5Q0q3lg+>|nOqm^dodXUpd_#C<>*{$zYC$xK6Fu? z`*H@&voHZmynhUs1mIVQWw_8oK&5X{2kU-zksPck#{;N-$_O}whRLvSF1q5;04of* z(2oY*-l#o{XZlEkb5%SV=A^BwT(COky#FV(qyI3vg*JnJGArF4U28=+FKY^v7C^JGSr!t8P|YDbz`S!a1~+PQJo@5U{NFPBb!~ zUCp5^h|=*tJ;gu!bng4V0(SqqxYD1=>%X?x@|7F?_hL}XHG?j+2DQKT6vEjz<>L(( z#G|+O9|Uz5Q(0Yjac(*{A2*V@u)qJhd$6lE|0mfLr3Ytlj1;SP_#RL48hw5elB`$P zoiBk!Do4VSt`n!2A87RUzGwSe$GfVl0!y~@Q3J;0Fu!9ntSzZpyOw3uBlKcRFdxPs@!#K`XX`ttjzTU#%cq8Llzf5eAbJ!>iaD8ybK#4>KTwc9FEpsZ`e9vkG!cuXwRI>;CiCkt3WkP;Tl7=JOd8+4 zUOUuAhTGfQhmd4xs!YwyFk%x4`xqez2?=K<(sH%96{ki=lUjhAMGEh{m_tyArAe0c&-~$;n0~6Y5GvCZ>szhK7c@Me6$c`as#aS-E8c5sZ6&e(;^EihN~r z4M-$%9H+dz-25X++j2V?P~LiY$HN=IYu7l)@Jh`+Jq_jnty4?Iz{FIl%L_BMowap! zp02J)@qN%~JZROk2IP|3)8gXs*;xSYtSO8)ulyf z^XdL!{r>)bs!aRVCG*P3by%36cdnEH)KG`HOTEeFRCs(DAeMSQ*ql4vVra+4!C7>@ z@8R)Mm0dzgigHFMW5B-V6>z}#sA^xnH2;-@k}Dm(%ue>H$>(t7!v||*S_s_Fk}8}I zJzZS1!8Vk+^EbswE;Ds?diBE|?jvmTmj?(crWQ_vwV+XJ(bRS>lGcKblGb9mi$8=@ zr0R;-Uc7m|czg%De%`go+dA^rQ_JS#tGT#6!A1Z~_U>KxXrnGGVTF!)+aZBaJ38P# z1}%}S@dMUOqYlg4X?}$|E;4OnfW`7#8Efs#O>Uc?o58vm8}2TV<$QvH__mHH)4Rg| zu;a}Ikdhbyi~!PVE`}p z&O49WipKhvSk)LQrN_HV3>19k`vbA`V(cp*mexJ4z(CYDG2G{XSYmC)Gd{RN?QASZ zi&iP2BFZX-Cxk^!7Jvf$oZ%4Rm|g0z40@@>Zy?3CPOEorpTT{FHK@MJ5E6jwlIb5I z>tX=urJsJw9FSg0`JG-0%VKGX6+%2(h0DP8=J87w^uhVuh~;rqU`aHzlF;aZ{7MpJ zH!d*`7uS3+rR05n#vJ|LNhaL|%SY-WGwj>G58BVMfA$%yUyf}awq5y9F5h^w;?<0U z*xlz^+_paN?Q3+1lBkGyz;~jRc&G6v`en4nA&Nq@77D&FMJd}K?dsOQl~4fE!JMstrDnr4Q4H|5-6%+CQSnxP z|2+C(;1KYuAT;&+H>|7ju;S*Yk;Og_J3fsmrMlXkec17C_K*-8^A}#psO(EWN!K%Z z%Hw$mUZLB9BL;o7qX)8N>DQW#w*nrX$N(;oYJ7t#G=Qd z|Ihvd#F1F^|MbUPPA}TlCGJlM8Z=~lpft`2UpERs(v7x7K{SM>o`A+^Wx9&ZH$4ua zO3W56Z)>u6BZ^L!$Xr{7YCQapQbyI?;YKyLDF=qJG(@$AIcd3zZF6Z@BXje`F3!D0 z?=Z{5jihs#M~l2fnR$j%X|YiTJEhk1^;Dz!fnS5$=EbfBso9uq-~D(5mK>4Z(QWo;?$nkqJZHq$mT8%0dyyv`3cQ zQ3$Z6flVxNHUYujHil%Lm6DL4rJ*srdGmv<=+xbZ9j;zpA7^KCdMtOmeojqgUM@60 z^I~ERI-)I#9I&1QB;oY* z;&)d*Okb@f$i+Fvr2*3S2B$n1B^3PYj4atpuB-SRTY6nIGP9 zbW~1{Hjq=#Z80!5wm6e`nFDgkOHwj2`@6dkLe4vB+tuQJKRoPm?_QXOeDW=0;~#NY z3aJ|#8!;!iL%_=g`k|;91p*+tP;Zr0RH$eSo`mX^cHE{B&|_xwJEIYTn}0b^%fZ2c zc@2W(hJglrAI8T$ot@D{NRQzC-T?vRc>=?=Nirx~ycromr?R)%>rK~*?jxQx@2<(N z9WEChB6l@8Op!+M1iw^~>T!pvPOqt%jvs%oIVp#*A@|}~OK&d1>!#Gb8`IyUik4SD ztIv85`QF;UdwOIt_Ty-G_iXRN!sEP@_-bD?!5bsf2zce+aV$dxd+yvQonM^j1u-#4 z2M5n4uCe#;$0b{w{rqMC@`snA^g_ zA}=~bP9-?dSIO*+5^jO!B{+5adV5Fsq+Vu@_Fo;0YrA5KTjM<@cHzRn#^xrDSf-L> zt21CuS=WYff?*M0XLmQk=eq{?a}8Mc3}UsH&)c!9tF5(30HC;Oaaq~ok$Lx7v+!^Z zr)=wUw*79QXl*?`5q>w{P6*NY;;Y#WKY*uRNGYIzS;o-c5 zjMEPv^yVwVlefAVh2Q8=ba4C>y6Zz-iTXFobGm-M`20RaXSq|p`sp!R;o&ezJpQfpO}=Q}p!s{PB*Ja5l8Cau zGJMXWwA76qsVpshs1fzq!OjlPQ(lrH+URp{8L3Bh-evVR-O~J2ox6nAr1Ahd*JK}} zrjR9=N!B2i&lxhQ{s{81sQQTKFb2UZRxte%&r`z>pZ z7Kp=J%fth>EmLj-486~B-{FeEMel`M>f~m{O?jOn$&j*MXnhU$Zj3yCow;5O!GK%r zg1qR9?WxWBi+q%=Tg2Y?V#piF6w$@m*jQLOSVJGthmg=Qo1izF?as4YqO zWW>d{2rhW-W)PI8V3d~JB*H?Nr@%!RQHi@cJ)MPnJu?l?zwB%}4PP1^ieu-@Y6?$F zE#ad6s?pq`a)VOz733+EKoQ(nYEnJx(OdjTG2Z5ja-JXKj~7Q)eLp^S*xP<_;Q7E{ z9!HL)7)_sucT6}Z(#}Zg<25qJAdo1YD-*wT=^g&YH8TS(O{Z>uc&~BSLCA*yfndSx zG{30&T>^pjf`qFmtF1lhtY%!*_li)xXN)kTR381Hd+Dq{dT0X%akc;iAug3;jPibK zXP@|DPe~>ezBu{BI~mz^%o!z7IY5OqV92lWa7u@AA@z>7n&!f*-48~(hm@?bLOr>6 zt*eGGVnk)0So$->+$>E&+!TBiv(WxwTy69QVQAJ#$R+R4laZq==o?@TKRYs#t{cE@0C!Y(+^E+>l?K^Uq@7>cb>gsl*qcP%)tb?9m9 zkm<^MQ(GZ-dm&M3iSyJaVnPSUeJbhFTI=(h)$dGk3A$7|?izjeWimQBFg;)vwG6lw zD?emho~GuGnewW2>ohPgoJX4REl%5bHie;|&kQr&JpVB#yO1z0FAn8ce@!};3 zLvtoXLN2Jk_|jEGWUe0`-OM(u_^uYWnqYfD{`qCXP#FyDp!?j`o)O_r2VqL?oGK4a zI}A&#TDwLH?}emrm$B6_-=9x0Lwl?k{lX(Wy)E!p*YKuql<6pvwWg&oLzA z9%~6-ITDCSMucWLSu@y<6%PeYD=YB7-(u&ZU#z>Le^v(XX|d|a&Q>+|k?7qBzNGAk zYX#EX_gZ96m92Z+^1}Io(Mu$Aa&ln$){kXXOX`ueBEH7h#SfVH?~Ae9)ZfUe1bn!b zYVP@Hr};}4T-w%Xig$)gTq4=+^69#J+N1X9k{8CtQZ_ojD#?~!i48SfHNKtVWBKLw zwa?1W%&VsOvu%gFNIU#A?F6ziGm9zj^VPhnuNNkbtCwW>nvx!id9_t~avZNXiT!Io zS7BUK&wg3m;m6`YPv<2GJuctsS0O)r+}#UaJBVeev0AZG19hHVl-uT+eAys zyl!35ZvLXlk=QLRr#FRnD>tu;y)YfFfID69gCTrIi=qigP69ZlB%TIBN zEuHnVsCMrc2sYU3s;_*}Dq1pk$M%%gy(-`RnJPo{F$sA`q(mWCmw><;x)EhA<6AEC z3uGP)3*?X8ui8^9vF%MhU1jtoRQIV>M7K;lLJsor?OytDcW*!BmQ_{f2g%M%kfV?- zFx(Y8WDwbY`p7B)3;UgPFY{*^$+{4kb>@f&Ge=i^Q)?OIJwG$)Zt0e?^HeR5tb@%s zwLhQt<1^&+)%7Dp``SQ)NNoxUb-k2i{%p@=u~2b4zdz~Pj6AXhFM;XI6#@{$GeuY@ z<5u)H#__kbw8VI+Ctj58u zZ`&m^&Rg`gk~~%GHhHZpKb8DKt%q}fOsGAr{`Kp{){O8`QDY2j&zDHM_hdqzT6%fH zaCu>-=KFBm-FU64;Zx}|oHifZ^DiO~2d(H@WurMv!!sy^NDN|xCitk6!}RJ`8_!Sv zoY0T_B56n?F2+XfkZ;|}j6uZ}wofJ)eXhpQ`!aPehlm{&B4Nnh?$b8!SRhN@sCZ#W zs_W6WZ}T3c1=wvmLW*BRk2Wdl#$QUjtQCU=Mi4S-&yqDLIbaXnl zaiKOEY@|H&q8o-2xECVv3yL2;B#_IHpz6Huu3UD??zI@L&6g<{jJEE zb;80)?e!Pc=H4cA>im#brcJ#^8lgvkr|TTF(5|X9U(tBJxzbQGO4YnI^TM|X?6%O! z2@8)0PQ9KP^o`qObc>PH#3Cd18CwtMC1qr6>h)(uj<*H9@402Dl3-~asEbaihB>G@ zJZ6s6Fw5b7YFXxhH;HS!x33vs9eTJrHu~<`w3|1b>gZKs!jh#1@;kff+)Ae#%r=o7 z0%kQghAoax>{Dw#G+rtqkn~-@Ch=8ZO|zOYe*18WU$NN<^D&jY{wtXhre^}_k*XJ- zXq4>hEy=5leXr5^sCy>A*UvlTdtOFJugil5Vx{0L%&LmAQH~t7luN}XS(jorZhqn9 z-Jle^-CO(f@_O=#ykd>=d~xrkHUjBuH}`XSQ?go~sSan|;UB;^ACPSnwC8s4kp7C6 zdNyv&y>_^8HP*OJ+31@O@57fvYPS3K&z5uu-kW}neP}8YrrNCgLzgLTUZaG7;Aoe9 z&&0uLnD>R0bm`R2Gt(H61^#fr+8$6w-ZoT=uasu;OewAWZFPPsnf_kmyn^Tp>J z=i1T3jV<-A*|6!h<_ktoaL%5IB{aNp-u>sBGo@Jp&OI~vDmG7uPqSWSr)#{sy;_kG z_riYyx1OBFL;MH3WAL3_O&ny`c;q|r%&O^Z6(;+q@$*~>uaxi(3r2+f8W5vHuPw^G zDLWDoteD-h*s*~KW=tAcY-9k!5{;%C4H=7W$&A^(HElI6nvJxf{V6ix&>R-814;k1 z`w2F?i-~*se%hDb84O*rvE=1=s;i2WR1fWZ*l!$0_h8#q;L(of*bm&k?H}s(4(y*T zo28;Dhh#JR~_V4069K4d1bM^2c$C*Ln;?0W|10q9Pk6jabDobTJ#S?W+l)s&f zB=U>$rP!_UAl9vBVS)Z?>A-^lo#4;%f`u-ix!t7$QVwOI7!Y3O~%syaBPa zPHWGWDowuoF^zK_TglA%RaFZs``f;qo$)z+J>Gs+nJC?&RVE*sS95YV2zRX$_uRx8 zW1=cw+w^4h&e8S!ZWjIevqhg3hfanV2{Rbou-L=s(@CxPr~U z`1rTG@lUsf+UK`J|Kj6c|CRpbwoosJi2J|z_;0;h|FG$KgxT21_4ncVXpd$uiLfij zTc3|#3{ql77sjd{gq5iSF5Iyspctl@~kfb{l}zA*gV z7p&h`fR^6D9lDuA_Qsy#7L9k)dWBQS?&8m1Kdby$yG*YT4D9`B&=Rbl)wFO06%pl&k6shfdhOCb;4}M6A5YD_6y(vm2s>XsNtQGsFg&$K+ z%bCpB-BycM=d7Hwv$oOH8#Vp2O18sttvzEsr?L$1@l|} zUCwF$`fFCP3czu`1WvRhe3BZYC{kbmjD20-_h#N|7y0B`4_a^L%Ij8&$TTc-v5fiI zb&ozK5N@SP4mISC*UjM(K9ud~Vg53gq#Z0(ZTV(!&>oXN1py9N%tQN{5&IgnIoEn; zx7RlTH7>bdmwcp+*gj5fHAPb_9W}?&%nxX3#bpC~FUf>Ma?cx2N#K=(I51r^G9MQ$ z^&16OoA=}b)3D8KP_3Yn+;^7Uy$Ig6B&*ysVvoU$0qn71TMAssuhd{#kziBjBu5L8 zXYm`e6~)M(b`;4UwnY=p8KiNM$O?dkV|6OB2rPUO1hxzbjC)-@Lt)4{yxDPWKD5}E z;yO+FIZRG0Ig)}H$De*oxYfYr-tf4jEKW~^1{7;zeQYmM@LXSN(}-fEom+nl38Q!;TQ z!?kcor?8YRWHIQH(9^p+pJli^thAO}H8j6F=AB`D8iJ#JORen(?tGJX{EzIx?P>49 zdvCL#vy+CnZ|=Lg|04(^aZHkw1wC3559NykxO zKEwE-UJ~(y9g{BaBHma-ipj~r-dSDY}|8cgWyMAsH{Zg+$id z(b4Nm4nA=Y-VDXsQ^w(`Nhw>?Tj)Tq5*A~~?mSY^WTSfcZ5(vjbeXk zgL!(H-(3$6JZp3d{L~-MvuqAj?qlERx%O07S-t;>zXsLZ%8KfG&7;+Tt@DB~jE6g= z^5t=;I+g6AO|kv+o~_x0`OlvfRb#~%g|(wu0zO6?qvgk?#iCbgw=Nh?b!xz3?nlcr zvF>+}lB7rgq2S|TOniI6VMQy$ZP6si`bJDfsGa?eCiZsgU5oaGO@>HydQK0oY7NI7 z<^=iX*$XVeJ-ChZ8HlSPh&a^{1`2$#xN{upijyA|wMpi`L&V_PZfh(0eS`&d0cUvq zJr56D%GldoJ+jkvFX9iCBUs<-H87Ms;(o(M(bUw$Im9J4XP{GWlKlvwc!@D4jE&w0 z>$2ETVq8Y`!)rf$VO2TF1{ygw1N3;5K+B)Jf)qO5Y{asp-npw8!OWG*z_Yw{aVwrRo5NRe{`4nb9Prxfam3_5?M>QZyUiazHJvWp6LWXcfDk@-@vxU3Q#Bt=uh{n;Uv&}1=ZcZl)rz)wmH}5ZJ z-Fw*@@C~-W@kUEiyz2>lk%gJ|sSfr}^ zFytNke(N~vcIM<{zj>MRLr=wXBVs&EE+LME!*9j@vzJ4*HySpVaGHOvJ5{94|Kvvq zr8(H%^j2x6uATRu{lPdpcl*|lkAXrV*ZvP%ZynS|<3^35!Gc?GcMDS7-QA%;aEb*= zu>!^2tyn4U?(XjH6ev=>KyfI&`MuxVnLBg8{1utqWH-BKpXZ!s&$+0M2$c$+)e&mA zNFW}o0AC%s;sSbS&dGG#N zlML&}^OT+V$3A7>x2Io!(EsH>mfRfQDika^V?dfl2?4)d9y$!P;dFI0udlK(4`VJ~ zPYrr2vXKUS$J7cEsFZC{8u1vYuAosv=Kr2oyMm1fdJn5xe@rxmgy@0LO|IX>?pl+u zpLU{ANG5sqY{N<;iO^;xCP;@VRX|60fHHf678=2TV~#Z~e_(837b?CiC&KP+kMA(! zE^0n2P0*&Z5BfrW0)+9lm1|=WK?kI})DFL1#N!XhIzhbN9R?MtBn0Q(h~s$Xp&{-5 z_P%Id?V?;Yy>-9l5XVMk)>qt$HKn(FyKwzNwxC;bd)_!}97Zjo5hP*V3=V`W{(Jo; zp>U0wg(QICd_OI)g9MhP44qdV{OdhU*FWR8tE&QH!~=XtFmV!~zCwLDo=ms@c`A0B zP6Q8g{lgV)8&!?KoTn`-ar~3OjIq*VoF(bz(F>{A`6Lh8AT3HP_05vVcRC zM+xO$;Mz-UG5dyPhoV|5UkN0p&7}?hAPl}!;+-;YFtBX@F6NDq!sXh1Gr`tEmz2^r zC$_8cF-*=~H&BaXNr~}y_WY}}{ z@`NPQcSSGkc%N_%W4LpDjz}m|o2?05kUA8eDbVHg_xBVC08%ul$gIg8+5?AmKuM|` zi}p1NiAvYiv7Y#r$=WY}&qRp|H?`?Wuxa<=1ZmPht5_V;;h&-i*D>CcrX>E*HRn45 zn9=ZDl=XhJ8FEkoabgoRm0(0a{czmC9RjigvQ4uNegAqhr!26n_!e@9!p4tjsRO_KgA9ijKHy?wjgZ5KtKCIuX2)5qb}??A2-Or)vd^EctkD_t2iM|!h#Dz&mNf&Uuja!o(0eGLOp z04?NE$~bz^xTGg0{@<3qA0~GivmiqekhXtE)CJG;+fS6#^O3@fBKmLVZoG>({w4ri ztYO$E#^~)~p1NJ{zwl+&O>CF&)bd>5MSMyyb6KDWl{!!3tUTx9l8#Ep29HXy8X^j^ z``D9yQitH6=scB77s`l*(mk}HvEoBnTB{W-#6_#YU}P{uCEVw$FBbMTs(T7YPM8+P z;$5M8GXrz7p`QnRb{Vx)s3%?gsoAkv$pv9aOkq;6s>5<+s;iP2H!MX z-)Z?UDYPoMlz!Hp@KCuVFTnyI?Y4pe_&^+C95^=gL;-n6dWNB4_ zleMd(3zxpZU7KyqUF4zuhqf@o#MTFL3C)0@4OWNz{dAG#bDTuQ)QH(dSAWO9e0Zb> zGVbRMP~5T=@CY2JqW!dtg6O@$igmc8AJhecFi-lv?shdhb%b!)`7)6i!pA&=j0CIw zS%E(b7=Q-YQy*5b5eQ*YqRp#5+B3)&pD%kM}Tl$-Ijy^{REdG6Up)TJ?Y3t?mpP~yf7zQ z!9a>M!+qMXTy#6DxFY`cjRL=lp*V0^ny!(xWZxDAUX0H$Vd%e=A`@an<`~OQgg|!H z@3%ghJpG0PP?s`wfbyC^g-II`XLo*Ca*EZL7$oB?=F6f`b$98Lx1atLlCb9h;BjYp z)|DqArMI&01?3^qHaSyg{&lM0)@WE2T|yG$h_bAc4e<^~9nz+lo&3gx)3>v&^^Wtu zmUK=6$8GvaJhT>*Y8|3YiuoI1j_uYS^zWHJ&$1;Ng_J4VT|OE`apXRXITtC8jWpA^ zN25>XwTerq)#Exa{SgV!w`5D~3xxm2ZP%8ro2N&uQ~W8eD5!dt&&P{uC%%*w0=rh< z9|d|CbkTW74qLuYA1@Pbw|fHMEs+GIE(pfgh+m zM_!8ac;S@_VSCqIN+ZkzZsdbeI6W}udtR8lB< z5nY4cRdYIcixnuU4q+xAY#G5zaSGRM*-Ng4u4rxPj{aGViqLRhT%P=#R|;qr3jxo? zqhHl04@tLp3yTz!4>)lPi_PsZqI@^TZ5uDf;W0w~t2}0h1LJQA3NtbPDX5u#46X>4 z)KG-mg}=#5Q{VU;F1c%^AH-P~y2l8q<3)nYJL5NuP#@{Eq4hJ=uh~|Kn$97yUr^C6 z#%)nZo1jFhQZ*>cRp90j7!M7bw=Cj+qwcWGHuY1km{%7OOd{!ReakGfGsxs08fOi>ZeS*|;T=9x)F_%5Y#M-bN>jyA`uyGn z<#prFk3-DG&lMLGusvZ8T0=6({GNv}QZkC1cr5i}rnC2D`}ab7lJwn5(?DPI6>Te| zGn#TnNih=rT=5PeDMKGb&z*K+7-kXJ7?I>ch*mWYhnXgCdrER#{y!`NP$sFU{>>>T zB&x?nd-vF~kuv~C-LgGPK1lbx^jETk2+hFLQhkLLFVJH5)h*3omBp(kbZ;f!K7T;d z_m7OiD=#s}*Qd>$w<9Zd@34H`_G_8bt32Lofu3v3MXS*kt`^29V-6;UQYBqbYCBf0 zU)Z0=UaJ_KlN1}Ti_eaNXJf2zu#-CI4t7ML3@_df9&!nWq1jBYaA^o4QF_O?EXOqt zd(JK2uo0SR*`9}U-)P_9c!;N^T(ZHFIMW5Xx|w+lT7PxR-J}Gq=o&K{P8n$WFGPFO z4^E7^bxi2IC?}}l3h`;6pI|A-AB3A3S%Nq_(1=-av}F6z!Cj?6n1J9q!i9Zd;T{ns z>D8G$7bD2FoWpb?Ga8zLv=FU1QFj$9QQ`RSyvX|1ak~T(0{VopUj9T3wJO*7_*aKV zI?XivV)a7!kPfO$BoRPx*IkSs`?rv8<|lCMr?XQQTI_OJJW{9k8cL`NOHVT65k7+1i~o5(dBEG}cnw65qNG1HYo6q#k`{w#{?8$G!7b z6Kb{X%RADulvU&BuqSioh6|X%a!FPOWV=tX>XK@y+F8Pkw&B8X-n_#LU_GG0*>5X8 z2dYNYOI%UAzPgtuE4w^Bs@<6ji~I!Hl(~+IH1uj7R1;(k@dw;H!#4(?7u_k^b|06p z_FgM_-ksSmeVSkM&X8WW)*)zQr6t;+b1n>cdIYG#gQ?u-7U4dk)jTh#a19gIkIeCT zNA*~$z}qp>oFKl$MtKQk9+Y-K-m}8sE_g#45yi^5uHiz!%L!fsQvvjp+fnOa; zZph-UX}$GxKG};2h~4a_kOR*Ju=_-sZh!;S9{N1tsUK>oaa&4j(M*!=leHPf7|Ffz zSpVUC;_|Pn4sQDF27qXKxwJqpj?Y?`d8(LPqj|)c^x< zqjQ?gGa(n!JM<6dZd#(?NK64cz($je3eR%OezSqG4YvEZiR6L935c_n-UAcCtvE2F zbJszPe!-ZzHZ7>97d-c@#KGI&h3e0ENF*t+&Pj>bwdbo6PCVz!o_$8;SeAt*2Nw#^!2LTHdybrNC)v44LCW91ru~XLq}Ah@QiI@7H5K zQ6eW2)BMal0QYohB+i7gsU}yfm(&m>6ebm%jw_;*7gEmoNQ3wNd8srMV0WC09r>4x_Fd{`iTZ@` zeR)s^#b|<+{j#D;Su&jP06rT>Um6oXyb!z3vgB{_+XBZ`EHz@g!4iJlHj2UMkavWH^YyK_wm;U?8uJlYV#8j9Ew3{%IRP{#-3tdUBI)^#3crl#d5_4N5CH) zL-rDQ7xhcVHp>ICdc*mOL?G7U;O=H5Ck?w9SarPyD=sTS*YQ+)Dm6ze9EdV>_!uhC z+ObR3n^`=QuVTz!rFr&tBLTSlx9l7+v%WnN_@ktb$0j9xDVHGp)8}z83d_-?6NhYL zLICl_76&vW6jP|TG$d3pD!J^C@jb}6%i?K~Bq!i2dnqG6P@I_`-FJ#L4;Lv< z!)<22_MR{R3!^3Eb9m!eEIXu46iZS-5B^e$W=z)NCDM0rLOe=JEHmBzsP`*Hw@m4? zKKBHCh>AShH=*xA2~5phwawjAgLvUDbKDbIsg9cnYMAqNWQl(?GoI14L#PvU93vTy zgitp8hOi6vteABSXhZEhT3ggVvKRu)GY^_(JH&3gPbf;&*r!?fX2#yNs+y(mBzd%= zKiK>a8FsTa@S#8yu^{&P9%E5z%f{bAXRov~N|C;&(o*%W@6DwQ-OXXu4-S3Z*gYP` z9t$k&#}!SRp;5bwb*;{wp%mQ+oFao13dn!mTqW+Rz?7{suTfszl;{^;fES9b+oz-N!6LP z7utQkLoFZukpc{$!b%%}8`W9Al=#)yJ|8pE!UM{{c?htB%C{`h{lb2NR5u-lDgK~wJHm8Cza~D6)E-QzZ1snN*hsyz zQTAhw6S*qE8vdAiXR{#;6tTFy`?VeD2RhmADrq?hgaR}b>I^arr(#=28XG$pSwPe# z#dt1^wBxwR%!s__ZWNAzs5;c0q)=$QPlok}w{H3#S@ zU6SJF3o7fo6K?d2sXwmYt$G;H!}aD4_4E7lmA}w_Td8aXYkbZ2@HzIwz1Mo->o~sn zrAqVE7yq45>E&nL2g*w%cAL#otsQ~{lU{)C_I!41HE2Z^7!h14L*J4^3-2#C+<5}} zyo{r(7+zE8$`xx{h^5}K6+mq6S%5C|8OJ5P$84lJ(pXecbAQIQY^@@Bu9x zO{RinB9?aH={M%3P8oE0m*i-x`@hoY)8;qbDTI)wkz-8@A-&vu#L83aD1>D;By@yD zWx&_quRPdI8#F@_N?-WwDz7eEyd9+~y@&uFu`qV)kEKpPs-$zJ_kryEx0j<$YFkMI9DII_50f}~tP2H=(iHc`A1BTo*S zlN`Tbgmfb4Xh))&9mpwmkN5X$FNVCUW}M_aQkZ4|x?|Om&KGgGBoFBDj^1F;t|#ZC z-m#Ss0-z)XloUf0v>-{Q?@H7(b9T`}m1#l$HBMJ81{v@FmI;Bb^zR~sq}F$F*Y(U; z$|35IU1`Ayv@@MF1Odd?55;v)NYZ&sj}1ur7EKOe{q+{Gle2P6$$23UX0=bVZ7mm5 z_P{)_8;~Q_=CjZs;enU58~?HRhyd_SmwuJ%SrkrEST21#08e5{bxG&DM@h8tL3&}{ zG9@RZtru(|AS&wuNkx-MWg8uLwvay}2){jU9#p5jp3WM)sSZ9+0NKi?Ta&k&4olbc66Qj-}qX68ASBh5Kx95r&e?J}@^5v8z$%;XhSy#sp zH}o1KJb_O0XUP+5`o2g!HaDg}8pzGsG&WSnbeC9Z9B$N8R2{sF(zs>2OEB=r_kUq9nj``8rrx75WR;^s_A_uOyPT~ z8o--cSzu38uC94$$@#I(q&^n#U~q6 z#1Q(eC}VM7H$Y7sS{K&KUxPU$GszlR^EWR1!fmTP6Qxu3FogEpwleXY*BO_$zwZXU zIoE=#;0KH|pW=gl4!?BVjKPvVygGk0D#jAxbDn||Y_SVH8cokjFnqbFCln2(=+qG* zdF-!?GN8Y-1^`b= zleNht9p`_PzKYFH#ycNqA3Os=r~GMVZNp@v}o606NN{9*<0C@e?OvsaQ|R!nojNmfi|ItynJPf$H5 z*_hF`VujPtJ(Bv^!MGrIveG%ewk1anXzX33r~H^-r{ zFaulQCe9`j`-W;{pJF)=AL+GMuevcVt}lCCL@+H4SEZ%VfbL(CPx2Rk>K9U zM2!d82LsK^7(zXGLE~^dYjGr`kNwXyUa^jt0a?ss0Qv=j<6AP0E(YT$4HF}1fz|f= zxZ_p0v6)f6r}>9S)mYH+82l|0ISan~pm%lSe2=K264hX43T};f91R$=PFr|6&cUe3 z2s#JgaXJ{ub}QflaIJj?MhDfClb~ehOzpWa6tN~?%^CN+7SI-Q=2cT!vP!X0pK0QM zJywv&`bbXF@gG3Z^vlRKO}V-Ck&lfYX6S&gm_&9VCsDMeYizsbXkYq%|~H%jp|KGdlVHOS?H zSpybjc-k>-Lee+)-`2<5Z45wSq&|7K{iHQ|bmk>snC^T$r?5=Wdbku?{7_2yJGde| zK<$_WY8B#4s#+ky5U!UFimA8?c)83c&^NtLXF+mjq05oY%FEYaiya_0^a09;_&@C_IWJKHt2TO*&mMG zh-g?Xl)5!0mCJG~G7S3G)fT$91?_df+GPpIKAYU;Gj-giC3uPWBl_MXm$YLf-mm#Gp;m*H4Th7cvU^jQ{?XmE6l(N!R4uSP6pj6XBh zwZQg53Rn4^TxqFL{4*(u)u2j*55cGiCQ&yQ7-!8HUcqDgU17QD z#tGKY3wwqsv`AFV(iO;W&W&=EOY|@-VHFymhes@|NvVn^?01b}^HgMPt!TDI3|AB= zKYV_6kv%=1U~mgxYnH&kt3%JdzzY{^*rQ}GFhe)`*Bp`7hWkK!iq`g@ru9fE&F98+ z&X9&Er%M=&c2ZP!-A8@<$jeGX{ZrIiE(*YBiwDunW+ikcL^ulsUwo|STHAnpWfg5F z62uyVw%~r<#v{;>A%!Vf*9lLNX%Nb5S4X5Goh^*qYN8IeKU>6=f$)aN1u#C%Bn+NI z!>O88QnNobrp4UjlFd^}VhLWD?4oC^d%~TI;!6GJ4i^E6N=aEU^{m6z8 zCTC3W)hM_cyR9is(L3SjyA(*V0YlwXZJbcPclxZNW0OuZm!OT>MWY3kFlanrW6RIZi zha;XXXD}|Y!)yS$$lTeO8PVd9xF_*eXD{WnjqmR7q_TAO7bIa}1S0a!Qit4!_V|uc z@&CHrn7y*3emgoIS zVItpH(64j%jeikkOlctlx}G?EGFNl*@;oJGsaMJ@>D=rnqk1^wvPC9dQq{^MQe;-s zn#pVRa~o@+eyaMDUX6Y+$b_iiP#NfRl597ngkD`)qShm6*9y{vcUymCvEchtZI5Ah zj^#0<5$o(kE=U_VS~Pn09OMUrm-O`cSdY_v#ef$6bCA(P)7}FSCzl7AMzOU&dvoM0 zv1y`&oY$g+oWByR`YunIgjO0MLmL!o+Ud#IjGm=8sARr=!)5X0sf`m1Q9;$hZk~y& zLywfZ77j6Fb$~kmJ&c@4T7W}V>;+iPvclBJZl9vL-OG6oKe8f~$op+EM@}5$NP)5to&z~6%A^+L$C_&(CCe(VKjI(ExEGN6z%HT3FnKFR6%=uh%iYwjCG+j6!VB$GHj{6 zO5(JR7eYH#2?YPxUR`6Ouo(doeu$Oi=PaAY+hv9G775oWJ$E#>62&sRT7gG=8@z8& zdCdf!@=>PGGnJ{Pcs;zUITUYC`=5qhrsARM@Ba{}tIIWU@cVH+Da{3`_LJGgPXEds zA%j9!GlfLVn^@JtH2wG=Pn1&T(pqmXlwoFPDgENjFfFswC(>hYtW_+^55^C%B%=GH z)Te}7uqwzC3aG_BL>%m1D1Ghge zaZIx=Nix+_cj;sP@~XS7LI`a6AO9OT7^${ypTp12?PiuKny9b@G(k~~x-5C7m!ub< zP(BOl9C(EFLom@nFe41nc|)}F+_k@WcXN+g6~5mVli7h%6sAnU6&lGcu<)WHk|bhi zyK!c~Gb<&hIy0zBn-ZFQtdaepq)%^0N{q4XjW(z@0LK{Y+V%J|MhrnAnAh3@_rr-x zxX7>5*~}ouZi@-VF*IjrFlyB3JFmo_4%w0O>;v}F*`=vs^J;;kjNsuo&m4;XiBiOX z%M!NBpB-CWs0{O=LGIBBNEj%u$jiBzWeOo#Eu0{I_}I~_dR5(DbCv9xX2qfxu&SeA zch^j|ns8m`pKUHBm7i|HowKB-`Tt6k@Z9uK4X7ePZR%v`@lI~Vl=MvZ;itL*7_rh& zF-01D>Pe{U6ht~MxR#Vd;XB(j0J{;)+J=xFY^SlDsuu}Gph>)<7yf9u{2%5Ra-9AG z{tX&bqxV>Zy24r^H}E8s5mg?#`{5-PiJvC3vAd{jS9Cw-g21A zlV(vk5MMGT?Fa*d&_muVRX{bA1R61==zD*3+HueXFpC140En6!)^Uv|)%Q*^44S^u znNl1P+@#9bdw(R2u{z!@JcBR~sT)2eFH(yBd;NpdQ_i`GN^4XGH&5p)Og{`6gjqic zp4`jT)t=1rARp%yqx~%wBx#Knuw%jZlrP)S!v7ir(;NrvgJQ^j8+UrPaVxERG6m_M z&=(9m!5gO}>gJX9R`6odS7aV_{qXz_rys`X@JG;AGf}C4tl%}5B5B?IyQZVsa=-#_ zm(E>>D#8R{8KZOSXun!|lS~SE)em&0k6AkNg(j_S1F}IRRgeK)BJ4!V>nHoh%D(BV zMp%VJ%hq813C!%32!TzhFa#6pIpc+TJJs_k~zPg%LyolJYMep>!U!58&&^&y&r zQ={`qmpmV55&%SSs1UNBJmBabD-b=D-_+2$FCYa{@$O`aOYsV5#2g~h0Wu+y(*9&% zf)zXqUgCBwRZ2sxbjkTdh&=UM_Ih+K$q(nA|HJ&EJb8PX6#}?81x^Ow(i#xEtl`2` z(*K0-dDJxXr~|)0qKU{?{2m1=&x<;n)_6WkX?|bOmL|<5I}%cU5>LQ*=7at2`(QSl z>S_cS0gM{y$8TZ|KHBytcfyO;@3IV^L=0g*g?Ti6&bzE%kz@;mF(`3L5Ap4uvT8J){-W8LmM8!Nluc?RDe(R3ReZ8 zWQzYMgE6w!cUjQX&VsdflT(TgO3OXH?k49IeozM+d$t_{r-DL#tdQ_|3L)F=Z5!7sr7_Po`BjM9Z;Fi%gAfF_6+5^ zi-MT$ipQoc&QEGJHsCXDV{6v0@#gW1P?wB&U;ANq@lEaD|Mfp2;ovpN8^Mj=S4HpL zDCJ(zzyyX$kEC1qFeK|qD#KIoB=mFX^LxV3ucjWiZ1;hY$}L|k(6-PSZk0dZkYhWrx6}B3r7C!~Q->tx+06C9**z1i+v%UCs1D`Gigo;( zDkm;cv)jurdRT`Q!TX|36U|rX54ZH;6crkujS6e^K~AGSp;AZ=zHov2*t{N?@z>Ps z>2@H3G4f6XgOuS=qGg2lib(W5vb_=+OH7Z{!y2pQFEx=Ot5v+Kv4_H>Hu$p zVt>~|DM-rL*~H520?G$x6INHexsCB=Mn{`=W;6`be+t>v)^0rMfI-of?;p)uoMwBAC2YqMV z;@y+Y6qk1q!n;y#%N#;*tr$ywZ_^Do0ingDz@rNBs74^B;H~{I7J69J9bY&RnVBJ% zrW9y(B(ErSEGW-LNYsktyi}K)R|zW`teFWv7JSf7Y)Mj6C2N0xYKvnp$wd+oq`m9= zlV5+T3zuZiI3}PMy8CT4yXTXFbM0~IC}jgVIyUOZ4q4;iFlH0Fj&$1~-GD0iQq;Vn zwdx%`%08~(G$qC+6@zM&IRJ+56k{DyGKu62P#YoULC4#QgnlMRGXNKaPkOtpVy#{FrQD`qnp8~U zDxQVuf;Q4Jr6tboPOcvz5Wz9LFj~Qhkn+IVQI4)9Ky#_ct%d?fG3yCa$0Mv}S`?fc zdpUjeu+-XX3n|n1s|qOzkULjwH!fMX&7a}J(3dXaw^?}qZhf4MGeZ9G!SS7pgBx8- zR-`w0fAx($rk}TnARUHGqM7>*vqN@q3^1WRJk38E!%Y->Lj2FpS)*I0*IH?k5Vp&$^H<|6?wY=Aa#UbPuT)Xnq%~x z^3SMkp;7ibfxT4-_Js>+G0CAddN^ojSyCV;FZtPnCs$hGTUh%#rZ3=(gax^cG|&osZW0Q>vn%Y70#W32|oiAFPEs0e?XF9+7yuij&YvOrkD|OWVwHZ z56gJ8;Ek2BaJZ6XPg5w)3d)9h4|%fu0Gg*Mdqeksb&|-4nHH)t(>1LV1xq!OrzpBB zHz`m~m+PBwDLB#0eex?J8uUI;#rD!Q5=4m@yea8m3`um+>5l+0axkY`)%p%)`)WNQ zL3IpZ%;?(yod4{2SSD;gBlQD;9t< zNID;YIx=;^V8r3?dMCJqR8)ym!9XOvpTf%k9{6A5PXM6?=t+zyxnPfO*aiM2FNF;r z>O}uh-RsrmT&d72(wm2&(n$4aLrzs-3bnhwhda9p=#mR~%^W)8Z-enK40|zt&Jd0e z5ba3`*6R^Q};jh7eG+?ZY0@<8+>lGzQbDIx zr>Q&N+r(+#?1N~D&Gv^DI+Ea2U7%0xNj9;P;py?#X^KMPd9AXPQijVmSX)lN5?ki& z)IyZp5tD26^M4|h9~6t0vhs`?t($!iR`#N|7mdRaP%hG*Xrq@0sz4L*G}XluBSU-d z;fs(_Lvpu{~i)B zATB?@V}F7*V#2dhRQl6}%bex~IkYO&WF|ox;E&6@#Pu8w7(5nr-CNmxi-!a(Gc~^t zwvl)ZFkO;GBA@>^iD<9g!j!eH)Xfl;{P0dM`4V!e7vbSI^By=)z~Lo1Ori;vXG`o1_A%Q6SkNI(ruI! zYGHx{mq1hqQd)3ih`5uouqyz9gM^W^2X2_R*l~^%g+|>Dm~_>QMxbj%^c+4)rfKLy zKJ|!)fGv>NZi5W3T;a{1Keb}R`NbmOSp?o~Rpl^R$%Vp4t+DEMz*HDLP-wmLjA?pR9Ed&8S%HvAEvHAai4!}0yWB)rZUVFw(Me9s-6e_?gVX;lgum8zH7VnbL zY{%9cg_LJfIL6&dIJmR*L546Q{f#U?O*^n=<9JD@fkD+x%XR7Uze3rR_;DWZp(x?_F`B2IeUZ5oioE84@-PZDYz zPtO~GcPXKm`HymMqq4(s$;JCy6cg*(E-MoAb5PJbV&K)I6W&G1Rze?&S-0<}| z`UB#S5urwOnncN9-%BD2OGDpnBF0muz_s80op^Whchol;(c$dnWOPYiH5JLle zQH$s02x!UpBRIuw8L}tMBEAN3hyU82dR`%VhO^C3RQJB937s&$&;IGV_Px&~mhzq6 zRoOy7$}B7UDC2!Pa| zOLmX_6MPa1u)q5};E7sTHC%klBirlK&-Qye|0J7~Qkc-$T(!C;V)qyOiQW%+zuAE`<&kk1Gh7u65**wy5g z95=~m7|%w9oO%=bEbV<(X7Y?IqI@}r)5`=xz!?Cu);xqZ6c((6wn$b-_Jg^0luz#e z4U))y2a8)cmWkZtMfSTDxZgv;YOC+1{x->q%@I|xB;+fJBMPE3GOCB|6}`aAdT;b7 zZ5aqiqbYOtL>5%f9QxURhYs4a3Ese1VslVlG}ZH5gvAB27|vaeQ?h=F_!fC08&*H8 zQ{wyRifoP@6}-r_g1u9e3=@|W#p`taE52wD51WqRa!(Wqy%7v?VD=19YoDr~xM zjuW-}R|RYUr`WBA45-gbxA~D(|`pJ^=pJUc5zaFv+9JNuiHkv zFCOkdBX2dPo3Ve)6xidxAF_~Xc0#lspRSBgSTZ>3T?rf1aaMNARizh*sw|Q^9!ERy zo^l|e*Ju*I+RfK%qeG*lH-k00!jIB5?>&7cWu55ceLm-CP+FawC@<*}cNY&84a}{% zyw;InHIR>?4l7~n2Mq_NEYvZTG8%xc)JA3{Al?50=Hderyy_Z1>$H@{;aaq+{+dM( z*=!2kJN=VqpGq0J1>X#HyXFbx$O_KyFMC9Tpnbq4C2>YiInioli5elsOMw05>}ifI zsrHVh(mcPUp}*+U#yPrUB9epY$!b1h5k>78fF#*zd?JYHvBfgh=yKiY$OAj|RCjkR zR_ZLu=Nz?8B#-G%ur6=mP~@QGC+3_M z5%!yu@2^G7DJO8fO}s2&^cg8%5-s-|kM5SVEmxsKZrcD;@s}UEY8hEf-;Kgp_R7{( ziBN5?Ngz#anSFGY>q^KB{tI|ujPf7O=?3@jzreA#c0I0zq(<*Lc&LAC3Jhz*tpVdQ zME|fsnM;{_L~ZGl{LvRSv%19tD!} zoWq%l6#-m}|6Cpn#&hc}mW%}@7$N7TS*L(@|1S8f=B(Ew_@7%vbKf$Iv2I1$<@$tI z^MacG)2<{5k1R)s7OOmyt3zVHSu<_Rs9c<3Gu==sEwTNThYw^Ji=!_&_@kM*_x$^~ z?_CwUyqB?_6SLBVg~h|i6koAS8)q)h)N<5|B7*-BGfws)buC4|M4I&(9Tc@~Gg!ZecqFW=D3<=@dqDs%D^S$HFcvA|6 zpRsp|rHLhEZ_yjnj#zOaRD~~1svQneMVQ1(%(6W$GZ=`hkm*v2w>RximkbnWYksr* z5E`0nkIrXFi1hh?Q+$%0(9e9=1iFHWK_X_%0Kq@iuKsKa{?P(WGiv27rzE0qdm5G` zP892SyP%x}MMJGR1Ky?rNl1=69Ct77GeOb!LQ6t~1QPa;D5>sL!@fvK8Sm!f)=v?9 z*3^Tr{v=GP{1)f4VVI>yC0rW^WQ_}WQ7;GE%w68Vr#fH1wq2HyTxRGDknf~1F6vH0l3gl&QTMBxp{RDB6_r zE-ls$kS2nr3_gpMg0C*YvnTU7cLO)XdUl&WDm`7LRH|%1#wanp0!p28UY=~Z?~nBk zq@9tz|3-hbpEKjiLcA>)KX?=dkAxz5F~S1FY&85Zej>K*!z)6k>8=pE;vDbU*FI`I zt$)k$un*n`I(+{55H?)2D0ZUqSML+&r_%|`$RK%vWMd(V<*! z&lFWp{RaMf@sl}jBr7qi=}Q6|0`NG=SZ)l%En*;`EFQDTtPVj)^W%|&9|TKJCbulYF1U462Ri!* zj;8Hrnd)SKpw-F`LF@3xlpv~oN_}M@y&_E>3i4lzg^*pA@H3n=-^q0@RlP}$+?q(0 z4{d|&`G<{i#tvb2F+9Z^Fydp@?sx7s;(|kRq){bpw3IA&Br{-`I$DZ5(oz#x03rza zzq~8}$r6M_THAU99}UDCdYy~!qCC&9!l_1 z#*32XU0M|iwK@d+U{7FSh?Fla``5|Z@3|74-41*(ABU}Nzc=W^ zrQV6BODQ{61m@{;@d&ng$A>8~tQ%cd;jePXMtYu0u`yBS(r=;l|RK``P){`Vyo zJeijD8H*>@-Y`4K#NL*cqlXum>C023_l-&Q%HAGLCbQnS>HGH#Oi7A)Cgr-JR9jnH z2Sa$d$QFe(^n6YT3@9P%&_8kIFF|HOEiKu9pVT??hJ#@#I94=V1n97=lgQlpd993M z?QwfP+ROP8UxLXlFg*y!)5XcjIo7X4AT(~BoFiW-HFJN@&lFuSf4sX(jm3PTYf!Df zzms%Lk23gD+P%~2^4Zz=%%5R$>)4?Fa#)-syk#(umr8dQ7D;{)7KR*7Y)NtUd~(9F zUAX)KGBZ7mRtR(E+4k}AQHq~Dq-9D|P73*ocK{2&f)?2O_>jP5Odm0I@sY+sS*hop z@x)`~8OW(|o3O{gO~e3tq;#8;ViRf{3-6%lq@*O+$?*Wh#vX)Ov-Hk@ccox?99?F= z6C{KsB#8OF7sB=?9XT>h5_EZh7h&*vJo=jXAP_03Wk93rNS=e77U)PRn`p^0uUKnr zK`}*|x+y5sT8Y#iRaUteHJ;)V6l!2{PAfNWl9xQ7-r>Juz3WD(7%+!yB6Q({tYn40S+UW;e17egaf zZ+K4hfyD5EHQQjM&;~09 zxuh&&N*OqJIJMq7IXl}luG{lf#1ou~$QR=Nh8g56-~$1~vk;!lS8lr~*X?;A$SHS zK#+tGf)6rya0~A4?hG!$gS!L^B)BBVPQH83?w+&vySvNjAHyrH^;TDPcRkNBm*0)> zYXNV`yPSuoUkz{w9jI^n40|0CXHrEP5gDk4Q%wOQ3HYJS>fRcD<-p@Lt;@|@y~T;tA4G8H?hF>k2k*TXp=Sj# z^1W6~8);6C%BP+E(bXlkB%>H+LeQzqJ56B83F#F}nG0m!Yldg*jq<|{Wbt>le` z(~IkFD>KUGYq|6`6>64zkO0S>4(z&DyPc7+E(hwtTy)hkSAHYVNjtyM;bXYjQRs&1 zvnzN-p!C~QwPS+5n;fKIc%VEWr;2*T1=0|}1bbrVjzX+ypB2}x{yvhC1uS>?82*gp z!tPDqlB%TyJ|I53m&<4U3ihGcwU|d{CB~QR4DI6Y#LjHZ=OJf7^!SDg_oY5ymT$jpYQUp1dLt zw`af-km=v>uH4Q_>F$2B)sIhRV#YPA2F`U~y>F&;?Q};678h@}T~3NsOkESZXO`Tq zeTWT+KioET?Ml8k(Oj7QRhG@;2V(-Auy^NIgtnC20?Ez?p>cz}Sf+)Z@$q%hmv|2s)`x(By@4Fi` zYc9zl%qWQu1@geucrVcSCYgm7-RrH2n(i?UPnI6LMNvFpbZ=qw!EnRFUqkUsspkiN zsk^;IEzO+m-#CCwb!LHzuBtcD%V*#Cr)qJiy$|!K!14%~n#*3=-h(pG^2M;44GFOF z-nzHfa5NV|px*qTw7fRkjp*wz8h;SQ#C~*N^^a>r2l8sA2mOVF$Jj7j?B)xM(@a^k zpamnAq+mTlppcgOljKq3W(47+DT;d&knRKbWwC;gS7Nslxg;LYF1zGa`-&zupc~7Y z^KyRf@#e4~_K&!-Qb)2*U|31deESS0=3UcU1y&^YY&@*=yg2jaq$bGmE9nC$9UVXWJaWq9IWCGcINl*#aw$HJtr86 z7e3o1T;Fv&tQ-7sw}SOF0$eI{U0HVf%J^1F^y>BXlvphpo} zy&x{KmKaJm>hYV&+)vxdtx#i8jTP5(CLByK)dI@sr3Se%do2vhark+B8e=F+3ql`mUg&}dhW z8q2vY(_0N>82CqK?epM!`oOo33#s>cP7I8G*?-!|-y1jG^t;VE!g!BDR*vrb=ct5g z5K%MdusZzST8s26>C*o01UyLHteiKaWWwV_DK7%01|gOR;+J)M2iWf($XnBO_2-X6 zZywJx+$7;(r>aRohG_;Uw2m%uySL*c<(!A+Qsp&XCuQ@evzwmhN1Eqb#N2Qi@U$z{ z^>-@Zn=h;a4OK(N%IF)NO_YQ=Lq+%Xf~oQ4u038V5(eG)!&a0%u?=n-lepH;W#ER_ zy>GOsOIzp*TTb#&N||5r-eG3(#$I<=@Lo3gJct6JW@N|9WaQ&u0#4G79sBvymHO&} zqlqz65{pHWm{-hy^Cg8YBIDjFJY{k8Yh^%M zTjO(InQ1T3039J`!LJ`GnU*h_Cz=Wp99TLAm`BW0{a%3X&P@${{~*AKRE6HE`rQ2< zr@eKm>0%DOu9vFF{#pb*a}U~{<(gU84H!0)M|&4QMS0oxifT$Y;|sfu%jR=j!_(h$ zTM-=_7gj5`plurnzP7anopg@>pCj8b$~-g!lw)n6DHu0(%)syAd{}`x1ZBGBD?4Ry zAe2#a8zs7AC2jnSKJo^NP7S{4_|-oCV9kw%&=*_5#RY+%6rsu>G@y~WC|Mnun2JJV z*=GfrZLNV1t&47#ke4N6II>m!mjr6E#atoRTaPr%B1 zvbD$pwI!5sJ&R|A;?jP>R#!=!kEGLAu-ETW`W{Eo^2b+*Fc$Cu-I5L9l>CQV^znn* z`TSr~{#H^Pd-(A~3=-g2bQF(q`C7?TMMZddSFw2TZweMYMWp*T#(Lt`K~Lh1YN>Q} z{U0uR$*+$*L;K5>wD^zEAX`2~W95&jBy?Z&(BQFQgM|JR7FxP$iL_UMW zz(0r@HRc^%XVaKoUoRu@5|*2)BJ>9Gyfs~(mLL0VnPQ~T*DGjy0OCN~*JUXVPUKW$ z9oO_@h4IpJRxQbrBUl612JcHa9mOb6GlGjT6~P`8Nu>YGxZ01+Na$@ zDqO={-Zc!#ezg9&iKm|{uP&w;q$Z;UYrotrjBBT6yao#d+y7;D%UGU?8^Lp;XM3qt(h3FHia^0ESgF+J@gTSBHlL~Ylxb`5Z9cqy42f8pZ5)S>`{>4 zkG6wsYwcwkg!11iigQFFfw@p6OYUtV8XV3g05^SjC%rVndbGG1_ zf&Qs&9)vFy(``+V6ikoZsos@egGf`+w_CmWsS-E|1avq|-9d9r=jGb5Uc8b{~% zf0(MSVNBE~a7GCL(>hS=l3uIJJh--a?A9Yk=7Y?kGNDI_lCi3QXiS)#h9{qHUuXP! zU!&X6E0yHvmzNnV)8FO&OB4>(HAMuW_$x3{vz zTfIG~{*hqJP!*bgTZt0?D!SZlKQf18$?CJKNDL!pdMmTMrcNDyY1NcwqBGhlxM#=y zMYAlX^Yoe2pXfzGECDR5@}z140r2%ZjScgX7V9#sG)=JCTBQUDMPrg0HX1anx38T+ zNC<&ZbAr55lo)K8BzEksc5r#}`i|P4Ww_FLdMWcn3(xUqiPvy_^Gf736RtqHbQ*5DLkmyRpZ2Uo9RVdbN2*Mw%R<{Bi&MB+lRH*FJ|j|o$239<~Z8`(U- ziSig?M_|;5{!SFeb05_LpR!u+DS&s#StyRJ@$;yu@}AtT5NADK&!eR(Oxz1fpOkko z)wB`|oOb7*6sC)YYsY?wrqV4)IPT!NA@(kirlc+Cl%PU0P)B#Qr9-bKaRjal0d>!Ju2+9M?;ge zBi=(H0xCh_-?or)t4$$PV&p#;NVog*-&a{+30f=W=8+kO5~L_4M^cAWsvG=+sHqfG z32U42EhK$HGVj*l_OForTtt!y8T$PV$OQFpwVd(Hn?ASjMZ05 ziS#(#pgqQ&56h;LHBu&By-rk@sLTsQ3LG(nqh&WPBCuI%Bz~K(ftyN9HY|g-uOPK7 ztz#!>Tcz+sbgX4nmf3Zl@83h256@ zfhuzmR38qcl^f6_P4;f@vg=jro%jZAFEPK(gOql*DLwq2^VCSazZmE7`-W=))@N_= zBNAOJQ-2s?h&{~qbH2Cwkic0nU$`d_5hU~V=TH`p@a?l$6NYk5y60kh%h!f4(I|9= zV7E#Zgfik3=aMpe4AM(eUQmBL4q@1Wx0D*1OJ%r*nOAk|?j#R>>&|=knavo3JttD- zHaRZ3n4qskoTtq)e_UXS3oqKKoRgSqpQBKcO`)@>Pj%eAefB>9HQOQrnvq9e6k!L7 z7RHt!u6Ep1_AMPW2oW%#OeZ*xRz384>m4#e;M1VyG)p% z2t_pUV#jPp_nS$~4h|z{*xg4=z5P$5Bzo|6*@MK17N=TUOiG3Uh8)Z1(lduVAqVEh z>f>6(j7J%?FQdpfHRr1u_BoSuys}c`!p^I7iV0d~YDHqmxH(F(np>xXY;=qvHcZ8f zmL(LjMg`hmD|zibE{!88cC?Nn6uw$Zw3Ihfk4~{KkjU*opX6zj$2;DmmLhw6W4yRx z0ndoes?8rv-zYZjg!c{%HX2dkz%NG4>~6vf>c~-!#szV21?MHa-;3?1QcSUeTt%FM zzD<5_dF}R#;aj(JgTLi-@syjpb)d=pbVL zZKt20`hrQIMRJX#|(6bUirU8uYMcC`g( zAqRa&#A<%39AgNC{^YccW}P>qqj%PLLnTQ6gDF%sTm$q=+2Drm$l@46`2vAbg9aWE zTQn7?<{1HV$PZSu?^g?Y2Lg2>-&nbcY_1$eqXZ+^)Hp$BAguBQFR*!~P=th!87Ur) zRbLD_bm84hf=AO2uZd*4i?aP#4{l zyx4#R3Va~*Wp2xjkPe0^$T@+oU4F*C~udD;aHljjP0IWdvqTm)Wxlu;%2w;fowWpwu+KnJxY-rq|@n1nKql`5|o) z-nB}YtgA2!7(xq1s?s=-4#F)GJwRu4={Obq1y7TeaO$b>4m8k<$gW5^wno%}?6{0< zKRJ>t1xHr4vstoEyfR1z&H5#n_C&*j-} zmuTG>irME{nfGWwespi!2JUvxiK4M5j-U#oH2jaJI*q!8F9%l5Th>_Y1rOLZ6ftu# z?wa>3O$6SkdkurNYeaWoYP6n?LKvb_S9wQwfQ zfN|j%vz!=VQO@jH9DWd|f0K7M⁣?;zu=eY7TKyB5Ww!R`;{w5o{R<;4`=p+IFmu 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 b=9vUz3v8d95K3C*&l&6`W8LT4K;-`bwnI+e literal 0 HcmV?d00001 diff --git a/tests/ref/layout/grid-headers-4.png b/tests/ref/layout/grid-headers-4.png new file mode 100644 index 0000000000000000000000000000000000000000..e60877d833722452eb6a7f492d32687574b47938 GIT binary patch literal 36452 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 literal 0 HcmV?d00001 diff --git a/tests/ref/layout/grid-rowspan-basic.png b/tests/ref/layout/grid-rowspan-basic.png index 966c8fd9df19d4f2c3013f36d5892d381d97657c..783991b3ccc0761283f377a380188cb73c8d3cb0 100644 GIT binary patch delta 7798 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 F{y&g}UOoT- delta 3928 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 diff --git a/tests/typ/layout/grid-headers-1.typ b/tests/typ/layout/grid-headers-1.typ new file mode 100644 index 000000000..f1afe70e9 --- /dev/null +++ b/tests/typ/layout/grid-headers-1.typ @@ -0,0 +1,162 @@ +#set page(width: auto, height: 12em) +#table( + columns: 5, + align: center + horizon, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*Name*], table.cell(stroke: aqua)[*Number*], [*Data 1*], [*Data 2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow) + ), + ..range(0, 6).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) + +--- +// Disable repetition +#set page(width: auto, height: 12em) +#table( + columns: 5, + align: center + horizon, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*Name*], table.cell(stroke: aqua)[*Number*], [*Data 1*], [*Data 2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow), + repeat: false + ), + ..range(0, 6).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) + +--- +#set page(width: auto, height: 12em) +#table( + columns: 5, + align: center + horizon, + gutter: 3pt, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*Name*], table.cell(stroke: aqua)[*Number*], [*Data 1*], [*Data 2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow), + ), + ..range(0, 6).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +) + +--- +// Relative lengths +#set page(height: 10em) +#table( + rows: (30%, 30%, auto), + table.header( + [*A*], + [*B*] + ), + [C], + [C] +) + +--- +#grid( + grid.cell(y: 1)[a], + grid.header(grid.cell(y: 0)[b]), + grid.cell(y: 2)[c] +) + +--- +// When the header is the last grid child, it shouldn't include the gutter row +// after it, because there is none. +#grid( + columns: 2, + gutter: 3pt, + grid.header( + [a], [b], + [c], [d] + ) +) + +--- +#set page(height: 14em) +#let t(n) = table( + columns: 3, + align: center + horizon, + gutter: 3pt, + table.header( + table.cell(colspan: 3)[*Cool Zone #n*], + [*Name*], [*Num*], [*Data*] + ), + ..range(0, 5).map(i => ([\##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456])).flatten() +) +#grid( + gutter: 3pt, + t(0), + t(1) +) + +--- +// Test line positioning in header +#table( + columns: 3, + stroke: none, + table.hline(stroke: red, end: 2), + table.vline(stroke: red, end: 3), + table.header( + table.hline(stroke: aqua, start: 2), + table.vline(stroke: aqua, start: 3), [*A*], table.hline(stroke: orange), table.vline(stroke: orange), [*B*], + [*C*], [*D*] + ), + [a], [b], + [c], [d], + [e], [f] +) + +--- +// Error: 3:3-3:19 header must start at the first row +// Hint: 3:3-3:19 remove any rows before the header +#grid( + [a], + grid.header([b]) +) + +--- +// Error: 4:3-4:19 header must start at the first row +// Hint: 4:3-4:19 remove any rows before the header +#grid( + columns: 2, + [a], + grid.header([b]) +) + +--- +// Error: 3:3-3:19 cannot have more than one header +#grid( + grid.header([a]), + grid.header([b]), + [a], +) + +--- +// Error: 2:3-2:20 cannot use `table.header` as a grid header; use `grid.header` instead +#grid( + table.header([a]), + [a], +) + +--- +// Error: 2:3-2:19 cannot use `grid.header` as a table header; use `table.header` instead +#table( + grid.header([a]), + [a], +) + +--- +// Error: 14-28 cannot place a grid header within another header +#grid.header(grid.header[a]) + +--- +// Error: 14-29 cannot place a table header within another header +#grid.header(table.header[a]) + +--- +// Error: 15-29 cannot place a grid header within another header +#table.header(grid.header[a]) + +--- +// Error: 15-30 cannot place a table header within another header +#table.header(table.header[a]) diff --git a/tests/typ/layout/grid-headers-2.typ b/tests/typ/layout/grid-headers-2.typ new file mode 100644 index 000000000..75c9b330d --- /dev/null +++ b/tests/typ/layout/grid-headers-2.typ @@ -0,0 +1,52 @@ +#set page(height: 15em) +#table( + rows: (auto, 2.5em, auto), + table.header( + [*Hello*], + [*World*] + ), + block(width: 2em, height: 20em, fill: red) +) + +--- +// Rowspan sizing algorithm doesn't do the best job at non-contiguous content +// ATM. +#set page(height: 15em) + +#table( + rows: (auto, 2.5em, 2em, auto, 5em), + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(40)) +) + +--- +// Rowspan sizing algorithm doesn't do the best job at non-contiguous content +// ATM. +#set page(height: 15em) + +#table( + rows: (auto, 2.5em, 2em, auto, 5em), + gutter: 3pt, + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(40)) +) + +--- +// This should look right +#set page(height: 15em) + +#table( + rows: (auto, 2.5em, 2em, auto), + gutter: 3pt, + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(40)) +) diff --git a/tests/typ/layout/grid-headers-3.typ b/tests/typ/layout/grid-headers-3.typ new file mode 100644 index 000000000..e7437cf77 --- /dev/null +++ b/tests/typ/layout/grid-headers-3.typ @@ -0,0 +1,35 @@ +// Test lack of space for header + text. +#set page(height: 9em) + +#table( + rows: (auto, 2.5em, auto, auto, 10em), + gutter: 3pt, + table.header( + [*Hello*], + [*World*] + ), + table.cell(rowspan: 3, lorem(80)) +) + +--- +// Orphan header prevention test +#set page(height: 12em) +#v(8em) +#grid( + columns: 3, + grid.header( + [*Mui*], [*A*], grid.cell(rowspan: 2, fill: orange)[*B*], + [*Header*], [*Header* #v(0.1em)] + ), + ..([Test], [Test], [Test]) * 20 +) + +--- +// Empty header should just be a repeated blank row +#set page(height: 12em) +#table( + columns: 4, + align: center + horizon, + table.header(), + ..range(0, 4).map(i => ([John \##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789])).flatten() +) diff --git a/tests/typ/layout/grid-headers-4.typ b/tests/typ/layout/grid-headers-4.typ new file mode 100644 index 000000000..13fd41dd1 --- /dev/null +++ b/tests/typ/layout/grid-headers-4.typ @@ -0,0 +1,58 @@ +// When a header has a rowspan with an empty row, it should be displayed +// properly +#set page(height: 10em) + +#let count = counter("g") +#table( + rows: (auto, 2em, auto, auto), + table.header( + [eeec], + table.cell(rowspan: 2, count.step() + count.display()), + ), + [d], + block(width: 5em, fill: yellow, lorem(15)), + [d] +) +#count.display() + +--- +// Ensure header expands to fit cell placed in it after its declaration +#set page(height: 10em) +#table( + columns: 2, + table.header( + [a], [b], + [c], + ), + table.cell(x: 1, y: 1, rowspan: 2, lorem(80)) +) + +--- +// Nested table with header should repeat both headers +#set page(height: 10em) +#table( + table.header( + [a] + ), + table( + table.header( + [b] + ), + [a\ b\ c\ d] + ) +) + +--- +#set page(height: 12em) +#table( + table.header( + table( + table.header( + [b] + ), + [c], + [d] + ) + ), + [a\ b] +) diff --git a/tests/typ/layout/grid-rowspan-basic.typ b/tests/typ/layout/grid-rowspan-basic.typ index 49164fa69..1cc7289b4 100644 --- a/tests/typ/layout/grid-rowspan-basic.typ +++ b/tests/typ/layout/grid-rowspan-basic.typ @@ -209,3 +209,24 @@ grid.cell(y: 6, breakable: false)[m], grid.cell(y: 6, breakable: true)[n], grid.cell(y: 7, breakable: false)[o], grid.cell(y: 7, breakable: true)[p], grid.cell(y: 7, breakable: auto)[q] ) + +--- +#table( + columns: 2, + table.cell(stroke: (bottom: red))[a], [b], + table.hline(stroke: green), + table.cell(stroke: (top: yellow, left: green, right: aqua, bottom: blue), colspan: 1, rowspan: 2)[d], table.cell(colspan: 1, rowspan: 2)[e], + [f], + [g] +) + +--- +#table( + columns: 2, + gutter: 3pt, + table.cell(stroke: (bottom: red))[a], [b], + table.hline(stroke: green), + table.cell(stroke: (top: yellow, left: green, right: aqua, bottom: blue), colspan: 1, rowspan: 2)[d], table.cell(colspan: 1, rowspan: 2)[e], + [f], + [g] +) diff --git a/tests/typ/layout/grid-rtl.typ b/tests/typ/layout/grid-rtl.typ index be9fac516..cea67d96f 100644 --- a/tests/typ/layout/grid-rtl.typ +++ b/tests/typ/layout/grid-rtl.typ @@ -178,3 +178,18 @@ [e], [f] ) + +--- +// Headers +#set page(height: 15em) +#set text(dir: rtl) +#table( + columns: 5, + align: center + horizon, + table.header( + table.cell(colspan: 5)[*Cool Zone*], + table.cell(stroke: red)[*N1*], table.cell(stroke: aqua)[*N2*], [*D1*], [*D2*], [*Etc*], + table.hline(start: 2, end: 3, stroke: yellow) + ), + ..range(0, 10).map(i => ([\##i], table.cell(stroke: green)[123], table.cell(stroke: blue)[456], [789], [?], table.hline(start: 4, end: 5, stroke: red))).flatten() +)