From 31f904a2c406953cbce334e02b37a712b9b9d016 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 21 Dec 2022 16:19:46 +0100 Subject: [PATCH] Split up and document shapes --- library/src/basics/table.rs | 48 +- library/src/layout/container.rs | 4 + library/src/layout/grid.rs | 25 +- library/src/layout/hide.rs | 6 +- library/src/layout/page.rs | 9 +- library/src/layout/stack.rs | 1 - library/src/layout/transform.rs | 18 +- library/src/text/mod.rs | 4 + library/src/text/raw.rs | 2 +- library/src/visualize/shape.rs | 777 ++++++++++++++++++++------ src/model/cast.rs | 16 +- src/model/styles.rs | 74 ++- tests/ref/compiler/show-selector.png | Bin 12923 -> 20689 bytes tests/ref/visualize/shape-aspect.png | Bin 4501 -> 4751 bytes tests/ref/visualize/shape-circle.png | Bin 39277 -> 39582 bytes tests/ref/visualize/shape-rect.png | Bin 16269 -> 9426 bytes tests/ref/visualize/shape-square.png | Bin 18290 -> 18061 bytes tests/typ/basics/desc.typ | 2 +- tests/typ/compiler/methods-color.typ | 4 +- tests/typ/compiler/show-selector.typ | 5 +- tests/typ/layout/grid-1.typ | 2 +- tests/typ/layout/grid-3.typ | 4 +- tests/typ/layout/pad.typ | 1 + tests/typ/layout/par-knuth.typ | 2 +- tests/typ/layout/stack-2.typ | 3 +- tests/typ/math/syntax.typ | 2 +- tests/typ/text/edge.typ | 2 +- tests/typ/text/microtype.typ | 2 +- tests/typ/text/shift.typ | 4 +- tests/typ/visualize/shape-aspect.typ | 10 +- tests/typ/visualize/shape-circle.typ | 6 +- tests/typ/visualize/shape-ellipse.typ | 5 +- tests/typ/visualize/shape-rect.typ | 16 +- tests/typ/visualize/shape-square.typ | 2 +- 34 files changed, 748 insertions(+), 308 deletions(-) diff --git a/library/src/basics/table.rs b/library/src/basics/table.rs index 3c618b3f5..411a31fc9 100644 --- a/library/src/basics/table.rs +++ b/library/src/basics/table.rs @@ -6,25 +6,25 @@ use crate::prelude::*; /// /// Tables are used to arrange content in cells. Cells can contain arbitray /// content, including multiple paragraphs and are specified in row-major order. -/// Because tables are [grids](@grid) with configurable cell strokes and -/// padding, refer to the [grid](@grid) docs for more information on how to size -/// the table tracks. +/// Because tables are just grids with configurable cell properties, refer to +/// the [grid documentation](@grid) for more information on how to size the +/// table tracks. /// /// ## Example /// ``` /// #table( /// columns: (1fr, auto, auto), -/// padding: 10pt, +/// inset: 10pt, /// align: horizon, /// [], [*Area*], [*Parameters*], -/// image("cylinder.svg", fit: "contain"), +/// image("cylinder.svg"), /// $ pi h (D^2 - d^2) / 4 $, /// [ /// $h$: height \ /// $D$: outer radius \ /// $d$: inner radius /// ], -/// image("tetrahedron.svg", fit: "contain"), +/// image("tetrahedron.svg"), /// $ sqrt(2) / 12 a^3 $, /// [$a$: edge length] /// ) @@ -36,33 +36,23 @@ use crate::prelude::*; /// /// - rows: TrackSizings (named) /// Defines the row sizes. -/// -/// See [the respective `grid` argument](@grid/rows) for more information -/// on sizing tracks. +/// See the [grid documentation](@grid) for more information on track sizing. /// /// - columns: TrackSizings (named) /// Defines the column sizes. -/// -/// See [the respective `grid` argument](@grid/columns) for more information -/// on sizing tracks. +/// See the [grid documentation](@grid) for more information on track sizing. /// /// - gutter: TrackSizings (named) /// Defines the gaps between rows & columns. -/// -/// See [the respective `grid` argument](@grid/gutter) for more information -/// on gutter. +/// See the [grid documentation](@grid) for more information on gutters. /// /// - column-gutter: TrackSizings (named) /// Defines the gaps between columns. Takes precedence over `gutter`. -/// -/// See [the respective `grid` argument](@grid/column-gutter) for more information -/// on gutter. +/// See the [grid documentation](@grid) for more information on gutters. /// /// - row-gutter: TrackSizings (named) /// Defines the gaps between rows. Takes precedence over `gutter`. -/// -/// See [the respective `grid` argument](@grid/row-gutter) for more information -/// on gutter. +/// See the [grid documentation](@grid) for more information on gutters. /// /// ## Category /// basics @@ -82,14 +72,14 @@ pub struct TableNode { impl TableNode { /// How to fill the cells. /// - /// This can either be a color or a function that returns a color. The - /// function is passed the cell's column and row index, starting at zero. - /// This can be used to implement striped tables. + /// This can be a color or a function that returns a color. The function is + /// passed the cell's column and row index, starting at zero. This can be + /// used to implement striped tables. /// /// # Example /// ``` /// #table( - /// fill: (col, _) => if odd(col) { luma(240) } else { luma(255) }, + /// fill: (col, _) => if odd(col) { luma(240) } else { white }, /// align: (col, row) => /// if row == 0 { center } /// else if col == 0 { left } @@ -120,7 +110,9 @@ impl TableNode { pub const STROKE: Option = Some(PartialStroke::default()); /// How much to pad the cells's content. - pub const PADDING: Rel = Abs::pt(5.0).into(); + /// + /// The default value is `{5pt}`. + pub const INSET: Rel = Abs::pt(5.0).into(); fn construct(_: &Vm, args: &mut Args) -> SourceResult { let TrackSizings(columns) = args.named("columns")?.unwrap_or_default(); @@ -162,7 +154,7 @@ impl Layout for TableNode { ) -> SourceResult { let fill = styles.get(Self::FILL); let stroke = styles.get(Self::STROKE).map(PartialStroke::unwrap_or_default); - let padding = styles.get(Self::PADDING); + let inset = styles.get(Self::INSET); let align = styles.get(Self::ALIGN); let cols = self.tracks.x.len().max(1); @@ -172,7 +164,7 @@ impl Layout for TableNode { .cloned() .enumerate() .map(|(i, child)| { - let mut child = child.padded(Sides::splat(padding)); + let mut child = child.padded(Sides::splat(inset)); let x = i % cols; let y = i / cols; diff --git a/library/src/layout/container.rs b/library/src/layout/container.rs index 5bff050bd..8a772f2d5 100644 --- a/library/src/layout/container.rs +++ b/library/src/layout/container.rs @@ -134,10 +134,14 @@ impl Inline for BoxNode {} /// The spacing between this block and its predecessor. Takes precedence over /// `spacing`. /// +/// The default value is `{1.2em}`. +/// /// - below: Spacing (named, settable) /// The spacing between this block and its successor. Takes precedence /// over `spacing`. /// +/// The default value is `{1.2em}`. +/// /// ## Category /// layout #[func] diff --git a/library/src/layout/grid.rs b/library/src/layout/grid.rs index 00233cd15..a3ee5df7e 100644 --- a/library/src/layout/grid.rs +++ b/library/src/layout/grid.rs @@ -7,28 +7,31 @@ use super::Spacing; /// /// The grid element allows you to arrange content in a grid. You can define the /// number of rows and columns, as well as the size of the gutters between them. -/// There are multiple sizing modes for columns and rows, including fixed sizes, -/// that can be used to create complex layouts. +/// There are multiple sizing modes for columns and rows that can be used to +/// create complex layouts. /// /// The sizing of the grid is determined by the track sizes specified in the /// arguments. Because each of the sizing parameters accepts the same values, we -/// will explain them here. Each sizing argument accepts an array of track -/// sizes. A track size is either: +/// will explain them just once, here. Each sizing argument accepts an array of +/// individual track sizes. A track size is either: /// -/// - a fixed length (e.g. `{10pt}`). The track will be exactly this size. -/// - `{auto}`. The track will be sized to fit its contents. It will be at most +/// - `{auto}`: The track will be sized to fit its contents. It will be at most /// as large as the remaining space. If there is more than one `{auto}` track -/// which, together, claim more than the available space, the tracks will be -/// resized to fit the available space. -/// - a fractional length (e.g. `{1fr}`). Once all other tracks have been sized, +/// which, and together they claim more than the available space, the `{auto}` +/// tracks will fairly distribute the available space among themselves. +/// +/// - A fixed or relative length (e.g. `{10pt}` or `{20% - 1cm}`): The track +/// will be exactly of this size. +/// +/// - A fractional length (e.g. `{1fr}`): Once all other tracks have been sized, /// the remaining space will be divided among the fractional tracks according -/// to their fraction. For example, if there are two fractional tracks, each +/// to their fractions. For example, if there are two fractional tracks, each /// with a fraction of `{1fr}`, they will each take up half of the remaining /// space. /// /// To specify a single track, the array can be omitted in favor of a single /// value. To specify multiple `{auto}` tracks, enter the number of tracks -/// instead of a value. For example, `columns:` `{3}` is equivalent to +/// instead of an array. For example, `columns:` `{3}` is equivalent to /// `columns:` `{(auto, auto, auto)}`. /// /// ## Example diff --git a/library/src/layout/hide.rs b/library/src/layout/hide.rs index a63a4974a..01ae48c5b 100644 --- a/library/src/layout/hide.rs +++ b/library/src/layout/hide.rs @@ -4,9 +4,9 @@ use crate::prelude::*; /// Hide content without affecting layout. /// /// The `hide` function allows you to hide content while the layout still 'sees' -/// it. This is useful to create to create whitespace that is exactly as large -/// as some content. It may also be useful to redact content because its -/// arguments are not included in the output. +/// it. This is useful to create whitespace that is exactly as large as some +/// content. It may also be useful to redact content because its arguments are +/// not included in the output. /// /// ## Example /// ``` diff --git a/library/src/layout/page.rs b/library/src/layout/page.rs index 43a7768e8..c1ac6118f 100644 --- a/library/src/layout/page.rs +++ b/library/src/layout/page.rs @@ -42,7 +42,7 @@ pub struct PageNode(pub Content); #[node] impl PageNode { - /// The unflipped width of the page. + /// The width of the page. /// /// # Example /// ``` @@ -58,7 +58,7 @@ impl PageNode { #[property(resolve)] pub const WIDTH: Smart = Smart::Custom(Paper::A4.width().into()); - /// The unflipped height of the page. + /// The height of the page. /// /// If this is set to `{auto}`, page breaks can only be triggered manually /// by inserting a [page break](@pagebreak). Most examples throughout this @@ -92,7 +92,6 @@ impl PageNode { /// /// - A single length: The same margin on all sides. /// - `{auto}`: The margin is set to the default value for the page's size. - /// - `{none}`: The page will be stripped of its margins. /// - A dictionary: With a dictionary, the margins can be set individually. /// The dictionary can contain the following keys in order of precedence: /// - `top`: The top margin. @@ -101,7 +100,7 @@ impl PageNode { /// - `left`: The left margin. /// - `x`: The horizontal margins. /// - `y`: The vertical margins. - /// - `rest`: The margins on all sides except the sides for which the + /// - `rest`: The margins on all sides except those for which the /// dictionary explicitly sets a size. /// /// # Example @@ -197,7 +196,7 @@ impl PageNode { /// text(8pt, numbering("I", i)) /// ) /// ) - /// + /// /// #lorem(18) /// ``` #[property(referenced)] diff --git a/library/src/layout/stack.rs b/library/src/layout/stack.rs index 39e040b3f..3287df3a3 100644 --- a/library/src/layout/stack.rs +++ b/library/src/layout/stack.rs @@ -13,7 +13,6 @@ use crate::prelude::*; /// ``` /// #stack( /// dir: ttb, -/// /// rect(width: 40pt), /// rect(width: 120pt), /// rect(width: 90pt), diff --git a/library/src/layout/transform.rs b/library/src/layout/transform.rs index 451656ae6..c843ad4ef 100644 --- a/library/src/layout/transform.rs +++ b/library/src/layout/transform.rs @@ -11,17 +11,15 @@ use crate::prelude::*; /// /// ## Example /// ``` -/// #rect( -/// move( -/// dx: 6pt, dy: 6pt, -/// rect( -/// inset: 8pt, -/// fill: white, -/// stroke: black, -/// [Abra cadabra] -/// ) +/// #rect(inset: 0pt, move( +/// dx: 6pt, dy: 6pt, +/// rect( +/// inset: 8pt, +/// fill: white, +/// stroke: black, +/// [Abra cadabra] /// ) -/// ) +/// )) /// ``` /// /// ## Parameters diff --git a/library/src/text/mod.rs b/library/src/text/mod.rs index 4a25197db..3424cce6e 100644 --- a/library/src/text/mod.rs +++ b/library/src/text/mod.rs @@ -242,7 +242,9 @@ impl TextNode { /// /// # Example /// ``` + /// #set rect(inset: 0pt) /// #set text(size: 20pt) + /// /// #set text(top-edge: "ascender") /// #rect(fill: aqua)[Typst] /// @@ -256,7 +258,9 @@ impl TextNode { /// /// # Example /// ``` + /// #set rect(inset: 0pt) /// #set text(size: 20pt) + /// /// #set text(bottom-edge: "baseline") /// #rect(fill: aqua)[Typst] /// diff --git a/library/src/text/raw.rs b/library/src/text/raw.rs index 3cf7e8e7e..c6026f898 100644 --- a/library/src/text/raw.rs +++ b/library/src/text/raw.rs @@ -65,7 +65,7 @@ use crate::prelude::*; /// // that retains the correct baseline. /// #show raw.where(block: false): rect.with( /// fill: luma(240), -/// inset: (x: 3pt), +/// inset: (x: 3pt, y: 0pt), /// outset: (y: 3pt), /// radius: 2pt, /// ) diff --git a/library/src/visualize/shape.rs b/library/src/visualize/shape.rs index d1ced9cdf..9bf2bbab5 100644 --- a/library/src/visualize/shape.rs +++ b/library/src/visualize/shape.rs @@ -3,98 +3,167 @@ use std::f64::consts::SQRT_2; use crate::prelude::*; /// # Rectangle -/// A sizable and fillable shape with optional content. +/// A rectangle with optional content. +/// +/// ## Example +/// ``` +/// // Without content. +/// #rect(width: 35%, height: 30pt) +/// +/// // With content. +/// #rect[ +/// Automatically sized \ +/// to fit the content. +/// ] +/// ``` /// /// ## Parameters /// - body: Content (positional) -/// The content to place into the shape. +/// The content to place into the rectangle. +/// +/// When this is omitted, the rectangle takes on a default size of at most +/// `{45pt}` by `{30pt}`. /// /// - width: Rel (named) -/// The shape's width. +/// The rectangle's width, relative to its parent container. /// /// - height: Rel (named) -/// The shape's height. -/// -/// - size: Length (named) -/// The square's side length. -/// -/// - radius: Length (named) -/// The circle's radius. -/// -/// - stroke: Smart>> (named) -/// How to stroke the shape. +/// The rectangle's height, relative to its parent container. /// /// ## Category /// visualize #[func] #[capable(Layout, Inline)] #[derive(Debug, Hash)] -pub struct ShapeNode(pub Option); - -/// A square with optional content. -pub type SquareNode = ShapeNode; - -/// A rectangle with optional content. -pub type RectNode = ShapeNode; - -/// A circle with optional content. -pub type CircleNode = ShapeNode; - -/// A ellipse with optional content. -pub type EllipseNode = ShapeNode; +pub struct RectNode(pub Option); #[node] -impl ShapeNode { - /// How to fill the shape. +impl RectNode { + /// How to fill the rectangle. + /// + /// When setting a fill, the default stroke disappears. To create a + /// rectangle with both fill and stroke, you have to configure both. + /// + /// # Example + /// ``` + /// #rect(fill: blue) + /// ``` pub const FILL: Option = None; - /// How to stroke the shape. - #[property(skip, resolve, fold)] - pub const STROKE: Smart>> = Smart::Auto; - /// How much to pad the shape's content. + /// How to stroke the rectangle. This can be: + /// + /// - `{none}` to disable the stroke. + /// - `{auto}` for a stroke of `{1pt}` black if and if only if no fill is + /// given. + /// - A length specifying the stroke's thickness. The color is inherited, + /// defaulting to black. + /// - A color to use for the stroke. The thickness is inherited, defaulting + /// to `{1pt}`. + /// - A stroke combined from color and thickness using the `+` operator as + /// in `{2pt + red}`. + /// - A dictionary: With a dictionary, the stroke for each side can be set + /// individually. The dictionary can contain the following keys in order + /// of precedence: + /// - `top`: The top stroke. + /// - `right`: The right stroke. + /// - `bottom`: The bottom stroke. + /// - `left`: The left stroke. + /// - `x`: The horizontal stroke. + /// - `y`: The vertical stroke. + /// - `rest`: The stroke on all sides except those for which the + /// dictionary explicitly sets a size. + /// + /// # Example + /// ``` + /// #stack( + /// dir: ltr, + /// spacing: 1fr, + /// rect(stroke: red), + /// rect(stroke: 2pt), + /// rect(stroke: 2pt + red), + /// ) + /// ``` #[property(resolve, fold)] - pub const INSET: Sides>> = Sides::splat(Rel::zero()); - /// How much to extend the shape's dimensions beyond the allocated space. + pub const STROKE: Smart>>> = Smart::Auto; + + /// How much to round the rectangle's corners, relative to the minimum of + /// the width and height divided by two. This can be: + /// + /// - A relative length for a uniform corner radius. + /// - A dictionary: With a dictionary, the stroke for each side can be set + /// individually. The dictionary can contain the following keys in order + /// of precedence: + /// - `top-left`: The top-left corner radius. + /// - `top-right`: The top-right corner radius. + /// - `bottom-right`: The bottom-right corner radius. + /// - `bottom-left`: The bottom-left corner radius. + /// - `left`: The top-left and bottom-left corner radii. + /// - `top`: The top-left and top-right corner radii. + /// - `right`: The top-right and bottom-right corner radii. + /// - `bottom`: The bottom-left and bottom-right corner radii. + /// - `rest`: The radii for all corners except those for which the + /// dictionary explicitly sets a size. + /// + /// # Example + /// ``` + /// #set rect(stroke: 4pt) + /// #rect( + /// radius: ( + /// left: 5pt, + /// top-right: 20pt, + /// bottom-right: 10pt, + /// ), + /// stroke: ( + /// left: red, + /// top: yellow, + /// right: green, + /// bottom: blue, + /// ), + /// ) + /// ``` + #[property(resolve, fold)] + pub const RADIUS: Corners>> = Corners::splat(Rel::zero()); + + /// How much to pad the rectangle's content. + /// + /// The default value is `{5pt}`. + /// + /// _Note:_ When the rectangle contains text, its exact size depends on the + /// current [text edges](@text/top-edge). + /// + /// # Example + /// ``` + /// A #rect(inset: 0pt)[tight] fit. + /// ``` + #[property(resolve, fold)] + pub const INSET: Sides>> = Sides::splat(Abs::pt(5.0).into()); + + /// How much to expand the rectangle's size without affecting the layout. + /// + /// This is, for instance, useful to prevent an inline rectangle from + /// affecting line layout. For a generalized version of the example below, + /// see the documentation for the [raw text's block parameter](@raw/block). + /// + /// # Example + /// ``` + /// This + /// #rect( + /// fill: luma(235), + /// inset: (x: 3pt, y: 0pt), + /// outset: (y: 3pt), + /// radius: 2pt, + /// )[rectangle] + /// is inline. + /// ``` #[property(resolve, fold)] pub const OUTSET: Sides>> = Sides::splat(Rel::zero()); - /// How much to round the shape's corners. - #[property(skip, resolve, fold)] - pub const RADIUS: Corners>> = Corners::splat(Rel::zero()); - fn construct(_: &Vm, args: &mut Args) -> SourceResult { - let size = match S { - SQUARE => args.named::("size")?.map(Rel::from), - CIRCLE => args.named::("radius")?.map(|r| 2.0 * Rel::from(r)), - _ => None, - }; - - let width = match size { - None => args.named("width")?, - size => size, - }; - - let height = match size { - None => args.named("height")?, - size => size, - }; - + let width = args.named("width")?; + let height = args.named("height")?; Ok(Self(args.eat()?).pack().boxed(Axes::new(width, height))) } - fn set(...) { - if is_round(S) { - styles.set_opt( - Self::STROKE, - args.named::>>("stroke")? - .map(|some| some.map(Sides::splat)), - ); - } else { - styles.set_opt(Self::STROKE, args.named("stroke")?); - styles.set_opt(Self::RADIUS, args.named("radius")?); - } - } - fn field(&self, name: &str) -> Option { match name { "body" => match &self.0 { @@ -106,124 +175,484 @@ impl ShapeNode { } } -impl Layout for ShapeNode { +impl Layout for RectNode { fn layout( &self, vt: &mut Vt, styles: StyleChain, regions: Regions, ) -> SourceResult { - let mut frame; - if let Some(child) = &self.0 { - let mut inset = styles.get(Self::INSET); - if is_round(S) { - inset = inset.map(|side| side + Ratio::new(0.5 - SQRT_2 / 4.0)); - } - - // Pad the child. - let child = child.clone().padded(inset.map(|side| side.map(Length::from))); - - let mut pod = Regions::one(regions.first, regions.base, regions.expand); - frame = child.layout(vt, styles, pod)?.into_frame(); - - // Relayout with full expansion into square region to make sure - // the result is really a square or circle. - if is_quadratic(S) { - let length = if regions.expand.x || regions.expand.y { - let target = regions.expand.select(regions.first, Size::zero()); - target.x.max(target.y) - } else { - let size = frame.size(); - let desired = size.x.max(size.y); - desired.min(regions.first.x).min(regions.first.y) - }; - - pod.first = Size::splat(length); - pod.expand = Axes::splat(true); - frame = child.layout(vt, styles, pod)?.into_frame(); - } - } else { - // The default size that a shape takes on if it has no child and - // enough space. - let mut size = Size::new(Abs::pt(45.0), Abs::pt(30.0)).min(regions.first); - - if is_quadratic(S) { - let length = if regions.expand.x || regions.expand.y { - let target = regions.expand.select(regions.first, Size::zero()); - target.x.max(target.y) - } else { - size.x.min(size.y) - }; - size = Size::splat(length); - } else { - size = regions.expand.select(regions.first, size); - } - - frame = Frame::new(size); - } - - // Add fill and/or stroke. - let fill = styles.get(Self::FILL); - let stroke = match styles.get(Self::STROKE) { - Smart::Auto if fill.is_none() => Sides::splat(Some(Stroke::default())), - Smart::Auto => Sides::splat(None), - Smart::Custom(strokes) => { - strokes.map(|s| s.map(PartialStroke::unwrap_or_default)) - } - }; - - let outset = styles.get(Self::OUTSET).relative_to(frame.size()); - let size = frame.size() + outset.sum_by_axis(); - - let radius = styles - .get(Self::RADIUS) - .map(|side| side.relative_to(size.x.min(size.y) / 2.0)); - - let pos = Point::new(-outset.left, -outset.top); - - if fill.is_some() || stroke.iter().any(Option::is_some) { - if is_round(S) { - let shape = ellipse(size, fill, stroke.left); - frame.prepend(pos, Element::Shape(shape)); - } else { - frame.prepend_multiple( - rounded_rect(size, radius, fill, stroke) - .into_iter() - .map(|x| (pos, Element::Shape(x))), - ) - } - } - - // Apply metadata. - frame.meta(styles); - - Ok(Fragment::frame(frame)) + layout( + vt, + ShapeKind::Rect, + &self.0, + styles.get(Self::FILL), + styles.get(Self::STROKE), + styles.get(Self::INSET), + styles.get(Self::OUTSET), + styles.get(Self::RADIUS), + styles, + regions, + ) } } -impl Inline for ShapeNode {} +impl Inline for RectNode {} + +/// # Square +/// A square with optional content. +/// +/// ## Example +/// ``` +/// // Without content. +/// #square(size: 30pt) +/// +/// // With content. +/// #square[ +/// Automatically \ +/// sized to fit. +/// ] +/// ``` +/// +/// ## Parameters +/// - body: Content (positional) +/// The content to place into the square. The square expands to fit this +/// content, keeping the 1-1 aspect ratio. +/// +/// When this is omitted, the square takes on a default size of at most +/// `{30pt}`. +/// +/// - size: Length (named) +/// The square's side length. This is mutually exclusive with `width` and +/// `height`. +/// +/// - width: Rel (named) +/// The square's width. This is mutually exclusive with `size` and `height`. +/// +/// In contrast to `size`, this can be relative to the parent container's +/// width. +/// +/// - height: Rel (named) +/// The square's height. This is mutually exclusive with `size` and `width`. +/// +/// In contrast to `size`, this can be relative to the parent container's +/// height. +/// +/// ## Category +/// visualize +#[func] +#[capable(Layout, Inline)] +#[derive(Debug, Hash)] +pub struct SquareNode(pub Option); + +#[node] +impl SquareNode { + /// How to fill the square. See the [rectangle's documentation](@rect/fill) + /// for more details. + pub const FILL: Option = None; + + /// How to stroke the square. See the [rectangle's + /// documentation](@rect/stroke) for more details. + #[property(resolve, fold)] + pub const STROKE: Smart>>> = Smart::Auto; + + /// How much to round the square's corners. See the [rectangle's + /// documentation](@rect/radius) for more details. + #[property(resolve, fold)] + pub const RADIUS: Corners>> = Corners::splat(Rel::zero()); + + /// How much to pad the square's content. See the [rectangle's + /// documentation](@rect/inset) for more details. + /// + /// The default value is `{5pt}`. + #[property(resolve, fold)] + pub const INSET: Sides>> = Sides::splat(Abs::pt(5.0).into()); + + /// How much to expand the square's size without affecting the layout. See + /// the [rectangle's documentation](@rect/outset) for more details. + #[property(resolve, fold)] + pub const OUTSET: Sides>> = Sides::splat(Rel::zero()); + + fn construct(_: &Vm, args: &mut Args) -> SourceResult { + let size = args.named::("size")?.map(Rel::from); + let width = match size { + None => args.named("width")?, + size => size, + }; + + let height = match size { + None => args.named("height")?, + size => size, + }; + Ok(Self(args.eat()?).pack().boxed(Axes::new(width, height))) + } + + fn field(&self, name: &str) -> Option { + match name { + "body" => match &self.0 { + Some(body) => Some(Value::Content(body.clone())), + None => Some(Value::None), + }, + _ => None, + } + } +} + +impl Layout for SquareNode { + fn layout( + &self, + vt: &mut Vt, + styles: StyleChain, + regions: Regions, + ) -> SourceResult { + layout( + vt, + ShapeKind::Square, + &self.0, + styles.get(Self::FILL), + styles.get(Self::STROKE), + styles.get(Self::INSET), + styles.get(Self::OUTSET), + styles.get(Self::RADIUS), + styles, + regions, + ) + } +} + +impl Inline for SquareNode {} + +/// # Ellipse +/// An ellipse with optional content. +/// +/// ## Example +/// ``` +/// // Without content. +/// #ellipse(width: 35%, height: 30pt) +/// +/// // With content. +/// #ellipse[ +/// #set align(center) +/// Automatically sized \ +/// to fit the content. +/// ] +/// ``` +/// +/// ## Parameters +/// - body: Content (positional) +/// The content to place into the ellipse. +/// +/// When this is omitted, the ellipse takes on a default size of at most +/// `{45pt}` by `{30pt}`. +/// +/// - width: Rel (named) +/// The ellipse's width, relative to its parent container. +/// +/// - height: Rel (named) +/// The ellipse's height, relative to its parent container. +/// +/// ## Category +/// visualize +#[func] +#[capable(Layout, Inline)] +#[derive(Debug, Hash)] +pub struct EllipseNode(pub Option); + +#[node] +impl EllipseNode { + /// How to fill the ellipse. See the [rectangle's documentation](@rect/fill) + /// for more details. + pub const FILL: Option = None; + + /// How to stroke the ellipse. See the [rectangle's + /// documentation](@rect/stroke) for more details. + #[property(resolve, fold)] + pub const STROKE: Smart> = Smart::Auto; + + /// How much to pad the ellipse's content. See the [rectangle's + /// documentation](@rect/inset) for more details. + /// + /// The default value is `{5pt}`. + #[property(resolve, fold)] + pub const INSET: Sides>> = Sides::splat(Abs::pt(5.0).into()); + + /// How much to expand the ellipse's size without affecting the layout. See + /// the [rectangle's documentation](@rect/outset) for more details. + #[property(resolve, fold)] + pub const OUTSET: Sides>> = Sides::splat(Rel::zero()); + + fn construct(_: &Vm, args: &mut Args) -> SourceResult { + let width = args.named("width")?; + let height = args.named("height")?; + Ok(Self(args.eat()?).pack().boxed(Axes::new(width, height))) + } + + fn field(&self, name: &str) -> Option { + match name { + "body" => match &self.0 { + Some(body) => Some(Value::Content(body.clone())), + None => Some(Value::None), + }, + _ => None, + } + } +} + +impl Layout for EllipseNode { + fn layout( + &self, + vt: &mut Vt, + styles: StyleChain, + regions: Regions, + ) -> SourceResult { + layout( + vt, + ShapeKind::Ellipse, + &self.0, + styles.get(Self::FILL), + styles.get(Self::STROKE).map(Sides::splat), + styles.get(Self::INSET), + styles.get(Self::OUTSET), + Corners::splat(Rel::zero()), + styles, + regions, + ) + } +} + +impl Inline for EllipseNode {} + +/// # Circle +/// A circle with optional content. +/// +/// ## Example +/// ``` +/// // Without content. +/// #circle(radius: 15pt) +/// +/// // With content. +/// #circle[ +/// #set align(center + horizon) +/// Automatically \ +/// sized to fit. +/// ] +/// ``` +/// +/// ## Parameters +/// - body: Content (positional) +/// The content to place into the circle. The circle expands to fit this +/// content, keeping the 1-1 aspect ratio. +/// +/// - radius: Length (named) +/// The circle's radius. This is mutually exclusive with `width` and +/// `height`. +/// +/// - width: Rel (named) +/// The circle's width. This is mutually exclusive with `radius` and `height`. +/// +/// In contrast to `size`, this can be relative to the parent container's +/// width. +/// +/// - height: Rel (named) +/// The circle's height.This is mutually exclusive with `radius` and `width`. +/// +/// In contrast to `size`, this can be relative to the parent container's +/// height. +/// +/// ## Category +/// visualize +#[func] +#[capable(Layout, Inline)] +#[derive(Debug, Hash)] +pub struct CircleNode(pub Option); + +#[node] +impl CircleNode { + /// How to fill the circle. See the [rectangle's documentation](@rect/fill) + /// for more details. + pub const FILL: Option = None; + + /// How to stroke the circle. See the [rectangle's + /// documentation](@rect/stroke) for more details. + #[property(resolve, fold)] + pub const STROKE: Smart> = Smart::Auto; + + /// How much to pad the circle's content. See the [rectangle's + /// documentation](@rect/inset) for more details. + /// + /// The default value is `{5pt}`. + #[property(resolve, fold)] + pub const INSET: Sides>> = Sides::splat(Abs::pt(5.0).into()); + + /// How much to expand the circle's size without affecting the layout. See + /// the [rectangle's documentation](@rect/outset) for more details. + #[property(resolve, fold)] + pub const OUTSET: Sides>> = Sides::splat(Rel::zero()); + + fn construct(_: &Vm, args: &mut Args) -> SourceResult { + let size = args.named::("radius")?.map(|r| 2.0 * Rel::from(r)); + let width = match size { + None => args.named("width")?, + size => size, + }; + + let height = match size { + None => args.named("height")?, + size => size, + }; + Ok(Self(args.eat()?).pack().boxed(Axes::new(width, height))) + } + + fn field(&self, name: &str) -> Option { + match name { + "body" => match &self.0 { + Some(body) => Some(Value::Content(body.clone())), + None => Some(Value::None), + }, + _ => None, + } + } +} + +impl Layout for CircleNode { + fn layout( + &self, + vt: &mut Vt, + styles: StyleChain, + regions: Regions, + ) -> SourceResult { + layout( + vt, + ShapeKind::Circle, + &self.0, + styles.get(Self::FILL), + styles.get(Self::STROKE).map(Sides::splat), + styles.get(Self::INSET), + styles.get(Self::OUTSET), + Corners::splat(Rel::zero()), + styles, + regions, + ) + } +} + +impl Inline for CircleNode {} + +/// Layout a shape. +fn layout( + vt: &mut Vt, + kind: ShapeKind, + body: &Option, + fill: Option, + stroke: Smart>>>, + mut inset: Sides>, + outset: Sides>, + radius: Corners>, + styles: StyleChain, + regions: Regions, +) -> SourceResult { + let mut frame; + if let Some(child) = body { + if kind.is_round() { + inset = inset.map(|side| side + Ratio::new(0.5 - SQRT_2 / 4.0)); + } + + // Pad the child. + let child = child.clone().padded(inset.map(|side| side.map(Length::from))); + + let mut pod = Regions::one(regions.first, regions.base, regions.expand); + frame = child.layout(vt, styles, pod)?.into_frame(); + + // Relayout with full expansion into square region to make sure + // the result is really a square or circle. + if kind.is_quadratic() { + let length = if regions.expand.x || regions.expand.y { + let target = regions.expand.select(regions.first, Size::zero()); + target.x.max(target.y) + } else { + let size = frame.size(); + let desired = size.x.max(size.y); + desired.min(regions.first.x).min(regions.first.y) + }; + + pod.first = Size::splat(length); + pod.expand = Axes::splat(true); + frame = child.layout(vt, styles, pod)?.into_frame(); + } + } else { + // The default size that a shape takes on if it has no child and + // enough space. + let mut size = Size::new(Abs::pt(45.0), Abs::pt(30.0)).min(regions.first); + + if kind.is_quadratic() { + let length = if regions.expand.x || regions.expand.y { + let target = regions.expand.select(regions.first, Size::zero()); + target.x.max(target.y) + } else { + size.x.min(size.y) + }; + size = Size::splat(length); + } else { + size = regions.expand.select(regions.first, size); + } + + frame = Frame::new(size); + } + + // Add fill and/or stroke. + let stroke = match stroke { + Smart::Auto if fill.is_none() => Sides::splat(Some(Stroke::default())), + Smart::Auto => Sides::splat(None), + Smart::Custom(strokes) => { + strokes.map(|s| s.map(PartialStroke::unwrap_or_default)) + } + }; + + let outset = outset.relative_to(frame.size()); + let size = frame.size() + outset.sum_by_axis(); + let radius = radius.map(|side| side.relative_to(size.x.min(size.y) / 2.0)); + let pos = Point::new(-outset.left, -outset.top); + + if fill.is_some() || stroke.iter().any(Option::is_some) { + if kind.is_round() { + let shape = ellipse(size, fill, stroke.left); + frame.prepend(pos, Element::Shape(shape)); + } else { + frame.prepend_multiple( + rounded_rect(size, radius, fill, stroke) + .into_iter() + .map(|x| (pos, Element::Shape(x))), + ) + } + } + + // Apply metadata. + frame.meta(styles); + + Ok(Fragment::frame(frame)) +} /// A category of shape. -pub type ShapeKind = usize; - -/// A rectangle with equal side lengths. -const SQUARE: ShapeKind = 0; - -/// A quadrilateral with four right angles. -const RECT: ShapeKind = 1; - -/// An ellipse with coinciding foci. -const CIRCLE: ShapeKind = 2; - -/// A curve around two focal points. -const ELLIPSE: ShapeKind = 3; - -/// Whether a shape kind is curvy. -fn is_round(kind: ShapeKind) -> bool { - matches!(kind, CIRCLE | ELLIPSE) +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] +pub enum ShapeKind { + /// A rectangle with equal side lengths. + Square, + /// A quadrilateral with four right angles. + Rect, + /// An ellipse with coinciding foci. + Circle, + /// A curve around two focal points. + Ellipse, } -/// Whether a shape kind has equal side length. -fn is_quadratic(kind: ShapeKind) -> bool { - matches!(kind, SQUARE | CIRCLE) +impl ShapeKind { + /// Whether this shape kind is curvy. + fn is_round(self) -> bool { + matches!(self, Self::Circle | Self::Ellipse) + } + + /// Whether this shape kind has equal side length. + fn is_quadratic(self) -> bool { + matches!(self, Self::Square | Self::Circle) + } } diff --git a/src/model/cast.rs b/src/model/cast.rs index 1a5cae456..17ed2d308 100644 --- a/src/model/cast.rs +++ b/src/model/cast.rs @@ -415,9 +415,9 @@ impl Cast for Smart { } } -impl Cast for Sides +impl Cast for Sides> where - T: Cast + Default + Copy, + T: Cast + Copy, { fn is(value: &Value) -> bool { matches!(value, Value::Dict(_)) || T::is(value) @@ -439,9 +439,9 @@ where dict.finish(&["left", "top", "right", "bottom", "x", "y", "rest"])?; - Ok(sides.map(Option::unwrap_or_default)) + Ok(sides) } else if T::is(&value) { - Ok(Self::splat(T::cast(value)?)) + Ok(Self::splat(Some(T::cast(value)?))) } else { ::error(value) } @@ -452,9 +452,9 @@ where } } -impl Cast for Corners +impl Cast for Corners> where - T: Cast + Default + Copy, + T: Cast + Copy, { fn is(value: &Value) -> bool { matches!(value, Value::Dict(_)) || T::is(value) @@ -488,9 +488,9 @@ where "rest", ])?; - Ok(corners.map(Option::unwrap_or_default)) + Ok(corners) } else if T::is(&value) { - Ok(Self::splat(T::cast(value)?)) + Ok(Self::splat(Some(T::cast(value)?))) } else { ::error(value) } diff --git a/src/model/styles.rs b/src/model/styles.rs index 1eaf51283..e78d83cd8 100644 --- a/src/model/styles.rs +++ b/src/model/styles.rs @@ -914,57 +914,45 @@ where } } -impl Fold for Axes> { - type Output = Axes; +impl Fold for Axes> +where + T: Fold, +{ + type Output = Axes; fn fold(self, outer: Self::Output) -> Self::Output { - self.zip(outer).map(|(inner, outer)| inner.unwrap_or(outer)) + self.zip(outer).map(|(inner, outer)| match inner { + Some(value) => value.fold(outer), + None => outer, + }) } } -impl Fold for Sides +impl Fold for Sides> where T: Fold, { type Output = Sides; fn fold(self, outer: Self::Output) -> Self::Output { - self.zip(outer).map(|(inner, outer)| inner.fold(outer)) + self.zip(outer).map(|(inner, outer)| match inner { + Some(value) => value.fold(outer), + None => outer, + }) } } -impl Fold for Sides>> { - type Output = Sides>; - - fn fold(self, outer: Self::Output) -> Self::Output { - self.zip(outer).map(|(inner, outer)| inner.unwrap_or(outer)) - } -} - -impl Fold for Sides>>> { - type Output = Sides>>; - - fn fold(self, outer: Self::Output) -> Self::Output { - self.zip(outer).map(|(inner, outer)| inner.unwrap_or(outer)) - } -} - -impl Fold for Corners +impl Fold for Corners> where T: Fold, { type Output = Corners; fn fold(self, outer: Self::Output) -> Self::Output { - self.zip(outer).map(|(inner, outer)| inner.fold(outer)) - } -} - -impl Fold for Corners>> { - type Output = Corners>; - - fn fold(self, outer: Self::Output) -> Self::Output { - self.zip(outer).map(|(inner, outer)| inner.unwrap_or(outer)) + self.zip(outer).map(|(inner, outer)| match inner { + Some(value) => value.fold(outer), + None => outer, + }) } } @@ -978,3 +966,27 @@ impl Fold for PartialStroke { } } } + +impl Fold for Rel { + type Output = Self; + + fn fold(self, _: Self::Output) -> Self::Output { + self + } +} + +impl Fold for Rel { + type Output = Self; + + fn fold(self, _: Self::Output) -> Self::Output { + self + } +} + +impl Fold for GenAlign { + type Output = Self; + + fn fold(self, _: Self::Output) -> Self::Output { + self + } +} diff --git a/tests/ref/compiler/show-selector.png b/tests/ref/compiler/show-selector.png index 1cdcfa3f0bd7d492b53474a44e1023591f904c2f..799fcf93fa17a3df2a41d0f1ce75ea07e1d565aa 100644 GIT binary patch literal 20689 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 RW2U2{)6+82ELMLI@*nyl{Hp)} diff --git a/tests/ref/visualize/shape-circle.png b/tests/ref/visualize/shape-circle.png index 6cbbc0e33c45140f297f8b115d94aec44408fcae..acb1d02a99dfd521d44aebd86c2deba5428a4c21 100644 GIT binary patch literal 39582 zcmbq)WmJ`6xFsd!Ar&}ugHj$^=?>{sQd&YlkQV9o&HPHM3@Z0q1be_r34?#D4bPU$nNSG7%vSAqEBpk*bPYq`adC0V=+eRI3b&1*l+(Om!jJs~LxE1t$8!Tx#w z!a}wmT1rYvM@MJ!dD~)4eEjc&gZ$#h-rjh#1QrPjh>+0Gn{V6u`ieG6Z)T4^cxQDb zJnZdTSJq#+C=3MAGfP@pT0KgggZCAu{vYDwNt%kAoBbX?M*U^Qh@hmjrTQ{EE80e% zotde|ytundtbx-$W>rW=!4ne`_dhje>DtUUQt0NXUcbv+$sz9 zfsMGVvXVHMBPjPY<;4p{e_L*D?g8Ix2dDlF@tg#_6zxph@HH%2(S6IRIkCGxekd!Z zf6u;x5~}djWJt`;&R$t=w(21~Ny9{FIMJ&Hus@HF$9qa(VK4XmmCq0?TGy>>adELb zJK~)>hCJ(FM@O*FknZ(CPBYTp-d=(E3k;M{VSl?gUmCY(T}-!0MMVW>#58u-mr+OA zKz+HhYnzsH)YQ}iK95ynEN?$OE^lj-wx&dyZEkL^=miE|6mqbMil%)FJ@m^nGBPR% zG`168E$Ec_cS$zXTYMNcBND1$ec_oXIx(B=FOWa-j>eJWb+?SXf4||nc^vTPlUo4v|a-{ZKI|Gvh5g$K(TpdhvvbSdnL-nq$ zt)(cto$Oh%v%k4Y#Wyy(w=uyr>>-*(A0wKDAN!A)Yj_p;xE$DGSkzK zc4pHa`8|E=79?YM-zyro~OgS1O`6Q3qzy-ZSQ zZ~t+iD#uJfJ;F4SVE1WjXw{w8of)eujNsbcaF6ZJ{9=fFrC41(z0CbL+uPeWEtBcP+^@Jk`)XQuhg zd_xLBMn;C8JD7HBB3@NfGvL<>!85JjyK|C~k~0-1ML9Wp$2+r1C5&})_$VP_L;-Vs zb#>BEk-S(@*|T#|LB#6nYGGlaot@p6FJEl5^{lM&N=rBIJ$R;gVQ6m;bqlJfaD1Or z_ZcQi=newHP$7ZMOC&lx{a(rl!SnD}sM_EEn6?<^0d@z@trya}%xC z5|;1oJ~AB z#L4)8kiqf~cK&y_1zcprTD3$bTlV9@!Xwyth!Z0rUvuXA_yE!HOs#^ksJu9WMs zp;bSa(vRg86~iklcZbpiX@8qRjp9WRF%FImy~b`OiTn1xph=8T%3noA#lD{uVVTHB zMV)>!ZG|GGRpqjaOuWH0r<>INk~Mp@FI(8AKS4=?_f&MC|NbszXs}1Es^U)$Y9YmJ zj$6SfD7o}v9_w%0{yFlvLI`jmX>57qpTzLLPXE@%gZRy<*K2E|pfuPnb5=vcO*#L_ zGsHz~Pz8g5Zk;1ic9Z78A}uZwBceArR|of4s7OWY&fFX)>#6axHOKW}7k6aA?labH z{=t6kYZe$t3|vg%HszQlI$Z*6>d&l-tma`|%GIP#!kE7eV}=Ted_X@w=S)UaGnEwa=r;-nVE@%?*jO2bUn z_e{3RRTee9gE0Ma6z8h;)^`mJ1#P&36lck87AHl1WVn5V|Yb(Q#$9g;PWuH`Q#4p60Gv zCgk;-ReU2Kl~v%odoxMDfXBfZr7hW5!Bi=?nwN6y_B1Jbpwtsesffx+IWGS~$_mQC zl}_avXXdcn)h?#fvb!-Cg#|Qt8}xm5c_~@-)b6PgB9hulZL$#do%Jb7Y$ZKbHjZ;# z10k|W%ZJb+3j(4RI@I&9mdejq9f)!i;6wQ+757&k0z{QQu$ytm=soYjw=v-*!KNrm zyRj8wyivuVLHX_+8tt19JOCb_dN}mD64YrH@m>oN59PgMjbO?b|Bbv}v^j)nC5wjH6VdJUf0IL}SkF-52i(t*fgm zX!Qm(5E_c@aLvY9=(R_?j1d)}8{SUr>``xTZ`W>5<&p;lm6d#Vo;5?|#qp_%W23_D zovlp|t$;;o=qR4}OTEKjXOjb@B8Qe4FtSHlkQ&@9X>h1%Z7AmBRq8@PWviykZH4w;QD@&{rG|C#R-DLqjv0_>`2DlU;wUzp$yuBpoO!D~raPDGW(}N@vRK(s{#xdp4Vb zM8-xbxVZ39+<&wdbr*UWeRN@2md9i)8qMU$Hisfjj&@`rmFwu}AW~p~_IvyGOR>cm z3U1?Wzc|1t>B9Kr|Ni|WARvhCkpYM_Mf14HwCcGr0Yaas&`Lmm=MF%KlZXEWBy2^m zaaQ*z<9*7MTGDK6X;D^Io_V1qm7SfC@O^7b?IIWl`*Dg1En-r9w68Bx=P4Z>o&U3E zq0-#U%!}I(0edD$e)#Z#n3$MNSHXY`+G%vm+lRKc75CqTbdRmKi~FYnS~=x?cu^Ef zE1D#^f>BDA!@~mTVqM>56*cA*pPkK^e;k$i;>8O`L7+~)GbG`?ul`ilmdW4aTESU7; z&`^1wH+;$GN5@+;Z?~Quot*fDY3u5e158GJYjneAwt?1ET54=+Y8o%7psdUqHs2Pw zfQaY0b?Ys&>q22@Zb88cpcP#6628AyN=r*&5%CO?8T%VAxbIn6S*<^fdH&qm$_k(#4ps-;&F`IAQJ+1F zFl_||1$FfySYZk4RYF2yy4$2kB$9z4;Aqoe-*scD=ehL1ll<)L1=x=bPPno7=x7KL zmdtnW-to(cJw4{}{9B}zy|la>8WLhyVSE`I{<$-6A1Es-Uctp>fF?87;=R=Vcx@=X zs;bJh?c8go(o9iNaq=IudPWH!ZJz_^w9(PgKSr|hX`jwExWYa!Zcdd!pSwYG3H&Y* z5gVJ$>c5rWoZk*wD`Hdez`a2hL92x z5mDgdI5;?=Y_1=aM^sd4ye9Rpq@JC@r`XKHNHauT%^e&{WSD&5)DoEG;SgU-J~iY; z@bU5C;^I!8n>Ieq)yNcqSq?*fxl3C|2ewfB$(p+3Wemaxx+8;cpil{mf;d;MxZS4v zC0!`wwxqzzTcMRL72Ws-cEB3#M0iWUBFAar!!zXa&TNAo<@MeZz*dLWg<9E_1qJ%| z@82NBCuWpFlZyGDpw5G`1I|h~kmhXx6~)Dk79Ch;BWh`UI&C^gT=agva{PMV?Cfl2 zM#iTum($bJAEViC>uno-_E~y;F8-Y#3i6oLqkF8Nm|`Jf5%Q4fy)RwV@vdBXcb~^k zzaRj0`_7&8j0^$32G1?Su(9Dx(JNRTkOmYVuJ02uNCylpK8`?8C%t;b^GI(BrwiUU z(AQsQo>6>GIWRaVxTGoWz1xi}Dk{2)69Tc%z z<;cdDR#s8r{O^svzW&+a#)QmeWrZ@+*SHjnjYldMcz$%R;`i~W^aY)`7Y`d-cSi>% zvyj*JeKHgbUP@+W=l{Ilqgjw{WsqvYuTApKL^OuodyS7Cn@8-te z>jMLrRcDpW06E&t*f?WP%Lj0M``AkqX<3Fl-c8>7RT$Rlr&$2pmGH-jiu&RiX9z=K zm*e7ymxsy>D>{)sR#&Gsq+k>=;-QSjBIv5}+A&7+Q*`E;Tp*Vr1ExK`j*V%Dksb*~ z*Sjv5Uqjq`Yp#gTpLf+$IQj7CC_HpVxPz3MI+~xuko`~)F#YS-uN@s7Jtjid|DGNo zmlG05KaRk~#g}38Vb|8j^O2VutM?S@-_XzyE-~GWv&z>JzSTf^G&hivlXosYhJ*{V zRMF5_eSCZBYyyhf;^W&8OhrEt`1mLLeT)MOqAuSo-ra{XaEQ&J{!;te<&ea|!BJmd zk9g0i`ATKikPf*vl2uk-t{zBl+T{M`L0bR`g9K^BA`IJbf6x_*vMrA`r&4ka%*_Kf zCvPgHU|AH`K$m)3Pyor+?I2Ivu5kw+?b?;6AOx3}0ujS7p5 zWDSFG5pns}|Kng_Bv(GNw4|iMwCNX|IUX@x)w_2(y1LEot1;`evo#M%GKak$KaPrv z8yOn<*5dsZhC1lIRq6Vsrr)5ri8y~PH)(KT)c`ha#Ud~;5WNrS3?rKF;ku5it1EgR zicyJEETc4owS?#9WZ3Ah<6{PXtFWlC&GCF?Bc5rvsmsookbru6{D|^7Yzce7;NGuQ zH4P07R@VHes3^T6&G4|WTBn(jv9W~r%6z7cL8KYNPLxx=4Sq+C=zW;68OV-_TIx;RqcC1w~jweZ3cO5BmBk z00yG|sH>|B2@CfiS;HXN{+^%T{1I@x{RPfzG7+uOoVc;Re&g0HtzE~Hy~TJ&=|U-b zNk5^qL3$y3(mGBtv9HiJ>AuxF&q7$}C4Omayp7)f-Vur!vBuDOezI?U){nn`w6`dK zR&|B{2u>Bs6uybukv5bW2x2E1eG?s>eb{#~q9;DkW1*pI@HCv2)YcwCD?pC~kooN| z^>js&P`|rX-A0Xj75o1NKz=HO=EwmwEFRvUvoo>3T2udQtgWqom9(@x1-jJ3xllRWPV3U98=s$XQO36?&3d>1JZ zog!+Tik~)=STj(R>DR(1K)YVP(4#r4{p#T=@PW=slBDfpD}2Gg8Lww@*0mMheK3=B z$Nji)zVaHHNBqVU#Z0XroOUKMq=)v}h|osn((MWz3{s*9xQ_iS0T*NYSgn#y-S00E z`L{dz-QQL`Ocv1QrGSf*O9zvq-c79hC zZlZ)f|J@uL5o<@))Y38&COat5e&c4`1P9W{a5jzTfbwJL`}f)RS3O{JxUhl2zicL(UW;&K6^&__u! z6c5k&NFTs;Hnb9i$xG|fg7A#On1Rb3&mL<&$JzI_f8jKOg~;nhIx}aoX-lA#_&a#; zsY5zON8haLnTbz+jur4pot~?@kOFJ#-|7L5;JJ115PCYOQ?0_@sDR&bx4GYRdALd|5a%(3hShl8z}IG#)=N(Ql>+V1h0h zU2m8W2`jxd^4+k%bCS^VK9KTA6)Va!6{0AfIuWG%lPA;%FLQgJ$JKsfoPhx}hoON1 z35UMk#m5w)U(}z}+$<(UT!DkDRKqlwHSD>WTKM$S*zHzda1uR5=newvCg}2Nx|ILWt`Bj8$ z!5M{LCp*lY#bcicu_g1wI{L{Sz0Q;7LTTq{EOJ^#hTD=<%5EN(NPkySV@DkNUUj}5 zqg_P%20N~ASvD(G3fZpYm^V(XUG#GM~Zuu=l3Ag1P zE&4xx4C(OI5VI%ow=W3}mSQ7#|D&*909UGZvR#I;o;P$N>xt=_8I8#DqWwi7Z2`{n zJ1Rto!xCptBKA4j)rN)(q~9HjKT|!Hg62d_lB5)0|4VfT|L2D3a{IQ?WowSw#iJih!?<0Tvu{b| zGM~1*Ms9l!+Dd(Cs{9e<{7h+_GNQjYRQez+)6hCtk4JdX4Sgv z65Q?9Cv$d>dG0j*%b?$MD;1P45}`#nl|xeHe+_v?0$;ipujA}@D=V3{uQ_f_sQq8$t z?%@^AomNTlm)<%P+Y^Qtw8>Jxl}>eB+U?IPQ?n;LmYlCEPgCrr@dTN zNpc=-e|Sme|*E4jn( zAUi%48?;Wna_?cP>cT*;p)uh{+`GQzn}BVD(OmddN>lqPu(u^5r$T8b2EyH92_ zSMYO*B$cuL_bjPSdY}bhg8>})qRL7SR&kI zVPm6^#r$MtTPc`%)|XGo{ekDYW@NBVHVrZMs%nv#=GC3W$%yQHP(IK#uXyZmPF^q;NQDufmZib#*^2F;}oiB@@EQ<3`%FAsAWH_pCf z*6Pn>Sv}gxvEH`*7HY|n#jy08bThZosmRvn)BGRUP*LewWBgp{ZO*F?&fZTP5`Q#> zVDI-T#GKnU{hDsY)-dUh$`Vx^5;2%K+_2yI((!6gXT3O2GqT7SN#`ln=1z;^Ul+-9AnfG0t6?Gz3C29lJ{|n3N?%6sB5f-j+PbiN`Q!X| zKiDUJY5(9%#53i2-h3F?`^P0Ok=?r7zWBuij{Klo1m(@_*~ohg!6F$uM(*yyL|grC z>7s)Lu3E8PW>dAW4L^5(jNJY{G**%vTTwoFgzG?i>RtEj(DwLqWAL?JYU6K@U&}A} zb~v2XYPQ0kIR9KRT$8#|q@0fe$px-#32Bo!)&ozRJ<8@Un<`?_=v}1iMB_$>8 znm5?Eepaf{85^l6`=r#6UoXgN3M8@lhdh#Lkn0mtyi=a+MN(O{zbm&=Xa-(k@BH|I zCu|~S5wwle$O=G`W2sz2nDS9gOS^uP>y4B*H8`{QzVCBHd_%Ux6HAE4h(+Ua0MX-g zoBoMa*F<*Eec#APwl0+ex$fKD_^V1+)mjYkT~du2nuw4~E=hM#$LuFO>_#Gu6_iX8 zaw9Z&S42hMHFWYtw%_gGE~Yuu-l_jtNxQCNN)Ff1amrmJGBpXoVdflTd$(OF$q>2z z+=#kV#^o#`t}}>PRTpvD()&^@%ntpopV8soCo_w&v>0+mVmJv4S(wT5rCp^T{X~Rq zO=Nn1p<;eG1Vr{pyN!ro{;St%BF}`ceiv(izCA&k;}&EmTWA^7iF4GFWTRB$zDi;1zd5SFs&-}_Ni89O6Iyk^ zG&mv@inDH&dKiFJ4fbH%D-NGo*W9m4FefACybUU~K#TsAD~Ri~|F4w9nZ1 zE2hF>O+IE>NNJQN0RuG|j2AYhz&dF7UGCB5&Rs@l*}P&Itak0^fB*hPHdvNaa!+wg zh(7S*kO_oW@qmjQ?{gwec6fK4ctZ_vyd_PdlpS2XI27&{$tN5wpgLGAW%+=*dI=Lj zM95FjLaMu{`1jFj_a3PVp5Sc)uoq;ir%a{Xaj!41tZItqmRulvse~afC`?xHB7v06 zv9rCuAK%UuNTKqSlLg14l+ zoQIJyJL6GNMn)Xw*9hSk##@r|5)8MvxClcOF+y=}N=bbv%+b>WM0KeOWMBo!<^jb^ z&cHANMubVzD1xBu><9k-61CVEp@%oY%m9RHPYeaf1@rSCG<_i3z$Eha{yP>42?=)g zD;O9^<6MBSdJ2S_L}2mwpGf=v56J)&hYDkuj)7za!D8|?2;R^B9M^4|fz}@u5djp! z-N_oi^D|Ecg>LDKzo4RR11Y^ZSu#C6Eg~W!XgAd8dtk>Mn*07e9kWp2KYz#gvNCSD zb>NhFeeSs~d{D#(4Oext28M9?OAEwDIt0+uNT8*98|5R38DKj`MqtpUBZg_Y*)6ar zGP2Km;Th*0RKc4!73QtYrKNYLEpGe%Dkv%0$P{&T6#Krv+{b;d(*N|=o1qSr(=-p- zO+^L2?g#K?US3|n0msft!6XfIqlvpku>lYqUs|7f1C!4ky4at{il0k$%RFdwFZ{K1 zU}bUfZMz|4??0e=fxp-G39gCEW?u>m4-ZdIPw%|-0)z?Rr-4v}D}%;8I5`S#Ra`~)d59lmfQ5XNS z!xDz*Q$}lj`wY4c{|3##;v$KOBW^8N>#2U-)9-MAmTpZHc zodWJ3Xo8p^%S&Z|Su7Z+iAS^byiL?ZM6p0c;|D&23j!05&y0T8(C{0$zm4AsuU>sC z(c^R{0d)XKK|3ZgYU+~8$~b5_%+b?lG4(snzX{SLEX^G5@RRD2M(*ZSel=oe@cWNxeUzhm`PIGzq99k z%ZaWfrKL&=3bi6gAgAL<$@i03jho!rGl&1}w*0J?a+-hdi(G~aezL5pt)&BU4`K+u zRM@%~5taaClz}1(3kyuupg^#)uoMTj1Mdp-RwN1I>x_)E-wT1RbIk@C8pFVa5Qn~h z|F_m*;_Ua&pIcik)_ufe9W3JFEteLyhu>F89 zs;#XB(va)M4I4W<-S|Ay81Vgb?5v;=mYGQ_XAe9Z z*hvbA$|-=i2j)p$UVijHw2BYFT36jK2lr1M7czo`@lpdQTg=VN>)d+={BB)sE#&x3 zq?qTXLf}LvV(u-hqLE>j?Z@5aOZ^OsuS}H@^Hx zPEOunPBgZB{N%~R#6*5})zja*@P5IEIDQ78(poFlzt%Z{NYZa-Yx@RtoO6s|nM*2} z^0_C-ZB{|)FJIoje}8N?4_LDq!mdkukvPzCain4ae{V}lIoa5(tgowxToU79W1vx$ zU_+tkjiZ0MHO*U1O-|18RlT&{_H&gbwxKhm+GS)o(?SkG1 zo_0f=gzmOXpgCk5Xc~o#q}Q*9@quhY97(p9e*A_( z(ocWKxy|p0kh%8J7Xg0D^@X;!%S9kShXyF;fm|ETRF-ZBeWYtK;hv19Cb3+Uqw0;T zw9MCOXt+r6T^2sX@|(AK@pc)NQs6ef<0Qog+5!$YET8F-Nap>Q%e}D^latr?Nh%l- zle95FZEJjwz_qcm|7yUuxWmCEcaa)>jZ=4R2?9KrU&>>hlr@7bZd7K$!N~~> zV*@_+Hi-tmc7H4CYC4Ry=$sVf)%FlCgLp~0=V~f zWJ^;MLAKYQ;~f?YpZzx~&XuL5G|~YQ&wHxt>asw^h3o{GaTBKth*5FRO^E$^$Ei|q zZyj$=sVOS5b8;%HBct2|KoD8X2320M99Y>zR%IG|dAN->R{a(059))&5w8M(K^B;rUA|!-^+$_(_ zW8vlHH8C-XFngVt*kM-_J(}|RbsYbE(-Y3~Adob`xF>`YQC%$nl4-=8(f#|4aDsmA zq?D8q{LoAbk0pHeax_ufU+V_@`-=jGbg zXSgLur%3CMw1x9m^k?pZ1LJv5bKr&4a)oja0yBc9&Sg%_Y8!ODR@l_W#!I;ly2Yi; zxV*gY0|G3Z36o_q+|~NlmWi?PG(iOL-Ep*{yO1xS1am%xKO^}6fvz(6@uSKSJxB^6 zAy`LuDH$Wc<%`}=VpmfM)RvX)fO7+P6==&U{bgWL>snOLmO6(o3G>HA*hqeY)^u_D zBO7oE6cCV(3Z*J2a6dV8S-tD*>KbSOg;)IXcQBM0lz!zkuEn>05B+j!L(2bTY;LZ# z66OE*y|VC2zQL^(V4L^$V%yG^Y_pGcx`-ogU|f2gEdR- zvW`M=tdk6_zKXr^h(+=?)Qy5J0Ch1gZ0|uu0NNjE4RTy=ZZQ8Y)PG>;%{Y;T>gjU3 zUj_!E36%pb&VTbzs>#aAK6t=rU0zt|1=62iEduVdva%9s4f!c3C}?ZDD*5!7lrf|E z9cV4dv`lr$nDTaZ98=3m1E7N_=yV6?mX|;32)Tl^2G|YtHY_0`0#~xzNMC1csHV90 z0@53*hy-D&HTP#2c zR)D|I5+`Gy{XN+SsS*uNgNi=T5Wo>p^5DnMpFdYuJx>Fh!LR_LCb%KSD$T?{UT<<+ z#yxijt0G+PFo0ZFufchi5(IF1dX2X^li`}#QuH9sfTtDEHB@p&#!-9|J-@RaBWWpga)%j+=udV`gRs?Ecm5>u9!ge0+S7(l36I z=%l11KJ)jV#Vixtzzw0>TNP?D1gpy31x51S}38=Ui!v2Q03;W8Bz_o8;8)bK~9@V!OXF> zyzRDxV;vya&h#7wegROtYC|p*s@Uf=7QmX!h6u+ezn94z#3#g0K%o|LLNz zAq|AMhOwb*c^|Bs(gCS^>7d}bgo--)Mx>N>TJjiFIZr4Cc_ zaibu36C7OdnXg<455G$F>0uc_V!^`f>^n~)GEN!j>4zH`9Vy-6%E`&s(nTZrLDnr4 z(1@A_?Oj+{c;L%@9!Mvup8Jr1a#1U!Q1YJDk+3l_1=0Oo?7{=`o;Xr|tsFe={N$vq z{->Yj=U?Bw(quD`WNdlA)vqolhOh}7dY`}oRI*_W3^&-WClhTB08|3@($m*35Re52 zHIkY-QP2V%Nkpr}u0|1Yncslm^ix$Jc%d)`<(61{hH%UrHh*W;11-{Z{=KR|9}Fka z1YH0=AWAMJ|5bNuspmtlF6}sA)c}YDuV01}Bo&}^crs$r5!Mt!E9HRLv2_oL8r9nZFmTrSK@b_ru0o&}t#~0jAAsyY_HULw> zP@N$iD3vY+sMc2`)7jNE@Yl)!*lt1$p`8%ubfVCV(&nJ@9;^++MIgJO|Mns$o@`(u zVhJv%FHrZ_pF;D4C3A8h6ku3EWLv_N1XBJX4iOA&U?PH?qj)BrDdOCToEYY64wsJ% z&b=HEhV3r)x=3sU`S^&L4}W9_eu|9+v<_MN@=G@?FLZxAL^*pEA7%-29o0@_8k!q$V z7eQwajt(=kIowXBSDyMzq(iUnB!B#H3C0P8G+s-j(>;Oyi+0m+>Yc>t0-FF-gb0X$ zsid2Fh4_CCpR5g8)_mzs`F(U`psj5&w8GJZT^7CwR`9%u7gxK+DojMrFk!jKWw5qH zZ^+=`;=13aQ~LEAAQl<(q=zJLHE|bs85$masrK1l0-LfQ7^a{q96IWgAVE@ueglmh zNyT!Zl5~8BmpAqwcky*3Ka1&Owl zrlvb`QH^{M*7^(venQ~+fs(E|_x>enOti$N75%N6#R8tM0k@vj-!Su5KjyH~;m=^l zz8(P{nHx85Tn;Pg0=5vM2R}wd`S~4~5Rk-=L`;0llE4b`v8%GY++XXO>~IL4Gb<-f5mo`>%0Vz3cV}pK$<*zcAm4TuwMP{9odK)CsqVwz=^EKw;Dqv zOeU!u@-cdEe+HT5qnquK$U&Phs5oesjpUSDKY8fFl7OaZ~)Y`EYuBp9V$ zx$%OhjS}p^lQGkPAHj}avhukTm0dsf!FI3uZ5Zpo4BvQc^-NYpqWxsFaZp>8WcF%jRHXLq{X(Vyb~! zSy`#N&%;%zc%6|^tHRiX8?i!f`S79gLULwi3naK>zA6l_cHI~%(xT_eby8Z*>?XL_ z*rBk<5L*_HbiSJlvlHJui`iQe0vJA#63 zSlNEdd)EDfD(2_shqSH^1LGNuWd36fsIfHsRyeBd_KzNc;Y`eHTcwp}1BEhud{=*@ z3y#baF3;S(>aIF7`}v(Ufwcmhp_rH$5*|jg70Hx@r#r~($YnFwis7Ev=q-Uj(@#sk zjl#zX$qxLN-n9rv3a~INAvKlqD8y&)JLa7oaLn|-=G1!q`RmuDB6yY~h~LY@qkw$- z^v@q_v@#kA&tw=2-2@=Z!eRxx3`7=3MF(^T%`7oR#(`I_UcI*)&Y&0ff^1s@I0oPu zO-2dzRW)02Vc^Gs)~nm^pl`wlrX8FICMPGMl0}Ax_w@9PyXIF_p>E!cF35z(R8*&; zUrRu5Ujf7h48UBiL-O9oH*7auA3fTJ@+BZ303049Yg$T*{sdQ+0^G+uzEsWOZ3NPc2}X2-yZ^xvpn+Bmgg&pZjSJ;C2JmLq(73!|8mr6hD38_f66t- zLh$CpFVu)fKI_#yPU}N9wDV+xxYPfP2k-40KGEAjTF~*nd|_T&l=GKNUppw*_fhV4 zZRfCu{EhA1{`3J6_*xC3Abb?1IbE%AymHafbl@3eq* z^V$mG272Xpr4DS0ms;3lXM43_>obka2$5OS{>`AV6yX#WCEWAW~6zF z?ax5LCIeh8+S|1b52f~))KK5x`kt&97@ayCOL9SKb7z(q}ua$b7Np?i-4yVsZ}79!_U4>hOb;x z31GxUsjwhmzuILSM+PR?y7u83L9*2rIV>uqYR>i5drM47*(4ST@KoVsKopbk6XwJ> zT( zpmwEW!^ag6qR6;nPiI4q`)RNq@@i7$KmXuq_tzwFptBJyXCp%;*jYL;kZk6Kg}tzv z_Z$3fZwO<`A+JmglTHb?&ErG!L1_6Di@<)DXwgGYz;hXE)3kF*@PrvbGZmXxL~XgzU0!&MD;>{`E$SvF;^NK6&<`R6 z*$lkm(ZAtIHi4&@h2D2hJhZ0_0-L(_H>6omE`cS}7uGGww?tgt2kkQ7aH-Sh;jxK? z3+>h#3z=0H1|)o7Ky$`q@bdU`nJ<`wa=%zGNqIn#z=$Xe2`(6Rf-^1tHjIs(PQlB1 zKE{jPm8_LUOMVv%nL&iRsRJeD3U>O~L;_usc2g!1Zj!GqWyITh1cI&dYeF!x;=?ZA zg;T%9t>xFOv(H+ayazjF^2(|c@>^^z>@7?U=#V0Fo>N=pcW>>ePw~)u7M0h{AAHTP z6m~dh)gjBihjxBly)$l4;i=j8n&zUjYC{_7CE+!D_E_k=s)9sm!_(07Z?j%e7rCVcqJ=ar739Mp+c;`Q?4dct7|tqpEjr5tyrw&%_>h$4P!AyT{S%{>Co zMmo%U>3JFv3S@H6l(s}~BC02*#y(m;e)X@%MDW)O<%Zy|?yv@dJYv*}kSJn-o}LNO zm7}V3IZJCHS5Vg?ibbt^E2^t7pUl`GlDBn_Zw|EKePqBag9nsZuZG@X~q`&@l z_!}j4eN}h6`PDse@|&cHd0DyL&)tTjjvI^Ea<_;wn_5Rj#s5USA$jO?HCgUyzon2@ zQ%^Npr00xs#E;u}9EeXpOABXJJ>gs6)&4XF40-P0V8pyjKMUe0!g5IW$sKg+KNl?# zDu!Bl{L`M#pW^w~rwhv}C{Imv!Zj`ih^6RzN_-FU{&1JPGorhrXi!h5RO-Ci_MBej zS+nHKu-7BJFjBjL0ZX>X@$Un@;?kpcIPS5DtGc~jSS`!hJ(P4uI{%w}@d}UGMzBy4 zIwwkKZ$Zx$8PK#`x?rHuRz|Z*1Z=yOgQlM7u^fKv)%p|uDL480ClzV)=bdJ%vCbRC zEpU?VxMh}phrb(Qm7m)3JzP7M5@%>}9`*d=r{}6@aBOkQdNW39%kQJ5(0&mEY@*AM z+v#fDR(wfZ1f{9uwJAnD`apG0wExiqL{NTIc(AJ}vOfyC?53smgf6P~dr}_UjCu4_ z{KLILXR6IAW6Kj!U**mmu~S4YRpfxBkhK$I^IJKC1&RUr6;uYD-BI{H<)aR(!E=v! z)v!^EPj7j<9!B{ID&=S8{jsXy2$%IzvZ-}Pu8$W4UyE%f8tdd~f|${tdPE3;=w{7r zQ6u|Rf3+}epE>oyZ;$%H34!$MCn;V1PwPC*EY~eMY#(2NhpCp%5EBiD9F!^(9eb`J z?R&536nP>O>l57>MME9h4)gYEev3dz_FZeZwImnV^3ifdDF2C>C5pB{(&^rU9V*$z z@>kJNN7bKj@#m}$`4x&(E#W5Z=8h8Q%PR0R1Ry#%A`_4BC94DbC*v-_#S=TOcq4K= z>I;WwcrN2;&~8R3Hc{@BSi8)t5x#Tbi!!fw*kp2o^+ygKNTeAK1bOpc*Xn3h=?hvB zqE;bvfJ}dSt~>Iy{HM`9*;|^@17xB+8*4hU4vs<`JtDV9v zXY}Tqw^*HGIL3GKASocaIU~nE*2HzU+PSUt@(33N+8%aR(kZ@Q+l*@Ntm1QGqe#92 z51r|tUe0d$w>JF_wAFK+X8~^-VGP%!Qih+tJC>93Sv`pd#XM| zAmv67iug@D>q~*{shb`Xf;um{?Dt)#UfwwPecZ=$M@@O|rxl*dGt_3EexGKm(AQ0F zo&9gQ6Jl=H-~Aw&lfOmu=QJewX%4jsrue8J#T@orm#WsR%9o3v9dBj41j*-tv^OFX zHI*rXz`j6_t7Q3Z6`&-SAy2z5)!imF? zYE%=Rg}pJ7=CymHE%!7OE)j;E%qJ1p>VF>9p=9JR9D+OU^wM4aOFv<@_<=75c0o*{ zCz58Kfapbwuf@ysN7s(*)PMa!UACgz$9x!{)a3kBgJj3{Ufj)b7bQUm)S0V3?-*+j zBG=zt3$}bHrR8N;LB(%#UVIkKO*&j1x*nbEd znjNUVgHS!Q$PvK3Jd4EX!p9Ugjvv}4yDlLo+grRJn5I{ZA~9b@Dscv{1YzEj<+99q zh4(#ok$wFjMRWa8sueOQvX@=f>r+v^CZONj_jMtA#N=cRu8ux+NbvjxX^Qam-dl-o$}%D7P8lDjW#P+-!Y$3uu6nrA z-&^1-Rz&_s7KF`Ta_Uje8os(G=sT-?MHDU} zupucr6(0o-+~4ck*ChVwb{(Q@T}J%bNUA}j@{>EMxWa6v`9C2 zmLLy?SvE%MfrYP*SQ>(w7gPc`RzcvK+SpabwrAw-p(nnJlIjbCt zC-Kor0BI~`sOP7{7OwDlj!ZWahdwm_%7RQkzJ)!Ga!6d*%G+C;bk-jLlYhJcHrfad z1(v07Ws8VboaSqSnzIRP4^nh+z}}=0-hG}V$QH_e)8ybAmf*IpGLMObxWD$acC`!s z&4Hg?Ok`Z(smdbXP)zjT5|O5+PZ9Qjh1g*)m-&>z*v4HGIZh3!{~bn9(wkUFV~+I{ z!^UWVY@~&{*mxP4_)i~Y9?q=wy1k{G7hk$=1P1*gtd1e+K#B*+>VAzeVbo%4Be4#W zZJL8`;(dQRid62F$J@01@y_R=a6d4M=ZK-HF$ySLnjg6T55nF8D#|cg8zp2w90UPj z=q^Pay1Pr1R6rQILq#cR97GWbk#0mlx3|2^mY|5~yH z=40mj-q?G;dq2;!K~Djdi-#=SDY@M>5aJH!{x{~-=kf56dTWmxdA|j0FF!Ea%BpJ7 zi8$lWp)D+FuTSef;Qh=i`2L_DPAf~?g#W#;(SJvd{;#=+|B))4OM#8OVF={E<5!va z`40V=3XpY*jtM-hy*~#@nGt24Mt~Inhz6H`4$5+aS|ZzAn2YEqD4qe~1d^gJ4>F+xqP zee=u_Dk6}2S0w346v!zLumr$S@mac<`*f9hj&fiYdl*!;l7E>%IvEl^c%hsvz+mne z+W-WURk?Y?lX2e0O~~KHo^3$E)ln3cYyfz@*0Kk`HN*OWAygm($ts}jL#62j%{3r_ zmX%#HG%~`~H-Y8aogpX3&OQq_Y;y(}lm$SXP(bbU`Lk!@{zp}tt~gwUva(sdcT73d zFsm$Ev4CiSJBcW(;MH;gR@3~?fBPFla=wr*S5`h3x(;xVRLMur>n0&3Mxh8)7=Woj z3C1&)oJq0@(t?org~}Zecs0B20oG9*9UTpM{Ofls=7HC?`wEI+I129eeu4fw_OPnJ zvw)*59C8cFN{uIff55xHe*GGK9msO^?lZDb$*>4G{0$?Fdt_h@hEQng=y0W!S~Nob zZQes1s`0(@m#3#QE9OHr4wWI0!YFJ&<)Uzf{JoxW*OYb%1~k=Dh#Sy z^e0!L<_<8g;onQy%pH(+88 zC_?5Ea7@4ug_}#ckkkQVBr9w@n*7cgbSql^>-Tqj*Ubjds7eH$Ma!TJQPobO1JU9J-~iF_&5o9 z^z8{qG(r`^P+vc1?ZE(=0;a_sKo@7naRJ(m0VmozIsn5`5xrqno0*d%1SMq?mLe>+ zEm6R_;{-CQP>$_Q76Igd9twed{AV&k04FbzVi9;!4a9U9c|LJKTmf%Voke z3HbNY_bM5aBsC^q4haCYZ>R5?n&hRVq=1mh{mK8I=!>rt6}A^nUO;kJg(PMoBPNFJ zcz0-U5MY12S8GZD#|OofrFL;iNhe3g5l<|@5(dR^5V9XsR9Fx#!1lp13=+s&qgx5L zj;ySxzyX+SiF6EQ1K2KeiEnf?dm)lg3_S>hr0_>o2z*ajdbp!J4dfkXyugoY&v2}u)5KR`kW5R`kHn`i-n z+mMk5zGXs!yEqbxcwbRM*Wrh70UUadSIACSXP65z%rO5EDS$J02ezltdrMImM|X!h z0*-e17s{f)=;t>!ZcvcGzNL*6nDc_t;et@~cj=ScB^Hg$Y@UFAkx~RKYqdPCmcvAvgB@N6%Lxb$) z7AdHvE9Or`^9}&yNSUR7813!j12z1CoX?TTX|P%-Bz<>zPfP)bM@80J_h=Q}w%h*_ zup2jTwxNV>8opN#U6lzqI;{@8EJo$E`9`vJ{`W*&x zVHL22jh5WgdRo4>w+Ao~x`26bKk6rQJBI+10Nhv(%TGXkEiQhSMtl4E!t8cWK!D$*lBPR143KZyWkT%e8ix)}wQ z4cM@zrhfAsF)cEv3|W6cI6X*u@}A_ta%O&|mJT8b8bEM%adF8PkB6B6R2$qW8s;0y zFSkuiQ;rhOj#f*-iVY0hhoU14TcusktcSRT|K8=f9x>2g18cWFUK!p#XBi3T#DXQ# z@YY{j-at3Es#<nC6h$+FB3^ zcm>RV_{fV&s;US@2Pl-no7DO2aF5J{2&4Ki4dh+V!Ab@UPu@Q9?NSz3*Y(X!kE2gLlar}mt=PgQ zYFz)dlFRkad?5(_2^3A)zwK_5oMGhRqBpN^Pi82gJg90`w37 z^@c(nf#C=xq%Ww-JNyqH?tr&@zJuAA`eg6!uA6!fh~V?{p8J39tqkE4B5wI}!>A0G z+%!O4k&qZ49E|O;i?jIPFu<<5e+E_rR7ze608A+nq7VS&f)52?C?RMQ0(cb0Q`P-7 z-4T@NK@{gJOJ)DFLZ}4;`1zS1$G*jCS(Fph#91eV3zr`NP_OX(PswE{4`v5WLBU() z?D2o2P5D2EaM6q?Kq6ULS~e#d-Z6#}pI)4=0;}WGUr>NVS*ui38Zpw8kYX)&YkR z1EeBAs8U6oMp0aP4gN2*Lv-90@}om~XXHoy!4 zzEhZ+n~Mu7{{8Lg>*EOr5FWWTBMl8mjDUIoY7WE@EAHy)f$~XKUY@G%RnP=A!NcCp zQKdtn`iqkRtkK=Aed!vZHKkBz<(CdYe-NEz{Y{A2FL*iBGH!U6osROH}z*J z5vyKA)fGMsp5ROd>_vF1B`0xyXYh4iUU?jU;PMkbfJ7qLSc9_eT7t8(F2BRBC^Osi zb8W2%%ExxX5xLd{MsMD{xpi6o+PEO#2vwCs9^J{TMR-jIGAGU2B3NJ zY4DUDwgM<(u-e)9I^@zRA8h_?2JD%UvGE5OW}Djt_c579HxmIr4NI-Hr3Fk4_@#U< z5B_V{p!D7V$l;2kA%NtA_5D%p41x-{vTeZrlox<>V0+GknBeLgKvpU~)6^n`OnvFl zIz)*e$-tFn%XqPUYAVg7=o$w{Yexq!4&SCz2e3(qHbI!94XVq@4Je3x%>btYx?M{$ zRym;|o$Zun>2VQMBWj{H3;pv@=7dpIj^kTR6ho8o0+IMZ=bG*Nj-3ze$GrgM9 zCns@|y+kMd5Dt@|kaBt)H)JZLm{RihdskcXj@GQ(2IOb4Zw5|6e%$}CUqg+@-ZYkc z$@jF=F@FfA=>QLY``mH&1Lhag+NXtM%1i=`1EneNpTE;d?NeN-!O8ix79I>v5>5Ri z7q{RIbEATtuI0m>ywIFcdPEE$-dy5FjRpyWMl6AuYmkE3i>0#(sr}mI4Y{bmf9XTZ zo^tWm0alUkc_a5GEn8hhWRjy$%Yt!t*+*(CD=MLd(Vj=oY((3_1X3aszlo003z5k= zk4;K6s{K3g_fNa|D0Ou|b;nmmHgI^^vm|42eo22Gj7ZR^=#XpMpm*vpinDC?I6b<1Z&G%se&if#mk~Qi^+I6aHzUV~cl19; zs}-7Vd96~?oFl4#cFkT3Kh(UrZ1vd4o21J{4Rte9qtEh=o(M6O$>A_Jp+M3uz+3j+ znuPVTI;-HSrp!2WYGVLRUQAbeY@tMuLOVv>(~?~MmcCuQW z^DZf3jWdY2sXvo!=7#+QnPt9T{n_4YEwKP1q{C&xX8WI_$VdCS)(#IQeZ39YW6T=; zFQYw(us-43aV*bE_uBjC^H1%qTg!KRhn?gY6N={(u@H%ufQOO&~qm!QjK6sp!I4VkBcQTgmXJ zHSP15{#1I}Z87rJ*yP;9_J3&WIbEPYrC4|p!KEtR3_ zgB^Dw!q)1!Pxb7N3ZUK?^th!m^-Ci)=IX~w$Did%hq!LP_wC&A*X4i3_^Ix_q}||b z#?e;f%V}QH41-G=ZW+w7`xzDGf zfzlHVTgewH){P;y z%uZ#qBP~il(vtdANq?{I=QH#rQTkpg|CFT;_8%lSNZAdHH(WDY?&E5>JGj>~yGeeN zTm6LZgP`a`pQYU?f$rgqz@q(c4^Q}>C)Wu{ZrtiqvHutKqd%=(jQ-RTy<=t5QnutW zQy(fbJ|wo$U)gy2&lrJ~2%l3cCP~}Tk^ZM(H1alT1|?vn(eX*@OZUqSo<_QJ$0Om%4mS=g1a{eBI!P)ua7W@2l$=nYp zNxQuXgwi`S4pv$+7hFB{wHmZ|uD-%BG@PG0o9dna`?ituuwClz7-@aWdJ&^`{ihG? zZt@vo_53bG)G85-Pw)9key-u|fKRyn`fZy0JSYEgPHx^!2HL`rSk6h06> z>MZ@(NbQ>uH?<1g*2M;<<8B3_ttZZ+b{2< z5?8gfSxsq&!pfOu&D|3xwVdO;+f=`(e>3^<(tUf_KJl-Lu*z+scU1IpCX2lP;4*+* zHpXXH;)i09oJ8HZ@r~~;CNJ|;{k(A?t6+%Mo@TbaE?DybeO}`+onU+5_){CJr~1_K zrgYx|JUEiO4h2=2QHaGyK8}wQ+WJJ$?P8f9^p$KLzp)tp_9yNN`}$Njm>3xNPjT;_ zY7$&t9_WHg%RqVXWI_sLuguXxeOT6!D|6K~R@Zj9p0t$pxIci|I z))7C0ceL=%yCJkk$20OQ&(8lc4>^+K4K~_%Y>Y{amX7wG z&d$sG-Z{Ka4DS^d#BZgxZbghwN1hBJk%SNZi6;GZ5Bnv*s)c~{v~&<_m%<2j=`Ahvfxa8QvUho!3Km>b$+2MQW;?!MGeo=uQ9G9oD9l z%4a|@J?Fnqk9~63OY3q8v3T*#q2cF_#M){#jH0tMFSDB=S2YGIwhhwIt+`cK|iX!F%2i;9=N=ug%CBZqGP zUhw&AYAabx518HBN0$T;b<{|f@7xRn!!Y>WW|4kVIg6|7whcLD!=eHAqte*dJ4;Ki zk*=TyG#z>^^x}rukqzZh=D!|)3((tHv+id_&(>$c;R|a`;cH_QWax)6{U~rEkeOFZ$`e)|$c?4rQMCCUlt=#nk{G>Eq=_cxe7d#CkZ0z#>Lc7gA{}~(0(t-Kboli(eB`zF1=~zbnY!r684+r9J}VD7dI=wyI`!};1@c;+ z(^W+4B**8(Xop`cj)!V~9}YwojoPkDPZ=LB$9k3VXy^?d-`Q1aT=ugPzn~<`lhWlu zf{+l3NvB0Tu9(^+5B=S#;=FDvF)tJN`<+(%Gb8Zd)da1ZUzHb+AhHx|JR$Zv_ImyAeHsA7)WJ70(_*71Y2Zst6l{BG?A4DQBiMQz( z1oE%#yaPYBCRih5B|PkoNAB)7ww6+gb#z`SF&pXJiM+s>Qoc7?>Mb(cqfRlhQff zNb}9oRSWXxXH**3-aGF2%W`@ktW|1Sx7vMje+`S66ZNzoq#*9uU8Q!M;TxR3(JOFR z95pAm+}niSS1-*^n37R)rD}WZkV>0>4<$Y(5JZKZtn*Sz;%J)>X9I__P}lI&AmroA zOyj)8FU2y5g#*%_Lv2e>=NsR8Z~yJ2l8ibQ=j0rJdLvWgLp&I=QR^~>SMIN6d%`~x zL_c`C>nNM|=D3VH0lu-h;uY!e`?6cYW}fjvMSn-aBy3+FQoXpJ%&eqZ_t`GHI>t#w zq=tbZi!`}J|7N0Xbo}+N;03yuGpJ_ig!ixZGLv+-Kg_AscrDw+f8_UETPc~IGL3nD ziy-uAF{|&LPv7N8nT3b?CRHi+Dx|(+ewsWL=D|e2tI_|Bu9yCvVL%>tDR#bFJ7LuP z%}IqMdb$6vn;kf4w_}o*;T^YmZMn;@2}695XU@Z4{qj@ev(8WE9#<4FT`6@}lkXkO zTpg-ZL4k=-D@Ix;6kZC$-ndAUxRn^TnYBX@M)Rbkxk*GTf(qSXQJ1NRGB>5R*>F3h z#@ZynliEo3pMFlYve>zWMAY=LGOsWX_ay}f`xgY{@J&^U&+lxrQ zna{keB@@ii7~20LZM>@fvbl**OXDA!H!$*}6{lX_4>>=$Cia>d5Z7p zL1Jgt141zat;Cu$3p#N3x&8{)C?hjXM;5Eq73V40FEtiM#Cl`JN@$P5Sv7dK`tNz1 zNS|}MZrMl0a%ra6{eujVlY(=Wl#b^fSucQb!aE$v~D+;W=cUM)& z^v?Hd3z1LK(Anbn@glq~?m7y>gmH%Hq;HDh3&hbG;rr=_& z_A9Q%<)oBZscE;~_4eGmP&vd9*{N!K6I6PGr1w%ZsUtfvNIJQ?59S4;mas{&)L(_Wt+T|`9Hl1+qV{Tb!@EvH7kzhrfvTmGmHm zGt5tQwtP{`Tb+v}s9ik7f|jruiu%1b0_l66kT&);Tt{%v5-+r&rRnLZz(kk=7YjS4 zpBz=|kr^?Hxz#ycIck|$Ccz$H<3}bvaCL_;(VAtRWvJnq(NNZ(E8)Qx@VSbcShXG99uVVdiC0-nt*-*<=}S$IT|5^m|} zN-6Q|4c)ivoN;l98M#|&%Tntv9R6OL&lJ-`ODv{%KVVN8?vR^EVSF@#!orBX+lY#h z^z<1o?VO)ahk493?~6_5TyVL%J-inBklwtrG0?X0(!!$8%wGDQq1oKdyBWCw`_bT9 z@Z&En@7(9(vUl%3p7S3gK145<&tKL&sXH*sM!;Qq8aktSE!tSgktY@PNuhY1o1`DK z{N80{9_H*szzKCH@+FuU={aoCTK0QgyOGAHg45|)HE$jha3n)Wk9i(Xd(z)`buwy! z?(TR>?U6|%dL*2z^@6_txjg9yyLEx}R6_6B5!LH&{v`jsX>ZMTE#P;OSyNNksQ=ke zu*B`Iu7<3GsKfU<&TNihm&V?SNF1jgGsX?{-sl~uh>y6WQ%zoO>*V|9GaHembUKiud8U=lIR*iqAH8zZ;q7AVaha=l#t^FtTG$6p4VAoHhWA9FAn?w0?S=!c z;=|K2a)KmllBpAwdHFqvRjc53FsRBa-CfO`8yMXRYEK#|Pc1K7OqrJujN1;J&p%t7 zXt#E6>kXrg-+6W4 z{iVrGTWAsT_qS%ELrqVy*=d>@pQc}7Ub)%(o;#cmPT=tcG=c()WM`WizCLh(fg_3& z0#WQPvLu1b{fXs!N{9aXPRUqm@MXvXU615u72QCz#A!Fb3yW2X@TsFIXQQ~<0|^V0 zlrM7(FxBq zH%|mpglNwBdbxkaYr+P9u2)7nF(huzH$SC$@_1PVb~pm@ID%55Bidb2cXFbivalT^ zHk(#jpXy}inkw92?J*nIMs#t#JBe8b4mGP&&#Doju}lJB75n++yv}$M4-o@sb7&paDjg;Qpdvuo?f{bzpOCMmPdC-#3{C zF5R*8=Ffyj?_uLqU_{dJ@YSkE0{+hWgqT04*%7~Ez%D_Q5N*io`hW+#g&dWBG^5d{ zO;3x0xRG($(71O*4{v+x>8!ZjB*ha-cv^QD(a}D5z26SvS;Y&dT{HS};z>A&Uj_q&Wvab!{e(RR}ZpfXKdtHHq4XL(I`JS#BdJIykT&#t9Ej3bE}CsO1gSHEe^quE6rAKgb|fC`&o|;er9Eq( zZf@jJ(EIq$=g${>uI6ib8yEk+bnjC}ga{&ZR7em>fVFMpzR+_BHY9N)-7H9BbGS#> z#;TW!{E_|j`JN{9*&TPiy9+DM>+rae1yqDe;91i-CKxU_ipj-5m}_V%)RyVQj2I-1 zVA|8{{+s8c`Xw{)I*KN3ef5%ywN>xKz3Ru?Ro-v_l&ZoRz+lJL43{(=n8LB1$o9a& zv<13HEMsrRqbQPhdWv4!)(qk!C6Tx!Q`*;y_giIh-T3QcMRP#f{{cxUTUFUj< zHiyBWVTuIP$rRHpEbpsuvn5+RSy5nh=ZzSufw5o_T0CTaMN zkHjOGX}B6PO%Ir#mux21%V=J~ulXtfYJ`p(o>460rz1}l)?PX(VcC5AN$RX2-)(L5 zbW3L`X!_=?@gyWpn43k{BKbm}HfMgaMsXv*-N?H$Mw%#C2TpNe3zvZvI%5j&YSVwY`2p#o_Xzkg&t|!(x+Qg?V01 zW&(k@vETgEDoG}EDKFCLa+^mJTRi&ErdNrnvLr0PKDA<$^@}HxCA`XBuMo${PJM4N zlHZ9mlQhwYS0m<;tbCOx;(=0i(}hBz!N{|JK9=Z8(Oxs=2^98iwT7xNWDBoykU!By z_Ko3&W|pCh+?eNT>yn}6!&keMiCe1tWHCoGAJu%xy0=7V26K$UDpKyF({A7qszrs2 zZaZcq2RHLf{Bk^3AUOIg@0lq-5usy|FnV#B>&Z&5gC1{cIcxu7e?NgrBoVnM4N)1xrlJ)$Loc~I~h^3X!JmeYI zrg|WlA0OcSn^yVViz<0%=-pxcC#B}>__((v^7?@D%9iy z0UVI7b6R;2AmZ1QIGhdNS^n(!_+cVkfy<2$)9;89pGCuKzb`Q0h2Cs!x)dHv1&7V_ z%b5OqDDx{X;yqL+!g29`6Q&I9@he*QVl!)uI=n!H#6pbUtGGym)HKnYS9p9XLZ%cq zcbullW%={wt#~CguOpuZ>pG-V#cet66Ct?#o~PwYg=7^A=tk(9O2F?(5SPi8O}+onJrNlI)hcaJ`5{@1=L>c(8^I{)|kLqp@ z`=AWG>&US*#A+r5E22os2pf$N7j5o?o*?}6Dp};8U6LUm6o#M8kO7_fM~wx^dC_Qd zNg9cMQ&x_LO4l@OKgO_z5&sCJMXnH)Zvwc#8kUMN4?N5f(%XWz06 zj69mvg3zx!=ocMsMxMyp{KQ9uB^s=8F5M*=p|E6CT;$?%9^D|nH=y~H z>m-`}Hb_Cqz{4ZdYW^=Z8V^-vrx2fhr)cW9F`>(9hg@g+QNVjkJ1TrcRLJeec{V1$ zQI8U+xJt?C8l4@W(1}Zm;sq%Xd!8PRE7AUaoqi`Z&|&-Fp3>zg&6hJGo+iH&p}_mC z_jPK%6oD}cy%hiLe)b>r9YR$(Ob}}mo{wM@&9>2R+a?( z^#Atj|M|OoMNsH)hIR+zm705=07Eq`!zkzn0_vnRKmXRq1rU(ftFZm{+9wRKDJ6Hx zXMrgnvvUe?!n=SR!$cb!mzdEFhT(J>AgTmm18No5i7JgGVmdS?C^S?_Kd`#23?=EA zUuX_k7iecvDfkKv!idka=NE^*eR~fW#2^Lpk>TN6)VA*K8{gG`)VLBNQ$v11^TZo-V&Y<{{>KCXqFVW$Ps^dzudAGkRs41!^zn>#WxJlT8wf5sr5ZHEXRP> z0_7S|e*qA=B`8cnpSkexaB3u=tfYN+m)>d(%EX=>@927Y?E|_*?iBFmL?~!FrE=RK zAVAhn6|i8?ekHx=J1BZ)@~+@eZJ)drx4eaQ03YlRaHch4iAO6209H@>&QJ3K6am|h z_kOrHzU3_hNwDGk+rm2f)V3}zsVOPn0>S|JqLV6qo0nRT8gv`=^z;BxlZ&YZC=@i2 zf$mo-a5>!G+3t|;8Zk5j%77+xo%-V9;?y)WU4*TGT{Ee6QemzHybWLqSp)rl#~Zu2 zx`LQkA4qjJ9E4=&_sRY%;zLC-%V;vc%+CM$^CwP0!9QbSVgiuFfHS;JozbVOu8y&g zf|a6p8wVRrG?hKs9RhUK;91vy0HRL;+oxwY2&fi-Qg;Y}77QpS#xyqkop4@@fQ}f1 zC=+u!1QNwcO`5cU0Vo(C?>b_5+T#FDADRa`NJ}890D2So_4U${lF50vj$yGXW+q+IhJPc*7O+;Ig1#~w^h~CGSFa`K5tGsH z!dSplo~3yKmx|1`)dQvydIQzg)wzw80n`daGG(AC4SUQI;F0Dp!t8o_ct9H%5P%W~ zfvh*zaB_8Y_a+^8}#G2yy} zQDLDw43bg2tf*)Wq-Nm8a~$hn7T37Gf%M1s?_MzRu)c5-7qEghH*5X&OSDl9XQzHy zx5PbuHUSD3P(YyBWWq|J4NX_blwc`B>mA&B1+X$KSv~6b^z@sjfaY&*X;Fkmg)n7+ z9tFf39u|RO=it~$9|3st*bC?h?F=n#LGk48pQ&$iThL|a+i`qT8T5VnYbcFI_k#v! z(jNf)*%O}w`4HWqT@V!;Lq{@*MY;YXJx8$M3=MWcQH?>|gY{oLj8{sYBLYh6rC}8IYFyqj0I9Y`)6&u`o@}Yq zJO$Ktd|KMn>m-mjdAzfrv+xF>?)}0ifclEIfPr##cJ>2k=)y%9C{V@guHYwX1-V7X z^vp&ju2mN&E=vUI!e;Q?B-NTf9LtFs~iIKQnol+BO> zVM1f$?*JdK@z=m$t~V)zs#31w5wx!p%-G%OlY8fw{Bcvrj`E)@Xpw=2B)44Pb|;Up zPT4Fvd1np~*(Dg?v?}5>`wMzV(H?bCRz+s7?6~S7<&<_(;7L+cYKfm?&uN!w20OmEHX9H*(fqETcIZ|jStRp2Zjze!=Yk?j- zH-~mX+@#|>sJDU*zzILCyf2MH2|!D*Umr1vvi_1Pw?PxqS_qw(k^=DM`yu=>SKp?k z-J287AwYX>Os6HKQAT`eZx83EK0Db6BqG57QUByR>bgaPHsfwvX&^w-1uX%OtqMAW zCLi2npzRW@)J$+n&}Mi26Ct9y36!hk0F;YlmLBWv1t5FCwHEn~!-W)gPRdTOYU8wM z$_GBzQ8+@v^CJLGrvx|8%rqV*Lbq`b3?_3M?d|8Mrm8B~*swqC2lEF0@@}0c->Y_O zE1kXzp~~##RaG$iE(_O$qqxC7>cV;gMh{pSfCa}?^y7uDSmL&OV`Jm1S77(OaA@)& zVW|h27)*$kGFap6j~@>KM9&qY4zgfR71{ok;v|c&qi&{(D-2Z`lvRTy99b(U8H1M8 z+ZqDEy{)XS(z%1rHMla$Oiw={jkGGivoZ%ral20)VDLeP9z10vJW@o2Pl=8g9}3nm zNFI)#{s9m=NXrClOv@zUl&HT?Oqg5|zkquE)Dnak?dc=5Z6lNgf!qOvf;I+V)zp-g zVH6L}VL?^*!8dSeJ3Bj$$#&UFz)pGR=nK$J8=*hYM+|y8=Q+Y=NJOEpwLs7hdY#s8 zZVjM(Nm+di;O)1H?{Oab<3}HDZRAJM@87?}NF?MfgEDZ&$7kDz#{h^G^urmBgoMSV zr7>wFd^X5i@eILI3Ph5Ti3kY9)Ez@BByf8>-t}MtZ86ZlGTRYn5IN-yjE(nUN-OT& z;KQ{Q`?d)8xdRKT9H?Np5w5FCW~z=OMu1iL^5x5W<5EH6m+&4y6k2#FB#yFq-hFeH z6nHVwhY4UAe@skZpFWN8(ZGx~1~!5XgMkOHYZ)5BhEp|4lYErzH~~QO*4EaEi6ijh zWTd2UClKL0XxW4xiHM2yskx|0;m<%O>W+~Scl9!k%fQ3Klbi=Wpl1;V5t@wIgdc;V zu&a}krg=np`4))o&I`m%2mEslmd99IE8PaEutQLqv;Cu$oRlPzAp#(a`OBaky6r6u zT(#u9!zTe?k@W3=pOpaGqD%I+*4DrS;gmxHu$9}w3$Uo2*FeDxb{Wu35X7wz80im$ zfes^Yj5_Fb_j}9jflUNOvoGA1Pq46NK&JBV=l$s)(EV(98Umet5E;w>MJ$LsD&G16 z+X2Ul`I_6%knSU?8h()p;N>vLnCtNOS;o|b^`Q{rv~c#AnXP(?#`Z` zYv5p^f8yLe4(D40(Ft&xzJyCaXa#05`N#vvNcTYnIK&xRINrV;qn(fmpV2;7F2-n6 zxFv-%Gq^Vl=z=F51>Hmcqup1sN9rrf5Xk|nB=LPWG0T&FK>4~i94;(1N6JA3A#KCq+U2EME(lbR6fO0J$z}A>%~u?2ue%2y{z1qc79bI{_2I*0vh>FjFV$ zj~KAH4v^W|A?MHNUgLN&AdStXr5kU?^5%v`dP0JjZP)9NkPv7w8mml#VpU%x`Y-2( zbNEcD_JC9JZ&#Pq=ySOLf(H^LXom@2t4XU0YV=4|@@;>A8NV#(Oa1sU>>i|X;n8MAEa>4isoGToo;lWo1BzWpZyY!flu}*SiUKh_?_FOZ58%Qu?cvgRq6wFnwrn; zrVqhgf%(nJ&i-3A{8kI3@@NY}%Z7Pki?WJ2x>=+CBgQ~-zC3&lv4!i3zXnrap3!13 zN~;4Pwz`Yw_^d{4tp2W+Ho8IoVQ>^V{Oi-7Q`+ZVq68GJZ-lN%Lj!D%igPG>WzsLu zno#6#4ICca;c%FkICh{5{8-@rtj#r#T%)`@xIBLqrUnJBH)5u!6N}SFD$o(<=}l5*Ng;GE8CSl>r`qB<&AXwf*4(k^9mYu_6I5jzM??r3g zj!M|TM^v}U*AtQL|2kT$?1PB?$FPOh`otcbV{q4eZJwH95*qZdWG#QJ<9i|Xa>1pq z%&EUxyAGRlL*3);IK=-(84?MtdlOh=;+l9>`siQ3a9S*#V>TE$S;0aTO@0Zq4cY5FyCVk`fgbhCPCFk zC*Hkx@AJ-GShuFdi`lFF;e;q*V#4JJ0~|kH@P~rSqAO9+`)avKNv`JF%*`^1VLsi zCr8B;)(8(vLg+|{ucgtYs(7oJ!cw02Z<{Eki5vZOB&WvtW-9J_?DbIW1;SoJp24op zO^Oc~%;TA=YH{c)ZVl8pNcp%-)m1}Z2AF^7wNX{gk16fxx5Us8_cR^?`^MML55g`r zW#vd_8OdwcdO$OAaBv%R$6nBtqgI(rqZ4Fm5*U$osZu#fWO(3;7t=UFD zyYhypDO04+5=2&ob#9ncsjvJ64jVax=o$nY^cUDI@8Ti*p1CwRR+L)n>BU07W{A0~ z{t@No1WxbEok4k<&Vc~|c6LS6 z45z2|LBAwY!@;rbZF&4%yDOV9GbY#B*Z0ox2yzQf50W*~Ma_tsHW}ko38kSM zOlsb;LMQ^X1b|4n3bZ!RR)rG)bSz)t#^3V~3O1FN2E}fOPT@?nd`)BYImAgJ=bD<> zP-D$p)g|O`q8SHL6$r>ft62~P9j@cPV``cs1uid@SWHap(N5+cuBhmr3kwLy4LhxI z!62ojXu~seK0dcfg3eDQj#1B5DnFc^g+58B;TA%^#5~?BQc@}ZGF%`q@TrEKM|d85 zCHr0Em#06AIt}jK>#6+)EXqWiAcghoA}Y7RgQnIkjeh^WxUdlW9pOcXc5vv8c}+HJ z`0&dMkXYv78|NG$$h(B;U!qi~cY2E*PdO*RR_l zc`9z%*xS4RsL|nC@B?vNh=eLCE0f*^xv+wiQ`407xx)AFAp}W$8gl-toxMHWFQgzX zdR21j>Tnvr|Ea#rY0w3IU#|fzya6BcQxds0o*EaYB>B42z>~^p<T0E7ffn?$HxVr(8s44?LeCXC1bnk4=ov&aAC zg?r)nA*>|-%|8PUm!C@NP(G#r`}RM6{nz~TfB6J|9E0aaCL)g>-snGy%wRzA2>(w% zcramUyH47fqEdaX1Ssgt0P-TKJTq^jTYqcrqFTePKjbJ@e=M7A+)VD3t=S72E_liG zFK%$^6jHu(*(O9rn>R<7mFx_!-0?v9Zpaxeuwziqt;4M?f^+W%Hwjt^F+rZ^5tmKW zD%RdQG~q2Hknj#8Y6Nu2Tkix$@Iv*_oJFfeHf!p=2eF7$V%#56BZr0^Sslmjv=|T~ zpSMO=bm|ImMrZvwam2kUj*KhJ7C9eUNBbWaiz6Q_FcmoQH$;O}3?Z$hch;mu99%tm zY=pa-6$#Jo#EccY=t+zW3Vw+0mS!sTLD{88{pXMBhAR$s{Q1il;ExwE{nF=cpqP&v zZQQ&4#}_gEMd7giD~j)@UKnFyf+SeqKHNOJ!EfC}ddJ|fqH<0-?eIFk2I zFdku-EL#)nCpP)QBL;%pY&N_wBLN_TEnh^gh`#ApMhqbFndnW@T-a z75XIRjaSm6VK|&Hw+?$l+ln~gCWZ-G&&aQ87z#cPYt@8_2u{={y>SVi{(j`;Tsd^v zMe)ctLV?RUFEnt!YhugIK$q>9&WQK>FF4*+n@NufoRjxr^uGWxg*Y`60W78e)0d#< ze{%}@f6FTWhbjuL%JQF;6!j6%VBHFtR5k%c%eTt^Dt*Isf-=$-RMg31Joa z|CM_F|69pZ>6_g6>qg6m3&}l%#tB~&gpo7Z*VZp&M0L#ae6TMWm-d-jI3`QMhl1=? zJnmBG#1po!wrf5&&RAXeCtw+b_Bw6X^>n@^C18CRMlE)${Fn+R##8w%gP3i}IKS;# z{^KtRuX_w%5yAN}{;o27NWm+7GGH{aURIxauOOtJ-|sy$%dL#hYuSckk4@R7Jsv4FCm>crX z_br+oxr2hA!?F&);-ej!c{Pm|4H#E`F%**O+;G389f)si@&>B_b4(>w_9|poy_& zs$qo*0V4EffSbUyq#lD#^Rclpr^^&oncb(+DMS-SzO(O|otu+5i(^;TT(y{+jPK-T znyfGX;llRF>*t?MCZ8jaPPYY(hv<@Zdk1p&>;Hz+M<_p7>k72@_j@p$FvBnYcwu7w zQ{YTs^yzYd>tTP8!ZjZ?NfWA~^6%(_N=QjUbH7<)w-B)*5Kc8npfjXgog;# z3UIqpVNiGbA)2w?^Y`cpvBJyaFyqI}+T%5}=%w>W$@0*v5AXMnUER1-zxQjdJ>$Fi ztO+e$Q>N9j@^)qSlXEYdDJmTkl-chFZ1a@(lLRSzRp7jLzDn%kRYxS2Eh7-}rwc}D zv&kPF?x4{;<(f%*x%J`?d+cllGsIk-@~4NV+%D0FT8@>3!bGB9ySZTGd%HSgMq!>GIqI8iZZo{RfweW zPdNSFTe~o7$KJ)ms)Y|~uedDE0=V`!Be0&48@*A^_eTUD<^GQ ze%`AB#xG;T6GMO5Dl8$MP@}~Ct%aFa%vv4dyZ_?nUDb#6nUGF8sczHedX{fefUGd; zlAz9M+Gla=*Ms(_)PI^pe*ANpnro~h;F~NAQy?Vn7JeugOPcXk04dA$WAxc678XxZ;ETh;yG!DVxO+m`+Y53Paa9m)t!%T?wP{`)GnCTE-j%G!Hq zUW&Q>>l41~f2aJ&S^T|^i!=!yu3Rh@MDLDQm=+t#`nvNi`}k=Pg{X5p4umq`^)vr} z-x&hm+nni5rMP|3K7vQs$S!s&4j*;b>QrlFAiw(f=iuMu7md@$e%sB~@R7yYdWYW% zO@;)X5yBfhxM=+T21_%Am8S1>ta-Z^MnIb{)B-=6n5X zZrvz7k@(egyT=o8>(`a`|7%+pK5w6@QQ&#*R{4^HKmJ`8zFYh7ll=cXA46O>&X98n z`EtAW+W+J=A|GP*?CBG*;$T#f-DxfF9oa z|8C~ClV48uZ#{K*!R6HXS|5*;lt&r_NGy}F`uAd^O4Vh(ZM|{z-{X!yTI+Ra!DU{? zFV<_GBrCKpve)OiAG7b*_rL73>sF;6+o=5?IFdHAnos+E!>hd25;M0xwsWmwYCf}s z(YbuV?))EbfZ6+c-u<YaU3|i;I#(ZdG`eu%)f;7XRUyx; z#l5Ykx=a7tRJ@4Z<@+{w??PBHdht&OtrJT%(bTRSMZ(1p4&s`S8Wp=H0mlTIXu*kmO08KKV7^Mn6w<6RKN0jF1>Yp!N*f;Ze8k|uxQi7Y_ruDG>m|Yfu3ev zva0-RGk+1AxAWxU)g{Ty8@Y5uKB}fhW}9ap)tGd@Y}S^%;$N?fTBRogn>oN0QL860 z9=z~l_e8s2+g9|{ypZ~4ow`m``MOPIYmjiqo)cfL@~)qp{kma}yxs4+N2hyOOW1bJ zzhhT)_L=AFEg$4~xnXTNtW7LX`%U0TCaxtn=k?a z2uQ=T`98n(zV9Eu=eM5qewOP4&dh!0zR%fb?`vPzb$qUIU-1ed4Ivg5))i%?JDONn z*tl3&xNq<;!7IP$%)GF$(gc<7$Z9{E+{pAayxMu(8D1+cHp8SQds~~72%mgwvn4tocOZu-AAzP|Mu?4bd|O2eklP7a=GYbPZpYN>5aba!)ba;|MJ zbpA2H>y|{qrB+r}yR^=3ZpgzoNrOFoeXNS`N`mB~mZGBKQB7Z8-~7VDTmVUe3JUiU zb{KYQ@816YHGEv5kG`RDW`>5Z8XKikdkf;=IW=%(TyW&?-6MQVwtaZwUGn8pP~hOQ zR<#zqG=>xRrj?YGRHh2?^y$+*pTD0ziIyhgByG zG5<=b2*cnPd?xxAcs#gGj1=hn{QNk9i8BZ~AWl#*}>F=^=&w4mVC z7Q=hEIIHSEU26INnp`6cWBsDtd4`v(fufZsqjWS-cA6r?nB$qU^Q?YoNTc{o zBni&bblRJd`YefDcX;g%~8MNZDcv1}-dH;5GDgEco2m`&X zh1fL}SeZ7d_?b`4g=E=-PWWXcV!f192+i>W-!EL!jN~)%2;E3rJG*u1^OK$K#GCV- z_0P7Mg@lB7dEad|^T4EMl1Jj;*iczcaj;?xt71Yl*jc4JXJ^kR$_;e9WQT``@pH$< z#>6I_va+(Sj8R`g3t}T*Fi5jusy3uq%+r+ouTV$_?IsEeB6t5a_x2KTewb<{rKaW} zI_)2c*i}|kPa_eRZ2NLEd zkxlJmMa9ncwqA{+(cQb3zc)S^%yMcxt^V}srT?GK7Ys$JX$dc1D%D>_>9Oyl@x$a? z5VdHp8?)R`DOY|g#F$1zM3`25CnhE)qT)h{d%P(vEv={!!2Y?|ojAW0HT~I>C6vdw zUP;()n)*@#C93Q5#PIL~V|p!}-;WBg`7X7d9PZ3Ua7akJB9?#nkSe49?Cf}}WQ*>aed7)Z-{TZ97m+~74Nft<2AlquumNw9W8qOenron@n^SgmC1%6;v0{5 zS4Tg4Zk5Wp>eL=E2IiWX#r@P#A(5|foG#t-dmeuJcc~ZV+9F!Saf;m^xmr25{Y)cw zi3DM8+dFK1iM*|{s;b~$T-NG63#^e=w8zFHdHL3lANh~?lEP(@GBf+lKfKP%Yi(^E zA0Kyhb-mRfKZ1wH_wX=8mR?{|U{g;{{nakou>KjDMZMdq=33yZSJ$<)Mk6Bdk7|zg zx3=czN2=^}85pul9eL4cQn8;{n8Ki-=*D8V73-KI>R)|nA$*&&jpr|<&sLU~pIBPv zzk3(3^Gofh#@xcMCFG`*}wk+(*qpj+gN2_-JcJ zMl>ZQ8*D}kIgEXX&|Q+qMWHEc0lwJlw}VORoaZhzMG1$NQA;8ZM*m5TZ5Ih2=#o zM>zWY5(Q9KP4R1xG%G&^x^5u^)GeukHY)9hR@pkyUBln_&7%bB z@E?~yPLvR#WF19ooDT6ja_A&aDNpEEmv$tEEaD()U%uAS8Ib0ek@s-?GV+UvRRrC2 zc9pyP_IX!-uiVXR)apEHo!6B-%oxw_(!aQw@jSeHy_!@0zK4Pu#WjWwr(O|c(oN0^ zj@27&Pn58Vx?QspG;qHuMPlLT6j(ZZARpmUqMw#A?p9k@@bU8MR*9oAjjK*hrL%a> zA6Hs#rgrwQ@b6(WJMwZ+5Pym#Q@LQ(WJD6(qc&IT(pMgf50|XFSeh7hC|OzJGJMn6 z67D`aa#vip6Kd0+<;)%ox01~@&EZuU4VBP1th8Hf(jW+=6;M$1KDBf(Qwq$@;x=uO zXKDPsQbs;ueh+Ik-nw!XmzDJj$3seLL<>%pyj+aj20r`tg zqAOP%a@ge9uVOG5a`NkRbn8o;`DJgJBpB+L@NoVn;UhYtQaTqNq!q8LK&4+9YV^qT}G1xPY?d=jaW%@ZA@y6Ui}3R& z2$EUq4ICUiTNN*5koLb$NqN_-Y00Ho@Dl0^TAH1;IMs3GN#-HfS~+}=^1nFs63)A3 zL)Mfk@IaxV8cK2Ode+v~zP=K*@@wdi)C>&LPX?}&PrgRu6A%PB3I*o=)wQy;WPL2I z%&Vx_+11s>Mtz6%D&fNXyo99WsboA zCag;+xEy}`H_+`rcus?YQ0$K^`Z~^ke;qmy3-Mn=UyOo{Wc;6h3<&~`!@(ntj)`%| z+1dJ0^G>ViKJ4|k?Vh^tjDN4K>B9o9mt~8&m%(_q% zEFjh3vUE>Q?vkInnVFfKoZQ2QDN3x~JHPt>{r+*hw;oO!`TV)ElG3w(8`SQLkm@`) zr>L)9y-H2(wYR3T>a^MtMkIZ@t7U5Xb8WnA^(GfLH^7|>5SIZTRwo@z6L?a*AnkX= zN{SyG5|YYokdlzV?4K**G}G4Je);m{-!l#3A|kppsQcMcbYx`P)1I>qGxfDOIf0V_ zt0M(QpFN&CLAHjBzOnJW!p*{|6?4UPdBEt4?_p~=$&FSGW8><`-&%n=`UZt|Gwezd-7?mVf1#r*G^AQPiaFzQJGS?c;66)se9upl+D%a7`0Tr4#`~EA@2Wo0DVlVAy>fBY- z)k&BHeGi;J28@^Lz~F0ZYtRg!EQrG^+}9^cO}o0gSHHev$mrjks;x*)rp)N4mw5IE zRsb7=2r`3W>h0~F|F)>82+FDE z5huqdPjo4f_QF5L$MhYNbU4Qk>&zr|9?asGH!OWJGlt>1g)oY>* zjf~V(Rf~^r2b}pH;!gJre>FesU?n&Ypqjz=PfeTbfa2{xAkhVU-Cno;o zEV>w=YSZ_U@95|#TgorNStXo=p#!B$X>8df^A+NquY*?DK8K4vdV6)WXth%{T~JwG zo<&;Pgq8gF_X<3w$|r;LN7w+eU3Jh98VW{6e*ZSU?`B@(HO}|X6GfsH6kpH}zwmT( zt9<`HCw$t)#bqE_?k2Z(X2Oam_@I4xH&tc zquO69-nGSRZ3@ES=Hf!78q_$_$*pw6&;k^M6|yynJV2;tNz6Hm0+dj{f1j$Rq%?RA z-q+XH-;G-jzD%U8qeK0)NG(IyESlHk3m5tGFXv}Ip+i4voC@4>)U%~xNGCsgI_Z#9 zXbL=k8V&K8ot>RT>;|d6du*26bBYi(JAG3r1Yh%NIe^>{7^#}e4aR5 zOIw?jSl-r_GrYBAEc=V=GI4n8;dUp(s`zq$#{Q_fbbKRB|A6@i$dQWDrn@V{I?WpT z`nHaaj!sU4O+K(&799(M%sQf})6>&;zcwe|(uHQ_@Mkm5QP_SHa} z`1<-PD0Eai{Mg;yg~q9^KOgF33b%o<-Gn{l$p?b%0J%b-`48dC0th~wr?~(7$MW)W zIG=I-Gd}lnNX=%^H&tK89q9S{`^#gH@ud3GHBJms?KF@*Aw7{(P{4lbF#q7|=U3oF zeet|SMV-q#7Ut%VpUJ4GCO$q^fsOH(9ukp+ob}pRiT3g|G*)~ad5SNjcJ&q`v9Yn; zL^^tU2u+JAkOTw-larI-#B`;*qd7T@P}tYMzS9c23PZR&z{3lN;sCF~Q)+fL`W}9S z6fl{+w?7+@nAzUm4%LZm+QDAc|27~u&ObEdhFk-pKSlX>mbpdX?BZ=htHNak%n%ecpjDvifeJ!;^N{}Ab|!ca4w-Nb>R(TV`B+=5~241*k8YXozsqm zvb+ynC44@nDex0eQ7~Ky2Ng8iHh`Dq<>d>^nj)Vpnwr+-SY&5^MyhUzq$JfyMYXAP z4B0G>R+-dtuYBul|I`o?R3bRo)7x7%673CFHyZ^924Z!KsM`kUB!4NqVX;yPpN;ut zP&2W3PdFQkAW)VKZC&1-X+Fc!?q%M9#Ym03l@)LKgMgEvY3RMegM$6<(RotoP7VG3 z&qDY$I4Gq(sUPVW%q=e7xq(JtBlp;XWHfBzDy!H$f9pDuOf3uZBcc<&Ioa#Hy$hxO z(^o9{hVOUbadpgwDv{`Wkvna}zU%kI|F(_t1i{u8!Jlttrfv%~6W5u%hl`6VLxGJR z(}ZG8)>y#tOEP_mJ)zLPf`MmK<=f<>oHSjNhQ(;t#Kc1h?a3jt*GJs&jXW#g!nbcd zlc0a8iWO1`1m0DV82?Rvjaam)DEYkXx7)72WX5q(r4OKq3kjV_H$1c@<#b?fqqE}- zV*wWB6>i6sPpFzyA`;p3zpkl4^K@iCHF1!d@r;dy@wka4)QXvNnm8m_t=GsI%$Rzc zN5v4v)I7L0lgKc@mk1nDT>YUQmxUK*=t^Z8$J${{w8R=TAH)|)U?s~=h71Y{ z+AZT+`KD;2TwHnH+}DQ;R)Nk^&o6nV^UWfwMxG({>gAkGPEjOMH@AvS*G$1+tU;A; z3wt1hyt(ORMWOv%o-NUI+OO?r=tEgEGbLr^2OGJHd;E_=HYEZ->AF8SYopS^_aD!aQNbM7hgkMA}nXl4m1n?FhE-EsrI zvv}w)A&%s0v2>>^LZ3alH=AP~;-XgGx-Pt9eT@#2+QXZ&t_=;6a>}Jvq+4@qaBK4N z_Lj>`kw!Hs*yapVYZL(|<$b;6OUe|k3PHz*9tLDI6G|gvov#pAUSJW4@b*Bztkc;4 z`0tj;nimvIxvG?#s1;(I-Kz0kq^L9PA|=8Z)#QMM;;iKyTk!UzWqgX6Y69k(AY_Ne zZHWG0$OQ+-Pl^25;Fb8tNMGyPpdcxG1A-#)C$$6hqSk-q_itYjQ6ivnjiW`aX#KFI zxmPE`9H--Kjh~=V8 zHuf&Jds;e*!v@3Mvd3cy9S{rH?(rNFaTlq6a}Bj}n8a9D%7s1|X;1qQV68$FIz(6V zeI(nqrnO4}W9Ic3?KVe^jqD-9@ncFzw;CuT#5hfQ$m3_yiazI8nu_73W{cA;i|uv5 zqsa4p`Skc9O+TsJDe_>mBc)O0N%^#UhGgsOBB8;qJ9%lD#%0zYb}uW^onmS>$BY%< z!81Gcf1ahKQmVy<3nsEh5#luIwX_DCTLRv-zkm88d{ZJLKVV`%e^^q|y5-_b-jpMO z9xLeltt4#{t=(qkEGRf?R@U%GUq(1!bv~N3PSl$J6eZM0)4TO|;>qx-nd_^VNe_Fg zK+=z+c1!kS9%Y%HRjC8p`lhXRxkaUXqb-}Ci5relFU|A$M_XdW7(bRpaa!p;y;79E zk9uO2_pZ?9_3%c^vJa!~#*k`u-MnLXytL<24`JIfj2>o9e?Y-OQuWM^fd`o$O?s4D z!O{fDghXB@N4eS!$@Gj$?XPCn)#v4MAD-F~hSYkvuJxI+aquI3rLx83q2%pdYE?_6 zMwR$Z*9p)e6#PoXfp5%Qli;iGZL+#9q(bM%solO*%oi*1ZFx4uOhtV#y=7?jegE(C zy&i1j(4d9@YCu#yztcn5%~KKo#?Z#`^>>%;DGhni8jtJlsz+-_I8+x~n1l|+@P^dR z3FGi-<{};{k;qS9tB)4V-0m^y%HNGRWuLb6bbA>)mV+RP4eD;D1T z^WbfuiZt0qUL{SDk?_QTBLEvwo-!C`CR_jf<1DS@9uXRv#!f0w!?ut*#=K3lNK?Xxyz0O4PS=asOs3Z=m0|{`2SL$R(EK_ROPU zFRe~{B09-);p$cc&v}=zN$c&EKiY&L6%P#jgw*i-Mj-$bBzMGj74Y3{tu(Yys#RwJ z9}TRm*t8vQ2L?%D*A=RG8`B6r&M%?N>wCXaTePp#5zkvs1qG`}(Urn3>w)R9@u1}L zi#Y>LrCt#Q;B#L4ZHe=olD(fi~KuEZBU{AyG<>Y2qLYGeMxkwvXM_)H{Fq}#@K z|5t}}R9dhQO);L3fs|>^;FGv2do1H}vB}k{gneyuUnvILYTqUqbuJDqfobyN*m2#_ zdVb5&`X`K-G{=jyJqg)H$zyF4CNcefNqqn9At=Ba6-zjXuGrzB)o>=JK#67`N6k)m zj<_v-McZ_snt&XokC&9AEsjl-!WDlL#mvG|k_ccTeA4iRmpL@EIr_a6$Xy9@L!Cz@ z`BHR(@%%P5bP-o!Ue^s9DUL(<4J2-S|hvJGiZbeZe^VPPkkS-BP>d=S_l(%DP*)Go-@4?SMnyO zjIr5`;2^&A=$kP#y8sE2{F5P%XnzlJ$TMeU>Sv}01TvSJ{+u`809x(H zU9IX9;dK-9IIJM;z+4*otNb%ZO@2I;1X%J8CwOm5>zMm}m7ZpGt?1#91AP4xNJ`UM z^APKrIiTO&VJg;0LRKu~I6E30_mp-*f~8hC?aS#$0qi3R_%J&UPpp)2$V*kCC1)iQ z^TrRz(TH6>92ojaQd(NKbBS`2va!P6^W&a4N)ppztqA3*us9;#`D+cepnSU7>QRPj0KM7j(Ah{XRLwp;zo^|!EF zG`+qi;_>KHc=pU(@+xN^49rrusT1)iVN%tE<%4 zuHiK^2g+iA)-5Fz6AFb*1G^}f16m?|ka(e;2PIj^mM0&V5slVhB$W}zLU(2J3kZOU z04y^I33PymLc?QXV)F7VKp?lYv;;Q-78aU42V(LS^8*bhENIF8Ulrj0PB!>I2@D$6 zI@;Qy;o&!L+<4&Q2n4g=@xQ``GHB!e{P{CBrk&>f&}pU~nz_T}>;Nbg4nL~ZUZR^P zCME_39D!s4kyHbX0v3u)4w$aj|31~$GKB)E^EK3SZ*y8aRKwZ%y{cpx$eW=W_V#Z^ zn*RW+3;MBXG&J$Q;lKI$*X8B?bIxGeSl{;qE^IJc+Qh?DNkzrri?7$+yI~)jop)Cr z5D`TIXZFy&2^gjn9;2hR@mmEUX22`_hySr11ipao`gLIX)@%G$W*R;Ng}2e9QJy8` zSNFI##iBEo1BC>B;4XfH?;*J_h8KuaB6oLp1_p+XGY~BHR!0?mgDS$aZ_I@r9v)It zQ_u4zPfblxaqDYeZUv?gCP5Df#r>i~U|etMzLfyF)dQWBoP2t^KTAR{LHhg-#Hz){ z{Ctb(FCZdegss`ecWbQgj2nO|=LGe+$EVhH`M#qgPY||+q4>p|!Jvo0FO?Frb8yu9 zpB@2!0L|{It_g6V9iKeV65hKjAa(#Jt0{v5{su!T=JU_KO7X2h&0DXXUyH912n3R) zr>(86wRK@AR~|tABI??;RM6Jr)q!$VYkWdML9rHfjmL0hC>Q69>&lfFY5}XO*RE;( z7mr>Jyb>d$jEPAAaCYRIXc3XG-@j8^sJ^}6%>*t72dv&c>!NZ2D5rhFngmMJ3i6 zC^CCtpR<$0v}_^QU#ijDb?)mc=tl+yFRtJI3qc5U+)D{BemQvjz*1%)LjE^L3%`s> z{{&tU!~|H5`)X>Z$6JkG%MFV1@)qXiWW!~F!=G<^-r&7Qh>!p6)6=|A)A*1OdALn@ z7T@2KLP0V^U;KPvmVo_MB4`ErAKd}65%4;C_wNtDv+;F6=obV`1BX02E6u^NIw*a< zyS?3v8r5wU^VmRT^#A+&R}8ovAp0M_GcGSFQFcN?@W=AOyzc{fKbR%?*}Odx8wa6H z)C$6Youi|a$Hq5^u7uMN#FhE&XX_K?z=k>M>rVz^`}PfViYJdBH~8%Hu(5Ttw&E~Vx-9j)e2E%CJS4*Dc=qRK^W5AVu*%c$L_n+R zaZQ*6oEB)Hk@OPaddSmnl~+-TnmZz5_B!u9PQIqT{{HeeZ&n)rc0iO~_vSJRUVZJ_+gmzn>P%|(v_{(QdZQqQV{o}stAB$++w}#!$DWzdS zjvLSKFav$y=jXT0j-S!bM)j*Jo@H-$m-R&64i9G!!#pxPOy(&Bd<3{WAjfrgav6RC zCf}+LC7q7ALKDhYxIr~9Fw_WIR~X+Hh!Y+3D=9x3i;b0)mHmQ8Tq&uk*QTGuoz$=V z`U@+U_xd#zkD;jD#2e*Aw&8WXDm09z0So`vm5>N50aqkJ{YIltwjd>$ML+-H{O6}^ z=n%*?tBsF=3**$B!4ZB95>-zkK;36g&s903q}H+lPgZk9&bp{|*~~n;YVUi^GhuqdS6( zr7hq-&}bj#(H&45%2|*`b#6ApuiNW;cEK+buQUeKJiw^H+>WE)HM7u#oE;V&D2~yl zYOil>*b^+5Tt>n+ZAPgO-_s_PF959+Wf94|?aihp$Z`92TIT{V%}ZtPzNAA|l8i9q zMuNC0htIbrW&|bY@s!zbQL1F^A2>BV%KxV%cMfNH% z=cok`u!c#%bs!4bo{=e(3_gB-^KY3@u6|TIlwC%Wk&&SmGDMs-eL&;XU_n7X>Ra9^ z(?2fKM-dVdK9iUUC7?jL`@v2e%LC_^*`06!0RcP0)>54^bVrhiY6DU6+hj2EQAN3* zpZRqdyojW}gw(MG#h~q5gU4@u5QNRl=0L66-P^lR89SF(S4)bDJQusj$c2IEuLrfJ zs>(ga)Eep<#N=#)Pikta;=ea0jr0~Lps6G$CB?0YTXvCx1#c}G)KQqrqezQ_L@)<$j3 z7&C>rsBXcw^IeDR=y$X`JTXyNIt{8Hx}!IRnW}sju)t0GjH(& ziz%@BkmSLga03shLrB;lW5lntgAzlf#P~}+yL81NM32_ zJ+Wwjbt?)jFxdza`e?piF12-abtnrJmEOklv(F0XXt>R(9oPaT&Wn(92F*V}5(cXT zUk8+ENTg+Vdo>3Z=RE=O}_;3pcY$GoEi<#Peal%2}E(_ zt9NNopilfqZhNS!>oolOvYe8xZYupe7dty3wI)_S50ZEd&~_Li1y<{!`<@bm>V=K!86zT5w0FP!rw3?(keGPp<6|P~e3{jEjb~zRD{;Gx^AHsvdrrSM!=a7>kl?*G#qYtkqsDk>@^m1QhjLX;`y&Iyv2l$6xXn??EgcNj_0EfYyul0Iyt_?*AVPoeTd zT4-%)VPzw2XshkB^Ls zGBPsa>!1^JL!nIrD=J*U_y)lbjs}#)PZ_KbO?DO*7BR6SaB6@h5M0k=fV?Yi@4d-Mv1t4x%j>8{YMfkB*FhrGz@K0xUhbF283R8JKnf zrHTw4LR})28^hnBDS?~|x}|&VQBU$MGP#6NO>E>x;#SBrtFE*(_r1Kl%5>ko<;0O0 zZE=R}-Em?SC`)YyW&tpTX$PL)F)}UwjD<)Glx4pPlHoQK`1!q@PoF*&7e{<4di{DH zygZhq0bX8*UiU6sx+8w1ci1aAyA%5k8v$R@eRVk zOYm|`Rhbqy>sV6!OH`?vm89e^AU50ALGI15W_ ze}7EtoZ%PWG+%vVbJs}Zr)T>QL#JPUER%uUVp4i|2hJk0ZJA#HBKhr<~2_syMPp_CjLy# zh6p4ig`Ar{H`d^$3JM;NzU9chLtI%?QxhNmfX<9`P>hrOd7)~W++!1f*qherU`kPp z{a$5vt>aUvkOep$U35C);7PmLh3OC(Bntu=MfTt;67#4}?t0`$qBR+5B;tnn7-?fJW*;K)i!LL=$KD)lO?lFvd*KiXg+-4nii z@!y(hSe;{0=%*L9e;E`ctJa?n8R-hW#LK7UU}~d^YR4bDHv!lIQg!j-w|R7&<aGF01zsk9`o(nqfiZSk(HZ0+xc}x^47B|bYGUF0fc3II6|)M%4K=z z_~jzvtr`N(&vw%#{f^wCw;{bzPgGcT6~hKg7*2-6csjMqQ1C3vO{*Ho#>NJFgQa#GNCx0-zCo)FmTo|@fA2G!QSZzdP@v_dj7#mX?-M zc}>8nH8DEM;`Ij-oQkg-C-<4IiQhQ%`Cw3hg9>YrGcz;VtiZFV$Z6rA$5bJ!!cdl( zLUeSQa1;QtSX%4ckZuU;t&j12F~Frj;snRrN3w+D+&X>mlzo4FmnfP~uSHc+F+A(R zCr-+%SCQ2Gp{%BYz}Gp8LYdDsPH{t_ctme-F3*)4)IirBO*-#Vo4@V=xhRzHH85yk zcZmK_Sjd*qpCxFMfGhBvQH@-?w5%*K77a&JwOZ+Acr{VmKjg6NtUjnBB9nAAe z#0z>!v8VI6eymVm|3*^Y0&D95`1oK2^Yd9d@S^~@viVW@6=|?bxGZ)-)d&BNZeG<5 z7#}(lu$w;p*@S)M07f<71>@aD<#N#_{KJXiRFsqeuxyullI^~}r8KEcVqKbU3^)hR z63{TWI5`1=rzRz7k8@_;fmTPq(f<_S1vOLV?yj4+zDoyNE7?6zm6U*Q!dVD- z3b3(`Nn2kZ7KY|fFPh?u_ns{T>27olc$@!6r}KX~mj9pAXlup6AHVXde021aNYMKf z&Y4P7O@I7^Kxc*FG1aEm(dyscgg5hlNi^oL5Vt3eM-=mC7>=KG=T2?S&m4_?xPJUZ z*~R#d)m+x`-6EnMV|hwkU~CuLvtM0{|1+RoFYMH_9r;PzP5D<~?X@G##|ovb-&m%L z<<6})!@j6gAns1l>2uH?�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 diff --git a/tests/ref/visualize/shape-rect.png b/tests/ref/visualize/shape-rect.png index b3311ba58660ced7a97ffd5817cd2b2290df3bfc..5eeab37f0579df2b708f5740f19e2c49eba2bd7e 100644 GIT binary patch literal 9426 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 ZLp%02RwKTcUV(s*!eiw}MY6`f{U0LKRVe@f diff --git a/tests/ref/visualize/shape-square.png b/tests/ref/visualize/shape-square.png index 1f5303b9cf26c2fc6af8b3a876b4ffb2bb029e4d..3d81f2ed7c6855c5b71d051d24d34a8d7278511e 100644 GIT binary patch literal 18061 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 literal 18290 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 H@7@0bFq!o% diff --git a/tests/typ/basics/desc.typ b/tests/typ/basics/desc.typ index 8147b4004..a638098b7 100644 --- a/tests/typ/basics/desc.typ +++ b/tests/typ/basics/desc.typ @@ -39,7 +39,7 @@ No: list \ // Test grid like show rule. #show desc: it => table( columns: 2, - padding: 3pt, + inset: 3pt, ..it.items.map(item => (emph(item(0)), item(1))).flatten(), ) diff --git a/tests/typ/compiler/methods-color.typ b/tests/typ/compiler/methods-color.typ index 1188030ac..3b165d14e 100644 --- a/tests/typ/compiler/methods-color.typ +++ b/tests/typ/compiler/methods-color.typ @@ -15,8 +15,8 @@ #rect(width: 1cm, fill: c.negate()) #for x in range(0, 11) { - square(width: 9pt, fill: c.lighten(x * 10%)) + square(size: 9pt, fill: c.lighten(x * 10%)) } #for x in range(0, 11) { - square(width: 9pt, fill: c.darken(x * 10%)) + square(size: 9pt, fill: c.darken(x * 10%)) } diff --git a/tests/typ/compiler/show-selector.typ b/tests/typ/compiler/show-selector.typ index 0e9823a5f..56e827696 100644 --- a/tests/typ/compiler/show-selector.typ +++ b/tests/typ/compiler/show-selector.typ @@ -5,7 +5,7 @@ #show raw.where(block: false): rect.with( radius: 2pt, outset: (y: 3pt), - inset: (x: 3pt), + inset: (x: 3pt, y: 0pt), fill: luma(230), ) @@ -27,6 +27,9 @@ with selectors and justification. code!("it"); ``` +You can use the ```rs *const T``` pointer or +the ```rs &mut T``` reference. + --- #show heading.where(level: 1): set text(red) #show heading.where(level: 2): set text(blue) diff --git a/tests/typ/layout/grid-1.typ b/tests/typ/layout/grid-1.typ index dcc9b4746..411fd8d0e 100644 --- a/tests/typ/layout/grid-1.typ +++ b/tests/typ/layout/grid-1.typ @@ -2,7 +2,6 @@ --- #let cell(width, color) = rect(width: width, height: 2cm, fill: color) - #set page(width: 100pt, height: 140pt) #grid( columns: (auto, 1fr, 3fr, 0.25cm, 3%, 2mm + 10%), @@ -21,6 +20,7 @@ ) --- +#set rect(inset: 0pt) #grid( columns: (auto, auto, 40%), column-gutter: 1fr, diff --git a/tests/typ/layout/grid-3.typ b/tests/typ/layout/grid-3.typ index c55f22a6e..8194da736 100644 --- a/tests/typ/layout/grid-3.typ +++ b/tests/typ/layout/grid-3.typ @@ -24,7 +24,7 @@ row-gutter: 10pt, column-gutter: (0pt, 10%), align(top, image("/res/rhino.png")), - align(top, rect(fill: eastern, align(right)[LoL])), + align(top, rect(inset: 0pt, fill: eastern, align(right)[LoL])), [rofl], [\ A] * 3, [Ha!\ ] * 3, @@ -55,7 +55,7 @@ column-gutter: (0pt, 10%), [A], [B], [C], [D], grid(columns: 2, [A], [B], [C\ ]*3, [D]), - align(top, rect(fill: eastern, align(right)[LoL])), + align(top, rect(inset: 0pt, fill: eastern, align(right)[LoL])), [rofl], [E\ ]*4, ) diff --git a/tests/typ/layout/pad.typ b/tests/typ/layout/pad.typ index 9791eae43..4f4815027 100644 --- a/tests/typ/layout/pad.typ +++ b/tests/typ/layout/pad.typ @@ -5,6 +5,7 @@ #pad(left: 10pt, [Indented!]) // All sides together. +#set rect(inset: 0pt) #rect(fill: conifer, pad(10pt, right: 20pt, rect(width: 20pt, height: 20pt, fill: rgb("eb5278")) diff --git a/tests/typ/layout/par-knuth.typ b/tests/typ/layout/par-knuth.typ index 593497384..dbe13fc4c 100644 --- a/tests/typ/layout/par-knuth.typ +++ b/tests/typ/layout/par-knuth.typ @@ -14,7 +14,7 @@ ] #let column(title, linebreaks, hyphenate) = { - rect(width: 132pt, fill: rgb("eee"))[ + rect(inset: 0pt, width: 132pt, fill: rgb("eee"))[ #set par(linebreaks: linebreaks) #set text(hyphenate: hyphenate) #strong(title) \ #story diff --git a/tests/typ/layout/stack-2.typ b/tests/typ/layout/stack-2.typ index f88f7a582..a06950f10 100644 --- a/tests/typ/layout/stack-2.typ +++ b/tests/typ/layout/stack-2.typ @@ -19,6 +19,5 @@ World! 🌍 #set text(white) #rect(fill: forest)[ #v(1fr) - #h(1fr) Hi you! #h(5pt) - #v(5pt) + #h(1fr) Hi you! ] diff --git a/tests/typ/math/syntax.typ b/tests/typ/math/syntax.typ index 4500d91ed..72b4b7c24 100644 --- a/tests/typ/math/syntax.typ +++ b/tests/typ/math/syntax.typ @@ -2,7 +2,7 @@ #set text("Latin Modern Roman") #show : it => table( columns: 2, - padding: 8pt, + inset: 8pt, ..it.text .split("\n") .map(line => (text(10pt, raw(line, lang: "typ")), eval(line) + [ ])) diff --git a/tests/typ/text/edge.typ b/tests/typ/text/edge.typ index 26be4aeb7..802c0ddbf 100644 --- a/tests/typ/text/edge.typ +++ b/tests/typ/text/edge.typ @@ -4,7 +4,7 @@ #set page(width: 160pt) #set text(size: 8pt) -#let try(top, bottom) = rect(fill: conifer)[ +#let try(top, bottom) = rect(inset: 0pt, fill: conifer)[ #set text("IBM Plex Mono", top-edge: top, bottom-edge: bottom) From #top to #bottom ] diff --git a/tests/typ/text/microtype.typ b/tests/typ/text/microtype.typ index c1f0d344e..69b505004 100644 --- a/tests/typ/text/microtype.typ +++ b/tests/typ/text/microtype.typ @@ -5,7 +5,7 @@ #set page(width: 130pt, margin: 15pt) #set par(justify: true, linebreaks: "simple") #set text(size: 9pt) -#rect(fill: rgb(0, 0, 0, 0), width: 100%)[ +#rect(inset: 0pt, fill: rgb(0, 0, 0, 0), width: 100%)[ This is a little bit of text that builds up to hang-ing hyphens and dash---es and then, you know, some punctuation in the margin. diff --git a/tests/typ/text/shift.typ b/tests/typ/text/shift.typ index 01a83f6e3..6fe31bec0 100644 --- a/tests/typ/text/shift.typ +++ b/tests/typ/text/shift.typ @@ -4,8 +4,8 @@ #table( columns: 3, [Typo.], [Fallb.], [Synth], - [x#super[1]], [x#super[5n]], [x#super[2 #square(width: 6pt)]], - [x#sub[1]], [x#sub[5n]], [x#sub[2 #square(width: 6pt)]], + [x#super[1]], [x#super[5n]], [x#super[2 #square(size: 6pt)]], + [x#sub[1]], [x#sub[5n]], [x#sub[2 #square(size: 6pt)]], ) --- diff --git a/tests/typ/visualize/shape-aspect.typ b/tests/typ/visualize/shape-aspect.typ index f2dd9b517..d2dc11404 100644 --- a/tests/typ/visualize/shape-aspect.typ +++ b/tests/typ/visualize/shape-aspect.typ @@ -4,9 +4,13 @@ // Test relative width and height and size that is smaller // than default size. #set page(width: 120pt, height: 70pt) -#square(width: 50%, align(bottom)[A]) +#set align(center + horizon) +#square(width: 50%, [A]) #square(height: 50%) -#box(stack(square(size: 10pt), 5pt, square(size: 10pt, [B]))) +#box(stack( + square(size: 10pt), + square(size: 20pt, [B]) +)) --- // Test alignment in automatically sized square and circle. @@ -37,7 +41,7 @@ // Test square that is overflowing due to its aspect ratio. #set page(width: 40pt, height: 20pt, margin: 5pt) #square(width: 100%) #parbreak() -#square(width: 100%)[Hello] +#square(width: 100%)[Hey] --- // Size cannot be relative because we wouldn't know diff --git a/tests/typ/visualize/shape-circle.typ b/tests/typ/visualize/shape-circle.typ index 13ff67de1..23c6fcbdb 100644 --- a/tests/typ/visualize/shape-circle.typ +++ b/tests/typ/visualize/shape-circle.typ @@ -7,6 +7,7 @@ --- // Test auto sizing. +#set circle(inset: 0pt) Auto-sized circle. \ #circle(fill: rgb("eb5278"), stroke: 2pt + black, @@ -33,13 +34,14 @@ Expanded by height. --- // Ensure circle directly in rect works. -#rect(width: 40pt, height: 30pt, fill: forest, circle(fill: conifer)) +#rect(width: 40pt, height: 30pt, fill: forest, + circle(fill: conifer)) --- // Test relative sizing. #let centered(body) = align(center + horizon, body) #set text(fill: white) -#rect(width: 100pt, height: 50pt, fill: rgb("aaa"), centered[ +#rect(width: 100pt, height: 50pt, inset: 0pt, fill: rgb("aaa"), centered[ #circle(radius: 10pt, fill: eastern, centered[A]) // D=20pt #circle(height: 60%, fill: eastern, centered[B]) // D=30pt #circle(width: 20% + 20pt, fill: eastern, centered[C]) // D=40pt diff --git a/tests/typ/visualize/shape-ellipse.typ b/tests/typ/visualize/shape-ellipse.typ index ba4d0d0ab..6447d1d09 100644 --- a/tests/typ/visualize/shape-ellipse.typ +++ b/tests/typ/visualize/shape-ellipse.typ @@ -5,6 +5,9 @@ #ellipse() --- +#set rect(inset: 0pt) +#set ellipse(inset: 0pt) + Rect in ellipse in fixed rect. \ #rect(width: 3cm, height: 2cm, fill: rgb("2a631a"), ellipse(fill: forest, width: 100%, height: 100%, @@ -23,4 +26,4 @@ Auto-sized ellipse. \ ] -An inline #ellipse(width: 8pt, height: 6pt, outset: (top: 3pt, rest: 5.5pt)) ellipse. \ No newline at end of file +An inline #ellipse(width: 8pt, height: 6pt, outset: (top: 3pt, rest: 5.5pt)) ellipse. diff --git a/tests/typ/visualize/shape-rect.typ b/tests/typ/visualize/shape-rect.typ index 9a115e543..c8518bbd4 100644 --- a/tests/typ/visualize/shape-rect.typ +++ b/tests/typ/visualize/shape-rect.typ @@ -8,7 +8,7 @@ #set page(width: 150pt) // Fit to text. -#rect(fill: conifer, inset: 3pt)[Textbox] +#rect(fill: conifer)[Textbox] // Empty with fixed width and height. #block(rect( @@ -18,7 +18,7 @@ )) // Fixed width, text height. -#rect(width: 2cm, fill: rgb("9650d6"), inset: 5pt)[Fixed and padded] +#rect(width: 2cm, fill: rgb("9650d6"))[Fixed and padded] // Page width, fixed height. #rect(height: 1cm, width: 100%, fill: rgb("734ced"))[Topleft] @@ -44,18 +44,6 @@ #rect(width: 100%, fill: lime, stroke: (x: 5pt, y: 1pt)) ] ---- -// Outset padding. -#set raw(lang: "rust") -#show raw: it => [ - #set text(8pt) - #h(5.6pt, weak: true) - #rect(radius: 3pt, outset: (y: 3pt, x: 2.5pt), fill: rgb(239, 241, 243), it) - #h(5.6pt, weak: true) -] - -Use the `*const T` pointer or the `&mut T` reference. - --- // Error: 15-38 unexpected key "cake", valid keys are "top-left", "top-right", "bottom-right", "bottom-left", "left", "top", "right", "bottom", and "rest" #rect(radius: (left: 10pt, cake: 5pt)) diff --git a/tests/typ/visualize/shape-square.typ b/tests/typ/visualize/shape-square.typ index 622fa9c82..8ac9001f4 100644 --- a/tests/typ/visualize/shape-square.typ +++ b/tests/typ/visualize/shape-square.typ @@ -7,7 +7,7 @@ --- // Test auto-sized square. -#square(fill: eastern, inset: 5pt)[ +#square(fill: eastern)[ #set text(fill: white, weight: "bold") Typst ]