From 2f042ababd1754351787fee0ee35634e73660ae9 Mon Sep 17 00:00:00 2001 From: 4JX <79868816+4JX@users.noreply.github.com> Date: Thu, 10 Feb 2022 15:26:57 +0100 Subject: [PATCH 01/51] Make `Margin` pub and move to style.rs (#1236) --- egui/src/containers/frame.rs | 45 +----------------------------------- egui/src/containers/mod.rs | 2 +- egui/src/style.rs | 45 +++++++++++++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/egui/src/containers/frame.rs b/egui/src/containers/frame.rs index 044b96a9..9e7cd949 100644 --- a/egui/src/containers/frame.rs +++ b/egui/src/containers/frame.rs @@ -1,51 +1,8 @@ //! Frame container -use crate::{layers::ShapeIdx, *}; +use crate::{layers::ShapeIdx, style::Margin, *}; use epaint::*; -#[derive(Clone, Copy, Debug, Default, PartialEq)] -#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] -pub struct Margin { - pub left: f32, - pub right: f32, - pub top: f32, - pub bottom: f32, -} - -impl Margin { - #[inline] - pub fn same(margin: f32) -> Self { - Self { - left: margin, - right: margin, - top: margin, - bottom: margin, - } - } - - /// Margins with the same size on opposing sides - #[inline] - pub fn symmetric(x: f32, y: f32) -> Self { - Self { - left: x, - right: x, - top: y, - bottom: y, - } - } - - /// Total margins on both sides - pub fn sum(&self) -> Vec2 { - Vec2::new(self.left + self.right, self.top + self.bottom) - } -} - -impl From for Margin { - fn from(v: Vec2) -> Self { - Self::symmetric(v.x, v.y) - } -} - /// Color and margin of a rectangular background of a [`Ui`]. #[derive(Clone, Copy, Debug, Default, PartialEq)] #[must_use = "You should call .show()"] diff --git a/egui/src/containers/mod.rs b/egui/src/containers/mod.rs index cc457a51..f151b8e9 100644 --- a/egui/src/containers/mod.rs +++ b/egui/src/containers/mod.rs @@ -16,7 +16,7 @@ pub use { area::Area, collapsing_header::{CollapsingHeader, CollapsingResponse}, combo_box::*, - frame::{Frame, Margin}, + frame::Frame, panel::{CentralPanel, SidePanel, TopBottomPanel}, popup::*, resize::Resize, diff --git a/egui/src/style.rs b/egui/src/style.rs index d13548a6..7469c561 100644 --- a/egui/src/style.rs +++ b/egui/src/style.rs @@ -2,7 +2,7 @@ #![allow(clippy::if_same_then_else)] -use crate::{color::*, emath::*, FontFamily, FontId, Margin, Response, RichText, WidgetText}; +use crate::{color::*, emath::*, FontFamily, FontId, Response, RichText, WidgetText}; use epaint::{mutex::Arc, Rounding, Shadow, Stroke}; use std::collections::BTreeMap; @@ -277,6 +277,49 @@ impl Spacing { } } +#[derive(Clone, Copy, Debug, Default, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] +pub struct Margin { + pub left: f32, + pub right: f32, + pub top: f32, + pub bottom: f32, +} + +impl Margin { + #[inline] + pub fn same(margin: f32) -> Self { + Self { + left: margin, + right: margin, + top: margin, + bottom: margin, + } + } + + /// Margins with the same size on opposing sides + #[inline] + pub fn symmetric(x: f32, y: f32) -> Self { + Self { + left: x, + right: x, + top: y, + bottom: y, + } + } + + /// Total margins on both sides + pub fn sum(&self) -> Vec2 { + Vec2::new(self.left + self.right, self.top + self.bottom) + } +} + +impl From for Margin { + fn from(v: Vec2) -> Self { + Self::symmetric(v.x, v.y) + } +} + /// How and when interaction happens. #[derive(Clone, Debug, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] From 1ebb5ccabfc47a2ebddfef7e0f67e061862821cc Mon Sep 17 00:00:00 2001 From: Yusuf Bera Ertan Date: Thu, 10 Feb 2022 17:44:41 +0300 Subject: [PATCH 02/51] Don't install console panic hook and tracing wasm subscriber in egui_web (#1230) Do so in egui_demo_app instead --- Cargo.lock | 4 ++-- egui_demo_app/Cargo.toml | 4 ++++ egui_demo_app/src/lib.rs | 6 ++++++ egui_web/Cargo.toml | 2 -- egui_web/src/backend.rs | 6 ------ 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6c5cbabf..63ebdb0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1039,9 +1039,11 @@ dependencies = [ name = "egui_demo_app" version = "0.16.0" dependencies = [ + "console_error_panic_hook", "eframe", "egui_demo_lib", "tracing-subscriber", + "tracing-wasm", ] [[package]] @@ -1095,7 +1097,6 @@ name = "egui_web" version = "0.16.0" dependencies = [ "bytemuck", - "console_error_panic_hook", "egui", "egui_glow", "epi", @@ -1103,7 +1104,6 @@ dependencies = [ "ron", "serde", "tracing", - "tracing-wasm", "tts", "wasm-bindgen", "wasm-bindgen-futures", diff --git a/egui_demo_app/Cargo.toml b/egui_demo_app/Cargo.toml index 2f23c079..172a40fc 100644 --- a/egui_demo_app/Cargo.toml +++ b/egui_demo_app/Cargo.toml @@ -30,3 +30,7 @@ eframe = { version = "0.16.0", path = "../eframe" } egui_demo_lib = { version = "0.16.0", path = "../egui_demo_lib", features = ["extra_debug_asserts"] } tracing-subscriber = "0.3" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +console_error_panic_hook = "0.1.6" +tracing-wasm = "0.2" \ No newline at end of file diff --git a/egui_demo_app/src/lib.rs b/egui_demo_app/src/lib.rs index 2ef88b50..487933f2 100644 --- a/egui_demo_app/src/lib.rs +++ b/egui_demo_app/src/lib.rs @@ -13,6 +13,12 @@ use eframe::wasm_bindgen::{self, prelude::*}; #[cfg(target_arch = "wasm32")] #[wasm_bindgen] pub fn start(canvas_id: &str) -> Result<(), wasm_bindgen::JsValue> { + // Make sure panics are logged using `console.error`. + console_error_panic_hook::set_once(); + + // Redirect tracing to console.log and friends: + tracing_wasm::set_as_global_default(); + let app = egui_demo_lib::WrapApp::default(); eframe::start_web(canvas_id, Box::new(app)) } diff --git a/egui_web/Cargo.toml b/egui_web/Cargo.toml index bc1ac916..2210fa6d 100644 --- a/egui_web/Cargo.toml +++ b/egui_web/Cargo.toml @@ -56,10 +56,8 @@ egui_glow = { version = "0.16.0",path = "../egui_glow", default-features = false epi = { version = "0.16.0", path = "../epi" } bytemuck = "1.7" -console_error_panic_hook = "0.1.6" js-sys = "0.3" tracing = "0.1" -tracing-wasm = "0.2" wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" diff --git a/egui_web/src/backend.rs b/egui_web/src/backend.rs index fe4a2c28..805e9603 100644 --- a/egui_web/src/backend.rs +++ b/egui_web/src/backend.rs @@ -281,12 +281,6 @@ impl AppRunner { /// Install event listeners to register different input events /// and start running the given app. pub fn start(canvas_id: &str, app: Box) -> Result { - // Make sure panics are logged using `console.error`. - console_error_panic_hook::set_once(); - - // Redirect tracing to console.log and friends: - tracing_wasm::set_as_global_default(); - let mut runner = AppRunner::new(canvas_id, app)?; runner.warm_up()?; start_runner(runner) From 815598a842dc4cc52a99bea0fc47ecbd6dbd71e9 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 10 Feb 2022 15:33:11 +0100 Subject: [PATCH 03/51] .vscode/settings.json: insertFinalNewline and trimTrailingWhitespace For when people make PR:s touching .toml, .md files --- .vscode/settings.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f89ed5f1..3f7a96d5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,5 @@ { - "editor.formatOnSave": true + "files.insertFinalNewline": true, + "editor.formatOnSave": true, + "files.trimTrailingWhitespace": true } From 3f8ba3a54290e6410988a1bcd1066af8479febb3 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Fri, 11 Feb 2022 13:58:50 +0100 Subject: [PATCH 04/51] Improve the contrast of the default light mode style (#1238) Makes backgrounds brighter and foregrounds darker. --- CHANGELOG.md | 1 + egui/src/style.rs | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c38a1dc..eeb02be9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * ⚠️ `Context::input` and `Ui::input` now locks a mutex. This can lead to a dead-lock is used in an `if let` binding! * `if let Some(pos) = ui.input().pointer.latest_pos()` and similar must now be rewritten on two lines. * Search for this problem in your code using the regex `if let .*input`. +* Better contrast in the default light mode style ([#1238](https://github.com/emilk/egui/pull/1238)). * Renamed `CtxRef` to `Context` ([#1050](https://github.com/emilk/egui/pull/1050)). * `Context` can now be cloned and stored between frames ([#1050](https://github.com/emilk/egui/pull/1050)). * Renamed `Ui::visible` to `Ui::is_visible`. diff --git a/egui/src/style.rs b/egui/src/style.rs index 7469c561..9024a002 100644 --- a/egui/src/style.rs +++ b/egui/src/style.rs @@ -607,7 +607,7 @@ impl Visuals { selection: Selection::default(), hyperlink_color: Color32::from_rgb(90, 170, 255), faint_bg_color: Color32::from_gray(24), - extreme_bg_color: Color32::from_gray(10), + extreme_bg_color: Color32::from_gray(10), // e.g. TextEdit background code_bg_color: Color32::from_gray(64), window_rounding: Rounding::same(6.0), window_shadow: Shadow::big_dark(), @@ -628,9 +628,9 @@ impl Visuals { widgets: Widgets::light(), selection: Selection::light(), hyperlink_color: Color32::from_rgb(0, 155, 255), - faint_bg_color: Color32::from_gray(240), - extreme_bg_color: Color32::from_gray(250), - code_bg_color: Color32::from_gray(200), + faint_bg_color: Color32::from_gray(245), + extreme_bg_color: Color32::from_gray(255), // e.g. TextEdit background + code_bg_color: Color32::from_gray(230), window_shadow: Shadow::big_light(), popup_shadow: Shadow::small_light(), ..Self::dark() @@ -709,21 +709,21 @@ impl Widgets { pub fn light() -> Self { Self { noninteractive: WidgetVisuals { - bg_fill: Color32::from_gray(235), // window background + bg_fill: Color32::from_gray(248), // window background - should be distinct from TextEdit background bg_stroke: Stroke::new(1.0, Color32::from_gray(190)), // separators, indentation lines, windows outlines - fg_stroke: Stroke::new(1.0, Color32::from_gray(100)), // normal text color + fg_stroke: Stroke::new(1.0, Color32::from_gray(80)), // normal text color rounding: Rounding::same(2.0), expansion: 0.0, }, inactive: WidgetVisuals { - bg_fill: Color32::from_gray(215), // button background + bg_fill: Color32::from_gray(230), // button background bg_stroke: Default::default(), - fg_stroke: Stroke::new(1.0, Color32::from_gray(80)), // button text + fg_stroke: Stroke::new(1.0, Color32::from_gray(60)), // button text rounding: Rounding::same(2.0), expansion: 0.0, }, hovered: WidgetVisuals { - bg_fill: Color32::from_gray(210), + bg_fill: Color32::from_gray(220), bg_stroke: Stroke::new(1.0, Color32::from_gray(105)), // e.g. hover over window edge or button fg_stroke: Stroke::new(1.5, Color32::BLACK), rounding: Rounding::same(3.0), From 69626296f1456c545fd4c8a1cf31f294be18cf45 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 12 Feb 2022 18:22:42 +0100 Subject: [PATCH 05/51] Make v-align and scale of user fonts tweakable (#1241) * Add ability to "tweak" the scale and y-offsets of individual fonts * Change default font tweak This help vertically center large text. --- CHANGELOG.md | 1 + epaint/CHANGELOG.md | 1 + epaint/src/text/font.rs | 14 +++--- epaint/src/text/fonts.rs | 92 +++++++++++++++++++++++++++++++--------- 4 files changed, 81 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eeb02be9..8a3f29fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Easily change text styles with `Style::text_styles`. * Added `Ui::text_style_height`. * Added `TextStyle::resolve`. +* Made v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). * `Context::load_texture` to convert an image into a texture which can be displayed using e.g. `ui.image(texture, size)` ([#1110](https://github.com/emilk/egui/pull/1110)). * Added `Ui::add_visible` and `Ui::add_visible_ui`. * Opt-in dependency on `tracing` crate for logging warnings ([#1192](https://github.com/emilk/egui/pull/1192)). diff --git a/epaint/CHANGELOG.md b/epaint/CHANGELOG.md index 4395c203..0039d9e5 100644 --- a/epaint/CHANGELOG.md +++ b/epaint/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to the epaint crate will be documented in this file. * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * Replaced `TextStyle` with `FontId` which lets you pick any font size and font family. * Replaced `Fonts::font_image` with `font_image_delta` for partial font atlas updates. +* Made v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). * Added `ImageData` and `TextureManager` for loading images into textures ([#1110](https://github.com/emilk/egui/pull/1110)). * Added `Shape::dashed_line_many` ([#1027](https://github.com/emilk/egui/pull/1027)). * Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). diff --git a/epaint/src/text/font.rs b/epaint/src/text/font.rs index 1dca6030..1f779ddf 100644 --- a/epaint/src/text/font.rs +++ b/epaint/src/text/font.rs @@ -73,20 +73,22 @@ impl FontImpl { pixels_per_point: f32, ab_glyph_font: ab_glyph::FontArc, scale_in_pixels: u32, - y_offset: f32, + y_offset_points: f32, ) -> FontImpl { assert!(scale_in_pixels > 0); assert!(pixels_per_point > 0.0); let height_in_points = scale_in_pixels as f32 / pixels_per_point; - // TODO: use v_metrics for line spacing ? - // let v = rusttype_font.v_metrics(Scale::uniform(scale_in_pixels)); - // let height_in_pixels = v.ascent - v.descent + v.line_gap; - // let height_in_points = height_in_pixels / pixels_per_point; + // TODO: use these font metrics? + // use ab_glyph::ScaleFont as _; + // let scaled = ab_glyph_font.as_scaled(scale_in_pixels as f32); + // dbg!(scaled.ascent()); + // dbg!(scaled.descent()); + // dbg!(scaled.line_gap()); // Round to closest pixel: - let y_offset = (y_offset * pixels_per_point).round() / pixels_per_point; + let y_offset = (y_offset_points * pixels_per_point).round() / pixels_per_point; Self { ab_glyph_font, diff --git a/epaint/src/text/fonts.rs b/epaint/src/text/fonts.rs index bd6a9e2b..790db06b 100644 --- a/epaint/src/text/fonts.rs +++ b/epaint/src/text/fonts.rs @@ -120,6 +120,9 @@ pub struct FontData { /// Which font face in the file to use. /// When in doubt, use `0`. pub index: u32, + + /// Extra scale and vertical tweak to apply to all text of this font. + pub tweak: FontTweak, } impl FontData { @@ -127,6 +130,7 @@ impl FontData { Self { font: std::borrow::Cow::Borrowed(font), index: 0, + tweak: Default::default(), } } @@ -134,10 +138,52 @@ impl FontData { Self { font: std::borrow::Cow::Owned(font), index: 0, + tweak: Default::default(), + } + } + + pub fn tweak(self, tweak: FontTweak) -> Self { + Self { tweak, ..self } + } +} + +// ---------------------------------------------------------------------------- + +/// Extra scale and vertical tweak to apply to all text of a certain font. +#[derive(Copy, Clone, Debug, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] +pub struct FontTweak { + /// Scale the font by this much. + /// + /// Default: `1.0` (no scaling). + pub scale: f32, + + /// Shift font downwards by this fraction of the font size (in points). + /// + /// A positive value shifts the text upwards. + /// A negative value shifts it downwards. + /// + /// Example value: `-0.2`. + pub y_offset_factor: f32, + + /// Shift font downwards by this amount of logical points. + /// + /// Example value: `-1.0`. + pub y_offset: f32, +} + +impl Default for FontTweak { + fn default() -> Self { + Self { + scale: 1.0, + y_offset_factor: -0.2, // makes the default fonts look more centered in buttons and such + y_offset: 0.0, } } } +// ---------------------------------------------------------------------------- + fn ab_glyph_font_from_font_data(name: &str, data: &FontData) -> ab_glyph::FontArc { match &data.font { std::borrow::Cow::Borrowed(bytes) => { @@ -220,10 +266,17 @@ impl Default for FontDefinitions { "NotoEmoji-Regular".to_owned(), FontData::from_static(include_bytes!("../../fonts/NotoEmoji-Regular.ttf")), ); + // Bigger emojis, and more. : font_data.insert( "emoji-icon-font".to_owned(), - FontData::from_static(include_bytes!("../../fonts/emoji-icon-font.ttf")), + FontData::from_static(include_bytes!("../../fonts/emoji-icon-font.ttf")).tweak( + FontTweak { + scale: 0.8, // make it smaller + y_offset_factor: 0.07, // move it down slightly + y_offset: 0.0, + }, + ), ); families.insert( @@ -603,7 +656,7 @@ impl GalleyCache { struct FontImplCache { atlas: Arc>, pixels_per_point: f32, - ab_glyph_fonts: BTreeMap, + ab_glyph_fonts: BTreeMap, /// Map font pixel sizes and names to the cached `FontImpl`. cache: ahash::AHashMap<(u32, String), Arc>, @@ -617,7 +670,11 @@ impl FontImplCache { ) -> Self { let ab_glyph_fonts = font_data .iter() - .map(|(name, font_data)| (name.clone(), ab_glyph_font_from_font_data(name, font_data))) + .map(|(name, font_data)| { + let tweak = font_data.tweak; + let ab_glyph = ab_glyph_font_from_font_data(name, font_data); + (name.clone(), (tweak, ab_glyph)) + }) .collect(); Self { @@ -638,35 +695,28 @@ impl FontImplCache { } pub fn font_impl(&mut self, scale_in_pixels: u32, font_name: &str) -> Arc { - let scale_in_pixels = if font_name == "emoji-icon-font" { - (scale_in_pixels as f32 * 0.8).round() as u32 // TODO: remove font scale HACK! - } else { - scale_in_pixels - }; + let (tweak, ab_glyph_font) = self + .ab_glyph_fonts + .get(font_name) + .unwrap_or_else(|| panic!("No font data found for {:?}", font_name)) + .clone(); - let y_offset = if font_name == "emoji-icon-font" { + let scale_in_pixels = (scale_in_pixels as f32 * tweak.scale).round() as u32; + + let y_offset_points = { let scale_in_points = scale_in_pixels as f32 / self.pixels_per_point; - scale_in_points * 0.29375 // TODO: remove font alignment hack - } else { - 0.0 - }; - let y_offset = y_offset - 3.0; // Tweaked to make text look centered in buttons and text edit fields + scale_in_points * tweak.y_offset_factor + } + tweak.y_offset; self.cache .entry((scale_in_pixels, font_name.to_owned())) .or_insert_with(|| { - let ab_glyph_font = self - .ab_glyph_fonts - .get(font_name) - .unwrap_or_else(|| panic!("No font data found for {:?}", font_name)) - .clone(); - Arc::new(FontImpl::new( self.atlas.clone(), self.pixels_per_point, ab_glyph_font, scale_in_pixels, - y_offset, + y_offset_points, )) }) .clone() From 14e985a894615af94b4914d6eb901a279d1898ce Mon Sep 17 00:00:00 2001 From: 4JX <79868816+4JX@users.noreply.github.com> Date: Sun, 13 Feb 2022 10:10:39 +0100 Subject: [PATCH 06/51] Expose `FontTweak` through `egui::FontTweak` (#1244) --- egui/src/lib.rs | 2 +- epaint/src/text/mod.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/egui/src/lib.rs b/egui/src/lib.rs index fdf37174..ee472935 100644 --- a/egui/src/lib.rs +++ b/egui/src/lib.rs @@ -385,7 +385,7 @@ pub use epaint::emath; pub use emath::{lerp, pos2, remap, remap_clamp, vec2, Align, Align2, NumExt, Pos2, Rect, Vec2}; pub use epaint::{ color, mutex, - text::{FontData, FontDefinitions, FontFamily, FontId}, + text::{FontData, FontDefinitions, FontFamily, FontId, FontTweak}, textures::TexturesDelta, AlphaImage, ClippedMesh, Color32, ColorImage, ImageData, Mesh, Rgba, Rounding, Shape, Stroke, TextureHandle, TextureId, diff --git a/epaint/src/text/mod.rs b/epaint/src/text/mod.rs index 32d4070a..ca1bc314 100644 --- a/epaint/src/text/mod.rs +++ b/epaint/src/text/mod.rs @@ -10,7 +10,7 @@ mod text_layout_types; pub const TAB_SIZE: usize = 4; pub use { - fonts::{FontData, FontDefinitions, FontFamily, FontId, Fonts, FontsImpl}, + fonts::{FontData, FontDefinitions, FontFamily, FontId, FontTweak, Fonts, FontsImpl}, text_layout::layout, text_layout_types::*, }; From c4528beb726ee4c291dac20d849625761a3df855 Mon Sep 17 00:00:00 2001 From: Juan Campa Date: Sun, 13 Feb 2022 15:09:25 -0500 Subject: [PATCH 07/51] Make non interactable layers not interact (#1240) * Make non interactable layers not interact * Make menus interactable * Fix area interactable not being updated each frame --- CHANGELOG.md | 3 +++ egui/src/containers/area.rs | 3 ++- egui/src/memory.rs | 6 +++--- egui/src/menu.rs | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a3f29fc..f4db29e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,12 +45,15 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)). * `Plot::highlight` now takes a `bool` argument ([#1159](https://github.com/emilk/egui/pull/1159)). * `ScrollArea::show` now returns a `ScrollAreaOutput`, so you might need to add `.inner` after the call to it ([#1166](https://github.com/emilk/egui/pull/1166)). +* Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). +* `Areas::layer_id_at` ignores non interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). ### Fixed 🐛 * Context menus now respects the theme ([#1043](https://github.com/emilk/egui/pull/1043)). * Plot `Orientation` was not public, although fields using this type were ([#1130](https://github.com/emilk/egui/pull/1130)). * Fixed `enable_drag` for Windows ([#1108](https://github.com/emilk/egui/pull/1108)). * Calling `Context::set_pixels_per_point` before the first frame will now work. +* Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). ### Contributors 🙏 * [AlexxxRu](https://github.com/alexxxru): [#1108](https://github.com/emilk/egui/pull/1108). diff --git a/egui/src/containers/area.rs b/egui/src/containers/area.rs index 9ff25d5f..6501a1d7 100644 --- a/egui/src/containers/area.rs +++ b/egui/src/containers/area.rs @@ -204,7 +204,7 @@ impl Area { let state = ctx.memory().areas.get(id).cloned(); let is_new = state.is_none(); if is_new { - ctx.request_repaint(); // if we don't know the previous size we are likely drawing the area in the wrong place} + ctx.request_repaint(); // if we don't know the previous size we are likely drawing the area in the wrong place } let mut state = state.unwrap_or_else(|| State { pos: default_pos.unwrap_or_else(|| automatic_area_position(ctx)), @@ -212,6 +212,7 @@ impl Area { interactable, }); state.pos = new_pos.unwrap_or(state.pos); + state.interactable = interactable; if let Some((anchor, offset)) = anchor { if is_new { diff --git a/egui/src/memory.rs b/egui/src/memory.rs index 4809f2de..b5cdfe7b 100644 --- a/egui/src/memory.rs +++ b/egui/src/memory.rs @@ -516,9 +516,9 @@ impl Areas { if state.interactable { // Allow us to resize by dragging just outside the window: rect = rect.expand(resize_interact_radius_side); - } - if rect.contains(pos) { - return Some(*layer); + if rect.contains(pos) { + return Some(*layer); + } } } } diff --git a/egui/src/menu.rs b/egui/src/menu.rs index d2b87216..46146821 100644 --- a/egui/src/menu.rs +++ b/egui/src/menu.rs @@ -126,7 +126,7 @@ pub(crate) fn menu_ui<'c, R>( let area = Area::new(menu_id) .order(Order::Foreground) .fixed_pos(pos) - .interactable(false) + .interactable(true) .drag_bounds(Rect::EVERYTHING); let inner_response = area.show(ctx, |ui| { ui.scope(|ui| { From 62504fface592edb967b9c288f54c02abf3bb756 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sun, 13 Feb 2022 23:55:51 +0300 Subject: [PATCH 08/51] Slider: Add step parameter (#1225) Co-authored-by: Emil Ernerfeldt --- CHANGELOG.md | 1 + egui/src/widgets/slider.rs | 51 +++++++++++++++++++++----- egui_demo_lib/src/apps/demo/sliders.rs | 21 ++++++++++- 3 files changed, 62 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4db29e4..1dc4bfe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Added linked axis support for plots via `plot::LinkedAxisGroup` ([#1184](https://github.com/emilk/egui/pull/1184)). * Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). * Added `ui.weak(text)`. +* Added `Slider::step_by` ([1255](https://github.com/emilk/egui/pull/1225)). ### Changed 🔧 * ⚠️ `Context::input` and `Ui::input` now locks a mutex. This can lead to a dead-lock is used in an `if let` binding! diff --git a/egui/src/widgets/slider.rs b/egui/src/widgets/slider.rs index dd32fccc..0dd3e76e 100644 --- a/egui/src/widgets/slider.rs +++ b/egui/src/widgets/slider.rs @@ -71,6 +71,8 @@ pub struct Slider<'a> { suffix: String, text: String, text_color: Option, + /// Sets the minimal step of the widget value + step: Option, min_decimals: usize, max_decimals: Option, } @@ -113,6 +115,7 @@ impl<'a> Slider<'a> { suffix: Default::default(), text: Default::default(), text_color: None, + step: None, min_decimals: 0, max_decimals: None, } @@ -199,6 +202,16 @@ impl<'a> Slider<'a> { self } + /// Sets the minimal change of the value. + /// Value `0.0` effectively disables the feature. If the new value is out of range + /// and `clamp_to_range` is enabled, you would not have the ability to change the value. + /// + /// Default: `0.0` (disabled). + pub fn step_by(mut self, step: f64) -> Self { + self.step = if step != 0.0 { Some(step) } else { None }; + self + } + // TODO: we should also have a "min precision". /// Set a minimum number of decimals to display. /// Normally you don't need to pick a precision, as the slider will intelligently pick a precision for you. @@ -255,6 +268,9 @@ impl<'a> Slider<'a> { if let Some(max_decimals) = self.max_decimals { value = emath::round_to_decimals(value, max_decimals); } + if let Some(step) = self.step { + value = (value / step).round() * step; + } set(&mut self.get_set_value, value); } @@ -330,14 +346,22 @@ impl<'a> Slider<'a> { let prev_value = self.get_value(); let prev_position = self.position_from_value(prev_value, position_range.clone()); let new_position = prev_position + kb_step; - let new_value = if self.smart_aim { - let aim_radius = ui.input().aim_radius(); - emath::smart_aim::best_in_range_f64( - self.value_from_position(new_position - aim_radius, position_range.clone()), - self.value_from_position(new_position + aim_radius, position_range.clone()), - ) - } else { - self.value_from_position(new_position, position_range.clone()) + let new_value = match self.step { + Some(step) => prev_value + (kb_step as f64 * step), + None if self.smart_aim => { + let aim_radius = ui.input().aim_radius(); + emath::smart_aim::best_in_range_f64( + self.value_from_position( + new_position - aim_radius, + position_range.clone(), + ), + self.value_from_position( + new_position + aim_radius, + position_range.clone(), + ), + ) + } + _ => self.value_from_position(new_position, position_range.clone()), }; self.set_value(new_value); } @@ -438,10 +462,19 @@ impl<'a> Slider<'a> { } fn value_ui(&mut self, ui: &mut Ui, position_range: RangeInclusive) { + // If `DragValue` is controlled from the keyboard and `step` is defined, set speed to `step` + let change = ui.input().num_presses(Key::ArrowUp) as i32 + + ui.input().num_presses(Key::ArrowRight) as i32 + - ui.input().num_presses(Key::ArrowDown) as i32 + - ui.input().num_presses(Key::ArrowLeft) as i32; + let speed = match self.step { + Some(step) if change != 0 => step, + _ => self.current_gradient(&position_range), + }; let mut value = self.get_value(); ui.add( DragValue::new(&mut value) - .speed(self.current_gradient(&position_range)) + .speed(speed) .clamp_range(self.clamp_range()) .min_decimals(self.min_decimals) .max_decimals_opt(self.max_decimals) diff --git a/egui_demo_lib/src/apps/demo/sliders.rs b/egui_demo_lib/src/apps/demo/sliders.rs index 78e0cdb1..12405b9b 100644 --- a/egui_demo_lib/src/apps/demo/sliders.rs +++ b/egui_demo_lib/src/apps/demo/sliders.rs @@ -11,6 +11,8 @@ pub struct Sliders { pub logarithmic: bool, pub clamp_to_range: bool, pub smart_aim: bool, + pub step: f64, + pub use_steps: bool, pub integer: bool, pub vertical: bool, pub value: f64, @@ -24,6 +26,8 @@ impl Default for Sliders { logarithmic: true, clamp_to_range: false, smart_aim: true, + step: 10.0, + use_steps: false, integer: false, vertical: false, value: 10.0, @@ -55,6 +59,8 @@ impl super::View for Sliders { logarithmic, clamp_to_range, smart_aim, + step, + use_steps, integer, vertical, value, @@ -79,6 +85,7 @@ impl super::View for Sliders { SliderOrientation::Horizontal }; + let istep = if *use_steps { *step } else { 0.0 }; if *integer { let mut value_i32 = *value as i32; ui.add( @@ -87,7 +94,8 @@ impl super::View for Sliders { .clamp_to_range(*clamp_to_range) .smart_aim(*smart_aim) .orientation(orientation) - .text("i32 demo slider"), + .text("i32 demo slider") + .step_by(istep), ); *value = value_i32 as f64; } else { @@ -97,7 +105,8 @@ impl super::View for Sliders { .clamp_to_range(*clamp_to_range) .smart_aim(*smart_aim) .orientation(orientation) - .text("f64 demo slider"), + .text("f64 demo slider") + .step_by(istep), ); ui.label( @@ -128,6 +137,14 @@ impl super::View for Sliders { ui.separator(); + ui.checkbox(use_steps, "Use steps"); + ui.label("When enabled, the minimal value change would be restricted to a given step."); + if *use_steps { + ui.add(egui::DragValue::new(step).speed(1.0)); + } + + ui.separator(); + ui.horizontal(|ui| { ui.label("Slider type:"); ui.radio_value(integer, true, "i32"); From f92df7db56903e4515c941cf188b3ac193282ef4 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 13 Feb 2022 22:54:22 +0100 Subject: [PATCH 09/51] README: Add screenshot to demonstrate the skin-ability of egui --- README.md | 6 +++++- media/pompodoro-skin.png | Bin 0 -> 79108 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 media/pompodoro-skin.png diff --git a/README.md b/README.md index 946e8cdc..347a9762 100644 --- a/README.md +++ b/README.md @@ -303,7 +303,11 @@ Also see [GitHub Discussions](https://github.com/emilk/egui/discussions/categori Yes! But you need to install your own font (`.ttf` or `.otf`) using `Context::set_fonts`. ### Can I customize the look of egui? -Yes! You can customize the colors, spacing and sizes of everything. By default egui comes with a dark and a light theme. +Yes! You can customize the colors, spacing, fonts and sizes of everything using `Context::set_style`. + +Here is an example (from https://github.com/AlexxxRu/TinyPomodoro): + + ### What about accessibility, such as screen readers? There is experimental support for a screen reader. In [the web demo](https://www.egui.rs/#demo) you can enable it in the "Backend" tab. diff --git a/media/pompodoro-skin.png b/media/pompodoro-skin.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb18ae0e7d010421538b15e1c1a4df5994398f0 GIT binary patch literal 79108 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 L>gTe~DWM4fy8_2% literal 0 HcmV?d00001 From c1cd47e3a7c2631739ff0bfc05d78b35787d5c3a Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 13 Feb 2022 23:03:59 +0100 Subject: [PATCH 10/51] README: Add section to FAQ about how to work with async code --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 347a9762..4e440b2d 100644 --- a/README.md +++ b/README.md @@ -309,6 +309,14 @@ Here is an example (from https://github.com/AlexxxRu/TinyPomodoro): +### How do I use egui with `async`? +If you call `.await` in your GUI code, the UI will freeze, with is very bad UX. Instead, keep the GUI thread non-blocking and communicate with any concurrent tasks (`async` tasks or other threads) with something like: +* Channels (e.g. [`std::sync::mpsc::channel`](https://doc.rust-lang.org/std/sync/mpsc/fn.channel.html)). Make sure to use [`try_recv`](https://doc.rust-lang.org/std/sync/mpsc/struct.Receiver.html#method.try_recv) so you don't block the gui thread! +* `Arc>` (background thread sets a value; GUI thread reads it) +* [`poll_promise::Promise`](https://docs.rs/poll-promise) (example: [`eframe/examples/download_image.rs`](https://github.com/emilk/egui/blob/master/eframe/examples/download_image.rs)) +* [`eventuals::Eventual`](https://docs.rs/eventuals/latest/eventuals/struct.Eventual.html) +* [`tokio::sync::watch::channel`](https://docs.rs/tokio/latest/tokio/sync/watch/fn.channel.html) + ### What about accessibility, such as screen readers? There is experimental support for a screen reader. In [the web demo](https://www.egui.rs/#demo) you can enable it in the "Backend" tab. From 635c65773df0bcc06f3848592c6f2819d8af425f Mon Sep 17 00:00:00 2001 From: Juan Campa Date: Tue, 15 Feb 2022 10:52:29 -0500 Subject: [PATCH 11/51] Allow scroll into view without specifying an alignment (#1247) * Allow scroll into view without specifying an alignment * Handle case of UI being too big to fit in the scroll view --- CHANGELOG.md | 1 + egui/src/containers/scroll_area.rs | 35 ++++++++++++++++++------ egui/src/frame_state.rs | 8 ++++-- egui/src/response.rs | 18 ++++++------ egui/src/ui.rs | 12 +++++--- egui_demo_lib/src/apps/demo/scrolling.rs | 17 +++++++----- 6 files changed, 60 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dc4bfe9..d9871686 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). * Added `ui.weak(text)`. * Added `Slider::step_by` ([1255](https://github.com/emilk/egui/pull/1225)). +* Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)) ### Changed 🔧 * ⚠️ `Context::input` and `Ui::input` now locks a mutex. This can lead to a dead-lock is used in an `if let` binding! diff --git a/egui/src/containers/scroll_area.rs b/egui/src/containers/scroll_area.rs index d5c9e712..daa6b83e 100644 --- a/egui/src/containers/scroll_area.rs +++ b/egui/src/containers/scroll_area.rs @@ -489,18 +489,37 @@ impl Prepared { // We take the scroll target so only this ScrollArea will use it: let scroll_target = content_ui.ctx().frame_state().scroll_target[d].take(); if let Some((scroll, align)) = scroll_target { - let center_factor = align.to_factor(); - let min = content_ui.min_rect().min[d]; - let visible_range = min..=min + content_ui.clip_rect().size()[d]; - let offset = scroll - lerp(visible_range, center_factor); - + let clip_rect = content_ui.clip_rect(); + let visible_range = min..=min + clip_rect.size()[d]; + let start = *scroll.start(); + let end = *scroll.end(); + let clip_start = clip_rect.min[d]; + let clip_end = clip_rect.max[d]; let mut spacing = ui.spacing().item_spacing[d]; - // Depending on the alignment we need to add or subtract the spacing - spacing *= remap(center_factor, 0.0..=1.0, -1.0..=1.0); + if let Some(align) = align { + let center_factor = align.to_factor(); - state.offset[d] = offset + spacing; + let offset = + lerp(scroll, center_factor) - lerp(visible_range, center_factor); + + // Depending on the alignment we need to add or subtract the spacing + spacing *= remap(center_factor, 0.0..=1.0, -1.0..=1.0); + + state.offset[d] = offset + spacing; + } else if start < clip_start && end < clip_end { + let min_adjust = + (clip_start - start + spacing).min(clip_end - end - spacing); + state.offset[d] -= min_adjust; + } else if end > clip_end && start > clip_start { + let min_adjust = + (end - clip_end + spacing).min(start - clip_start - spacing); + state.offset[d] += min_adjust; + } else { + // Ui is already in view, no need to adjust scroll. + continue; + }; } } } diff --git a/egui/src/frame_state.rs b/egui/src/frame_state.rs index 848dc415..e522eef6 100644 --- a/egui/src/frame_state.rs +++ b/egui/src/frame_state.rs @@ -1,3 +1,5 @@ +use std::ops::RangeInclusive; + use crate::*; /// State that is collected during a frame and then cleared. @@ -28,7 +30,7 @@ pub(crate) struct FrameState { /// Cleared by the first `ScrollArea` that makes use of it. pub(crate) scroll_delta: Vec2, // TODO: move to a Mutex inside of `InputState` ? /// horizontal, vertical - pub(crate) scroll_target: [Option<(f32, Align)>; 2], + pub(crate) scroll_target: [Option<(RangeInclusive, Option)>; 2], } impl Default for FrameState { @@ -40,7 +42,7 @@ impl Default for FrameState { used_by_panels: Rect::NAN, tooltip_rect: None, scroll_delta: Vec2::ZERO, - scroll_target: [None; 2], + scroll_target: [None, None], } } } @@ -63,7 +65,7 @@ impl FrameState { *used_by_panels = Rect::NOTHING; *tooltip_rect = None; *scroll_delta = input.scroll_delta; - *scroll_target = [None; 2]; + *scroll_target = [None, None]; } /// How much space is still available after panels has been added. diff --git a/egui/src/response.rs b/egui/src/response.rs index d685174f..e85626f6 100644 --- a/egui/src/response.rs +++ b/egui/src/response.rs @@ -1,5 +1,5 @@ use crate::{ - emath::{lerp, Align, Pos2, Rect, Vec2}, + emath::{Align, Pos2, Rect, Vec2}, menu, Context, CursorIcon, Id, LayerId, PointerButton, Sense, Ui, WidgetText, NUM_POINTER_BUTTONS, }; @@ -443,7 +443,10 @@ impl Response { ) } - /// Move the scroll to this UI with the specified alignment. + /// Adjust the scroll position until this UI becomes visible. If `align` is not provided, it'll scroll enough to + /// bring the UI into view. + /// + /// See also [`Ui::scroll_to_cursor`] /// /// ``` /// # egui::__run_test_ui(|ui| { @@ -451,18 +454,15 @@ impl Response { /// for i in 0..1000 { /// let response = ui.button("Scroll to me"); /// if response.clicked() { - /// response.scroll_to_me(egui::Align::Center); + /// response.scroll_to_me(Some(egui::Align::Center)); /// } /// } /// }); /// # }); /// ``` - pub fn scroll_to_me(&self, align: Align) { - let scroll_target = lerp(self.rect.x_range(), align.to_factor()); - self.ctx.frame_state().scroll_target[0] = Some((scroll_target, align)); - - let scroll_target = lerp(self.rect.y_range(), align.to_factor()); - self.ctx.frame_state().scroll_target[1] = Some((scroll_target, align)); + pub fn scroll_to_me(&self, align: Option) { + self.ctx.frame_state().scroll_target[0] = Some((self.rect.x_range(), align)); + self.ctx.frame_state().scroll_target[1] = Some((self.rect.y_range(), align)); } /// For accessibility. diff --git a/egui/src/ui.rs b/egui/src/ui.rs index b1790e8c..b1653a62 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -889,7 +889,10 @@ impl Ui { (response, painter) } - /// Move the scroll to this cursor position with the specified alignment. + /// Adjust the scroll position until the cursor becomes visible. If `align` is not provided, it'll scroll enough to + /// bring the cursor into view. + /// + /// See also [`Response::scroll_to_me`] /// /// ``` /// # use egui::Align; @@ -901,15 +904,16 @@ impl Ui { /// } /// /// if scroll_bottom { - /// ui.scroll_to_cursor(Align::BOTTOM); + /// ui.scroll_to_cursor(Some(Align::BOTTOM)); /// } /// }); /// # }); /// ``` - pub fn scroll_to_cursor(&mut self, align: Align) { + pub fn scroll_to_cursor(&mut self, align: Option) { let target = self.next_widget_position(); for d in 0..2 { - self.ctx().frame_state().scroll_target[d] = Some((target[d], align)); + let target = target[d]; + self.ctx().frame_state().scroll_target[d] = Some((target..=target, align)); } } } diff --git a/egui_demo_lib/src/apps/demo/scrolling.rs b/egui_demo_lib/src/apps/demo/scrolling.rs index 0c01ef11..d806d516 100644 --- a/egui_demo_lib/src/apps/demo/scrolling.rs +++ b/egui_demo_lib/src/apps/demo/scrolling.rs @@ -147,7 +147,7 @@ fn huge_content_painter(ui: &mut egui::Ui) { #[derive(PartialEq)] struct ScrollTo { track_item: usize, - tack_item_align: Align, + tack_item_align: Option, offset: f32, } @@ -155,7 +155,7 @@ impl Default for ScrollTo { fn default() -> Self { Self { track_item: 25, - tack_item_align: Align::Center, + tack_item_align: Some(Align::Center), offset: 0.0, } } @@ -180,13 +180,16 @@ impl super::View for ScrollTo { ui.horizontal(|ui| { ui.label("Item align:"); track_item |= ui - .radio_value(&mut self.tack_item_align, Align::Min, "Top") + .radio_value(&mut self.tack_item_align, Some(Align::Min), "Top") .clicked(); track_item |= ui - .radio_value(&mut self.tack_item_align, Align::Center, "Center") + .radio_value(&mut self.tack_item_align, Some(Align::Center), "Center") .clicked(); track_item |= ui - .radio_value(&mut self.tack_item_align, Align::Max, "Bottom") + .radio_value(&mut self.tack_item_align, Some(Align::Max), "Bottom") + .clicked(); + track_item |= ui + .radio_value(&mut self.tack_item_align, None, "None (Bring into view)") .clicked(); }); @@ -213,7 +216,7 @@ impl super::View for ScrollTo { let (current_scroll, max_scroll) = scroll_area .show(ui, |ui| { if scroll_top { - ui.scroll_to_cursor(Align::TOP); + ui.scroll_to_cursor(Some(Align::TOP)); } ui.vertical(|ui| { for item in 1..=50 { @@ -228,7 +231,7 @@ impl super::View for ScrollTo { }); if scroll_bottom { - ui.scroll_to_cursor(Align::BOTTOM); + ui.scroll_to_cursor(Some(Align::BOTTOM)); } let margin = ui.visuals().clip_rect_margin; From cfad28936de16965738ac362cb55f9bf51832ad2 Mon Sep 17 00:00:00 2001 From: BctfN0HUK7Yg Date: Tue, 15 Feb 2022 18:55:43 +0300 Subject: [PATCH 12/51] Color picker now always pops up next to the button (#1237) --- egui/src/widgets/color_picker.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/egui/src/widgets/color_picker.rs b/egui/src/widgets/color_picker.rs index 6ed70d60..22fcab06 100644 --- a/egui/src/widgets/color_picker.rs +++ b/egui/src/widgets/color_picker.rs @@ -357,7 +357,7 @@ pub fn color_edit_button_hsva(ui: &mut Ui, hsva: &mut Hsva, alpha: Alpha) -> Res if ui.memory().is_popup_open(popup_id) { let area_response = Area::new(popup_id) .order(Order::Foreground) - .default_pos(button_response.rect.max) + .current_pos(button_response.rect.max) .show(ui.ctx(), |ui| { ui.spacing_mut().slider_width = 210.0; Frame::popup(ui.style()).show(ui, |ui| { From 8f8eb5d4a956fa88a7521dff8b21c9c2476c4463 Mon Sep 17 00:00:00 2001 From: Sven Niederberger <73159570+s-nie@users.noreply.github.com> Date: Tue, 15 Feb 2022 17:12:29 +0100 Subject: [PATCH 13/51] Customize Plot label and cursor texts (#1235) Co-authored-by: Emil Ernerfeldt --- CHANGELOG.md | 2 + egui/src/widgets/plot/items/mod.rs | 14 +-- egui/src/widgets/plot/mod.rs | 121 ++++++++++++++++++----- egui/src/widgets/plot/transform.rs | 4 + egui_demo_lib/src/apps/demo/plot_demo.rs | 17 +++- 5 files changed, 124 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9871686..dd29e645 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Added linked axis support for plots via `plot::LinkedAxisGroup` ([#1184](https://github.com/emilk/egui/pull/1184)). * Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). * Added `ui.weak(text)`. +* Added plot pointer coordinates with `Plot::coordinates_formatter`. ([#1235](https://github.com/emilk/egui/pull/1235)). * Added `Slider::step_by` ([1255](https://github.com/emilk/egui/pull/1225)). * Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)) @@ -47,6 +48,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)). * `Plot::highlight` now takes a `bool` argument ([#1159](https://github.com/emilk/egui/pull/1159)). * `ScrollArea::show` now returns a `ScrollAreaOutput`, so you might need to add `.inner` after the call to it ([#1166](https://github.com/emilk/egui/pull/1166)). +* Renamed `Plot::custom_label_func` to `Plot::label_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)). * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). * `Areas::layer_id_at` ignores non interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). diff --git a/egui/src/widgets/plot/items/mod.rs b/egui/src/widgets/plot/items/mod.rs index 983d29df..2a00a285 100644 --- a/egui/src/widgets/plot/items/mod.rs +++ b/egui/src/widgets/plot/items/mod.rs @@ -7,7 +7,7 @@ use epaint::Mesh; use crate::*; -use super::{CustomLabelFuncRef, PlotBounds, ScreenTransform}; +use super::{LabelFormatter, PlotBounds, ScreenTransform}; use rect_elem::*; use values::{ClosestElem, PlotGeometry}; @@ -66,7 +66,7 @@ pub(super) trait PlotItem { elem: ClosestElem, shapes: &mut Vec, plot: &PlotConfig<'_>, - custom_label_func: &CustomLabelFuncRef, + label_formatter: &LabelFormatter, ) { let points = match self.geometry() { PlotGeometry::Points(points) => points, @@ -89,7 +89,7 @@ pub(super) trait PlotItem { let pointer = plot.transform.position_from_value(&value); shapes.push(Shape::circle_filled(pointer, 3.0, line_color)); - rulers_at_value(pointer, value, self.name(), plot, shapes, custom_label_func); + rulers_at_value(pointer, value, self.name(), plot, shapes, label_formatter); } } @@ -1380,7 +1380,7 @@ impl PlotItem for BarChart { elem: ClosestElem, shapes: &mut Vec, plot: &PlotConfig<'_>, - _: &CustomLabelFuncRef, + _: &LabelFormatter, ) { let bar = &self.bars[elem.index]; @@ -1522,7 +1522,7 @@ impl PlotItem for BoxPlot { elem: ClosestElem, shapes: &mut Vec, plot: &PlotConfig<'_>, - _: &CustomLabelFuncRef, + _: &LabelFormatter, ) { let box_plot = &self.boxes[elem.index]; @@ -1643,7 +1643,7 @@ pub(super) fn rulers_at_value( name: &str, plot: &PlotConfig<'_>, shapes: &mut Vec, - custom_label_func: &CustomLabelFuncRef, + label_formatter: &LabelFormatter, ) { let line_color = rulers_color(plot.ui); if plot.show_x { @@ -1663,7 +1663,7 @@ pub(super) fn rulers_at_value( let scale = plot.transform.dvalue_dpos(); let x_decimals = ((-scale[0].abs().log10()).ceil().at_least(0.0) as usize).at_most(6); let y_decimals = ((-scale[1].abs().log10()).ceil().at_least(0.0) as usize).at_most(6); - if let Some(custom_label) = custom_label_func { + if let Some(custom_label) = label_formatter { custom_label(name, &value) } else if plot.show_x && plot.show_y { format!( diff --git a/egui/src/widgets/plot/mod.rs b/egui/src/widgets/plot/mod.rs index 647c1b41..b6f08096 100644 --- a/egui/src/widgets/plot/mod.rs +++ b/egui/src/widgets/plot/mod.rs @@ -1,6 +1,6 @@ //! Simple plotting library. -use std::{cell::RefCell, rc::Rc}; +use std::{cell::RefCell, ops::RangeInclusive, rc::Rc}; use crate::*; use epaint::ahash::AHashSet; @@ -20,12 +20,44 @@ mod items; mod legend; mod transform; -type CustomLabelFunc = dyn Fn(&str, &Value) -> String; -type CustomLabelFuncRef = Option>; - -type AxisFormatterFn = dyn Fn(f64) -> String; +type LabelFormatterFn = dyn Fn(&str, &Value) -> String; +type LabelFormatter = Option>; +type AxisFormatterFn = dyn Fn(f64, &RangeInclusive) -> String; type AxisFormatter = Option>; +/// Specifies the coordinates formatting when passed to [`Plot::coordinates_formatter`]. +pub struct CoordinatesFormatter { + function: Box String>, +} + +impl CoordinatesFormatter { + /// Create a new formatter based on the pointer coordinate and the plot bounds. + pub fn new(function: impl Fn(&Value, &PlotBounds) -> String + 'static) -> Self { + Self { + function: Box::new(function), + } + } + + /// Show a fixed number of decimal places. + pub fn with_decimals(num_decimals: usize) -> Self { + Self { + function: Box::new(move |value, _| { + format!("x: {:.d$}\ny: {:.d$}", value.x, value.y, d = num_decimals) + }), + } + } + + fn format(&self, value: &Value, bounds: &PlotBounds) -> String { + (self.function)(value, bounds) + } +} + +impl Default for CoordinatesFormatter { + fn default() -> Self { + Self::with_decimals(3) + } +} + // ---------------------------------------------------------------------------- /// Information about the plot that has to persist between frames. @@ -146,7 +178,8 @@ pub struct Plot { show_x: bool, show_y: bool, - custom_label_func: CustomLabelFuncRef, + label_formatter: LabelFormatter, + coordinates_formatter: Option<(Corner, CoordinatesFormatter)>, axis_formatters: [AxisFormatter; 2], legend_config: Option, show_background: bool, @@ -177,7 +210,8 @@ impl Plot { show_x: true, show_y: true, - custom_label_func: None, + label_formatter: None, + coordinates_formatter: None, axis_formatters: [None, None], // [None; 2] requires Copy legend_config: None, show_background: true, @@ -284,7 +318,7 @@ impl Plot { /// }); /// let line = Line::new(Values::from_values_iter(sin)); /// Plot::new("my_plot").view_aspect(2.0) - /// .custom_label_func(|name, value| { + /// .label_formatter(|name, value| { /// if !name.is_empty() { /// format!("{}: {:.*}%", name, 1, value.y).to_string() /// } else { @@ -294,34 +328,50 @@ impl Plot { /// .show(ui, |plot_ui| plot_ui.line(line)); /// # }); /// ``` - pub fn custom_label_func( + pub fn label_formatter( mut self, - custom_label_func: impl Fn(&str, &Value) -> String + 'static, + label_formatter: impl Fn(&str, &Value) -> String + 'static, ) -> Self { - self.custom_label_func = Some(Box::new(custom_label_func)); + self.label_formatter = Some(Box::new(label_formatter)); self } - /// Provide a function to customize the labels for the X axis. + /// Show the pointer coordinates in the plot. + pub fn coordinates_formatter( + mut self, + position: Corner, + formatter: CoordinatesFormatter, + ) -> Self { + self.coordinates_formatter = Some((position, formatter)); + self + } + + /// Provide a function to customize the labels for the X axis based on the current visible value range. /// /// This is useful for custom input domains, e.g. date/time. /// /// If axis labels should not appear for certain values or beyond a certain zoom/resolution, /// the formatter function can return empty strings. This is also useful if your domain is /// discrete (e.g. only full days in a calendar). - pub fn x_axis_formatter(mut self, func: impl Fn(f64) -> String + 'static) -> Self { + pub fn x_axis_formatter( + mut self, + func: impl Fn(f64, &RangeInclusive) -> String + 'static, + ) -> Self { self.axis_formatters[0] = Some(Box::new(func)); self } - /// Provide a function to customize the labels for the Y axis. + /// Provide a function to customize the labels for the Y axis based on the current value range. /// /// This is useful for custom value representation, e.g. percentage or units. /// /// If axis labels should not appear for certain values or beyond a certain zoom/resolution, /// the formatter function can return empty strings. This is also useful if your Y values are /// discrete (e.g. only integers). - pub fn y_axis_formatter(mut self, func: impl Fn(f64) -> String + 'static) -> Self { + pub fn y_axis_formatter( + mut self, + func: impl Fn(f64, &RangeInclusive) -> String + 'static, + ) -> Self { self.axis_formatters[1] = Some(Box::new(func)); self } @@ -388,7 +438,8 @@ impl Plot { view_aspect, mut show_x, mut show_y, - custom_label_func, + label_formatter, + coordinates_formatter, axis_formatters, legend_config, show_background, @@ -630,7 +681,8 @@ impl Plot { items, show_x, show_y, - custom_label_func, + label_formatter, + coordinates_formatter, axis_formatters, show_axes, transform: transform.clone(), @@ -849,7 +901,8 @@ struct PreparedPlot { items: Vec>, show_x: bool, show_y: bool, - custom_label_func: CustomLabelFuncRef, + label_formatter: LabelFormatter, + coordinates_formatter: Option<(Corner, CoordinatesFormatter)>, axis_formatters: [AxisFormatter; 2], show_axes: [bool; 2], transform: ScreenTransform, @@ -877,7 +930,24 @@ impl PreparedPlot { self.hover(ui, pointer, &mut shapes); } - ui.painter().sub_region(*transform.frame()).extend(shapes); + let painter = ui.painter().sub_region(*transform.frame()); + painter.extend(shapes); + + if let Some((corner, formatter)) = self.coordinates_formatter.as_ref() { + if let Some(pointer) = response.hover_pos() { + let font_id = TextStyle::Monospace.resolve(ui.style()); + let coordinate = transform.value_from_position(pointer); + let text = formatter.format(&coordinate, transform.bounds()); + let padded_frame = transform.frame().shrink(4.0); + let (anchor, position) = match corner { + Corner::LeftTop => (Align2::LEFT_TOP, padded_frame.left_top()), + Corner::RightTop => (Align2::RIGHT_TOP, padded_frame.right_top()), + Corner::LeftBottom => (Align2::LEFT_BOTTOM, padded_frame.left_bottom()), + Corner::RightBottom => (Align2::RIGHT_BOTTOM, padded_frame.right_bottom()), + }; + painter.text(position, anchor, text, font_id, ui.visuals().text_color()); + } + } } fn paint_axis(&self, ui: &Ui, axis: usize, shapes: &mut Vec) { @@ -888,6 +958,11 @@ impl PreparedPlot { } = self; let bounds = transform.bounds(); + let axis_range = match axis { + 0 => bounds.range_x(), + 1 => bounds.range_y(), + _ => panic!("Axis {} does not exist.", axis), + }; let font_id = TextStyle::Body.resolve(ui.style()); @@ -947,7 +1022,7 @@ impl PreparedPlot { let color = color_from_alpha(ui, text_alpha); let text: String = if let Some(formatter) = axis_formatters[axis].as_deref() { - formatter(value_main) + formatter(value_main, &axis_range) } else { emath::round_to_decimals(value_main, 5).to_string() // hack }; @@ -982,7 +1057,7 @@ impl PreparedPlot { transform, show_x, show_y, - custom_label_func, + label_formatter, items, .. } = self; @@ -1012,10 +1087,10 @@ impl PreparedPlot { }; if let Some((item, elem)) = closest { - item.on_hover(elem, shapes, &plot, custom_label_func); + item.on_hover(elem, shapes, &plot, label_formatter); } else { let value = transform.value_from_position(pointer); - items::rulers_at_value(pointer, value, "", &plot, shapes, custom_label_func); + items::rulers_at_value(pointer, value, "", &plot, shapes, label_formatter); } } } diff --git a/egui/src/widgets/plot/transform.rs b/egui/src/widgets/plot/transform.rs index c208bc6e..759a26d8 100644 --- a/egui/src/widgets/plot/transform.rs +++ b/egui/src/widgets/plot/transform.rs @@ -120,6 +120,10 @@ impl PlotBounds { self.min[0]..=self.max[0] } + pub(crate) fn range_y(&self) -> RangeInclusive { + self.min[1]..=self.max[1] + } + pub(crate) fn make_x_symmetrical(&mut self) { let x_abs = self.min[0].abs().max(self.max[0].abs()); self.min[0] = -x_abs; diff --git a/egui_demo_lib/src/apps/demo/plot_demo.rs b/egui_demo_lib/src/apps/demo/plot_demo.rs index fb0ab761..bf845f09 100644 --- a/egui_demo_lib/src/apps/demo/plot_demo.rs +++ b/egui_demo_lib/src/apps/demo/plot_demo.rs @@ -2,8 +2,9 @@ use std::f64::consts::TAU; use egui::*; use plot::{ - Arrows, Bar, BarChart, BoxElem, BoxPlot, BoxSpread, Corner, HLine, Legend, Line, LineStyle, - MarkerShape, Plot, PlotImage, Points, Polygon, Text, VLine, Value, Values, + Arrows, Bar, BarChart, BoxElem, BoxPlot, BoxSpread, CoordinatesFormatter, Corner, HLine, + Legend, Line, LineStyle, MarkerShape, Plot, PlotImage, Points, Polygon, Text, VLine, Value, + Values, }; #[derive(PartialEq)] @@ -14,6 +15,7 @@ struct LineDemo { circle_center: Pos2, square: bool, proportional: bool, + coordinates: bool, line_style: LineStyle, } @@ -26,6 +28,7 @@ impl Default for LineDemo { circle_center: Pos2::new(0.0, 0.0), square: false, proportional: true, + coordinates: true, line_style: LineStyle::Solid, } } @@ -41,6 +44,7 @@ impl LineDemo { square, proportional, line_style, + coordinates, .. } = self; @@ -76,6 +80,8 @@ impl LineDemo { .on_hover_text("Always keep the viewport square."); ui.checkbox(proportional, "Proportional data axes") .on_hover_text("Tick are the same size on both axes."); + ui.checkbox(coordinates, "Show coordinates") + .on_hover_text("Can take a custom formatting function."); ComboBox::from_label("Line style") .selected_text(line_style.to_string()) @@ -151,6 +157,9 @@ impl Widget for &mut LineDemo { if self.proportional { plot = plot.data_aspect(1.0); } + if self.coordinates { + plot = plot.coordinates_formatter(Corner::LeftBottom, CoordinatesFormatter::default()); + } plot.show(ui, |plot_ui| { plot_ui.line(self.circle()); plot_ui.line(self.sin()); @@ -595,7 +604,7 @@ impl ChartsDemo { .name("Set 4") .stack_on(&[&chart1, &chart2, &chart3]); - let mut x_fmt: fn(f64) -> String = |val| { + let mut x_fmt: fn(f64, &std::ops::RangeInclusive) -> String = |val, _range| { if val >= 0.0 && val <= 4.0 && is_approx_integer(val) { // Only label full days from 0 to 4 format!("Day {}", val) @@ -605,7 +614,7 @@ impl ChartsDemo { } }; - let mut y_fmt: fn(f64) -> String = |val| { + let mut y_fmt: fn(f64, &std::ops::RangeInclusive) -> String = |val, _range| { let percent = 100.0 * val; if is_approx_integer(percent) && !is_approx_zero(percent) { From c8c871fcd1d6e72187ab0700af3b343d9a27db61 Mon Sep 17 00:00:00 2001 From: Friz64 Date: Tue, 15 Feb 2022 17:13:08 +0100 Subject: [PATCH 14/51] Add `move_to_top` and `top_most_layer` (#1242) --- CHANGELOG.md | 3 ++- egui/src/context.rs | 11 +++++++++++ egui/src/memory.rs | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd29e645..f71fd7a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,9 +24,10 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Added linked axis support for plots via `plot::LinkedAxisGroup` ([#1184](https://github.com/emilk/egui/pull/1184)). * Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). * Added `ui.weak(text)`. +* Added `Context::move_to_top` and `Context::top_most_layer` for managing the layer on the top ([#1242](https://github.com/emilk/egui/pull/1242)). * Added plot pointer coordinates with `Plot::coordinates_formatter`. ([#1235](https://github.com/emilk/egui/pull/1235)). * Added `Slider::step_by` ([1255](https://github.com/emilk/egui/pull/1225)). -* Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)) +* Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)). ### Changed 🔧 * ⚠️ `Context::input` and `Ui::input` now locks a mutex. This can lead to a dead-lock is used in an `if let` binding! diff --git a/egui/src/context.rs b/egui/src/context.rs index 3695b91c..8e50432c 100644 --- a/egui/src/context.rs +++ b/egui/src/context.rs @@ -889,6 +889,17 @@ impl Context { self.memory().layer_id_at(pos, resize_grab_radius_side) } + /// The overall top-most layer. When an area is clicked on or interacted + /// with, it is moved above all other areas. + pub fn top_most_layer(&self) -> Option { + self.memory().top_most_layer() + } + + /// Moves the given area to the top. + pub fn move_to_top(&self, layer_id: LayerId) { + self.memory().areas.move_to_top(layer_id); + } + pub(crate) fn rect_contains_pointer(&self, layer_id: LayerId, rect: Rect) -> bool { let pointer_pos = self.input().pointer.interact_pos(); if let Some(pointer_pos) = pointer_pos { diff --git a/egui/src/memory.rs b/egui/src/memory.rs index b5cdfe7b..80eb1f15 100644 --- a/egui/src/memory.rs +++ b/egui/src/memory.rs @@ -329,6 +329,12 @@ impl Memory { self.areas.layer_id_at(pos, resize_interact_radius_side) } + /// The overall top-most layer. When an area is clicked on or interacted + /// with, it is moved above all other areas. + pub fn top_most_layer(&self) -> Option { + self.areas.order().last().copied() + } + pub(crate) fn had_focus_last_frame(&self, id: Id) -> bool { self.interaction.focus.id_previous_frame == Some(id) } From c1569ed0d7f280785f34243198fcf87962e49934 Mon Sep 17 00:00:00 2001 From: cat-state <98283595+cat-state@users.noreply.github.com> Date: Tue, 15 Feb 2022 16:14:24 +0000 Subject: [PATCH 15/51] Add Ui.input_mut & InputState.ignore_key (#1212) --- CHANGELOG.md | 1 + egui/src/data/input.rs | 36 +++++++++++ egui/src/input_state.rs | 18 ++++++ egui/src/ui.rs | 15 +++++ .../src/easy_mark/easy_mark_editor.rs | 64 +++++-------------- 5 files changed, 86 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f71fd7a5..f577bbdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w ## Unreleased ### Added ⭐ +* `Ui::input_mut` to modify how subsequent widgets see the `InputState` and a convenience method `InputState::consume_key` for shortcuts or hotkeys ([#1212](https://github.com/emilk/egui/pull/1212)). * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`. * Easily change text styles with `Style::text_styles`. diff --git a/egui/src/data/input.rs b/egui/src/data/input.rs index 21234b65..29a3458c 100644 --- a/egui/src/data/input.rs +++ b/egui/src/data/input.rs @@ -264,6 +264,42 @@ pub struct Modifiers { } impl Modifiers { + pub fn new() -> Self { + Default::default() + } + + pub fn alt(self, value: bool) -> Self { + Self { alt: value, ..self } + } + + pub fn ctrl(self, value: bool) -> Self { + Self { + ctrl: value, + ..self + } + } + + pub fn shift(self, value: bool) -> Self { + Self { + shift: value, + ..self + } + } + + pub fn mac_cmd(self, value: bool) -> Self { + Self { + mac_cmd: value, + ..self + } + } + + pub fn command(self, value: bool) -> Self { + Self { + command: value, + ..self + } + } + #[inline(always)] pub fn is_none(&self) -> bool { self == &Self::default() diff --git a/egui/src/input_state.rs b/egui/src/input_state.rs index 6395b54f..ef516bb7 100644 --- a/egui/src/input_state.rs +++ b/egui/src/input_state.rs @@ -192,6 +192,24 @@ impl InputState { self.pointer.wants_repaint() || self.scroll_delta != Vec2::ZERO || !self.events.is_empty() } + /// Ignore a key if it was pressed or released this frame. Useful for hotkeys. + /// Matches on both key press and key release, consuming them and removing them from `self.events`. + /// Returns true if the key was pressed this frame (even if the key release was consumed). + pub fn consume_key(&mut self, modifiers: Modifiers, key: Key) -> bool { + self.events.retain(|event| { + !matches!( + event, + Event::Key { + key: ev_key, + modifiers: ev_mods, + .. + } if *ev_key == key && *ev_mods == modifiers + ) + }); + + self.keys_down.remove(&key) + } + /// Was the given key pressed this frame? pub fn key_pressed(&self, desired_key: Key) -> bool { self.num_presses(desired_key) > 0 diff --git a/egui/src/ui.rs b/egui/src/ui.rs index b1653a62..2c14a3da 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -338,6 +338,21 @@ impl Ui { self.ctx().input() } + /// The [`InputState`] of the [`Context`] associated with this [`Ui`]. + /// Equivalent to `.ctx().input_mut()`. + /// + /// Note that this locks the [`Context`], so be careful with if-let bindings + /// like for [`Self::input()`]. + /// ``` + /// # egui::__run_test_ui(|ui| { + /// ui.input_mut().consume_key(egui::Modifiers::default(), egui::Key::Enter); + /// # }); + /// ``` + #[inline] + pub fn input_mut(&self) -> RwLockWriteGuard<'_, InputState> { + self.ctx().input_mut() + } + /// The [`Memory`] of the [`Context`] associated with this ui. /// Equivalent to `.ctx().memory()`. #[inline] diff --git a/egui_demo_lib/src/easy_mark/easy_mark_editor.rs b/egui_demo_lib/src/easy_mark/easy_mark_editor.rs index aa1468d9..5a82f3ce 100644 --- a/egui_demo_lib/src/easy_mark/easy_mark_editor.rs +++ b/egui_demo_lib/src/easy_mark/easy_mark_editor.rs @@ -117,59 +117,27 @@ impl EasyMarkEditor { fn shortcuts(ui: &Ui, code: &mut dyn TextBuffer, ccursor_range: &mut CCursorRange) -> bool { let mut any_change = false; - for event in &ui.input().events { - if let Event::Key { - key, - pressed: true, - modifiers, - } = event + for (key, surrounding) in [ + (Key::B, "*"), // *bold* + (Key::C, "`"), // `code` + (Key::I, "/"), // /italics/ + (Key::L, "$"), // $subscript$ + (Key::R, "^"), // ^superscript^ + (Key::S, "~"), // ~strikethrough~ + (Key::U, "_"), // _underline_ + ] { + if ui + .input_mut() + .consume_key(egui::Modifiers::new().command(true), key) { - if modifiers.command_only() { - match &key { - // toggle *bold* - Key::B => { - toggle_surrounding(code, ccursor_range, "*"); - any_change = true; - } - // toggle `code` - Key::C => { - toggle_surrounding(code, ccursor_range, "`"); - any_change = true; - } - // toggle /italics/ - Key::I => { - toggle_surrounding(code, ccursor_range, "/"); - any_change = true; - } - // toggle $lowered$ - Key::L => { - toggle_surrounding(code, ccursor_range, "$"); - any_change = true; - } - // toggle ^raised^ - Key::R => { - toggle_surrounding(code, ccursor_range, "^"); - any_change = true; - } - // toggle ~strikethrough~ - Key::S => { - toggle_surrounding(code, ccursor_range, "~"); - any_change = true; - } - // toggle _underline_ - Key::U => { - toggle_surrounding(code, ccursor_range, "_"); - any_change = true; - } - _ => {} - } - } - } + toggle_surrounding(code, ccursor_range, surrounding); + any_change = true; + }; } any_change } -/// E.g. toggle *strong* with `toggle(&mut text, &mut cursor, "*")` +/// E.g. toggle *strong* with `toggle_surrounding(&mut text, &mut cursor, "*")` fn toggle_surrounding( code: &mut dyn TextBuffer, ccursor_range: &mut CCursorRange, From 4af3cae26d2c9006435a810f0be07498c3235a62 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 16 Feb 2022 21:34:47 +0100 Subject: [PATCH 16/51] Scroll so that text cursor remains visible (#1252) Closes https://github.com/emilk/egui/issues/165 --- CHANGELOG.md | 17 ++++++++------ egui/src/containers/scroll_area.rs | 19 ++++++++------- egui/src/response.rs | 7 +++--- egui/src/ui.rs | 34 +++++++++++++++++++++++---- egui/src/widgets/text_edit/builder.rs | 33 +++++++++++++------------- 5 files changed, 71 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f577bbdb..aa86e9d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,27 +8,29 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w ## Unreleased ### Added ⭐ -* `Ui::input_mut` to modify how subsequent widgets see the `InputState` and a convenience method `InputState::consume_key` for shortcuts or hotkeys ([#1212](https://github.com/emilk/egui/pull/1212)). * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`. * Easily change text styles with `Style::text_styles`. * Added `Ui::text_style_height`. * Added `TextStyle::resolve`. -* Made v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). + * Made v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). +* Plot: + * Added `Plot::x_axis_formatter` and `Plot::y_axis_formatter` for custom axis labels ([#1130](https://github.com/emilk/egui/pull/1130)). + * Added `Plot::allow_boxed_zoom()`, `Plot::boxed_zoom_pointer()` for boxed zooming on plots ([#1188](https://github.com/emilk/egui/pull/1188)). + * Added plot pointer coordinates with `Plot::coordinates_formatter`. ([#1235](https://github.com/emilk/egui/pull/1235)). + * Added linked axis support for plots via `plot::LinkedAxisGroup` ([#1184](https://github.com/emilk/egui/pull/1184)). * `Context::load_texture` to convert an image into a texture which can be displayed using e.g. `ui.image(texture, size)` ([#1110](https://github.com/emilk/egui/pull/1110)). +* `Ui::input_mut` to modify how subsequent widgets see the `InputState` and a convenience method `InputState::consume_key` for shortcuts or hotkeys ([#1212](https://github.com/emilk/egui/pull/1212)). * Added `Ui::add_visible` and `Ui::add_visible_ui`. * Opt-in dependency on `tracing` crate for logging warnings ([#1192](https://github.com/emilk/egui/pull/1192)). * Added `CollapsingHeader::icon` to override the default open/close icon using a custom function. ([1147](https://github.com/emilk/egui/pull/1147)). -* Added `Plot::x_axis_formatter` and `Plot::y_axis_formatter` for custom axis labels ([#1130](https://github.com/emilk/egui/pull/1130)). * Added `ui.data()`, `ctx.data()`, `ctx.options()` and `ctx.tessellation_options()` ([#1175](https://github.com/emilk/egui/pull/1175)). -* Added `Plot::allow_boxed_zoom()`, `Plot::boxed_zoom_pointer()` for boxed zooming on plots ([#1188](https://github.com/emilk/egui/pull/1188)). -* Added linked axis support for plots via `plot::LinkedAxisGroup` ([#1184](https://github.com/emilk/egui/pull/1184)). * Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). * Added `ui.weak(text)`. * Added `Context::move_to_top` and `Context::top_most_layer` for managing the layer on the top ([#1242](https://github.com/emilk/egui/pull/1242)). -* Added plot pointer coordinates with `Plot::coordinates_formatter`. ([#1235](https://github.com/emilk/egui/pull/1235)). -* Added `Slider::step_by` ([1255](https://github.com/emilk/egui/pull/1225)). +* Added `Slider::step_by` ([1225](https://github.com/emilk/egui/pull/1225)). * Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)). +* Added `Ui::scroll_to_rect` ([1252](https://github.com/emilk/egui/pull/1252)). ### Changed 🔧 * ⚠️ `Context::input` and `Ui::input` now locks a mutex. This can lead to a dead-lock is used in an `if let` binding! @@ -60,6 +62,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Fixed `enable_drag` for Windows ([#1108](https://github.com/emilk/egui/pull/1108)). * Calling `Context::set_pixels_per_point` before the first frame will now work. * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). +* Scroll areas now follow text cursor ([1252](https://github.com/emilk/egui/pull/1252)). ### Contributors 🙏 * [AlexxxRu](https://github.com/alexxxru): [#1108](https://github.com/emilk/egui/pull/1108). diff --git a/egui/src/containers/scroll_area.rs b/egui/src/containers/scroll_area.rs index daa6b83e..41681d95 100644 --- a/egui/src/containers/scroll_area.rs +++ b/egui/src/containers/scroll_area.rs @@ -498,7 +498,7 @@ impl Prepared { let clip_end = clip_rect.max[d]; let mut spacing = ui.spacing().item_spacing[d]; - if let Some(align) = align { + let delta = if let Some(align) = align { let center_factor = align.to_factor(); let offset = @@ -507,19 +507,20 @@ impl Prepared { // Depending on the alignment we need to add or subtract the spacing spacing *= remap(center_factor, 0.0..=1.0, -1.0..=1.0); - state.offset[d] = offset + spacing; + offset + spacing } else if start < clip_start && end < clip_end { - let min_adjust = - (clip_start - start + spacing).min(clip_end - end - spacing); - state.offset[d] -= min_adjust; + -(clip_start - start + spacing).min(clip_end - end - spacing) } else if end > clip_end && start > clip_start { - let min_adjust = - (end - clip_end + spacing).min(start - clip_start - spacing); - state.offset[d] += min_adjust; + (end - clip_end + spacing).min(start - clip_start - spacing) } else { // Ui is already in view, no need to adjust scroll. - continue; + 0.0 }; + + if delta != 0.0 { + state.offset[d] += delta; + ui.ctx().request_repaint(); + } } } } diff --git a/egui/src/response.rs b/egui/src/response.rs index e85626f6..5478fe10 100644 --- a/egui/src/response.rs +++ b/egui/src/response.rs @@ -443,10 +443,11 @@ impl Response { ) } - /// Adjust the scroll position until this UI becomes visible. If `align` is not provided, it'll scroll enough to - /// bring the UI into view. + /// Adjust the scroll position until this UI becomes visible. /// - /// See also [`Ui::scroll_to_cursor`] + /// If `align` is `None`, it'll scroll enough to bring the UI into view. + /// + /// See also: [`Ui::scroll_to_cursor`], [`Ui::scroll_to`]. /// /// ``` /// # egui::__run_test_ui(|ui| { diff --git a/egui/src/ui.rs b/egui/src/ui.rs index 2c14a3da..ae0d26cb 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -904,10 +904,36 @@ impl Ui { (response, painter) } - /// Adjust the scroll position until the cursor becomes visible. If `align` is not provided, it'll scroll enough to - /// bring the cursor into view. + /// Adjust the scroll position of any parent [`ScrollArea`] so that the given `Rect` becomes visible. /// - /// See also [`Response::scroll_to_me`] + /// If `align` is `None`, it'll scroll enough to bring the cursor into view. + /// + /// See also: [`Response::scroll_to_me`], [`Ui::scroll_to`]. + /// + /// ``` + /// # use egui::Align; + /// # egui::__run_test_ui(|ui| { + /// egui::ScrollArea::vertical().show(ui, |ui| { + /// // … + /// let response = ui.button("Center on me."); + /// if response.clicked() { + /// ui.scroll_to_rect(response.rect, Some(Align::Center)); + /// } + /// }); + /// # }); + /// ``` + pub fn scroll_to_rect(&self, rect: Rect, align: Option) { + for d in 0..2 { + let range = rect.min[d]..=rect.max[d]; + self.ctx().frame_state().scroll_target[d] = Some((range, align)); + } + } + + /// Adjust the scroll position of any parent [`ScrollArea`] so that the cursor (where the next widget goes) becomes visible. + /// + /// If `align` is not provided, it'll scroll enough to bring the cursor into view. + /// + /// See also: [`Response::scroll_to_me`], [`Ui::scroll_to`]. /// /// ``` /// # use egui::Align; @@ -924,7 +950,7 @@ impl Ui { /// }); /// # }); /// ``` - pub fn scroll_to_cursor(&mut self, align: Option) { + pub fn scroll_to_cursor(&self, align: Option) { let target = self.next_widget_position(); for d in 0..2 { let target = target[d]; diff --git a/egui/src/widgets/text_edit/builder.rs b/egui/src/widgets/text_edit/builder.rs index 1c956633..6dd52896 100644 --- a/egui/src/widgets/text_edit/builder.rs +++ b/egui/src/widgets/text_edit/builder.rs @@ -543,6 +543,14 @@ impl<'t> TextEdit<'t> { text_draw_pos -= vec2(offset_x, 0.0); } + let selection_changed = if let (Some(cursor_range), Some(prev_cursor_range)) = + (cursor_range, prev_cursor_range) + { + prev_cursor_range.as_ccursor_range() != cursor_range.as_ccursor_range() + } else { + false + }; + if ui.is_rect_visible(rect) { painter.galley(text_draw_pos, galley.clone()); @@ -561,7 +569,7 @@ impl<'t> TextEdit<'t> { // We paint the cursor on top of the text, in case // the text galley has backgrounds (as e.g. `code` snippets in markup do). paint_cursor_selection(ui, &painter, text_draw_pos, &galley, &cursor_range); - paint_cursor_end( + let cursor_pos = paint_cursor_end( ui, row_height, &painter, @@ -570,15 +578,14 @@ impl<'t> TextEdit<'t> { &cursor_range.primary, ); + if response.changed || selection_changed { + ui.scroll_to_rect(cursor_pos, None); // keep cursor in view + } + if interactive && text.is_mutable() { // egui_web uses `text_cursor_pos` when showing IME, // so only set it when text is editable and visible! - ui.ctx().output().text_cursor_pos = Some( - galley - .pos_from_cursor(&cursor_range.primary) - .translate(response.rect.min.to_vec2()) - .left_top(), - ); + ui.ctx().output().text_cursor_pos = Some(cursor_pos.left_top()); } } } @@ -586,14 +593,6 @@ impl<'t> TextEdit<'t> { state.clone().store(ui.ctx(), id); - let selection_changed = if let (Some(cursor_range), Some(prev_cursor_range)) = - (cursor_range, prev_cursor_range) - { - prev_cursor_range.as_ccursor_range() != cursor_range.as_ccursor_range() - } else { - false - }; - if response.changed { response.widget_info(|| { WidgetInfo::text_edit( @@ -887,7 +886,7 @@ fn paint_cursor_end( pos: Pos2, galley: &Galley, cursor: &Cursor, -) { +) -> Rect { let stroke = ui.visuals().selection.stroke; let mut cursor_pos = galley.pos_from_cursor(cursor).translate(pos.to_vec2()); @@ -915,6 +914,8 @@ fn paint_cursor_end( (width, stroke.color), ); } + + cursor_pos } // ---------------------------------------------------------------------------- From 4e316d32e5701ddb343eb2203b6f543340088d56 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 17 Feb 2022 16:45:42 +0100 Subject: [PATCH 17/51] Fix scroll_to with align Broke in https://github.com/emilk/egui/pull/1252 --- egui/src/containers/scroll_area.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/egui/src/containers/scroll_area.rs b/egui/src/containers/scroll_area.rs index 41681d95..e86a435c 100644 --- a/egui/src/containers/scroll_area.rs +++ b/egui/src/containers/scroll_area.rs @@ -507,7 +507,7 @@ impl Prepared { // Depending on the alignment we need to add or subtract the spacing spacing *= remap(center_factor, 0.0..=1.0, -1.0..=1.0); - offset + spacing + offset + spacing - state.offset[d] } else if start < clip_start && end < clip_end { -(clip_start - start + spacing).min(clip_end - end - spacing) } else if end > clip_end && start > clip_start { From b5c8f034e7ddf367e9010a40ad684028da0a5c0d Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 17 Feb 2022 16:46:43 +0100 Subject: [PATCH 18/51] Add web location info to egui_web/epi (#1258) This adds all parts of the web "location" (URL) to frame.info().web_info, included a HashMap of the query parameters, percent-decoded and ready to go. This lets you easily pass key-value pairs to your eframe web app. --- Cargo.lock | 1 + eframe/CHANGELOG.md | 1 + egui_demo_lib/src/backend_panel.rs | 6 +++ egui_demo_lib/src/wrap_app.rs | 2 +- egui_web/CHANGELOG.md | 1 + egui_web/Cargo.toml | 1 + egui_web/src/backend.rs | 73 +++++++++++++++++++++++++++++- egui_web/src/lib.rs | 23 ++++++++-- epi/src/lib.rs | 56 ++++++++++++++++++++++- 9 files changed, 156 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 63ebdb0f..1d0beef3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1101,6 +1101,7 @@ dependencies = [ "egui_glow", "epi", "js-sys", + "percent-encoding", "ron", "serde", "tracing", diff --git a/eframe/CHANGELOG.md b/eframe/CHANGELOG.md index 5b64eafa..d2861f73 100644 --- a/eframe/CHANGELOG.md +++ b/eframe/CHANGELOG.md @@ -14,6 +14,7 @@ NOTE: [`egui_web`](../egui_web/CHANGELOG.md), [`egui-winit`](../egui-winit/CHANG * Added `NativeOptions::initial_window_pos`. * Shift-scroll will now result in horizontal scrolling on all platforms ([#1136](https://github.com/emilk/egui/pull/1136)). * Log using the `tracing` crate. Log to stdout by adding `tracing_subscriber::fmt::init();` to your `main` ([#1192](https://github.com/emilk/egui/pull/1192)). +* Expose all parts of the location/url in `frame.info().web_info` ([#1258](https://github.com/emilk/egui/pull/1258)). ## 0.16.0 - 2021-12-29 diff --git a/egui_demo_lib/src/backend_panel.rs b/egui_demo_lib/src/backend_panel.rs index 81903af1..5ead1cce 100644 --- a/egui_demo_lib/src/backend_panel.rs +++ b/egui_demo_lib/src/backend_panel.rs @@ -172,6 +172,12 @@ impl BackendPanel { show_integration_name(ui, &frame.info()); + if let Some(web_info) = &frame.info().web_info { + ui.collapsing("Web info (location)", |ui| { + ui.monospace(format!("{:#?}", web_info.location)); + }); + } + // For instance: `egui_web` sets `pixels_per_point` every frame to force // egui to use the same scale as the web zoom factor. let integration_controls_pixels_per_point = ui.input().raw.pixels_per_point.is_some(); diff --git a/egui_demo_lib/src/wrap_app.rs b/egui_demo_lib/src/wrap_app.rs index d07bc072..2913e149 100644 --- a/egui_demo_lib/src/wrap_app.rs +++ b/egui_demo_lib/src/wrap_app.rs @@ -69,7 +69,7 @@ impl epi::App for WrapApp { fn update(&mut self, ctx: &egui::Context, frame: &epi::Frame) { if let Some(web_info) = frame.info().web_info.as_ref() { - if let Some(anchor) = web_info.web_location_hash.strip_prefix('#') { + if let Some(anchor) = web_info.location.hash.strip_prefix('#') { self.selected_anchor = anchor.to_owned(); } } diff --git a/egui_web/CHANGELOG.md b/egui_web/CHANGELOG.md index f76bdb30..99bbbce7 100644 --- a/egui_web/CHANGELOG.md +++ b/egui_web/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to the `egui_web` integration will be noted in this file. * Shift-scroll will now result in horizontal scrolling ([#1136](https://github.com/emilk/egui/pull/1136)). * Updated `epi::IntegrationInfo::web_location_hash` on `hashchange` event ([#1140](https://github.com/emilk/egui/pull/1140)). * Panics will now be logged using `console.error`. +* Parse and percent-decode the web location query string ([#1258](https://github.com/emilk/egui/pull/1258)). ## 0.16.0 - 2021-12-29 diff --git a/egui_web/Cargo.toml b/egui_web/Cargo.toml index 2210fa6d..a015ba21 100644 --- a/egui_web/Cargo.toml +++ b/egui_web/Cargo.toml @@ -57,6 +57,7 @@ epi = { version = "0.16.0", path = "../epi" } bytemuck = "1.7" js-sys = "0.3" +percent-encoding = "2.1" tracing = "0.1" wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" diff --git a/egui_web/src/backend.rs b/egui_web/src/backend.rs index 805e9603..570d02b1 100644 --- a/egui_web/src/backend.rs +++ b/egui_web/src/backend.rs @@ -81,6 +81,77 @@ impl epi::backend::RepaintSignal for NeedRepaint { // ---------------------------------------------------------------------------- +fn web_location() -> epi::Location { + let location = web_sys::window().unwrap().location(); + + let hash = percent_decode(&location.hash().unwrap_or_default()); + + let query = location + .search() + .unwrap_or_default() + .strip_prefix('?') + .map(percent_decode) + .unwrap_or_default(); + + let query_map = parse_query_map(&query) + .iter() + .map(|(k, v)| (k.to_string(), v.to_string())) + .collect(); + + epi::Location { + url: percent_decode(&location.href().unwrap_or_default()), + protocol: percent_decode(&location.protocol().unwrap_or_default()), + host: percent_decode(&location.host().unwrap_or_default()), + hostname: percent_decode(&location.hostname().unwrap_or_default()), + port: percent_decode(&location.port().unwrap_or_default()), + hash, + query, + query_map, + origin: percent_decode(&location.origin().unwrap_or_default()), + } +} + +fn parse_query_map(query: &str) -> BTreeMap<&str, &str> { + query + .split('&') + .filter_map(|pair| { + if pair.is_empty() { + None + } else { + Some(if let Some((key, value)) = pair.split_once('=') { + (key, value) + } else { + (pair, "") + }) + } + }) + .collect() +} + +#[test] +fn test_parse_query() { + assert_eq!(parse_query_map(""), BTreeMap::default()); + assert_eq!(parse_query_map("foo"), BTreeMap::from_iter([("foo", "")])); + assert_eq!( + parse_query_map("foo=bar"), + BTreeMap::from_iter([("foo", "bar")]) + ); + assert_eq!( + parse_query_map("foo=bar&baz=42"), + BTreeMap::from_iter([("foo", "bar"), ("baz", "42")]) + ); + assert_eq!( + parse_query_map("foo&baz=42"), + BTreeMap::from_iter([("foo", ""), ("baz", "42")]) + ); + assert_eq!( + parse_query_map("foo&baz&&"), + BTreeMap::from_iter([("foo", ""), ("baz", "")]) + ); +} + +// ---------------------------------------------------------------------------- + pub struct AppRunner { pub(crate) frame: epi::Frame, egui_ctx: egui::Context, @@ -108,7 +179,7 @@ impl AppRunner { info: epi::IntegrationInfo { name: painter.name(), web_info: Some(epi::WebInfo { - web_location_hash: location_hash().unwrap_or_default(), + location: web_location(), }), prefer_dark_mode, cpu_usage: None, diff --git a/egui_web/src/lib.rs b/egui_web/src/lib.rs index 7fcec9d1..a30dbf6e 100644 --- a/egui_web/src/lib.rs +++ b/egui_web/src/lib.rs @@ -33,6 +33,7 @@ pub use web_sys; pub use painter::Painter; use std::cell::Cell; +use std::collections::BTreeMap; use std::rc::Rc; use std::sync::Arc; use wasm_bindgen::prelude::*; @@ -353,9 +354,23 @@ pub fn open_url(url: &str, new_tab: bool) -> Option<()> { Some(()) } -/// e.g. "#fragment" part of "www.example.com/index.html#fragment" -pub fn location_hash() -> Option { - web_sys::window()?.location().hash().ok() +/// e.g. "#fragment" part of "www.example.com/index.html#fragment", +/// +/// Percent decoded +pub fn location_hash() -> String { + percent_decode( + &web_sys::window() + .unwrap() + .location() + .hash() + .unwrap_or_default(), + ) +} + +pub fn percent_decode(s: &str) -> String { + percent_encoding::percent_decode_str(s) + .decode_utf8_lossy() + .to_string() } /// Web sends all keys as strings, so it is up to us to figure out if it is @@ -661,7 +676,7 @@ fn install_document_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { // `epi::Frame::info(&self)` clones `epi::IntegrationInfo`, but we need to modify the original here if let Some(web_info) = &mut frame_lock.info.web_info { - web_info.web_location_hash = location_hash().unwrap_or_default(); + web_info.location.hash = location_hash(); } }) as Box); window.add_event_listener_with_callback("hashchange", closure.as_ref().unchecked_ref())?; diff --git a/epi/src/lib.rs b/epi/src/lib.rs index 7d646cfd..b0dda591 100644 --- a/epi/src/lib.rs +++ b/epi/src/lib.rs @@ -361,10 +361,62 @@ impl Frame { /// Information about the web environment (if applicable). #[derive(Clone, Debug)] pub struct WebInfo { - /// e.g. "#fragment" part of "www.example.com/index.html#fragment". + /// Information about the URL. + pub location: Location, +} + +/// Information about the URL. +/// +/// Everything has been percent decoded (`%20` -> ` ` etc). +#[derive(Clone, Debug)] +pub struct Location { + /// The full URL (`location.href`) without the hash. + /// + /// Example: "http://www.example.com:80/index.html?foo=bar". + pub url: String, + + /// `location.protocol` + /// + /// Example: "http:". + pub protocol: String, + + /// `location.host` + /// + /// Example: "example.com:80". + pub host: String, + + /// `location.hostname` + /// + /// Example: "example.com". + pub hostname: String, + + /// `location.port` + /// + /// Example: "80". + pub port: String, + + /// The "#fragment" part of "www.example.com/index.html?query#fragment". + /// /// Note that the leading `#` is included in the string. /// Also known as "hash-link" or "anchor". - pub web_location_hash: String, + pub hash: String, + + /// The "query" part of "www.example.com/index.html?query#fragment". + /// + /// Note that the leading `?` is NOT included in the string. + /// + /// Use [`Self::web_query_map]` to get the parsed version of it. + pub query: String, + + /// The parsed "query" part of "www.example.com/index.html?query#fragment". + /// + /// "foo=42&bar%20" is parsed as `{"foo": "42", "bar ": ""}` + pub query_map: std::collections::BTreeMap, + + /// `location.origin` + /// + /// Example: "http://www.example.com:80" + pub origin: String, } /// Information about the integration passed to the use app each frame. From 3d754e3a164b877135305a0376ec447fbff4fb94 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 17 Feb 2022 17:08:05 +0100 Subject: [PATCH 19/51] Prevent ScrollArea:s from becoming tiny (#1255) Closes https://github.com/emilk/egui/issues/1097 --- CHANGELOG.md | 2 +- eframe/CHANGELOG.md | 1 + egui/src/containers/scroll_area.rs | 53 +++++++++++++++++++++++++----- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa86e9d9..636c3886 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,11 +55,11 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Renamed `Plot::custom_label_func` to `Plot::label_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)). * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). * `Areas::layer_id_at` ignores non interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). +* `ScrollArea`:s will not shrink below a certain minimum size, set by `min_scrolled_width/min_scrolled_height` ([1255](https://github.com/emilk/egui/pull/1255)). ### Fixed 🐛 * Context menus now respects the theme ([#1043](https://github.com/emilk/egui/pull/1043)). * Plot `Orientation` was not public, although fields using this type were ([#1130](https://github.com/emilk/egui/pull/1130)). -* Fixed `enable_drag` for Windows ([#1108](https://github.com/emilk/egui/pull/1108)). * Calling `Context::set_pixels_per_point` before the first frame will now work. * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). * Scroll areas now follow text cursor ([1252](https://github.com/emilk/egui/pull/1252)). diff --git a/eframe/CHANGELOG.md b/eframe/CHANGELOG.md index d2861f73..77842f5c 100644 --- a/eframe/CHANGELOG.md +++ b/eframe/CHANGELOG.md @@ -12,6 +12,7 @@ NOTE: [`egui_web`](../egui_web/CHANGELOG.md), [`egui-winit`](../egui-winit/CHANG * Fix horizontal scrolling direction on Linux. * Added `App::on_exit_event` ([#1038](https://github.com/emilk/egui/pull/1038)) * Added `NativeOptions::initial_window_pos`. +* Fixed `enable_drag` for Windows ([#1108](https://github.com/emilk/egui/pull/1108)). * Shift-scroll will now result in horizontal scrolling on all platforms ([#1136](https://github.com/emilk/egui/pull/1136)). * Log using the `tracing` crate. Log to stdout by adding `tracing_subscriber::fmt::init();` to your `main` ([#1192](https://github.com/emilk/egui/pull/1192)). * Expose all parts of the location/url in `frame.info().web_info` ([#1258](https://github.com/emilk/egui/pull/1258)). diff --git a/egui/src/containers/scroll_area.rs b/egui/src/containers/scroll_area.rs index e86a435c..3d9254ae 100644 --- a/egui/src/containers/scroll_area.rs +++ b/egui/src/containers/scroll_area.rs @@ -81,6 +81,7 @@ pub struct ScrollArea { has_bar: [bool; 2], auto_shrink: [bool; 2], max_size: Vec2, + min_scrolled_size: Vec2, always_show_scroll: bool, id_source: Option, offset_x: Option, @@ -123,6 +124,7 @@ impl ScrollArea { has_bar, auto_shrink: [true; 2], max_size: Vec2::INFINITY, + min_scrolled_size: Vec2::splat(64.0), always_show_scroll: false, id_source: None, offset_x: None, @@ -152,6 +154,28 @@ impl ScrollArea { self } + /// The minimum width of a horizontal scroll area which requires scroll bars. + /// + /// The `ScrollArea` will only become smaller than this if the content is smaller than this + /// (and so we don't require scroll bars). + /// + /// Default: `64.0`. + pub fn min_scrolled_width(mut self, min_scrolled_width: f32) -> Self { + self.min_scrolled_size.x = min_scrolled_width; + self + } + + /// The minimum height of a vertical scroll area which requires scroll bars. + /// + /// The `ScrollArea` will only become smaller than this if the content is smaller than this + /// (and so we don't require scroll bars). + /// + /// Default: `64.0`. + pub fn min_scrolled_height(mut self, min_scrolled_height: f32) -> Self { + self.min_scrolled_size.y = min_scrolled_height; + self + } + /// If `false` (default), the scroll bar will be hidden when not needed/ /// If `true`, the scroll bar will always be displayed even if not needed. pub fn always_show_scroll(mut self, always_show_scroll: bool) -> Self { @@ -288,6 +312,7 @@ impl ScrollArea { has_bar, auto_shrink, max_size, + min_scrolled_size, always_show_scroll, id_source, offset_x, @@ -329,27 +354,39 @@ impl ScrollArea { let outer_size = available_outer.size().at_most(max_size); - let inner_size = outer_size - current_bar_use; + let inner_size = { + let mut inner_size = outer_size - current_bar_use; + + // Don't go so far that we shrink to zero. + // In particular, if we put a `ScrollArea` inside of a `ScrollArea`, the inner + // one shouldn't collapse into nothingness. + // See https://github.com/emilk/egui/issues/1097 + for d in 0..2 { + if has_bar[d] { + inner_size[d] = inner_size[d].max(min_scrolled_size[d]); + } + } + inner_size + }; + let inner_rect = Rect::from_min_size(available_outer.min, inner_size); - let mut inner_child_max_size = inner_size; + let mut content_max_size = inner_size; if true { // Tell the inner Ui to *try* to fit the content without needing to scroll, - // i.e. better to wrap text than showing a horizontal scrollbar! + // i.e. better to wrap text and shrink images than showing a horizontal scrollbar! } else { // Tell the inner Ui to use as much space as possible, we can scroll to see it! for d in 0..2 { if has_bar[d] { - inner_child_max_size[d] = f32::INFINITY; + content_max_size[d] = f32::INFINITY; } } } - let mut content_ui = ui.child_ui( - Rect::from_min_size(inner_rect.min - state.offset, inner_child_max_size), - *ui.layout(), - ); + let content_max_rect = Rect::from_min_size(inner_rect.min - state.offset, content_max_size); + let mut content_ui = ui.child_ui(content_max_rect, *ui.layout()); let mut content_clip_rect = inner_rect.expand(ui.visuals().clip_rect_margin); content_clip_rect = content_clip_rect.intersect(ui.clip_rect()); // Nice handling of forced resizing beyond the possible: From 6abdde0334e9300ebe11f970a870a79cd3010835 Mon Sep 17 00:00:00 2001 From: Urho Laukkarinen Date: Thu, 17 Feb 2022 18:08:13 +0200 Subject: [PATCH 20/51] Add more source code links to demos (#1260) --- egui_demo_lib/src/apps/demo/code_example.rs | 4 ++++ egui_demo_lib/src/apps/demo/context_menu.rs | 3 +++ egui_demo_lib/src/apps/demo/font_book.rs | 4 ++++ egui_demo_lib/src/apps/demo/paint_bezier.rs | 6 +++--- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/egui_demo_lib/src/apps/demo/code_example.rs b/egui_demo_lib/src/apps/demo/code_example.rs index 5c62e606..2047fa19 100644 --- a/egui_demo_lib/src/apps/demo/code_example.rs +++ b/egui_demo_lib/src/apps/demo/code_example.rs @@ -83,6 +83,10 @@ impl super::View for CodeExample { fn ui(&mut self, ui: &mut egui::Ui) { use crate::syntax_highlighting::code_view_ui; + ui.vertical_centered(|ui| { + ui.add(crate::__egui_github_link_file!()); + }); + code_view_ui( ui, r" diff --git a/egui_demo_lib/src/apps/demo/context_menu.rs b/egui_demo_lib/src/apps/demo/context_menu.rs index bd812365..4476c1ec 100644 --- a/egui_demo_lib/src/apps/demo/context_menu.rs +++ b/egui_demo_lib/src/apps/demo/context_menu.rs @@ -105,6 +105,9 @@ impl super::View for ContextMenus { }); }); }); + ui.vertical_centered(|ui| { + ui.add(crate::__egui_github_link_file!()); + }); } } diff --git a/egui_demo_lib/src/apps/demo/font_book.rs b/egui_demo_lib/src/apps/demo/font_book.rs index 3a5a2ef6..b4265467 100644 --- a/egui_demo_lib/src/apps/demo/font_book.rs +++ b/egui_demo_lib/src/apps/demo/font_book.rs @@ -31,6 +31,10 @@ impl super::Demo for FontBook { impl super::View for FontBook { fn ui(&mut self, ui: &mut egui::Ui) { + ui.vertical_centered(|ui| { + ui.add(crate::__egui_github_link_file!()); + }); + ui.label(format!( "The selected font supports {} characters.", self.named_chars diff --git a/egui_demo_lib/src/apps/demo/paint_bezier.rs b/egui_demo_lib/src/apps/demo/paint_bezier.rs index 3d1cc547..d315b7b2 100644 --- a/egui_demo_lib/src/apps/demo/paint_bezier.rs +++ b/egui_demo_lib/src/apps/demo/paint_bezier.rs @@ -242,9 +242,9 @@ impl super::Demo for PaintBezier { impl super::View for PaintBezier { fn ui(&mut self, ui: &mut Ui) { - // ui.vertical_centered(|ui| { - // ui.add(crate::__egui_github_link_file!()); - // }); + ui.vertical_centered(|ui| { + ui.add(crate::__egui_github_link_file!()); + }); self.ui_control(ui); Frame::dark_canvas(ui.style()).show(ui, |ui| { From e746e3a58b6ac2eed06ade989e51ca05bad60a28 Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Sat, 19 Feb 2022 06:41:31 -0300 Subject: [PATCH 21/51] Light edits on README.md (#1246) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e440b2d..99381df3 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Light Theme: ## Integrations -egui is build to be easy to integrate into any existing game engine or platform you are working on. +egui is built to be easy to integrate into any existing game engine or platform you are working on. egui itself doesn't know or care on what OS it is running or how to render things to the screen - that is the job of the egui integration. An integration needs to do the following each frame: @@ -160,7 +160,7 @@ An integration needs to do the following each frame: ### Official integrations -If you making an app, your best bet is using [`eframe`](https://github.com/emilk/egui/tree/master/eframe), the official egui framework. It lets you write apps that works on both the web and native. `eframe` is just a thin wrapper over `egui_web` and `egui_glium` (see below). +If you're making an app, your best bet is using [`eframe`](https://github.com/emilk/egui/tree/master/eframe), the official egui framework. It lets you write apps that work on both the web and native. `eframe` is just a thin wrapper over `egui_web` and `egui_glium` (see below). These are the official egui integrations: From 8e62b382fd1ac325fe7d4bc1777330ccb0e705e8 Mon Sep 17 00:00:00 2001 From: Benedikt Terhechte Date: Sat, 19 Feb 2022 10:42:43 +0100 Subject: [PATCH 22/51] Add some macOS emacs keybindings (#1243) Move cursor left: ^B Move cursor right: ^F Beginning of line: ^A End of line: ^E Line up: ^P Line down: ^N --- CHANGELOG.md | 1 + egui/src/widgets/text_edit/builder.rs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 636c3886..fa7b174b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w ## Unreleased ### Added ⭐ +* Support a subset of macOS' emacs input field keybindings in `TextEdit` ([#1243](https://github.com/emilk/egui/pull/1243). * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`. * Easily change text styles with `Style::text_styles`. diff --git a/egui/src/widgets/text_edit/builder.rs b/egui/src/widgets/text_edit/builder.rs index 6dd52896..8d6b6fb9 100644 --- a/egui/src/widgets/text_edit/builder.rs +++ b/egui/src/widgets/text_edit/builder.rs @@ -1092,11 +1092,31 @@ fn on_key_press( None } + Key::P | Key::N | Key::B | Key::F | Key::A | Key::E + if cfg!(target_os = "macos") && modifiers.ctrl && !modifiers.shift => + { + move_single_cursor(&mut cursor_range.primary, galley, key, modifiers); + cursor_range.secondary = cursor_range.primary; + None + } + _ => None, } } fn move_single_cursor(cursor: &mut Cursor, galley: &Galley, key: Key, modifiers: &Modifiers) { + if cfg!(target_os = "macos") && modifiers.ctrl && !modifiers.shift { + match key { + Key::A => *cursor = galley.cursor_begin_of_row(cursor), + Key::E => *cursor = galley.cursor_end_of_row(cursor), + Key::P => *cursor = galley.cursor_up_one_row(cursor), + Key::N => *cursor = galley.cursor_down_one_row(cursor), + Key::B => *cursor = galley.cursor_left_one_character(cursor), + Key::F => *cursor = galley.cursor_right_one_character(cursor), + _ => (), + } + return; + } match key { Key::ArrowLeft => { if modifiers.alt || modifiers.ctrl { From 989a6d202f38c3223bfc5ed5fe4b2edf41fda44a Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 10:58:07 +0100 Subject: [PATCH 23/51] Slider: return drag_started,dragged,drag_released if value was dragged Closes https://github.com/emilk/egui/issues/1269 --- egui/src/widgets/slider.rs | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/egui/src/widgets/slider.rs b/egui/src/widgets/slider.rs index 0dd3e76e..a5fac31d 100644 --- a/egui/src/widgets/slider.rs +++ b/egui/src/widgets/slider.rs @@ -300,10 +300,10 @@ impl<'a> Slider<'a> { impl<'a> Slider<'a> { /// Just the slider, no text - fn allocate_slider_space(&self, ui: &mut Ui, perpendicular: f32) -> Response { + fn allocate_slider_space(&self, ui: &mut Ui, thickness: f32) -> Response { let desired_size = match self.orientation { - SliderOrientation::Horizontal => vec2(ui.spacing().slider_width, perpendicular), - SliderOrientation::Vertical => vec2(perpendicular, ui.spacing().slider_width), + SliderOrientation::Horizontal => vec2(ui.spacing().slider_width, thickness), + SliderOrientation::Vertical => vec2(thickness, ui.spacing().slider_width), }; ui.allocate_response(desired_size, Sense::click_and_drag()) } @@ -453,15 +453,7 @@ impl<'a> Slider<'a> { } } - fn label_ui(&mut self, ui: &mut Ui) { - if !self.text.is_empty() { - let text_color = self.text_color.unwrap_or_else(|| ui.visuals().text_color()); - let text = RichText::new(&self.text).color(text_color); - ui.add(Label::new(text).wrap(false)); - } - } - - fn value_ui(&mut self, ui: &mut Ui, position_range: RangeInclusive) { + fn value_ui(&mut self, ui: &mut Ui, position_range: RangeInclusive) -> Response { // If `DragValue` is controlled from the keyboard and `step` is defined, set speed to `step` let change = ui.input().num_presses(Key::ArrowUp) as i32 + ui.input().num_presses(Key::ArrowRight) as i32 @@ -472,7 +464,7 @@ impl<'a> Slider<'a> { _ => self.current_gradient(&position_range), }; let mut value = self.get_value(); - ui.add( + let response = ui.add( DragValue::new(&mut value) .speed(speed) .clamp_range(self.clamp_range()) @@ -484,6 +476,7 @@ impl<'a> Slider<'a> { if value != self.get_value() { self.set_value(value); } + response } /// delta(value) / delta(points) @@ -499,21 +492,24 @@ impl<'a> Slider<'a> { } fn add_contents(&mut self, ui: &mut Ui) -> Response { - let perpendicular = ui + let thickness = ui .text_style_height(&TextStyle::Body) .at_least(ui.spacing().interact_size.y); - let slider_response = self.allocate_slider_space(ui, perpendicular); - self.slider_ui(ui, &slider_response); + let mut response = self.allocate_slider_space(ui, thickness); + self.slider_ui(ui, &response); if self.show_value { - let position_range = self.position_range(&slider_response.rect); - self.value_ui(ui, position_range); + let position_range = self.position_range(&response.rect); + response |= self.value_ui(ui, position_range); } if !self.text.is_empty() { - self.label_ui(ui); + let text_color = self.text_color.unwrap_or_else(|| ui.visuals().text_color()); + let text = RichText::new(&self.text).color(text_color); + ui.add(Label::new(text).wrap(false)); } - slider_response + + response } } From 0d21405855e6fd431f3a8ee5b8c9300963667f1f Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 11:05:02 +0100 Subject: [PATCH 24/51] Fix: DragValue correctly reports gained_focus --- egui/src/widgets/drag_value.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/egui/src/widgets/drag_value.rs b/egui/src/widgets/drag_value.rs index 0c788184..54ce87fc 100644 --- a/egui/src/widgets/drag_value.rs +++ b/egui/src/widgets/drag_value.rs @@ -180,7 +180,7 @@ impl<'a> Widget for DragValue<'a> { emath::format_with_decimals_in_range(value, auto_decimals..=max_decimals) }; - let kb_edit_id = ui.auto_id_with("edit"); + let kb_edit_id = ui.next_auto_id(); let is_kb_editing = ui.memory().has_focus(kb_edit_id); let mut response = if is_kb_editing { From 3ed68274b09243f425f898ac4ae7a8b0206a81ff Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 11:12:09 +0100 Subject: [PATCH 25/51] Make `Slider` report gained_focus,has_focus,lost_focus from DragValue Closes https://github.com/emilk/egui/issues/1268 --- egui/src/widgets/slider.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/egui/src/widgets/slider.rs b/egui/src/widgets/slider.rs index a5fac31d..f9285fe2 100644 --- a/egui/src/widgets/slider.rs +++ b/egui/src/widgets/slider.rs @@ -500,7 +500,18 @@ impl<'a> Slider<'a> { if self.show_value { let position_range = self.position_range(&response.rect); - response |= self.value_ui(ui, position_range); + let value_response = self.value_ui(ui, position_range); + if value_response.gained_focus() + || value_response.has_focus() + || value_response.lost_focus() + { + // Use the `DragValue` id as the id of the whole widget, + // so that the focus events work as expected. + response = value_response | response; + } else { + // Use the slider id as the id for the whole widget + response = response | value_response; + } } if !self.text.is_empty() { From aa53522179daa35a0ec55442b67fd429b6f9c195 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 19:56:12 +0100 Subject: [PATCH 26/51] Slider event fixes (#1270) * Slider: return drag_started,dragged,drag_released if value was dragged Closes https://github.com/emilk/egui/issues/1269 * Fix: DragValue correctly reports gained_focus * Make `Slider` report gained_focus,has_focus,lost_focus from DragValue Closes https://github.com/emilk/egui/issues/1268 --- CHANGELOG.md | 1 + egui/src/response.rs | 2 ++ egui/src/widgets/slider.rs | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa7b174b..3a7ca6bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Calling `Context::set_pixels_per_point` before the first frame will now work. * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). * Scroll areas now follow text cursor ([1252](https://github.com/emilk/egui/pull/1252)). +* Slider: correctly respond with drag and focus events when interacting with the value directly ([1270](https://github.com/emilk/egui/pull/1270)). ### Contributors 🙏 * [AlexxxRu](https://github.com/alexxxru): [#1108](https://github.com/emilk/egui/pull/1108). diff --git a/egui/src/response.rs b/egui/src/response.rs index 5478fe10..29bb5626 100644 --- a/egui/src/response.rs +++ b/egui/src/response.rs @@ -510,6 +510,8 @@ impl Response { impl Response { /// A logical "or" operation. /// For instance `a.union(b).hovered` means "was either a or b hovered?". + /// + /// The resulting [`Self::id`] will come from the first (`self`) argument. pub fn union(&self, other: Self) -> Self { assert!(self.ctx == other.ctx); crate::egui_assert!( diff --git a/egui/src/widgets/slider.rs b/egui/src/widgets/slider.rs index f9285fe2..23480abe 100644 --- a/egui/src/widgets/slider.rs +++ b/egui/src/widgets/slider.rs @@ -507,10 +507,10 @@ impl<'a> Slider<'a> { { // Use the `DragValue` id as the id of the whole widget, // so that the focus events work as expected. - response = value_response | response; + response = value_response.union(response); } else { // Use the slider id as the id for the whole widget - response = response | value_response; + response = response.union(value_response); } } From 3a5ec4733f956f07a8977691edef60409aa60ed3 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 20:18:27 +0100 Subject: [PATCH 27/51] Fix bug when debug-painting clip rectangles --- epaint/src/tessellator.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/epaint/src/tessellator.rs b/epaint/src/tessellator.rs index 2db85348..ec16b3ad 100644 --- a/epaint/src/tessellator.rs +++ b/epaint/src/tessellator.rs @@ -1026,16 +1026,20 @@ pub fn tessellate_shapes( if options.debug_paint_clip_rects { for ClippedMesh(clip_rect, mesh) in &mut clipped_meshes { - tessellator.clip_rect = Rect::EVERYTHING; - tessellator.tessellate_shape( - tex_size, - Shape::rect_stroke( - *clip_rect, - 0.0, - Stroke::new(2.0, Color32::from_rgb(150, 255, 150)), - ), - mesh, - ); + if mesh.texture_id == TextureId::default() { + tessellator.clip_rect = Rect::EVERYTHING; + tessellator.tessellate_shape( + tex_size, + Shape::rect_stroke( + *clip_rect, + 0.0, + Stroke::new(2.0, Color32::from_rgb(150, 255, 150)), + ), + mesh, + ); + } else { + // TODO: create a new `ClippedMesh` just for the painted clip rectangle + } } } From 10634fc344296dd0549414f8707c9fc526c3f4c8 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 20:28:25 +0100 Subject: [PATCH 28/51] =?UTF-8?q?Improve=20the=20B=C3=A9zier=20demo:=20dra?= =?UTF-8?q?g=20control=20points=20and=20simplify=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to https://github.com/emilk/egui/pull/1178 --- .../src/apps/demo/demo_app_windows.rs | 2 +- egui_demo_lib/src/apps/demo/paint_bezier.rs | 286 +++++++----------- epaint/src/bezier.rs | 79 ++--- 3 files changed, 150 insertions(+), 217 deletions(-) diff --git a/egui_demo_lib/src/apps/demo/demo_app_windows.rs b/egui_demo_lib/src/apps/demo/demo_app_windows.rs index 6c4b69e7..f6eb1600 100644 --- a/egui_demo_lib/src/apps/demo/demo_app_windows.rs +++ b/egui_demo_lib/src/apps/demo/demo_app_windows.rs @@ -16,6 +16,7 @@ struct Demos { impl Default for Demos { fn default() -> Self { Self::from_demos(vec![ + Box::new(super::paint_bezier::PaintBezier::default()), Box::new(super::code_editor::CodeEditor::default()), Box::new(super::code_example::CodeExample::default()), Box::new(super::context_menu::ContextMenus::default()), @@ -25,7 +26,6 @@ impl Default for Demos { Box::new(super::MiscDemoWindow::default()), Box::new(super::multi_touch::MultiTouch::default()), Box::new(super::painting::Painting::default()), - Box::new(super::paint_bezier::PaintBezier::default()), Box::new(super::plot_demo::PlotDemo::default()), Box::new(super::scrolling::Scrolling::default()), Box::new(super::sliders::Sliders::default()), diff --git a/egui_demo_lib/src/apps/demo/paint_bezier.rs b/egui_demo_lib/src/apps/demo/paint_bezier.rs index d315b7b2..d96e68a4 100644 --- a/egui_demo_lib/src/apps/demo/paint_bezier.rs +++ b/egui_demo_lib/src/apps/demo/paint_bezier.rs @@ -1,52 +1,40 @@ -use egui::emath::RectTransform; -use egui::epaint::{CircleShape, CubicBezierShape, QuadraticBezierShape}; +use egui::epaint::{CubicBezierShape, PathShape, QuadraticBezierShape}; use egui::*; #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] #[cfg_attr(feature = "serde", serde(default))] pub struct PaintBezier { - /// Current bezier curve degree, it can be 3, 4. - bezier: usize, - /// Track the bezier degree before change in order to clean the remaining points. - degree_backup: usize, - /// Points already clicked. once it reaches the 'bezier' degree, it will be pushed into the 'shapes' - points: Vec, - /// Track last points set in order to draw auxiliary lines. - backup_points: Vec, - /// Quadratic shapes already drawn. - q_shapes: Vec, - /// Cubic shapes already drawn. - /// Since `Shape` can't be 'serialized', we can't use Shape as variable type. - c_shapes: Vec, + /// Bézier curve degree, it can be 3, 4. + degree: usize, + /// The control points. The [`Self::degree`] first of them are used. + control_points: [Pos2; 4], + + /// Stroke for Bézier curve. + stroke: Stroke, + + /// Fill for Bézier curve. + fill: Color32, + /// Stroke for auxiliary lines. aux_stroke: Stroke, - /// Stroke for bezier curve. - stroke: Stroke, - /// Fill for bezier curve. - fill: Color32, - /// The curve should be closed or not. - closed: bool, - /// Display the bounding box or not. - show_bounding_box: bool, - /// Storke for the bounding box. + bounding_box_stroke: Stroke, } impl Default for PaintBezier { fn default() -> Self { Self { - bezier: 4, // default bezier degree, a cubic bezier curve - degree_backup: 4, - points: Default::default(), - backup_points: Default::default(), - q_shapes: Default::default(), - c_shapes: Default::default(), - aux_stroke: Stroke::new(1.0, Color32::RED), + degree: 4, + control_points: [ + pos2(50.0, 50.0), + pos2(60.0, 150.0), + pos2(140.0, 150.0), + pos2(150.0, 50.0), + ], stroke: Stroke::new(1.0, Color32::LIGHT_BLUE), - fill: Default::default(), - closed: false, - show_bounding_box: false, - bounding_box_stroke: Stroke::new(1.0, Color32::LIGHT_GREEN), + fill: Color32::from_rgb(50, 100, 150).linear_multiply(0.25), + aux_stroke: Stroke::new(1.0, Color32::RED.linear_multiply(0.25)), + bounding_box_stroke: Stroke::new(0.0, Color32::LIGHT_GREEN.linear_multiply(0.25)), } } } @@ -55,187 +43,125 @@ impl PaintBezier { pub fn ui_control(&mut self, ui: &mut egui::Ui) -> egui::Response { ui.horizontal(|ui| { ui.vertical(|ui| { + ui.radio_value(&mut self.degree, 3, "Quadratic Bézier"); + ui.radio_value(&mut self.degree, 4, "Cubic Bézier"); + ui.label("Move the points by dragging them."); + ui.label("Only convex curves can be accurately filled.") + }); + + ui.separator(); + + ui.vertical(|ui| { + ui.horizontal(|ui| { + ui.label("Fill color:"); + ui.color_edit_button_srgba(&mut self.fill); + }); egui::stroke_ui(ui, &mut self.stroke, "Curve Stroke"); egui::stroke_ui(ui, &mut self.aux_stroke, "Auxiliary Stroke"); - ui.horizontal(|ui| { - ui.label("Fill Color:"); - if ui.color_edit_button_srgba(&mut self.fill).changed() - && self.fill != Color32::TRANSPARENT - { - self.closed = true; - } - if ui.checkbox(&mut self.closed, "Closed").clicked() && !self.closed { - self.fill = Color32::TRANSPARENT; - } - }); egui::stroke_ui(ui, &mut self.bounding_box_stroke, "Bounding Box Stroke"); }); ui.separator(); - ui.vertical(|ui| { - { - let mut tessellation_options = *(ui.ctx().tessellation_options()); - let tessellation_options = &mut tessellation_options; - tessellation_options.ui(ui); - let mut new_tessellation_options = ui.ctx().tessellation_options(); - *new_tessellation_options = *tessellation_options; - } - ui.checkbox(&mut self.show_bounding_box, "Bounding Box"); - }); - ui.separator(); ui.vertical(|ui| { - if ui.radio_value(&mut self.bezier, 3, "Quadratic").clicked() - && self.degree_backup != self.bezier - { - self.points.clear(); - self.degree_backup = self.bezier; - }; - if ui.radio_value(&mut self.bezier, 4, "Cubic").clicked() - && self.degree_backup != self.bezier - { - self.points.clear(); - self.degree_backup = self.bezier; - }; - // ui.radio_value(self.bezier, 5, "Quintic"); - ui.label("Click 3 or 4 points to build a bezier curve!"); - if ui.button("Clear Painting").clicked() { - self.points.clear(); - self.backup_points.clear(); - self.q_shapes.clear(); - self.c_shapes.clear(); - } - }) + ui.label("Global tessellation options:"); + let mut tessellation_options = *(ui.ctx().tessellation_options()); + let tessellation_options = &mut tessellation_options; + tessellation_options.ui(ui); + let mut new_tessellation_options = ui.ctx().tessellation_options(); + *new_tessellation_options = *tessellation_options; + }); }) .response } pub fn ui_content(&mut self, ui: &mut Ui) -> egui::Response { - let (mut response, painter) = - ui.allocate_painter(ui.available_size_before_wrap(), Sense::click()); + let (response, painter) = + ui.allocate_painter(Vec2::new(ui.available_width(), 300.0), Sense::hover()); let to_screen = emath::RectTransform::from_to( - Rect::from_min_size(Pos2::ZERO, response.rect.square_proportions()), + Rect::from_min_size(Pos2::ZERO, response.rect.size()), response.rect, ); - let from_screen = to_screen.inverse(); - if response.clicked() { - if let Some(pointer_pos) = response.interact_pointer_pos() { - let canvas_pos = from_screen * pointer_pos; - self.points.push(canvas_pos); - if self.points.len() >= self.bezier { - self.backup_points = self.points.clone(); - let points = self.points.drain(..).collect::>(); - match points.len() { - 3 => { - let quadratic = QuadraticBezierShape::from_points_stroke( - points, - self.closed, - self.fill, - self.stroke, - ); - self.q_shapes.push(quadratic); - } - 4 => { - let cubic = CubicBezierShape::from_points_stroke( - points, - self.closed, - self.fill, - self.stroke, - ); - self.c_shapes.push(cubic); - } - _ => { - unreachable!(); - } - } - } + let control_point_radius = 8.0; - response.mark_changed(); - } - } - let mut shapes = Vec::new(); - for shape in self.q_shapes.iter() { - shapes.push(shape.to_screen(&to_screen).into()); - if self.show_bounding_box { - shapes.push(self.build_bounding_box(shape.bounding_rect(), &to_screen)); - } - } - for shape in self.c_shapes.iter() { - shapes.push(shape.to_screen(&to_screen).into()); - if self.show_bounding_box { - shapes.push(self.build_bounding_box(shape.bounding_rect(), &to_screen)); - } - } - painter.extend(shapes); + let mut control_point_shapes = vec![]; - if !self.points.is_empty() { - painter.extend(build_auxiliary_line( - &self.points, - &to_screen, - &self.aux_stroke, - )); - } else if !self.backup_points.is_empty() { - painter.extend(build_auxiliary_line( - &self.backup_points, - &to_screen, - &self.aux_stroke, + for (i, point) in self.control_points.iter_mut().enumerate().take(self.degree) { + let size = Vec2::splat(2.0 * control_point_radius); + + let point_in_screen = to_screen.transform_pos(*point); + let point_rect = Rect::from_center_size(point_in_screen, size); + let point_id = response.id.with(i); + let point_response = ui.interact(point_rect, point_id, Sense::drag()); + + *point += point_response.drag_delta(); + *point = to_screen.from().clamp(*point); + + let point_in_screen = to_screen.transform_pos(*point); + let stroke = ui.style().interact(&point_response).fg_stroke; + + control_point_shapes.push(Shape::circle_stroke( + point_in_screen, + control_point_radius, + stroke, )); } + let points_in_screen: Vec = self + .control_points + .iter() + .take(self.degree) + .map(|p| to_screen * *p) + .collect(); + + match self.degree { + 3 => { + let points = points_in_screen.clone().try_into().unwrap(); + let shape = + QuadraticBezierShape::from_points_stroke(points, true, self.fill, self.stroke); + painter.add(epaint::RectShape::stroke( + shape.bounding_rect(), + 0.0, + self.bounding_box_stroke, + )); + painter.add(shape); + } + 4 => { + let points = points_in_screen.clone().try_into().unwrap(); + let shape = + CubicBezierShape::from_points_stroke(points, true, self.fill, self.stroke); + painter.add(epaint::RectShape::stroke( + shape.bounding_rect(), + 0.0, + self.bounding_box_stroke, + )); + painter.add(shape); + } + _ => { + unreachable!(); + } + }; + + painter.add(PathShape::line(points_in_screen, self.aux_stroke)); + painter.extend(control_point_shapes); + response } - - pub fn build_bounding_box(&self, bbox: Rect, to_screen: &RectTransform) -> Shape { - let bbox = Rect { - min: to_screen * bbox.min, - max: to_screen * bbox.max, - }; - let bbox_shape = epaint::RectShape::stroke(bbox, 0.0, self.bounding_box_stroke); - bbox_shape.into() - } -} - -/// An internal function to create auxiliary lines around the current bezier curve -/// or to auxiliary lines (points) before the points meet the bezier curve requirements. -fn build_auxiliary_line( - points: &[Pos2], - to_screen: &RectTransform, - aux_stroke: &Stroke, -) -> Vec { - let mut shapes = Vec::new(); - if points.len() >= 2 { - let points: Vec = points.iter().map(|p| to_screen * *p).collect(); - shapes.push(egui::Shape::line(points, *aux_stroke)); - } - for point in points.iter() { - let center = to_screen * *point; - let radius = aux_stroke.width * 3.0; - let circle = CircleShape { - center, - radius, - fill: aux_stroke.color, - stroke: *aux_stroke, - }; - - shapes.push(circle.into()); - } - - shapes } impl super::Demo for PaintBezier { fn name(&self) -> &'static str { - "✔ Bezier Curve" + ") Bézier Curve" } fn show(&mut self, ctx: &Context, open: &mut bool) { use super::View as _; Window::new(self.name()) .open(open) - .default_size(vec2(512.0, 512.0)) .vscroll(false) + .resizable(false) .show(ctx, |ui| self.ui(ui)); } } diff --git a/epaint/src/bezier.rs b/epaint/src/bezier.rs index b17cf912..d0a63c8a 100644 --- a/epaint/src/bezier.rs +++ b/epaint/src/bezier.rs @@ -6,9 +6,9 @@ use emath::*; // ---------------------------------------------------------------------------- -/// How to paint a cubic Bezier curve on screen. -/// The definition: [Bezier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve). -/// This implementation is only for cubic Bezier curve, or the Bezier curve of degree 3. +/// A cubic [Bézier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve). +/// +/// See also [`QuadraticBezierShape`]. #[derive(Copy, Clone, Debug, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct CubicBezierShape { @@ -22,30 +22,29 @@ pub struct CubicBezierShape { } impl CubicBezierShape { - /// Creates a cubic Bezier curve based on 4 points and stroke. + /// Creates a cubic Bézier curve based on 4 points and stroke. + /// /// The first point is the starting point and the last one is the ending point of the curve. /// The middle points are the control points. - /// The number of points must be 4. pub fn from_points_stroke( - points: Vec, + points: [Pos2; 4], closed: bool, fill: Color32, stroke: impl Into, ) -> Self { - crate::epaint_assert!(points.len() == 4, "Cubic needs 4 points"); Self { - points: points.try_into().unwrap(), + points, closed, fill, stroke: stroke.into(), } } - /// Creates a cubic Bezier curve based on the screen coordinates for the 4 points. - pub fn to_screen(&self, to_screen: &RectTransform) -> Self { + /// Transform the curve with the given transform. + pub fn transform(&self, transform: &RectTransform) -> Self { let mut points = [Pos2::default(); 4]; for (i, origin_point) in self.points.iter().enumerate() { - points[i] = to_screen * *origin_point; + points[i] = transform * *origin_point; } CubicBezierShape { points, @@ -55,12 +54,12 @@ impl CubicBezierShape { } } - /// Convert the cubic Bezier curve to one or two `PathShapes`. + /// Convert the cubic Bézier curve to one or two `PathShapes`. /// When the curve is closed and it has to intersect with the base line, it will be converted into two shapes. /// Otherwise, it will be converted into one shape. /// The `tolerance` will be used to control the max distance between the curve and the base line. /// The `epsilon` is used when comparing two floats. - pub fn to_pathshapes(&self, tolerance: Option, epsilon: Option) -> Vec { + pub fn to_path_shapes(&self, tolerance: Option, epsilon: Option) -> Vec { let mut pathshapes = Vec::new(); let mut points_vec = self.flatten_closed(tolerance, epsilon); for points in points_vec.drain(..) { @@ -74,6 +73,7 @@ impl CubicBezierShape { } pathshapes } + /// Screen-space bounding rectangle. pub fn bounding_rect(&self) -> Rect { //temporary solution @@ -256,9 +256,9 @@ impl CubicBezierShape { None } - /// Calculate the point (x,y) at t based on the cubic bezier curve equation. + /// Calculate the point (x,y) at t based on the cubic Bézier curve equation. /// t is in [0.0,1.0] - /// [Bezier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves) + /// [Bézier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves) /// pub fn sample(&self, t: f32) -> Pos2 { crate::epaint_assert!( @@ -278,7 +278,7 @@ impl CubicBezierShape { result.to_pos2() } - /// find a set of points that approximate the cubic bezier curve. + /// find a set of points that approximate the cubic Bézier curve. /// the number of points is determined by the tolerance. /// the points may not be evenly distributed in the range [0.0,1.0] (t value) pub fn flatten(&self, tolerance: Option) -> Vec { @@ -290,7 +290,7 @@ impl CubicBezierShape { result } - /// find a set of points that approximate the cubic bezier curve. + /// find a set of points that approximate the cubic Bézier curve. /// the number of points is determined by the tolerance. /// the points may not be evenly distributed in the range [0.0,1.0] (t value) /// this api will check whether the curve will cross the base line or not when closed = true. @@ -358,6 +358,11 @@ impl From for Shape { } } +// ---------------------------------------------------------------------------- + +/// A quadratic [Bézier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve). +/// +/// See also [`CubicBezierShape`]. #[derive(Copy, Clone, Debug, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct QuadraticBezierShape { @@ -371,32 +376,30 @@ pub struct QuadraticBezierShape { } impl QuadraticBezierShape { - /// create a new quadratic bezier shape based on the 3 points and stroke. - /// the first point is the starting point and the last one is the ending point of the curve. - /// the middle point is the control points. - /// the points should be in the order [start, control, end] + /// Create a new quadratic Bézier shape based on the 3 points and stroke. /// + /// The first point is the starting point and the last one is the ending point of the curve. + /// The middle point is the control points. + /// The points should be in the order [start, control, end] pub fn from_points_stroke( - points: Vec, + points: [Pos2; 3], closed: bool, fill: Color32, stroke: impl Into, ) -> Self { - crate::epaint_assert!(points.len() == 3, "Quadratic needs 3 points"); - QuadraticBezierShape { - points: points.try_into().unwrap(), // it's safe to unwrap because we just checked + points, closed, fill, stroke: stroke.into(), } } - /// create a new quadratic bezier shape based on the screen coordination for the 3 points. - pub fn to_screen(&self, to_screen: &RectTransform) -> Self { + /// Transform the curve with the given transform. + pub fn transform(&self, transform: &RectTransform) -> Self { let mut points = [Pos2::default(); 3]; for (i, origin_point) in self.points.iter().enumerate() { - points[i] = to_screen * *origin_point; + points[i] = transform * *origin_point; } QuadraticBezierShape { points, @@ -406,9 +409,9 @@ impl QuadraticBezierShape { } } - /// Convert the quadratic Bezier curve to one `PathShape`. + /// Convert the quadratic Bézier curve to one `PathShape`. /// The `tolerance` will be used to control the max distance between the curve and the base line. - pub fn to_pathshape(&self, tolerance: Option) -> PathShape { + pub fn to_path_shape(&self, tolerance: Option) -> PathShape { let points = self.flatten(tolerance); PathShape { points, @@ -417,7 +420,8 @@ impl QuadraticBezierShape { stroke: self.stroke, } } - /// bounding box of the quadratic bezier shape + + /// bounding box of the quadratic Bézier shape pub fn bounding_rect(&self) -> Rect { let (mut min_x, mut max_x) = if self.points[0].x < self.points[2].x { (self.points[0].x, self.points[2].x) @@ -466,9 +470,9 @@ impl QuadraticBezierShape { } } - /// Calculate the point (x,y) at t based on the quadratic bezier curve equation. + /// Calculate the point (x,y) at t based on the quadratic Bézier curve equation. /// t is in [0.0,1.0] - /// [Bezier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Quadratic_B.C3.A9zier_curves) + /// [Bézier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Quadratic_B.C3.A9zier_curves) /// pub fn sample(&self, t: f32) -> Pos2 { crate::epaint_assert!( @@ -486,7 +490,7 @@ impl QuadraticBezierShape { result.to_pos2() } - /// find a set of points that approximate the quadratic bezier curve. + /// find a set of points that approximate the quadratic Bézier curve. /// the number of points is determined by the tolerance. /// the points may not be evenly distributed in the range [0.0,1.0] (t value) pub fn flatten(&self, tolerance: Option) -> Vec { @@ -533,6 +537,8 @@ impl From for Shape { } } +// ---------------------------------------------------------------------------- + // lyon_geom::flatten_cubic.rs // copied from https://docs.rs/lyon_geom/latest/lyon_geom/ fn flatten_cubic_bezier_with_t( @@ -567,6 +573,7 @@ fn flatten_cubic_bezier_with_t( callback(point, t); }); } + // from lyon_geom::quadratic_bezier.rs // copied from https://docs.rs/lyon_geom/latest/lyon_geom/ struct FlatteningParameters { @@ -665,7 +672,7 @@ fn single_curve_approximation(curve: &CubicBezierShape) -> QuadraticBezierShape } fn quadratic_for_each_local_extremum(p0: f32, p1: f32, p2: f32, cb: &mut F) { - // A quadratic bezier curve can be derived by a linear function: + // A quadratic Bézier curve can be derived by a linear function: // p(t) = p0 + t(p1 - p0) + t^2(p2 - 2p1 + p0) // The derivative is: // p'(t) = (p1 - p0) + 2(p2 - 2p1 + p0)t or: @@ -685,7 +692,7 @@ fn quadratic_for_each_local_extremum(p0: f32, p1: f32, p2: f32, c fn cubic_for_each_local_extremum(p0: f32, p1: f32, p2: f32, p3: f32, cb: &mut F) { // See www.faculty.idc.ac.il/arik/quality/appendixa.html for an explanation - // A cubic bezier curve can be derivated by the following equation: + // A cubic Bézier curve can be derivated by the following equation: // B'(t) = 3(1-t)^2(p1-p0) + 6(1-t)t(p2-p1) + 3t^2(p3-p2) or // f(x) = a * x² + b * x + c let a = 3.0 * (p3 + 3.0 * (p1 - p2) - p0); From b8fbbf7d62ec53e8132c6aa930114572b3d92b58 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 20:37:49 +0100 Subject: [PATCH 29/51] Fix anti-aliasing of filled paths with counter-clockwise winding order Part of https://github.com/emilk/egui/issues/1226 --- egui/src/widgets/color_picker.rs | 6 ++-- egui/src/widgets/plot/items/mod.rs | 23 ++++++++++------ epaint/CHANGELOG.md | 1 + epaint/src/shape.rs | 7 ++++- epaint/src/tessellator.rs | 44 +++++++++++++++++++++++++----- 5 files changed, 61 insertions(+), 20 deletions(-) diff --git a/egui/src/widgets/color_picker.rs b/egui/src/widgets/color_picker.rs index 22fcab06..4a5f4c2a 100644 --- a/egui/src/widgets/color_picker.rs +++ b/egui/src/widgets/color_picker.rs @@ -145,9 +145,9 @@ fn color_slider_1d(ui: &mut Ui, value: &mut f32, color_at: impl Fn(f32) -> Color let picked_color = color_at(*value); ui.painter().add(Shape::convex_polygon( vec![ - pos2(x - r, rect.bottom()), - pos2(x + r, rect.bottom()), - pos2(x, rect.center().y), + pos2(x, rect.center().y), // tip + pos2(x + r, rect.bottom()), // right bottom + pos2(x - r, rect.bottom()), // left bottom ], picked_color, Stroke::new(visuals.fg_stroke.width, contrast_color(picked_color)), diff --git a/egui/src/widgets/plot/items/mod.rs b/egui/src/widgets/plot/items/mod.rs index 2a00a285..eeb8180a 100644 --- a/egui/src/widgets/plot/items/mod.rs +++ b/egui/src/widgets/plot/items/mod.rs @@ -807,9 +807,9 @@ impl Points { impl PlotItem for Points { fn get_shapes(&self, _ui: &mut Ui, transform: &ScreenTransform, shapes: &mut Vec) { - let sqrt_3 = 3f32.sqrt(); - let frac_sqrt_3_2 = 3f32.sqrt() / 2.0; - let frac_1_sqrt_2 = 1.0 / 2f32.sqrt(); + let sqrt_3 = 3_f32.sqrt(); + let frac_sqrt_3_2 = 3_f32.sqrt() / 2.0; + let frac_1_sqrt_2 = 1.0 / 2_f32.sqrt(); let Self { series, @@ -861,15 +861,20 @@ impl PlotItem for Points { })); } MarkerShape::Diamond => { - let points = vec![tf(1.0, 0.0), tf(0.0, -1.0), tf(-1.0, 0.0), tf(0.0, 1.0)]; + let points = vec![ + tf(0.0, 1.0), // bottom + tf(-1.0, 0.0), // left + tf(0.0, -1.0), // top + tf(1.0, 0.0), // right + ]; shapes.push(Shape::convex_polygon(points, fill, stroke)); } MarkerShape::Square => { let points = vec![ - tf(frac_1_sqrt_2, frac_1_sqrt_2), - tf(frac_1_sqrt_2, -frac_1_sqrt_2), - tf(-frac_1_sqrt_2, -frac_1_sqrt_2), tf(-frac_1_sqrt_2, frac_1_sqrt_2), + tf(-frac_1_sqrt_2, -frac_1_sqrt_2), + tf(frac_1_sqrt_2, -frac_1_sqrt_2), + tf(frac_1_sqrt_2, frac_1_sqrt_2), ]; shapes.push(Shape::convex_polygon(points, fill, stroke)); } @@ -893,7 +898,7 @@ impl PlotItem for Points { } MarkerShape::Up => { let points = - vec![tf(0.0, -1.0), tf(-0.5 * sqrt_3, 0.5), tf(0.5 * sqrt_3, 0.5)]; + vec![tf(0.0, -1.0), tf(0.5 * sqrt_3, 0.5), tf(-0.5 * sqrt_3, 0.5)]; shapes.push(Shape::convex_polygon(points, fill, stroke)); } MarkerShape::Down => { @@ -912,8 +917,8 @@ impl PlotItem for Points { MarkerShape::Right => { let points = vec![ tf(1.0, 0.0), - tf(-0.5, -0.5 * sqrt_3), tf(-0.5, 0.5 * sqrt_3), + tf(-0.5, -0.5 * sqrt_3), ]; shapes.push(Shape::convex_polygon(points, fill, stroke)); } diff --git a/epaint/CHANGELOG.md b/epaint/CHANGELOG.md index 0039d9e5..62d034dc 100644 --- a/epaint/CHANGELOG.md +++ b/epaint/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to the epaint crate will be documented in this file. * Added `ImageData` and `TextureManager` for loading images into textures ([#1110](https://github.com/emilk/egui/pull/1110)). * Added `Shape::dashed_line_many` ([#1027](https://github.com/emilk/egui/pull/1027)). * Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). +* Fix anti-aliasing of filled paths with counter-clockwise winding order. ## 0.16.0 - 2021-12-29 diff --git a/epaint/src/shape.rs b/epaint/src/shape.rs index 7ac5e828..6d745eee 100644 --- a/epaint/src/shape.rs +++ b/epaint/src/shape.rs @@ -94,6 +94,8 @@ impl Shape { } /// A convex polygon with a fill and optional stroke. + /// + /// The most performant winding order is clockwise. #[inline] pub fn convex_polygon( points: Vec, @@ -259,6 +261,7 @@ impl From for Shape { #[derive(Clone, Debug, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct PathShape { + /// Filled paths should prefer clockwise order. pub points: Vec, /// If true, connect the first and last of the points together. /// This is required if `fill != TRANSPARENT`. @@ -294,6 +297,8 @@ impl PathShape { } /// A convex polygon with a fill and optional stroke. + /// + /// The most performant winding order is clockwise. #[inline] pub fn convex_polygon( points: Vec, @@ -455,7 +460,7 @@ pub struct TextShape { /// This will NOT replace background color nor strikethrough/underline color. pub override_text_color: Option, - /// Rotate text by this many radians clock-wise. + /// Rotate text by this many radians clockwise. /// The pivot is `pos` (the upper left corner of the text). pub angle: f32, } diff --git a/epaint/src/tessellator.rs b/epaint/src/tessellator.rs index ec16b3ad..4ffe11dc 100644 --- a/epaint/src/tessellator.rs +++ b/epaint/src/tessellator.rs @@ -172,8 +172,12 @@ impl Path { } /// The path is taken to be closed (i.e. returning to the start again). - pub fn fill(&self, color: Color32, options: &TessellationOptions, out: &mut Mesh) { - fill_closed_path(&self.0, color, options, out); + /// + /// Calling this may reverse the vertices in the path if they are wrong winding order. + /// + /// The preferred winding order is clockwise. + pub fn fill(&mut self, color: Color32, options: &TessellationOptions, out: &mut Mesh) { + fill_closed_path(&mut self.0, color, options, out); } } @@ -196,10 +200,10 @@ pub mod path { let min = rect.min; let max = rect.max; path.reserve(4); - path.push(pos2(min.x, min.y)); - path.push(pos2(max.x, min.y)); - path.push(pos2(max.x, max.y)); - path.push(pos2(min.x, max.y)); + path.push(pos2(min.x, min.y)); // left top + path.push(pos2(max.x, min.y)); // right top + path.push(pos2(max.x, max.y)); // right bottom + path.push(pos2(min.x, max.y)); // left bottom } else { add_circle_quadrant(path, pos2(max.x - r.se, max.y - r.se), r.se, 0.0); add_circle_quadrant(path, pos2(min.x + r.sw, max.y - r.sw), r.sw, 1.0); @@ -346,9 +350,27 @@ impl TessellationOptions { } } +fn cw_signed_area(path: &[PathPoint]) -> f64 { + if let Some(last) = path.last() { + let mut previous = last.pos; + let mut area = 0.0; + for p in path { + area += (previous.x * p.pos.y - p.pos.x * previous.y) as f64; + previous = p.pos; + } + area + } else { + 0.0 + } +} + /// Tessellate the given convex area into a polygon. +/// +/// Calling this may reverse the vertices in the path if they are wrong winding order. +/// +/// The preferred winding order is clockwise. fn fill_closed_path( - path: &[PathPoint], + path: &mut [PathPoint], color: Color32, options: &TessellationOptions, out: &mut Mesh, @@ -359,6 +381,14 @@ fn fill_closed_path( let n = path.len() as u32; if options.anti_alias { + if cw_signed_area(path) < 0.0 { + // Wrong winding order - fix: + path.reverse(); + for point in path.iter_mut() { + point.normal = -point.normal; + } + } + out.reserve_triangles(3 * n as usize); out.reserve_vertices(2 * n as usize); let color_outer = Color32::TRANSPARENT; From e49245fae52e4cce1ec3a8250d4cbeedb0c3c253 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 20:42:42 +0100 Subject: [PATCH 30/51] Improve the anti-aliasing of filled paths with sharp corners This comes at the cost of these corners sometimes becoming badly extruded instead. The sharper the corner, the bigger the problem. A proper fix will have to wait for later. Part of https://github.com/emilk/egui/issues/1226 --- epaint/CHANGELOG.md | 1 + epaint/src/tessellator.rs | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/epaint/CHANGELOG.md b/epaint/CHANGELOG.md index 62d034dc..0a58bde1 100644 --- a/epaint/CHANGELOG.md +++ b/epaint/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to the epaint crate will be documented in this file. * Added `Shape::dashed_line_many` ([#1027](https://github.com/emilk/egui/pull/1027)). * Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). * Fix anti-aliasing of filled paths with counter-clockwise winding order. +* Improve the anti-aliasing of filled paths with sharp corners, at the cost of these corners sometimes becoming badly extruded instead (see https://github.com/emilk/egui/issues/1226). ## 0.16.0 - 2021-12-29 diff --git a/epaint/src/tessellator.rs b/epaint/src/tessellator.rs index 4ffe11dc..89bcb1d6 100644 --- a/epaint/src/tessellator.rs +++ b/epaint/src/tessellator.rs @@ -133,9 +133,20 @@ impl Path { let normal = (n0 + n1) / 2.0; let length_sq = normal.length_sq(); + + // We can't just cut off corners for filled shapes like this, + // because the feather will both expand and contract the corner along the provided normals + // to make sure it doesn't grow, and the shrinking will make the inner points cross each other. + // + // A better approach is to shrink the vertices in by half the feather-width here + // and then only expand during feathering. + // + // See https://github.com/emilk/egui/issues/1226 + const CUT_OFF_SHARP_CORNERS: bool = false; + let right_angle_length_sq = 0.5; let sharper_than_a_right_angle = length_sq < right_angle_length_sq; - if sharper_than_a_right_angle { + if CUT_OFF_SHARP_CORNERS && sharper_than_a_right_angle { // cut off the sharp corner let center_normal = normal.normalized(); let n0c = (n0 + center_normal) / 2.0; @@ -394,9 +405,13 @@ fn fill_closed_path( let color_outer = Color32::TRANSPARENT; let idx_inner = out.vertices.len() as u32; let idx_outer = idx_inner + 1; + + // The fill: for i in 2..n { out.add_triangle(idx_inner + 2 * (i - 1), idx_inner, idx_inner + 2 * i); } + + // The feathering: let mut i0 = n - 1; for i1 in 0..n { let p1 = &path[i1 as usize]; From 89d19860b820a577f159a61aba7acfb483ff4c9c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 19 Feb 2022 20:51:51 +0100 Subject: [PATCH 31/51] Misc code cleanup, docs fixes, etc --- docs/index.html | 8 +++---- eframe/examples/hello_world.rs | 10 ++++----- egui/Cargo.toml | 2 +- egui/src/containers/panel.rs | 2 ++ egui/src/data/input.rs | 12 +++++++++- egui/src/introspection.rs | 2 +- egui/src/layers.rs | 1 + egui/src/response.rs | 2 +- egui/src/ui.rs | 8 +++---- egui/src/widgets/plot/items/mod.rs | 2 ++ egui_web/README.md | 4 ++-- epaint/src/shape.rs | 36 ++++++++++++++++++++---------- epaint/src/text/fonts.rs | 6 ++--- epi/src/lib.rs | 12 +++++----- sh/check.sh | 1 + 15 files changed, 67 insertions(+), 41 deletions(-) diff --git a/docs/index.html b/docs/index.html index 6d3a5588..bf9dfb5f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -128,20 +128,20 @@ .catch(on_wasm_error); function on_wasm_loaded() { - console.debug("wasm loaded. starting egui app…"); + console.debug("wasm loaded. starting app…"); // This call installs a bunch of callbacks and then returns: wasm_bindgen.start("the_canvas_id"); - console.debug("egui app started."); + console.debug("app started."); document.getElementById("center_text").remove(); } function on_wasm_error(error) { - console.error("Failed to start egui: " + error); + console.error("Failed to start: " + error); document.getElementById("center_text").innerHTML = `

- An error occurred loading egui + An error occurred during loading:

${error} diff --git a/eframe/examples/hello_world.rs b/eframe/examples/hello_world.rs index 7ec61fba..77f1479b 100644 --- a/eframe/examples/hello_world.rs +++ b/eframe/examples/hello_world.rs @@ -22,19 +22,17 @@ impl epi::App for MyApp { } fn update(&mut self, ctx: &egui::Context, frame: &epi::Frame) { - let Self { name, age } = self; - egui::CentralPanel::default().show(ctx, |ui| { ui.heading("My egui Application"); ui.horizontal(|ui| { ui.label("Your name: "); - ui.text_edit_singleline(name); + ui.text_edit_singleline(&mut self.name); }); - ui.add(egui::Slider::new(age, 0..=120).text("age")); + ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age")); if ui.button("Click each year").clicked() { - *age += 1; + self.age += 1; } - ui.label(format!("Hello '{}', age {}", name, age)); + ui.label(format!("Hello '{}', age {}", self.name, self.age)); }); // Resize the native window to be just the size we need it to be: diff --git a/egui/Cargo.toml b/egui/Cargo.toml index 67591cf2..663bce13 100644 --- a/egui/Cargo.toml +++ b/egui/Cargo.toml @@ -2,7 +2,7 @@ name = "egui" version = "0.16.1" authors = ["Emil Ernerfeldt "] -description = "Simple, portable immediate mode GUI library for Rust" +description = "An easy-to-use immediate mode GUI that runs on both web and native" edition = "2021" rust-version = "1.56" homepage = "https://github.com/emilk/egui" diff --git a/egui/src/containers/panel.rs b/egui/src/containers/panel.rs index 9fc6aae8..ea17aa17 100644 --- a/egui/src/containers/panel.rs +++ b/egui/src/containers/panel.rs @@ -9,6 +9,8 @@ //! The order in which you add panels matter! //! The first panel you add will always be the outermost, and the last you add will always be the innermost. //! +//! You must never open one top-level panel from within another panel. Add one panel, then the next. +//! //! Always add any [`CentralPanel`] last. //! //! Add your [`Window`]:s after any top-level panels. diff --git a/egui/src/data/input.rs b/egui/src/data/input.rs index 29a3458c..704c31fe 100644 --- a/egui/src/data/input.rs +++ b/egui/src/data/input.rs @@ -165,18 +165,27 @@ pub enum Event { /// /// When the user presses enter/return, do not send a `Text` (just [`Key::Enter`]). Text(String), + /// A key was pressed or released. Key { key: Key, + /// Was it pressed or released? pressed: bool, + /// The state of the modifier keys at the time of the event. modifiers: Modifiers, }, + /// The mouse or touch moved to a new place. PointerMoved(Pos2), + + /// A mouse button was pressed or released (or a touch started or stopped). PointerButton { + /// Where is the pointer? pos: Pos2, + /// What mouse button? For touches, use [`PointerButton::Primary`]. button: PointerButton, + /// Was it the button/touch pressed this frame, or released? pressed: bool, - /// The state of the modifier keys at the time of the event + /// The state of the modifier keys at the time of the event. modifiers: Modifiers, }, /// The mouse left the screen, or the last/primary touch input disappeared. @@ -217,6 +226,7 @@ pub enum Event { /// Unique identifier of a finger/pen. Value is stable from touch down /// to lift-up id: TouchId, + /// One of: start move end cancel. phase: TouchPhase, /// Position of the touch (or where the touch was last detected) pos: Pos2, diff --git a/egui/src/introspection.rs b/egui/src/introspection.rs index 3726b808..e5f814cc 100644 --- a/egui/src/introspection.rs +++ b/egui/src/introspection.rs @@ -146,7 +146,7 @@ impl Widget for &mut epaint::TessellationOptions { epsilon: _, } = self; ui.checkbox(anti_alias, "Antialias") - .on_hover_text("Turn off for small performance gain."); + .on_hover_text("Apply feathering to smooth out the edges of shapes. Turn off for small performance gain."); ui.add( crate::widgets::Slider::new(bezier_tolerance, 0.0001..=10.0) .logarithmic(true) diff --git a/egui/src/layers.rs b/egui/src/layers.rs index 578d505a..76c8dfe3 100644 --- a/egui/src/layers.rs +++ b/egui/src/layers.rs @@ -23,6 +23,7 @@ pub enum Order { /// Debug layer, always painted last / on top Debug, } + impl Order { const COUNT: usize = 6; const ALL: [Order; Self::COUNT] = [ diff --git a/egui/src/response.rs b/egui/src/response.rs index 29bb5626..e8a94330 100644 --- a/egui/src/response.rs +++ b/egui/src/response.rs @@ -447,7 +447,7 @@ impl Response { /// /// If `align` is `None`, it'll scroll enough to bring the UI into view. /// - /// See also: [`Ui::scroll_to_cursor`], [`Ui::scroll_to`]. + /// See also: [`Ui::scroll_to_cursor`], [`Ui::scroll_to_rect`]. /// /// ``` /// # egui::__run_test_ui(|ui| { diff --git a/egui/src/ui.rs b/egui/src/ui.rs index ae0d26cb..5774f6c5 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -908,7 +908,7 @@ impl Ui { /// /// If `align` is `None`, it'll scroll enough to bring the cursor into view. /// - /// See also: [`Response::scroll_to_me`], [`Ui::scroll_to`]. + /// See also: [`Response::scroll_to_me`], [`Ui::scroll_to_rect`]. /// /// ``` /// # use egui::Align; @@ -933,7 +933,7 @@ impl Ui { /// /// If `align` is not provided, it'll scroll enough to bring the cursor into view. /// - /// See also: [`Response::scroll_to_me`], [`Ui::scroll_to`]. + /// See also: [`Response::scroll_to_me`], [`Ui::scroll_to_rect`]. /// /// ``` /// # use egui::Align; @@ -1014,7 +1014,7 @@ impl Ui { .inner } - /// Add a single[`Widget`] that is possibly disabled, i.e. greyed out and non-interactive. + /// Add a single [`Widget`] that is possibly disabled, i.e. greyed out and non-interactive. /// /// If you call `add_enabled` from within an already disabled `Ui`, /// the widget will always be disabled, even if the `enabled` argument is true. @@ -1069,7 +1069,7 @@ impl Ui { }) } - /// Add a single[`Widget`] that is possibly invisible. + /// Add a single [`Widget`] that is possibly invisible. /// /// An invisible widget still takes up the same space as if it were visible. /// diff --git a/egui/src/widgets/plot/items/mod.rs b/egui/src/widgets/plot/items/mod.rs index eeb8180a..55ae512e 100644 --- a/egui/src/widgets/plot/items/mod.rs +++ b/egui/src/widgets/plot/items/mod.rs @@ -613,6 +613,7 @@ impl PlotItem for Polygon { } /// Text inside the plot. +#[derive(Clone)] pub struct Text { pub(super) text: WidgetText, pub(super) position: Value, @@ -1079,6 +1080,7 @@ impl PlotItem for Arrows { } /// An image in the plot. +#[derive(Clone)] pub struct PlotImage { pub(super) position: Value, pub(super) texture_id: TextureId, diff --git a/egui_web/README.md b/egui_web/README.md index ac4f194d..045fd905 100644 --- a/egui_web/README.md +++ b/egui_web/README.md @@ -24,6 +24,6 @@ Check out [eframe_template](https://github.com/emilk/eframe_template) for an exa * No integration with browser settings for colors and fonts. * On Linux and Mac, Firefox will copy the WebGL render target from GPU, to CPU and then back again (https://bugzilla.mozilla.org/show_bug.cgi?id=1010527#c0), slowing down egui. -The suggested use for `egui_web` is for experiments, personal projects and web games. Using egui for a serious web page is probably a bad idea. - In many ways, `egui_web` is trying to make the browser do something it wasn't designed to do (though there are many things browser vendors could do to improve how well libraries like egui work). + +The suggested use for `egui_web` are for web apps where performance and responsiveness are more important than accessability and mobile text editing. diff --git a/epaint/src/shape.rs b/epaint/src/shape.rs index 6d745eee..6e2ab5df 100644 --- a/epaint/src/shape.rs +++ b/epaint/src/shape.rs @@ -31,6 +31,20 @@ pub enum Shape { CubicBezier(CubicBezierShape), } +impl From> for Shape { + #[inline(always)] + fn from(shapes: Vec) -> Self { + Self::Vec(shapes) + } +} + +impl From for Shape { + #[inline(always)] + fn from(mesh: Mesh) -> Self { + Self::Mesh(mesh) + } +} + /// ## Constructors impl Shape { /// A line between two points. @@ -59,25 +73,25 @@ impl Shape { /// Turn a line into equally spaced dots. pub fn dotted_line( - points: &[Pos2], + path: &[Pos2], color: impl Into, spacing: f32, radius: f32, ) -> Vec { let mut shapes = Vec::new(); - points_from_line(points, spacing, radius, color.into(), &mut shapes); + points_from_line(path, spacing, radius, color.into(), &mut shapes); shapes } /// Turn a line into dashes. pub fn dashed_line( - points: &[Pos2], + path: &[Pos2], stroke: impl Into, dash_length: f32, gap_length: f32, ) -> Vec { let mut shapes = Vec::new(); - dashes_from_line(points, stroke.into(), dash_length, gap_length, &mut shapes); + dashes_from_line(path, stroke.into(), dash_length, gap_length, &mut shapes); shapes } @@ -495,16 +509,15 @@ impl From for Shape { /// Creates equally spaced filled circles from a line. fn points_from_line( - line: &[Pos2], + path: &[Pos2], spacing: f32, radius: f32, color: Color32, shapes: &mut Vec, ) { let mut position_on_segment = 0.0; - line.windows(2).for_each(|window| { - let start = window[0]; - let end = window[1]; + path.windows(2).for_each(|window| { + let (start, end) = (window[0], window[1]); let vector = end - start; let segment_length = vector.length(); while position_on_segment < segment_length { @@ -518,7 +531,7 @@ fn points_from_line( /// Creates dashes from a line. fn dashes_from_line( - line: &[Pos2], + path: &[Pos2], stroke: Stroke, dash_length: f32, gap_length: f32, @@ -526,9 +539,8 @@ fn dashes_from_line( ) { let mut position_on_segment = 0.0; let mut drawing_dash = false; - line.windows(2).for_each(|window| { - let start = window[0]; - let end = window[1]; + path.windows(2).for_each(|window| { + let (start, end) = (window[0], window[1]); let vector = end - start; let segment_length = vector.length(); diff --git a/epaint/src/text/fonts.rs b/epaint/src/text/fonts.rs index 790db06b..3f4dc131 100644 --- a/epaint/src/text/fonts.rs +++ b/epaint/src/text/fonts.rs @@ -160,15 +160,15 @@ pub struct FontTweak { /// Shift font downwards by this fraction of the font size (in points). /// - /// A positive value shifts the text upwards. - /// A negative value shifts it downwards. + /// A positive value shifts the text downwards. + /// A negative value shifts it upwards. /// /// Example value: `-0.2`. pub y_offset_factor: f32, /// Shift font downwards by this amount of logical points. /// - /// Example value: `-1.0`. + /// Example value: `2.0`. pub y_offset: f32, } diff --git a/epi/src/lib.rs b/epi/src/lib.rs index b0dda591..4481cd1c 100644 --- a/epi/src/lib.rs +++ b/epi/src/lib.rs @@ -372,27 +372,27 @@ pub struct WebInfo { pub struct Location { /// The full URL (`location.href`) without the hash. /// - /// Example: "http://www.example.com:80/index.html?foo=bar". + /// Example: `"http://www.example.com:80/index.html?foo=bar"`. pub url: String, /// `location.protocol` /// - /// Example: "http:". + /// Example: `"http:"`. pub protocol: String, /// `location.host` /// - /// Example: "example.com:80". + /// Example: `"example.com:80"`. pub host: String, /// `location.hostname` /// - /// Example: "example.com". + /// Example: `"example.com"`. pub hostname: String, /// `location.port` /// - /// Example: "80". + /// Example: `"80"`. pub port: String, /// The "#fragment" part of "www.example.com/index.html?query#fragment". @@ -415,7 +415,7 @@ pub struct Location { /// `location.origin` /// - /// Example: "http://www.example.com:80" + /// Example: `"http://www.example.com:80"`. pub origin: String, } diff --git a/sh/check.sh b/sh/check.sh index afcc1db2..72fb1c64 100755 --- a/sh/check.sh +++ b/sh/check.sh @@ -52,6 +52,7 @@ cargo doc --document-private-items --no-deps --all-features # For finding bloat: # cargo bloat --release --bin demo_glium -n 200 | rg egui +# Also try https://github.com/google/bloaty # what compiles slowly? # https://fasterthanli.me/articles/why-is-my-rust-build-so-slow From 713917e4819d9c26068aec286ee675f7e3bff907 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 09:23:02 +0100 Subject: [PATCH 32/51] refactor egui_web (break up lib.rs) --- egui_web/src/backend.rs | 4 +- egui_web/src/input.rs | 189 ++++++++++++++++++ egui_web/src/lib.rs | 395 +------------------------------------ egui_web/src/text_agent.rs | 202 +++++++++++++++++++ 4 files changed, 400 insertions(+), 390 deletions(-) create mode 100644 egui_web/src/input.rs create mode 100644 egui_web/src/text_agent.rs diff --git a/egui_web/src/backend.rs b/egui_web/src/backend.rs index 570d02b1..134a2bc2 100644 --- a/egui_web/src/backend.rs +++ b/egui_web/src/backend.rs @@ -341,7 +341,7 @@ impl AppRunner { self.mutable_text_under_cursor = mutable_text_under_cursor; if self.text_cursor_pos != text_cursor_pos { - move_text_cursor(text_cursor_pos, self.canvas_id()); + text_agent::move_text_cursor(text_cursor_pos, self.canvas_id()); self.text_cursor_pos = text_cursor_pos; } @@ -363,7 +363,7 @@ fn start_runner(app_runner: AppRunner) -> Result { let runner_ref = AppRunnerRef(Arc::new(Mutex::new(app_runner))); install_canvas_events(&runner_ref)?; install_document_events(&runner_ref)?; - install_text_agent(&runner_ref)?; + text_agent::install_text_agent(&runner_ref)?; repaint_every_ms(&runner_ref, 1000)?; // just in case. TODO: make it a parameter paint_and_schedule(runner_ref.clone())?; Ok(runner_ref) diff --git a/egui_web/src/input.rs b/egui_web/src/input.rs new file mode 100644 index 00000000..66de4315 --- /dev/null +++ b/egui_web/src/input.rs @@ -0,0 +1,189 @@ +use crate::{canvas_element, canvas_origin, AppRunner}; + +pub fn pos_from_mouse_event(canvas_id: &str, event: &web_sys::MouseEvent) -> egui::Pos2 { + let canvas = canvas_element(canvas_id).unwrap(); + let rect = canvas.get_bounding_client_rect(); + egui::Pos2 { + x: event.client_x() as f32 - rect.left() as f32, + y: event.client_y() as f32 - rect.top() as f32, + } +} + +pub fn button_from_mouse_event(event: &web_sys::MouseEvent) -> Option { + match event.button() { + 0 => Some(egui::PointerButton::Primary), + 1 => Some(egui::PointerButton::Middle), + 2 => Some(egui::PointerButton::Secondary), + _ => None, + } +} + +/// A single touch is translated to a pointer movement. When a second touch is added, the pointer +/// should not jump to a different position. Therefore, we do not calculate the average position +/// of all touches, but we keep using the same touch as long as it is available. +/// +/// `touch_id_for_pos` is the `TouchId` of the `Touch` we previously used to determine the +/// pointer position. +pub fn pos_from_touch_event( + canvas_id: &str, + event: &web_sys::TouchEvent, + touch_id_for_pos: &mut Option, +) -> egui::Pos2 { + let touch_for_pos; + if let Some(touch_id_for_pos) = touch_id_for_pos { + // search for the touch we previously used for the position + // (unfortunately, `event.touches()` is not a rust collection): + touch_for_pos = (0..event.touches().length()) + .into_iter() + .map(|i| event.touches().get(i).unwrap()) + .find(|touch| egui::TouchId::from(touch.identifier()) == *touch_id_for_pos); + } else { + touch_for_pos = None; + } + // Use the touch found above or pick the first, or return a default position if there is no + // touch at all. (The latter is not expected as the current method is only called when there is + // at least one touch.) + touch_for_pos + .or_else(|| event.touches().get(0)) + .map_or(Default::default(), |touch| { + *touch_id_for_pos = Some(egui::TouchId::from(touch.identifier())); + pos_from_touch(canvas_origin(canvas_id), &touch) + }) +} + +fn pos_from_touch(canvas_origin: egui::Pos2, touch: &web_sys::Touch) -> egui::Pos2 { + egui::Pos2 { + x: touch.page_x() as f32 - canvas_origin.x as f32, + y: touch.page_y() as f32 - canvas_origin.y as f32, + } +} + +pub fn push_touches(runner: &mut AppRunner, phase: egui::TouchPhase, event: &web_sys::TouchEvent) { + let canvas_origin = canvas_origin(runner.canvas_id()); + for touch_idx in 0..event.changed_touches().length() { + if let Some(touch) = event.changed_touches().item(touch_idx) { + runner.input.raw.events.push(egui::Event::Touch { + device_id: egui::TouchDeviceId(0), + id: egui::TouchId::from(touch.identifier()), + phase, + pos: pos_from_touch(canvas_origin, &touch), + force: touch.force(), + }); + } + } +} + +/// Web sends all keys as strings, so it is up to us to figure out if it is +/// a real text input or the name of a key. +pub fn should_ignore_key(key: &str) -> bool { + let is_function_key = key.starts_with('F') && key.len() > 1; + is_function_key + || matches!( + key, + "Alt" + | "ArrowDown" + | "ArrowLeft" + | "ArrowRight" + | "ArrowUp" + | "Backspace" + | "CapsLock" + | "ContextMenu" + | "Control" + | "Delete" + | "End" + | "Enter" + | "Esc" + | "Escape" + | "Help" + | "Home" + | "Insert" + | "Meta" + | "NumLock" + | "PageDown" + | "PageUp" + | "Pause" + | "ScrollLock" + | "Shift" + | "Tab" + ) +} + +/// Web sends all all keys as strings, so it is up to us to figure out if it is +/// a real text input or the name of a key. +pub fn translate_key(key: &str) -> Option { + match key { + "ArrowDown" => Some(egui::Key::ArrowDown), + "ArrowLeft" => Some(egui::Key::ArrowLeft), + "ArrowRight" => Some(egui::Key::ArrowRight), + "ArrowUp" => Some(egui::Key::ArrowUp), + + "Esc" | "Escape" => Some(egui::Key::Escape), + "Tab" => Some(egui::Key::Tab), + "Backspace" => Some(egui::Key::Backspace), + "Enter" => Some(egui::Key::Enter), + "Space" | " " => Some(egui::Key::Space), + + "Help" | "Insert" => Some(egui::Key::Insert), + "Delete" => Some(egui::Key::Delete), + "Home" => Some(egui::Key::Home), + "End" => Some(egui::Key::End), + "PageUp" => Some(egui::Key::PageUp), + "PageDown" => Some(egui::Key::PageDown), + + "0" => Some(egui::Key::Num0), + "1" => Some(egui::Key::Num1), + "2" => Some(egui::Key::Num2), + "3" => Some(egui::Key::Num3), + "4" => Some(egui::Key::Num4), + "5" => Some(egui::Key::Num5), + "6" => Some(egui::Key::Num6), + "7" => Some(egui::Key::Num7), + "8" => Some(egui::Key::Num8), + "9" => Some(egui::Key::Num9), + + "a" | "A" => Some(egui::Key::A), + "b" | "B" => Some(egui::Key::B), + "c" | "C" => Some(egui::Key::C), + "d" | "D" => Some(egui::Key::D), + "e" | "E" => Some(egui::Key::E), + "f" | "F" => Some(egui::Key::F), + "g" | "G" => Some(egui::Key::G), + "h" | "H" => Some(egui::Key::H), + "i" | "I" => Some(egui::Key::I), + "j" | "J" => Some(egui::Key::J), + "k" | "K" => Some(egui::Key::K), + "l" | "L" => Some(egui::Key::L), + "m" | "M" => Some(egui::Key::M), + "n" | "N" => Some(egui::Key::N), + "o" | "O" => Some(egui::Key::O), + "p" | "P" => Some(egui::Key::P), + "q" | "Q" => Some(egui::Key::Q), + "r" | "R" => Some(egui::Key::R), + "s" | "S" => Some(egui::Key::S), + "t" | "T" => Some(egui::Key::T), + "u" | "U" => Some(egui::Key::U), + "v" | "V" => Some(egui::Key::V), + "w" | "W" => Some(egui::Key::W), + "x" | "X" => Some(egui::Key::X), + "y" | "Y" => Some(egui::Key::Y), + "z" | "Z" => Some(egui::Key::Z), + + _ => None, + } +} + +pub fn modifiers_from_event(event: &web_sys::KeyboardEvent) -> egui::Modifiers { + egui::Modifiers { + alt: event.alt_key(), + ctrl: event.ctrl_key(), + shift: event.shift_key(), + + // Ideally we should know if we are running or mac or not, + // but this works good enough for now. + mac_cmd: event.meta_key(), + + // Ideally we should know if we are running or mac or not, + // but this works good enough for now. + command: event.ctrl_key() || event.meta_key(), + } +} diff --git a/egui_web/src/lib.rs b/egui_web/src/lib.rs index a30dbf6e..04b767fe 100644 --- a/egui_web/src/lib.rs +++ b/egui_web/src/lib.rs @@ -17,8 +17,10 @@ pub mod backend; #[cfg(feature = "glow")] mod glow_wrapping; +mod input; mod painter; pub mod screen_reader; +mod text_agent; #[cfg(feature = "webgl")] pub mod webgl1; @@ -31,15 +33,13 @@ use egui::mutex::Mutex; pub use wasm_bindgen; pub use web_sys; +use input::*; pub use painter::Painter; -use std::cell::Cell; + use std::collections::BTreeMap; -use std::rc::Rc; use std::sync::Arc; use wasm_bindgen::prelude::*; -static AGENT_ID: &str = "egui_text_agent"; - // ---------------------------------------------------------------------------- /// Current time in seconds (since undefined point in time) @@ -90,64 +90,6 @@ pub fn canvas_element_or_die(canvas_id: &str) -> web_sys::HtmlCanvasElement { .unwrap_or_else(|| panic!("Failed to find canvas with id '{}'", canvas_id)) } -pub fn pos_from_mouse_event(canvas_id: &str, event: &web_sys::MouseEvent) -> egui::Pos2 { - let canvas = canvas_element(canvas_id).unwrap(); - let rect = canvas.get_bounding_client_rect(); - egui::Pos2 { - x: event.client_x() as f32 - rect.left() as f32, - y: event.client_y() as f32 - rect.top() as f32, - } -} - -pub fn button_from_mouse_event(event: &web_sys::MouseEvent) -> Option { - match event.button() { - 0 => Some(egui::PointerButton::Primary), - 1 => Some(egui::PointerButton::Middle), - 2 => Some(egui::PointerButton::Secondary), - _ => None, - } -} - -/// A single touch is translated to a pointer movement. When a second touch is added, the pointer -/// should not jump to a different position. Therefore, we do not calculate the average position -/// of all touches, but we keep using the same touch as long as it is available. -/// -/// `touch_id_for_pos` is the `TouchId` of the `Touch` we previously used to determine the -/// pointer position. -pub fn pos_from_touch_event( - canvas_id: &str, - event: &web_sys::TouchEvent, - touch_id_for_pos: &mut Option, -) -> egui::Pos2 { - let touch_for_pos; - if let Some(touch_id_for_pos) = touch_id_for_pos { - // search for the touch we previously used for the position - // (unfortunately, `event.touches()` is not a rust collection): - touch_for_pos = (0..event.touches().length()) - .into_iter() - .map(|i| event.touches().get(i).unwrap()) - .find(|touch| egui::TouchId::from(touch.identifier()) == *touch_id_for_pos); - } else { - touch_for_pos = None; - } - // Use the touch found above or pick the first, or return a default position if there is no - // touch at all. (The latter is not expected as the current method is only called when there is - // at least one touch.) - touch_for_pos - .or_else(|| event.touches().get(0)) - .map_or(Default::default(), |touch| { - *touch_id_for_pos = Some(egui::TouchId::from(touch.identifier())); - pos_from_touch(canvas_origin(canvas_id), &touch) - }) -} - -fn pos_from_touch(canvas_origin: egui::Pos2, touch: &web_sys::Touch) -> egui::Pos2 { - egui::Pos2 { - x: touch.page_x() as f32 - canvas_origin.x as f32, - y: touch.page_y() as f32 - canvas_origin.y as f32, - } -} - fn canvas_origin(canvas_id: &str) -> egui::Pos2 { let rect = canvas_element(canvas_id) .unwrap() @@ -155,21 +97,6 @@ fn canvas_origin(canvas_id: &str) -> egui::Pos2 { egui::Pos2::new(rect.left() as f32, rect.top() as f32) } -fn push_touches(runner: &mut AppRunner, phase: egui::TouchPhase, event: &web_sys::TouchEvent) { - let canvas_origin = canvas_origin(runner.canvas_id()); - for touch_idx in 0..event.changed_touches().length() { - if let Some(touch) = event.changed_touches().item(touch_idx) { - runner.input.raw.events.push(egui::Event::Touch { - device_id: egui::TouchDeviceId(0), - id: egui::TouchId::from(touch.identifier()), - phase, - pos: pos_from_touch(canvas_origin, &touch), - force: touch.force(), - }); - } - } -} - pub fn canvas_size_in_points(canvas_id: &str) -> egui::Vec2 { let canvas = canvas_element(canvas_id).unwrap(); let pixels_per_point = native_pixels_per_point(); @@ -373,105 +300,6 @@ pub fn percent_decode(s: &str) -> String { .to_string() } -/// Web sends all keys as strings, so it is up to us to figure out if it is -/// a real text input or the name of a key. -fn should_ignore_key(key: &str) -> bool { - let is_function_key = key.starts_with('F') && key.len() > 1; - is_function_key - || matches!( - key, - "Alt" - | "ArrowDown" - | "ArrowLeft" - | "ArrowRight" - | "ArrowUp" - | "Backspace" - | "CapsLock" - | "ContextMenu" - | "Control" - | "Delete" - | "End" - | "Enter" - | "Esc" - | "Escape" - | "Help" - | "Home" - | "Insert" - | "Meta" - | "NumLock" - | "PageDown" - | "PageUp" - | "Pause" - | "ScrollLock" - | "Shift" - | "Tab" - ) -} - -/// Web sends all all keys as strings, so it is up to us to figure out if it is -/// a real text input or the name of a key. -pub fn translate_key(key: &str) -> Option { - match key { - "ArrowDown" => Some(egui::Key::ArrowDown), - "ArrowLeft" => Some(egui::Key::ArrowLeft), - "ArrowRight" => Some(egui::Key::ArrowRight), - "ArrowUp" => Some(egui::Key::ArrowUp), - - "Esc" | "Escape" => Some(egui::Key::Escape), - "Tab" => Some(egui::Key::Tab), - "Backspace" => Some(egui::Key::Backspace), - "Enter" => Some(egui::Key::Enter), - "Space" | " " => Some(egui::Key::Space), - - "Help" | "Insert" => Some(egui::Key::Insert), - "Delete" => Some(egui::Key::Delete), - "Home" => Some(egui::Key::Home), - "End" => Some(egui::Key::End), - "PageUp" => Some(egui::Key::PageUp), - "PageDown" => Some(egui::Key::PageDown), - - "0" => Some(egui::Key::Num0), - "1" => Some(egui::Key::Num1), - "2" => Some(egui::Key::Num2), - "3" => Some(egui::Key::Num3), - "4" => Some(egui::Key::Num4), - "5" => Some(egui::Key::Num5), - "6" => Some(egui::Key::Num6), - "7" => Some(egui::Key::Num7), - "8" => Some(egui::Key::Num8), - "9" => Some(egui::Key::Num9), - - "a" | "A" => Some(egui::Key::A), - "b" | "B" => Some(egui::Key::B), - "c" | "C" => Some(egui::Key::C), - "d" | "D" => Some(egui::Key::D), - "e" | "E" => Some(egui::Key::E), - "f" | "F" => Some(egui::Key::F), - "g" | "G" => Some(egui::Key::G), - "h" | "H" => Some(egui::Key::H), - "i" | "I" => Some(egui::Key::I), - "j" | "J" => Some(egui::Key::J), - "k" | "K" => Some(egui::Key::K), - "l" | "L" => Some(egui::Key::L), - "m" | "M" => Some(egui::Key::M), - "n" | "N" => Some(egui::Key::N), - "o" | "O" => Some(egui::Key::O), - "p" | "P" => Some(egui::Key::P), - "q" | "Q" => Some(egui::Key::Q), - "r" | "R" => Some(egui::Key::R), - "s" | "S" => Some(egui::Key::S), - "t" | "T" => Some(egui::Key::T), - "u" | "U" => Some(egui::Key::U), - "v" | "V" => Some(egui::Key::V), - "w" | "W" => Some(egui::Key::W), - "x" | "X" => Some(egui::Key::X), - "y" | "Y" => Some(egui::Key::Y), - "z" | "Z" => Some(egui::Key::Z), - - _ => None, - } -} - // ---------------------------------------------------------------------------- #[derive(Clone)] @@ -505,18 +333,6 @@ fn paint_and_schedule(runner_ref: AppRunnerRef) -> Result<(), JsValue> { request_animation_frame(runner_ref) } -fn text_agent() -> web_sys::HtmlInputElement { - use wasm_bindgen::JsCast; - web_sys::window() - .unwrap() - .document() - .unwrap() - .get_element_by_id(AGENT_ID) - .unwrap() - .dyn_into() - .unwrap() -} - fn install_document_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { use wasm_bindgen::JsCast; let window = web_sys::window().unwrap(); @@ -548,7 +364,7 @@ fn install_document_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { && !modifiers.command && !should_ignore_key(&key) // When text agent is shown, it sends text event instead. - && text_agent().hidden() + && text_agent::text_agent().hidden() { runner_lock.input.raw.events.push(egui::Event::Text(key)); } @@ -703,117 +519,6 @@ fn repaint_every_ms(runner_ref: &AppRunnerRef, milliseconds: i32) -> Result<(), Ok(()) } -fn modifiers_from_event(event: &web_sys::KeyboardEvent) -> egui::Modifiers { - egui::Modifiers { - alt: event.alt_key(), - ctrl: event.ctrl_key(), - shift: event.shift_key(), - - // Ideally we should know if we are running or mac or not, - // but this works good enough for now. - mac_cmd: event.meta_key(), - - // Ideally we should know if we are running or mac or not, - // but this works good enough for now. - command: event.ctrl_key() || event.meta_key(), - } -} - -/// -/// Text event handler, -fn install_text_agent(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { - use wasm_bindgen::JsCast; - let window = web_sys::window().unwrap(); - let document = window.document().unwrap(); - let body = document.body().expect("document should have a body"); - let input = document - .create_element("input")? - .dyn_into::()?; - let input = std::rc::Rc::new(input); - input.set_id(AGENT_ID); - let is_composing = Rc::new(Cell::new(false)); - { - let style = input.style(); - // Transparent - style.set_property("opacity", "0").unwrap(); - // Hide under canvas - style.set_property("z-index", "-1").unwrap(); - } - // Set size as small as possible, in case user may click on it. - input.set_size(1); - input.set_autofocus(true); - input.set_hidden(true); - { - // When IME is off - let input_clone = input.clone(); - let runner_ref = runner_ref.clone(); - let is_composing = is_composing.clone(); - let on_input = Closure::wrap(Box::new(move |_event: web_sys::InputEvent| { - let text = input_clone.value(); - if !text.is_empty() && !is_composing.get() { - input_clone.set_value(""); - let mut runner_lock = runner_ref.0.lock(); - runner_lock.input.raw.events.push(egui::Event::Text(text)); - runner_lock.needs_repaint.set_true(); - } - }) as Box); - input.add_event_listener_with_callback("input", on_input.as_ref().unchecked_ref())?; - on_input.forget(); - } - { - // When IME is on, handle composition event - let input_clone = input.clone(); - let runner_ref = runner_ref.clone(); - let on_compositionend = Closure::wrap(Box::new(move |event: web_sys::CompositionEvent| { - let mut runner_lock = runner_ref.0.lock(); - let opt_event = match event.type_().as_ref() { - "compositionstart" => { - is_composing.set(true); - input_clone.set_value(""); - Some(egui::Event::CompositionStart) - } - "compositionend" => { - is_composing.set(false); - input_clone.set_value(""); - event.data().map(egui::Event::CompositionEnd) - } - "compositionupdate" => event.data().map(egui::Event::CompositionUpdate), - s => { - tracing::error!("Unknown composition event type: {:?}", s); - None - } - }; - if let Some(event) = opt_event { - runner_lock.input.raw.events.push(event); - runner_lock.needs_repaint.set_true(); - } - }) as Box); - let f = on_compositionend.as_ref().unchecked_ref(); - input.add_event_listener_with_callback("compositionstart", f)?; - input.add_event_listener_with_callback("compositionupdate", f)?; - input.add_event_listener_with_callback("compositionend", f)?; - on_compositionend.forget(); - } - { - // When input lost focus, focus on it again. - // It is useful when user click somewhere outside canvas. - let on_focusout = Closure::wrap(Box::new(move |_event: web_sys::MouseEvent| { - // Delay 10 ms, and focus again. - let func = js_sys::Function::new_no_args(&format!( - "document.getElementById('{}').focus()", - AGENT_ID - )); - window - .set_timeout_with_callback_and_timeout_and_arguments_0(&func, 10) - .unwrap(); - }) as Box); - input.add_event_listener_with_callback("focusout", on_focusout.as_ref().unchecked_ref())?; - on_focusout.forget(); - } - body.append_child(&input)?; - Ok(()) -} - fn install_canvas_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { use wasm_bindgen::JsCast; let canvas = canvas_element(runner_ref.0.lock().canvas_id()).unwrap(); @@ -895,7 +600,7 @@ fn install_canvas_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { }); runner_lock.needs_repaint.set_true(); - update_text_agent(&runner_lock); + text_agent::update_text_agent(&runner_lock); } event.stop_propagation(); event.prevent_default(); @@ -1003,7 +708,7 @@ fn install_canvas_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { } // Finally, focus or blur text agent to toggle mobile keyboard: - update_text_agent(&runner_lock); + text_agent::update_text_agent(&runner_lock); }) as Box); canvas.add_event_listener_with_callback(event_name, closure.as_ref().unchecked_ref())?; closure.forget(); @@ -1173,92 +878,6 @@ fn install_canvas_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { Ok(()) } -/// Focus or blur text agent to toggle mobile keyboard. -fn update_text_agent(runner: &AppRunner) -> Option<()> { - use wasm_bindgen::JsCast; - use web_sys::HtmlInputElement; - let window = web_sys::window()?; - let document = window.document()?; - let input: HtmlInputElement = document.get_element_by_id(AGENT_ID)?.dyn_into().unwrap(); - let canvas_style = canvas_element(runner.canvas_id())?.style(); - - if runner.mutable_text_under_cursor { - let is_already_editing = input.hidden(); - if is_already_editing { - input.set_hidden(false); - input.focus().ok()?; - - // Move up canvas so that text edit is shown at ~30% of screen height. - // Only on touch screens, when keyboard popups. - if let Some(latest_touch_pos) = runner.input.latest_touch_pos { - let window_height = window.inner_height().ok()?.as_f64()? as f32; - let current_rel = latest_touch_pos.y / window_height; - - // estimated amount of screen covered by keyboard - let keyboard_fraction = 0.5; - - if current_rel > keyboard_fraction { - // below the keyboard - - let target_rel = 0.3; - - // Note: `delta` is negative, since we are moving the canvas UP - let delta = target_rel - current_rel; - - let delta = delta.max(-keyboard_fraction); // Don't move it crazy much - - let new_pos_percent = (delta * 100.0).round().to_string() + "%"; - - canvas_style.set_property("position", "absolute").ok()?; - canvas_style.set_property("top", &new_pos_percent).ok()?; - } - } - } - } else { - input.blur().ok()?; - input.set_hidden(true); - canvas_style.set_property("position", "absolute").ok()?; - canvas_style.set_property("top", "0%").ok()?; // move back to normal position - } - Some(()) -} - -const MOBILE_DEVICE: [&str; 6] = ["Android", "iPhone", "iPad", "iPod", "webOS", "BlackBerry"]; -/// If context is running under mobile device? -fn is_mobile() -> Option { - let user_agent = web_sys::window()?.navigator().user_agent().ok()?; - let is_mobile = MOBILE_DEVICE.iter().any(|&name| user_agent.contains(name)); - Some(is_mobile) -} - -// Move text agent to text cursor's position, on desktop/laptop, -// candidate window moves following text element (agent), -// so it appears that the IME candidate window moves with text cursor. -// On mobile devices, there is no need to do that. -fn move_text_cursor(cursor: Option, canvas_id: &str) -> Option<()> { - let style = text_agent().style(); - // Note: movint agent on mobile devices will lead to unpredictable scroll. - if is_mobile() == Some(false) { - cursor.as_ref().and_then(|&egui::Pos2 { x, y }| { - let canvas = canvas_element(canvas_id)?; - let bounding_rect = text_agent().get_bounding_client_rect(); - let y = (y + (canvas.scroll_top() + canvas.offset_top()) as f32) - .min(canvas.client_height() as f32 - bounding_rect.height() as f32); - let x = x + (canvas.scroll_left() + canvas.offset_left()) as f32; - // Canvas is translated 50% horizontally in html. - let x = (x - canvas.offset_width() as f32 / 2.0) - .min(canvas.client_width() as f32 - bounding_rect.width() as f32); - style.set_property("position", "absolute").ok()?; - style.set_property("top", &(y.to_string() + "px")).ok()?; - style.set_property("left", &(x.to_string() + "px")).ok() - }) - } else { - style.set_property("position", "absolute").ok()?; - style.set_property("top", "0px").ok()?; - style.set_property("left", "0px").ok() - } -} - pub(crate) fn webgl1_requires_brightening(gl: &web_sys::WebGlRenderingContext) -> bool { // See https://github.com/emilk/egui/issues/794 diff --git a/egui_web/src/text_agent.rs b/egui_web/src/text_agent.rs new file mode 100644 index 00000000..2fbaa1b0 --- /dev/null +++ b/egui_web/src/text_agent.rs @@ -0,0 +1,202 @@ +//! The text agent is an `` element used to trigger +//! mobile keyboard and IME input. + +use crate::{canvas_element, AppRunner, AppRunnerRef}; +use std::cell::Cell; +use std::rc::Rc; +use wasm_bindgen::prelude::*; + +static AGENT_ID: &str = "egui_text_agent"; + +pub fn text_agent() -> web_sys::HtmlInputElement { + use wasm_bindgen::JsCast; + web_sys::window() + .unwrap() + .document() + .unwrap() + .get_element_by_id(AGENT_ID) + .unwrap() + .dyn_into() + .unwrap() +} + +/// Text event handler, +pub fn install_text_agent(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { + use wasm_bindgen::JsCast; + let window = web_sys::window().unwrap(); + let document = window.document().unwrap(); + let body = document.body().expect("document should have a body"); + let input = document + .create_element("input")? + .dyn_into::()?; + let input = std::rc::Rc::new(input); + input.set_id(AGENT_ID); + let is_composing = Rc::new(Cell::new(false)); + { + let style = input.style(); + // Transparent + style.set_property("opacity", "0").unwrap(); + // Hide under canvas + style.set_property("z-index", "-1").unwrap(); + } + // Set size as small as possible, in case user may click on it. + input.set_size(1); + input.set_autofocus(true); + input.set_hidden(true); + { + // When IME is off + let input_clone = input.clone(); + let runner_ref = runner_ref.clone(); + let is_composing = is_composing.clone(); + let on_input = Closure::wrap(Box::new(move |_event: web_sys::InputEvent| { + let text = input_clone.value(); + if !text.is_empty() && !is_composing.get() { + input_clone.set_value(""); + let mut runner_lock = runner_ref.0.lock(); + runner_lock.input.raw.events.push(egui::Event::Text(text)); + runner_lock.needs_repaint.set_true(); + } + }) as Box); + input.add_event_listener_with_callback("input", on_input.as_ref().unchecked_ref())?; + on_input.forget(); + } + { + // When IME is on, handle composition event + let input_clone = input.clone(); + let runner_ref = runner_ref.clone(); + let on_compositionend = Closure::wrap(Box::new(move |event: web_sys::CompositionEvent| { + let mut runner_lock = runner_ref.0.lock(); + let opt_event = match event.type_().as_ref() { + "compositionstart" => { + is_composing.set(true); + input_clone.set_value(""); + Some(egui::Event::CompositionStart) + } + "compositionend" => { + is_composing.set(false); + input_clone.set_value(""); + event.data().map(egui::Event::CompositionEnd) + } + "compositionupdate" => event.data().map(egui::Event::CompositionUpdate), + s => { + tracing::error!("Unknown composition event type: {:?}", s); + None + } + }; + if let Some(event) = opt_event { + runner_lock.input.raw.events.push(event); + runner_lock.needs_repaint.set_true(); + } + }) as Box); + let f = on_compositionend.as_ref().unchecked_ref(); + input.add_event_listener_with_callback("compositionstart", f)?; + input.add_event_listener_with_callback("compositionupdate", f)?; + input.add_event_listener_with_callback("compositionend", f)?; + on_compositionend.forget(); + } + { + // When input lost focus, focus on it again. + // It is useful when user click somewhere outside canvas. + let on_focusout = Closure::wrap(Box::new(move |_event: web_sys::MouseEvent| { + // Delay 10 ms, and focus again. + let func = js_sys::Function::new_no_args(&format!( + "document.getElementById('{}').focus()", + AGENT_ID + )); + window + .set_timeout_with_callback_and_timeout_and_arguments_0(&func, 10) + .unwrap(); + }) as Box); + input.add_event_listener_with_callback("focusout", on_focusout.as_ref().unchecked_ref())?; + on_focusout.forget(); + } + body.append_child(&input)?; + Ok(()) +} + +/// Focus or blur text agent to toggle mobile keyboard. +pub fn update_text_agent(runner: &AppRunner) -> Option<()> { + use wasm_bindgen::JsCast; + use web_sys::HtmlInputElement; + let window = web_sys::window()?; + let document = window.document()?; + let input: HtmlInputElement = document.get_element_by_id(AGENT_ID)?.dyn_into().unwrap(); + let canvas_style = canvas_element(runner.canvas_id())?.style(); + + if runner.mutable_text_under_cursor { + let is_already_editing = input.hidden(); + if is_already_editing { + input.set_hidden(false); + input.focus().ok()?; + + // Move up canvas so that text edit is shown at ~30% of screen height. + // Only on touch screens, when keyboard popups. + if let Some(latest_touch_pos) = runner.input.latest_touch_pos { + let window_height = window.inner_height().ok()?.as_f64()? as f32; + let current_rel = latest_touch_pos.y / window_height; + + // estimated amount of screen covered by keyboard + let keyboard_fraction = 0.5; + + if current_rel > keyboard_fraction { + // below the keyboard + + let target_rel = 0.3; + + // Note: `delta` is negative, since we are moving the canvas UP + let delta = target_rel - current_rel; + + let delta = delta.max(-keyboard_fraction); // Don't move it crazy much + + let new_pos_percent = (delta * 100.0).round().to_string() + "%"; + + canvas_style.set_property("position", "absolute").ok()?; + canvas_style.set_property("top", &new_pos_percent).ok()?; + } + } + } + } else { + input.blur().ok()?; + input.set_hidden(true); + canvas_style.set_property("position", "absolute").ok()?; + canvas_style.set_property("top", "0%").ok()?; // move back to normal position + } + Some(()) +} + +/// If context is running under mobile device? +fn is_mobile() -> Option { + const MOBILE_DEVICE: [&str; 6] = ["Android", "iPhone", "iPad", "iPod", "webOS", "BlackBerry"]; + + let user_agent = web_sys::window()?.navigator().user_agent().ok()?; + let is_mobile = MOBILE_DEVICE.iter().any(|&name| user_agent.contains(name)); + Some(is_mobile) +} + +// Move text agent to text cursor's position, on desktop/laptop, +// candidate window moves following text element (agent), +// so it appears that the IME candidate window moves with text cursor. +// On mobile devices, there is no need to do that. +pub fn move_text_cursor(cursor: Option, canvas_id: &str) -> Option<()> { + let style = text_agent().style(); + // Note: movint agent on mobile devices will lead to unpredictable scroll. + if is_mobile() == Some(false) { + cursor.as_ref().and_then(|&egui::Pos2 { x, y }| { + let canvas = canvas_element(canvas_id)?; + let bounding_rect = text_agent().get_bounding_client_rect(); + let y = (y + (canvas.scroll_top() + canvas.offset_top()) as f32) + .min(canvas.client_height() as f32 - bounding_rect.height() as f32); + let x = x + (canvas.scroll_left() + canvas.offset_left()) as f32; + // Canvas is translated 50% horizontally in html. + let x = (x - canvas.offset_width() as f32 / 2.0) + .min(canvas.client_width() as f32 - bounding_rect.width() as f32); + style.set_property("position", "absolute").ok()?; + style.set_property("top", &(y.to_string() + "px")).ok()?; + style.set_property("left", &(x.to_string() + "px")).ok() + }) + } else { + style.set_property("position", "absolute").ok()?; + style.set_property("top", "0px").ok()?; + style.set_property("left", "0px").ok() + } +} From c3fc8997d647aaee5006ccd3a56dff00884d3b8c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 15:26:26 +0100 Subject: [PATCH 33/51] =?UTF-8?q?Introduce=20egui=5Fextras=20with=20Retain?= =?UTF-8?q?edImage=20for=20loading=20svg,png,jpeg,=E2=80=A6=20(#1282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/rust.yml | 2 +- ARCHITECTURE.md | 5 +- Cargo.lock | 94 ++++++++++----- Cargo.toml | 1 + eframe/Cargo.toml | 7 +- eframe/examples/download_image.rs | 34 ++---- eframe/examples/image.rs | 39 ++++--- eframe/examples/svg.rs | 79 ++----------- egui/src/widget_text.rs | 7 ++ egui_demo_lib/Cargo.toml | 1 + egui_demo_lib/src/apps/http_app.rs | 30 ++--- egui_extras/CHANGELOG.md | 6 + egui_extras/Cargo.toml | 48 ++++++++ egui_extras/README.md | 8 ++ egui_extras/src/image.rs | 177 +++++++++++++++++++++++++++++ egui_extras/src/lib.rs | 87 ++++++++++++++ sh/check.sh | 2 + sh/docs.sh | 2 +- 18 files changed, 453 insertions(+), 176 deletions(-) create mode 100644 egui_extras/CHANGELOG.md create mode 100644 egui_extras/Cargo.toml create mode 100644 egui_extras/README.md create mode 100644 egui_extras/src/image.rs create mode 100644 egui_extras/src/lib.rs diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index eb595662..09df2c58 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -132,7 +132,7 @@ jobs: toolchain: 1.56.0 override: true - run: sudo apt-get update && sudo apt-get install libspeechd-dev - - run: cargo doc -p emath -p epaint -p egui -p eframe -p epi -p egui_web -p egui-winit -p egui_glium -p egui_glow --lib --no-deps --all-features + - run: cargo doc -p emath -p epaint -p egui -p eframe -p epi -p egui_web -p egui-winit -p egui_extras -p egui_glium -p egui_glow --lib --no-deps --all-features doc_web: name: cargo doc web diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 994c5be2..5381d322 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -5,7 +5,7 @@ Also see [`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUT ## Crate overview -The crates in this repository are: `egui, emath, epaint, egui, epi, egui-winit, egui_web, egui_glium, egui_glow, egui_demo_lib, egui_demo_app`. +The crates in this repository are: `egui, emath, epaint, egui_extras, epi, egui-winit, egui_web, egui_glium, egui_glow, egui_demo_lib, egui_demo_app`. ### `egui`: The main GUI library. Example code: `if ui.button("Click me").clicked() { … }` @@ -21,6 +21,9 @@ Example: `Shape::Circle { center, radius, fill, stroke }` Depends on `emath`, [`ab_glyph`](https://crates.io/crates/ab_glyph), [`atomic_refcell`](https://crates.io/crates/atomic_refcell), [`ahash`](https://crates.io/crates/ahash). +### `egui_extras` +This adds additional features on top of `egui`. + ### `epi` Depends only on `egui`. Adds a thin application level wrapper around `egui` for hosting an `egui` app inside of `eframe`. diff --git a/Cargo.lock b/Cargo.lock index 1d0beef3..7cbeb430 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -994,6 +994,7 @@ version = "0.16.0" dependencies = [ "egui", "egui-winit", + "egui_extras", "egui_glium", "egui_glow", "egui_web", @@ -1001,10 +1002,7 @@ dependencies = [ "epi", "image", "poll-promise", - "resvg", "rfd", - "tiny-skia", - "usvg", ] [[package]] @@ -1053,6 +1051,7 @@ dependencies = [ "chrono", "criterion", "egui", + "egui_extras", "ehttp", "enum-map", "epi", @@ -1063,6 +1062,18 @@ dependencies = [ "unicode_names2", ] +[[package]] +name = "egui_extras" +version = "0.16.0" +dependencies = [ + "egui", + "image", + "parking_lot", + "resvg", + "tiny-skia", + "usvg", +] + [[package]] name = "egui_glium" version = "0.16.0" @@ -1335,14 +1346,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "fontdb" -version = "0.7.0" +name = "fontconfig-parser" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b07f5c05414a0d8caba4c17eef8dc8b5c8955fc7c68d324191c7a56d3f3449" +checksum = "82cea2adebf32a9b104b8ffb308b5fb3b456f04cc76c294c3c85025c8a5d75f4" dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db856ee8cca3b9f23dd11c13bf3d4854b663ae86ed0c4a627a354431fc265f66" +dependencies = [ + "fontconfig-parser", "log", "memmap2 0.5.2", - "ttf-parser 0.12.3", + "ttf-parser 0.15.0", ] [[package]] @@ -1515,6 +1536,16 @@ dependencies = [ "wasi", ] +[[package]] +name = "gif" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3a7187e78088aead22ceedeee99779455b23fc231fe13ec443f99bb71694e5b" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gimli" version = "0.26.1" @@ -1764,7 +1795,7 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", - "jpeg-decoder 0.2.1", + "jpeg-decoder", "num-iter", "num-rational", "num-traits", @@ -1836,15 +1867,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jpeg-decoder" -version = "0.1.22" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" - -[[package]] -name = "jpeg-decoder" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcf0244f6597be39ab8d9203f574cafb529ae8c698afa2182f7b3c3205a4a9c" +checksum = "105fb082d64e2100074587f59a74231f771750c664af903f1f9f76c9dedfc6f1" [[package]] name = "js-sys" @@ -2671,11 +2696,12 @@ checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "resvg" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94a32ca845cdda27237a40beba9bd3d3858ac8fc5356eb9442bdeecfe34d9e0" +checksum = "2e702d1e8e00a3a0717b96244cba840f34f542d8f23097c8903266c4e2975658" dependencies = [ - "jpeg-decoder 0.1.22", + "gif", + "jpeg-decoder", "log", "pico-args", "png", @@ -2801,14 +2827,14 @@ dependencies = [ [[package]] name = "rustybuzz" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44561062e583c4873162861261f16fd1d85fe927c4904d71329a4fe43dc355ef" +checksum = "25ff94f20221325d000e552781713e53b0d85c1d9551b6f420d12daf5a08eace" dependencies = [ "bitflags", "bytemuck", "smallvec", - "ttf-parser 0.12.3", + "ttf-parser 0.15.0", "unicode-bidi-mirroring", "unicode-ccc", "unicode-general-category", @@ -3339,18 +3365,18 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "ttf-parser" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" - [[package]] name = "ttf-parser" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ccbe8381883510b6a2d8f1e32905bddd178c11caef8083086d0c0c9ab0ac281" +[[package]] +name = "ttf-parser" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c74c96594835e10fa545e2a51e8709f30b173a092bfd6036ef2cec53376244f3" + [[package]] name = "tts" version = "0.20.2" @@ -3472,9 +3498,9 @@ dependencies = [ [[package]] name = "usvg" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f064d38f79ff69e3160e2fba884e4ede897061c15178041a3976371c68cab1" +checksum = "a261d60a7215fa339482047cc3dafd4e22e2bf34396aaebef2b707355bbb39c0" dependencies = [ "base64", "data-url", @@ -3490,7 +3516,7 @@ dependencies = [ "simplecss", "siphasher", "svgtypes", - "ttf-parser 0.12.3", + "ttf-parser 0.15.0", "unicode-bidi", "unicode-script", "unicode-vo", @@ -3733,6 +3759,12 @@ dependencies = [ "webpki", ] +[[package]] +name = "weezl" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b77fdfd5a253be4ab714e4ffa3c49caf146b4de743e97510c0656cf90f1e8e" + [[package]] name = "wepoll-ffi" version = "0.1.2" diff --git a/Cargo.toml b/Cargo.toml index 53b381e2..a8113833 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ resolver = "2" members = [ "egui_demo_app", "egui_demo_lib", + "egui_extras", "egui_glium", "egui_glow", "egui_web", diff --git a/eframe/Cargo.toml b/eframe/Cargo.toml index a9ff85c3..30778526 100644 --- a/eframe/Cargo.toml +++ b/eframe/Cargo.toml @@ -64,12 +64,9 @@ egui_web = { version = "0.16.0", path = "../egui_web", default-features = false, [dev-dependencies] +# For examples: +egui_extras = { path = "../egui_extras", features = ["image", "svg"] } ehttp = "0.2" image = { version = "0.24", default-features = false, features = ["jpeg", "png"] } poll-promise = "0.1" rfd = "0.7" - -# svg.rs example: -resvg = "0.20" -tiny-skia = "0.6" -usvg = "0.20" diff --git a/eframe/examples/download_image.rs b/eframe/examples/download_image.rs index e350ac56..dede08c4 100644 --- a/eframe/examples/download_image.rs +++ b/eframe/examples/download_image.rs @@ -1,6 +1,7 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release use eframe::{egui, epi}; +use egui_extras::RetainedImage; use poll_promise::Promise; fn main() { @@ -11,7 +12,7 @@ fn main() { #[derive(Default)] struct MyApp { /// `None` when download hasn't started yet. - promise: Option>>, + promise: Option>>, } impl epi::App for MyApp { @@ -24,14 +25,13 @@ impl epi::App for MyApp { // Begin download. // We download the image using `ehttp`, a library that works both in WASM and on native. // We use the `poll-promise` library to communicate with the UI thread. - let ctx = ctx.clone(); let frame = frame.clone(); let (sender, promise) = Promise::new(); let request = ehttp::Request::get("https://picsum.photos/seed/1.759706314/1024"); ehttp::fetch(request, move |response| { + let image = response.and_then(parse_response); + sender.send(image); // send the results back to the UI thread. frame.request_repaint(); // wake up UI thread - let texture = response.and_then(|response| parse_response(&ctx, response)); - sender.send(texture); // send the results back to the UI thread. }); promise }); @@ -43,24 +43,17 @@ impl epi::App for MyApp { Some(Err(err)) => { ui.colored_label(egui::Color32::RED, err); // something went wrong } - Some(Ok(texture)) => { - let mut size = texture.size_vec2(); - size *= (ui.available_width() / size.x).min(1.0); - size *= (ui.available_height() / size.y).min(1.0); - ui.image(texture, size); + Some(Ok(image)) => { + image.show_max_size(ui, ui.available_size()); } }); } } -fn parse_response( - ctx: &egui::Context, - response: ehttp::Response, -) -> Result { +fn parse_response(response: ehttp::Response) -> Result { let content_type = response.content_type().unwrap_or_default(); if content_type.starts_with("image/") { - let image = load_image(&response.bytes).map_err(|err| err.to_string())?; - Ok(ctx.load_texture("my-image", image)) + RetainedImage::from_image_bytes(&response.url, &response.bytes) } else { Err(format!( "Expected image, found content-type {:?}", @@ -68,14 +61,3 @@ fn parse_response( )) } } - -fn load_image(image_data: &[u8]) -> Result { - let image = image::load_from_memory(image_data)?; - let size = [image.width() as _, image.height() as _]; - let image_buffer = image.to_rgba8(); - let pixels = image_buffer.as_flat_samples(); - Ok(egui::ColorImage::from_rgba_unmultiplied( - size, - pixels.as_slice(), - )) -} diff --git a/eframe/examples/image.rs b/eframe/examples/image.rs index a47e6c5b..97575c23 100644 --- a/eframe/examples/image.rs +++ b/eframe/examples/image.rs @@ -1,10 +1,22 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release use eframe::{egui, epi}; +use egui_extras::RetainedImage; -#[derive(Default)] struct MyApp { - texture: Option, + image: RetainedImage, +} + +impl Default for MyApp { + fn default() -> Self { + Self { + image: RetainedImage::from_image_bytes( + "rust-logo-256x256.png", + include_bytes!("rust-logo-256x256.png"), + ) + .unwrap(), + } + } } impl epi::App for MyApp { @@ -13,17 +25,15 @@ impl epi::App for MyApp { } fn update(&mut self, ctx: &egui::Context, _frame: &epi::Frame) { - let texture: &egui::TextureHandle = self.texture.get_or_insert_with(|| { - let image = load_image(include_bytes!("rust-logo-256x256.png")).unwrap(); - ctx.load_texture("rust-logo", image) - }); - egui::CentralPanel::default().show(ctx, |ui| { ui.heading("This is an image:"); - ui.image(texture, texture.size_vec2()); + self.image.show(ui); ui.heading("This is an image you can click:"); - ui.add(egui::ImageButton::new(texture, texture.size_vec2())); + ui.add(egui::ImageButton::new( + self.image.texture_id(ctx), + self.image.size_vec2(), + )); }); } } @@ -32,14 +42,3 @@ fn main() { let options = eframe::NativeOptions::default(); eframe::run_native(Box::new(MyApp::default()), options); } - -fn load_image(image_data: &[u8]) -> Result { - let image = image::load_from_memory(image_data)?; - let size = [image.width() as _, image.height() as _]; - let image_buffer = image.to_rgba8(); - let pixels = image_buffer.as_flat_samples(); - Ok(egui::ColorImage::from_rgba_unmultiplied( - size, - pixels.as_slice(), - )) -} diff --git a/eframe/examples/svg.rs b/eframe/examples/svg.rs index e4aff0cf..b7d362f9 100644 --- a/eframe/examples/svg.rs +++ b/eframe/examples/svg.rs @@ -1,82 +1,23 @@ //! A good way of displaying an SVG image in egui. //! -//! Requires the dependencies `resvg`, `tiny-skia`, `usvg` +//! Requires the dependency `egui_extras` with the `svg` feature. + +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release + use eframe::{egui, epi}; -/// Load an SVG and rasterize it into an egui image. -fn load_svg_data(svg_data: &[u8]) -> Result { - let mut opt = usvg::Options::default(); - opt.fontdb.load_system_fonts(); - - let rtree = usvg::Tree::from_data(svg_data, &opt.to_ref()).map_err(|err| err.to_string())?; - - let pixmap_size = rtree.svg_node().size.to_screen_size(); - let [w, h] = [pixmap_size.width(), pixmap_size.height()]; - - let mut pixmap = tiny_skia::Pixmap::new(w, h) - .ok_or_else(|| format!("Failed to create SVG Pixmap of size {}x{}", w, h))?; - - resvg::render( - &rtree, - usvg::FitTo::Original, - tiny_skia::Transform::default(), - pixmap.as_mut(), - ) - .ok_or_else(|| "Failed to render SVG".to_owned())?; - - let image = egui::ColorImage::from_rgba_unmultiplied( - [pixmap.width() as _, pixmap.height() as _], - pixmap.data(), - ); - - Ok(image) -} - -// ---------------------------------------------------------------------------- - -/// An SVG image to be shown in egui -struct SvgImage { - image: egui::ColorImage, - texture: Option, -} - -impl SvgImage { - /// Pass itn the bytes of an SVG that you've loaded from disk - pub fn from_svg_data(bytes: &[u8]) -> Result { - Ok(Self { - image: load_svg_data(bytes)?, - texture: None, - }) - } - - pub fn show_max_size(&mut self, ui: &mut egui::Ui, max_size: egui::Vec2) -> egui::Response { - let mut desired_size = egui::vec2(self.image.width() as _, self.image.height() as _); - desired_size *= (max_size.x / desired_size.x).min(1.0); - desired_size *= (max_size.y / desired_size.y).min(1.0); - self.show_size(ui, desired_size) - } - - pub fn show_size(&mut self, ui: &mut egui::Ui, desired_size: egui::Vec2) -> egui::Response { - // We need to convert the SVG to a texture to display it: - // Future improvement: tell backend to do mip-mapping of the image to - // make it look smoother when downsized. - let svg_texture = self - .texture - .get_or_insert_with(|| ui.ctx().load_texture("svg", self.image.clone())); - ui.image(svg_texture, desired_size) - } -} - -// ---------------------------------------------------------------------------- - struct MyApp { - svg_image: SvgImage, + svg_image: egui_extras::RetainedImage, } impl Default for MyApp { fn default() -> Self { Self { - svg_image: SvgImage::from_svg_data(include_bytes!("rustacean-flat-happy.svg")).unwrap(), + svg_image: egui_extras::RetainedImage::from_svg_bytes( + "rustacean-flat-happy.svg", + include_bytes!("rustacean-flat-happy.svg"), + ) + .unwrap(), } } } diff --git a/egui/src/widget_text.rs b/egui/src/widget_text.rs index 4e5659cd..c9fb64e2 100644 --- a/egui/src/widget_text.rs +++ b/egui/src/widget_text.rs @@ -51,6 +51,13 @@ impl From<&String> for RichText { } } +impl From<&mut String> for RichText { + #[inline] + fn from(text: &mut String) -> Self { + RichText::new(text.clone()) + } +} + impl From for RichText { #[inline] fn from(text: String) -> Self { diff --git a/egui_demo_lib/Cargo.toml b/egui_demo_lib/Cargo.toml index 38447b14..689c7c47 100644 --- a/egui_demo_lib/Cargo.toml +++ b/egui_demo_lib/Cargo.toml @@ -40,6 +40,7 @@ syntax_highlighting = ["syntect"] [dependencies] egui = { version = "0.16.0", path = "../egui", default-features = false } +egui_extras = { version = "0.16.0", path = "../egui_extras", features = ["image"] } epi = { version = "0.16.0", path = "../epi" } chrono = { version = "0.4", features = ["js-sys", "wasmbind"], optional = true } diff --git a/egui_demo_lib/src/apps/http_app.rs b/egui_demo_lib/src/apps/http_app.rs index aa6ac4f4..c8215b42 100644 --- a/egui_demo_lib/src/apps/http_app.rs +++ b/egui_demo_lib/src/apps/http_app.rs @@ -1,3 +1,4 @@ +use egui_extras::RetainedImage; use poll_promise::Promise; struct Resource { @@ -7,7 +8,7 @@ struct Resource { text: Option, /// If set, the response was an image. - texture: Option, + image: Option, /// If set, the response was text with some supported syntax highlighting (e.g. ".rs" or ".md"). colored_text: Option, @@ -17,13 +18,11 @@ impl Resource { fn from_response(ctx: &egui::Context, response: ehttp::Response) -> Self { let content_type = response.content_type().unwrap_or_default(); let image = if content_type.starts_with("image/") { - load_image(&response.bytes).ok() + RetainedImage::from_image_bytes(&response.url, &response.bytes).ok() } else { None }; - let texture = image.map(|image| ctx.load_texture(&response.url, image)); - let text = response.text(); let colored_text = text.and_then(|text| syntax_highlighting(ctx, &response, text)); let text = text.map(|text| text.to_owned()); @@ -31,7 +30,7 @@ impl Resource { Self { response, text, - texture, + image, colored_text, } } @@ -151,7 +150,7 @@ fn ui_resource(ui: &mut egui::Ui, resource: &Resource) { let Resource { response, text, - texture, + image, colored_text, } = resource; @@ -198,10 +197,10 @@ fn ui_resource(ui: &mut egui::Ui, resource: &Resource) { ui.separator(); } - if let Some(texture) = texture { - let mut size = texture.size_vec2(); + if let Some(image) = image { + let mut size = image.size_vec2(); size *= (ui.available_width() / size.x).min(1.0); - ui.image(texture, size); + image.show_size(ui, size); } else if let Some(colored_text) = colored_text { colored_text.ui(ui); } else if let Some(text) = &text { @@ -270,16 +269,3 @@ impl ColoredText { } } } - -// ---------------------------------------------------------------------------- - -fn load_image(image_data: &[u8]) -> Result { - let image = image::load_from_memory(image_data)?; - let size = [image.width() as _, image.height() as _]; - let image_buffer = image.to_rgba8(); - let pixels = image_buffer.as_flat_samples(); - Ok(egui::ColorImage::from_rgba_unmultiplied( - size, - pixels.as_slice(), - )) -} diff --git a/egui_extras/CHANGELOG.md b/egui_extras/CHANGELOG.md new file mode 100644 index 00000000..d16a58db --- /dev/null +++ b/egui_extras/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog for egui_extras +All notable changes to the `egui_extras` integration will be noted in this file. + + +## Unreleased +* `RetainedImage`: conventience for loading svg, png, jpeg etc and showing them in egui. diff --git a/egui_extras/Cargo.toml b/egui_extras/Cargo.toml new file mode 100644 index 00000000..7fed0fae --- /dev/null +++ b/egui_extras/Cargo.toml @@ -0,0 +1,48 @@ +[package] +name = "egui_extras" +version = "0.16.0" +authors = ["Emil Ernerfeldt "] +description = "Extra functionality and widgets for the egui GUI library" +edition = "2021" +rust-version = "1.56" +homepage = "https://github.com/emilk/egui" +license = "MIT OR Apache-2.0" +readme = "../README.md" +repository = "https://github.com/emilk/egui" +categories = ["gui", "game-development"] +keywords = ["gui", "imgui", "immediate", "portable", "gamedev"] +include = [ + "../LICENSE-APACHE", + "../LICENSE-MIT", + "**/*.rs", + "Cargo.toml", +] + +[package.metadata.docs.rs] +all-features = true + +[lib] + + +[features] +default = [] + +# Support loading svg images +svg = ["resvg", "tiny-skia", "usvg"] + + +[dependencies] +egui = { version = "0.16.1", path = "../egui", default-features = false, features = ["single_threaded"] } +parking_lot = "0.11" + +# Optional dependencies: + +# Add support for loading images with the `image` crate. +# You also need to ALSO opt-in to the image formats you want to support, like so: +# image = { version = "0.24", features = ["jpeg", "png"] } +image = { version = "0.24", optional = true, default-features = false, features = [] } + +# svg feature +resvg = { version = "0.22", optional = true } +tiny-skia = { version = "0.6", optional = true } +usvg = { version = "0.22", optional = true } diff --git a/egui_extras/README.md b/egui_extras/README.md new file mode 100644 index 00000000..4909fd97 --- /dev/null +++ b/egui_extras/README.md @@ -0,0 +1,8 @@ +# egui_extras + +[![Latest version](https://img.shields.io/crates/v/egui_extras.svg)](https://crates.io/crates/egui_extras) +[![Documentation](https://docs.rs/egui_extras/badge.svg)](https://docs.rs/egui_extras) +![MIT](https://img.shields.io/badge/license-MIT-blue.svg) +![Apache](https://img.shields.io/badge/license-Apache-blue.svg) + +This is a crate that adds some features on top top of [`egui`](https://github.com/emilk/egui). This crate are for experimental features, and features that require big dependencies that does not belong in `egui`. diff --git a/egui_extras/src/image.rs b/egui_extras/src/image.rs new file mode 100644 index 00000000..4015acd3 --- /dev/null +++ b/egui_extras/src/image.rs @@ -0,0 +1,177 @@ +use parking_lot::Mutex; + +/// An image to be shown in egui. +/// +/// Load once, and save somewhere in your app state. +/// +/// Use the `svg` and `image` features to enable more constructors. +pub struct RetainedImage { + debug_name: String, + size: [usize; 2], + /// Cleared once [`Self::texture`] has been loaded. + image: Mutex, + /// Lazily loaded when we have an egui context. + texture: Mutex>, +} + +impl RetainedImage { + pub fn from_color_image(debug_name: impl Into, image: ColorImage) -> Self { + Self { + debug_name: debug_name.into(), + size: image.size, + image: Mutex::new(image), + texture: Default::default(), + } + } + + /// Load a (non-svg) image. + /// + /// Requires the "image" feature. You must also opt-in to the image formats you need + /// with e.g. `image = { version = "0.24", features = ["jpeg", "png"] }`. + /// + /// # Errors + /// On invalid image or unsupported image format. + #[cfg(feature = "image")] + pub fn from_image_bytes( + debug_name: impl Into, + image_bytes: &[u8], + ) -> Result { + Ok(Self::from_color_image( + debug_name, + load_image_bytes(image_bytes)?, + )) + } + + /// Pass in the bytes of an SVG that you've loaded. + /// + /// # Errors + /// On invalid image + #[cfg(feature = "svg")] + pub fn from_svg_bytes(debug_name: impl Into, svg_bytes: &[u8]) -> Result { + Ok(Self::from_color_image( + debug_name, + load_svg_bytes(svg_bytes)?, + )) + } + + /// Pass in the str of an SVG that you've loaded. + /// + /// # Errors + /// On invalid image + #[cfg(feature = "svg")] + pub fn from_svg_str(debug_name: impl Into, svg_str: &str) -> Result { + Self::from_svg_bytes(debug_name, svg_str.as_bytes()) + } + + /// The size of the image data (number of pixels wide/high). + pub fn size(&self) -> [usize; 2] { + self.size + } + + /// The size of the image data (number of pixels wide/high). + pub fn size_vec2(&self) -> egui::Vec2 { + let [w, h] = self.size(); + egui::vec2(w as f32, h as f32) + } + + /// The debug name of the image, e.g. the file name. + pub fn debug_name(&self) -> &str { + &self.debug_name + } + + /// The texture if for this image. + pub fn texture_id(&self, ctx: &egui::Context) -> egui::TextureId { + self.texture + .lock() + .get_or_insert_with(|| { + let image: &mut ColorImage = &mut self.image.lock(); + let image = std::mem::take(image); + ctx.load_texture(&self.debug_name, image) + }) + .id() + } + + /// Show the image with the given maximum size. + pub fn show_max_size(&self, ui: &mut egui::Ui, max_size: egui::Vec2) -> egui::Response { + let mut desired_size = self.size_vec2(); + desired_size *= (max_size.x / desired_size.x).min(1.0); + desired_size *= (max_size.y / desired_size.y).min(1.0); + self.show_size(ui, desired_size) + } + + /// Show the image with the original size (one image pixel = one gui point). + pub fn show(&self, ui: &mut egui::Ui) -> egui::Response { + self.show_size(ui, self.size_vec2()) + } + + /// Show the image with the given scale factor (1.0 = original size). + pub fn show_scaled(&self, ui: &mut egui::Ui, scale: f32) -> egui::Response { + self.show_size(ui, self.size_vec2() * scale) + } + + /// Show the image with the given size. + pub fn show_size(&self, ui: &mut egui::Ui, desired_size: egui::Vec2) -> egui::Response { + // We need to convert the SVG to a texture to display it: + // Future improvement: tell backend to do mip-mapping of the image to + // make it look smoother when downsized. + ui.image(self.texture_id(ui.ctx()), desired_size) + } +} + +// ---------------------------------------------------------------------------- + +use egui::ColorImage; + +/// Load a (non-svg) image. +/// +/// Requires the "image" feature. You must also opt-in to the image formats you need +/// with e.g. `image = { version = "0.24", features = ["jpeg", "png"] }`. +/// +/// # Errors +/// On invalid image or unsupported image format. +#[cfg(feature = "image")] +pub fn load_image_bytes(image_bytes: &[u8]) -> Result { + let image = image::load_from_memory(image_bytes).map_err(|err| err.to_string())?; + let size = [image.width() as _, image.height() as _]; + let image_buffer = image.to_rgba8(); + let pixels = image_buffer.as_flat_samples(); + Ok(egui::ColorImage::from_rgba_unmultiplied( + size, + pixels.as_slice(), + )) +} + +/// Load an SVG and rasterize it into an egui image. +/// +/// Requires the "svg" feature. +/// +/// # Errors +/// On invalid image +#[cfg(feature = "svg")] +pub fn load_svg_bytes(svg_bytes: &[u8]) -> Result { + let mut opt = usvg::Options::default(); + opt.fontdb.load_system_fonts(); + + let rtree = usvg::Tree::from_data(svg_bytes, &opt.to_ref()).map_err(|err| err.to_string())?; + + let pixmap_size = rtree.svg_node().size.to_screen_size(); + let [w, h] = [pixmap_size.width(), pixmap_size.height()]; + + let mut pixmap = tiny_skia::Pixmap::new(w, h) + .ok_or_else(|| format!("Failed to create SVG Pixmap of size {}x{}", w, h))?; + + resvg::render( + &rtree, + usvg::FitTo::Original, + tiny_skia::Transform::default(), + pixmap.as_mut(), + ) + .ok_or_else(|| "Failed to render SVG".to_owned())?; + + let image = egui::ColorImage::from_rgba_unmultiplied( + [pixmap.width() as _, pixmap.height() as _], + pixmap.data(), + ); + + Ok(image) +} diff --git a/egui_extras/src/lib.rs b/egui_extras/src/lib.rs new file mode 100644 index 00000000..c51f54a8 --- /dev/null +++ b/egui_extras/src/lib.rs @@ -0,0 +1,87 @@ +//! This is a crate that adds some features on top top of [`egui`](https://github.com/emilk/egui). This crate are for experimental features, and features that require big dependencies that does not belong in `egui`. + +// Forbid warnings in release builds: +#![cfg_attr(not(debug_assertions), deny(warnings))] +#![forbid(unsafe_code)] +#![warn( + clippy::all, + clippy::await_holding_lock, + clippy::char_lit_as_u8, + clippy::checked_conversions, + clippy::dbg_macro, + clippy::debug_assert_with_mut_call, + clippy::disallowed_method, + clippy::doc_markdown, + clippy::empty_enum, + clippy::enum_glob_use, + clippy::exit, + clippy::expl_impl_clone_on_copy, + clippy::explicit_deref_methods, + clippy::explicit_into_iter_loop, + clippy::fallible_impl_from, + clippy::filter_map_next, + clippy::flat_map_option, + clippy::float_cmp_const, + clippy::fn_params_excessive_bools, + clippy::from_iter_instead_of_collect, + clippy::if_let_mutex, + clippy::implicit_clone, + clippy::imprecise_flops, + clippy::inefficient_to_string, + clippy::invalid_upcast_comparisons, + clippy::large_digit_groups, + clippy::large_stack_arrays, + clippy::large_types_passed_by_value, + clippy::let_unit_value, + clippy::linkedlist, + clippy::lossy_float_literal, + clippy::macro_use_imports, + clippy::manual_ok_or, + clippy::map_err_ignore, + clippy::map_flatten, + clippy::map_unwrap_or, + clippy::match_on_vec_items, + clippy::match_same_arms, + clippy::match_wild_err_arm, + clippy::match_wildcard_for_single_variants, + clippy::mem_forget, + clippy::mismatched_target_os, + clippy::missing_errors_doc, + clippy::missing_safety_doc, + clippy::mut_mut, + clippy::mutex_integer, + clippy::needless_borrow, + clippy::needless_continue, + clippy::needless_for_each, + clippy::needless_pass_by_value, + clippy::option_option, + clippy::path_buf_push_overwrite, + clippy::ptr_as_ptr, + clippy::ref_option_ref, + clippy::rest_pat_in_fully_bound_structs, + clippy::same_functions_in_if_condition, + clippy::semicolon_if_nothing_returned, + clippy::single_match_else, + clippy::string_add_assign, + clippy::string_add, + clippy::string_lit_as_bytes, + clippy::string_to_string, + clippy::todo, + clippy::trait_duplication_in_bounds, + clippy::unimplemented, + clippy::unnested_or_patterns, + clippy::unused_self, + clippy::useless_transmute, + clippy::verbose_file_reads, + clippy::zero_sized_map_values, + future_incompatible, + nonstandard_style, + rust_2018_idioms, + rustdoc::missing_crate_level_docs +)] +#![allow(clippy::float_cmp)] +#![allow(clippy::manual_range_contains)] + +pub mod image; + +pub use crate::image::RetainedImage; diff --git a/sh/check.sh b/sh/check.sh index 72fb1c64..e9d30930 100755 --- a/sh/check.sh +++ b/sh/check.sh @@ -28,6 +28,7 @@ cargo doc --document-private-items --no-deps --all-features (cd eframe && cargo check --no-default-features --features "egui_glow") (cd epi && cargo check --no-default-features) (cd egui_demo_lib && cargo check --no-default-features) +(cd egui_extras && cargo check --no-default-features) # (cd egui_web && cargo check --no-default-features) # we need to pick webgl or glow backend # (cd egui-winit && cargo check --no-default-features) # we don't pick singlethreaded or multithreaded (cd egui_glium && cargo check --no-default-features) @@ -36,6 +37,7 @@ cargo doc --document-private-items --no-deps --all-features (cd eframe && cargo check --all-features) (cd egui && cargo check --all-features) +(cd egui_extras && cargo check --all-features) (cd egui_glium && cargo check --all-features) (cd egui_glow && cargo check --all-features) (cd egui_web && cargo check --all-features) diff --git a/sh/docs.sh b/sh/docs.sh index 1a38d228..9803d7f1 100755 --- a/sh/docs.sh +++ b/sh/docs.sh @@ -4,6 +4,6 @@ script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) cd "$script_path/.." cargo doc -p egui_web --target wasm32-unknown-unknown --lib --no-deps --all-features -cargo doc -p emath -p epaint -p egui -p eframe -p epi -p egui_web -p egui-winit -p egui_glium -p egui_glow --lib --no-deps --all-features --open +cargo doc -p emath -p epaint -p egui -p eframe -p epi -p egui_web -p egui-winit -p egui_extras -p egui_glium -p egui_glow --lib --no-deps --all-features --open # cargo watch -c -x 'doc -p emath -p epaint -p egui --lib --no-deps --all-features' From b360dffdbf53a7a567ea0210d566a5553d83431b Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 15:29:18 +0100 Subject: [PATCH 34/51] Demo app: handle the case of wrong selected anchor --- egui_demo_lib/src/wrap_app.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/egui_demo_lib/src/wrap_app.rs b/egui_demo_lib/src/wrap_app.rs index 2913e149..ad752886 100644 --- a/egui_demo_lib/src/wrap_app.rs +++ b/egui_demo_lib/src/wrap_app.rs @@ -108,12 +108,19 @@ impl epi::App for WrapApp { }); } + let mut found_anchor = false; + for (anchor, app) in self.apps.iter_mut() { if anchor == self.selected_anchor || ctx.memory().everything_is_visible() { app.update(ctx, frame); + found_anchor = true; } } + if !found_anchor { + self.selected_anchor = "demo".into(); + } + self.backend_panel.end_of_frame(ctx); self.ui_file_drag_and_drop(ctx); From b8f427ddd6cb4ea3ed49f65ec3cff9856c59c456 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 15:30:53 +0100 Subject: [PATCH 35/51] Add a Code of Conduct, based on the Contributor Covenant Taken verbatim (with an added mention of the egui Discord) from https://www.contributor-covenant.org/version/2/1/code_of_conduct.html --- CODE_OF_CONDUCT.md | 133 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..5640e4fb --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[the egui discord](https://discord.gg/JFcEma9bJq). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations + From ddf914b517f5c13fc995172c31e0d65c8df6448a Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 15:40:25 +0100 Subject: [PATCH 36/51] Update crates (#1283) * Update rfd 0.8 -> 0.8 * Update webbrowser 0.5 -> 0.6 * Update unicode_names2 0.4 -> 0.5 * cargo update Updating crates.io index Adding arrayvec v0.7.2 Updating async-lock v2.4.0 -> v2.5.0 Updating autocfg v1.0.1 -> v1.1.0 Updating cc v1.0.72 -> v1.0.73 Updating cfg-expr v0.9.1 -> v0.10.1 Updating core-foundation v0.9.2 -> v0.9.3 Updating crc32fast v1.3.1 -> v1.3.2 Updating crossbeam-epoch v0.9.6 -> v0.9.7 Updating crossbeam-utils v0.8.6 -> v0.8.7 Updating deflate v0.9.1 -> v1.0.0 Removing encoding v0.2.33 Removing encoding-index-japanese v1.20141219.5 Removing encoding-index-korean v1.20141219.5 Removing encoding-index-simpchinese v1.20141219.5 Removing encoding-index-singlebyte v1.20141219.5 Removing encoding-index-tradchinese v1.20141219.5 Removing encoding_index_tests v0.1.4 Updating enum-map v2.0.1 -> v2.0.2 Updating futures-core v0.3.19 -> v0.3.21 Updating futures-io v0.3.19 -> v0.3.21 Updating futures-sink v0.3.19 -> v0.3.21 Updating futures-task v0.3.19 -> v0.3.21 Updating futures-util v0.3.19 -> v0.3.21 Updating gio-sys v0.15.4 -> v0.15.6 Updating glib-sys v0.15.4 -> v0.15.6 Updating gobject-sys v0.15.1 -> v0.15.5 Updating image v0.24.0 -> v0.24.1 Updating kurbo v0.8.0 -> v0.8.3 Updating libc v0.2.117 -> v0.2.119 Updating memmap2 v0.5.2 -> v0.5.3 Adding miniz_oxide v0.5.1 Adding ndk-context v0.1.0 Removing ndk-glue v0.5.0 Removing ndk-glue v0.6.0 Adding ndk-glue v0.5.1 Adding ndk-glue v0.6.1 Updating ntapi v0.3.6 -> v0.3.7 Updating png v0.17.2 -> v0.17.3 Updating proc-macro-crate v1.1.0 -> v1.1.2 Updating rand v0.8.4 -> v0.8.5 Removing rand_hc v0.3.1 Updating rustls v0.20.2 -> v0.20.4 Updating semver v1.0.4 -> v1.0.5 Updating serde_json v1.0.78 -> v1.0.79 Updating system-deps v6.0.1 -> v6.0.2 Updating tracing v0.1.30 -> v0.1.31 Updating tracing-subscriber v0.3.7 -> v0.3.9 Updating tts v0.20.2 -> v0.20.3 Removing windows v0.30.0 Removing windows_aarch64_msvc v0.30.0 Removing windows_i686_gnu v0.30.0 Removing windows_i686_msvc v0.30.0 Removing windows_x86_64_gnu v0.30.0 Removing windows_x86_64_msvc v0.30.0 --- Cargo.lock | 378 +++++++++++++-------------------------- eframe/Cargo.toml | 2 +- egui-winit/Cargo.toml | 2 +- egui_demo_lib/Cargo.toml | 2 +- 4 files changed, 131 insertions(+), 253 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7cbeb430..514ea8e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,18 +94,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] -name = "ashpd" -version = "0.2.2" +name = "arrayvec" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7915e26e0786f91768d23de32afafa4ee5e2ea76be21c0ecd8e14441543c1655" -dependencies = [ - "enumflags2", - "futures", - "rand", - "serde", - "serde_repr", - "zbus", -] +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "async-broadcast" @@ -164,9 +156,9 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" dependencies = [ "event-listener", ] @@ -230,9 +222,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" @@ -244,7 +236,7 @@ dependencies = [ "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide", + "miniz_oxide 0.4.4", "object", "rustc-demangle", ] @@ -401,9 +393,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cesu8" @@ -422,9 +414,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" +checksum = "295b6eb918a60a25fec0b23a5e633e74fddbaf7bb04411e65a10c366aca4b5cd" dependencies = [ "smallvec", ] @@ -522,7 +514,7 @@ dependencies = [ "bitflags", "block", "cocoa-foundation", - "core-foundation 0.9.2", + "core-foundation 0.9.3", "core-graphics 0.22.3", "foreign-types", "libc", @@ -537,7 +529,7 @@ checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" dependencies = [ "bitflags", "block", - "core-foundation 0.9.2", + "core-foundation 0.9.3", "core-graphics-types", "foreign-types", "libc", @@ -605,9 +597,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys 0.8.3", "libc", @@ -644,7 +636,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ "bitflags", - "core-foundation 0.9.2", + "core-foundation 0.9.3", "core-graphics-types", "foreign-types", "libc", @@ -657,7 +649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ "bitflags", - "core-foundation 0.9.2", + "core-foundation 0.9.3", "foreign-types", "libc", ] @@ -677,9 +669,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2209c310e29876f7f0b2721e7e26b84aff178aa3da5d091f9bfbf47669e60e3" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] @@ -743,9 +735,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762" +checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -756,9 +748,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -860,9 +852,9 @@ checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" [[package]] name = "deflate" -version = "0.9.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f95bf05dffba6e6cce8dfbb30def788154949ccd9aed761b472119c21e01c70" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" dependencies = [ "adler32", ] @@ -1150,75 +1142,11 @@ dependencies = [ "serde", ] -[[package]] -name = "encoding" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" -dependencies = [ - "encoding-index-japanese", - "encoding-index-korean", - "encoding-index-simpchinese", - "encoding-index-singlebyte", - "encoding-index-tradchinese", -] - -[[package]] -name = "encoding-index-japanese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-korean" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-simpchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-singlebyte" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-tradchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding_index_tests" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" - [[package]] name = "enum-map" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4daa8ce58bdc96f86eb90b4b8eab8f1e051da02f8c564389ae2b8ce38932f758" +checksum = "7848397e7221a27d81cb7f07498d563f09b23fcd52ce9f74a6a110ed28f7cd4f" dependencies = [ "enum-map-derive", "serde", @@ -1330,7 +1258,7 @@ dependencies = [ "cfg-if 1.0.0", "crc32fast", "libc", - "miniz_oxide", + "miniz_oxide 0.4.4", ] [[package]] @@ -1362,7 +1290,7 @@ checksum = "db856ee8cca3b9f23dd11c13bf3d4854b663ae86ed0c4a627a354431fc265f66" dependencies = [ "fontconfig-parser", "log", - "memmap2 0.5.2", + "memmap2 0.5.3", "ttf-parser 0.15.0", ] @@ -1391,53 +1319,17 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "futures" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" -dependencies = [ - "futures-core", - "futures-sink", -] - [[package]] name = "futures-core" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" - -[[package]] -name = "futures-executor" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-io" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-lite" @@ -1454,42 +1346,27 @@ dependencies = [ "waker-fn", ] -[[package]] -name = "futures-macro" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "futures-sink" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "futures-channel", "futures-core", - "futures-io", - "futures-macro", "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1554,9 +1431,9 @@ checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "gio-sys" -version = "0.15.4" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97225e1b9c7c48ed7fec4377fdc72702965bfbfd3a944b928ccbb5d8ed82ccc9" +checksum = "1d0fa5052773f5a56b8ae47dab09d040f5d9ce1311f4f99006e16e9a08269296" dependencies = [ "glib-sys", "gobject-sys", @@ -1578,9 +1455,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.15.4" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4f08dd67f74b223fedbbb30e73145b9acd444e67cc4d77d0598659b7eebe7e" +checksum = "f4366377bd56697de8aaee24e673c575d2694d72e7756324ded2b0428829a7b8" dependencies = [ "libc", "system-deps", @@ -1629,7 +1506,7 @@ dependencies = [ "android_glue", "cgl", "cocoa", - "core-foundation 0.9.2", + "core-foundation 0.9.3", "glutin_egl_sys", "glutin_emscripten_sys", "glutin_gles2_sys", @@ -1694,9 +1571,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.15.1" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb1f0b3e4c08e2a0a490d1082ba9e902cdff8ff07091e85c6caec60d17e2ab" +checksum = "df6859463843c20cf3837e3a9069b6ab2051aeeadf4c899d33344f4aea83189a" dependencies = [ "glib-sys", "libc", @@ -1788,9 +1665,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94ac3d41f882c624a82d7945952032388488681f45f9d4077999a6c85688d61" +checksum = "db207d030ae38f1eb6f240d5a1c1c88ff422aa005d10f8c6c6fc5e75286ab30e" dependencies = [ "bytemuck", "byteorder", @@ -1888,11 +1765,11 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kurbo" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb348d766edbac91ba1eb83020d96f4f8867924d194393083c15a51f185e6a82" +checksum = "7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449" dependencies = [ - "arrayvec", + "arrayvec 0.7.2", ] [[package]] @@ -1915,9 +1792,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.117" +version = "0.2.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" [[package]] name = "libloading" @@ -1994,9 +1871,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe3179b85e1fd8b14447cbebadb75e45a1002f541b925f0bfec366d56a81c56d" +checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" dependencies = [ "libc", ] @@ -2026,6 +1903,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "miniz_oxide" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082" +dependencies = [ + "adler", +] + [[package]] name = "mint" version = "0.5.9" @@ -2081,29 +1967,37 @@ dependencies = [ ] [[package]] -name = "ndk-glue" -version = "0.5.0" +name = "ndk-context" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc291b8de2095cba8dab7cf381bf582ff4c17a09acf854c32e46545b08085d28" +checksum = "4e3c5cc68637e21fe8f077f6a1c9e0b9ca495bb74895226b476310f613325884" + +[[package]] +name = "ndk-glue" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1c68f70683c5fc9a747a383744206cd371741b2f0b31781ab6770487ec572e2" dependencies = [ "lazy_static", "libc", "log", "ndk 0.5.0", + "ndk-context", "ndk-macro", "ndk-sys 0.2.2", ] [[package]] name = "ndk-glue" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c0d14b0858eb9962a5dac30b809b19f19da7e4547d64af2b0bb051d2e55d79" +checksum = "d9ffb7443daba48349d545028777ca98853b018b4c16624aa01223bc29e078da" dependencies = [ "lazy_static", "libc", "log", "ndk 0.6.0", + "ndk-context", "ndk-macro", "ndk-sys 0.3.0", ] @@ -2181,9 +2075,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ "winapi", ] @@ -2490,15 +2384,14 @@ dependencies = [ [[package]] name = "png" -version = "0.17.2" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c845088517daa61e8a57eee40309347cea13f273694d1385c553e7a57127763b" +checksum = "8e8f1882177b17c98ec33a51f5910ecbf4db92ca0def706781a1f8d0c661f393" dependencies = [ "bitflags", "crc32fast", "deflate", - "encoding", - "miniz_oxide", + "miniz_oxide 0.5.1", ] [[package]] @@ -2523,12 +2416,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "pollster" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" - [[package]] name = "ppv-lite86" version = "0.2.16" @@ -2537,9 +2424,9 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro-crate" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +checksum = "9dada8c9981fcf32929c3c0f0cd796a9284aca335565227ed88c83babb1d43dc" dependencies = [ "thiserror", "toml", @@ -2574,14 +2461,13 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", - "rand_hc", ] [[package]] @@ -2603,15 +2489,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core", -] - [[package]] name = "raw-window-handle" version = "0.4.2" @@ -2714,11 +2591,10 @@ dependencies = [ [[package]] name = "rfd" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aaf1d71ccd44689f7c2c72da1117fd8db71f72a76fe9b5c5dbb17ab903007e0" +checksum = "3ea377e07fe8a55cd3c0752683d32d346e8a3d0a4dda7431c567509dbe3e514b" dependencies = [ - "ashpd", "block", "dispatch", "glib-sys", @@ -2730,7 +2606,6 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "pollster", "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", @@ -2815,9 +2690,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.2" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d37e5e2290f3e040b594b1a9e04377c2c671f1a1cfd9bfdef82106ac1c113f84" +checksum = "4fbfeb8d0ddb84706bc597a5574ab8912817c52a397f819e5b614e2265206921" dependencies = [ "log", "ring", @@ -2895,9 +2770,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +checksum = "0486718e92ec9a68fbed73bb5ef687d71103b142595b406835649bebd33f72c7" [[package]] name = "serde" @@ -2931,9 +2806,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ "itoa 1.0.1", "ryu", @@ -3163,9 +3038,9 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad3a97fdef3daf935d929b3e97e5a6a680cd4622e40c2941ca0875d6566416f8" +checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" dependencies = [ "cfg-expr", "heck", @@ -3255,7 +3130,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bcfd4339bdd4545eabed74b208f2f1555f2e6540fb58135c01f46c0940aa138" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "bytemuck", "cfg-if 1.0.0", "png", @@ -3298,9 +3173,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9" +checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f" dependencies = [ "cfg-if 1.0.0", "pin-project-lite", @@ -3342,9 +3217,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5312f325fe3588e277415f5a6cca1f4ccad0f248c4cd5a4bd33032d7286abc22" +checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" dependencies = [ "ansi_term", "sharded-slab", @@ -3379,9 +3254,9 @@ checksum = "c74c96594835e10fa545e2a51e8709f30b173a092bfd6036ef2cec53376244f3" [[package]] name = "tts" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd3cc4cfd63db314c5b82e8b60cba72869f048c4e6d26e7ec1645bf4de2ca2d" +checksum = "b89e094c7f580603d926fe534645fdec1c561dd9ae37fc1b0571fd6655a07f92" dependencies = [ "cocoa-foundation", "dyn-clonable", @@ -3389,7 +3264,7 @@ dependencies = [ "lazy_static", "libc", "log", - "ndk-glue 0.6.0", + "ndk-glue 0.6.1", "objc", "speech-dispatcher", "thiserror", @@ -3457,9 +3332,9 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unicode_names2" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87d6678d7916394abad0d4b19df4d3802e1fd84abd7d701f39b75ee71b9e8cf1" +checksum = "eec8e807a365e5c972debc47b8f06d361b37b94cfd18d48f7adc715fb86404dd" [[package]] name = "untrusted" @@ -3731,10 +3606,13 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecad156490d6b620308ed411cfee90d280b3cbd13e189ea0d3fada8acc89158a" +checksum = "f9c28b6b6a78440b02647358625e3febc90724126480b9da6a967b5f674b3554" dependencies = [ + "jni", + "ndk-glue 0.6.1", + "url", "web-sys", "widestring", "winapi", @@ -3787,9 +3665,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" [[package]] name = "winapi" @@ -3824,9 +3702,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b749ebd2304aa012c5992d11a25d07b406bdbe5f79d371cb7a918ce501a19eb0" +checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" dependencies = [ "windows_aarch64_msvc", "windows_i686_gnu", @@ -3837,33 +3715,33 @@ dependencies = [ [[package]] name = "windows_aarch64_msvc" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" [[package]] name = "windows_i686_gnu" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" [[package]] name = "windows_i686_msvc" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" [[package]] name = "windows_x86_64_gnu" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" [[package]] name = "windows_x86_64_msvc" -version = "0.30.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" [[package]] name = "winit" @@ -3873,7 +3751,7 @@ checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" dependencies = [ "bitflags", "cocoa", - "core-foundation 0.9.2", + "core-foundation 0.9.3", "core-graphics 0.22.3", "core-video-sys", "dispatch", @@ -3883,7 +3761,7 @@ dependencies = [ "log", "mio", "ndk 0.5.0", - "ndk-glue 0.5.0", + "ndk-glue 0.5.1", "ndk-sys 0.2.2", "objc", "parking_lot", diff --git a/eframe/Cargo.toml b/eframe/Cargo.toml index 30778526..e1a7c99c 100644 --- a/eframe/Cargo.toml +++ b/eframe/Cargo.toml @@ -69,4 +69,4 @@ egui_extras = { path = "../egui_extras", features = ["image", "svg"] } ehttp = "0.2" image = { version = "0.24", default-features = false, features = ["jpeg", "png"] } poll-promise = "0.1" -rfd = "0.7" +rfd = "0.8" diff --git a/egui-winit/Cargo.toml b/egui-winit/Cargo.toml index bbb0fbfa..eff84609 100644 --- a/egui-winit/Cargo.toml +++ b/egui-winit/Cargo.toml @@ -53,7 +53,7 @@ epi = { version = "0.16.0", path = "../epi", optional = true } copypasta = { version = "0.7", optional = true } dark-light = { version = "0.2.1", optional = true } # detect dark mode system preference serde = { version = "1.0", optional = true, features = ["derive"] } -webbrowser = { version = "0.5", optional = true } +webbrowser = { version = "0.6", optional = true } # feature screen_reader tts = { version = "0.20", optional = true } diff --git a/egui_demo_lib/Cargo.toml b/egui_demo_lib/Cargo.toml index 689c7c47..d5087ff3 100644 --- a/egui_demo_lib/Cargo.toml +++ b/egui_demo_lib/Cargo.toml @@ -45,7 +45,7 @@ epi = { version = "0.16.0", path = "../epi" } chrono = { version = "0.4", features = ["js-sys", "wasmbind"], optional = true } enum-map = { version = "2", features = ["serde"] } -unicode_names2 = { version = "0.4.0", default-features = false } +unicode_names2 = { version = "0.5.0", default-features = false } # feature "http": ehttp = { version = "0.2.0", optional = true } From 6d68838821b73c3d15fa9d548c52e7018b721e78 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 16:10:05 +0100 Subject: [PATCH 37/51] Clean up changelogs --- CHANGELOG.md | 50 ++++++++++++++++++++++++++++++----------- eframe/CHANGELOG.md | 2 +- egui-winit/CHANGELOG.md | 4 ++-- egui_glow/CHANGELOG.md | 3 +-- egui_web/CHANGELOG.md | 1 - epaint/CHANGELOG.md | 2 +- 6 files changed, 42 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a7ca6bf..d7299eae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,13 +8,12 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w ## Unreleased ### Added ⭐ -* Support a subset of macOS' emacs input field keybindings in `TextEdit` ([#1243](https://github.com/emilk/egui/pull/1243). * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`. * Easily change text styles with `Style::text_styles`. * Added `Ui::text_style_height`. * Added `TextStyle::resolve`. - * Made v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). + * Made the v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). * Plot: * Added `Plot::x_axis_formatter` and `Plot::y_axis_formatter` for custom axis labels ([#1130](https://github.com/emilk/egui/pull/1130)). * Added `Plot::allow_boxed_zoom()`, `Plot::boxed_zoom_pointer()` for boxed zooming on plots ([#1188](https://github.com/emilk/egui/pull/1188)). @@ -23,13 +22,14 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * `Context::load_texture` to convert an image into a texture which can be displayed using e.g. `ui.image(texture, size)` ([#1110](https://github.com/emilk/egui/pull/1110)). * `Ui::input_mut` to modify how subsequent widgets see the `InputState` and a convenience method `InputState::consume_key` for shortcuts or hotkeys ([#1212](https://github.com/emilk/egui/pull/1212)). * Added `Ui::add_visible` and `Ui::add_visible_ui`. -* Opt-in dependency on `tracing` crate for logging warnings ([#1192](https://github.com/emilk/egui/pull/1192)). * Added `CollapsingHeader::icon` to override the default open/close icon using a custom function. ([1147](https://github.com/emilk/egui/pull/1147)). * Added `ui.data()`, `ctx.data()`, `ctx.options()` and `ctx.tessellation_options()` ([#1175](https://github.com/emilk/egui/pull/1175)). * Added `Response::on_hover_text_at_pointer` as a convenience akin to `Response::on_hover_text` ([1179](https://github.com/emilk/egui/pull/1179)). +* Opt-in dependency on `tracing` crate for logging warnings ([#1192](https://github.com/emilk/egui/pull/1192)). * Added `ui.weak(text)`. -* Added `Context::move_to_top` and `Context::top_most_layer` for managing the layer on the top ([#1242](https://github.com/emilk/egui/pull/1242)). * Added `Slider::step_by` ([1225](https://github.com/emilk/egui/pull/1225)). +* Added `Context::move_to_top` and `Context::top_most_layer` for managing the layer on the top ([#1242](https://github.com/emilk/egui/pull/1242)). +* Support a subset of macOS' emacs input field keybindings in `TextEdit` ([#1243](https://github.com/emilk/egui/pull/1243)). * Added ability to scroll an UI into view without specifying an alignment ([1247](https://github.com/emilk/egui/pull/1247)). * Added `Ui::scroll_to_rect` ([1252](https://github.com/emilk/egui/pull/1252)). @@ -49,28 +49,52 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Replaced `Style::body_text_style` with more generic `Style::text_styles` ([#1154](https://github.com/emilk/egui/pull/1154)). * `TextStyle` is no longer `Copy` ([#1154](https://github.com/emilk/egui/pull/1154)). * Replaced `TextEdit::text_style` with `TextEdit::font` ([#1154](https://github.com/emilk/egui/pull/1154)). -* Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). -* Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)). * `Plot::highlight` now takes a `bool` argument ([#1159](https://github.com/emilk/egui/pull/1159)). * `ScrollArea::show` now returns a `ScrollAreaOutput`, so you might need to add `.inner` after the call to it ([#1166](https://github.com/emilk/egui/pull/1166)). +* Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). +* Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)). * Renamed `Plot::custom_label_func` to `Plot::label_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)). * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). * `Areas::layer_id_at` ignores non interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). * `ScrollArea`:s will not shrink below a certain minimum size, set by `min_scrolled_width/min_scrolled_height` ([1255](https://github.com/emilk/egui/pull/1255)). ### Fixed 🐛 -* Context menus now respects the theme ([#1043](https://github.com/emilk/egui/pull/1043)). * Plot `Orientation` was not public, although fields using this type were ([#1130](https://github.com/emilk/egui/pull/1130)). +* Context menus now respects the theme ([#1043](https://github.com/emilk/egui/pull/1043)). * Calling `Context::set_pixels_per_point` before the first frame will now work. * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). -* Scroll areas now follow text cursor ([1252](https://github.com/emilk/egui/pull/1252)). +* Scroll areas now follow text cursor ([#1252](https://github.com/emilk/egui/pull/1252)). * Slider: correctly respond with drag and focus events when interacting with the value directly ([1270](https://github.com/emilk/egui/pull/1270)). ### Contributors 🙏 -* [AlexxxRu](https://github.com/alexxxru): [#1108](https://github.com/emilk/egui/pull/1108). -* [danielkeller](https://github.com/danielkeller): [#1050](https://github.com/emilk/egui/pull/1050). -* [juancampa](https://github.com/juancampa): [#1147](https://github.com/emilk/egui/pull/1147). - +* [4JX](https://github.com/4JX) +* [55nknown](https://github.com/55nknown) +* [AlanRace](https://github.com/AlanRace) +* [AlexxxRu](https://github.com/AlexxxRu) +* [awaken1ng](https://github.com/awaken1ng) +* [BctfN0HUK7Yg](https://github.com/BctfN0HUK7Yg) +* [Bromeon](https://github.com/Bromeon) +* [cat-state](https://github.com/cat) +* [danielkeller](https://github.com/danielkeller) +* [dvec](https://github.com/dvec) +* [Friz64](https://github.com/Friz64) +* [Gordon01](https://github.com/Gordon01) +* [HackerFoo](https://github.com/HackerFoo) +* [juancampa](https://github.com/juancampa) +* [justinj](https://github.com/justinj) +* [lampsitter](https://github.com/lampsitter) +* [LordMZTE](https://github.com/LordMZTE) +* [manuel-i](https://github.com/manuel) +* [Mingun](https://github.com/Mingun) +* [niklaskorz](https://github.com/niklaskorz) +* [nongiach](https://github.com/nongiach) +* [parasyte](https://github.com/parasyte) +* [psiphi75](https://github.com/psiphi75) +* [s-nie](https://github.com/s) +* [t18b219k](https://github.com/t18b219k) +* [terhechte](https://github.com/terhechte) +* [xudesheng](https://github.com/xudesheng) +* [yusdacra](https://github.com/yusdacra) ## 0.16.1 - 2021-12-31 - Add back `CtxRef::begin_frame,end_frame` @@ -591,7 +615,7 @@ This is when I started the CHANGELOG.md, after almost two years of development. * 2020-08-10: renamed the project to "egui" * 2020-05-30: first release on crates.io (0.1.0) -* 2020-05-01: serious work starts (pandemic project) +* 2020-04-01: serious work starts (pandemic project) * 2019-03-12: gave a talk about what would later become egui: https://www.youtube.com/watch?v=-pmwLHw5Gbs * 2018-12-23: [initial commit](https://github.com/emilk/egui/commit/856bbf4dae4a69693a0324da34e8b0dd3754dfdf) * 2018-11-04: started tinkering on a train diff --git a/eframe/CHANGELOG.md b/eframe/CHANGELOG.md index 77842f5c..ac864375 100644 --- a/eframe/CHANGELOG.md +++ b/eframe/CHANGELOG.md @@ -12,7 +12,7 @@ NOTE: [`egui_web`](../egui_web/CHANGELOG.md), [`egui-winit`](../egui-winit/CHANG * Fix horizontal scrolling direction on Linux. * Added `App::on_exit_event` ([#1038](https://github.com/emilk/egui/pull/1038)) * Added `NativeOptions::initial_window_pos`. -* Fixed `enable_drag` for Windows ([#1108](https://github.com/emilk/egui/pull/1108)). +* Fixed `enable_drag` for Windows OS ([#1108](https://github.com/emilk/egui/pull/1108)). * Shift-scroll will now result in horizontal scrolling on all platforms ([#1136](https://github.com/emilk/egui/pull/1136)). * Log using the `tracing` crate. Log to stdout by adding `tracing_subscriber::fmt::init();` to your `main` ([#1192](https://github.com/emilk/egui/pull/1192)). * Expose all parts of the location/url in `frame.info().web_info` ([#1258](https://github.com/emilk/egui/pull/1258)). diff --git a/egui-winit/CHANGELOG.md b/egui-winit/CHANGELOG.md index 80de1eaa..1ed32545 100644 --- a/egui-winit/CHANGELOG.md +++ b/egui-winit/CHANGELOG.md @@ -5,11 +5,11 @@ All notable changes to the `egui-winit` integration will be noted in this file. ## Unreleased * Fixed horizontal scrolling direction on Linux. -* Automatically detect and apply dark or light mode from system ([#1045](https://github.com/emilk/egui/pull/1045)). * Replaced `std::time::Instant` with `instant::Instant` for WebAssembly compatability ([#1023](https://github.com/emilk/egui/pull/1023)) +* Automatically detect and apply dark or light mode from system ([#1045](https://github.com/emilk/egui/pull/1045)). +* Fixed `enable_drag` on Windows OS ([#1108](https://github.com/emilk/egui/pull/1108)). * Shift-scroll will now result in horizontal scrolling on all platforms ([#1136](https://github.com/emilk/egui/pull/1136)). * Require knowledge about max texture side (e.g. `GL_MAX_TEXTURE_SIZE`)) ([#1154](https://github.com/emilk/egui/pull/1154)). -* Fixed `enable_drag` for Windows. Now called only once just after left click ([#1108](https://github.com/emilk/egui/pull/1108)). ## 0.16.0 - 2021-12-29 diff --git a/egui_glow/CHANGELOG.md b/egui_glow/CHANGELOG.md index b5bcdb6d..37f0f97b 100644 --- a/egui_glow/CHANGELOG.md +++ b/egui_glow/CHANGELOG.md @@ -6,8 +6,7 @@ All notable changes to the `egui_glow` integration will be noted in this file. * `EguiGlow::run` no longer returns the shapes to paint, but stores them internally until you call `EguiGlow::paint` ([#1110](https://github.com/emilk/egui/pull/1110)). * Added `set_texture_filter` method to `Painter` ([#1041](https://github.com/emilk/egui/pull/1041)). * Fix failure to run in Chrome ([#1092](https://github.com/emilk/egui/pull/1092)). -* `EguiGlow::new` now takes `&winit::Window` because there are no reason to use `&glutin::WindowedContext` ([#1151](https://github.com/emilk/egui/pull/1151)). -* `EguiGlow::paint` now takes `&winit::Window` because there are no reason to use `&glutin::WindowedContext` ([#1151](https://github.com/emilk/egui/pull/1151)). +* `EguiGlow::new` and `EguiGlow::paint` now takes `&winit::Window` ([#1151](https://github.com/emilk/egui/pull/1151)). * Automatically detect and apply dark or light mode from system ([#1045](https://github.com/emilk/egui/pull/1045)). diff --git a/egui_web/CHANGELOG.md b/egui_web/CHANGELOG.md index 99bbbce7..47407c24 100644 --- a/egui_web/CHANGELOG.md +++ b/egui_web/CHANGELOG.md @@ -9,7 +9,6 @@ All notable changes to the `egui_web` integration will be noted in this file. * Fixed glow failure on Chromium ([#1092](https://github.com/emilk/egui/pull/1092)). * Shift-scroll will now result in horizontal scrolling ([#1136](https://github.com/emilk/egui/pull/1136)). * Updated `epi::IntegrationInfo::web_location_hash` on `hashchange` event ([#1140](https://github.com/emilk/egui/pull/1140)). -* Panics will now be logged using `console.error`. * Parse and percent-decode the web location query string ([#1258](https://github.com/emilk/egui/pull/1258)). diff --git a/epaint/CHANGELOG.md b/epaint/CHANGELOG.md index 0a58bde1..38598b7a 100644 --- a/epaint/CHANGELOG.md +++ b/epaint/CHANGELOG.md @@ -7,7 +7,7 @@ All notable changes to the epaint crate will be documented in this file. * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * Replaced `TextStyle` with `FontId` which lets you pick any font size and font family. * Replaced `Fonts::font_image` with `font_image_delta` for partial font atlas updates. -* Made v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). +* Made the v-align and scale of user fonts tweakable ([#1241](https://github.com/emilk/egui/pull/1027)). * Added `ImageData` and `TextureManager` for loading images into textures ([#1110](https://github.com/emilk/egui/pull/1110)). * Added `Shape::dashed_line_many` ([#1027](https://github.com/emilk/egui/pull/1027)). * Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). From 476a3057b0a0167f882d56b4ce0e225e27960e0c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 15:43:08 +0100 Subject: [PATCH 38/51] egui_demo_lib: make egui_extras an optional dependency --- egui_demo_lib/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/egui_demo_lib/Cargo.toml b/egui_demo_lib/Cargo.toml index d5087ff3..f48bdcf2 100644 --- a/egui_demo_lib/Cargo.toml +++ b/egui_demo_lib/Cargo.toml @@ -32,7 +32,7 @@ extra_debug_asserts = ["egui/extra_debug_asserts"] # Always enable additional checks. extra_asserts = ["egui/extra_asserts"] -http = ["ehttp", "image", "poll-promise"] +http = ["egui_extras", "ehttp", "image", "poll-promise"] persistence = ["egui/persistence", "epi/persistence", "serde"] serialize = ["egui/serialize", "serde"] syntax_highlighting = ["syntect"] @@ -40,7 +40,6 @@ syntax_highlighting = ["syntect"] [dependencies] egui = { version = "0.16.0", path = "../egui", default-features = false } -egui_extras = { version = "0.16.0", path = "../egui_extras", features = ["image"] } epi = { version = "0.16.0", path = "../epi" } chrono = { version = "0.4", features = ["js-sys", "wasmbind"], optional = true } @@ -48,6 +47,7 @@ enum-map = { version = "2", features = ["serde"] } unicode_names2 = { version = "0.5.0", default-features = false } # feature "http": +egui_extras = { version = "0.16.0", path = "../egui_extras", features = ["image"], optional = true } ehttp = { version = "0.2.0", optional = true } image = { version = "0.24", default-features = false, features = ["jpeg", "png"], optional = true } poll-promise = { version = "0.1", default-features = false, optional = true } From fd3fb726c1b564ee7a05a2de309575d9a9fa1e57 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 16:53:41 +0100 Subject: [PATCH 39/51] Fix bugs in `consume_key` and improve Modifiers API Improvements and fixes following https://github.com/emilk/egui/pull/1212 --- egui/src/data/input.rs | 143 ++++++++++++++---- egui/src/input_state.rs | 20 ++- egui_demo_lib/src/apps/demo/text_edit.rs | 5 +- .../src/easy_mark/easy_mark_editor.rs | 5 +- 4 files changed, 129 insertions(+), 44 deletions(-) diff --git a/egui/src/data/input.rs b/egui/src/data/input.rs index 704c31fe..789ba2ab 100644 --- a/egui/src/data/input.rs +++ b/egui/src/data/input.rs @@ -254,18 +254,24 @@ pub enum PointerButton { pub const NUM_POINTER_BUTTONS: usize = 3; /// State of the modifier keys. These must be fed to egui. -#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)] +/// +/// The best way to compare `Modifiers` is by using [`Modifiers::matches`]. +#[derive(Clone, Copy, Debug, Default, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct Modifiers { /// Either of the alt keys are down (option ⌥ on Mac). pub alt: bool, + /// Either of the control keys are down. /// When checking for keyboard shortcuts, consider using [`Self::command`] instead. pub ctrl: bool, + /// Either of the shift keys are down. pub shift: bool, + /// The Mac ⌘ Command key. Should always be set to `false` on other platforms. pub mac_cmd: bool, + /// On Windows and Linux, set this to the same value as `ctrl`. /// On Mac, this should be set whenever one of the ⌘ Command keys are down (same as `mac_cmd`). /// This is so that egui can, for instance, select all text by checking for `command + A` @@ -278,37 +284,51 @@ impl Modifiers { Default::default() } - pub fn alt(self, value: bool) -> Self { - Self { alt: value, ..self } - } + pub const NONE: Self = Self { + alt: false, + ctrl: false, + shift: false, + mac_cmd: false, + command: false, + }; - pub fn ctrl(self, value: bool) -> Self { - Self { - ctrl: value, - ..self - } - } - - pub fn shift(self, value: bool) -> Self { - Self { - shift: value, - ..self - } - } - - pub fn mac_cmd(self, value: bool) -> Self { - Self { - mac_cmd: value, - ..self - } - } - - pub fn command(self, value: bool) -> Self { - Self { - command: value, - ..self - } - } + pub const ALT: Self = Self { + alt: true, + ctrl: false, + shift: false, + mac_cmd: false, + command: false, + }; + pub const CTRL: Self = Self { + alt: false, + ctrl: true, + shift: false, + mac_cmd: false, + command: false, + }; + pub const SHIFT: Self = Self { + alt: false, + ctrl: false, + shift: true, + mac_cmd: false, + command: false, + }; + /// The Mac ⌘ Command key + pub const MAC_CMD: Self = Self { + alt: false, + ctrl: false, + shift: false, + mac_cmd: true, + command: false, + }; + /// On Mac: ⌘ Command key, elsewhere: Ctrl key + pub const COMMAND: Self = Self { + alt: false, + ctrl: false, + shift: false, + mac_cmd: false, + command: true, + }; #[inline(always)] pub fn is_none(&self) -> bool { @@ -320,6 +340,7 @@ impl Modifiers { !self.is_none() } + /// Is shift the only pressed button? #[inline(always)] pub fn shift_only(&self) -> bool { self.shift && !(self.alt || self.command) @@ -330,6 +351,66 @@ impl Modifiers { pub fn command_only(&self) -> bool { !self.alt && !self.shift && self.command } + + /// Check for equality but with proper handling of [`Self::command`]. + /// + /// ``` + /// # use egui::Modifiers; + /// assert!(Modifiers::CTRL.matches(Modifiers::CTRL)); + /// assert!(!Modifiers::CTRL.matches(Modifiers::CTRL | Modifiers::SHIFT)); + /// assert!(!(Modifiers::CTRL | Modifiers::SHIFT).matches(Modifiers::CTRL)); + /// assert!((Modifiers::CTRL | Modifiers::COMMAND).matches(Modifiers::CTRL)); + /// assert!((Modifiers::CTRL | Modifiers::COMMAND).matches(Modifiers::COMMAND)); + /// assert!((Modifiers::MAC_CMD | Modifiers::COMMAND).matches(Modifiers::COMMAND)); + /// assert!(!Modifiers::COMMAND.matches(Modifiers::MAC_CMD)); + /// ``` + pub fn matches(&self, pattern: Modifiers) -> bool { + // alt and shift must always match the pattern: + if pattern.alt != self.alt || pattern.shift != self.shift { + return false; + } + + if pattern.mac_cmd { + // Mac-specific match: + if !self.mac_cmd { + return false; + } + if pattern.ctrl != self.ctrl { + return false; + } + return true; + } + + if !pattern.ctrl && !pattern.command { + // the pattern explicitly doesn't want any ctrl/command: + return !self.ctrl && !self.command; + } + + // if the pattern is looking for command, then `ctrl` may or may not be set depending on platform. + // if the pattern is looking for `ctrl`, then `command` may or may not be set depending on platform. + + if pattern.ctrl && !self.ctrl { + return false; + } + if pattern.command && !self.command { + return false; + } + + true + } +} + +impl std::ops::BitOr for Modifiers { + type Output = Self; + fn bitor(self, rhs: Self) -> Self { + Self { + alt: self.alt | rhs.alt, + ctrl: self.ctrl | rhs.ctrl, + shift: self.shift | rhs.shift, + mac_cmd: self.mac_cmd | rhs.mac_cmd, + command: self.command | rhs.command, + } + } } /// Keyboard keys. diff --git a/egui/src/input_state.rs b/egui/src/input_state.rs index ef516bb7..e35c2bcc 100644 --- a/egui/src/input_state.rs +++ b/egui/src/input_state.rs @@ -192,22 +192,26 @@ impl InputState { self.pointer.wants_repaint() || self.scroll_delta != Vec2::ZERO || !self.events.is_empty() } - /// Ignore a key if it was pressed or released this frame. Useful for hotkeys. - /// Matches on both key press and key release, consuming them and removing them from `self.events`. - /// Returns true if the key was pressed this frame (even if the key release was consumed). + /// Check for a key press. If found, `true` is returned and the key pressed is consumed, so that this will only return `true` once. pub fn consume_key(&mut self, modifiers: Modifiers, key: Key) -> bool { + let mut match_found = false; + self.events.retain(|event| { - !matches!( + let is_match = matches!( event, Event::Key { key: ev_key, modifiers: ev_mods, - .. - } if *ev_key == key && *ev_mods == modifiers - ) + pressed: true + } if *ev_key == key && ev_mods.matches(modifiers) + ); + + match_found |= is_match; + + !is_match }); - self.keys_down.remove(&key) + match_found } /// Was the given key pressed this frame? diff --git a/egui_demo_lib/src/apps/demo/text_edit.rs b/egui_demo_lib/src/apps/demo/text_edit.rs index 5cef1d90..b294115b 100644 --- a/egui_demo_lib/src/apps/demo/text_edit.rs +++ b/egui_demo_lib/src/apps/demo/text_edit.rs @@ -64,7 +64,10 @@ impl super::View for TextEdit { anything_selected, egui::Label::new("Press ctrl+T to toggle the case of selected text (cmd+T on Mac)"), ); - if ui.input().modifiers.command_only() && ui.input().key_pressed(egui::Key::T) { + if ui + .input_mut() + .consume_key(egui::Modifiers::COMMAND, egui::Key::T) + { if let Some(text_cursor_range) = output.cursor_range { use egui::TextBuffer as _; let selected_chars = text_cursor_range.as_sorted_char_range(); diff --git a/egui_demo_lib/src/easy_mark/easy_mark_editor.rs b/egui_demo_lib/src/easy_mark/easy_mark_editor.rs index 5a82f3ce..dc066e38 100644 --- a/egui_demo_lib/src/easy_mark/easy_mark_editor.rs +++ b/egui_demo_lib/src/easy_mark/easy_mark_editor.rs @@ -126,10 +126,7 @@ fn shortcuts(ui: &Ui, code: &mut dyn TextBuffer, ccursor_range: &mut CCursorRang (Key::S, "~"), // ~strikethrough~ (Key::U, "_"), // _underline_ ] { - if ui - .input_mut() - .consume_key(egui::Modifiers::new().command(true), key) - { + if ui.input_mut().consume_key(egui::Modifiers::COMMAND, key) { toggle_surrounding(code, ccursor_range, surrounding); any_change = true; }; From 8f887e2ebda2e37af2dff8c8254ee9fd160d3340 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 21:40:46 +0100 Subject: [PATCH 40/51] Add Shape::visual_bounding_rect() --- egui_demo_lib/src/apps/demo/paint_bezier.rs | 4 +- epaint/src/bezier.rs | 36 +++++++++--- epaint/src/shape.rs | 64 ++++++++++++++++++--- epaint/src/tessellator.rs | 7 ++- 4 files changed, 89 insertions(+), 22 deletions(-) diff --git a/egui_demo_lib/src/apps/demo/paint_bezier.rs b/egui_demo_lib/src/apps/demo/paint_bezier.rs index d96e68a4..6cbbd140 100644 --- a/egui_demo_lib/src/apps/demo/paint_bezier.rs +++ b/egui_demo_lib/src/apps/demo/paint_bezier.rs @@ -122,7 +122,7 @@ impl PaintBezier { let shape = QuadraticBezierShape::from_points_stroke(points, true, self.fill, self.stroke); painter.add(epaint::RectShape::stroke( - shape.bounding_rect(), + shape.visual_bounding_rect(), 0.0, self.bounding_box_stroke, )); @@ -133,7 +133,7 @@ impl PaintBezier { let shape = CubicBezierShape::from_points_stroke(points, true, self.fill, self.stroke); painter.add(epaint::RectShape::stroke( - shape.bounding_rect(), + shape.visual_bounding_rect(), 0.0, self.bounding_box_stroke, )); diff --git a/epaint/src/bezier.rs b/epaint/src/bezier.rs index d0a63c8a..453671d3 100644 --- a/epaint/src/bezier.rs +++ b/epaint/src/bezier.rs @@ -74,8 +74,17 @@ impl CubicBezierShape { pathshapes } - /// Screen-space bounding rectangle. - pub fn bounding_rect(&self) -> Rect { + /// The visual bounding rectangle (includes stroke width) + pub fn visual_bounding_rect(&self) -> Rect { + if self.fill == Color32::TRANSPARENT && self.stroke.is_empty() { + Rect::NOTHING + } else { + self.logical_bounding_rect().expand(self.stroke.width / 2.0) + } + } + + /// Logical bounding rectangle (ignoring stroke width) + pub fn logical_bounding_rect(&self) -> Rect { //temporary solution let (mut min_x, mut max_x) = if self.points[0].x < self.points[3].x { (self.points[0].x, self.points[3].x) @@ -421,8 +430,17 @@ impl QuadraticBezierShape { } } - /// bounding box of the quadratic Bézier shape - pub fn bounding_rect(&self) -> Rect { + /// The visual bounding rectangle (includes stroke width) + pub fn visual_bounding_rect(&self) -> Rect { + if self.fill == Color32::TRANSPARENT && self.stroke.is_empty() { + Rect::NOTHING + } else { + self.logical_bounding_rect().expand(self.stroke.width / 2.0) + } + } + + /// Logical bounding rectangle (ignoring stroke width) + pub fn logical_bounding_rect(&self) -> Rect { let (mut min_x, mut max_x) = if self.points[0].x < self.points[2].x { (self.points[0].x, self.points[2].x) } else { @@ -755,7 +773,7 @@ mod tests { fill: Default::default(), stroke: Default::default(), }; - let bbox = curve.bounding_rect(); + let bbox = curve.logical_bounding_rect(); assert!((bbox.min.x - 72.96).abs() < 0.01); assert!((bbox.min.y - 27.78).abs() < 0.01); @@ -779,7 +797,7 @@ mod tests { fill: Default::default(), stroke: Default::default(), }; - let bbox = curve.bounding_rect(); + let bbox = curve.logical_bounding_rect(); assert!((bbox.min.x - 10.0).abs() < 0.01); assert!((bbox.min.y - 10.0).abs() < 0.01); @@ -848,7 +866,7 @@ mod tests { stroke: Default::default(), }; - let bbox = curve.bounding_rect(); + let bbox = curve.logical_bounding_rect(); assert_eq!(bbox.min.x, 10.0); assert_eq!(bbox.min.y, 10.0); assert_eq!(bbox.max.x, 270.0); @@ -866,7 +884,7 @@ mod tests { stroke: Default::default(), }; - let bbox = curve.bounding_rect(); + let bbox = curve.logical_bounding_rect(); assert_eq!(bbox.min.x, 10.0); assert_eq!(bbox.min.y, 10.0); assert!((bbox.max.x - 206.50).abs() < 0.01); @@ -884,7 +902,7 @@ mod tests { stroke: Default::default(), }; - let bbox = curve.bounding_rect(); + let bbox = curve.logical_bounding_rect(); assert!((bbox.min.x - 86.71).abs() < 0.01); assert!((bbox.min.y - 30.0).abs() < 0.01); diff --git a/epaint/src/shape.rs b/epaint/src/shape.rs index 6e2ab5df..d097b8c2 100644 --- a/epaint/src/shape.rs +++ b/epaint/src/shape.rs @@ -170,6 +170,34 @@ impl Shape { crate::epaint_assert!(mesh.is_valid()); Self::Mesh(mesh) } + + /// The visual bounding rectangle (includes stroke widths) + pub fn visual_bounding_rect(&self) -> Rect { + match self { + Self::Noop => Rect::NOTHING, + Self::Vec(shapes) => { + let mut rect = Rect::NOTHING; + for shape in shapes { + rect = rect.union(shape.visual_bounding_rect()); + } + rect + } + Self::Circle(circle_shape) => circle_shape.visual_bounding_rect(), + Self::LineSegment { points, stroke } => { + if stroke.is_empty() { + Rect::NOTHING + } else { + Rect::from_two_pos(points[0], points[1]).expand(stroke.width / 2.0) + } + } + Self::Path(path_shape) => path_shape.visual_bounding_rect(), + Self::Rect(rect_shape) => rect_shape.visual_bounding_rect(), + Self::Text(text_shape) => text_shape.visual_bounding_rect(), + Self::Mesh(mesh) => mesh.calc_bounds(), + Self::QuadraticBezier(bezier) => bezier.visual_bounding_rect(), + Self::CubicBezier(bezier) => bezier.visual_bounding_rect(), + } + } } /// ## Inspection and transforms @@ -260,6 +288,18 @@ impl CircleShape { stroke: stroke.into(), } } + + /// The visual bounding rectangle (includes stroke width) + pub fn visual_bounding_rect(&self) -> Rect { + if self.fill == Color32::TRANSPARENT && self.stroke.is_empty() { + Rect::NOTHING + } else { + Rect::from_center_size( + self.center, + Vec2::splat(self.radius + self.stroke.width / 2.0), + ) + } + } } impl From for Shape { @@ -327,10 +367,14 @@ impl PathShape { } } - /// Screen-space bounding rectangle. + /// The visual bounding rectangle (includes stroke width) #[inline] - pub fn bounding_rect(&self) -> Rect { - Rect::from_points(&self.points).expand(self.stroke.width) + pub fn visual_bounding_rect(&self) -> Rect { + if self.fill == Color32::TRANSPARENT && self.stroke.is_empty() { + Rect::NOTHING + } else { + Rect::from_points(&self.points).expand(self.stroke.width / 2.0) + } } } @@ -379,10 +423,14 @@ impl RectShape { } } - /// Screen-space bounding rectangle. + /// The visual bounding rectangle (includes stroke width) #[inline] - pub fn bounding_rect(&self) -> Rect { - self.rect.expand(self.stroke.width) + pub fn visual_bounding_rect(&self) -> Rect { + if self.fill == Color32::TRANSPARENT && self.stroke.is_empty() { + Rect::NOTHING + } else { + self.rect.expand(self.stroke.width / 2.0) + } } } @@ -491,9 +539,9 @@ impl TextShape { } } - /// Screen-space bounding rectangle. + /// The visual bounding rectangle #[inline] - pub fn bounding_rect(&self) -> Rect { + pub fn visual_bounding_rect(&self) -> Rect { self.galley.mesh_bounds.translate(self.pos.to_vec2()) } } diff --git a/epaint/src/tessellator.rs b/epaint/src/tessellator.rs index 89bcb1d6..cc1c75fc 100644 --- a/epaint/src/tessellator.rs +++ b/epaint/src/tessellator.rs @@ -793,7 +793,7 @@ impl Tessellator { let clip_rect = self.clip_rect; if options.coarse_tessellation_culling - && !quadratic_shape.bounding_rect().intersects(clip_rect) + && !quadratic_shape.visual_bounding_rect().intersects(clip_rect) { return; } @@ -816,7 +816,8 @@ impl Tessellator { ) { let options = &self.options; let clip_rect = self.clip_rect; - if options.coarse_tessellation_culling && !cubic_shape.bounding_rect().intersects(clip_rect) + if options.coarse_tessellation_culling + && !cubic_shape.visual_bounding_rect().intersects(clip_rect) { return; } @@ -870,7 +871,7 @@ impl Tessellator { } if self.options.coarse_tessellation_culling - && !path_shape.bounding_rect().intersects(self.clip_rect) + && !path_shape.visual_bounding_rect().intersects(self.clip_rect) { return; } From 0a46634c13163a88db5eb81d0a3144d292b2c82b Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 21:49:52 +0100 Subject: [PATCH 41/51] Simplify backends by adding `fn paint_and_update_textures` helper --- egui_glium/src/epi_backend.rs | 13 +++---------- egui_glium/src/lib.rs | 14 +++----------- egui_glium/src/painter.rs | 23 +++++++++++++++++++++-- egui_glow/src/epi_backend.rs | 14 +++----------- egui_glow/src/painter.rs | 19 +++++++++++++++++++ egui_web/src/backend.rs | 13 +++++-------- egui_web/src/painter.rs | 19 +++++++++++++++++++ 7 files changed, 73 insertions(+), 42 deletions(-) diff --git a/egui_glium/src/epi_backend.rs b/egui_glium/src/epi_backend.rs index b22a5075..61dafe27 100644 --- a/egui_glium/src/epi_backend.rs +++ b/egui_glium/src/epi_backend.rs @@ -67,14 +67,10 @@ pub fn run(app: Box, native_options: &epi::NativeOptions) -> ! { std::thread::sleep(std::time::Duration::from_millis(10)); } - let (needs_repaint, mut textures_delta, shapes) = + let (needs_repaint, textures_delta, shapes) = integration.update(display.gl_window().window()); let clipped_meshes = integration.egui_ctx.tessellate(shapes); - for (id, image_delta) in textures_delta.set { - painter.set_texture(&display, id, &image_delta); - } - // paint: { use glium::Surface as _; @@ -82,20 +78,17 @@ pub fn run(app: Box, native_options: &epi::NativeOptions) -> ! { let color = integration.app.clear_color(); target.clear_color(color[0], color[1], color[2], color[3]); - painter.paint_meshes( + painter.paint_and_update_textures( &display, &mut target, integration.egui_ctx.pixels_per_point(), clipped_meshes, + &textures_delta, ); target.finish().unwrap(); } - for id in textures_delta.free.drain(..) { - painter.free_texture(id); - } - { *control_flow = if integration.should_quit() { glutin::event_loop::ControlFlow::Exit diff --git a/egui_glium/src/lib.rs b/egui_glium/src/lib.rs index 50426289..4bf8eb8e 100644 --- a/egui_glium/src/lib.rs +++ b/egui_glium/src/lib.rs @@ -157,22 +157,14 @@ impl EguiGlium { /// Paint the results of the last call to [`Self::run`]. pub fn paint(&mut self, display: &glium::Display, target: &mut T) { let shapes = std::mem::take(&mut self.shapes); - let mut textures_delta = std::mem::take(&mut self.textures_delta); - - for (id, image_delta) in textures_delta.set { - self.painter.set_texture(display, id, &image_delta); - } - + let textures_delta = std::mem::take(&mut self.textures_delta); let clipped_meshes = self.egui_ctx.tessellate(shapes); - self.painter.paint_meshes( + self.painter.paint_and_update_textures( display, target, self.egui_ctx.pixels_per_point(), clipped_meshes, + &textures_delta, ); - - for id in textures_delta.free.drain(..) { - self.painter.free_texture(id); - } } } diff --git a/egui_glium/src/painter.rs b/egui_glium/src/painter.rs index b176a2f7..26f74133 100644 --- a/egui_glium/src/painter.rs +++ b/egui_glium/src/painter.rs @@ -65,6 +65,25 @@ impl Painter { self.max_texture_side } + pub fn paint_and_update_textures( + &mut self, + display: &glium::Display, + target: &mut T, + pixels_per_point: f32, + clipped_meshes: Vec, + textures_delta: &egui::TexturesDelta, + ) { + for (id, image_delta) in &textures_delta.set { + self.set_texture(display, *id, image_delta); + } + + self.paint_meshes(display, target, pixels_per_point, clipped_meshes); + + for &id in &textures_delta.free { + self.free_texture(id); + } + } + /// Main entry-point for painting a frame. /// You should call `target.clear_color(..)` before /// and `target.finish()` after this. @@ -73,9 +92,9 @@ impl Painter { display: &glium::Display, target: &mut T, pixels_per_point: f32, - cipped_meshes: Vec, + clipped_meshes: Vec, ) { - for egui::ClippedMesh(clip_rect, mesh) in cipped_meshes { + for egui::ClippedMesh(clip_rect, mesh) in clipped_meshes { self.paint_mesh(target, display, pixels_per_point, clip_rect, &mesh); } } diff --git a/egui_glow/src/epi_backend.rs b/egui_glow/src/epi_backend.rs index fef06d10..54045e4e 100644 --- a/egui_glow/src/epi_backend.rs +++ b/egui_glow/src/epi_backend.rs @@ -83,14 +83,9 @@ pub fn run(app: Box, native_options: &epi::NativeOptions) -> ! { std::thread::sleep(std::time::Duration::from_millis(10)); } - let (needs_repaint, mut textures_delta, shapes) = - integration.update(gl_window.window()); + let (needs_repaint, textures_delta, shapes) = integration.update(gl_window.window()); let clipped_meshes = integration.egui_ctx.tessellate(shapes); - for (id, image_delta) in textures_delta.set { - painter.set_texture(&gl, id, &image_delta); - } - // paint: { let color = integration.app.clear_color(); @@ -100,20 +95,17 @@ pub fn run(app: Box, native_options: &epi::NativeOptions) -> ! { gl.clear_color(color[0], color[1], color[2], color[3]); gl.clear(glow::COLOR_BUFFER_BIT); } - painter.paint_meshes( + painter.paint_and_update_textures( &gl, gl_window.window().inner_size().into(), integration.egui_ctx.pixels_per_point(), clipped_meshes, + &textures_delta, ); gl_window.swap_buffers().unwrap(); } - for id in textures_delta.free.drain(..) { - painter.free_texture(&gl, id); - } - { *control_flow = if integration.should_quit() { winit::event_loop::ControlFlow::Exit diff --git a/egui_glow/src/painter.rs b/egui_glow/src/painter.rs index 0f9d5f44..c8c59b0b 100644 --- a/egui_glow/src/painter.rs +++ b/egui_glow/src/painter.rs @@ -270,6 +270,25 @@ impl Painter { (width_in_pixels, height_in_pixels) } + pub fn paint_and_update_textures( + &mut self, + gl: &glow::Context, + inner_size: [u32; 2], + pixels_per_point: f32, + clipped_meshes: Vec, + textures_delta: &egui::TexturesDelta, + ) { + for (id, image_delta) in &textures_delta.set { + self.set_texture(gl, *id, image_delta); + } + + self.paint_meshes(gl, inner_size, pixels_per_point, clipped_meshes); + + for &id in &textures_delta.free { + self.free_texture(gl, id); + } + } + /// Main entry-point for painting a frame. /// You should call `target.clear_color(..)` before /// and `target.finish()` after this. diff --git a/egui_web/src/backend.rs b/egui_web/src/backend.rs index 134a2bc2..08e22f9e 100644 --- a/egui_web/src/backend.rs +++ b/egui_web/src/backend.rs @@ -294,17 +294,14 @@ impl AppRunner { /// Paint the results of the last call to [`Self::logic`]. pub fn paint(&mut self, clipped_meshes: Vec) -> Result<(), JsValue> { let textures_delta = std::mem::take(&mut self.textures_delta); - for (id, image_delta) in textures_delta.set { - self.painter.set_texture(id, &image_delta); - } self.painter.clear(self.app.clear_color()); - self.painter - .paint_meshes(clipped_meshes, self.egui_ctx.pixels_per_point())?; - for id in textures_delta.free { - self.painter.free_texture(id); - } + self.painter.paint_and_update_textures( + clipped_meshes, + self.egui_ctx.pixels_per_point(), + &textures_delta, + )?; Ok(()) } diff --git a/egui_web/src/painter.rs b/egui_web/src/painter.rs index 16bc8e49..f0c26e7c 100644 --- a/egui_web/src/painter.rs +++ b/egui_web/src/painter.rs @@ -22,4 +22,23 @@ pub trait Painter { ) -> Result<(), JsValue>; fn name(&self) -> &'static str; + + fn paint_and_update_textures( + &mut self, + clipped_meshes: Vec, + pixels_per_point: f32, + textures_delta: &egui::TexturesDelta, + ) -> Result<(), JsValue> { + for (id, image_delta) in &textures_delta.set { + self.set_texture(*id, image_delta); + } + + self.paint_meshes(clipped_meshes, pixels_per_point)?; + + for &id in &textures_delta.free { + self.free_texture(id); + } + + Ok(()) + } } From 2af1dda4c337cb35158d64d3a5c2a90c6e14abce Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Mon, 21 Feb 2022 21:51:21 +0100 Subject: [PATCH 42/51] Add TexturesDelta::clear --- epaint/src/textures.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/epaint/src/textures.rs b/epaint/src/textures.rs index a67382f0..cb0b9737 100644 --- a/epaint/src/textures.rs +++ b/epaint/src/textures.rs @@ -161,4 +161,9 @@ impl TexturesDelta { self.set.extend(newer.set.into_iter()); self.free.append(&mut newer.free); } + + pub fn clear(&mut self) { + self.set.clear(); + self.free.clear(); + } } From a90379ac8d8e0b38b91f7090b633682cd1d47459 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 09:47:31 +0100 Subject: [PATCH 43/51] Ignore characters that are wrong in `emoji-icon-font.ttf` Closes https://github.com/emilk/egui/issues/1284 --- epaint/src/text/font.rs | 45 +++++++++++++++++++++++++++------------- epaint/src/text/fonts.rs | 1 + 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/epaint/src/text/font.rs b/epaint/src/text/font.rs index 1f779ddf..47b41adf 100644 --- a/epaint/src/text/font.rs +++ b/epaint/src/text/font.rs @@ -56,6 +56,7 @@ impl Default for GlyphInfo { /// A specific font with a size. /// The interface uses points as the unit for everything. pub struct FontImpl { + name: String, ab_glyph_font: ab_glyph::FontArc, /// Maximum character height scale_in_pixels: u32, @@ -71,6 +72,7 @@ impl FontImpl { pub fn new( atlas: Arc>, pixels_per_point: f32, + name: String, ab_glyph_font: ab_glyph::FontArc, scale_in_pixels: u32, y_offset_points: f32, @@ -91,6 +93,7 @@ impl FontImpl { let y_offset = (y_offset_points * pixels_per_point).round() / pixels_per_point; Self { + name, ab_glyph_font, scale_in_pixels, height_in_points, @@ -101,22 +104,32 @@ impl FontImpl { } } + fn ignore_character(&self, chr: char) -> bool { + if self.name == "emoji-icon-font" { + // HACK: https://github.com/emilk/egui/issues/1284 https://github.com/jslegers/emoji-icon-font/issues/18 + // Don't show the wrong fullwidth capital letters: + if 'S' <= chr && chr <= 'Y' { + return true; + } + } + + matches!( + chr, + // Strip out a religious symbol with secondary nefarious interpretation: + '\u{534d}' | '\u{5350}' | + + // Ignore ubuntu-specific stuff in `Ubuntu-Light.ttf`: + '\u{E0FF}' | '\u{EFFD}' | '\u{F0FF}' | '\u{F200}' + ) + } + /// An un-ordered iterator over all supported characters. fn characters(&self) -> impl Iterator + '_ { use ab_glyph::Font as _; self.ab_glyph_font .codepoint_ids() .map(|(_, chr)| chr) - .filter(|chr| { - !matches!( - chr, - // Strip out a religious symbol with secondary nefarious interpretation: - '\u{534d}' | '\u{5350}' | - - // Ignore ubuntu-specific stuff in `Ubuntu-Light.ttf`: - '\u{E0FF}' | '\u{EFFD}' | '\u{F0FF}' | '\u{F200}' - ) - }) + .filter(|&chr| !self.ignore_character(chr)) } /// `\n` will result in `None` @@ -127,9 +140,9 @@ impl FontImpl { } } - // Add new character: - use ab_glyph::Font as _; - let glyph_id = self.ab_glyph_font.glyph_id(c); + if self.ignore_character(c) { + return None; + } if c == '\t' { if let Some(space) = self.glyph_info(' ') { @@ -142,6 +155,10 @@ impl FontImpl { } } + // Add new character: + use ab_glyph::Font as _; + let glyph_id = self.ab_glyph_font.glyph_id(c); + if glyph_id.0 == 0 { if invisible_char(c) { // hack @@ -149,7 +166,7 @@ impl FontImpl { self.glyph_info_cache.write().insert(c, glyph_info); Some(glyph_info) } else { - None + None // unsupported character } } else { let glyph_info = allocate_glyph( diff --git a/epaint/src/text/fonts.rs b/epaint/src/text/fonts.rs index 3f4dc131..716100eb 100644 --- a/epaint/src/text/fonts.rs +++ b/epaint/src/text/fonts.rs @@ -714,6 +714,7 @@ impl FontImplCache { Arc::new(FontImpl::new( self.atlas.clone(), self.pixels_per_point, + font_name.to_owned(), ab_glyph_font, scale_in_pixels, y_offset_points, From 76f564428b12143675644c7ce876321cd742f24c Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 13:20:46 +0100 Subject: [PATCH 44/51] Implement Serialize/Deserialize for `TextShape` --- epaint/src/shape.rs | 1 + epaint/src/text/font.rs | 1 + epaint/src/text/text_layout_types.rs | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/epaint/src/shape.rs b/epaint/src/shape.rs index d097b8c2..40c9b3fe 100644 --- a/epaint/src/shape.rs +++ b/epaint/src/shape.rs @@ -506,6 +506,7 @@ impl Rounding { /// How to paint some text on screen. #[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct TextShape { /// Top left corner of the first character. pub pos: Pos2, diff --git a/epaint/src/text/font.rs b/epaint/src/text/font.rs index 47b41adf..d2f29267 100644 --- a/epaint/src/text/font.rs +++ b/epaint/src/text/font.rs @@ -9,6 +9,7 @@ use std::collections::BTreeSet; // ---------------------------------------------------------------------------- #[derive(Clone, Copy, Debug, Default, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct UvRect { /// X/Y offset for nice rendering (unit: points). pub offset: Vec2, diff --git a/epaint/src/text/text_layout_types.rs b/epaint/src/text/text_layout_types.rs index 0b608df0..95488ea6 100644 --- a/epaint/src/text/text_layout_types.rs +++ b/epaint/src/text/text_layout_types.rs @@ -261,6 +261,7 @@ impl TextFormat { /// /// You can create a [`Galley`] using [`crate::Fonts::layout_job`]; #[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct Galley { /// The job that this galley is the result of. /// Contains the original string and style sections. @@ -294,6 +295,7 @@ pub struct Galley { } #[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct Row { /// One for each `char`. pub glyphs: Vec, @@ -316,6 +318,7 @@ pub struct Row { /// The tessellated output of a row. #[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct RowVisuals { /// The tessellated text, using non-normalized (texel) UV coordinates. /// That is, you need to divide the uv coordinates by the texture size. @@ -341,6 +344,7 @@ impl Default for RowVisuals { } #[derive(Copy, Clone, Debug, PartialEq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct Glyph { pub chr: char, /// Relative to the galley position. From 745f209c6172cdd59b194640bd05aadd65c0a172 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 13:21:28 +0100 Subject: [PATCH 45/51] Make RawInput.max_texture_side an Option --- egui-winit/src/lib.rs | 2 +- egui/src/context.rs | 2 +- egui/src/data/input.rs | 10 +++++----- egui/src/input_state.rs | 14 +++++++++++++- egui_web/src/backend.rs | 2 +- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/egui-winit/src/lib.rs b/egui-winit/src/lib.rs index 6e19f435..d1a62c14 100644 --- a/egui-winit/src/lib.rs +++ b/egui-winit/src/lib.rs @@ -144,7 +144,7 @@ impl State { start_time: instant::Instant::now(), egui_input: egui::RawInput { pixels_per_point: Some(pixels_per_point), - max_texture_side, + max_texture_side: Some(max_texture_side), ..Default::default() }, pointer_pos_in_points: None, diff --git a/egui/src/context.rs b/egui/src/context.rs index 8e50432c..f9d64d39 100644 --- a/egui/src/context.rs +++ b/egui/src/context.rs @@ -79,7 +79,7 @@ impl ContextImpl { /// Load fonts unless already loaded. fn update_fonts_mut(&mut self) { let pixels_per_point = self.input.pixels_per_point(); - let max_texture_side = self.input.raw.max_texture_side; + let max_texture_side = self.input.max_texture_side; if let Some(font_definitions) = self.memory.new_font_definitions.take() { let fonts = Fonts::new(pixels_per_point, max_texture_side, font_definitions); diff --git a/egui/src/data/input.rs b/egui/src/data/input.rs index 789ba2ab..832a1ee6 100644 --- a/egui/src/data/input.rs +++ b/egui/src/data/input.rs @@ -33,7 +33,7 @@ pub struct RawInput { /// Ask your graphics drivers about this. This corresponds to `GL_MAX_TEXTURE_SIZE`. /// /// The default is a very small (but very portable) 2048. - pub max_texture_side: usize, + pub max_texture_side: Option, /// Monotonically increasing time, in seconds. Relative to whatever. Used for animations. /// If `None` is provided, egui will assume a time delta of `predicted_dt` (default 1/60 seconds). @@ -69,7 +69,7 @@ impl Default for RawInput { Self { screen_rect: None, pixels_per_point: None, - max_texture_side: 2048, + max_texture_side: None, time: None, predicted_dt: 1.0 / 60.0, modifiers: Modifiers::default(), @@ -89,7 +89,7 @@ impl RawInput { RawInput { screen_rect: self.screen_rect.take(), pixels_per_point: self.pixels_per_point.take(), - max_texture_side: self.max_texture_side, + max_texture_side: self.max_texture_side.take(), time: self.time.take(), predicted_dt: self.predicted_dt, modifiers: self.modifiers, @@ -115,7 +115,7 @@ impl RawInput { self.screen_rect = screen_rect.or(self.screen_rect); self.pixels_per_point = pixels_per_point.or(self.pixels_per_point); - self.max_texture_side = max_texture_side; // use latest + self.max_texture_side = max_texture_side.or(self.max_texture_side); self.time = time; // use latest time self.predicted_dt = predicted_dt; // use latest dt self.modifiers = modifiers; // use latest @@ -509,7 +509,7 @@ impl RawInput { .on_hover_text( "Also called HDPI factor.\nNumber of physical pixels per each logical pixel.", ); - ui.label(format!("max_texture_side: {}", max_texture_side)); + ui.label(format!("max_texture_side: {:?}", max_texture_side)); if let Some(time) = time { ui.label(format!("time: {:.3} s", time)); } else { diff --git a/egui/src/input_state.rs b/egui/src/input_state.rs index e35c2bcc..1c1e4703 100644 --- a/egui/src/input_state.rs +++ b/egui/src/input_state.rs @@ -49,6 +49,11 @@ pub struct InputState { /// Also known as device pixel ratio, > 1 for high resolution screens. pub pixels_per_point: f32, + /// Maximum size of one side of a texture. + /// + /// This depends on the backend. + pub max_texture_side: usize, + /// Time in seconds. Relative to whatever. Used for animation. pub time: f64, @@ -82,6 +87,7 @@ impl Default for InputState { zoom_factor_delta: 1.0, screen_rect: Rect::from_min_size(Default::default(), vec2(10_000.0, 10_000.0)), pixels_per_point: 1.0, + max_texture_side: 2048, time: 0.0, unstable_dt: 1.0 / 6.0, predicted_dt: 1.0 / 6.0, @@ -134,6 +140,7 @@ impl InputState { zoom_factor_delta, screen_rect, pixels_per_point: new.pixels_per_point.unwrap_or(self.pixels_per_point), + max_texture_side: new.max_texture_side.unwrap_or(self.max_texture_side), time, unstable_dt, predicted_dt: new.predicted_dt, @@ -714,6 +721,7 @@ impl InputState { zoom_factor_delta, screen_rect, pixels_per_point, + max_texture_side, time, unstable_dt, predicted_dt, @@ -746,9 +754,13 @@ impl InputState { ui.label(format!("zoom_factor_delta: {:4.2}x", zoom_factor_delta)); ui.label(format!("screen_rect: {:?} points", screen_rect)); ui.label(format!( - "{:?} physical pixels for each logical point", + "{} physical pixels for each logical point", pixels_per_point )); + ui.label(format!( + "max texture size (on each side): {}", + max_texture_side + )); ui.label(format!("time: {:.3} s", time)); ui.label(format!( "time since previous frame: {:.1} ms", diff --git a/egui_web/src/backend.rs b/egui_web/src/backend.rs index 08e22f9e..22461e48 100644 --- a/egui_web/src/backend.rs +++ b/egui_web/src/backend.rs @@ -214,7 +214,7 @@ impl AppRunner { textures_delta: Default::default(), }; - runner.input.raw.max_texture_side = runner.painter.max_texture_side(); + runner.input.raw.max_texture_side = Some(runner.painter.max_texture_side()); { runner From 2e1a4cf08a5fce80c40d26c34975228ae1e69435 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 13:21:41 +0100 Subject: [PATCH 46/51] impl std::fmt::Debug for TexturesDelta --- epaint/src/textures.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/epaint/src/textures.rs b/epaint/src/textures.rs index cb0b9737..7e358fa8 100644 --- a/epaint/src/textures.rs +++ b/epaint/src/textures.rs @@ -157,6 +157,10 @@ pub struct TexturesDelta { } impl TexturesDelta { + pub fn is_empty(&self) -> bool { + self.set.is_empty() && self.free.is_empty() + } + pub fn append(&mut self, mut newer: TexturesDelta) { self.set.extend(newer.set.into_iter()); self.free.append(&mut newer.free); @@ -167,3 +171,32 @@ impl TexturesDelta { self.free.clear(); } } + +impl std::fmt::Debug for TexturesDelta { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut debug_struct = f.debug_struct("TexturesDelta"); + if !self.set.is_empty() { + let mut string = String::new(); + for (tex_id, delta) in &self.set { + let size = delta.image.size(); + if let Some(pos) = delta.pos { + string += &format!( + "{:?} partial ([{} {}] - [{} {}]), ", + tex_id, + pos[0], + pos[1], + pos[0] + size[0], + pos[1] + size[1] + ); + } else { + string += &format!("{:?} full {}x{}, ", tex_id, size[0], size[1]); + } + } + debug_struct.field("set", &string); + } + if !self.free.is_empty() { + debug_struct.field("free", &self.free); + } + debug_struct.finish() + } +} From c5a9421dbd19cfabff0e7931240fe356e2050d34 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 16:30:42 +0100 Subject: [PATCH 47/51] Run wasm-bindgen in CI and update parking_lot (#1293) * Run wasm-bindgen in CI * Update parking_lot 0.11 -> 0.12 --- .github/workflows/rust.yml | 14 ++++++++++++ Cargo.lock | 46 +++++++++++++++++++++++++++++++++----- egui_extras/Cargo.toml | 2 +- epaint/Cargo.toml | 2 +- sh/build_demo_web.sh | 8 +++++-- sh/check.sh | 4 +++- sh/wasm_bindgen_check.sh | 37 ++++++++++++++++++++++++++++++ 7 files changed, 103 insertions(+), 10 deletions(-) create mode 100755 sh/wasm_bindgen_check.sh diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 09df2c58..ee60bdc4 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -153,3 +153,17 @@ jobs: steps: - uses: actions/checkout@v2 - uses: EmbarkStudios/cargo-deny-action@v1 + + wasm_bindgen: + name: wasm-bindgen + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.56.0 + override: true + - run: rustup target add wasm32-unknown-unknown + - run: cargo install wasm-bindgen-cli + - run: ./sh/wasm_bindgen_check.sh diff --git a/Cargo.lock b/Cargo.lock index 514ea8e3..135d1045 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1060,7 +1060,7 @@ version = "0.16.0" dependencies = [ "egui", "image", - "parking_lot", + "parking_lot 0.12.0", "resvg", "tiny-skia", "usvg", @@ -1209,7 +1209,7 @@ dependencies = [ "criterion", "emath", "nohash-hasher", - "parking_lot", + "parking_lot 0.12.0", "serde", ] @@ -1517,7 +1517,7 @@ dependencies = [ "log", "objc", "osmesa-sys", - "parking_lot", + "parking_lot 0.11.2", "wayland-client", "wayland-egl", "winapi", @@ -2287,7 +2287,17 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.1", ] [[package]] @@ -2304,6 +2314,19 @@ dependencies = [ "winapi", ] +[[package]] +name = "parking_lot_core" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -3713,6 +3736,19 @@ dependencies = [ "windows_x86_64_msvc", ] +[[package]] +name = "windows-sys" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + [[package]] name = "windows_aarch64_msvc" version = "0.32.0" @@ -3764,7 +3800,7 @@ dependencies = [ "ndk-glue 0.5.1", "ndk-sys 0.2.2", "objc", - "parking_lot", + "parking_lot 0.11.2", "percent-encoding", "raw-window-handle", "smithay-client-toolkit", diff --git a/egui_extras/Cargo.toml b/egui_extras/Cargo.toml index 7fed0fae..04c9a1a7 100644 --- a/egui_extras/Cargo.toml +++ b/egui_extras/Cargo.toml @@ -33,7 +33,7 @@ svg = ["resvg", "tiny-skia", "usvg"] [dependencies] egui = { version = "0.16.1", path = "../egui", default-features = false, features = ["single_threaded"] } -parking_lot = "0.11" +parking_lot = "0.12" # Optional dependencies: diff --git a/epaint/Cargo.toml b/epaint/Cargo.toml index 3ea7eaa1..21a8b75d 100644 --- a/epaint/Cargo.toml +++ b/epaint/Cargo.toml @@ -63,7 +63,7 @@ atomic_refcell = { version = "0.1", optional = true } # Used instead of parking_ bytemuck = { version = "1.7.2", features = ["derive"], optional = true } cint = { version = "^0.2.2", optional = true } nohash-hasher = "0.2" -parking_lot = { version = "0.11", optional = true } # Using parking_lot over std::sync::Mutex gives 50% speedups in some real-world scenarios. +parking_lot = { version = "0.12", optional = true } # Using parking_lot over std::sync::Mutex gives 50% speedups in some real-world scenarios. serde = { version = "1", features = ["derive", "rc"], optional = true } [dev-dependencies] diff --git a/sh/build_demo_web.sh b/sh/build_demo_web.sh index 27de09de..c8e4db70 100755 --- a/sh/build_demo_web.sh +++ b/sh/build_demo_web.sh @@ -56,8 +56,12 @@ TARGET=`cargo metadata --format-version=1 | jq --raw-output .target_directory` echo "Generating JS bindings for wasm…" TARGET_NAME="${CRATE_NAME}.wasm" -wasm-bindgen "${TARGET}/wasm32-unknown-unknown/$BUILD/$TARGET_NAME" \ - --out-dir docs --no-modules --no-typescript +WASM_PATH="${TARGET}/wasm32-unknown-unknown/$BUILD/$TARGET_NAME" +wasm-bindgen ${WASM_PATH} --out-dir docs --no-modules --no-typescript + +# if this fails with "error: cannot import from modules (`env`) with `--no-modules`", you can use: +# wasm2wat target/wasm32-unknown-unknown/release/egui_demo_app.wasm | rg env +# wasm2wat target/wasm32-unknown-unknown/release/egui_demo_app.wasm | rg "call .now\b" -B 20 # What calls `$now` (often a culprit) # to get wasm-strip: apt/brew/dnf install wabt # wasm-strip docs/${CRATE_NAME}_bg.wasm diff --git a/sh/check.sh b/sh/check.sh index e9d30930..347c0c8a 100755 --- a/sh/check.sh +++ b/sh/check.sh @@ -46,8 +46,10 @@ cargo doc --document-private-items --no-deps --all-features (cd epaint && cargo check --all-features) (cd epi && cargo check --all-features) +./sh/wasm_bindgen_check.sh --fast + # cargo install cargo-deny -# cargo deny check +cargo deny check # ------------------------------------------------------------ # diff --git a/sh/wasm_bindgen_check.sh b/sh/wasm_bindgen_check.sh new file mode 100755 index 00000000..411baabe --- /dev/null +++ b/sh/wasm_bindgen_check.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -eu +script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) +cd "$script_path/.." + +CRATE_NAME="egui_demo_app" +FEATURES="http,persistence,screen_reader" + +# This is required to enable the web_sys clipboard API which egui_web uses +# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html +# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html +export RUSTFLAGS=--cfg=web_sys_unstable_apis + +echo "Building rust…" +BUILD=debug # debug builds are faster + +(cd $CRATE_NAME && + cargo build \ + --lib \ + --target wasm32-unknown-unknown \ + --no-default-features \ + --features ${FEATURES} +) + +TARGET="target" + +echo "Generating JS bindings for wasm…" + +rm -f "${CRATE_NAME}_bg.wasm" # Remove old output (if any) + +TARGET_NAME="${CRATE_NAME}.wasm" +wasm-bindgen "${TARGET}/wasm32-unknown-unknown/$BUILD/$TARGET_NAME" \ + --out-dir . --no-modules --no-typescript + +# Remove output: +rm -f "${CRATE_NAME}_bg.wasm" +rm -f "${CRATE_NAME}.js" From 31d324932c953cbbdd292dbae0cff2179cf83774 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 17:13:53 +0100 Subject: [PATCH 48/51] Introduce egui::FullOutput, returned from Context::run (#1292) * Introduce `egui::FullOutput`, returned from `Context::run` * Rename `Output` to `PlatformOutput` --- CHANGELOG.md | 3 +- README.md | 19 ++++---- egui-winit/src/epi.rs | 53 +++++++++++----------- egui-winit/src/lib.rs | 17 +++---- egui/src/context.rs | 72 ++++++++++++++++-------------- egui/src/data/output.rs | 68 ++++++++++++++++++++-------- egui/src/lib.rs | 15 +++---- egui/src/memory.rs | 2 +- egui/src/ui.rs | 4 +- egui_demo_lib/benches/benchmark.rs | 8 ++-- egui_demo_lib/src/lib.rs | 8 ++-- egui_glium/src/epi_backend.rs | 11 ++++- egui_glium/src/lib.rs | 14 ++++-- egui_glow/src/epi_backend.rs | 10 ++++- egui_glow/src/lib.rs | 14 +++--- egui_web/src/backend.rs | 28 ++++++------ epaint/src/textures.rs | 2 +- 17 files changed, 204 insertions(+), 144 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7299eae..896e14c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,7 +43,8 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Renamed `Ui::visible` to `Ui::is_visible`. * Split `Event::Text` into `Event::Text` and `Event::Paste` ([#1058](https://github.com/emilk/egui/pull/1058)). * For integrations: - * `FontImage` has been replaced by `TexturesDelta` (found in `Output`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)). + * `Output` has now been renamed `PlatformOutput` and `Context::run` now returns the new `FullOutput` ([#1292](https://github.com/emilk/egui/pull/1292)). + * `FontImage` has been replaced by `TexturesDelta` (found in `FullOutput`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)). * The painter must support partial texture updates ([#1149](https://github.com/emilk/egui/pull/1149)). * Added `RawInput::max_texture_side` which should be filled in with e.g. `GL_MAX_TEXTURE_SIZE` ([#1154](https://github.com/emilk/egui/pull/1154)). * Replaced `Style::body_text_style` with more generic `Style::text_styles` ([#1154](https://github.com/emilk/egui/pull/1154)). diff --git a/README.md b/README.md index 99381df3..4110d04a 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ Missing an integration for the thing you're working on? Create one, it's easy! ### Writing your own egui integration -You need to collect [`egui::RawInput`](https://docs.rs/egui/latest/egui/struct.RawInput.html), paint [`egui::ClippedMesh`](https://docs.rs/epaint/latest/epaint/struct.ClippedMesh.html):es and handle [`egui::Output`](https://docs.rs/egui/latest/egui/struct.Output.html). The basic structure is this: +You need to collect [`egui::RawInput`](https://docs.rs/egui/latest/egui/struct.RawInput.html) and handle [`egui::FullOutput`](https://docs.rs/egui/latest/egui/struct.FullOutput.html). The basic structure is this: ``` rust let mut egui_ctx = egui::CtxRef::default(); @@ -201,20 +201,19 @@ let mut egui_ctx = egui::CtxRef::default(); loop { // Gather input (mouse, touches, keyboard, screen size, etc): let raw_input: egui::RawInput = my_integration.gather_input(); - let (output, shapes) = egui_ctx.run(raw_input, |egui_ctx| { + let full_output = egui_ctx.run(raw_input, |egui_ctx| { my_app.ui(egui_ctx); // add panels, windows and widgets to `egui_ctx` here }); - let clipped_meshes = egui_ctx.tessellate(shapes); // creates triangles to paint + let clipped_meshes = egui_ctx.tessellate(full_output.shapes); // creates triangles to paint - my_integration.set_egui_textures(&output.textures_delta.set); - my_integration.paint(clipped_meshes); - my_integration.free_egui_textures(&output.textures_delta.free); + my_integration.paint(&full_output.textures_delta, clipped_meshes); - my_integration.set_cursor_icon(output.cursor_icon); - if !output.copied_text.is_empty() { - my_integration.set_clipboard_text(output.copied_text); + let platform_output = full_output.platform_output; + my_integration.set_cursor_icon(platform_output.cursor_icon); + if !platform_output.copied_text.is_empty() { + my_integration.set_clipboard_text(platform_output.copied_text); } - // See `egui::Output` for more + // See `egui::FullOutput` and `egui::PlatformOutput` for more } ``` diff --git a/egui-winit/src/epi.rs b/egui-winit/src/epi.rs index 70d13d32..fd671131 100644 --- a/egui-winit/src/epi.rs +++ b/egui-winit/src/epi.rs @@ -1,7 +1,4 @@ -use egui::Vec2; -use winit::dpi::LogicalSize; - -pub fn points_to_size(points: Vec2) -> LogicalSize { +pub fn points_to_size(points: egui::Vec2) -> winit::dpi::LogicalSize { winit::dpi::LogicalSize { width: points.x as f64, height: points.y as f64, @@ -222,6 +219,7 @@ pub struct EpiIntegration { frame: epi::Frame, persistence: crate::epi::Persistence, pub egui_ctx: egui::Context, + pending_full_output: egui::FullOutput, egui_winit: crate::State, pub app: Box, /// When set, it is time to quit @@ -267,6 +265,7 @@ impl EpiIntegration { persistence, egui_ctx, egui_winit: crate::State::new(max_texture_side, window), + pending_full_output: Default::default(), app, quit: false, can_drag_window: false, @@ -295,8 +294,8 @@ impl EpiIntegration { fn warm_up(&mut self, window: &winit::window::Window) { let saved_memory: egui::Memory = self.egui_ctx.memory().clone(); self.egui_ctx.memory().set_everything_is_visible(true); - let (_, textures_delta, _) = self.update(window); - self.egui_ctx.output().textures_delta = textures_delta; // Handle it next frame + let full_output = self.update(window); + self.pending_full_output.append(full_output); // Handle it next frame *self.egui_ctx.memory() = saved_memory; // We don't want to remember that windows were huge. self.egui_ctx.clear_animations(); } @@ -323,37 +322,39 @@ impl EpiIntegration { self.egui_winit.on_event(&self.egui_ctx, event); } - /// Returns `needs_repaint` and shapes to paint. - pub fn update( - &mut self, - window: &winit::window::Window, - ) -> (bool, egui::TexturesDelta, Vec) { + pub fn update(&mut self, window: &winit::window::Window) -> egui::FullOutput { let frame_start = instant::Instant::now(); let raw_input = self.egui_winit.take_egui_input(window); - let (egui_output, shapes) = self.egui_ctx.run(raw_input, |egui_ctx| { + let full_output = self.egui_ctx.run(raw_input, |egui_ctx| { self.app.update(egui_ctx, &self.frame); }); + self.pending_full_output.append(full_output); + let full_output = std::mem::take(&mut self.pending_full_output); - let needs_repaint = egui_output.needs_repaint; - let textures_delta = self - .egui_winit - .handle_output(window, &self.egui_ctx, egui_output); - - let mut app_output = self.frame.take_app_output(); - app_output.drag_window &= self.can_drag_window; // Necessary on Windows; see https://github.com/emilk/egui/pull/1108 - self.can_drag_window = false; - - if app_output.quit { - self.quit = self.app.on_exit_event(); + { + let mut app_output = self.frame.take_app_output(); + app_output.drag_window &= self.can_drag_window; // Necessary on Windows; see https://github.com/emilk/egui/pull/1108 + self.can_drag_window = false; + if app_output.quit { + self.quit = self.app.on_exit_event(); + } + crate::epi::handle_app_output(window, self.egui_ctx.pixels_per_point(), app_output); } - crate::epi::handle_app_output(window, self.egui_ctx.pixels_per_point(), app_output); - let frame_time = (instant::Instant::now() - frame_start).as_secs_f64() as f32; self.frame.lock().info.cpu_usage = Some(frame_time); - (needs_repaint, textures_delta, shapes) + full_output + } + + pub fn handle_platform_output( + &mut self, + window: &winit::window::Window, + platform_output: egui::PlatformOutput, + ) { + self.egui_winit + .handle_platform_output(window, &self.egui_ctx, platform_output); } pub fn maybe_autosave(&mut self, window: &winit::window::Window) { diff --git a/egui-winit/src/lib.rs b/egui-winit/src/lib.rs index d1a62c14..a4a36220 100644 --- a/egui-winit/src/lib.rs +++ b/egui-winit/src/lib.rs @@ -514,26 +514,25 @@ impl State { /// * open any clicked urls /// * update the IME /// * - pub fn handle_output( + pub fn handle_platform_output( &mut self, window: &winit::window::Window, egui_ctx: &egui::Context, - output: egui::Output, - ) -> egui::TexturesDelta { + platform_output: egui::PlatformOutput, + ) { if egui_ctx.options().screen_reader { - self.screen_reader.speak(&output.events_description()); + self.screen_reader + .speak(&platform_output.events_description()); } - let egui::Output { + let egui::PlatformOutput { cursor_icon, open_url, copied_text, - needs_repaint: _, // needs to be handled elsewhere events: _, // handled above mutable_text_under_cursor: _, // only used in egui_web text_cursor_pos, - textures_delta, - } = output; + } = platform_output; self.current_pixels_per_point = egui_ctx.pixels_per_point(); // someone can have changed it to scale the UI @@ -550,8 +549,6 @@ impl State { if let Some(egui::Pos2 { x, y }) = text_cursor_pos { window.set_ime_position(winit::dpi::LogicalPosition { x, y }); } - - textures_delta } fn set_cursor_icon(&mut self, window: &winit::window::Window, cursor_icon: egui::CursorIcon) { diff --git a/egui/src/context.rs b/egui/src/context.rs index f9d64d39..c0c261fc 100644 --- a/egui/src/context.rs +++ b/egui/src/context.rs @@ -1,8 +1,8 @@ // #![warn(missing_docs)] use crate::{ - animation_manager::AnimationManager, data::output::Output, frame_state::FrameState, - input_state::*, layers::GraphicLayers, memory::Options, TextureHandle, *, + animation_manager::AnimationManager, data::output::PlatformOutput, frame_state::FrameState, + input_state::*, layers::GraphicLayers, memory::Options, output::FullOutput, TextureHandle, *, }; use epaint::{mutex::*, stats::*, text::Fonts, TessellationOptions, *}; @@ -42,7 +42,7 @@ struct ContextImpl { // The output of a frame: graphics: GraphicLayers, - output: Output, + output: PlatformOutput, paint_stats: PaintStats, @@ -108,7 +108,7 @@ impl ContextImpl { /// Your handle to egui. /// /// This is the first thing you need when working with egui. -/// Contains the [`InputState`], [`Memory`], [`Output`], and more. +/// Contains the [`InputState`], [`Memory`], [`PlatformOutput`], and more. /// /// [`Context`] is cheap to clone, and any clones refers to the same mutable data /// ([`Context`] uses refcounting internally). @@ -121,14 +121,14 @@ impl ContextImpl { /// # Example: /// /// ``` no_run -/// # fn handle_output(_: egui::Output) {} -/// # fn paint(_: Vec) {} +/// # fn handle_platform_output(_: egui::PlatformOutput) {} +/// # fn paint(textures_detla: egui::TexturesDelta, _: Vec) {} /// let mut ctx = egui::Context::default(); /// /// // Game loop: /// loop { /// let raw_input = egui::RawInput::default(); -/// let (output, shapes) = ctx.run(raw_input, |ctx| { +/// let full_output = ctx.run(raw_input, |ctx| { /// egui::CentralPanel::default().show(&ctx, |ui| { /// ui.label("Hello world!"); /// if ui.button("Click me").clicked() { @@ -136,9 +136,9 @@ impl ContextImpl { /// } /// }); /// }); -/// let clipped_meshes = ctx.tessellate(shapes); // create triangles to paint -/// handle_output(output); -/// paint(clipped_meshes); +/// handle_platform_output(full_output.platform_output); +/// let clipped_meshes = ctx.tessellate(full_output.shapes); // create triangles to paint +/// paint(full_output.textures_delta, clipped_meshes); /// } /// ``` #[derive(Clone)] @@ -185,19 +185,15 @@ impl Context { /// /// // Each frame: /// let input = egui::RawInput::default(); - /// let (output, shapes) = ctx.run(input, |ctx| { + /// let full_output = ctx.run(input, |ctx| { /// egui::CentralPanel::default().show(&ctx, |ui| { /// ui.label("Hello egui!"); /// }); /// }); - /// // handle output, paint shapes + /// // handle full_output /// ``` #[must_use] - pub fn run( - &self, - new_input: RawInput, - run_ui: impl FnOnce(&Context), - ) -> (Output, Vec) { + pub fn run(&self, new_input: RawInput, run_ui: impl FnOnce(&Context)) -> FullOutput { self.begin_frame(new_input); run_ui(self); self.end_frame() @@ -217,8 +213,8 @@ impl Context { /// ui.label("Hello egui!"); /// }); /// - /// let (output, shapes) = ctx.end_frame(); - /// // handle output, paint shapes + /// let full_output = ctx.end_frame(); + /// // handle full_output /// ``` pub fn begin_frame(&self, new_input: RawInput) { self.write().begin_frame_mut(new_input); @@ -463,8 +459,13 @@ impl Context { } /// What egui outputs each frame. + /// + /// ``` + /// # let mut ctx = egui::Context::default(); + /// ctx.output().cursor_icon = egui::CursorIcon::Progress; + /// ``` #[inline] - pub fn output(&self) -> RwLockWriteGuard<'_, Output> { + pub fn output(&self) -> RwLockWriteGuard<'_, PlatformOutput> { RwLockWriteGuard::map(self.write(), |c| &mut c.output) } @@ -719,14 +720,13 @@ impl Context { impl Context { /// Call at the end of each frame. - /// Returns what has happened this frame [`crate::Output`] as well as what you need to paint. - /// You can transform the returned shapes into triangles with a call to [`Context::tessellate`]. #[must_use] - pub fn end_frame(&self) -> (Output, Vec) { + pub fn end_frame(&self) -> FullOutput { if self.input().wants_repaint() { self.request_repaint(); } + let textures_delta; { let ctx_impl = &mut *self.write(); ctx_impl @@ -742,20 +742,26 @@ impl Context { .set(TextureId::default(), font_image_delta); } - ctx_impl - .output - .textures_delta - .append(ctx_impl.tex_manager.0.write().take_delta()); - } + textures_delta = ctx_impl.tex_manager.0.write().take_delta(); + }; - let mut output: Output = std::mem::take(&mut self.output()); - if self.read().repaint_requests > 0 { + let platform_output: PlatformOutput = std::mem::take(&mut self.output()); + + let needs_repaint = if self.read().repaint_requests > 0 { self.write().repaint_requests -= 1; - output.needs_repaint = true; - } + true + } else { + false + }; let shapes = self.drain_paint_lists(); - (output, shapes) + + FullOutput { + platform_output, + needs_repaint, + textures_delta, + shapes, + } } fn drain_paint_lists(&self) -> Vec { diff --git a/egui/src/data/output.rs b/egui/src/data/output.rs index 664808b5..e3f8dc37 100644 --- a/egui/src/data/output.rs +++ b/egui/src/data/output.rs @@ -2,11 +2,56 @@ use crate::WidgetType; -/// What egui emits each frame. +/// What egui emits each frame from [`crate::Context::run`]. +/// +/// The backend should use this. +#[derive(Clone, Default, PartialEq)] +pub struct FullOutput { + /// Non-rendering related output. + pub platform_output: PlatformOutput, + + /// If `true`, egui is requesting immediate repaint (i.e. on the next frame). + /// + /// This happens for instance when there is an animation, or if a user has called `Context::request_repaint()`. + pub needs_repaint: bool, + + /// Texture changes since last frame (including the font texture). + /// + /// The backend needs to apply [`crate::TexturesDelta::set`] _before_ painting, + /// and free any texture in [`crate::TexturesDelta::free`] _after_ painting. + pub textures_delta: epaint::textures::TexturesDelta, + + /// What to paint. + /// + /// You can use [`crate::Context::tessellate`] to turn this into triangles. + pub shapes: Vec, +} + +impl FullOutput { + /// Add on new output. + pub fn append(&mut self, newer: Self) { + let Self { + platform_output, + needs_repaint, + textures_delta, + shapes, + } = newer; + + self.platform_output.append(platform_output); + self.needs_repaint = needs_repaint; // if the last frame doesn't need a repaint, then we don't need to repaint + self.textures_delta.append(textures_delta); + self.shapes = shapes; // Only paint the latest + } +} + +/// The non-rendering part of what egui emits each frame. +/// +/// You can access (and modify) this with [`crate::Context::output`]. +/// /// The backend should use this. #[derive(Clone, Default, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] -pub struct Output { +pub struct PlatformOutput { /// Set the cursor to this icon. pub cursor_icon: CursorIcon, @@ -18,14 +63,6 @@ pub struct Output { /// This is often a response to [`crate::Event::Copy`] or [`crate::Event::Cut`]. pub copied_text: String, - /// If `true`, egui is requesting immediate repaint (i.e. on the next frame). - /// - /// This happens for instance when there is an animation, or if a user has called `Context::request_repaint()`. - /// - /// As an egui user: don't set this value directly. - /// Call `Context::request_repaint()` instead and it will do so for you. - pub needs_repaint: bool, - /// Events that may be useful to e.g. a screen reader. pub events: Vec, @@ -35,12 +72,9 @@ pub struct Output { /// Screen-space position of text edit cursor (used for IME). pub text_cursor_pos: Option, - - /// Texture changes since last frame. - pub textures_delta: epaint::textures::TexturesDelta, } -impl Output { +impl PlatformOutput { /// Open the given url in a web browser. /// If egui is running in a browser, the same tab will be reused. pub fn open_url(&mut self, url: impl ToString) { @@ -70,11 +104,9 @@ impl Output { cursor_icon, open_url, copied_text, - needs_repaint, mut events, mutable_text_under_cursor, text_cursor_pos, - textures_delta, } = newer; self.cursor_icon = cursor_icon; @@ -84,11 +116,9 @@ impl Output { if !copied_text.is_empty() { self.copied_text = copied_text; } - self.needs_repaint = needs_repaint; // if the last frame doesn't need a repaint, then we don't need to repaint self.events.append(&mut events); self.mutable_text_under_cursor = mutable_text_under_cursor; self.text_cursor_pos = text_cursor_pos.or(self.text_cursor_pos); - self.textures_delta.append(textures_delta); } /// Take everything ephemeral (everything except `cursor_icon` currently) @@ -129,7 +159,7 @@ impl OpenUrl { /// A mouse cursor icon. /// -/// egui emits a [`CursorIcon`] in [`Output`] each frame as a request to the integration. +/// egui emits a [`CursorIcon`] in [`PlatformOutput`] each frame as a request to the integration. /// /// Loosely based on . #[derive(Clone, Copy, Debug, PartialEq)] diff --git a/egui/src/lib.rs b/egui/src/lib.rs index ee472935..8c05fc1a 100644 --- a/egui/src/lib.rs +++ b/egui/src/lib.rs @@ -110,16 +110,16 @@ //! To write your own integration for egui you need to do this: //! //! ``` no_run -//! # fn handle_output(_: egui::Output) {} -//! # fn paint(_: Vec) {} +//! # fn handle_platform_output(_: egui::PlatformOutput) {} //! # fn gather_input() -> egui::RawInput { egui::RawInput::default() } +//! # fn paint(textures_detla: egui::TexturesDelta, _: Vec) {} //! let mut ctx = egui::Context::default(); //! //! // Game loop: //! loop { //! let raw_input: egui::RawInput = gather_input(); //! -//! let (output, shapes) = ctx.run(raw_input, |ctx| { +//! let full_output = ctx.run(raw_input, |ctx| { //! egui::CentralPanel::default().show(&ctx, |ui| { //! ui.label("Hello world!"); //! if ui.button("Click me").clicked() { @@ -127,10 +127,9 @@ //! } //! }); //! }); -//! -//! let clipped_meshes = ctx.tessellate(shapes); // create triangles to paint -//! handle_output(output); -//! paint(clipped_meshes); +//! handle_platform_output(full_output.platform_output); +//! let clipped_meshes = ctx.tessellate(full_output.shapes); // create triangles to paint +//! paint(full_output.textures_delta, clipped_meshes); //! } //! ``` //! @@ -403,7 +402,7 @@ pub use { context::Context, data::{ input::*, - output::{self, CursorIcon, Output, WidgetInfo}, + output::{self, CursorIcon, FullOutput, PlatformOutput, WidgetInfo}, }, grid::Grid, id::{Id, IdMap}, diff --git a/egui/src/memory.rs b/egui/src/memory.rs index 80eb1f15..0ccc36ae 100644 --- a/egui/src/memory.rs +++ b/egui/src/memory.rs @@ -105,7 +105,7 @@ pub struct Options { pub tessellation_options: epaint::TessellationOptions, /// This does not at all change the behavior of egui, - /// but is a signal to any backend that we want the [`crate::Output::events`] read out loud. + /// but is a signal to any backend that we want the [`crate::PlatformOutput::events`] read out loud. /// Screen readers is an experimental feature of egui, and not supported on all platforms. pub screen_reader: bool, diff --git a/egui/src/ui.rs b/egui/src/ui.rs index 5774f6c5..eb442593 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -366,10 +366,10 @@ impl Ui { self.ctx().data() } - /// The [`Output`] of the [`Context`] associated with this ui. + /// The [`PlatformOutput`] of the [`Context`] associated with this ui. /// Equivalent to `.ctx().output()`. #[inline] - pub fn output(&self) -> RwLockWriteGuard<'_, Output> { + pub fn output(&self) -> RwLockWriteGuard<'_, PlatformOutput> { self.ctx().output() } diff --git a/egui_demo_lib/benches/benchmark.rs b/egui_demo_lib/benches/benchmark.rs index 584afb75..4fdeb730 100644 --- a/egui_demo_lib/benches/benchmark.rs +++ b/egui_demo_lib/benches/benchmark.rs @@ -13,10 +13,10 @@ pub fn criterion_benchmark(c: &mut Criterion) { // The most end-to-end benchmark. c.bench_function("demo_with_tessellate__realistic", |b| { b.iter(|| { - let (_output, shapes) = ctx.run(RawInput::default(), |ctx| { + let full_output = ctx.run(RawInput::default(), |ctx| { demo_windows.ui(ctx); }); - ctx.tessellate(shapes) + ctx.tessellate(full_output.shapes) }) }); @@ -28,11 +28,11 @@ pub fn criterion_benchmark(c: &mut Criterion) { }) }); - let (_output, shapes) = ctx.run(RawInput::default(), |ctx| { + let full_output = ctx.run(RawInput::default(), |ctx| { demo_windows.ui(ctx); }); c.bench_function("demo_only_tessellate", |b| { - b.iter(|| ctx.tessellate(shapes.clone())) + b.iter(|| ctx.tessellate(full_output.shapes.clone())) }); } diff --git a/egui_demo_lib/src/lib.rs b/egui_demo_lib/src/lib.rs index f21f22d5..96112481 100644 --- a/egui_demo_lib/src/lib.rs +++ b/egui_demo_lib/src/lib.rs @@ -145,10 +145,10 @@ fn test_egui_e2e() { const NUM_FRAMES: usize = 5; for _ in 0..NUM_FRAMES { - let (_output, shapes) = ctx.run(raw_input.clone(), |ctx| { + let full_output = ctx.run(raw_input.clone(), |ctx| { demo_windows.ui(ctx); }); - let clipped_meshes = ctx.tessellate(shapes); + let clipped_meshes = ctx.tessellate(full_output.shapes); assert!(!clipped_meshes.is_empty()); } } @@ -164,10 +164,10 @@ fn test_egui_zero_window_size() { const NUM_FRAMES: usize = 5; for _ in 0..NUM_FRAMES { - let (_output, shapes) = ctx.run(raw_input.clone(), |ctx| { + let full_output = ctx.run(raw_input.clone(), |ctx| { demo_windows.ui(ctx); }); - let clipped_meshes = ctx.tessellate(shapes); + let clipped_meshes = ctx.tessellate(full_output.shapes); assert!(clipped_meshes.is_empty(), "There should be nothing to show"); } } diff --git a/egui_glium/src/epi_backend.rs b/egui_glium/src/epi_backend.rs index 61dafe27..dafca3b4 100644 --- a/egui_glium/src/epi_backend.rs +++ b/egui_glium/src/epi_backend.rs @@ -67,8 +67,15 @@ pub fn run(app: Box, native_options: &epi::NativeOptions) -> ! { std::thread::sleep(std::time::Duration::from_millis(10)); } - let (needs_repaint, textures_delta, shapes) = - integration.update(display.gl_window().window()); + let egui::FullOutput { + platform_output, + needs_repaint, + textures_delta, + shapes, + } = integration.update(display.gl_window().window()); + + integration.handle_platform_output(display.gl_window().window(), platform_output); + let clipped_meshes = integration.egui_ctx.tessellate(shapes); // paint: diff --git a/egui_glium/src/lib.rs b/egui_glium/src/lib.rs index 4bf8eb8e..991a072a 100644 --- a/egui_glium/src/lib.rs +++ b/egui_glium/src/lib.rs @@ -141,16 +141,22 @@ impl EguiGlium { let raw_input = self .egui_winit .take_egui_input(display.gl_window().window()); - let (egui_output, shapes) = self.egui_ctx.run(raw_input, run_ui); - let needs_repaint = egui_output.needs_repaint; - let textures_delta = self.egui_winit.handle_output( + let egui::FullOutput { + platform_output, + needs_repaint, + textures_delta, + shapes, + } = self.egui_ctx.run(raw_input, run_ui); + + self.egui_winit.handle_platform_output( display.gl_window().window(), &self.egui_ctx, - egui_output, + platform_output, ); self.shapes = shapes; self.textures_delta.append(textures_delta); + needs_repaint } diff --git a/egui_glow/src/epi_backend.rs b/egui_glow/src/epi_backend.rs index 54045e4e..878a5e1c 100644 --- a/egui_glow/src/epi_backend.rs +++ b/egui_glow/src/epi_backend.rs @@ -83,7 +83,15 @@ pub fn run(app: Box, native_options: &epi::NativeOptions) -> ! { std::thread::sleep(std::time::Duration::from_millis(10)); } - let (needs_repaint, textures_delta, shapes) = integration.update(gl_window.window()); + let egui::FullOutput { + platform_output, + needs_repaint, + textures_delta, + shapes, + } = integration.update(gl_window.window()); + + integration.handle_platform_output(gl_window.window(), platform_output); + let clipped_meshes = integration.egui_ctx.tessellate(shapes); // paint: diff --git a/egui_glow/src/lib.rs b/egui_glow/src/lib.rs index 84b91209..c6514744 100644 --- a/egui_glow/src/lib.rs +++ b/egui_glow/src/lib.rs @@ -156,11 +156,15 @@ impl EguiGlow { run_ui: impl FnMut(&egui::Context), ) -> bool { let raw_input = self.egui_winit.take_egui_input(window); - let (egui_output, shapes) = self.egui_ctx.run(raw_input, run_ui); - let needs_repaint = egui_output.needs_repaint; - let textures_delta = self - .egui_winit - .handle_output(window, &self.egui_ctx, egui_output); + let egui::FullOutput { + platform_output, + needs_repaint, + textures_delta, + shapes, + } = self.egui_ctx.run(raw_input, run_ui); + + self.egui_winit + .handle_platform_output(window, &self.egui_ctx, platform_output); self.shapes = shapes; self.textures_delta.append(textures_delta); diff --git a/egui_web/src/backend.rs b/egui_web/src/backend.rs index 22461e48..56acc266 100644 --- a/egui_web/src/backend.rs +++ b/egui_web/src/backend.rs @@ -267,14 +267,19 @@ impl AppRunner { let canvas_size = canvas_size_in_points(self.canvas_id()); let raw_input = self.input.new_frame(canvas_size); - let (egui_output, shapes) = self.egui_ctx.run(raw_input, |egui_ctx| { + let full_output = self.egui_ctx.run(raw_input, |egui_ctx| { self.app.update(egui_ctx, &self.frame); }); - let clipped_meshes = self.egui_ctx.tessellate(shapes); + let egui::FullOutput { + platform_output, + needs_repaint, + textures_delta, + shapes, + } = full_output; - let needs_repaint = egui_output.needs_repaint; - let textures_delta = self.handle_egui_output(egui_output); + self.handle_platform_output(platform_output); self.textures_delta.append(textures_delta); + let clipped_meshes = self.egui_ctx.tessellate(shapes); { let app_output = self.frame.take_app_output(); @@ -306,21 +311,20 @@ impl AppRunner { Ok(()) } - fn handle_egui_output(&mut self, output: egui::Output) -> egui::TexturesDelta { + fn handle_platform_output(&mut self, platform_output: egui::PlatformOutput) { if self.egui_ctx.options().screen_reader { - self.screen_reader.speak(&output.events_description()); + self.screen_reader + .speak(&platform_output.events_description()); } - let egui::Output { + let egui::PlatformOutput { cursor_icon, open_url, copied_text, - needs_repaint: _, // handled elsewhere - events: _, // already handled + events: _, // already handled mutable_text_under_cursor, text_cursor_pos, - textures_delta, - } = output; + } = platform_output; set_cursor_icon(cursor_icon); if let Some(open) = open_url { @@ -341,8 +345,6 @@ impl AppRunner { text_agent::move_text_cursor(text_cursor_pos, self.canvas_id()); self.text_cursor_pos = text_cursor_pos; } - - textures_delta } } diff --git a/epaint/src/textures.rs b/epaint/src/textures.rs index 7e358fa8..205b25c9 100644 --- a/epaint/src/textures.rs +++ b/epaint/src/textures.rs @@ -152,7 +152,7 @@ pub struct TexturesDelta { /// New or changed textures. Apply before painting. pub set: AHashMap, - /// Texture to free after painting. + /// Textures to free after painting. pub free: Vec, } From 83225f46adb3e6d5a2a5cc0c7ecfa0af4ac8bbd0 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 19:12:21 +0100 Subject: [PATCH 49/51] =?UTF-8?q?Make=20B=C3=A9zier=20demo=20more=20compac?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- egui_demo_lib/src/apps/demo/paint_bezier.rs | 57 +++++++++------------ 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/egui_demo_lib/src/apps/demo/paint_bezier.rs b/egui_demo_lib/src/apps/demo/paint_bezier.rs index 6cbbd140..a8261eb9 100644 --- a/egui_demo_lib/src/apps/demo/paint_bezier.rs +++ b/egui_demo_lib/src/apps/demo/paint_bezier.rs @@ -27,9 +27,9 @@ impl Default for PaintBezier { degree: 4, control_points: [ pos2(50.0, 50.0), - pos2(60.0, 150.0), - pos2(140.0, 150.0), - pos2(150.0, 50.0), + pos2(60.0, 250.0), + pos2(200.0, 200.0), + pos2(250.0, 50.0), ], stroke: Stroke::new(1.0, Color32::LIGHT_BLUE), fill: Color32::from_rgb(50, 100, 150).linear_multiply(0.25), @@ -40,39 +40,29 @@ impl Default for PaintBezier { } impl PaintBezier { - pub fn ui_control(&mut self, ui: &mut egui::Ui) -> egui::Response { - ui.horizontal(|ui| { - ui.vertical(|ui| { - ui.radio_value(&mut self.degree, 3, "Quadratic Bézier"); - ui.radio_value(&mut self.degree, 4, "Cubic Bézier"); - ui.label("Move the points by dragging them."); - ui.label("Only convex curves can be accurately filled.") + pub fn ui_control(&mut self, ui: &mut egui::Ui) { + ui.collapsing("Colors", |ui| { + ui.horizontal(|ui| { + ui.label("Fill color:"); + ui.color_edit_button_srgba(&mut self.fill); }); + egui::stroke_ui(ui, &mut self.stroke, "Curve Stroke"); + egui::stroke_ui(ui, &mut self.aux_stroke, "Auxiliary Stroke"); + egui::stroke_ui(ui, &mut self.bounding_box_stroke, "Bounding Box Stroke"); + }); - ui.separator(); + ui.collapsing("Global tessellation options", |ui| { + let mut tessellation_options = *(ui.ctx().tessellation_options()); + let tessellation_options = &mut tessellation_options; + tessellation_options.ui(ui); + let mut new_tessellation_options = ui.ctx().tessellation_options(); + *new_tessellation_options = *tessellation_options; + }); - ui.vertical(|ui| { - ui.horizontal(|ui| { - ui.label("Fill color:"); - ui.color_edit_button_srgba(&mut self.fill); - }); - egui::stroke_ui(ui, &mut self.stroke, "Curve Stroke"); - egui::stroke_ui(ui, &mut self.aux_stroke, "Auxiliary Stroke"); - egui::stroke_ui(ui, &mut self.bounding_box_stroke, "Bounding Box Stroke"); - }); - - ui.separator(); - - ui.vertical(|ui| { - ui.label("Global tessellation options:"); - let mut tessellation_options = *(ui.ctx().tessellation_options()); - let tessellation_options = &mut tessellation_options; - tessellation_options.ui(ui); - let mut new_tessellation_options = ui.ctx().tessellation_options(); - *new_tessellation_options = *tessellation_options; - }); - }) - .response + ui.radio_value(&mut self.degree, 3, "Quadratic Bézier"); + ui.radio_value(&mut self.degree, 4, "Cubic Bézier"); + ui.label("Move the points by dragging them."); + ui.small("Only convex curves can be accurately filled."); } pub fn ui_content(&mut self, ui: &mut Ui) -> egui::Response { @@ -162,6 +152,7 @@ impl super::Demo for PaintBezier { .open(open) .vscroll(false) .resizable(false) + .default_size([300.0, 350.0]) .show(ctx, |ui| self.ui(ui)); } } From a05520b9d3abcfc5fe0a963c621b8e398005fa02 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 22 Feb 2022 19:32:30 +0100 Subject: [PATCH 50/51] Release 0.17.0 - Improved font selection and image handling --- CHANGELOG.md | 20 +- Cargo.lock | 24 +- deny.toml | 9 +- docs/egui_demo_app.js | 1631 +++++++++++++++++++----------------- docs/egui_demo_app_bg.wasm | Bin 3914439 -> 4286858 bytes eframe/CHANGELOG.md | 3 + eframe/Cargo.toml | 14 +- egui-winit/CHANGELOG.md | 4 +- egui-winit/Cargo.toml | 6 +- egui/Cargo.toml | 4 +- egui_demo_app/Cargo.toml | 10 +- egui_demo_lib/Cargo.toml | 8 +- egui_extras/CHANGELOG.md | 3 + egui_extras/Cargo.toml | 4 +- egui_glium/CHANGELOG.md | 3 + egui_glium/Cargo.toml | 8 +- egui_glow/CHANGELOG.md | 3 + egui_glow/Cargo.toml | 8 +- egui_web/CHANGELOG.md | 4 +- egui_web/Cargo.toml | 8 +- emath/Cargo.toml | 2 +- epaint/CHANGELOG.md | 4 +- epaint/Cargo.toml | 4 +- epi/Cargo.toml | 4 +- sh/check.sh | 2 +- 25 files changed, 968 insertions(+), 822 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 896e14c8..d406d2f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,14 @@ # egui changelog - -All notable changes to the egui crate will be documented in this file. +All notable changes to the `egui` crate will be documented in this file. NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_web`](egui_web/CHANGELOG.md), [`egui-winit`](egui-winit/CHANGELOG.md), [`egui_glium`](egui_glium/CHANGELOG.md), and [`egui_glow`](egui_glow/CHANGELOG.md) have their own changelogs! ## Unreleased + +## 0.17.0 - 2022-02-22 - Improved font selection and image handling + ### Added ⭐ * Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)): * You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`. @@ -42,11 +44,6 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * `Context` can now be cloned and stored between frames ([#1050](https://github.com/emilk/egui/pull/1050)). * Renamed `Ui::visible` to `Ui::is_visible`. * Split `Event::Text` into `Event::Text` and `Event::Paste` ([#1058](https://github.com/emilk/egui/pull/1058)). -* For integrations: - * `Output` has now been renamed `PlatformOutput` and `Context::run` now returns the new `FullOutput` ([#1292](https://github.com/emilk/egui/pull/1292)). - * `FontImage` has been replaced by `TexturesDelta` (found in `FullOutput`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)). - * The painter must support partial texture updates ([#1149](https://github.com/emilk/egui/pull/1149)). - * Added `RawInput::max_texture_side` which should be filled in with e.g. `GL_MAX_TEXTURE_SIZE` ([#1154](https://github.com/emilk/egui/pull/1154)). * Replaced `Style::body_text_style` with more generic `Style::text_styles` ([#1154](https://github.com/emilk/egui/pull/1154)). * `TextStyle` is no longer `Copy` ([#1154](https://github.com/emilk/egui/pull/1154)). * Replaced `TextEdit::text_style` with `TextEdit::font` ([#1154](https://github.com/emilk/egui/pull/1154)). @@ -55,9 +52,13 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)). * Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)). * Renamed `Plot::custom_label_func` to `Plot::label_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)). -* Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). -* `Areas::layer_id_at` ignores non interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). +* `Areas::layer_id_at` ignores non-interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)). * `ScrollArea`:s will not shrink below a certain minimum size, set by `min_scrolled_width/min_scrolled_height` ([1255](https://github.com/emilk/egui/pull/1255)). +* For integrations: + * `Output` has now been renamed `PlatformOutput` and `Context::run` now returns the new `FullOutput` ([#1292](https://github.com/emilk/egui/pull/1292)). + * `FontImage` has been replaced by `TexturesDelta` (found in `FullOutput`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)). + * The painter must support partial texture updates ([#1149](https://github.com/emilk/egui/pull/1149)). + * Added `RawInput::max_texture_side` which should be filled in with e.g. `GL_MAX_TEXTURE_SIZE` ([#1154](https://github.com/emilk/egui/pull/1154)). ### Fixed 🐛 * Plot `Orientation` was not public, although fields using this type were ([#1130](https://github.com/emilk/egui/pull/1130)). @@ -97,6 +98,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w * [xudesheng](https://github.com/xudesheng) * [yusdacra](https://github.com/yusdacra) + ## 0.16.1 - 2021-12-31 - Add back `CtxRef::begin_frame,end_frame` ### Added ⭐ diff --git a/Cargo.lock b/Cargo.lock index 135d1045..3f6d76f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -982,7 +982,7 @@ checksum = "6907e25393cdcc1f4f3f513d9aac1e840eb1cc341a0fccb01171f7d14d10b946" [[package]] name = "eframe" -version = "0.16.0" +version = "0.17.0" dependencies = [ "egui", "egui-winit", @@ -999,7 +999,7 @@ dependencies = [ [[package]] name = "egui" -version = "0.16.1" +version = "0.17.0" dependencies = [ "ahash 0.7.6", "epaint", @@ -1011,7 +1011,7 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.16.0" +version = "0.17.0" dependencies = [ "copypasta", "dark-light", @@ -1027,7 +1027,7 @@ dependencies = [ [[package]] name = "egui_demo_app" -version = "0.16.0" +version = "0.17.0" dependencies = [ "console_error_panic_hook", "eframe", @@ -1038,7 +1038,7 @@ dependencies = [ [[package]] name = "egui_demo_lib" -version = "0.16.0" +version = "0.17.0" dependencies = [ "chrono", "criterion", @@ -1056,7 +1056,7 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.16.0" +version = "0.17.0" dependencies = [ "egui", "image", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "egui_glium" -version = "0.16.0" +version = "0.17.0" dependencies = [ "ahash 0.7.6", "bytemuck", @@ -1081,7 +1081,7 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.16.0" +version = "0.17.0" dependencies = [ "bytemuck", "egui", @@ -1097,7 +1097,7 @@ dependencies = [ [[package]] name = "egui_web" -version = "0.16.0" +version = "0.17.0" dependencies = [ "bytemuck", "egui", @@ -1135,7 +1135,7 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "emath" -version = "0.16.0" +version = "0.17.0" dependencies = [ "bytemuck", "mint", @@ -1199,7 +1199,7 @@ dependencies = [ [[package]] name = "epaint" -version = "0.16.0" +version = "0.17.0" dependencies = [ "ab_glyph", "ahash 0.7.6", @@ -1215,7 +1215,7 @@ dependencies = [ [[package]] name = "epi" -version = "0.16.0" +version = "0.17.0" dependencies = [ "directories-next", "egui", diff --git a/deny.toml b/deny.toml index c58fa9ba..bc2028ef 100644 --- a/deny.toml +++ b/deny.toml @@ -28,10 +28,15 @@ deny = [ ] skip = [ - { name = "time" }, # old version pulled in by unmaintianed crate 'chrono' + { name = "ahash" }, # old version via dark-light + { name = "arrayvec" }, # old version via tiny-skia + { name = "time" }, # old version pulled in by unmaintianed crate 'chrono' + { name = "ttf-parser" }, # different versions pulled in by ab_glyph and usvg ] skip-tree = [ - { name = "eframe", version = "0.16.0" }, + { name = "criterion" }, # dev-dependnecy + { name = "glium" }, # legacy crate, lots of old dependencies + { name = "glutin" }, # legacy crate, lots of old dependencies ] diff --git a/docs/egui_demo_app.js b/docs/egui_demo_app.js index 4e627b80..1d9a2d1b 100644 --- a/docs/egui_demo_app.js +++ b/docs/egui_demo_app.js @@ -212,48 +212,58 @@ function makeMutClosure(arg0, arg1, dtor, f) { return real; } -function __wbg_adapter_30(arg0, arg1) { - wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hedff1e3c1ca6c71c(arg0, arg1); +function __wbg_adapter_28(arg0, arg1) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1a994ac62d7f09ed(retptr, arg0, arg1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } } -function __wbg_adapter_33(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_31(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_36(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_34(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_39(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_37(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_42(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_40(arg0, arg1) { + wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hab0a29b7d3429481(arg0, arg1); } -function __wbg_adapter_45(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_43(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_48(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_46(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_51(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_49(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_54(arg0, arg1) { - wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he78f81eace0d019f(arg0, arg1); +function __wbg_adapter_52(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_57(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1d2f25dc91669030(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_55(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1ad4df80404e66c5(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_60(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h84e1489b515e3492(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_58(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h5cef6584e9ecc7ee(arg0, arg1, addHeapObject(arg2)); } function makeClosure(arg0, arg1, dtor, f) { @@ -277,12 +287,12 @@ function makeClosure(arg0, arg1, dtor, f) { return real; } -function __wbg_adapter_63(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h72e381f5228369dd(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_61(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7a180c79a20cae62(arg0, arg1, addHeapObject(arg2)); } -function __wbg_adapter_66(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h72e381f5228369dd(arg0, arg1, addHeapObject(arg2)); +function __wbg_adapter_64(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7a180c79a20cae62(arg0, arg1, addHeapObject(arg2)); } /** @@ -293,15 +303,21 @@ function __wbg_adapter_66(arg0, arg1, arg2) { * @param {string} canvas_id */ __exports.start = function(canvas_id) { - var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - wasm.start(ptr0, len0); + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.start(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } }; -function getArrayU8FromWasm0(ptr, len) { - return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); -} - function handleError(f, args) { try { return f.apply(this, args); @@ -377,864 +393,972 @@ async function init(input) { var ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }; + imports.wbg.__wbg_log_02e20a3c32305fb7 = function(arg0, arg1) { + try { + console.log(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(arg0, arg1); + } + }; + imports.wbg.__wbg_log_5c7513aa8c164502 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + try { + console.log(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), getStringFromWasm0(arg4, arg5), getStringFromWasm0(arg6, arg7)); + } finally { + wasm.__wbindgen_free(arg0, arg1); + } + }; + imports.wbg.__wbg_mark_abc7631bdced64f0 = function(arg0, arg1) { + performance.mark(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbg_measure_c528ff64085b7146 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + try { + performance.measure(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3)); + } finally { + wasm.__wbindgen_free(arg0, arg1); + wasm.__wbindgen_free(arg2, arg3); + } + }, arguments) }; + imports.wbg.__wbg_new_693216e109162396 = function() { + var ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) { + var ret = getObject(arg1).stack; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) { + try { + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(arg0, arg1); + } + }; imports.wbg.__wbindgen_number_get = function(arg0, arg1) { const obj = getObject(arg1); var ret = typeof(obj) === 'number' ? obj : undefined; getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - var ret = getObject(arg0); - return addHeapObject(ret); - }; imports.wbg.__wbindgen_boolean_get = function(arg0) { const v = getObject(arg0); var ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; return ret; }; - imports.wbg.__wbg_instanceof_WebGl2RenderingContext_56ad96bfac3f5531 = function(arg0) { + imports.wbg.__wbg_instanceof_WebGl2RenderingContext_df519ebc1fd4a55f = function(arg0) { var ret = getObject(arg0) instanceof WebGL2RenderingContext; return ret; }; - imports.wbg.__wbg_drawingBufferWidth_561b8beaef3111f5 = function(arg0) { - var ret = getObject(arg0).drawingBufferWidth; - return ret; - }; - imports.wbg.__wbg_drawingBufferHeight_aa35759c7f962358 = function(arg0) { - var ret = getObject(arg0).drawingBufferHeight; - return ret; - }; - imports.wbg.__wbg_bindVertexArray_52b8b2f5fd93d81d = function(arg0, arg1) { + imports.wbg.__wbg_bindVertexArray_8020efc46272d6b1 = function(arg0, arg1) { getObject(arg0).bindVertexArray(getObject(arg1)); }; - imports.wbg.__wbg_bufferData_bba22fbe5dd1f1d6 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_bufferData_17b90d9499ee7889 = function(arg0, arg1, arg2, arg3) { getObject(arg0).bufferData(arg1 >>> 0, getObject(arg2), arg3 >>> 0); }; - imports.wbg.__wbg_bufferData_794d61d3c392fafd = function(arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).bufferData(arg1 >>> 0, getArrayU8FromWasm0(arg2, arg3), arg4 >>> 0); - }; - imports.wbg.__wbg_createVertexArray_d59135c0a43c410b = function(arg0) { + imports.wbg.__wbg_createVertexArray_ccfd68f784dda58d = function(arg0) { var ret = getObject(arg0).createVertexArray(); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_deleteVertexArray_385874f9e1499a3f = function(arg0, arg1) { - getObject(arg0).deleteVertexArray(getObject(arg1)); - }; - imports.wbg.__wbg_texImage2D_29ea0a7f026e239b = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) { - getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10)); + imports.wbg.__wbg_texImage2D_40c3695cff5564ad = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, getObject(arg9)); }, arguments) }; - imports.wbg.__wbg_activeTexture_0092956fa2eefd8c = function(arg0, arg1) { + imports.wbg.__wbg_texSubImage2D_3225e265581d1641 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + getObject(arg0).texSubImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, getObject(arg9)); + }, arguments) }; + imports.wbg.__wbg_texSubImage2D_b6e8bd62500957ed = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + getObject(arg0).texSubImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9); + }, arguments) }; + imports.wbg.__wbg_activeTexture_e07e910acea70faa = function(arg0, arg1) { getObject(arg0).activeTexture(arg1 >>> 0); }; - imports.wbg.__wbg_attachShader_7faccaa7b5ac28a6 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_attachShader_2e252ab2fda53d9b = function(arg0, arg1, arg2) { getObject(arg0).attachShader(getObject(arg1), getObject(arg2)); }; - imports.wbg.__wbg_bindBuffer_4ece833dd10cac2f = function(arg0, arg1, arg2) { + imports.wbg.__wbg_bindBuffer_612af2c0d1623df9 = function(arg0, arg1, arg2) { getObject(arg0).bindBuffer(arg1 >>> 0, getObject(arg2)); }; - imports.wbg.__wbg_bindFramebuffer_48c4bf8ff82bf7e9 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_bindFramebuffer_f79f98a252b25421 = function(arg0, arg1, arg2) { getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2)); }; - imports.wbg.__wbg_bindTexture_9d8ed0fcd83eb0a9 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_bindTexture_5de299363180ad48 = function(arg0, arg1, arg2) { getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2)); }; - imports.wbg.__wbg_blendFunc_b254bb91838df1dd = function(arg0, arg1, arg2) { - getObject(arg0).blendFunc(arg1 >>> 0, arg2 >>> 0); + imports.wbg.__wbg_blendEquation_3ddbe96827ea563c = function(arg0, arg1) { + getObject(arg0).blendEquation(arg1 >>> 0); }; - imports.wbg.__wbg_clear_4ce66c813d66e77d = function(arg0, arg1) { + imports.wbg.__wbg_blendFuncSeparate_be76c74e24fb8c4b = function(arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).blendFuncSeparate(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4 >>> 0); + }; + imports.wbg.__wbg_clear_4c5eed385310e256 = function(arg0, arg1) { getObject(arg0).clear(arg1 >>> 0); }; - imports.wbg.__wbg_clearColor_71f96fd72a7646a6 = function(arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_clearColor_d9d486c5ff20404c = function(arg0, arg1, arg2, arg3, arg4) { getObject(arg0).clearColor(arg1, arg2, arg3, arg4); }; - imports.wbg.__wbg_compileShader_dd66d66a5a6481f3 = function(arg0, arg1) { + imports.wbg.__wbg_compileShader_e224e94272352503 = function(arg0, arg1) { getObject(arg0).compileShader(getObject(arg1)); }; - imports.wbg.__wbg_createBuffer_5c5caa16032a81b7 = function(arg0) { + imports.wbg.__wbg_createBuffer_564dc1c3c3f058b7 = function(arg0) { var ret = getObject(arg0).createBuffer(); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_createFramebuffer_9818fc04b4a38c18 = function(arg0) { + imports.wbg.__wbg_createFramebuffer_ca860b7155b412f2 = function(arg0) { var ret = getObject(arg0).createFramebuffer(); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_createProgram_32d01a55e144b9fc = function(arg0) { + imports.wbg.__wbg_createProgram_e9fa1d7669773667 = function(arg0) { var ret = getObject(arg0).createProgram(); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_createShader_6e8eed55567fe1a6 = function(arg0, arg1) { + imports.wbg.__wbg_createShader_03233922e9b5ebf2 = function(arg0, arg1) { var ret = getObject(arg0).createShader(arg1 >>> 0); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_createTexture_8f31e7386e22fc37 = function(arg0) { + imports.wbg.__wbg_createTexture_7ee50a5b223f0511 = function(arg0) { var ret = getObject(arg0).createTexture(); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_deleteBuffer_de80b51d8166fddb = function(arg0, arg1) { - getObject(arg0).deleteBuffer(getObject(arg1)); + imports.wbg.__wbg_deleteShader_67c4f4b03b5c074a = function(arg0, arg1) { + getObject(arg0).deleteShader(getObject(arg1)); }; - imports.wbg.__wbg_deleteFramebuffer_5f58ccb548438c57 = function(arg0, arg1) { - getObject(arg0).deleteFramebuffer(getObject(arg1)); - }; - imports.wbg.__wbg_deleteProgram_3ec3c43f2cddde7f = function(arg0, arg1) { - getObject(arg0).deleteProgram(getObject(arg1)); - }; - imports.wbg.__wbg_deleteTexture_a0632c71429795ac = function(arg0, arg1) { + imports.wbg.__wbg_deleteTexture_b4643da89823c0c1 = function(arg0, arg1) { getObject(arg0).deleteTexture(getObject(arg1)); }; - imports.wbg.__wbg_disable_b05e075ae54fa448 = function(arg0, arg1) { + imports.wbg.__wbg_detachShader_c7115572e0c5095c = function(arg0, arg1, arg2) { + getObject(arg0).detachShader(getObject(arg1), getObject(arg2)); + }; + imports.wbg.__wbg_disable_e61fb08d6c7131e4 = function(arg0, arg1) { getObject(arg0).disable(arg1 >>> 0); }; - imports.wbg.__wbg_drawElements_a41bb53d39cd6297 = function(arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_disableVertexAttribArray_4e8dd2973a2f796d = function(arg0, arg1) { + getObject(arg0).disableVertexAttribArray(arg1 >>> 0); + }; + imports.wbg.__wbg_drawElements_8f3cfd28610fd46e = function(arg0, arg1, arg2, arg3, arg4) { getObject(arg0).drawElements(arg1 >>> 0, arg2, arg3 >>> 0, arg4); }; - imports.wbg.__wbg_enable_766e546395da5a5d = function(arg0, arg1) { + imports.wbg.__wbg_enable_8e888a63831a3fe5 = function(arg0, arg1) { getObject(arg0).enable(arg1 >>> 0); }; - imports.wbg.__wbg_enableVertexAttribArray_91da8d3cbe0c2bbd = function(arg0, arg1) { + imports.wbg.__wbg_enableVertexAttribArray_d1b2636395bdaa7a = function(arg0, arg1) { getObject(arg0).enableVertexAttribArray(arg1 >>> 0); }; - imports.wbg.__wbg_framebufferTexture2D_3da41a7f38e2c523 = function(arg0, arg1, arg2, arg3, arg4, arg5) { + imports.wbg.__wbg_framebufferTexture2D_ceadbfd128a6e565 = function(arg0, arg1, arg2, arg3, arg4, arg5) { getObject(arg0).framebufferTexture2D(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4), arg5); }; - imports.wbg.__wbg_getAttribLocation_5d304d390c7273f5 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_getAttribLocation_7f79c73e983e47cd = function(arg0, arg1, arg2, arg3) { var ret = getObject(arg0).getAttribLocation(getObject(arg1), getStringFromWasm0(arg2, arg3)); return ret; }; - imports.wbg.__wbg_getProgramInfoLog_18c849a5fa54e7b1 = function(arg0, arg1, arg2) { - var ret = getObject(arg1).getProgramInfoLog(getObject(arg2)); - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_getProgramParameter_80edd3cfbcf7cf1d = function(arg0, arg1, arg2) { - var ret = getObject(arg0).getProgramParameter(getObject(arg1), arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_getShaderInfoLog_ba1de20c14b6fb63 = function(arg0, arg1, arg2) { - var ret = getObject(arg1).getShaderInfoLog(getObject(arg2)); - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_getShaderParameter_264d9ab5c13ece4d = function(arg0, arg1, arg2) { - var ret = getObject(arg0).getShaderParameter(getObject(arg1), arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_getUniformLocation_77b2d89291f84289 = function(arg0, arg1, arg2, arg3) { - var ret = getObject(arg0).getUniformLocation(getObject(arg1), getStringFromWasm0(arg2, arg3)); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_linkProgram_b84796e37364e5c9 = function(arg0, arg1) { - getObject(arg0).linkProgram(getObject(arg1)); - }; - imports.wbg.__wbg_pixelStorei_a9b9b42ef01616b2 = function(arg0, arg1, arg2) { - getObject(arg0).pixelStorei(arg1 >>> 0, arg2); - }; - imports.wbg.__wbg_scissor_5802aaee71f2eb0e = function(arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).scissor(arg1, arg2, arg3, arg4); - }; - imports.wbg.__wbg_shaderSource_18f45f93c05a8311 = function(arg0, arg1, arg2, arg3) { - getObject(arg0).shaderSource(getObject(arg1), getStringFromWasm0(arg2, arg3)); - }; - imports.wbg.__wbg_texParameteri_c54aab65b2f8cf6d = function(arg0, arg1, arg2, arg3) { - getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3); - }; - imports.wbg.__wbg_uniform1i_e287345af4468e22 = function(arg0, arg1, arg2) { - getObject(arg0).uniform1i(getObject(arg1), arg2); - }; - imports.wbg.__wbg_uniform2f_f8d8e7662e0e0eb6 = function(arg0, arg1, arg2, arg3) { - getObject(arg0).uniform2f(getObject(arg1), arg2, arg3); - }; - imports.wbg.__wbg_useProgram_c2fdf4a953d1128a = function(arg0, arg1) { - getObject(arg0).useProgram(getObject(arg1)); - }; - imports.wbg.__wbg_vertexAttribPointer_76d558694fe81cd7 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { - getObject(arg0).vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6); - }; - imports.wbg.__wbg_viewport_da0901eee69b9909 = function(arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).viewport(arg1, arg2, arg3, arg4); - }; - imports.wbg.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) { - var ret = getObject(arg0) instanceof Window; + imports.wbg.__wbg_getError_a89e4527e1dad18c = function(arg0) { + var ret = getObject(arg0).getError(); return ret; }; - imports.wbg.__wbg_document_1c64944725c0d81d = function(arg0) { - var ret = getObject(arg0).document; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_location_f98ad02632f88c43 = function(arg0) { - var ret = getObject(arg0).location; - return addHeapObject(ret); - }; - imports.wbg.__wbg_navigator_480e592af6ad365b = function(arg0) { - var ret = getObject(arg0).navigator; - return addHeapObject(ret); - }; - imports.wbg.__wbg_innerWidth_ef25c730fca132cf = function() { return handleError(function (arg0) { - var ret = getObject(arg0).innerWidth; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_innerHeight_1b1217a63a77bf61 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).innerHeight; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_devicePixelRatio_d8c3852bb37f76bf = function(arg0) { - var ret = getObject(arg0).devicePixelRatio; - return ret; - }; - imports.wbg.__wbg_performance_947628766699c5bb = function(arg0) { - var ret = getObject(arg0).performance; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_speechSynthesis_c60292416ffe4406 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).speechSynthesis; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_localStorage_6775414303ab5085 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).localStorage; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_matchMedia_b95c474c6db67a60 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).matchMedia(getStringFromWasm0(arg1, arg2)); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_open_5416e4448a959cfa = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - var ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_requestAnimationFrame_71638ca922068239 = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg0).requestAnimationFrame(getObject(arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_fetch_cfe0d1dd786e9cd4 = function(arg0, arg1) { - var ret = getObject(arg0).fetch(getObject(arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_setInterval_ec2d9dc4a54a6566 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).setInterval(getObject(arg1), arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_setTimeout_df66d951b1726b78 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).setTimeout(getObject(arg1), arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_addEventListener_52721772cc0a7f30 = function() { return handleError(function (arg0, arg1, arg2, arg3) { - getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3)); - }, arguments) }; - imports.wbg.__wbg_matches_76fae292b8cd60a6 = function(arg0) { - var ret = getObject(arg0).matches; - return ret; - }; - imports.wbg.__wbg_now_559193109055ebad = function(arg0) { - var ret = getObject(arg0).now(); - return ret; - }; - imports.wbg.__wbg_headers_4764f5445b6a6c89 = function(arg0) { - var ret = getObject(arg0).headers; - return addHeapObject(ret); - }; - imports.wbg.__wbg_newwithstrandinit_9b0fa00478c37287 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_identifier_87ee1c4654593a75 = function(arg0) { - var ret = getObject(arg0).identifier; - return ret; - }; - imports.wbg.__wbg_pageX_e47dc88281930930 = function(arg0) { - var ret = getObject(arg0).pageX; - return ret; - }; - imports.wbg.__wbg_pageY_b6b579adcea2948f = function(arg0) { - var ret = getObject(arg0).pageY; - return ret; - }; - imports.wbg.__wbg_force_c47d39a3ad56c12f = function(arg0) { - var ret = getObject(arg0).force; - return ret; - }; - imports.wbg.__wbg_instanceof_HtmlInputElement_8cafe5f30dfdb6bc = function(arg0) { - var ret = getObject(arg0) instanceof HTMLInputElement; - return ret; - }; - imports.wbg.__wbg_setautofocus_5d3aec51de5021e2 = function(arg0, arg1) { - getObject(arg0).autofocus = arg1 !== 0; - }; - imports.wbg.__wbg_setsize_9ec16303ce038acb = function(arg0, arg1) { - getObject(arg0).size = arg1 >>> 0; - }; - imports.wbg.__wbg_value_0627d4b1c27534e6 = function(arg0, arg1) { - var ret = getObject(arg1).value; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_setvalue_2459f62386b6967f = function(arg0, arg1, arg2) { - getObject(arg0).value = getStringFromWasm0(arg1, arg2); - }; - imports.wbg.__wbg_items_0e0d8664cb0c227c = function(arg0) { - var ret = getObject(arg0).items; - return addHeapObject(ret); - }; - imports.wbg.__wbg_files_d148fafe4f8ef096 = function(arg0) { - var ret = getObject(arg0).files; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_getData_a4934f84b4074e8b = function() { return handleError(function (arg0, arg1, arg2, arg3) { - var ret = getObject(arg1).getData(getStringFromWasm0(arg2, arg3)); - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_length_b3892c671bcff0a9 = function(arg0) { - var ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_get_eb708b1d3ad92ce5 = function(arg0, arg1) { - var ret = getObject(arg0)[arg1 >>> 0]; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_type_7a49279491e15d0a = function(arg0, arg1) { - var ret = getObject(arg1).type; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_preventDefault_9866c9fd51eecfb6 = function(arg0) { - getObject(arg0).preventDefault(); - }; - imports.wbg.__wbg_stopPropagation_ae76be6b0f664ee8 = function(arg0) { - getObject(arg0).stopPropagation(); - }; - imports.wbg.__wbg_length_a2870b8b80e120c3 = function(arg0) { - var ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_get_b84d80d476cf15e4 = function(arg0, arg1) { - var ret = getObject(arg0)[arg1 >>> 0]; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_speaking_6ee7e15af03f4ade = function(arg0) { - var ret = getObject(arg0).speaking; - return ret; - }; - imports.wbg.__wbg_cancel_db8fc22aeb60a627 = function(arg0) { - getObject(arg0).cancel(); - }; - imports.wbg.__wbg_speak_a2c1dfdf7b0927fc = function(arg0, arg1) { - getObject(arg0).speak(getObject(arg1)); - }; - imports.wbg.__wbg_length_1d27563e3515722e = function(arg0) { - var ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_item_a23b382195352a8a = function(arg0, arg1) { - var ret = getObject(arg0).item(arg1 >>> 0); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_get_20b719b18767c76e = function(arg0, arg1) { - var ret = getObject(arg0)[arg1 >>> 0]; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_name_6af1a38f3edc1522 = function(arg0, arg1) { - var ret = getObject(arg1).name; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_lastModified_c61609c3c6a0bd88 = function(arg0) { - var ret = getObject(arg0).lastModified; - return ret; - }; - imports.wbg.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(arg0) { - var ret = getObject(arg0) instanceof HTMLCanvasElement; - return ret; - }; - imports.wbg.__wbg_width_555f63ab09ba7d3f = function(arg0) { - var ret = getObject(arg0).width; - return ret; - }; - imports.wbg.__wbg_setwidth_c1a7061891b71f25 = function(arg0, arg1) { - getObject(arg0).width = arg1 >>> 0; - }; - imports.wbg.__wbg_height_7153faec70fbaf7b = function(arg0) { - var ret = getObject(arg0).height; - return ret; - }; - imports.wbg.__wbg_setheight_88894b05710ff752 = function(arg0, arg1) { - getObject(arg0).height = arg1 >>> 0; - }; - imports.wbg.__wbg_getContext_f701d0231ae22393 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2)); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_keyCode_490ed69472addfdc = function(arg0) { - var ret = getObject(arg0).keyCode; - return ret; - }; - imports.wbg.__wbg_altKey_3dcb50d5afbc5036 = function(arg0) { - var ret = getObject(arg0).altKey; - return ret; - }; - imports.wbg.__wbg_ctrlKey_fb62ba10b63b34a4 = function(arg0) { - var ret = getObject(arg0).ctrlKey; - return ret; - }; - imports.wbg.__wbg_shiftKey_bd2875540e5db840 = function(arg0) { - var ret = getObject(arg0).shiftKey; - return ret; - }; - imports.wbg.__wbg_metaKey_94ca09e07f21f240 = function(arg0) { - var ret = getObject(arg0).metaKey; - return ret; - }; - imports.wbg.__wbg_isComposing_d05ebca75d81bc30 = function(arg0) { - var ret = getObject(arg0).isComposing; - return ret; - }; - imports.wbg.__wbg_key_10dcaa4bb6d5449f = function(arg0, arg1) { - var ret = getObject(arg1).key; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_clipboard_3dff7cff084c4be2 = function(arg0) { - var ret = getObject(arg0).clipboard; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_userAgent_bdd46cceef222f52 = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg1).userAgent; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_touches_3bcd168150040d19 = function(arg0) { - var ret = getObject(arg0).touches; - return addHeapObject(ret); - }; - imports.wbg.__wbg_changedTouches_d84714496e7f4712 = function(arg0) { - var ret = getObject(arg0).changedTouches; - return addHeapObject(ret); - }; - imports.wbg.__wbg_size_3d49b94127cdd6ed = function(arg0) { - var ret = getObject(arg0).size; - return ret; - }; - imports.wbg.__wbg_arrayBuffer_e857fb358de5f814 = function(arg0) { - var ret = getObject(arg0).arrayBuffer(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_width_d55d3698a2514ec1 = function(arg0) { - var ret = getObject(arg0).width; - return ret; - }; - imports.wbg.__wbg_height_df08a93b45ce76ec = function(arg0) { - var ret = getObject(arg0).height; - return ret; - }; - imports.wbg.__wbg_top_3946f8347860b55c = function(arg0) { - var ret = getObject(arg0).top; - return ret; - }; - imports.wbg.__wbg_left_31cce57341292712 = function(arg0) { - var ret = getObject(arg0).left; - return ret; - }; - imports.wbg.__wbg_appendChild_d318db34c4559916 = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg0).appendChild(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_error_da56814eacf0ed82 = function(arg0) { - var ret = getObject(arg0).error; - return addHeapObject(ret); - }; - imports.wbg.__wbg_body_78ae4fd43b446013 = function(arg0) { - var ret = getObject(arg0).body; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_createElement_86c152812a141a62 = function() { return handleError(function (arg0, arg1, arg2) { - var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_getElementById_f3e94458ce77f0d0 = function(arg0, arg1, arg2) { - var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_setid_681bb5a14c3d5850 = function(arg0, arg1, arg2) { - getObject(arg0).id = getStringFromWasm0(arg1, arg2); - }; - imports.wbg.__wbg_scrollLeft_e79152b1f5d86671 = function(arg0) { - var ret = getObject(arg0).scrollLeft; - return ret; - }; - imports.wbg.__wbg_clientWidth_4d9e01af2b5b9f21 = function(arg0) { - var ret = getObject(arg0).clientWidth; - return ret; - }; - imports.wbg.__wbg_clientHeight_87c209f0cacf2e97 = function(arg0) { - var ret = getObject(arg0).clientHeight; - return ret; - }; - imports.wbg.__wbg_getBoundingClientRect_2fba0402ea2a6ec4 = function(arg0) { - var ret = getObject(arg0).getBoundingClientRect(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_WebGlRenderingContext_101b938bec1286a3 = function(arg0) { - var ret = getObject(arg0) instanceof WebGLRenderingContext; - return ret; - }; - imports.wbg.__wbg_drawingBufferWidth_8b0c2b31d9d6eee7 = function(arg0) { - var ret = getObject(arg0).drawingBufferWidth; - return ret; - }; - imports.wbg.__wbg_drawingBufferHeight_f62678018bab567c = function(arg0) { - var ret = getObject(arg0).drawingBufferHeight; - return ret; - }; - imports.wbg.__wbg_bufferData_6beb22ecb30c1316 = function(arg0, arg1, arg2, arg3) { - getObject(arg0).bufferData(arg1 >>> 0, getObject(arg2), arg3 >>> 0); - }; - imports.wbg.__wbg_bufferData_2f9be23b37e5a1a4 = function(arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).bufferData(arg1 >>> 0, getArrayU8FromWasm0(arg2, arg3), arg4 >>> 0); - }; - imports.wbg.__wbg_texImage2D_712c56fe5a9825ed = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) { - getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10)); - }, arguments) }; - imports.wbg.__wbg_activeTexture_b34aca0c2110966c = function(arg0, arg1) { - getObject(arg0).activeTexture(arg1 >>> 0); - }; - imports.wbg.__wbg_attachShader_eaa824fd5b37a770 = function(arg0, arg1, arg2) { - getObject(arg0).attachShader(getObject(arg1), getObject(arg2)); - }; - imports.wbg.__wbg_bindBuffer_2ca7e1c18819ecb2 = function(arg0, arg1, arg2) { - getObject(arg0).bindBuffer(arg1 >>> 0, getObject(arg2)); - }; - imports.wbg.__wbg_bindFramebuffer_c9f468afa9d42a5f = function(arg0, arg1, arg2) { - getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2)); - }; - imports.wbg.__wbg_bindTexture_edd827f3dba6038e = function(arg0, arg1, arg2) { - getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2)); - }; - imports.wbg.__wbg_blendFunc_d5ab9f0ff5a40a48 = function(arg0, arg1, arg2) { - getObject(arg0).blendFunc(arg1 >>> 0, arg2 >>> 0); - }; - imports.wbg.__wbg_clear_da26620d46f0a11a = function(arg0, arg1) { - getObject(arg0).clear(arg1 >>> 0); - }; - imports.wbg.__wbg_clearColor_cbf22f8faa5a52c1 = function(arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).clearColor(arg1, arg2, arg3, arg4); - }; - imports.wbg.__wbg_compileShader_8fb70a472f32552c = function(arg0, arg1) { - getObject(arg0).compileShader(getObject(arg1)); - }; - imports.wbg.__wbg_createBuffer_4802e2f0e1b1acdf = function(arg0) { - var ret = getObject(arg0).createBuffer(); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_createFramebuffer_0157699cdc720b46 = function(arg0) { - var ret = getObject(arg0).createFramebuffer(); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_createProgram_b1d94f4c7554d3a1 = function(arg0) { - var ret = getObject(arg0).createProgram(); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_createShader_da09e167692f0dc7 = function(arg0, arg1) { - var ret = getObject(arg0).createShader(arg1 >>> 0); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_createTexture_bafc7c08393ae59d = function(arg0) { - var ret = getObject(arg0).createTexture(); - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }; - imports.wbg.__wbg_deleteBuffer_9c31f3452ba32db1 = function(arg0, arg1) { - getObject(arg0).deleteBuffer(getObject(arg1)); - }; - imports.wbg.__wbg_deleteFramebuffer_0f43513bd6c6d986 = function(arg0, arg1) { - getObject(arg0).deleteFramebuffer(getObject(arg1)); - }; - imports.wbg.__wbg_deleteProgram_a2c849932f79e7af = function(arg0, arg1) { - getObject(arg0).deleteProgram(getObject(arg1)); - }; - imports.wbg.__wbg_deleteTexture_82d755a5ac828346 = function(arg0, arg1) { - getObject(arg0).deleteTexture(getObject(arg1)); - }; - imports.wbg.__wbg_disable_b07faddb7d04349f = function(arg0, arg1) { - getObject(arg0).disable(arg1 >>> 0); - }; - imports.wbg.__wbg_drawElements_8e8af4b6757fedce = function(arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).drawElements(arg1 >>> 0, arg2, arg3 >>> 0, arg4); - }; - imports.wbg.__wbg_enable_d3d210aeb08eff52 = function(arg0, arg1) { - getObject(arg0).enable(arg1 >>> 0); - }; - imports.wbg.__wbg_enableVertexAttribArray_d539e547495bea44 = function(arg0, arg1) { - getObject(arg0).enableVertexAttribArray(arg1 >>> 0); - }; - imports.wbg.__wbg_framebufferTexture2D_923c6fc6645661bc = function(arg0, arg1, arg2, arg3, arg4, arg5) { - getObject(arg0).framebufferTexture2D(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4), arg5); - }; - imports.wbg.__wbg_getAttribLocation_706a0beabcdaebcf = function(arg0, arg1, arg2, arg3) { - var ret = getObject(arg0).getAttribLocation(getObject(arg1), getStringFromWasm0(arg2, arg3)); - return ret; - }; - imports.wbg.__wbg_getExtension_045789240c50a108 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_getExtension_aa055f67731688a2 = function() { return handleError(function (arg0, arg1, arg2) { var ret = getObject(arg0).getExtension(getStringFromWasm0(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_getParameter_6412bd2d0602696d = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_getParameter_ecc6d50165f87cce = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg0).getParameter(arg1 >>> 0); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_getProgramInfoLog_b60e82d52c200cbd = function(arg0, arg1, arg2) { + imports.wbg.__wbg_getProgramInfoLog_dbd8d8cedcc8cdcc = function(arg0, arg1, arg2) { var ret = getObject(arg1).getProgramInfoLog(getObject(arg2)); var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_getProgramParameter_229c193895936bbe = function(arg0, arg1, arg2) { + imports.wbg.__wbg_getProgramParameter_4b9d43902599c2d2 = function(arg0, arg1, arg2) { var ret = getObject(arg0).getProgramParameter(getObject(arg1), arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_getShaderInfoLog_ba51160c01b98360 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_getShaderInfoLog_5aab05280bd0fe1b = function(arg0, arg1, arg2) { var ret = getObject(arg1).getShaderInfoLog(getObject(arg2)); var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_getShaderParameter_dadc55c10928575d = function(arg0, arg1, arg2) { + imports.wbg.__wbg_getShaderParameter_e5f7e371d4eec000 = function(arg0, arg1, arg2) { var ret = getObject(arg0).getShaderParameter(getObject(arg1), arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_getUniformLocation_c3b3570b4632cc5c = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_getSupportedExtensions_9129f695af4c7c3a = function(arg0) { + var ret = getObject(arg0).getSupportedExtensions(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_getUniformLocation_9541edb0d39d1646 = function(arg0, arg1, arg2, arg3) { var ret = getObject(arg0).getUniformLocation(getObject(arg1), getStringFromWasm0(arg2, arg3)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_linkProgram_7080c84b0233cea2 = function(arg0, arg1) { + imports.wbg.__wbg_linkProgram_116382e2dc17af64 = function(arg0, arg1) { getObject(arg0).linkProgram(getObject(arg1)); }; - imports.wbg.__wbg_pixelStorei_3cd96723ae22a5c6 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_pixelStorei_ea8cf13cf2f14a47 = function(arg0, arg1, arg2) { getObject(arg0).pixelStorei(arg1 >>> 0, arg2); }; - imports.wbg.__wbg_scissor_35fe98c7da06091c = function(arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_scissor_826e824cb569eebc = function(arg0, arg1, arg2, arg3, arg4) { getObject(arg0).scissor(arg1, arg2, arg3, arg4); }; - imports.wbg.__wbg_shaderSource_67b991301db003d0 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_shaderSource_0066bb6817bf9e88 = function(arg0, arg1, arg2, arg3) { getObject(arg0).shaderSource(getObject(arg1), getStringFromWasm0(arg2, arg3)); }; - imports.wbg.__wbg_texParameteri_bd724f6a5ad0cbbc = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_texParameteri_52fb3e85a6d2c636 = function(arg0, arg1, arg2, arg3) { getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3); }; - imports.wbg.__wbg_uniform1i_0811c29c0eebe191 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_uniform1i_a6ce351ee8cef296 = function(arg0, arg1, arg2) { getObject(arg0).uniform1i(getObject(arg1), arg2); }; - imports.wbg.__wbg_uniform2f_c4c110dee7f069e7 = function(arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_uniform2f_84c79c4f8bb2428e = function(arg0, arg1, arg2, arg3) { getObject(arg0).uniform2f(getObject(arg1), arg2, arg3); }; - imports.wbg.__wbg_useProgram_b72b0bfcbc720fa9 = function(arg0, arg1) { + imports.wbg.__wbg_useProgram_de22d1e01c430663 = function(arg0, arg1) { getObject(arg0).useProgram(getObject(arg1)); }; - imports.wbg.__wbg_vertexAttribPointer_b5cb524c6fe9eec8 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + imports.wbg.__wbg_vertexAttribPointer_4e139167926d5080 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { getObject(arg0).vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6); }; - imports.wbg.__wbg_viewport_89af3aceb7036a2c = function(arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_viewport_caffbaa3e8b9568b = function(arg0, arg1, arg2, arg3, arg4) { getObject(arg0).viewport(arg1, arg2, arg3, arg4); }; - imports.wbg.__wbg_error_cc38ce2b4b661e1d = function(arg0) { - console.error(getObject(arg0)); - }; - imports.wbg.__wbg_log_3445347661d4505e = function(arg0) { - console.log(getObject(arg0)); - }; - imports.wbg.__wbg_warn_5ec7c7c02d0b3841 = function(arg0) { - console.warn(getObject(arg0)); - }; - imports.wbg.__wbg_scrollTop_14114fee3506489f = function(arg0) { - var ret = getObject(arg0).scrollTop; + imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) { + var ret = getObject(arg0) instanceof Window; return ret; }; - imports.wbg.__wbg_hidden_cf2bd9859a26899c = function(arg0) { - var ret = getObject(arg0).hidden; - return ret; + imports.wbg.__wbg_document_5edd43643d1060d9 = function(arg0) { + var ret = getObject(arg0).document; + return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_sethidden_8e35dd2030c5f20a = function(arg0, arg1) { - getObject(arg0).hidden = arg1 !== 0; - }; - imports.wbg.__wbg_style_c88e323890d3a091 = function(arg0) { - var ret = getObject(arg0).style; + imports.wbg.__wbg_location_11472bb76bf5bbca = function(arg0) { + var ret = getObject(arg0).location; return addHeapObject(ret); }; - imports.wbg.__wbg_offsetTop_83b2934370041fae = function(arg0) { - var ret = getObject(arg0).offsetTop; - return ret; + imports.wbg.__wbg_navigator_0e0588c949560476 = function(arg0) { + var ret = getObject(arg0).navigator; + return addHeapObject(ret); }; - imports.wbg.__wbg_offsetLeft_d6d050965faa87a8 = function(arg0) { - var ret = getObject(arg0).offsetLeft; - return ret; - }; - imports.wbg.__wbg_offsetWidth_69cd6669725b154f = function(arg0) { - var ret = getObject(arg0).offsetWidth; - return ret; - }; - imports.wbg.__wbg_blur_0bae1ed9ffb0b918 = function() { return handleError(function (arg0) { - getObject(arg0).blur(); + imports.wbg.__wbg_innerWidth_405786923c1d2641 = function() { return handleError(function (arg0) { + var ret = getObject(arg0).innerWidth; + return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_focus_00530e359f44fc6e = function() { return handleError(function (arg0) { - getObject(arg0).focus(); + imports.wbg.__wbg_innerHeight_25d3be0d129329c3 = function() { return handleError(function (arg0) { + var ret = getObject(arg0).innerHeight; + return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_setProperty_1460c660bc329763 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); - }, arguments) }; - imports.wbg.__wbg_hash_0fff5255cf3c317c = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg1).hash; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_clientX_97ff0f5c7b19e687 = function(arg0) { - var ret = getObject(arg0).clientX; + imports.wbg.__wbg_devicePixelRatio_9632545370d525ae = function(arg0) { + var ret = getObject(arg0).devicePixelRatio; return ret; }; - imports.wbg.__wbg_clientY_cacd4a7e44b9719b = function(arg0) { - var ret = getObject(arg0).clientY; - return ret; + imports.wbg.__wbg_performance_bbca4ccfaef860b2 = function(arg0) { + var ret = getObject(arg0).performance; + return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_ctrlKey_9761d22fa42f09c0 = function(arg0) { - var ret = getObject(arg0).ctrlKey; - return ret; - }; - imports.wbg.__wbg_metaKey_e6b9e0aa35aa2974 = function(arg0) { - var ret = getObject(arg0).metaKey; - return ret; - }; - imports.wbg.__wbg_button_a02c0467d38e8338 = function(arg0) { - var ret = getObject(arg0).button; - return ret; - }; - imports.wbg.__wbg_getItem_77fb9d4666f3b93a = function() { return handleError(function (arg0, arg1, arg2, arg3) { - var ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; + imports.wbg.__wbg_speechSynthesis_b2674a6ce67b99ad = function() { return handleError(function (arg0) { + var ret = getObject(arg0).speechSynthesis; + return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_setItem_b0c4561489dffecd = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + imports.wbg.__wbg_localStorage_2b7091e6919605e2 = function() { return handleError(function (arg0) { + var ret = getObject(arg0).localStorage; + return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_data_dbff09eb89176161 = function(arg0, arg1) { + imports.wbg.__wbg_matchMedia_646cf522f15a60a9 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = getObject(arg0).matchMedia(getStringFromWasm0(arg1, arg2)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_open_67fbcd7373a90ddc = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_requestAnimationFrame_0c71cd3c6779a371 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg0).requestAnimationFrame(getObject(arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_fetch_427498e0ccea81f4 = function(arg0, arg1) { + var ret = getObject(arg0).fetch(getObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_setInterval_fcb622396840b607 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = getObject(arg0).setInterval(getObject(arg1), arg2); + return ret; + }, arguments) }; + imports.wbg.__wbg_setTimeout_1c75092906446b91 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = getObject(arg0).setTimeout(getObject(arg1), arg2); + return ret; + }, arguments) }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + var ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_data_9562112603a9aa89 = function(arg0, arg1) { var ret = getObject(arg1).data; var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_type_a6fcda966902940d = function(arg0, arg1) { + imports.wbg.__wbg_type_8bc3e57acd2158c9 = function(arg0, arg1) { var ret = getObject(arg1).type; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_set_5357fedb30848723 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_set_f9448486a94c9aef = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); }, arguments) }; - imports.wbg.__wbg_setvolume_44690b04c6d36880 = function(arg0, arg1) { + imports.wbg.__wbg_bindVertexArrayOES_4364f11e81712180 = function(arg0, arg1) { + getObject(arg0).bindVertexArrayOES(getObject(arg1)); + }; + imports.wbg.__wbg_createVertexArrayOES_54cc0b7c450f4662 = function(arg0) { + var ret = getObject(arg0).createVertexArrayOES(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_setvolume_1f2d6904dfdf4626 = function(arg0, arg1) { getObject(arg0).volume = arg1; }; - imports.wbg.__wbg_setrate_d7dded444361b3d7 = function(arg0, arg1) { + imports.wbg.__wbg_setrate_d8f68fa10eeb7dbb = function(arg0, arg1) { getObject(arg0).rate = arg1; }; - imports.wbg.__wbg_setpitch_43555959c1427b9f = function(arg0, arg1) { + imports.wbg.__wbg_setpitch_7cc80b45cc0633c7 = function(arg0, arg1) { getObject(arg0).pitch = arg1; }; - imports.wbg.__wbg_setonstart_69c389399994b82f = function(arg0, arg1) { + imports.wbg.__wbg_setonstart_fab3ebffcb3dc24f = function(arg0, arg1) { getObject(arg0).onstart = getObject(arg1); }; - imports.wbg.__wbg_setonend_e5383b79c37801e0 = function(arg0, arg1) { + imports.wbg.__wbg_setonend_fff35a6f78e430f4 = function(arg0, arg1) { getObject(arg0).onend = getObject(arg1); }; - imports.wbg.__wbg_setonerror_9a2a8daff49cf41b = function(arg0, arg1) { + imports.wbg.__wbg_setonerror_ec0f8ed48489bd83 = function(arg0, arg1) { getObject(arg0).onerror = getObject(arg1); }; - imports.wbg.__wbg_newwithtext_c86b8374216fcadc = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_newwithtext_b63d82923fd41338 = function() { return handleError(function (arg0, arg1) { var ret = new SpeechSynthesisUtterance(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_deltaX_8cfc6cd15e97d97c = function(arg0) { + imports.wbg.__wbg_deltaX_df228181f4d1a561 = function(arg0) { var ret = getObject(arg0).deltaX; return ret; }; - imports.wbg.__wbg_deltaY_080604c20160c0e8 = function(arg0) { + imports.wbg.__wbg_deltaY_afa6edde136e1500 = function(arg0) { var ret = getObject(arg0).deltaY; return ret; }; - imports.wbg.__wbg_deltaMode_c5ec1ee518ea0a08 = function(arg0) { + imports.wbg.__wbg_deltaMode_ed9d7974a0c11323 = function(arg0) { var ret = getObject(arg0).deltaMode; return ret; }; - imports.wbg.__wbg_writeText_3b86a6dbc18b261b = function(arg0, arg1, arg2) { - var ret = getObject(arg0).writeText(getStringFromWasm0(arg1, arg2)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_clipboardData_d717f7cf398c0dd9 = function(arg0) { + imports.wbg.__wbg_clipboardData_702911c63c2dd54e = function(arg0) { var ret = getObject(arg0).clipboardData; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_dataTransfer_ebba35c1049e694f = function(arg0) { + imports.wbg.__wbg_dataTransfer_bc4c0501385a0c8e = function(arg0) { var ret = getObject(arg0).dataTransfer; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_instanceof_Response_e1b11afbefa5b563 = function(arg0) { + imports.wbg.__wbg_instanceof_Response_ea36d565358a42f7 = function(arg0) { var ret = getObject(arg0) instanceof Response; return ret; }; - imports.wbg.__wbg_url_50e0bdb6051741be = function(arg0, arg1) { + imports.wbg.__wbg_url_6e564c9e212456f8 = function(arg0, arg1) { var ret = getObject(arg1).url; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_status_6d8bb444ddc5a7b2 = function(arg0) { + imports.wbg.__wbg_status_3a55bb50e744b834 = function(arg0) { var ret = getObject(arg0).status; return ret; }; - imports.wbg.__wbg_ok_270f6d403efe7e7b = function(arg0) { + imports.wbg.__wbg_ok_23eb4786bc6e94e7 = function(arg0) { var ret = getObject(arg0).ok; return ret; }; - imports.wbg.__wbg_statusText_97740db9b8bb12e3 = function(arg0, arg1) { + imports.wbg.__wbg_statusText_a3f3d92b5ddca585 = function(arg0, arg1) { var ret = getObject(arg1).statusText; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_headers_5ffa990806e04cfc = function(arg0) { + imports.wbg.__wbg_headers_e4204c6775f7b3b4 = function(arg0) { var ret = getObject(arg0).headers; return addHeapObject(ret); }; - imports.wbg.__wbg_arrayBuffer_b8937ed04beb0d36 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_arrayBuffer_0e2a43f68a8b3e49 = function() { return handleError(function (arg0) { var ret = getObject(arg0).arrayBuffer(); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_get_67189fe0b323d288 = function(arg0, arg1) { + imports.wbg.__wbg_writeText_6267af08021f3e64 = function(arg0, arg1, arg2) { + var ret = getObject(arg0).writeText(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_addEventListener_6bdba88519fdc1c9 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_matches_a375878271bc2ba5 = function(arg0) { + var ret = getObject(arg0).matches; + return ret; + }; + imports.wbg.__wbg_identifier_afa8b01d4d901685 = function(arg0) { + var ret = getObject(arg0).identifier; + return ret; + }; + imports.wbg.__wbg_pageX_e0c8221ecfdb73d0 = function(arg0) { + var ret = getObject(arg0).pageX; + return ret; + }; + imports.wbg.__wbg_pageY_32100ad7039a744e = function(arg0) { + var ret = getObject(arg0).pageY; + return ret; + }; + imports.wbg.__wbg_force_8e51e1fec066aade = function(arg0) { + var ret = getObject(arg0).force; + return ret; + }; + imports.wbg.__wbg_instanceof_HtmlInputElement_8969541a2a0bded0 = function(arg0) { + var ret = getObject(arg0) instanceof HTMLInputElement; + return ret; + }; + imports.wbg.__wbg_setautofocus_a2ae37091dfbe4af = function(arg0, arg1) { + getObject(arg0).autofocus = arg1 !== 0; + }; + imports.wbg.__wbg_setsize_90d1034a7a757a50 = function(arg0, arg1) { + getObject(arg0).size = arg1 >>> 0; + }; + imports.wbg.__wbg_value_fc1c354d1a0e9714 = function(arg0, arg1) { + var ret = getObject(arg1).value; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_setvalue_ce4a23f487065c07 = function(arg0, arg1, arg2) { + getObject(arg0).value = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_length_41b205f6892bf9d9 = function(arg0) { + var ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_get_bdec89fd60d07530 = function(arg0, arg1) { + var ret = getObject(arg0)[arg1 >>> 0]; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_now_5fa0ca001e042f8a = function(arg0) { + var ret = getObject(arg0).now(); + return ret; + }; + imports.wbg.__wbg_headers_1a60dec7fbd28a3b = function(arg0) { + var ret = getObject(arg0).headers; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithstrandinit_c07f0662ece15bc6 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_speaking_3e6ccf3668029ac5 = function(arg0) { + var ret = getObject(arg0).speaking; + return ret; + }; + imports.wbg.__wbg_cancel_85040548807aa10f = function(arg0) { + getObject(arg0).cancel(); + }; + imports.wbg.__wbg_speak_907bd548bebdbbf2 = function(arg0, arg1) { + getObject(arg0).speak(getObject(arg1)); + }; + imports.wbg.__wbg_items_d571f433ef73ee49 = function(arg0) { + var ret = getObject(arg0).items; + return addHeapObject(ret); + }; + imports.wbg.__wbg_files_a4192b4f5967317b = function(arg0) { + var ret = getObject(arg0).files; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_getData_3a1069aff0f72f76 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + var ret = getObject(arg1).getData(getStringFromWasm0(arg2, arg3)); + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_type_e32f387f5584c765 = function(arg0, arg1) { + var ret = getObject(arg1).type; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_preventDefault_fa00541ff125b78c = function(arg0) { + getObject(arg0).preventDefault(); + }; + imports.wbg.__wbg_stopPropagation_da586180676fa914 = function(arg0) { + getObject(arg0).stopPropagation(); + }; + imports.wbg.__wbg_name_9a61dbbdbfb2d0de = function(arg0, arg1) { + var ret = getObject(arg1).name; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_lastModified_0de23a8c5214f2fb = function(arg0) { + var ret = getObject(arg0).lastModified; + return ret; + }; + imports.wbg.__wbg_length_a2882c668bdf6488 = function(arg0) { + var ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_get_1c01a7682a9775bb = function(arg0, arg1) { + var ret = getObject(arg0)[arg1 >>> 0]; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_keyCode_8a05b1390fced3c8 = function(arg0) { + var ret = getObject(arg0).keyCode; + return ret; + }; + imports.wbg.__wbg_altKey_773e7f8151c49bb1 = function(arg0) { + var ret = getObject(arg0).altKey; + return ret; + }; + imports.wbg.__wbg_ctrlKey_8c7ff99be598479e = function(arg0) { + var ret = getObject(arg0).ctrlKey; + return ret; + }; + imports.wbg.__wbg_shiftKey_894b631364d8db13 = function(arg0) { + var ret = getObject(arg0).shiftKey; + return ret; + }; + imports.wbg.__wbg_metaKey_99a7d3732e1b7856 = function(arg0) { + var ret = getObject(arg0).metaKey; + return ret; + }; + imports.wbg.__wbg_isComposing_b892666abf384da9 = function(arg0) { + var ret = getObject(arg0).isComposing; + return ret; + }; + imports.wbg.__wbg_key_7f10b1291a923361 = function(arg0, arg1) { + var ret = getObject(arg1).key; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_length_01a613025b5ffd74 = function(arg0) { + var ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_item_b192ab411bbfbb09 = function(arg0, arg1) { + var ret = getObject(arg0).item(arg1 >>> 0); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_get_a765dab923455e0d = function(arg0, arg1) { + var ret = getObject(arg0)[arg1 >>> 0]; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_body_7538539844356c1c = function(arg0) { + var ret = getObject(arg0).body; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_createElement_d017b8d2af99bab9 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getElementById_b30e88aff96f66a1 = function(arg0, arg1, arg2) { + var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_WebGlRenderingContext_2be4c068bf5f8362 = function(arg0) { + var ret = getObject(arg0) instanceof WebGLRenderingContext; + return ret; + }; + imports.wbg.__wbg_bufferData_85d635f32a990208 = function(arg0, arg1, arg2, arg3) { + getObject(arg0).bufferData(arg1 >>> 0, getObject(arg2), arg3 >>> 0); + }; + imports.wbg.__wbg_texImage2D_16ff123798c82f60 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, getObject(arg9)); + }, arguments) }; + imports.wbg.__wbg_texSubImage2D_d907a4c940fd6e41 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + getObject(arg0).texSubImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, getObject(arg9)); + }, arguments) }; + imports.wbg.__wbg_activeTexture_74ed11a5c5d5af90 = function(arg0, arg1) { + getObject(arg0).activeTexture(arg1 >>> 0); + }; + imports.wbg.__wbg_attachShader_55dbe770f3ee32ca = function(arg0, arg1, arg2) { + getObject(arg0).attachShader(getObject(arg1), getObject(arg2)); + }; + imports.wbg.__wbg_bindBuffer_29d52e7bc48650c3 = function(arg0, arg1, arg2) { + getObject(arg0).bindBuffer(arg1 >>> 0, getObject(arg2)); + }; + imports.wbg.__wbg_bindFramebuffer_bd35ddd23765c7b6 = function(arg0, arg1, arg2) { + getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2)); + }; + imports.wbg.__wbg_bindTexture_198c816345baca83 = function(arg0, arg1, arg2) { + getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2)); + }; + imports.wbg.__wbg_blendEquation_09d56f3be6f914f5 = function(arg0, arg1) { + getObject(arg0).blendEquation(arg1 >>> 0); + }; + imports.wbg.__wbg_blendFuncSeparate_494b1dae028cb9a9 = function(arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).blendFuncSeparate(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, arg4 >>> 0); + }; + imports.wbg.__wbg_clear_2af1271959ec83d7 = function(arg0, arg1) { + getObject(arg0).clear(arg1 >>> 0); + }; + imports.wbg.__wbg_clearColor_51c4f69c743c3252 = function(arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).clearColor(arg1, arg2, arg3, arg4); + }; + imports.wbg.__wbg_compileShader_3b5f9ef4c67a0777 = function(arg0, arg1) { + getObject(arg0).compileShader(getObject(arg1)); + }; + imports.wbg.__wbg_createBuffer_c40f37e1348bb91f = function(arg0) { + var ret = getObject(arg0).createBuffer(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_createFramebuffer_410b12a5cc5a8f13 = function(arg0) { + var ret = getObject(arg0).createFramebuffer(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_createProgram_245520da1fb9e47b = function(arg0) { + var ret = getObject(arg0).createProgram(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_createShader_4d8818a13cb825b3 = function(arg0, arg1) { + var ret = getObject(arg0).createShader(arg1 >>> 0); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_createTexture_f3a6a715d6bada45 = function(arg0) { + var ret = getObject(arg0).createTexture(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_deleteShader_e4f5a1da4d9c84c4 = function(arg0, arg1) { + getObject(arg0).deleteShader(getObject(arg1)); + }; + imports.wbg.__wbg_deleteTexture_9159fb5927ed32c0 = function(arg0, arg1) { + getObject(arg0).deleteTexture(getObject(arg1)); + }; + imports.wbg.__wbg_detachShader_32e4b718f0a63080 = function(arg0, arg1, arg2) { + getObject(arg0).detachShader(getObject(arg1), getObject(arg2)); + }; + imports.wbg.__wbg_disable_2b63b75dc6c27537 = function(arg0, arg1) { + getObject(arg0).disable(arg1 >>> 0); + }; + imports.wbg.__wbg_disableVertexAttribArray_aa8458b40dd08914 = function(arg0, arg1) { + getObject(arg0).disableVertexAttribArray(arg1 >>> 0); + }; + imports.wbg.__wbg_drawElements_6e26500a25ecf478 = function(arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).drawElements(arg1 >>> 0, arg2, arg3 >>> 0, arg4); + }; + imports.wbg.__wbg_enable_8f6dd779ccb8e1de = function(arg0, arg1) { + getObject(arg0).enable(arg1 >>> 0); + }; + imports.wbg.__wbg_enableVertexAttribArray_4ed5f91d0718bee1 = function(arg0, arg1) { + getObject(arg0).enableVertexAttribArray(arg1 >>> 0); + }; + imports.wbg.__wbg_framebufferTexture2D_31643260e5b0b294 = function(arg0, arg1, arg2, arg3, arg4, arg5) { + getObject(arg0).framebufferTexture2D(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4), arg5); + }; + imports.wbg.__wbg_getAttribLocation_da5df7094096113d = function(arg0, arg1, arg2, arg3) { + var ret = getObject(arg0).getAttribLocation(getObject(arg1), getStringFromWasm0(arg2, arg3)); + return ret; + }; + imports.wbg.__wbg_getError_364189947a05fa24 = function(arg0) { + var ret = getObject(arg0).getError(); + return ret; + }; + imports.wbg.__wbg_getExtension_c6ceee3244ee7f20 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = getObject(arg0).getExtension(getStringFromWasm0(arg1, arg2)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getParameter_cf7a00ba1cbac0d3 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg0).getParameter(arg1 >>> 0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getProgramInfoLog_c253042b64e86027 = function(arg0, arg1, arg2) { + var ret = getObject(arg1).getProgramInfoLog(getObject(arg2)); + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_getProgramParameter_4f698af0dda0a2d4 = function(arg0, arg1, arg2) { + var ret = getObject(arg0).getProgramParameter(getObject(arg1), arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_getShaderInfoLog_584794e3bcf1e19b = function(arg0, arg1, arg2) { + var ret = getObject(arg1).getShaderInfoLog(getObject(arg2)); + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_getShaderParameter_64b1ffe576e5fa25 = function(arg0, arg1, arg2) { + var ret = getObject(arg0).getShaderParameter(getObject(arg1), arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_getSupportedExtensions_687e6dd9ca9b8e1e = function(arg0) { + var ret = getObject(arg0).getSupportedExtensions(); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_getUniformLocation_703972f150a46500 = function(arg0, arg1, arg2, arg3) { + var ret = getObject(arg0).getUniformLocation(getObject(arg1), getStringFromWasm0(arg2, arg3)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_linkProgram_5fdd57237c761833 = function(arg0, arg1) { + getObject(arg0).linkProgram(getObject(arg1)); + }; + imports.wbg.__wbg_pixelStorei_fab41fe53c557df3 = function(arg0, arg1, arg2) { + getObject(arg0).pixelStorei(arg1 >>> 0, arg2); + }; + imports.wbg.__wbg_scissor_fb094c7db856e2a7 = function(arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).scissor(arg1, arg2, arg3, arg4); + }; + imports.wbg.__wbg_shaderSource_173ab97288934a60 = function(arg0, arg1, arg2, arg3) { + getObject(arg0).shaderSource(getObject(arg1), getStringFromWasm0(arg2, arg3)); + }; + imports.wbg.__wbg_texParameteri_caec5468f2a850c3 = function(arg0, arg1, arg2, arg3) { + getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3); + }; + imports.wbg.__wbg_uniform1i_a0275676828a22b6 = function(arg0, arg1, arg2) { + getObject(arg0).uniform1i(getObject(arg1), arg2); + }; + imports.wbg.__wbg_uniform2f_b0af46ba675f2c0d = function(arg0, arg1, arg2, arg3) { + getObject(arg0).uniform2f(getObject(arg1), arg2, arg3); + }; + imports.wbg.__wbg_useProgram_d5898a40ebe88916 = function(arg0, arg1) { + getObject(arg0).useProgram(getObject(arg1)); + }; + imports.wbg.__wbg_vertexAttribPointer_0d097efa33e3f45f = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + getObject(arg0).vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6); + }; + imports.wbg.__wbg_viewport_19577064127daf83 = function(arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).viewport(arg1, arg2, arg3, arg4); + }; + imports.wbg.__wbg_setid_73be37238eaa05be = function(arg0, arg1, arg2) { + getObject(arg0).id = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_scrollLeft_e8aba47a94d12290 = function(arg0) { + var ret = getObject(arg0).scrollLeft; + return ret; + }; + imports.wbg.__wbg_clientWidth_4c903f82634f2159 = function(arg0) { + var ret = getObject(arg0).clientWidth; + return ret; + }; + imports.wbg.__wbg_clientHeight_cddbd2cef19a2cb1 = function(arg0) { + var ret = getObject(arg0).clientHeight; + return ret; + }; + imports.wbg.__wbg_getBoundingClientRect_534c1b96b6e612d3 = function(arg0) { + var ret = getObject(arg0).getBoundingClientRect(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_scrollTop_5ebd5c6591748d6e = function(arg0) { + var ret = getObject(arg0).scrollTop; + return ret; + }; + imports.wbg.__wbg_hidden_f7a620ec4ab18ce5 = function(arg0) { + var ret = getObject(arg0).hidden; + return ret; + }; + imports.wbg.__wbg_sethidden_fdaefd7e7da7e4c0 = function(arg0, arg1) { + getObject(arg0).hidden = arg1 !== 0; + }; + imports.wbg.__wbg_style_16f5dd9624687c8f = function(arg0) { + var ret = getObject(arg0).style; + return addHeapObject(ret); + }; + imports.wbg.__wbg_offsetTop_45111254e7b26a1f = function(arg0) { + var ret = getObject(arg0).offsetTop; + return ret; + }; + imports.wbg.__wbg_offsetLeft_be5393bf9eec5766 = function(arg0) { + var ret = getObject(arg0).offsetLeft; + return ret; + }; + imports.wbg.__wbg_offsetWidth_bc683e2f57ea2d6b = function(arg0) { + var ret = getObject(arg0).offsetWidth; + return ret; + }; + imports.wbg.__wbg_blur_2156876090506146 = function() { return handleError(function (arg0) { + getObject(arg0).blur(); + }, arguments) }; + imports.wbg.__wbg_focus_4434360545ac99cf = function() { return handleError(function (arg0) { + getObject(arg0).focus(); + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlCanvasElement_a6157e470d06b638 = function(arg0) { + var ret = getObject(arg0) instanceof HTMLCanvasElement; + return ret; + }; + imports.wbg.__wbg_width_cfa982e2a6ad6297 = function(arg0) { + var ret = getObject(arg0).width; + return ret; + }; + imports.wbg.__wbg_setwidth_362e8db8cbadbe96 = function(arg0, arg1) { + getObject(arg0).width = arg1 >>> 0; + }; + imports.wbg.__wbg_height_1b399500ca683487 = function(arg0) { + var ret = getObject(arg0).height; + return ret; + }; + imports.wbg.__wbg_setheight_28f53831182cc410 = function(arg0, arg1) { + getObject(arg0).height = arg1 >>> 0; + }; + imports.wbg.__wbg_getContext_bd4e9445094eda84 = function() { return handleError(function (arg0, arg1, arg2) { + var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2)); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_clipboard_7f80e1666b51776c = function(arg0) { + var ret = getObject(arg0).clipboard; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_userAgent_3f63af8b4fe2331c = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).userAgent; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_touches_7397ce4df4dceded = function(arg0) { + var ret = getObject(arg0).touches; + return addHeapObject(ret); + }; + imports.wbg.__wbg_changedTouches_363278e8a9a95419 = function(arg0) { + var ret = getObject(arg0).changedTouches; + return addHeapObject(ret); + }; + imports.wbg.__wbg_size_20c167ba9040b895 = function(arg0) { + var ret = getObject(arg0).size; + return ret; + }; + imports.wbg.__wbg_arrayBuffer_8b5364ee9b393098 = function(arg0) { + var ret = getObject(arg0).arrayBuffer(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_width_079617995a2466be = function(arg0) { + var ret = getObject(arg0).width; + return ret; + }; + imports.wbg.__wbg_height_ece90b0809f44f4d = function(arg0) { + var ret = getObject(arg0).height; + return ret; + }; + imports.wbg.__wbg_top_a24b8b81afea659b = function(arg0) { + var ret = getObject(arg0).top; + return ret; + }; + imports.wbg.__wbg_left_0e681cb8fd277739 = function(arg0) { + var ret = getObject(arg0).left; + return ret; + }; + imports.wbg.__wbg_appendChild_3fe5090c665d3bb4 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg0).appendChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getItem_f92ef607397e96b1 = function() { return handleError(function (arg0, arg1, arg2, arg3) { + var ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_setItem_279b13e5ad0b82cb = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments) }; + imports.wbg.__wbg_setProperty_ebb06e7fa941d6a8 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments) }; + imports.wbg.__wbg_href_0c435df13f22003c = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).href; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_origin_1bc82542e055b010 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).origin; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_protocol_128aca096ff0b399 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).protocol; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_host_8afef3759896202e = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).host; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_hostname_37415809eea07bcd = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).hostname; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_port_e5253b8797db36d1 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).port; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_search_7e1c9ba7f3985c36 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).search; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_hash_2f90ddae1e6efe5f = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg1).hash; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_clientX_849ccdf456d662ac = function(arg0) { + var ret = getObject(arg0).clientX; + return ret; + }; + imports.wbg.__wbg_clientY_1aaff30fe0cd0876 = function(arg0) { + var ret = getObject(arg0).clientY; + return ret; + }; + imports.wbg.__wbg_ctrlKey_4e536bedb069129f = function(arg0) { + var ret = getObject(arg0).ctrlKey; + return ret; + }; + imports.wbg.__wbg_shiftKey_cc93bd2f12bfcc9c = function(arg0) { + var ret = getObject(arg0).shiftKey; + return ret; + }; + imports.wbg.__wbg_metaKey_0b396e35a4941247 = function(arg0) { + var ret = getObject(arg0).metaKey; + return ret; + }; + imports.wbg.__wbg_button_a18f33eb55774d89 = function(arg0) { + var ret = getObject(arg0).button; + return ret; + }; + imports.wbg.__wbg_error_e676403cd981461e = function(arg0) { + var ret = getObject(arg0).error; + return addHeapObject(ret); + }; + imports.wbg.__wbg_get_f45dff51f52d7222 = function(arg0, arg1) { var ret = getObject(arg0)[arg1 >>> 0]; return addHeapObject(ret); }; - imports.wbg.__wbg_length_42e02f5a04d67464 = function(arg0) { + imports.wbg.__wbg_length_7b60f47bde714631 = function(arg0) { var ret = getObject(arg0).length; return ret; }; @@ -1242,7 +1366,7 @@ async function init(input) { var ret = typeof(getObject(arg0)) === 'function'; return ret; }; - imports.wbg.__wbg_newnoargs_be86524d73f67598 = function(arg0, arg1) { + imports.wbg.__wbg_newnoargs_f579424187aa1717 = function(arg0, arg1) { var ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; @@ -1251,75 +1375,75 @@ async function init(input) { var ret = typeof(val) === 'object' && val !== null; return ret; }; - imports.wbg.__wbg_next_c4151d46d5fa7097 = function(arg0) { + imports.wbg.__wbg_next_c7a2a6b012059a5e = function(arg0) { var ret = getObject(arg0).next; return addHeapObject(ret); }; - imports.wbg.__wbg_next_7720502039b96d00 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_next_dd1a890d37e38d73 = function() { return handleError(function (arg0) { var ret = getObject(arg0).next(); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_done_b06cf0578e89ff68 = function(arg0) { + imports.wbg.__wbg_done_982b1c7ac0cbc69d = function(arg0) { var ret = getObject(arg0).done; return ret; }; - imports.wbg.__wbg_value_e74a542443d92451 = function(arg0) { + imports.wbg.__wbg_value_2def2d1fb38b02cd = function(arg0) { var ret = getObject(arg0).value; return addHeapObject(ret); }; - imports.wbg.__wbg_iterator_4fc4ce93e6b92958 = function() { + imports.wbg.__wbg_iterator_4b9cedbeda0c0e30 = function() { var ret = Symbol.iterator; return addHeapObject(ret); }; - imports.wbg.__wbg_get_4d0f21c2f823742e = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_get_8bbb82393651dd9c = function() { return handleError(function (arg0, arg1) { var ret = Reflect.get(getObject(arg0), getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_call_888d259a5fefc347 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_call_89558c3e96703ca1 = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg0).call(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_new_0b83d3df67ecb33e = function() { + imports.wbg.__wbg_new_d3138911a89329b0 = function() { var ret = new Object(); return addHeapObject(ret); }; - imports.wbg.__wbg_getTime_10d33f4f2959e5dd = function(arg0) { + imports.wbg.__wbg_getTime_f8ce0ff902444efb = function(arg0) { var ret = getObject(arg0).getTime(); return ret; }; - imports.wbg.__wbg_getTimezoneOffset_d3e5a22a1b7fb1d8 = function(arg0) { + imports.wbg.__wbg_getTimezoneOffset_41211a984662508b = function(arg0) { var ret = getObject(arg0).getTimezoneOffset(); return ret; }; - imports.wbg.__wbg_new0_fd3a3a290b25cdac = function() { + imports.wbg.__wbg_new0_57a6a2c2aaed3fc5 = function() { var ret = new Date(); return addHeapObject(ret); }; - imports.wbg.__wbg_resolve_d23068002f584f22 = function(arg0) { + imports.wbg.__wbg_resolve_4f8f547f26b30b27 = function(arg0) { var ret = Promise.resolve(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_2fcac196782070cc = function(arg0, arg1) { + imports.wbg.__wbg_then_a6860c82b90816ca = function(arg0, arg1) { var ret = getObject(arg0).then(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_then_58a04e42527f52c6 = function(arg0, arg1, arg2) { var ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }; - imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function() { return handleError(function () { + imports.wbg.__wbg_self_e23d74ae45fb17d1 = function() { return handleError(function () { var ret = self.self; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_window_baec038b5ab35c54 = function() { return handleError(function () { + imports.wbg.__wbg_window_b4be7f48b24ac56e = function() { return handleError(function () { var ret = window.window; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function() { return handleError(function () { + imports.wbg.__wbg_globalThis_d61b1f48a57191ae = function() { return handleError(function () { var ret = globalThis.globalThis; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_global_1bc0b39582740e95 = function() { return handleError(function () { + imports.wbg.__wbg_global_e7669da72fd7f239 = function() { return handleError(function () { var ret = global.global; return addHeapObject(ret); }, arguments) }; @@ -1327,50 +1451,50 @@ async function init(input) { var ret = getObject(arg0) === undefined; return ret; }; - imports.wbg.__wbg_buffer_397eaa4d72ee94dd = function(arg0) { + imports.wbg.__wbg_buffer_5e74a88a1424a2e0 = function(arg0) { var ret = getObject(arg0).buffer; return addHeapObject(ret); }; - imports.wbg.__wbg_new_99c38feff948285c = function(arg0) { - var ret = new Int16Array(getObject(arg0)); + imports.wbg.__wbg_newwithbyteoffsetandlength_8c0e6ae8071b27e7 = function(arg0, arg1, arg2) { + var ret = new Int8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff = function(arg0, arg1, arg2) { + imports.wbg.__wbg_newwithbyteoffsetandlength_fa38811f43e9099d = function(arg0, arg1, arg2) { + var ret = new Int16Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_a0b51a3de0017386 = function(arg0, arg1, arg2) { + var ret = new Int32Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_278ec7532799393a = function(arg0, arg1, arg2) { var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_new_a7ce447f15ff496f = function(arg0) { + imports.wbg.__wbg_new_e3b800e570795b3c = function(arg0) { var ret = new Uint8Array(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_set_969ad0a60e51d320 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_set_5b8081e9d002f0df = function(arg0, arg1, arg2) { getObject(arg0).set(getObject(arg1), arg2 >>> 0); }; - imports.wbg.__wbg_length_1eb8fc608a0d4cdb = function(arg0) { + imports.wbg.__wbg_length_30803400a8f15c59 = function(arg0) { var ret = getObject(arg0).length; return ret; }; - imports.wbg.__wbg_new_8b45a9becdb89691 = function(arg0) { - var ret = new Float32Array(getObject(arg0)); + imports.wbg.__wbg_newwithbyteoffsetandlength_bdb885cfc5e9bc43 = function(arg0, arg1, arg2) { + var ret = new Uint16Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_subarray_5208d7c1876d9ee7 = function(arg0, arg1, arg2) { - var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + imports.wbg.__wbg_newwithbyteoffsetandlength_f6c2c5e40f6f5bda = function(arg0, arg1, arg2) { + var ret = new Uint32Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_subarray_8b658422a224f479 = function(arg0, arg1, arg2) { - var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + imports.wbg.__wbg_newwithbyteoffsetandlength_ad2916c6fa7d4c6f = function(arg0, arg1, arg2) { + var ret = new Float32Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_subarray_9e3273b330900f8c = function(arg0, arg1, arg2) { - var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_Memory_625744f21df3a5ec = function(arg0) { - var ret = getObject(arg0) instanceof WebAssembly.Memory; - return ret; - }; - imports.wbg.__wbg_set_82a4e8a85e31ac42 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_set_c42875065132a932 = function() { return handleError(function (arg0, arg1, arg2) { var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); return ret; }, arguments) }; @@ -1384,63 +1508,60 @@ async function init(input) { imports.wbg.__wbindgen_throw = function(arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }; - imports.wbg.__wbindgen_rethrow = function(arg0) { - throw takeObject(arg0); - }; imports.wbg.__wbindgen_memory = function() { var ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1901 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_30); + imports.wbg.__wbindgen_closure_wrapper2336 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_28); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1902 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_33); + imports.wbg.__wbindgen_closure_wrapper2337 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_31); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1904 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_36); + imports.wbg.__wbindgen_closure_wrapper2339 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_34); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1906 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_39); + imports.wbg.__wbindgen_closure_wrapper2341 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_37); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1908 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_42); + imports.wbg.__wbindgen_closure_wrapper2343 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_40); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1911 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_45); + imports.wbg.__wbindgen_closure_wrapper2345 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_43); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1913 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_48); + imports.wbg.__wbindgen_closure_wrapper2348 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_46); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1915 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_51); + imports.wbg.__wbindgen_closure_wrapper2350 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_49); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1917 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_54); + imports.wbg.__wbindgen_closure_wrapper2352 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_52); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1919 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 720, __wbg_adapter_57); + imports.wbg.__wbindgen_closure_wrapper2354 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 928, __wbg_adapter_55); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2113 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 823, __wbg_adapter_60); + imports.wbg.__wbindgen_closure_wrapper2467 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 978, __wbg_adapter_58); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2179 = function(arg0, arg1, arg2) { - var ret = makeClosure(arg0, arg1, 871, __wbg_adapter_63); + imports.wbg.__wbindgen_closure_wrapper2532 = function(arg0, arg1, arg2) { + var ret = makeClosure(arg0, arg1, 1026, __wbg_adapter_61); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2181 = function(arg0, arg1, arg2) { - var ret = makeClosure(arg0, arg1, 871, __wbg_adapter_66); + imports.wbg.__wbindgen_closure_wrapper2534 = function(arg0, arg1, arg2) { + var ret = makeClosure(arg0, arg1, 1026, __wbg_adapter_64); return addHeapObject(ret); }; diff --git a/docs/egui_demo_app_bg.wasm b/docs/egui_demo_app_bg.wasm index 0cfdb5f3dcd2bd803bde826e1f6a74dafec29cbc..e3cbafed18b3b517167c5ca8dc69da1a657c3289 100644 GIT binary patch literal 4286858 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

0Jer<@YnQrr2<0rJ%3@OFuo9*+>%YDv%s~$Ve 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 z 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�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

uGrozvZq!V3F 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∾>MMl4fAbunV>flfsi^G?ML;+Q^@R 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 z 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

-jW)Ql+G%6wG?*7qR7|57Rrj9(@(Ny9MkIQfVswhn~b^a;J}$^FcBeJ`*8v4m?gNuuxAGmTL(Wa8pizE4%$$=VxM&clRN73kM zV469$phfAz%IL;k7T%IoOmR(UIK~^TrCN=$ zqW5&jNKo=aIjSO50sGvphC#8wgRs<&hWw(GDA&CtKL$RgCp8f!*t>JUTYzRDS*W16 z=G};wFszn~36%ACKFygi`Dmx$)Mc=9AR3P15Sdv`)R*RUqa&=Q_+fGTa4&N(F_AiB zc~pWMBBeS!bfgmGkL=!{8Vu;vR0`LoR;CdiSqJeaur00VEgwXn)+Kk$>(9nBGSn>( zGLGBz!3~Yfz4DNEm)=Z%1cV9iei(M4#=P1#!7WRYC~Hi{IM}djhVjn3t`4N93ZB~C zcI5bTkWYJZR6v#|Boi*R=za-ps=cv*c9h@L2W>b=U`JPv0By@tLYwP`j#NUkW6+KY zXmi`B?OfKu0$4@wIih*+_w}EB0{GGCd&6utW}ai1^A0?3$xSHhzQAnewUL>i8M8kD4fqRjot2W}W$M-~W!AMe1n8!bpWJ1*&1T8X zwGF@3BeXC!B4$$~qufU=_M4kN=RS(M7%NAPCPUQvdw6`k9VHS(FR;B%6i;mCe70)%$y4MN($NO_*Ne#vB+-2(DNN?M{Mg0? zLNv{p>-43Oy|AU3LxQNI3d({27{+x}Vgh zRq*ZGe)4)(ewwsanbTLwF)(YFiAAM4Q*~yg?k08ED*a;FQwd2&l=cieS9P-Ec_^*Z&LXP*7hoxgtTY2kP6RlD-^19#G_2%L4}$}QW@ zXLkvUSGvaMdyDt$c070+?_2fGv|Q@4O-+61&dV&2psV9uTegwu&HiIC2*T#t=STkW z@BXjT6lXBU*)2OpY40GH#-?#iL{W* z*~0cX!U-sfy(|iFh-&G`u3+{Eh0Oo92x+fy-nuLR#qdB>dvp}qDOpI;^T9V^ zclUG>I)nGW!@wNqe}|3P-~X<&RR22+^xppWJ-rw4N|{%&p=e>V1DiyD#X2!<{`n;M zg&zBq4LP<~3>4=z}0xZrc-m}FZ{cZ^J-wMHW&SgMH(JUCOq2CW z-U7zJ@fYnL1_T~9CA{Doi+i~QGY>8gDG#IqKH{^_cfGN$90n+JK!aUX`z8hazUeni zK_PY;SR@&z*%0;@L$E<<=nq&5L$^_!8foY{=hzT6C}Vm1he1wt6)8k-a`J;zlYCSa z+F?T743np$6t+D*%n3GNgSYdS&>Zs1Z8e4a(!)b>gMb2&+}EbPk-4O0tbfd6bwUeR z32H09@tb!CCp%vnW{;N@ft}W({E(f=fI9)7F+(vlgo`z<-BJ~$*aYN}kjx>Ag=;SI z0*CRd*j_fCO>Ks;k@)+o*e}H3Z`3b2&gBQTlD|lq9GlPlYzs5srg;j= zd4f#^Yk7A&k><;aI+H%P@|l9@->1$(us_olemr%=1h0Gx`Lw$z_QJh0AJ49mi0Lk18YXYD_<-GMnf2VHsl?3e!c ztIw2hOjLrYvIAI8?CoPJ3-4!yRMtY9J&`je@D^c*fRB`fBLiRE%T92UtG5kX+%?Mi zR!iEfB$+{gTW+$yKl0Vp7(ndh1D^mJ*KxaN4pD|-B-3#%&qxj*1;XAF7N95Hq(83h z-MuWg@#v9W$0Y8^a9OsNStJW*{(}Qto(nOx--KuFA zXMxEp-Z|Qp2osIeK3d)T=k9Als)8;XzEXkQ2_*d7uR5|a06bAm2AQW1*?!8h#Pw@>s*C}~zI$SaII#JZL- zf9jSyZ870tOiv4|9m%8XFpN6iw>_DP)mSA5sk0)CsO*PG64Fcft}|E62s7E_vj1cw zWg?1&iZcZ)lK_`|fTX4=iVDPL1)R+*(xe>JUXc)h%#3aP2jZ>yCzur5J6Tl7wtXUj z)cli7yY`p53Eexv#^k?o%dRHO!kwz~71?P5D^3H*1NVkz*uxCyZCZl&efD`QI%zaO zG(~BB1pKMqMK~A%>|9AExNu`d1YFK1E1P&Fe*g+|Kb=4*e`2(^hGv0Bb4#FEzl-7M z>uct#gkv;t(&+EX+nmgSPEW1m>7fWNU+g1EnG5j6y_Yg}Ak%6oDIH(Wo5Ix|U5T*8 z?%C8%p&vs{Y)ZAvgz1abv>eeox{^*Q1W+J4iAWktN&)Xew`RS8142XvtU+rb(}?90 z$tNpT(3EGauGeHCtMMeh9k_iT{1AUqrHqlnmgmX5%w)wQY`S9~4QZ8pi4LA=gnSjW z8zBs7vSdU3s2Ru)kkhHpY(0z2Hd@J7JKY6o_~Q7+5WS9Qx%zs5)vn*CLOJp**E}+i zxHFJc#hn8Yga2&@#D|me(jDU|(ah)H zs>!8e=OR>I{#u?x+**{dsy~6#rd_V*vL<#zDS2K65cxSjqnThdWEhN4uu|)Q$#mxP zQ9lz=Y-W||{96gb0jB8KX5Ix9a~mit)p*#we-B7roKM}ww94D2WGt@M6$?aWf>Du~ zd#LtSF>rwEz{3cnd%WDyd3`?9xoQPnclI}V;>eZbFupnNaU2b0ns?q(9k|ZRnz(YR zRvB&$vHpfohI6|@)8DS380M+;v1#+7|CLcUiGN+(u0Td^R~R~vK>n6v=%U{Rx2VJIk8rE$^0%)1p}Fp2Rl zvc^hI2kus=TJZOocPlV{w#)`cbLd`!>lNrjppY{(uvoaWB2EPkX+%LN?AR>yp^Xlb ziVy%f%my$a=H3R7lsgt=Af?Fmk*-^a6h)p2s){Thmp3d_tTUAjV7od@Lqvw!KnpsH zXgUyzCn*D>oy#4voUUtC!yvLBsi1vPX%J`yZBP#M$^6q z7ha@+x%9N*E@RMa6tjm*+eKY`Kd4E;hWs4T8Fv{&nN`y$&N-B#;>^|uYEitddO5f^ z#SUIs4$aO1)#uR%NN#Qa1y`QmfpnB9^((z#AI7|~p7ih?7m#$>lPt_`huK1f>> zPm$|}@9@H1wf{P~F*nAeaUi_3JCuL@uk-utF5m|r<+rj@p^yrHLT-CxKXcd1)CXz?#tM-Fblj0Sey|14zO}QyL`8X!J zEm}usSY0p*)ThGd>knOhN%%(bh%}M>Gfc_M0a)obDzCePkT_e+j~lJd2GWhXU9=*z z1gS*cej7;jwFe|X?pi^Utp7hjbv?oZ`1j8tia zXD1GLc{K$anQ=!J3MGXrt@^m*S@mM*I~Pa{&A33KV$x+rn1+}P#o(Iwo&KvSAP4dW zQA7n6Q<6$Fs;enr`5=H*T}@F@&6Sxovm4@O6v<{NtrWq{TWcn>dHL9d6Zx2~q0l)3 zh)<>!gxIlgy-rHq1lO}WBLVcksxxI%N9G6p9Y^>sPRPi!qrBE;UFm`s2T zEZDgec|tfXaUm%PEQ`Pwx+{bfdE%F)%`PpOMW0B^Kx!=~UDgsRk@QPuPvX+=^Rc!|Xryxvjf9w3p6*Wo5N4Ea0@( zz}}yIP!rX_3Zd^B5I49Ex^T+0X;Q)Ni2{PBBt9IMqyd$rW{g$O$JpM2lw^6^fY|3P zO}<~}qs4fD&BlCY0f!uZu!TGad)r}Vg()N!{ji%q2>&oM!yu7i7HER`45$l^-$|rOG zBDJL(aKs@m(@&e5P57y%$Lc52vIx>+ZtV&guyUm18WWM6dt>rxelRu^@S3L6f>KG^ zYXd0z$dNwkku|Zo*45&B0Rv&+sDq_h77nzVDoMvo1m1Kh?KmRs1vqt1tMgG^G~~DI z=0;3{w5t8Lpr9u0zXinv=TzrzL6IyVUah4BJ7*DNTIm8^Arc}3n(T%y&=uDRFtb?% zj92`UD-`-n<_5u9}qfC-;OlToUR$m$g1Ka>tSIt}^ zOVVTJSRzZ@5}7{(*NyEgX!Fd4!9^nj3j>2Sw=kk&VUXjw76zfN=L`8OCGs~5Fj9>zMf(W5-8L6d{;@F)Yka#D~#uWJ0_w$%=pv-e*bN;yievyi0QKq`EDl6+4C-dF z3j3fH0btlFbk&86{$WI@T(?6r=EJ<}3W~&hC~#Z>e}O^avx;{lk}ju0buAC_pry@q z#6Z+~M=PqV8%QB1ku5G3TQ#r=KNnC283M+f)>?bS# z^{g${=kC0-1O9_?Cg=$pE*q5GUSR={h9Z4A5en704!i9JUExJ3m2BiXB42)@oiX@7 zX5Ya7zoBgxPK^L@c?4^ODil*hmz#g&1<6{5ca1A0B}%xP1u5P`ES zH7af4#to;dz#< z#xud5Z|WJdu6}d@u}zr4l(-!dNpLvD!m^k+Oc`wAYU(lLYB(<+D*$t8=q%wOH#l6V zUpc3U1{`);i1B8Kf}bV42iz=WiyY!w^gNWHjxAa7xp~^ z+0o7;DqPK@w@iSmH@_Usqnk6E$96f7Lj&_D7&d8qp6q8>G#4{yqNZGniSvBTs(QmP zG#oL6hOO3XkBZ=t=2VOB$k=v-UM_Nd1KSoHzLzp80=*#U>HO=!a{BT=2E8Q07kaTf z3%!8Hkd`r_(g)V|kS+WS)p`YR@ngK;^C3&N9uZp=#K(pI7x8iH(Fl~yo{nuP0EMly zwcrR6><}|iC_`dXhKLxM^jXJF?9sN$3JApGH1=wyETSaGdF6t>@YBdJ$f|()2+z8q z_#b$f8h;VvIb$y?5~h(3X>6;n0WMtP!&$5WpM-o;VlR<6S)0kI%q-NfP0AxI)RcEx z7EJwli3g;-A?&lP$nasOS1o3`;VsbW2;C#uQ{jPc)V-@i4@J~GfhCWmbz0cyVEpt8A^30*z6|hKb{m`M} zh`Vj*9HKNQY)3GCVn*F*P?x7jGKl)jE^J(Vt{JAekbVR)QZ9ao@uJDlg+L%h{)Khi zEn=r6LN7TRG*tjrBaZ&sKRp`cEAwqn7gzc)C)8ifZ&%9w#ND~08pg6ylMYz=>qwRz zwjVj=7EYp}QVTnKd11+NfHbmUdqqt8_xa5jt(?V7)k!G7?cuc<)oIe5 zqEm_x%QcIRMf=w0@Epa77ez*(xquastQA>!La;|Rxp&6IgZV&awnRwk(x}y zeRqOeOI$M6BPz$12@Rm zC-NVBr7z_CcY81Y>X7sAfmJ@>jLu|YmNOhUIN+|e!`wS)+Y-}&kM;)nLWk?ZS$k^^ ztwYsZn1&fU?W-=$!X9OCxwjdRT^N!+36*ShNn>lvr&##1%Q7TjaRc^^|NNM*bDB4k z4%iAS^g6fVcwh?%zYAZ5MynYmb~+~Kno5?ezTve{6q6Mg`gNK{iw+DvZqmoa;HeA` zGPon?8R+TE>&z183eJgMjSUFM=u`kkiWq}h6_%>Ls2uvwG<4A>k~MTP{>FxW?QeGI zEEWwNdSOH7*O9%&6Xrd^n7k2^aN0X|`@r$u=q-{J%?zuzQh}WxA=6W}sN+_XOqShN zaEeZ7V z#gXNryOD*KFpDEgg7LGJ;Vh0wipJm0(k5QKEJ8qQ8G#sur6iv2I8J zazz4mKqLUVB4Ljuuo?LT;V3#z)`y3ckXOJeKt<$aSjBuLSKfqT9aH(hhLa9oh#@Aa zd}?-G24L|#D2!kR;bO(NlCU<@#YzO~vxw0;S0hp1F~0J0+_boY7_tp99k~@&liDHr zc0_k)c;v+@GbNLhXwQj7))Ib^;YhPWsDazf{KzA+7-``*#u_No=>?7k=GACs zLvXW{u^jozzZA8E0dN!`g_))S=VJ%1tdfucwoUii6}S)z7YZy8+NMnblQ|R4%CFnM zF!N?*W?z`|Vzz~<<~6P|=3oo32cTcVUWb&GIvoLWsjBJHnXryQ3z-RJ<%3QgUe;>Y z@-YtWdf2I%jfv1%BfnYf7a1`D1u(#v^?z@u4PLVb+(i$HK!sB65cSV}ao;LM_(Zj3 z+KOy84Us`qnA}ifw>@$;WHrgdmFLW+4eMjA=gbz8?W$p)jbZ5E&Gv0jq5MeC%shy=RrV&%+QX3?cAIIDVWqFI_Zcha zvVzcaD`rIBYYzQ@bjB{A0DD!3TF1PLIs>)ho@%qQq?3s(pg9XxUI{q7GdN|Ry;Z8^(0s3{Mn@J{cgVR(hRjUg zTG9GbGx`O?whI(CQ5NSxuoELlR!vUpnMK@1Q@`BoT&H|2E=pB6I|@C!w0L$9EIK=R zw>;I0=ucX8eNN?)NlAc6urt}jdi0i;Fl*^v^pw5faB9%`1p_CpxX@CAs<3H@+!7Tj z&fgVJyfoB3ka2!hJb|H;3>!}lHpVPSc6sEpv9^SQjn8*m3g9kNZnqRLrA*mrDeMPj ziahHrpk$dcZ7IxWnX=zf?(Iv#4~DxiyPcEB| zw{m32_ghY&TGlpgDL}PM*=s34wM^M#DL}PM*^5gB2C!w|nn?Doq!80gd5q@Lhi$Zb zFYT&7dw7;6IgqUJlKelIxDx7CR%V4~aesp0-W_yaVP^w3P~!taqz_pHG2saP zck|&6EDo2}9l?WOTuu(Olig);xDFm}$QDe`#f2zpidN?YzPG>-&>M^QUmh25yhL*o zDoUM9gCHyZ-WnoEiD!Vbg%ep3AHWt6qo`cHfmIPU*fmF}4S9GfoWLei#;uBO7b@P0 z&)gl+2~|d960eACnpJ85v8pm$cf*H5HssqsbvN)s!mC&YM10oM7_(I-rxUp;4Rq&C zetns|piIW$)n8bekevD;_cEts@E22VCRGJ|zLEX3mGidjYtF-P9LhCUW zr3h5jkVHyIU4hcu)s-ul`Jq$8Km&sFGmqi!StMpjkrtS&#$zq`~2^;epyxz`R_Ov$ubOCFc(~& z9uRSOYNxntG$-(_02tPj^mc-8H`@6uLfZ-fBEIUs|3#wz$1z6O|{sNZ* zcl_j6B&4ae#E8jqri^Y8Jn7nV7xh}E@p@`A-8EoA(5;#rim9jqCh^lSA+Q?VDj#h? z1Sc%`*ou$fFj!1%O>Su^#G_kVE;SF5_scn&Ri}7^99<6QjaY%-@IA$!aHF*ER#WnG zlf$0B~enTN+_Rqa#NoQbd?5 zbelZ=A%o@i9m8SmKK3Mh!z9}gU>6TX-|R_2l|&YSG=E7gABmJXVpczlgs*(EUsV=i z$mEjj*CmaKv3v#D?151T@DXc69n|To?4DgKLz4Zv!i#+_`*njb;U2l{SGnpCBIBu6 zs3pGGFN|ypbv@a+Km%*nxbBDiSqZs)APf00`s^p(tR zjc}uT$jwNu0{*huZgQJ#ko?m~tRR0uMu!^!6i%O#;@)?t1mUC@&x^b72XNV&|X(waPt*^@Ly%k7C+ zOI+ip;JQS->?YCM_y_*$pJ__6MJ$8jw26W;d3+wI(M}URjH0k4RGoD65EWzEp2>3cQ_K(lQ4nQro0kLiX@CBhdSO;)^b1im`RIt@GhmxdA zNWBFhh71&BTsg)j=bn}$8*xwAvYP&Lf%Z$&Z7X-%TNUlpbN zjI3hIm2o9}KFd}}Ymy_7R&C3wr}h0s@jNa(wL|6}CxHa>biQ(1ONK^1s7tSCeO2OHk5EU_`He6gwQ%sefk(OJeGGRQ zj`QypGsRn&6a4+~6UC+w=I>(uLtR@2CgRl#EW-Q>OJiP?w!qTV{B0o-ufw-8&n!*L zYPVilhAIb=Q0%;+0Io)yQ6ykS$ZDB1Ha{|BN`p33!6r+VIjxSzKg0ET&R~p=2ss_5 zY+>L+O%Ribqr>o*p+sN8eMo_T%AebN32L8RJX)!H&;&;V2o5Bbi}H=%0i9dPH`?k2 z=;N@>eY;NID*ju47v2jR_93Sb&2BU;d*guE*Bb{xOK|X0Z!m)Dp%S}PvGg>Xw)lqJ z;%nr$6;oN_uyXfu>55-hRU^3*c%K;E9wMotmfPeS<=|yz>SeBGIRx%5#6aDndz0CL zBK0i*T~nofv0MUhsbFX93z(}}qj*6OZp%nJ6BBJXr&EbF3uSP7v)#79RF&adJwCK) z!!-o;)>O**>@uyCHXU?nM_I;}>3WdH1&bA0Y|@)XQB=-Sn__8LBkHa&NnL!H^u7R!bfG+~0ZTQ+o{NTBE81>mU$ zn5w=rjSAr2uiRtSr0r1<1|?~vD-{V}$9?F+0#$2Ee!e|H7mNmoE~w5u=02tEP-L84 z&^9(LPMxpV1O0hLBSIFdS)gj$J}b$0Eu{5owrSg+Z~)L{x75#JSp^h5Rd}x#A)S2J z-8O0;0hsNu9`O`2mIS{GTMqS7CW{_m)&Rll)PVb>A=>6!v}T*HsSv3OO0HuOomPMZ z?fR!E#gNIt%MD5JB6hB$qeV>yIR(-!n-i-Nc~EH-ik)A=w`MkyN3ic$y8kkl`84 zj;BJ>6;gwVP?aEg{uBZvJ%iu*`|U^;DLB(j$~wLNai-iNr${h(o6=6y#i{&0eZ9Wj z%OfxJ4FRHimf&!=dpw25+ub9wcB5aWn9C1Z#nv#k_Gt^tT6L14c6vYPEDmmmlw>SSe6(E(3Mx!I3Tg`Fn-Lf*svwENj7ne5!Ph!xN-P0 zYU0UIpEE)=zwv{Q*?>%p5$PzwNz)=52~A0TxiHa``(sqK8OR$MbG7NqV(vB2;N{`k z5-`Vg&@?O9yRX%`)+J(?PlzE^+AK3Q^yD(R#B0+AnSi0I>26o(4Mic|^<8U(t)p-J zf^~Z=2$Jt>{`x)v2tB=i#FYAdZ}4^N3FyV)_;?@d%{~m-zO8OFV&+F5ny5D!IfHVG&|9;1Ul@ zatUKzgH?z5CdnJ#GRXU0I)M5m+F~qOUh$SZ(;wa@_g4)4*8Nw^a1#+E48clFd%SVhV)Nl5+Hx`K}#& zdxSFqbmIa%maQf>UfUP>b^9XwKp`i6eyv_JcdMJ8PpeqL^$V)My8rs0)m-pzY%d%M zCypfCi{GQ+MT*B;cr_c!9iV zAky%wnK)><221S2-b;}GW=8%_Mt;Edum3Mcesb`8vWgJ^yy6^8HT>e&;gt8sfBl5Xt=xXNMn7_D~yv@jYO4hPRZd)At??$jaG zwQLe7CIfv9x}CHNd2e)kdOyy9Uhl_&&?Z#OADa`i2!X9$l5u#(G}(;$V}4S!Wg)bm zZ2^^M5w*DJ#NaO{pAJW`lLJs_a=3#QHLg@^^~O-M)$Sm@Li)*gC3L`mfD2rZ(i`;B-gY?tkog%ayDx6BSzT192O)kazVPD zBNqX!bjqKjgS~cn^5EdfogXARHM36SpdE4LxF6a%+6fmq^AhwDd=gJI>Yg|xBQaMR z$77SRYhcbITXP^Y6MaQz+ICNno2H&>aNO+VL(bew9!*ZxZOoN$Q#il18dfY63TVi3 z;{3v&!p2Z-^6KQsrLCR`b4k|Of`$*6ik~eblzn(Fy|mRcIdCr>a+rLmMss0ds~73C zVlrhlrbCRXwj9n@&u1uX^?IMZt)6|yn%=ox>GaWS4qH9gXm6_*$yQI2kql9NFbD0_ z%8t!e&jglQT^s;~43K?_*f8OFd-Z!;J=-&7tEV;6v(<}YCp2_B{!}7G`h-V&`%#_*cIXSgA)(dIAFxGPz%JTntyPzE+ zRi&Azrq||sPCzh_T8WY|t!31F!*Ffz}VS(&q0&w?Cvv)3GDv;XsQE4MH^CAae7 z-pju&ZedX1-CL)kHU5FW$-E(0>sOMmk0LW!F63ZP7-X=!nFR0 zNb8H^2BMb=&py-iSseQ~IlieAl$3$jKLx9O4)*hE${zCPovKecpfZR_{{n3UUSNq< zK&*|*Z)w`DBtA8A;g9{$km5-ap0PCU_xDM8HHk3=DGI~(gEsNdQIzAuaE1wAe(DT%+;YSXxGN_J=bHLso0n0_%&;cKdrq?ngozSljkAuk$wP_&@)I# z*<3)7qN)KvF76fRtLVdwQ??UD{>uAZff~OA>VJQ)NiuTInR+LEU6xN5ef5=s1IVlZ zmO;+f$F<^W7+GFgeVJkHk#LieWGvBBby(z)YU>Ntu;zIuw~7q)wNEPmo_1P=bB4{x zZ~w^S7CVb0Lai&afMUMtC?rAhk1rkWL$v+(>EX+HJLkAAIV?-G}=JfC{{Q-{g~MB;MSv5776ZODXLtC9z3gbhz+~3oJ7cXIvV062VJ3a6# zWRa3eG9QNNL>|GortO{6pZGGjGDImdB)V$cLyZN%vno9a5U(~xpaL62goZcKj%1v1ve=nqpkCWNtXzUYb1RphOa(b{$zqI#eep2alQJHh7 z;HpJVeXFwBXD>&AS2>B9cPZvf8A1#LYLLLjcDOLvshIB6Ned@(VGKm-V5m6m;3mZX zfXGhrbg~1$t)EKPGbJ~D?(QIYCt7N??9U>RpErIF(=r)pdAV;{Jl0^#$PxNmp3&y^ z7t|)qs8pmHs+hRJ2F;?UH`EyoK5@qj86?QeAax0`W^_h_fb$3=ysv+Rp|Z|WymEYY zt0C5kHd|W5QIq&-j-TV6=aHfU1d_Vm1w>glc?qM60SOtC$=i&g*y!lEuF1`{DjiIZpl9BU-sgs|j7FdW<$s zVVBvCBNrF`vB@C#>Spx{{>UKF1 zw$p>zHW4rfy@^1(M$nho25|UE@a2G<69gIeKy$Luz#qXz4|?rJam>^#6+CQkkm3ol zfvA4=beneTedoqY*44b@CMeMatD7tmMLq^`vtt33aJMNn^)k|!FEiU|94mTvysYmJ zB|3i3V|RUE`b$6FG=ElH#p8NKEWYCL@=6Y z(84NeOB>HI@Dtp?TSUZV2#bML%nn6h`z+m{lqBn>JSjOXl8+m&4D>NQVHRXgP-M-; z1Ch4JZ~N6hUio<^ZOhJpOG1)5v1~^b9O9=tKXaA@hu2(4K^3N1qW; zu9%I;bJRSGM!_oMf8tKAP;p#dv9~d5p6nz#8m_T@Z!1Lhxq^x1+&6*^>2X(ekArtZ zi92Mw9D6}lbyu+%_mH*4$0aF0@(^XOYOKkIrP)M;*XRZEZ(R(M5rQq_Zp$*ST)BpYlcTbBYPZ0Vhck%tf<)e`LI)j zbDd<9dOh@CoJAUQ>npn&yMcBDQ%KJ4i6Zs?t9nv4b@(2o$GzS0Vq>L~c5$u)9vUdw!oM}R)L9PVJLk>f39p1E)jwrz6zPb zNEy+8q=@K00stT>gAx5lETX?0fJ8go0%mrgKG{OVRLDPc8q&=KTJt!NO@eONrgLuz zLxmX>F16C*Z_O5Aj|k$(gn(8G^y&DSPx)q8XE^F-AL5#}W?Te8U~U&|ykm1Ni-LhU zmlyb~Id4o7TDL(I{+5rzFDx^`CCemE7YQF4B|fx@K;)LxK|CcV9^s_Mh&-JGstpco zDlYD;fCZVNF~O#G2xZM%aj%}d>fEQ)KJm85p#e2=YO%Vys!MOhje(uCtCPy2G}TWd zJwZPspbS6gvFL(w%d(XgV>}W2%36&nH7@Y&EO51StQJGQg^WrACj7x9Pyrk)0H5YZ zYU9)j7@4sGMrN!4jkX*RD_~^C3edQU?*+g_RtZy5#v&i+hs7et8CM5G!se&Ll8wvL z%1(T3f+V|;{SqG9L>hTwX8J?+qnqpx*)Ni%>Rh0!p%m9Q?q$jym8OH~5|&>Jn#tzN z@e^4l^q){*jIG!miajCZA}dHcqhz-p6=57@%{AHB$3ty*qxsmRop!aL$-y-+vfr`z zl%x6L$>hGeB}bF2pwl^!C{JbbB_S6NrS{UEl(R*&SWs%_)35`!nz+RQ76KYSlJ<_j zi1V^zv0SDAy>drij+B0*atwvF(v(Cue;U#M4b0m5cslQkG6JA&eK+s450-U%9tzw8^)E3+D;p-yO<{O^7kFoh5hHWa5w z(Dmbpzd_}OV#6w!MNW(ktXV#VYohK;4Ek0xQwreph3)0+ImSic1C!vOT*NEm3zVn>=Y0WTrg1ulbKE= zAECo;)*`I&G}CT8>JQ+zXyN@MV!&PHq#7wO8~GFW-{r#mDkbN0{!p2MLU9t<2Cbe* z-vgo!B++1I0zalTVt6Rdx;MZ^z-aN>eDPl?LQrCeLr7`FV0e*O2`Mx!ur#LPAgH8h zC#;b_cK)MKQLyn@SFmI>cTAO{Ojk|5fv<3&nPvv?8+M3!)*3cumzm-RLa}#MiW70! zic`3APGwylRMU>8U-^f7QK^ZmLOg2vJ2iDr00yY?QzrA~E7|(1`CY+ezQjE~Ts-PV zvqWB1vTZ!tL7hi+y+OsAs2bCj)=vTw9@7ktHL4Xmh$t@cOBhCNU!a*)bqE#bC4pjsYS!j{O?xlj##04k!^ z70q`ng2rr95SZGb%I=bcf<+>LD1KNQHZu;TJpq+iL{a=jt015(Gbwqg!jVyK3iD*N zuNDS8?8vC5M?|+Ei#5y4cI(NgiW?avf=J{#QX!C(bp$&pt*v2K7Lq6~QXOgcXsgwi zRtxH?#h+R@cBB}Ssl@MT#7Zp)Zorc#xO(&i7amcj4y`UD?M6l^v~L^i`gd+a=-#|C z;2FGe*lY_6H8GQZw!Pnh`uixMm-m0kT z@xj*{_6&Uez~JjA2VXza_v&|c_$hFuo_|S=x>jHZ^6&IoX)-*PF)KHJus^k)PZzH+ zIgU?&6~>~wRfXfP>!kST-upiexdsIG_Rx2J=HB{i!hpY?KT=fn3M`IjPqAa``4fGq z#--KsUld85NQOGbqCWf>>?5Ie@^2R(UtzC%2VZ~K_iAN(19(M8d*qBJv8Ji#PxcDw z9_*(FUw_s2N(Vt;x&_t{T9hw&&1Oy29_nS(>$`drq1VlWuiN@wF*BlPYPuY`1$V3G zSM+k}Zk%@vzHS|Sy`}%P>TCE!kw~Y7wJU;P{E;8tar1lc|NiG54Y*#{47L zG;SM8O>3Wcx{h=sS5}^OTJyx)m}kfRwk?_-n8@a0;wnUKXA+m{*ndH+`oC*JVCxBAuO{ z<2Yf$Stqq}cy52AyIe-=Fq55$-L@DU{^qk#`q&l@O175EbKd~ll2ERnZ6RXZ^I=;Y zk0aj4<3GipH`|i*(8uZIDHsA+&4EKhQh=BM~{bx zdU&`VmsHP-Kh?v-C!PxrSv-SySeqqlF+8jyYbeS4p#sl5dFQT?{uI@i-^6Zh*A$g` zHkB#twF*wDlTpTv#3tJ`xub~7gYBXA&M!={2MV1?9V+mqz5DHpa(zbR5B6B-8T zvh-LateFXk7n_VVGr4h7!Cab>MoWO0b)AT?d2*1Q9!O6q=Ugs%55F6Vg4s!^S?eQrdyY3Osxzrcu4JNbBou2)WV8RR8iulUOP$l}fK7XkxmKW5HoD2- zW?1@~GKJ3SE#JBM$M{|)+ea-S`FTg8C;#o8`c|`VbWeew+wPM%kNlRae;g#w3@L=R zER>J%QCv%Z$<5STmUOn_)}mFrwg00oEbK42r)(2Isk89AzO%o651nlmoqb;Y*)p?M zvyx*vFb!3$o!?BYPfOTi53MPjuxO-+nliOLrYgDj( zxPn_}7L;g1_!#CJRdC1(`rbg@{I`R^&G*KCLptlf-J@@1gEKK;7Q~I&br4sotL+E|~ z@Y{*d2dYtPokajH!jz#$tzbDLb!t~fP&AxF$$JQGkw2nnP}06f3d);VEN{Jt(L=}~ z9?9Z9AsX>7SodT@g>w%^(9OcT=OnH)7#})KC8RV(D`7!K^6P(G-VPX{zR!qvscNOb z&Hpps;Eh}da71|%t#PTs1^m!l3S)!ldpU1%M2WcZJg;SdAJSGYsAsLnO8G;@X ziSXj*=r~sia9aP{5Gg|-?@Wpb_Mfnwm!a7x;e+ia0h(S_=m=0p_y|D6H!$k~Ne$xO zAnB=~*|0g4HkIR)^sTk=yY9W_>tFuF`~Ut?iyd$CT1+JK?Nse9uvc$-3x^`_nsL&^ zI1z5uSqw1H$7-}D*+Ry3geVpG1lD=5RT&8FWmN8x09<K2V73%pK7ok za5-@(I3|w&xm`{w@N{@OP*c2`M{L?cHEu2^s>p|~sQkuVPP)1$7?F~wKuk|{s|2Sv zegM-;xOzu=;Sd55n^rj1XhJd*A=Bg=CU&BS=vq_qZ;HDAFMIC;W>;O_`>sEG@7c5W z%w**sge2CrSL5jfN#Q>AgcPXE8aRrVw*GnSy?xHr7F(~!C*k%HaX`wsj7$vNW&}=iQP#$zos`1@m6ow1r8aES<6;k+?04N!coW zT=oEdKo6Ad+NVYyL=3pSCJY)K0rBq|Fv=v#Gy|3i$cB!#UL%)2D-zLR5Tbw@w{0e= zUYr(>-4s+{+Dh1DY}Tz%K~QeN`9VJwO{1Xa=3kOejk+{M8U)X~>zd4QY1fgI1F%CK;Oh{FOo)`Cx% z-iF&<2)q`5CGNo=5^nG3DznDgG1+?w;@c2yi|Ldt81t=hzf&v=m%PUR;a3Xq#gP)q zH7&H-M_QuT?PmejFu%#j0uz;%k36fxyqaMiFjqulBL|0xAI&oiw9l~o-~)wZg@Mwz z2Ko-o3O>Oh}iJ`i4KZFNstQHik)wPSN)SsqKvB2Sa)z7#Ie~r$BddXa+p{{%e_ufVn}h55_GfjVKLYx7b&d^;DnBfycZuz} z#Pt78fPQG8&k3ggcLMZ71AWdh{r47QZ&Gl%`#YD!H;5ia#z~;7c;ZiM_9iMH=VrYh zZ}%*)H#?yFJ2AFG+FXn~7WO6`(8wHt>OT`P^pTbvcVwfKp<6s{x$U8WVKVH0?T<7n zzuUig7KZ&U4VzrYiwygj*c~LaABGDE14l9n182^s@B7-<-}ctu_=}G}5wuP(3e3II z{8xPFY4z1H;IZwDZD#Q$eI^bE7m6QdY<&(#&})p17T7K{U|n3_N*Y(jN_;#!z}P#` zCqxqZyf|0?*+2QnH!NAU)LMu;S}Gk86F76ut_@d{HD>38+Q7kcJZ*S7wt0Fh(?OPO zEuikFkb>*-$L^cr~G@Gmf~NbjL8 ziDqJ-LllkM z``&%WqYt00)Zal;VJbdsQ*k6grA`CIOep&dKDA*cl*NwCyY}0o)j7Gq)5SK|G)dz+IaK_$CjyplHLA(INE}mk+ z%hP#Td8lr?k(-&{1_W*;bDPbXUV5ZKo_tWC9hEAak3K1+Sg~VPj0{*>;!w(BPbLvJ zd;|<|ZLgqr@M7i6!`q}P?5TXuVo3B_^$= zJtipKT39#8@)}&sdI~-k+P)>+UVE#ajMs(^@Rf_hj zJVfeFf1M3bVIly10VX=A$NuJ1JFpKi8??i5(uRxnh2J^-qD0oYOF~Y!>h~Rg@n_rq z`D-89|KihA9o?f=wyRuNfd6*u{DYZ+g6%4}%wK#$A6)fTkl$gw0Zlx_FJ;20arSLP zx6hd9?yb0wNT*1TIqgTd4z-?`6&r%(pHe&pe(S6hzD3$PghT8(^oRyYCVY^&ximKY z1Nnn$kSICUC(Q59`V4?~HLtJXjzk8Wont-pleP99d_*Ke?vE<%jU-e0#~rB3GK@o{ zCXyJnS^0sllYI=EAtVL$VR@5oalqFtTBsDFWfYJ-0y^b}&D?+oJ&KH^j*0f>4v7PNJZb+{L!Fr+Qzyf8CeAuCEz<#E*E>B`_Js_OpY zIDh+<%IjXr)S^~L1XNlTT-c3b$DC=-TsKII$nI!pZmP~|g3yHOgY-P!VO$oaPq#_$ zVM9j6W9$RJq8L(bdHykFGCEJYOH<(0Ry`7j`H~#dsVfUtYvKBLm`<$~vqM2?HL(Ls zidsz(LQFsmd z>Sihs`@c1UtGHXJZRSAnHJozRp@2r-Dfa1v{E+ zY{Qm7GAXYEyaIo(RFMH;0dx*&bgW;BBV}dRKU6`Q?T_j+h;fBWfxqe!1NggQb~z|X zr%AzaJ5uvQ<3ODh3dSnSJtyxjTxDlPp|x(**6tl-MZu{RTYF^Gz5O36)J;9|UU1$Y zLq@=?bGHeRYJ2au39!qphaGv-eM8#(&S^Lx^9pIta$h0mCt)dX;NFJhhjuw%DQ?J% z1C(<^QFcHJ1kSk?CuWMUBtEXs@BS-wR=B&&HxH+TONLUyDc@mhFtOV}zMf~u1qWM9 zaKP}FO7PaE!9&(lj$tD&5PUfq$n;0<0t0n#%Ue5m7gnhJ>+b=gquJ-p)zgqB1FJ_# zmfIsPDACs-wZZie4}Iu&6% z^7qZD6c=LUD4gRU5zAysRxvJ~h&TUK98Kp}Z_Vy%@&cI}+H_P0N2OpexjI9BQ$xv? zvP0n;I*qnPo}10*MEu8}6VBmuZ;Gf*x)fc0+b>7+wn`LUCdlJ>!TNYWwwKX3_8~#O zEO8rjwnnb`;VwRZP1(NW;(jB1z7tq|k2>Th$0+U6|V$wtTp`^X=iJ zOkieXvP)*@+pI`4QeNNHL6&LW5q*?s2h*`JnblD(EC^Qo6|T{@vs2o5dfTqDhl!Uf_wjHUzjr6q8gdXt`w78Dg93|#^c#Rl=fVbJ1EaD`i)rRLwHfIlWCYQ0j*}qEu<%3;(AXY2X zi#L%mru>ROYm~eA>T!<4fy150eEs8!WZ9LY;jpshz>gvNlkCWi-YW7yB3CJU&Pn;I zA*h|7-H+$WwMZV=bT|>oq1{YNSRkcxEP3jQUdzr6?4f&A<-3D zzmC%8wfPX9xUu~__g!#H@Pl8x^1;^2-KO`B5z5jFfP`rSi){D!-2M@V%(FQa>S;U)E3MmxWY* zBLoh5D!-+k%8#6Fl7L3@B}zB5gfR`I@&iB8@!~|=S;Yy@xS7`ECulSER_7`G=-HKXF@r z!j2CX6Z5heT4G7$E~ZfKP~dt*Fr_`iM>Jo$;APvb%ScleZ@GwR!|ltqDt=VFJCOQN z$UjWEUhve1BOJ*$oceGn$3ym0ABv2JJdF+c9k1X|ML$7v+z+QdTmj{-pR?0e4Djk= z_?48ddS2zC^ZaWIG8V!`hKz-ygBc3}9O*)u?8?zPW8r9(v2b*;jD@3?v2auw3y)(X z{8)f(HpJ04!b#!fwP0h%kgQt4`IgHN4iN55dx9RvQzA}!N<=av!VCzON12n}35j-% zz`A!L#E(`*{7%e)=0PA^n1j|{0k|37iGsnww-*vMdu7!Qfg~V2^l|`5h>wy^!~ox< zdVkehw_e6E&_a@cWzI7LO*!UOpeX^Ctc#qiKKOxwCTD0HKsJvlFC+8@ayUOPqw>1p z3@8bTyo@FeuqU?EX$o^I;&{`cyo}1$;<*$-8M)@z_&z|CyzrW3HjC2C6=28kh)j(3 zXth1!uAj1zY>Jjek?i4o#a+cnj#yq;2=HoEALl3PXB67NPqWU;s3XN`u}NaTfp4wG z)zr8&bYZF2GGetDF>r5fw3}Si6L5oVB`*;!lQaq%f>9sL%Sg2PU|vQ6 zm8x^RusmNWJYA7o^%8**Qjtm0CiXXva&mWw+JlcQYp+pz(Rj+hL9)e9dxpm4-1Euy zk)&~X8Ulu!Q2Wc1sp?-I{o!=J{e$7~bmDEE`t&VNa{|;9lJ?V2-}Cecq4X>(-5@j- zb^8m`RYYg=)9$g{nAghmqKTBFY!hkkqj#Sh*?$MhU!{uZL(C@m+h%4i)6wUx^1b)o z`0bQ5a^bDRXP1$;j5gL@s}FEHaPJ$|*v%Yg`2JP-dT#RQSJseXW_7pzT4lS7q-yi* z-9>zJk@g>_H|O!qhz|De+?^{wf6{FH&oAD6?*IMDdr!FV-v8~M+1=;<>@VoQ51c)_ zTW?W89^2Kq4{qB2sc-)Ct$(=t-1|Rr=O6yg-}he3+qb{!rkR(&<=Rip?&kd{G!)J3 zo}Hal@&>wdv+@z}>s^a?)18-D6Q4PIH=AXkugEtvMst*(d-P3YmdSA72?|NA$d_eXU4PhWR0-9K5K{@o|DrAwDyb@uG+?wjfD&9gTH zas6T2ti<8|0JDDJ? z4>v0FR+GJoyq9zzYbK-awn6BAOc8FUWI1Ewg7Y9Xc>)(uppONvoph_%90wvPphNwMY@BEdF?Oa=M*vjq{i6w4|CG(liq?|JC$SI zomV?D5!J(YSjT{DS8My>bh&C_J4@a$tC_TcuGkkU@*?T7c2=oWg|*h>+|cQ};X`Xs zwTMH;TShD?`5i!O@Dr(qE}V!duIW~EGZ14iiI6A?(g*6ZQOCI$AEYM`$vCc|z^9{$ z{?3vj@_;CJ*^+TQyADl@j2?`hrV6IOBz%4)^4Tl*^Hwi{*HE*rHIB0DNFESL&j-3qBwDyFK5y%MO64ZU-UF#Y6D7nWtGUmM zbV}tdJMT5Z6l1VWq-UDFP6Z05AlbJK;A=Yg4!Aob;<-%5?edzxnTyI7+T(JsuAg{x zF8EnI@J&4`cRfadj@&74<54+TZmkOVN}%5Tn^rP%WmCEi@gxAc={h9v(1f%#yWS;T zDd~zJ;aC8M4yS1hsS0yQ=?|bP92?XwqJtP8V*SRp<>NaB-xy#bpTWF=@@^H~nOC=L z9;V5cs$LpM*ql{}rTk=4@6rAEa)8?a8_;?xcJ7i*ByNM8Yl1Tb00oL@tDP5E_o%nX zj6D~Vg>F*g8k%P5RTmo<>Oj{mYN^%nV4@xBKMU?EN@sx3)!5kB-{%?Z|3`7oSfXRc zQecou3EB~;WKzcD>5By*;Ff&*&%^>6Odg3?HW`Z1wYiO%PTB?;Sb~2NdxY&GZ=4#B zof)%{W#o|duB{n1w;abh5o!oT-|6<%(~3>PR>3Y`Q>e+aBE8A+738wHefsJ6ZChV# z-@xMiS}Z_qN&ka4vWNNnl-^& z2Ks{m{qh#I|* zVUAFvOQe)pWd1;^)7AB|yhB`-jwD;F(oKwk71Vx@13~0h1hM&SsnS6pMriq6RF&TS zcr$5VVRB5irI-*y1-X;iV}vU^^#=|k!TC>RO|E>!WqWogAd^IZ3>3a66KaZG;p8Om zjaA&1_6j?R#@-bcT<9WgA2L$S3-k`EkG}Q280Fu8rl6U=6 za_R}w*AD<=eZddG%q)stW3QpiqPS@PlH8s0rkQ5W-bK^od(|79r(;bOqv26O_$U8H zf2kN(5aAfB$Hk}-8hj#NR_JsI4G9j(5(bj=y+l#D##lp98Chyu*QuAttb&gvYv>jo z(S=hiRkTFOc!az2@91Scp@L&1l^d(o15UoCi0dFLD86=$(<;xQa*vnnWa`Q#N*1y%o@B_ zW*ty+&Wc=Dq}LV=RRFfqc8+%GJzRvYExJ}A?a4SV0OFhLuJu-6)=sAJRQDv4ns5R9 za3^j`{GP*IV9;MMnJQPhw{OG*lW%Hs`MJNY{d<*MtGs{k{_g%wB12Q{ztncCzLm31B4ac@IG^UhhUofOTCZ;Q4I4`e~r(T|Nu=%+HrYPckd;g~JpC5y8k~`mz^ChgMrGO84sSO^Q+!{PIxgk#)2NOt2we%38{^c!P22VdcIvh;Q;myIs z(gaLz6PN_0;Z{~Oe8AGrhz8?%;a~!uu|tzdqj_fhpdJZK{!$mbJIAj&vroT(iTnf+ zI(UeKLB^rU4IP>c|12Z?;vgbELJ-25prDF%Cb@h^SQ}ljFvd;zDP0?rwYdqVEBLvN z5$wU)o#V*`apJ$rL=KTc&y0SYAKbSJA&FC?^UjQ3KtaBl)e{q$mOmjQ_#azL zI`XD4x?IOa*kM}MMc{q|F>_akikaUKV5@mI88<1(C0L$hTa581w`rT){kb{%V>@Q% z8@jxJLf*lJwVbhMc(HQLc5>e^K#^PaRrXk`L>1Ww>E`D0%Y3muicU9>-q*jebF%qt zm8Qx%U>;cWx2p0jCh}tU#ZTlNT44@3>iMVg4xN4nQ%4q5Ll=kG>fzC@3f?$Nxqr#S z*K4cZ7PCzJ-s&fxI(o3NmHR>lntFJkjqfpV9r@}Td%h?xvToP{!8q93H65D%onvVS zMN29tt(~d+KEW4mh+dVwcL^)04(lLjOL~)*Gl{%hRG4HqDWL9JpUx!3xVTqseg13* z6NV%?sa#?y+HWrAnoRpZX!IAU)q@A1qHs&U*h3?rS5-BjRG>4?zJsB46a2n#lK*qh zi|Cg{ty9<*_JF)AX3l;s8$2zUc@JAbWweYCJr!<%*qS0^{fE@c}-cr1wszepc~LtbKa z`OC6~-C+xgQ}ztNV9=p;J7|i19N%~u!A4yTGPamsBX#-cnl3&}eB2fb zFEI#ojAo)j)f{ziItfZAp&jg^b$UlRyYw>SZ?MU-Z;pv2l+0V;!q0vRtEw#VE?k50 zM}pWV_okdAu-R_BmrhRB;c{h4sZn_v7*cCc1B~R7JiFH1n523@3WOZyaLU%=>@xAu zh#s12Dn})^K0#ZQ!$^nffqU!WNCvof1k3nqQ-l(=CC<_$ycIS4)VDA?Oaxu(qspEwpa>O1^ZO=od~rD~B}jcjMi)DSW0iBM*t27w3H5kX=YUFBTn zgQOJg>4A6N*C(ZPZvWst+~Na+_j~&{M(~~IO60j&5zV{$mvTW2tobaLfi)NV6{sk> zo9S6GCk;VUBI0_Dn1#>tikU}~5^v7WsR-5WUj6dQcKr$u840gl-)~KdBN0%LyC`Vo z!0g$T9JztV`w|9tmJz8d<-`5b2U(!m|1O?I5ANbFIKP9it1Vl{P(IcF?(iP?Za|(7 z4@2QKx`W|&zkYFDdVpWGIH%u%$faAkS1YqB*8~xfdW-z)Z|E1y$XkAAc<~yA<5=X< zc3r{R@RvEt?&f?Ity04~pb_}g?fnqiZ6Zq#v7}`uyzP;t<)NU6f82Cy&dVGMr?`uu zGQ=xcg3oF{UG+pP)pk)ObPLrA8S^pFB^Hc8D#!g_3VtK&y~dGeGfj0bt(IP z7ycn})o*~}3M-50mie%Qn35J#TJau4Jk#R`dUQ^2-!{h}K2TT#SYlVA@5eHJ&2C=B74jnz*L|d!Hqmw`;_MGc&e=z@7_?~p&3>< zl;m=l?q+!noa<$+!AY?aYV^Tx%DLW(+-^6{(2Q)xMa zQ^b}+R&%*a@b?Wy4TbA3k}Alp_?O zaOaPwp|VDKg_NEsXt2QRK?E+wN40ZmsGW|L|IJ^)gQ?}Ow5qRQsnMtVSFO!_gUb+# zRsLLhF|Iu6MWoT>BVNN3U!IG2Kj??y$>axiq_@mL-CM3hZ+S#-)tA&;Lv~X&)>^YF z;xTG`??BT!03co>Xbc^&rqnUDqNXm@F=y)9g%o9%(iu+1RZm+KbM}a&7_{6X| z8$Wufk_)?SZ!!`?pc0|Ik$PUZT*XN_6okp)p2^XHd`MZwU4$6~7W5_%5#Hq9-h>t4 zT^e8agI#pL)<{}!Y2ef))Uzp17~iH!v#+AF3ULLX>EtbCJMV5OI-fs?Mo|~ij)9_#FV@kon!ulma2zbtOK!h9Pq*@v6s#Bbh{&PA^_(Aw0QR!R zTkOsMW$;aGSj5)yUAgI^+ppeQ;QDr&+SRH>h;qOOJ_(3^phH3=0Dp5!>2iBH;3UUL zJPyWpAY_SfTwb)c6(g4e)+5tPcWe{?Ktk5(+$^-5U4!(Q?Vy(Fl{+NX@!;~JVXtWm z>nejK$vcP@WQk?4Ns0TY=0Rv%o&a=UeVQ{sH7A*4eLC4|rJ97!=Jh}-2A*wfng$h9 zWmCOO>EN~^Rku=gi?3VsgZ8SPG_5DiZBQWfmR7LaY@>Re9ip`Wn2mUzp5{zx(@oT{ zOMp<0Sg}gyNvF8?O~Y1|QeIL{m=eo;mfTzD8>_~nMwgMr7vq0y>&D17+tMWiOP6Tr zLJhp9RkQcBaP@myIIR_{P8*;&d_*jVjiM0bBx3ThHW%bKyT&k<5HU=ktOG_l_0m35 z)AT@FiWCr8WzQ+0Da$dLOfdxw47sAnS6b*L4T43O*%-yrM@KYLZOE!DRvA#N7Jh8= z2GhQ)9;Uu(ph(RxeGZa(5pkbVjV20ILlF;$;2(6 zQx^wJ>ijQNGU7FKyar2r%&~-w(9YVm19quL73f$lMUetCtNE}KPVwqg?~e8lVe)f% zyG*|wDn=j0ma`>e2+;kU)Qdn-#=5iGN+}3uz@;QA0G8~n#>>_)5proljk1a$Jv>lZ z!)_(eJsrJmnv?US91^$BxXhW|oES`2W}679LSsRkww{uTe@vQq7!bgo^@~)!JI#Us z;+Fu^>?O^A`Q)9%y?+7Y?pGV6QEI(KOrL;=UW4fnPr!7rmspuuUT}Gh^>}<%5l$zQFvou7qzxRSH&jO=#L%EmMR-^)QyGyG~u8>d0-2#jBqQjJVSqAC!xQ# z&>xyrLx1gUMd$JYF0w*@FeU;0DZ*yN(BFvAA7)`gIwOYuV2D6ChW-pqMdX`)JuUY*nsQhxYW7D{vg&w+CiOKfwF#m`_CcWs7-!}g@q@6_#B?=H zNkFVW0!qIuZ>~>pMmsN=qFJPm%Ur@X<#FZWZ>)U_KoKznL0DLK)nGIGxI9{)gimi= zEb+(cP&O8hc|(Wa0{G~F;$HO$JU&H)%}|6PKt;f)oWW~HuBO0M5$LYEws&y!gyI3X z^;kBEsD&D)NNKG|TJ_HJhOF`~<<0CN!eQwWe5vGc@IKvN<%z_E8`xfGbHxlunwA!! zI$w($0_e;?#-5-#uy6>wVW-;cfNp>=xGiK=O{6_Umb5tr>39n;`}IQD8^-+M-zls` z?^Z#o_{l9xlXM8_C1wKXB`H0o8j2J*#ufjQ)k2r1RcA=jkK;E*iCG`j88&?z`*BxP zjEdJ5iA>L`*G$m%UX!tAdu_o^Q~Mr)_uO>B>F?sbI7_|I&a|Z=d5h6dpE%|`Of#Kl z&J75eb0dHOVGhX}C{gcBOR4qP7)YKrY&!GV9(VE zHW1I`lJadcGdX0BucXYT2EXR}YTYrSK;g8sEV_siud>^+-=;S8HT#B8KcHwegncAh zKmlgmx*%6UA8UwsP|!yi@|U9k!)|{Z>yry*)ME^94EV}lV#w7?UJbKS&xbX{#MK4X z6(s+o;}3JjUUSbqTd*av*(9;rr(OvIyWc`1HxEl-Nf?x`y&7YTU&}Op&}5hnOWqT zMaykS)l;) zeSsTQPCX!HndN5A&fD0eRC9D@JjJf%{j>N%)w+rwPx)fBDCk1Jri28J@#N(|?!WSy zf4P^huqv0=^WZ{0(-=1GXQ7`bg^$`vK%(o4YY)N=aF-?wvqHFB3L@PeJGT2 zL2U0D0(g~n;KU(c<~7^$6Dj*3V06-@7FvH{p-dGX;BPLrIkdWYQGq!GPO$mrf`cvI zjL1QlWqV5%z+ZTP|EQzGQK%qn$8dl@nnw%yhA_eyEkQ_EY;|34zVs*o{&)a_E-f|_ z;@!PyOR=n6cj4x8or3vIPGs5@{XddUG1DV#+>t7je_m&#HvXYHBgLXM^^Bd$oq zd{+Vliu7jUlKO?*i&5%-kqPe(RL4G->I==Vbx5ZM!XA8zy_paIkmYtO!A@qu}8DG)X9Wt%HB0k*^`9N0xgB*`0OjeM;$kF{3@ zV#0Zh+$XJs&MZl_=pZHbl!x;45-4-SHx1s#{&=jwi4b!@z8r0cawJU12)+s*8bf$( zf-}vj0rnd8tq*RTU{=0CDRyZ&av?Wu#KaY4d}(fHqsU1VP2W06kVK42#m_~<^CV2L z6!e+|2@}#joS+}+L$Eweuqw=NZ!K53y@b~QE2GyD^EJE6G+)XAuxxV=q@=F0(M48P z<;x1F_dwc&A|f)(Bqn`o$CF3e35)`8HJe|QkA>KDq!;U^6sC%llFAhP#JgivY`VBN zc043cAS5qE1hp}XO&>FH-nz5KyF(H~tux=Fl+(#5OIaBRu6!a99?REoJPwPmV`CzA ztPcL*gJdctTVTFAkA`uVV#wP&2JsX*O)MiqanfKZiB$5FNJ%h8C^z&LSz-|UIugeK zzno{Z!$4)Y2_T5JE+1FI0ftzGj4K5n+ZFYRfgl6s4Ff?}@Q8;W06z(pRK6ugav}nJ z{36r`qE+;wXfS*hkx(N=fH!3Z*6?|WrYy4C=3>rlh8mh0@dPX{yQIbjpoWf0 zPr~6uE`T)>kp0LXooJ7^8>_zpSy)}tcbkl%I)q-ZE7OctK!D15)y6;|U5h*G;(u& zByFJ`QKi;&-zCF>f&`>8i3EfK3(aH`&%7b>E@D1!i>wZLg@(7tYTqKu=fS##rB=9k z{>JDmcsXp0q}mv~akPy=MvvuMFpI)B;O|txZ$)F9(VkSF>JG zL>Z6Sl#8LGgoDY4XT5n5I!d7&n{^9Tl*Us8-fqSKblJO*3o2-n6$TD(c;8wwhKfI7 zJuDeRb%{;jAn?LuTcB#Fy7kR%ScXVEtOwa!~m(8lW@|<5< zqbjT{>6d{O=qp2L^oOwM2&5mV$H3)tID~ZG5Ym2k5%d=s1Pa$`CEERA{EuFVWZp0a zW___iC`ca+PV}b$NJ}!td|wHC9ATxSdG$yAX_A54Y!+pPQ3X>owUYJn;_gGug-5aV zB2k5sJya_TKndlS{&FsI-iZqSh?`neJ@zv#Dz8F37mbjKE>2&ApgI=>RWqR^<)?=P z)sns=s7~<{zCu64-maw73sB4AA|a;Qg;aiBNIih=10mIIDUFhH8=a4XYvK)EcIWpMABo9 zU5Jo`ZF}rO6Cuz$Nm9b=K*o`Hi`)%m=`i<@uDy){`NCq%oGja792q5S84{kJ79$Ga z8`r>*RVDPctXO6V3ehl(Sj*5MJksF+0zn#=?OFme8s-c#E{3x%0ORM>N=>2Eq#hK` zHpMGIGBiKNhCn-?z)zN2-;N#VC&&`ZK^DrVpa-Z4rF<N<}ABJ zn($<}*rtLFFV=YYiA7x5lVskL%ms91n4s@+oO0e8HW!VJsjO{a)_uu*b+3k7FhSpV za>OGRxM&(T(}t@sCD+_EweY&t@BSeEgi*K!R3{tE(a z{i7N}g9;4oZG`^lrOwm=QJUn=c^4N-c?ZPdGGYsd214R9!z9kYK_8^YuqI6RK>ka~mTBI8Ipusw zr196Og5A)w9|EQ&cCbxGv@=a^7c`#{5e^}kC%oJpn%HOSqtVkN<#L-uk*3D+i(x0o ztw~ZeV$3DnOC*164}_}=rc8(%T?{_t?!)Na_k za1%}C%Wu?MRl~E@YlrWd?V@=}^W}<9)l}pw{EB^o5-ZnP4t`F6E&+m(;~P=>Z#(J3ZaQ zb81m@Bx}Jqfmb{{5254bfv;c|aO)ERZNdfRp~0djq49?Y3P258x9^;tn}Me~jEp}0 zg?HcaH(z=89l!fC#E$76&SckCc&_`f)9j=`dv;Iwy*2#KhTj|XyT7Vkm`BPn^?p5l zE>;ezuD0bXaZnRNDj%f#VSWfyjs8isK<%H@FJ_B}L+$&*?_K(ZKbq68@DxPx)M)g~ z=w=$yq_8~+&lFj)TRqg{t>{(vs` zB=cZ29?EJ&97{Y1qqDjnfKkF(;_?9z`0@sVRe)0u&4f)ue}`RVeX38^r#B??GTf46 zwKySr7?w-s*-UttD_Km+;1III z`^ap3A_sa9$?u&AXA#xs{o?9-iLXw@=b{?Z$srZVN3m{(+wO&n++Bx z!PCI&PEMhTfY+$po(90Gs;ml^WPhR^FtsHoV@CFAv3?AwFn2ncUx@f(oyYo$G@`*M z@VG}90chODWG__+05Ci6Q*E?Hn4oHfs7K{qwo*!W=GZ>QHI*UI)l6=+SqqP6H#)%u zh{q6L0=U#lJi#jWwX)Z|13BU-lZS5`gNdaS;xAt~Mn`dL+W@dJPG^*#S^7VU^Nn1td9)1!w(lJpPj-q8Bv z+WK7ur{2aINC*jn1(_PGpq@(jEE_r0K`fVM^A^bl^q9QIRuvqCImL<9LtpIJE&b6?LaeqHKz?I!^nW#fST3vk>NwDJa? z77p0Bo>_sbU_lc2r&)n7pA`THd{W~KI9&U94!0m)pX2G$?49_xo)hUjlCO614*lhS zl?K8UkC+;aN9Ln6`}?e1MYtL)GA2A(2|G4#S{jDf>BFgUVhEGf?0b7nTr(inIj`UK zI015h2dg;=7OGl=TQ?DzUlWlvNYirTt#xD4OCwx zO3R>d*O6LjD6rC63Fl1+WDO*VBSsw6+JjXrWZsGinJ0ylf&rz7teTUUHJd`rwU-AY zTQm}!6w{!+fvO>KIw}@+kIE-$PeBJ^7ZG-41uVXAtH_{1I^ViL&>%up7YG_8^4A4| z26JTzb%?+~FoZe`I|*Bq+kGY>7(yD@{Owux*LrEE<`eX^-%uuQ8v*j-^~t$xepyrs zdT*315TDeD4;16{6ttKEAeR0O+UR*K)TY;{z6hH+jXH8&Dbl*vAs-TaY=M6Jj*2SK zwtIro|7xYw(GhY`s21uxRah74X@D$#CHu(*jU_kpj^SL;@PKEPj@mG%w9wDEyx&UP zbBYFICGO#`5mfak)_I8h^;NV2_sn9d%xjFAjPM>{BDutXG?~1bQ25BFz~iq;Jglnl zX!ESkMrqEpfr$GLSJ~8tXujx(tjf zr(w+n3oCMr5`A_|u zL=K$JWFXI0tVe=ctCkIw5+Qi8;cr)22iWh&hbGuZwjsdXRk-q>a`|bdNIgjb?S%r%zfoBT*$jnW->M z3AG=#WPFS+Z>TI8cXCr(G7cv7B0MgdEOd~FH>xg`F(E7h6s=l>x&8}xQA6LHVOSfE zTD4Hw9*O(XR#dhNROFK4Nl&#^zsj}s4qfmr`!f+hu<0!&8)-%drkIubG!HgJ?}%X{ zf$TRHv35W-Kf5Cu(O}mxOP28p)DDtQ#50&GRzNyr5%`P6EL~{=&Rvj#?GQGS0MMHF z^6T6OV^>suwSRLwR-$TJhb&(q{}+fCvhQl7y0 zW=!vVs5W**<<;DT0Upno6jtPLFf^)pj;B(NF*uF!8LdJfcImqk0n!nyUyBdctwO|% zYoL(HFi@s+`k_Dm-1~p~@AmI`JUG=JyQT67W7{sls_#^LOlCdy>JKw8&{OcCRjNRP zX|1MRXtcWcXftW{!xmdcC1NscN~aJ1V|m=!NImnM^erXB6Ibn`Nn9Ot7d3SDWs=iU zgs21k;r-3!De8G_rD#?Q<>IEoQ{_eS!O zg^j@JjJR&X+TrXQ?d3#0A8tsgb59emWlRwfh4#K3g+eQ95#;$SeaB1<9ZHHJXc;Rmf16#xVxuz zym|Om8K}gsvSKQ4iLSz8{0MA+1h(_Q_K6#nN#l6H_ACG9VEeUZ9E&r?PttUkF^V{m zIArH!3gw1Tpv2gcx5MiO>`(Tt2j2H+#aJYu%5pFFHQj|M&kf$+)xU}Q2ckz}s-2#q z1*sV2sDCzkB+~D68DXsd0y}Q{CWzNuIF$#!c}L8KMB4aSHY)7%c5YSkd6c5us90zC z(NzU}neZ;e*@RJkT}6Wul3XGs85Bfy@e}}SioJN4&O;-d?maj-lEc(nshVvB!enYt zV!@0hHH9J37(GdTJ%c_*b8HwIqXxEvf$cQ1JT&HLWBgVd)bLn+jMb2jcdXFUFjgj| z{7DTlDhGN=7@G?{Kh#oP#fY%(tL|rWrKqmrCIqL(L}>BsLL<|~AGH%DDh0w1D0~`~ z7IL*xipbn!X^Zh^bjks)uUUaa3WsKP6-<%hpzt#>3Dr^_iLC^HoDIYY{1l};(g%vy z6^FP<^_aZ}0pO=mly=i8dtrW!0x-ZDUeZkXfw45D3^i_uHc8D&kEtbCv2j^BBO(_< z0;Qu5m2X%uKq${cYFazF>F}I{2BWsYct0Gt){@dox_v!H@r`K_8jSus>XEvaom{v= zhHJcR%;lWCBBF?f7f|);PzFryQoN+h5H9>J>rkrA#jR$_%uf7WSIrdSswIb-vJW*= zWQAeQG*i-^!}6{VGga5@Iijpa*|W5ZL&r5!sdf5vrj~Cf3k3&QEw#PBiZr&+>nb4G zLa$AA=qgB`9?gl&W8MlgQ*dB}nxKv;#loJJr>Djz!&S&7?A?I5^;esht_5_n$Enk-4GytA?EmZ3c*xIo}rE5$Cr7`?Z z@oa%=`YeGeZXVX<7YRD#*)JNwp9MQdhX>exk(dme+Xgyg^Qm!&1Glf(Bdm#U5A+DH zz-Xiu3w18?6cAQLr^aV=dmv3IA3UH{j*Ck{9IOP1w1ttRF?75qr!sE6CGmGbkpK;X zzq@wcSYLV1v$Y;5)spF^mH_sL|ycQIzQ!^M*MFj`Y zc)+?9mG}V&BWj*X9CgAt{oo&e{r!Ko{i}CA5prQ4FD-l=a=wrN&Li@D5jCRIMgX6) z;VnuFpKSv8T=jl{777%N1XcodS<%ABn(>HuJ&}o;60WVb(b~<~*OnO~2lFT|q$rPK z;!K-|2}RmG2~2<*o(8cQdrXU&=kd5$6PDCs-uNQ6tzkZOB*V1rivkSHej)B1X+^%A zyvdc3O=tMql!Za`HhJG1AwwyS88|-3p^Lpww^2WSf#8mHTpFFp{;R@VxjRdNtk!Oi z>^|n2Iq?1@ZxDMW&!kB;oX45_^&w0`>w{K$`?z;~8}xQ%A}g5m+;CN)N5? zvsZ~wwUw$v7h?tPS~}8(AG8G(QdgV>ErP|!CPQihl&bu^QLLvZVVoTVg#A57)=3Jh%S!EcDDP_BG;US3bA z)D5veiS-2xtz{$-&o3+ue0*u8|9%mF6^(>ql=}Kg?bufotR1Sxl%i5&@~LbdK*rA( z0-jSSIDFSZm|XrCIB8*O;XiTVAARg64%(z8l4z6EERkmy;6y`8^Hu3U8Wu z<*Uskz0#5kNUYI~|3f)hacVdtQj&f#4|YORLng;y3uFgqYEy|a za6Qv(_N%wf%p6b-U@TTc_XHp_3Yc*FHn+R&;cgQRh+{Lb)z)7E^k$C%>yybbP2`wO zBulP|{M!W+$x>({ZN+RN0Y+=g7`J-)_8!M1Y6>%)$kX!q-s-o8TLne2X@$a34+(U% zXk7X7=~n}e*&9Qx#>T3%DO}#Kr(q3$DJe5Vnw6b>g7yumf-Aqh5d z^jZmst-gnqXZ-=Kx&)4W;DibZ5QXI!X%x#}N|z{*nN}$=K&U;ynPh12ypnz`L>Ks? zfgX&i;CzK?&@gbbCmIM3+8VtR0OCY3VyU+07-@?VU94otW$fqiCHV=UBHi&|#b!lJ z3ppkEiL@gfBRS3pVx^*RB#{XOif#V*IF*^00WLvFTe3|CGP&?1H!1=SGLqpRDr>TR zgs#uKfy=fCgLD00Rd}1g_5s3O17`E4&IwK6%eB2FbOu#y4`nr>OmqV6zh*2P9!jXP z!Rzz zwAZRGyi))-V@q4OC$46BAq5`hAkrT+(+RHnFnksYQ?#l0v6#t;!7`0A(PaxTgvH8n!bfUL>+O((k}H5TXiQ4yM1-#T@l{$0JlL4J?3WGD;)qrOh!^rGY5Jm!`%!G0QX^l?n@~T74~;wRw#( zrrwQT`q(b-TK&r5m}#%x|28+O#OQqJ`L|f?mlo+7&=q-0KekIL>#h}Jt7GRHVpM!Q zoGE3OB1H{TLZ#WG<|uc8Qv5M(oCH%gFOf^ph|YTh1z9%bvJC_{jCc(!WmPY*DR08_ z&bdDOR!b~6Nji_A{!lTv3DB}7yTI7k3#fRQ2VD_(P=4V-8#a@gmmKF6t&oRYJGwJ8z9DW=pJPBEimIFXOIS_P>mMK4z}Hj$PI=Bdwb za$9>4J*N#_tK{tQ6{gQrnnJMv+7xhoy*BV$X@`u%h)X*K7EENY$Bx4W$(saf>w29X z@dHq{tw7L8>1hLR*rATOKV}F|_KTn1qjN4^ z#7i6meT|s7Tnq`M&~(8yQRKm`=HOC$s!Ha8sYz#p)=#V`jp=8Kx1Thw5(mDIE$2>J z$a0nn{6Qo83-RCZv!2^dABw-?ulwd%0Zb~|L-!y9IdB);!JJm(hj$qtOl{#0t!1Ah z9spEhMcKcmtHBC<43SdvAQ|o;@3@8L9Gj}`kZW4(YR~bA^$j=*cUMu*4k6$Er7fMKJfm6kMFATm!4%ir4AF|LOKu zW#X^CkD~u`91Id_JAC#Vc$ShjVgz8`5M{htKdRq~q7T%Cw-k+=^X6{WB;7sh-=*Q9 zs*crc-mFXBptk$BzbZ+s|NiT_4X>`765*+udHPrM*}Jp3_PZrofxPOk4qy2zjmr_T zc~rf=ZmK)`e!xS$k z+fVkKF_L;Se{axf2-W*h^tyqryzZj$=FoW6?`nL9uY8?GOHYNs_0t%W1ClRYYRjUh zMfJhDIn5}q41c4gVTtQX)Th^LUK{n?&BBQAnt#WcAmvlL9#s(O-1SJ=7NJ{Bi#8C` zk~b9*$Fv;dOrS@vYS5>uf%$Fs=QO%`Xyzcl_510K{y~#pwP~&bn&BH6Epc}eD3d*1h0R5m#z z2gGe+Hz!T}RqCyTwvh5J!0;91!xQuV$Mp$2sw*v*=|ByI!3(fV@AK`Y+{+b28$#dp zP7E+5nzx>|zP?P3E#9*5Y<4@Awhhq*J~%6vK}_bipG53VJ+&Ecyw2RHxmZ`O7b6v_ zK+Mf{LwvjnbP{ABlXw{8QY|uNp(fQmth9xi*u9o>@k+=Jeyo)sgusq#;&NH;5IRMt zX@}E?1Wz6GBV%KsAqG}%dx(A0$-bZgVq}3!_Gkj*m@Ts%zOw=XD=@Db(V*n@p6bne ztcre96?K2GigFSPMdXI_td0sOA+i=;xkqZC@exC2On7e}ItboK*C^~;Ieu$D<|80ba`UT>6E^zy)K?&$@!q&1spf74>s)u2H)YL&>48RO< zBIPh3h0<6Wg309dy$RPg(1n5MBAerZ=pwI~b@A||Mj7?G8m?Jg2bQPb32^8$c4DP> zf|KdgiH-x+ad)C4v*18G{Y?>64;u$S1<+2*7powEiV7S?;-56UDgbntiP(?E8SyIU zN=8X>mL1>f2tc9Wj(#G5fm%6*LR!db7#c4z zvKlDsK=4EuG6!Pm3XoJ1EUv;X?c;$~_NflN?W3a;9cR`DYso0zZ!XN{@is>lpw9mC z6>Ej8(z2r>UzOr{R%B~f{MhNSa-cI7d(lQ<&zm`qs&UirMP`@Ph{I~cgaMEr%#hyl zBO~r3)-!Ka=_{gwkvBMVtx+dmt{+jisV%x%o-fmn2*4(L10pw>ya)xKQ!}M;H{#e* z9(9$G!2%CNof-vcQQ|V2VoRvP5=(W$ESPJuxeG81m9e5guC7>7Nn27ip?nId*wHZ6 z-x}SlJ~Fz=+bl@kV0e`^J+20sRcqadw$)D!M$wr8Zyj1BvL8@;)u~)r2AFe8R>H9x zmS%UEA!KuRNkh?cD+>OV6}6UTV#+n>4NHgLC?9mYGLg2D2v5+&RhTNx_D#r#v>1W0?%I2J+8zSHWcEOYEcf`Q z**8~a*Df8n>nVWy0Ai)Rmfb;)kICd9YDctO<(!otuG4)JfM_Ksk!o>_@TLR!fbG%y z1S7i-Ttnfr zH^RUDdJ~t2L$T~?hx{7Niycz0Yz3RkC#`09RzBXVC%5=p$bcMAuWL+RGyDqjF1Oca z_2{x{R(K*&`a??vsg~Kq4iBkD4EF|;Xqu=1KGu?x(KOfmoojhncn3HWCKQY*`WPFA z>Z@u}XjqOkJ`kx2f8u9u(n9bAF)CSwcnb|%y`k0<@)NkiZQd<5{EGV;f$Ph5a~RP` zdFR_SmrBsb&J<&8olyjJ`BvMP3Op{~rb`J9Pw;wKls7Pk+2@x;!-1(6pf?G|jFACd zJ^{#vV?;g}{Oh$DpgA^q#Lj?)Qk2PEV3V#bu?~Rfs%^sdf^Ems+fv@7mhwjUUx$Y& zoHsI2z$Ek*6_gEU_3?9)8w=ae?S%FPzUA@|b1j=P=un-k@XQ$1rFC^w-Gf)BpFW|Ty-?3RHm-V zR>p_nVyPyfO?o*z-#8*u!>aUAOL}xubYK*=ilrq}>u4}rEaA$@@oIgzqPK+-edp?)!U0vo}9`wr|m+Uf?7F@E4b@}65?)S@eTt4WR zFW~Y4zx)ruBuo7Q!Fg@6=zhfIx-fMSwA{#6*T)i9qS&+u>91ozg8v&S<|N4rs05_p zrjtlbzKO+=NeXv@(S8V}^zl0S?9Vv^(GE!rc`&q)P6A-T zvNXZEQaTbBrpx`eqmj@ViBb372IenDNY+7MUvL%on%Zo^b(BX&TGA~ODJC4)T5j0| z<&~IH2WWEU8kssj{C#$7Svxmz3XsdPK)dC7WMH8T3i{iwY3iI2K2 zQH7ki=Z2ZkB{rihLj+-1rJ?jCe2iH~35`{mN4k1v+GYA{_G-a~6+*6h$q{khOW^>i zyVXfHs|~25O?pYs&=AeV$y7Q;5x%CaeDwUHF^+5jriH0%tSM50_Q=qP-(-|rT)^^j zSs%Zryp7d)dOWg26gfJO5eq}8&7%Ess)D&0dHF@!Y`LQHIxG7{H}EB zu7HnXb)~zdYwZC7RDUK+EJznW!|ve`x1eI2NNHohQ%xPd>064?Fm=h65oq_lG&9>Sk_uhjX6EbC4}>3j`@Bv^{@IluZmGLDJH+W-MS zlMF-Zqi*>RAHPqt{nXv}h1uq*`TPhf1)XvaW%Bzlo5Gzl;W88(qbW!wOLzsTGFr2# z=mn4pjA*(CAT>^zh9f~}RnB*8ebl8wFm$3pb7I@&7Omm+k^oPU;3*tTF2uxq)!;4b zWA`(`Ul^lE;yx2TlxO;Do;GxQVriVDjb>}4J=*DxjZZAebXKoid6@7&`;%{QIzVAE0~VoApQkqm+5EKjrVk1DqqXS@8}_}J3=!w35xhG#lh(<}Y*f@kKiXAORF!85Wp zgzrAze|9XL8LvOw+y5|h2905;^fL>d$>GyGdf$R)o%-253!Y&Y3E$nl;2Ah4Jp06g zXR>5?dmmfy4DDEWcE^He;QjDyPygAmObqOH`0(BOkP~)}ae1NL;ltnRw-{y=suZ4G zx8RvkOk3Wa^Ph>hBoHLgsUH!p|346}Z~V(6LZ!3Y`bM-L5w7NQMY!&I1S#W%<%5q_ zv;998;re@yrS8Yy-K*68hUj^{6f$kX z6A8PY7bvZHE1DsV_T($b4{BIhs37*W*PlhnBg&wq#D=*6K>)9xOUhOMwZOCU=S^N9 z3okaG)#Cr^SLO&Y=NKKTO*k&tbX&Y-+^C(wh@{2A-Kwrt_TO!lOD-ZV3IvTmXgCYF z%~>tH2S3Ac!_se@eG$ihiV3mIASfNp_km)baUd~{s7S2bk%jaUI~>~H!v!G0P3`{3 z;>O@hIk#60aY$~-8BKH+zHN2+7G3(O!B>=*+b4Evu=oki`b3Xhbf+gdHaN|@A7pyF zlF#`M@%(MC2t2H~O!d#q3MQ$requmrl}D0+Dx<9(pK4;eY0F?^o_a8x5&XB^R1un~ zY~Zs@tmGqH^fpAV%HAt4b*W2Hns~~eR3_I@m}Gkek}|LP*_0A{c!u5#)q`b3NZqqd z3Rd9Jm}0%Z2a)3yR2m%E=r!(c43f%1mK;ph-F!Uz&R8+ANvWR9>D2)$pExJtKOKI- z>-b4?DikF%XTKJ%G%fehT`AX1!UH1c&&}|yxeoV|*>R~SA)~_EuoA`Pt;nGAR0_J#IOHXrWj>`8($6ff;0EUj z895Iy*7?ZO`PEyqyPCYf0kD`6?DgzDa#w7jcnqJZj*O&u^0c>#*ta(l5~;(I&ht;m zjc2J@S;JI7@CuvL?WWtJWX3Ky?eNt;eEzbY%(+%eo5z^`$LY6Fh8@hxukri*lAK)} zH!n%eZ)-cas)Pkz;1!}I7|#y2y+Zj%`GUxH7$j;l9k4E1CaXx+Aubg=qmrAHMC*-q zNlf;}cxc%|c1>HhIve2NvN7{QlA*8e%%DYbi}%0XvTFV8gkypS@CQMA zp~)>ebgVa;T#;O1lMW6tx7fVQIRO=P*E!ivT(e&T{d{yy7teUDh;*7twrQ?RjesL& z=FXPyj+IV=;n+g!bSEvFUWS^;MK1g1Sl2#A03AcCdP+4zLJ@ZKn*2IO&_Tl!FE3!_?XpQ6QSU3KDWfhh3@(12i zP7IC__(eD-lgDG>HD*Cp9qfj!OYD!((3l)w<(6@84hTdYQ zS#)Qakl1>s@FI8zsrZf{6(5GkM$ANP0F}*Piz{*V>BrFGUi zgTZ?&FLw;y)87vd-oL+pW4R1aCbRjYelE92$jKEakr0Ka5yKCkOEbSlhN_H+SYn3h zJ)(!4&Pp{>#l4!^u9L>qqlrD28)_08f25jGc9*k|2l+{Xh;%L~nv=WYMKmw6H$@^_ zmS8O^@1$b0^+h6DrEC0k`0Fh!PkHy}=BR#Fmv`DF`gFacF3nhh^z7EGrQ5a?Y}OY} ze=UiI2}vN}@yh1r^2>a(zB;>gU;idDM_oCjh8;(p=J{$ZYfN6}JC>;3;n@sRh^@bx zW1>Q*-@y!4xj{wP!w}IhRqL~>f5{MEqY1ku*5r_FwNk&-a|#P;WWPT?X8C)GUe1p= z$snTJpgg2q4N+KvLyN-F#OUHsBOVLkFC&m?GEAXqVG6`4cEmdn31ix!qQU88>3_Kt ztxPH3ApM-bhL+RwjRBR8+76&l3LZ(eH0s3cRM zthPcgG(;Sb<&p=dLLb^B>m;JkG<2{C?%Rx((67*&rTjmJKSoW4rT-!+hp7(QzJ>Z3 z36=tB>?lhZBFe-qyd`y>bmn+1oWDllx6=BRJ_qrZ|8l8N1&3|QPQk;LsRZ-n=ir3! zQRJ&+OZN6L&HosTBtNjh`a$chz#B_Z0l(f$M5@uqZh;Wk6W&ppsx%)%eWp>t)?@MG zm(VyF5LYu#1}))ZRmBI@yI3LpExI7-L~kXWobV`u^3w8#L-3w5#8M8L)KV}D8Y;_Y z3@kU*RQg%=>~iFWFs-%*GDSSol-qDoNy~!7Iw?}cbZUMmgPBLG{_J~<{>c0Fx0;Hb zQ?`;2xT-Z`MIu}PF-({lIx1hF^FySR1jHbD31pDb8#4pl3$rFDdLi%{scf!E zpZ72;cmfR7&jagf4)_o_#Z$9z-sHw)yRoryeURIy7^O`dgRb2pldCC^+w@b2@iL4+ zrjs_VcoWTP6bLz}&iBH&%7Z?8k8EEc4!Vyd2btP59lr{D2xN4Nw4RBI3cQzEuB6H_f(bQpk=ZuQ5u{zI^%HnwzC2sN5OvxqWnt>HO z&sGpb?F*~sYpZ7-Gi!&g!eQY-V#U5?aVKv{B%>Yf=TKFwvu$dG@2D3EREbzKYT~Eq z9KPqX*Ic$S(gq_dE(^ytk_Np_(s_XMF2U7!xzj+gpJmMIGxC(#3|a#iNt; z-X;k752zyBlMGy<0!gVn)^YY;73k86`;$shc0gT2V%m?R56?MzN5_djaOggoMwF6d zFumiepZM!{e&tiYO;iW14;?J=Mw%Qs{v#1M%>9D-U+NTuU!+C&Vao%gQz*zvfIO=| zzgUb69-FW&AKAfcWI!$7cE=nUOtL#Gt+)-f9^{4y^ebeil`s*q$x_CgX=?FR+U?BH zQ>1p~6g~tRe%eqHpD!Z8soe9$GFiCf5ZFg(;2F_-V_wl5D_qAAFd2*E&9?BAIQ_Dz z^)-M1K*Vmh#Cvv#OTHCw^YyR_%7fp<&h|awY;CaNL6o;*sx{Dxow9qo! zkl*3?(Jc4i99;Q;*P$a-O!juGPV623|2(w}S zD$P6GwJB|`@V2`i zBnHJATV6^}Nq-ni&JSY|kwc?&k436z>!Su^zEI&$RtzbtsFFU;KBer2n)?@*zt&^Ri0Bwq(op@Zy z*zN2CGJ(Ua+yD}BL1HhmoftgT_j#67M~OkjA?HSh*OS&q|EX!mMrsVaUW=eq<#mJu)U@ zVGmffBlRE&J&*}IA6+8W)ftbZVm#JTuzwZ{$Q*yn&kE-g^!fu_$2tn0;HkrvxDNOb z%H(Kznq7G~tw5;Ue{=A&x@VE3*6x^KlQl1jJ1mZcLy5sPO7(DBv3Vk@tPcn3)I~lU zU<(}4LSfrZ@2GQ0YpOX1062dhJzZf}Yq`qoY7JLocD0%-XdCaH#1*Xw0qK?<5l_E$ zM(tknJ%;tq;6!t~Sg_gxJS9G}jFSQN!qU?@isgkiP#tJP6+Upx6;j2MkqK*kF4pKF zGopzJd@TCA00#5smN^1{!~38BRmKy|mrCB~Didbe#Y#G96YN?xyJOAaD71}(v{N5* zAg1*~9u4!Xa8otxB;r`tQQ#bF&Xr&XPM7{jpCIVbCDg%ujWywYj@8z32to4dQ1hZ0 z^V&zC`2jj$^3RMu9qho2P;E!3cFs8lo{LmUPamWYL}I&o1&^eUm+W&+6h&uef0-pf z#K|Phz?pD^`3Z5L~m@)3iC$2BryKfw z=C@kgF2Xts<06V@@TzzkI_W9AtbmO}K`ltyvQ3_z8khnrJYy`1M;Csez@yO&CFx;m2bPTstT(k`Tbin+!t9}b^oB8a}H;Zq!Ucw2em1ml}c}D=upSxHURC9+T z#Zl|aWf!rpSaZ#hvC^C%r_`+CB;a**a-O&oyQlv;InVF)vW7Hhzcf2tT+SSxBfPjA z$vzFYJ@`-TIZi6D@^p`DA|&M_D;r&*G-GE(9J)*ky(JEKV+MHmf0A$`Kwlzr4pakZ za^Bx~XZ~1OIB-H9F9v;-`+*aBD?lG8Tr-b;+|>HXAoTGBf{b`TVk<M}R6XrOOv^ zQfkN#oY1L#Z9$)^vr{d&0CD2aZjj*Zl$9iE!pb=)dX-XHFcgMgzIJ zMoo;x!uLj5Z*1T#nPLTYNqNgXI3p8e6ksSvNDGjIN-jW-j+y{+=#W8P95|CF?ep?+LRfo%7uy~b^s%%VULU0p8 zaP1t`Z4EL_U^FTJ#UQLdRy&u=us00zAnuWawc(ygVcS8_2S*t}&|!#%yH#9;eKDV#D@d>8VyMwLx~5ruB@Nm6^744#;JOn z$WV-NLUkodsu1N_J`oOK$)pOI=y!rls=BYvaAnRkl||^E+M2Qkm(Xdjcuu0vlWB1I8c6cB-RLje}L?lh&_OS4g$WDTR!&K9vDYi+Ge4 zkfZgblwIZvg7=CIT(iGKIT|e2z6D2)^#{I010Smg-sM%(YK{4bjnEm^F`6h6R(@Ov zSVlAq+@G}|8beH&o-}ZK{P>bt-~)LSbc4XQw@xqSuHo(y(0a23S8{Lm3rli8`-lG+&Mz;lI^TY^)!RpkQ3k z2qf80Q1x~&H3!@{zafp#iLU~M#QITr+syG?tYy#hvrdizM{g4fZMd;+v#_zL;-YD| zF)hEL`F7l>h6+^rRQycSWyE)Qx>ycYA`suuf7Rp1V;!|dBffQwJ~56RwI9)Vf*E6N z1k5IXKzHqYDp%)zM)%fzZK$;TeEnPmyeG8b5U)LsYZpVz8)1(_<0%PyTxNG*s@~&r zm*BqM2_H&I0&<;{VC*k5MCkNIT<@*5J9aDl5xPwNrc0%_qQnEQdlv^srs2F(+5U*U1y1cm{Hj-j*e zyPC;(KYw?yy-C2pjAe2LK&V_*pLqAd-}~G>|L>0f^_7Kuf-q%}M_jCZgTU!T7}b;{ zV2JU}Qfior#Z_`E`vnI~NB6vb0s2Kgc|pGb%M=A0`UU@J1srDKhCiwGBHR(qvp&iK zK_AY->fwFh+n@1oXFwy|{eSGed%R^;b?3Vtd!N0}-siFF1x10f_DX3^VO1z2LNyRM z>x5SLfRW_m?Q7?A@2Ba{$3N&g-2MQmHr(4t9kmLJmzGKrjHMn*Xe$b)R5U1vhlg4k zRANv|Lt-ff(uzqXqQQuAzrQi&T6^zv>Od8ic6S;Mwbxp6%{3omjydL-<27X-uP@&m z>w^tC{DbRRrQn0TEQACccSmy*Z?oT!yhn?N^#aX|#Da9DO2QbjMH1bqk_f6G&VvqB zNgHHrY0}^-=?oq8n-p}a>JO{bS+e1TgII%(&FW-1r^P2n>{Cxj&c$+*PM+5t!?WBq zWcbO^xvXI)^tl3q?rJ7R(B+J{p{H}f=yn4j7-b%+0TDx1tRP}p_3%6}qk4D&j7s&e zjwP^qIEi>up}B;4IW@wbTcW&kxggnKBm`wOxgnvDHH6xJ3-rAH@rMz5NNg{pqvJtZ zU0m~sxzXIqd$Yzton(EJeBwEjd=4cYS$`QQx&MuR`oIE|+%`kxkQWvA5YV#sr zrx7f{qF>h)%;mvP{P6NczD^>iH~Su<{HF)G73XoIMmv_qofLEOs`#_d|VB9qE^ zVl_t7CR!-|$nREe)Tdyiir=L*NhYYER3+xIUf_jfz9r~*FiqO#yeZrrR#}NiEX-C& zrLRc-%|ukFVVhHVSq-?GW8aTgGCm}BZuh?bu_!)!*Bci@vqM1f@4sQ@(nS#E5K#P` z*Di)-hk)TX{qg%3n_Y*1;rr&^u-MnnVR(h%2my}(hJU$c=M!owF=@mU7(Y zGP~Vt5_2jtZ4gGWbHzSMA-wg~W-+?VT}0ccBE$uEZf#&{+@BO%l1M+Fjmc_{J*dio ziwx!GbruSx)l|EV1!O~>Os0IHDUV0x2w!vhm&&cnk&=rXDdiAPB$c&MRD62#xuf!d z&+4=Z^|I3Q8gEz_qTk^Yb5Ue(z&mys&=lLj5h}+V2?-7*`4?L`PG-2+?RSsAxZ9#< zEjc;*=als=Y-poZR!GxJfOu-lp}l^Wi#C{)Ko#i;7^If*YcS^ zB{q~$O$G}!M?Nx@;Zey+CR(TYPtKH6(eJS`5Prm~GP7=T0gx4mF{mc4lRXe)imc<* zi0}(60-k_7lfYfl5hf!>+*W%5M*EcS+An^*wTQd=&1#<_u(hHak7I$V;U{ViW$~f<2FB(FvfVL^-Dh`#p2SBB;N1 zFqy2cC(7+dO(&reFE|_8K3|{i+PCNIK9oVx;z0=u9yR`Pb~rj= zAUfl^y#9{cv(X!}5q|QK_vPbR%&NF$*e?-e3zabmGJs;mW`*Cobc$sha?C)c* z)1QqZEKi-VRWdA~(OKu?*scwQdWNWH?1qd3TW-il-^b>ud3)aJt7qhftbKbvqI%>x z*`OY>lXHwHy}jm;W_gBG4<{;|MLp!lQ!NJ=lRVK%Jps5g=`Ra0S~aZIJ72HMa{gS9 zkjaTQtHnT=2Q^z6yA zeylb-bB19F!+X&yW)(49&08gM*!O0`&fXg+BMrQPa%%1HC3tFWj>Gf5Gj`_b4SB8i zx^_dB-T*4t-zkAnF7vA;n)Z%lkl{cM1E6GIxguK_?nGbB(cISWp zmtCLQdFH(zzV%b@`TOq6$bHN2?U;GhQ$EPykU0sPiYg>ji!X=P)OPNGgMa6 zYo8>pRuAb12d%1pCeYr%2;4Ax1NA2Vlfi-}ne6IU4GP9UuJj@9%9s8p^@?x(QoZ7} zz+%eO9YS9^&nsRbxXeRd(imnKVP|c7VnjkJ)$lC#2?_Zx!7Codi>0ZvQ&u1geB#CQ z_!h`~;w|U1bB6cO1X`w}=Wc!tmrbejWn4~Vl?3$mN-8`5xykeLVA~ZO|>na8T#i%*MOV23A>3^&< zJZDk|z#f`2yex+LoZ*>M{m$@Ux~cHY6`tsI8Zf!I;|f1SUk6>`iGtDZdM}nO@Nwd( zOd*qI#`L3)?76}p_EZvaE*nIU6dzp#s{J4kWS4 z?|Y4QZm76VuSaA~cej}8ykvnHJo>RS2oOp#v6o)Lvg*X_>-E2#0T3PK=0zeV+DRgjK)k}*cr zV+kV$KzN8?XH@kS(_oEVveYt7E<&3 z^(1ze%rblk$~=hid$-;b6)QSl8R0vTXiJ5XD)NIecygfGp5$J@NEdb?ZYK#ZU>GeT zWSAT9qq;@@J>Ui$4Y&czCn!C9H{evljCo(m4Op1?s9Gu?V0d5MA~Dhrva>-y;Pgsz zC?Lq(7W(}yq*ubx?LAMbyDtoINV@}Q7ZA}ssVsfn6eE32XJSO5~%NOv%> zgXzl{E<_zEQwgLpbps-l?KPkIa1(A+H9tU1DfpnvL{ynbcF5R(>-A*-k{*tg0Z1Gc z0S6ChFb=rOl)+A0oQEVBu3es3O&IMWcP*(a1n~?Gr6^)W-=F;eN7r&RF5~>vxZ-uZ zyQNcKlcN1PlOpf@An&`fecBmvDj#-Dx#AIbTWFKwR5IRSw0vB!O-+kCKXxZ;kscNC zj{0V}GEXv;K<#2!^5YyKr!MtZpd*ZlVn_B=N}|56^;i`_D+rmvkuUupWA5jHyo(*J zVvbrnU&V`)*3&ej2{XuBI08g(6o`ObmR3S!vS*V)NDLQ+Gz-%!-VA4j_(IQW37hLQ`d7q@+E4zO^Tn#aH6tf39SiKSb^k3%E8B=4z0Y@U^- zf~rEqj4IVOjWZ?d%Z~bvB}Gd|vWWko0J+0*$6*D!6Ej4cOnX>#Jai3N*%q6w;5*Uu z*wIni_g`GzCt6(W=)Iz;qxTX@qPWD*5{E!GG1CdhZ#4Uk-w=01ji&8DSF6)EvRb#% z4t!0$V6flQ$%h36^rx~eBtDIxpc(`PkWf%y`BKO+Ykyudv8MK!rgivMB#N9A$35NW zOi;!g8pJqErjvBLmbGmXH6i{?po%Oc@C8|;bGHu1L=%FAdrLFLPK)OG+tIW=5~YV} zUffkazKWUMEKY$I$odYaR*`!3LR$p&M}B6uMW91X$v2zD*CVpaUW@XHs!4%Xd8_lo zC9(o~#zJf)M4|0GBb@u+b{Euj6CbWTIl0K|EUU-*%BzPJOcegAVsZ(UPehDfg80{0 z=Od?}Vn_siv>h4dv?IRbV33}!U-Vs@TS%4;HxVGjAB&kXgDaW`$7H|&D8m*0oX6A% z_){CeAC{9I0=?Q0h>e>0ULu2cc04N;Bj!w?wb7O{y_XbAe6JaNsp1(e5ROhn*m?V1 zk)7hL!MDj}Ts9gp@k(MET*uTAA%ZNQ8Yx^4oBK(2pa+6d2toa=bM%YtIeBQW2!pow z&J{?6P&{G`LQSE@(02VvDC|fnmZj#P}8z`5~(-y4Umxc zuJjrFtmovUk7Gx2{}LYPsHr*jaw=Z2hh#z;*x@(Dj@x*+?=Q%xkOnl-P!iP)(uDOo zicP2Nkat7L4m4C{hh)t>UVu3wY0O{2ZRGvZD3)*ubO_3GCl=7_q7A-(hB~c_{>`b8 zm~)y8mGwO<+e29f^8=d^1}UY(BrrX!dm^5oOc(%Rjgh_6<(h@-zBo!=W@TnmxTs8( zriug!l~6rfFGBrBOjjv`Z_$P2s?ZKq!_rOLx=~9)5|W&rkDU^?D3U2-8ExNW?=iL4 zCN9wEu!Pz--Uw?Xb%ZX3R(cJdqrX{z)!R*-&*FOlb)PAVKB^Pk6F=E{Upk#P7&x@i z;0szcl&hKPzTjCb8f1>kvTG{ycIP1lj}+wtfMH}BAygLvCk+Y5C1|K9rt`TL_q(x@ zY4j$W$6GzL6yitVD%OED8NqnKT%q+2Vkeigb&> zk&WUuyyP2-dPI}*ny|sDIgl`N>2966x{Vy+1xYgyVG?)SXEXe^vUcaEO=h=i{r)T! z&DVP5Us~BY&J1P{8p^g})O-r)JYk39**$=yT@NT;9PP^0n;xu+JtPfFnYd*Onlul& zR6@{N%0$>piwCmIg@h;n`j0;T2dAX>t4C_Kb)j>UED_4a9klENoHq3A3m2%=#~H?c zBH5l2R*u1N-!{!!7GLoVjbb~QwA<+e+Cf0(`^Eq`;ZBAT#dn99{5Jf)t6IeaP(-TV zDE28_(6eEmZhe5z8PBm#&#_NOlzn>i21Q$Wj(sZW|1+^q_wOW_%GY2jelhlG?_Ue- zPscv(F|*2wecJIonVugW`?Q;2l?&LXJ^QgyU&ub~Be`OqZhM4>{STAzIriyaJNtBR zjbp@M?Ptp!HB2#!K632D_yhS)^Nb-@`3%D(rl5Kj-y@c&d=DR3%H82zY%^5K-Svz? zn{vvY4E~p2Hof=PZ91{3KCi&pY|>-c*5DBLe*aUFDX=n2#Jk-6Mf?~iZHdkk>u9P* zQ(xsFFG;Y(=H!y2-ZL&anR)|^3J#oS(gql7ZJ*g0@#`{tYbzT|5?qLH32X#Np!d!# znTCmkYWt<_Yqj^1<$JmDq7vV-Y3E4j6@KZi^;FW;ZG?$s2abdxE|z1JjW8LB3(P74 zBH!Ax-(maJ*~bo!?Ykrp$gdQwiek4B?*1QJvs+XbE zavga_t&*`((V19>M_7l$z);VmbLLhmyBDuUTgurWbJT!H=J-S{9ugLzq8x(%X1l78 zS6Dg<%;H0%d{}XNxwA+Cxa~-wA-v)phJ?IWDfMiFw|a&)DtBmE|;WPG-!(w0&FyTypy*mwIQsc5EC;Yegs6wo+N+aq&sez zt@X}51T$ty5LzgQ;KxXw8WCKBwxs`AeVI^)CB`839(yjnmVQLi3M*fY?C{lruYMPk zN+!y39@xh}Q9eg%!-S8}YPkxKpoItq*M*6;PJufa@?RCJ&3#O>_-r|SB=*EP1n^R^ zgg^jjW|Cqr8hSx-G7BK1paWpkpR>aYeARe1urU_E8HGt-)v z^Fusg21nByE8!qYP;5J1cUwSU!-ZX;@}mqpCmu>%wF96ih{gxGjsUk>I+Um+@wQ507TkTO1jsJR6J z?_LUr`dRPPibss^h`R@J$1PN?_VZ{dI=Q&OfOOL@6y#q3M9zNFj5?L7;uPL zrV7}0i6l2|JII6vqg>J_^g-dKfOR%lqJ$p|k+dW#t3wLwYW{L&?7cW-S&KV7u%^n? zp}6oo~Zq3*_e|p-@2pO`#4#E1kzI%0%}hE4DL)8^tX1O*>afP3w@q zT&nk;c@*IoWB{Gf0MO%VT)RXQWhH1e6f@i3G;?X^v%?^KSp%I_8BifXzjNObfSzsu zYwFNc+EFL$Zypkn!qpKSQ7>(_6Eh)}flJb*NT&tV4Qku?|-Yz!WOJMt2~zrnlNyJX#(|T>L~ezO=Yk(YY1H z{$FZwOUpI_{}fzJAsz18niklYOk}BWXJ!Uj6KX)wg^WC06u6TMz|^15_m(g=fu8`b z3iQg{;;w5K4vVEJ=_U@yEK(hEkT)!T5KNF|7okSjnhE0#-mnQ0m<>fbPF&N53W1K) zMLaA?A~Rh;OQz*R$})=AlE}hqRL~dJ+@xL@tZzd1m`xXTRn1c74NI9|p?)DkuYM}) z)i3@Zh}sfxoCIkG7i$R^IF+G-XEF4N=k`<`Ii++t`>SLZcx_Ojg(0L1fy*~(y~O6O zR{V5Csx6t{@xRWUjkPk{;ZHj2))r_9Q}s45Ae301BN0l}&M;M^++K+y4)%>ol<|j( zA_%LNsFf_xdTHPE!I!TETq$l1szO~BVN|s!{pgYA1kkIUt>a;lcx%iAP526GFBlCp ziF)RTX;Xnwya%l?S-koENA0l6>{f5=U`RJ>drMraee2F=f!9e2VlB^UR8>mlx5gJyxrb1n&69#+Cx+%Z4)Jo1n- zK>#{W)=Qh15ph#MrYW@c!dM>3R~F%As)#Q_fmTy*&E_AqaHlx68CM9sm&}4mX+m^? z+txS=Gj)Vk7_oj3OkPom!asPGu0w(R7GE;23zG+^0}s-5?|^DYSwh-+>g?5SzA@6V zs#*M~dy6$9tN47Kj1(GSI}R#&CRjdJHDv)T0ipY&Fp%8Q4Yihj7hf)0ZE7tbMViO< zE#Vm2eEa_i zuW^GGAwlth{^y;&hXmmHVrb#veWem_Ti&5@V_g!1!^*-;(jD~)ow)04oZ0~)pTmlX zN6iq0a`;PN(&LKGCIzNQ+eO~9s;is)f|@03bZHK*(mB}S0oKUuO2rxn* zMCZlPi$2|EQ#VoI@DhmFKo(EF`>p^V_WjNWm|3f@dNVU+1o^CSN^%{|lGF1xUHNK; zYnks-1w5{vo*;bu`P99Ox=Tfd2?NeMC7tCf0n~eFapl4HbrFNIE;{ED<4~cgi-I{T zPaT*GY^U%`Y^MRdofUJf!6Uihwp7AVstwA_=K{3-wZsX}L7==l8 zO06o$PTCd+-aAYFF&3P~|M4BG8s;}z%bbB({49C+SWV)DmU5%BG@XUVe^oftowYE9o!D;@)agJ;RhUls!#oh47H&v=%+M>TaXqZr0DVa0tc zHNGHXZ59h4I^^3uKsWy^c>~?B@(ddYFm&!eOMY?41*n6$6mOr-KT96Y0uIm5l7|(S zWWcSC#RK?R@|m#<l-splA;X%fsOTTnsvaXp#j~sAnlA!vcPit5m307wW|+jea_` zGvKM<06gPQg^OZZ{9_i2fFKJGhi7UAd^K^$b5r<#fhm07?0&^w*?R+?)jFJu{WSXy zql>n!e{Kpt?G)bqUIX79K+(a++#P{bJ~xG*TZMmBtMI+|84liee~E+7O=0Pk4s{jY z`&S0O{a-1;_uLeIj*s2BMMLp?-twjIuu~#12jOxfr=wQ*y zUQxwpY&xij(J3BAsX4=R%g?{M|ADPP+qE~kd~tYn6Lw?X-K>77ZKlICG&Jy#E8+`+ zE7HG$?(uVuZSmM7a_HqV79z^{)OH(@|Hk6Z zH{8{eLf+nc_{F7+Z$`>ko;-;d;83KDr4>*mWxODdtnmw_jA*s`rHtXoNfRlXk&VQP zV5^RYEaiN1tMAGAD4>+{AxA9bccq+998Ot8d2%J4*dl0iMVBmzCQc^hhY0>&(|eNO z&;3Mbf_hb+8<{~Ypq^L{Fu_fh<{IUsaCu%SHKjk)AT^CTfdHgz%rD*_wf_k8W3hp$ z}3M z7U10cMTu@FxXb2w+YTPOyOQC#_mR8aweK_Exn`NgCGNT2ng|+w2Zf;S#(h@uV+nsC zGhI%Z%7}bZBU6 zR=;xU6L){&D{tL;+uu!Z^;X<&b`=w#K0zenOm-j=V6V-=K{OpgBF*b1v5f?VaJJ&$ zOCXO@^TJZ*g~KEjqnd$0mN=QNBL&X{%3c3EfD(v2BPank0>uDImO+F2!9Xb#C_yO= z7lW)M3FuJq8{U{GzPfvG$aS4idoVtkJo0~~YU~{_$Bi|FzXGc;T;4h?RgrxO(fbf3@ah?ge^+2 zb{y{sKY0%cZRL2rC;WpFT1t4HCwxZ>!8r1r3N2 z{!t0m4tz3|@Q@O$b65;0;pJwDPO1M@Dbrq_KNWx6{36Gs0j2ap4poPt%_PhE#z-CJi zFi1LI;RHsod)8D$^iRY&uB{4EnYYlMSh&j42@Ey8{JnyeuemUBis=N2SToD{NvlNZ z1g7K7<;qhT0bBl+r=)Xo12aThBd~>5?E;&Xh74s^f`dJTiHZ#0K@f* zZ*H6K0Jhs4zz$$&+2{O4m1>@Qkg3k6asHy+Uhbgt*KYi&C`Oj06i_*TsjyfKiaCGL zCOGeY7|9DQZ;BJzvIWg@pYs=xqm@{iVwN}G`DZ!5LnhV{>JiDdTmDn?HNEvW7^PwaLy0mJ&?Ytad?e)Y}jY86>f? z2jgP1}Km!DE6VOm%p5aq*bl<}kIeRK>l@IgwnzB>D%pR4w)d2A3IK+;0WJ ztXsL*l8PbJ9JXe|wO~CUgHhQZ!-F@uzzMR+kx?Ho73&Txtj{whr!-)oujRc<0h!xg=PpXBAoo*He5>3I!X z{=or5bIFLA`Vt!psA(|0PCx`R8Kq(wAq3`udW-$vl9LatglvrDleJ}^64-E5km!6r z#IiUwB7?~oNkd)v9 zC~SeLOsecVnXsdpJ~hJ9xmZIhzrFO7R93=s47}U1+ydjiE}CO*`av+@DHvoqWX~|f z?Jn67rWU_SdGCsA@N~MntXL!Sv{2kca%tx-J`JT|TZZC%O&rPH+Wd>z`){nC!FCzm z`m?j>)~NZVFzkm~3PyKq3TRq;D*j#CHNpjYQTC{<&CKuh6|&%ygA~hnuubljB|bvyEc>qQeqfAb<+cG1L^oj_ zB7tZ*Wr8x##CiLage^?g_N^Qv&Vb(8@}W4-$B*cXvJU-Pi7M88f=4WhDPnwxNX-ur zSp%(ZYq*l)H zu0m%MvE*7jJSc{&wh@t9jF5mHvM58io63-{O2Rb=L%u!>K?G(3dzHag6c4yT*&@sq zaN}$bxB+=6P3a2P_B$=xlO9iD@fq!N{kREmzF!w4B*ChtuK&CE6!7LRxv<@nx1Zy!8|@T_n<*ShyFCLaNG8ofML> zhl-0W@4quXF*0ASm{Ti?D|lY#A@0QTvZ+$3d?8fDg9qbE2ORr~+YPwugHa@9o(?y{ z1q(Y})P!@Y1|SkFI}sYd4vwu>jThbrMlAGU=o$L3(&3P45HN#1tbQzPy%9-pZ%w*V z^SFR<9WGcb^9y%l7S)IwFM>Lzh^G$yxANN7Ssbw z#i&~OrImWHfMf=|`^LFaL6p$k;*WUlhwHWd&s%#Bk@k52koFLOsodQ}#wprL=J6+O z&lZV`E&)5+%L_ZvXRIC-+K&QWl}HiW>3i`QxdWKv)8g+bDLF0PuPet?ML*CDdGF_{ z#yqGi1N9n`fqj5s=N>4HOh@CeB}aU!YM>l~jD|e`AHbSqSJ-BP-O}oMU$gW8xS!2^ zq|JTjrWL9hzm$H|MCbPN-FNpu`qSP+RNUAD+08vL^g#p&xN(1^U2F-m8QiF9Ru^rB zFU!-Zp7zZ!QhU{p_CN(jeprwJB{8x$2wlX5HNlXs!pX^nI63J?u?85Va<;s&_q@06WkFnjy7@w&RaM@ZsB0Gqai5^lTto?Z#}Q4MJ@uw@bKOHNMqsCLTb*9(c{-3FD^=;(_z=|!hNGP%yl zSwM8CV#ZS*Do)(;LWyY!?ihryjvLDRosI_%x4J1g6RM@ia_{0kc|1a zqiANb^XJRJi{{48XI2<~=+ma?G~WE3FN0kwDPDxsa9EE|s`~?}DfOpYBtEnQna~{# zua1&QxNSlw!YWxX(|k}LlL3*#G;&PmU!r_`D!xJ(IzAQs`%(ECH!nt_nO;0PM8j~D)agVLrgt_K zo&Q3}HowW5k{FF<&C}vYvW6-L;>Nv=s8HSLNA4t%?$xteyxeLRO{ zEG_QsJ&5&~x{l?14id$n+eX321VSz|7ytmj^eWhGV;wXN+sghDHwZRap|QpqwTp(G z1sth?$lh9b3#m;K35+nF#f@~xW8G?ai(AV_gNvc8a6#5k-Xm+&J~)51_yJvM@*Z7j>>Ssrt3m1A zh}0m*W>$i)oxNoF2ksi+w19!SN;`BIs4cpRfx1>V6mmd?0JbM}g@L-1WV-1+j>SMR z@KkI#P>UNnX9^tf);kch?cqNSbq%(jkK_%!7$y=6d*GbHp$t z4IclA4f?5~ECq{pjU? zl4WUDRL>L;q`P~1zjssR1qFZ6m%$=}(16}+53^bNwT!1tW^}69$+IENR>3~E4eWp+lxmLb>{e~cx*C-YrJGr-ErQiz{-ji+D{7=0 z&D;ek2ij|8u>PZ24Q;cv8&ixeJLY7=y1g9#+iRSqQoG!H59&{Yx(bPYi@EE^B?6_4 zQN~Hergt9F(g}8mj~%uc;LWMl<(K8nYe`)DyX=9hNCmm0n}mI|EFbJ}oj1^47fNRQ`sGeg`wt&Dro3 zQ=7MT+Y+0oFJcn7h>K_0CIC7^!vUK^bPE~{NXtmz=Nt=6_$sAtNXEv0i_QYAg}NkK zkBzD|^z2pH6xXBx{gy3Fl+QmEkX(>+=?cz=Lgt1TY z!?&x+SoswD?5Q7@l5o6;${?oY??bacCTuRk5l(@{XcpVYDy?cyqb8s=#^)6}0@JS}S%2i|Hh zS=uhXVRwZ}SVF7(Nu_t%c=21!Y9mzVCVvuy#@fZ({AoE)qwV5Ke?s>^GSV*o{w?<1 zu{=Q__W6@af!qADKWWT{+r=mR=_sDyuy6DyL9fv+-sw+*ES|=1>gD82@E>1mHK;9| zK>mGyQcisJ_xh7y$uuitp+H>~!+;C4L({+`IIu2?5Gz^lU~X0~VUltMin=s4S79ii zMw(5UNK#v{Y=5&B4{O$QCv7k7#k0<2x4zlo#GQA1H|6Q>IzQ9fy8TWiq4en zw2FANR;e~D;4%n}C?i~^*~2w2hOiDp;hG{|>Lrcue6>!;L`Ec&g>F#4MFWzB4iRUV zUF43$A7zC$w^6ZPokDBumtFTuBpnq|2Ac~*EV9UsYY2s0m&Je%p&_}@qKAd^jk1Ju zHZ*CI#PxFqOxN4k`Xx9+L+m&X)F2JQ%3%~NqPqP{(b>oHx}c$o#~-aK5E660pL7P2 z&qnOjXXu}5FGhlAyv5$*3=K%Xtpd<`C}0&qro}m^YEc@+QKEH%<;2IE{`&zS$PTzO z{hhI70Zh~)$k`HMWEFY`Bgoc{vFH#!2J&YLIJOkPT3z!yAPY*RG>82=Yi6u%wv{~Z zV04`hHIGx*S23jQ0s}{U9OZ8B>?`yo0uhkOR z0fYiFR3VI^H374LjLnp)q(ZI@lOEu)((94RjW6;1W_QR3f*^!2;_tx{aQ5_A`9!OU z&ha&Xs$*O1-OYLui0$c)>Pg_guY3|{ipQ!a044$7lT`w3ky`kgsvb?>9n}*(EN-rz zRMs5>PxqBiHs}wQ#qRsf@h{{cvJYWTPFWuOE0hgcf(Xn9u68?>*l~E0crvov{ zIYVwMp^9jTzqyHH~k~j+K5bUhPEnU>_k|UF;)TxCT#&?u2TZ ziFH`{L~>cTqlR4C{WU#p>aKRP8Y4W}5}Tfhy1Ps*O4wU#!lKHIsfYSyJn(ZF$u!*3 z<|v6Be`=CAZ*X#A^#7g~%OVK?Y9*vPiBEMab3J6Yh>6uE$r|XVmanSl14p)K$g9>A ze)1kjS-`T>;(#6?S!rYw#`*blwYAX3W>Kt?`LWyBc-QiYQ(_Skv#|jNQoFCQBn`)= z`~=z9G^BR7jCOp7y>Dc^(s>?+tVk&v8E4{*t{o)%&8sl~T-TJ$_JL7J9eXeppK zSo5<{zoXbSk_eee*7L+mSOpf@v{AGLit!Q@jpBGckMy453L;oE62nmc^AR17c9%0Y zg>-c@Mp+kK++78y0k-`bZ&s7611=Z-WvhgR9Ce;J%VG0C!fv++a>_7@bxV-`rBOT?; z&6kNT0t0KaCfKqbajkOB%cQlJ0;*Viisw4UzoYnf4AgW6YO1hv%e0mTE5tcb(}q*i z8l>Kh7#*}?anH}w(h8B7fYoOM)U+lm#PgACn{}j>B5De!8>p#UAu@l16=JQjLd@Xa zRA~)4O$TxcGjhI@QA-#7T*}Me*w|ejs3bZ5qftq2Ry&mpMM!fq%c(?O1XOZ)wsegf z9xjJ>%9ip|Ju@wqGB^BLRP*44B!^xIY#Q7xgE`FjSX4gsOmy&rvcnq^9W;ZYT7kGs zDljIU*%c8dsh2>2yyUftY-`4Ip@dy3!E6=}rv!xL-m73B*aNP45e^y%)^xhmqJzj> zXOuNg-gZ$ZwZ5e!Z+-qEOS1OoYfp)#V}Z(8#-@m?y>Di`!iLLn!_*vOB3`IPM1-26 zS4RnL)Od!vdkhnQp3UDeVNVf;OsK;I7qYs=Uw{!)L1s8TC?mZr6BLH+4Z( zUa?D2WheJW&4=-2y^-w=;wkZOXkyrqI8thSu-G&tfKK{=F|$e(a211QJ=+0oR<+#= zeS4YBwccQyTs<=u@oz8|stPpGlnArK5J=yb&q6K^pe*r6g+rXRE5cy7`#fJXpzqL4 zHaaD7&X(!eDu}mnPhx~#qV=qg8*#0uugmI0I5gN-WlON4JuJEkfPXWCrWeDUmkbI) z$jww$Z0|+cifkEgz(J8h8niYnX0~F63v)K2AFSrj19g^pb)Yq}Ce!KUEx|r9 zlG+w|gQxH#+0d&Qe}O^B(ISSH@o3F9JKFbX;|7F^eXO0YY=PA}+_u^t+Lkjdz<sW2s5ODx8t$p^q;c);}UR-7_aD-q0%G>ZCACS&e=EplQ9Ti}g)@zq2Z5+;&p+*a)c0L|&I%Q4V6F%Pa!w}k56&74!wQsaLB@TTe>wj~`L~pRgqrQX5LTh| zl<2MapXg&0%uW?aN7)|f!gREs?E-tB3@{0tz9s|oVP_Jo1kDVj2cq@>(U}CS00Wbd zR!o9alJ|q;?sow-Lj!l7)91AKTdaVNL3!Byb+%GRrM{IS1E&A1#oV0hOhPCErCsM% z6tZ4|N&1hGmNA_`ob&6ZZ#+>{@8H=b^I4Fc%2W{tLieuNqmBrh_ms&?{DzYBs){4VI=B0oY z7OcBS`J)5ncNu}h?7}GJ!-+XK14bMQI7^Cf4AY8MXCd9s7EVXBiKKoGg1mzx?q9CV$K%x?0;^qwi1ZN;EDk;1?DU^e5F=aP2}&8acp(ljP%- zw@!;+18#6xO`;Dj+|lu+Z04Y1LYEf-RFip0gr=67H@is_Lnln&WkSa=Ib4p0%uLR; zuAee)?uGr_T)Y}?PK{;{EHFd1a~Y$F{Xa2Yp07GB)=|0uYl%|5FfOZ194C329 zWXuryjz&StX!9%x@mFd;G_)?FOf5DD-Pc8hdlexeYz0V}%a5I9Lfgz7&s>c3;GRdU z?2)bPnomPw7lumzArn~+$)#whJcHL{mmC_hCOK2mgPd<68A?lR>@N_uE>eZ-UIy=T(N9e(679tv^62Iw(+H&_)-j4r2++8RBO6b!N%~gzy$}i zo)T*0^wBh;9;t_-slDjHf7v0onyJ+^pVRbv6V#YY>kpnkeIXR3TK%o+yi zA;6k9MXF1N`yk=l7H`iXSD#K=05@tlyfAAbDQe~+R|F9u%vu99!1REhbBx!Bvu77( zjWh1-q{J-v%?mX#@WhHC2bY5h7Ko`Z@FuuXkcS9`D+)}}K`r_iZlf;7)SRO!cr`C% zKo#S`Bt@elthOnW9YyDdAkjfplQ?q*iw+bi_&K^M%UTpbCzCEGX&87U7^WbdHV$N|lZokVP6r=!VyqJB5 z61;FLxAS)@lJ1@wiCI^xi)+3|sW0+s_vn7N>ejhOKrC52cmj5_r$(%uHR&ElTolh2 z@{k1p9DWm<#E=u@3?QsPf=d$M!jC?I*Vv^Bq$V5LG603Zy){8-2@6zgbeTv&nsl@Hc0qmMH@?N zITp~6h-+JL!9p2}Y%=1Ttoj7kwx=*0J}@qN&Z>T-T-)fHHvQ%%BctHrvt=KI(n;}= zKc^F)J#wA+ES=a#Fq$LU32VKX-B@RO{&}6NF_|Vw(IT zczt||G0@jPdZ&!uJDC1hG9MXXSU4Dz+Dzk{?lDi=LeyN_@E@A z0ybaI2Hz4x9rFjU0kFF=I^Pquw6(eZ`kHJVq$0y$%hq?$6nRhQXV7c~$y-4pjmgDo z*@~GTB{*XNt`MC^D-NO-7|}n>f^fXbhfiQCi55=4j_Dr4fWdy=*8LLh*JIqG`=#m! zv6{qe=y{xV$YM326o;VBU?X75a#x4y!SRHOsk51l|8^8bXI!V>PrqHioW;JB5;_M> z*FkG=AN<0q>eJcD&ZA2$v)y$bR1WyErCiYK&>G(RQE;4%cS3T3J(3A3$Kz|MYy%`w zYbTHA+am;_mW1TN2nSqC0 zqM(vy21I0r4l_A$<#v#t9c6F$GQ?4VwMj^E9Y8xMbx@%0XtNH*lgE-aU9{Js9s0-V z&!nc=c=aqeEy+68C1E04a=@~zdKPBl{ijzz%B*s^Wsj>dTdCy_nr8mYXK^Pul%7^~ z*IKmi4a;kvm7qjF?$|9WEQAQ9J9ipfCZHS8Y{N__pTpN_oQ_>gBT-8I38g07KG(4h zTFfeOu*Cug?;nn8=Oc_H7X(Xq%AF{(iee*TU&C862a{J^Y(yS9D_-E>r9%A8!W}~< zQ>sJl>pIJoBP$i<(E=(h{xur85VP^1ZR)j%wz8$g@{lAGu!Fo>wrF+IZ;5YfWH_== z9!DBCi%T5g1F%!^=J=e+3Rh4bvlF8gvfgPWQzf>vO(YwF#XV$ef?7cXhrjjI7a0M} z7a6sxe0>u5rFzw+@@{RwA@jKqDKUj*Y{)2-p#g?se6-75G~5o5gaZUu;o<9DcIGJBHX8r4!Do3g=3(l1A*#9ozJ#}g|Lvapaqp>PfL=K2V_d2VWI;D z4{N5TY#Ht%F%s6Oa%v)$WW^&X4Oj1Q9%fP=XBtEmBoPLFtq7bleBn7FbS4H>IORz5 z1&2P+R(H)@o=TY%!*S<6W`>#yS>dYrz9+g+a)3PyeQ=(PEen=-VhdX~;^M)mC3KhV zS=HT|bUY>vlW|^O5a_L?ll1rD|LOoLciX7#t;ZAG*tgmzm(v}-HYbRXG#tz@pb+rEzc9-M*9<15u)@=OB{v3TluAjzzmRK$;wWRcaDfd~< z=c7lUCUI~PZLDO~kV{0`W;?GZ49u5 z@c>J6M}%W=ZDLThItjy=2FPbbV}n$tWE@0-Pcjxlv+JdrxJZ@7OpsB`fSL#A;M~Gs zQ)(G_t#u~UflyfUE!4m?v%3yV4!b!SRVHv%wU>de$yD@Pu?&|?w~sVQgeQC_=0_4* zrm={Jtz1?vKS1s$;)ZTzjv)mb!EsfL07zy>+F^`qQLlgowOROykz1ykS4_!_Ab$C= zd1oryCa)UBoya;_^A#d2+G7hg|6`z`1RsOV81rVR>A2iif-;6UYl#@CQwqNFM9dYtZrlq&Eb(@y@(+|) z50J*&M60V2U%_S|T!E~$O4ooCk1fYAXt791J&R=UUjC)94hZEzx@`F09sB-VC#O%b z9hjN>!S&ErvR$r!kffA#L0j>xHTA|XL|dFr)eY^GwuQ8I-h97Vbk<&hGZMoxRr|e* z%{LH-&G@n$k93iB*?d05<_&Mic~ztD&r(^E_tgW3VaCAC&byXLD+6vVQmHnHp;~k0 zlhW9}8fw!`s~2XOnpysb<~2)Fd}37E{PnrU3jZ@^x;(kjLdz_K`(f=GGr~_Y5D2oh zbB_vhytb~WlTEBxN>J7~H^CtnpeEyWLC)dTt$HH^{w91`JHSs}X*&ez3dAR5u(nCUN%ZwV8AE)CqTB-{2gM{C9aHBc z!y<5Uwc#RPIdCa07*Y}9bh5zwR%j;_GRF##5UQMmb@T&&9u&9E0?{XV%JB|@B-tj6 zs5Y52ILXGe5yxOQtHT)#4?Vvf1g^4iNUR;iNhynu4>en48J;=mzhNd@s(fIrB$qz`q|fyx>55$vNoZZD;d~u{O@KNRLX`@9dW(dTU&V3J13odD z6fm5ciAd5l4KYDyoQKvaMXir7#$62J5vFT4uJu5A4+KSXVGp&NZrQ3Pk6ai3SoB2O z6wwX^lzIF{^J3y@7Hbv;=j3EoZREP0YiDlMz1<&5h+yh34q%R;ej>njumniUFqL<(vQ zD1zh;EURzQ%w@v-SJ5uc0I>JCeTCg1&L#a{6g6|jj*9CowaRpTGFWVlXczs(?y&d$ z#S(XTpds_WxNpH1glK-+FP`lGg04IvPNmo#eBHSb2JPw{5i0}|Ua%|S0tOKHBhlDP zbHg3lG4s$9?-SCLFrwV}Hx^MiA{LC-gl2_NbOyULfpu!TRpbCD^_Z^dBxyc5$ZeCg zIwF>5PLS7okg$}hGKoZ2Ij577n48SnX(k<&Z%?|+4xieZPj*gcL>7Ce_ly1GJ9cg5 z5wVHT0;dc$97>72JJmuBI^&bW(JGSYLWOA;H##DgiyaaBmISA}ETT23kss?Dl?$(o z+c2+hTDXxyIQ;dRL`THVq3Q$xgGa>HMe(y(N5oQUI3gA{MyuU5Zru%BVvi2pmwsL;~lBs48HQE0v+brz=f8GB9)-SYN0$LmLcpvB6e}eRZs_d zsZp`{N5rycV!84oV!ASTZx3TTACN zwxlX)Li8L8+%E38#-Oz4+7e2<9q}!;odk>QhW)894Zs<$l_$ZnsM=;%7)C6P62sVR zPD{38eRakm^tJya*k^!|3I;|sV5HTKv!Vu1f=vS+EIbJ|4JW}S>^+#N`+6Z5tC?zJ zc+i<@vX=gtNm(k#RoC~B3TwlkyjQ5Rt+As$e*6qrZ3Lx+Wwk; zm}C>^=_|g2k3kl}S6O;-aU4rAd$Z0>%avVL1GW^D&oadaiU`XnL_%Vus<2A>sj+o5 zK|A92gy&0 zNW}IQG-^?XYro)Ig-8*IBw4Vs41n417x(kZC~STs(3G#1@fBNp6`s?s8tTNJ+ zI@rHD(l7>1Sl$ra^;Om|)t5!OrZtiiA#SJJo22tnr|EzIkVmgX>>@548Ivg>No_La zsB}7~Mie=kf4bKBwJ_0WWoQ5u7Y}~-VG+@7kA|~ERA!T+v8~|)3hw(PtDzD=m1#*7fgzoq=x)LP6g z)nM3ZH83ejFvMg}rF)`fX9|LnO1cKxW_5P*ir_7briOSUHd!Ypr_%_v&3Xa)tcz+8 zE#;IUoJsqDH#!e6lu2kMvl&qB2spWf&Yj-YAgXBUnntFBAh0bulvZ>o%xDc?%Ba#; zo7Jh&A-ZoiKadE!J{Ckeazbh_L(OD&NQ41Su!EX$m_eWuIYKz?0P!6q0vM&tg3mho zM^v`~DFv@({~I7{M^>RD$q)`B7QY(h-+E+^4Jzdam2AE9*FV4^ ze26UFK%~ZoCL5A=#W_viF5?K~hZ~ahTu6hsleWRj1j)p;(pzC9opDsM4GC?wk7tVLp&@pEcn+1PZdC8!el z?j$ImwcuwdMxrMq8NxU&tJ(SzA&6-z@ClkGwY52I0VNuy+qA7}1M)|`w0T%xXet4P z&}RVyt;YJkYBceo_5eNCuG(7Y23{IREDezMF)_n5H8kKPtcaP8PFv&;N&gQ8hm|KM z7jn7#=0|A91>6A`vkR7RUtMbykJ~%CTYQeDtrk=nO-(P|p)-~+PW>+)z2%Xp^Q9$G zyZFh>ccbE^#l3I%Zq)h9@u+=^)aOq4MMap?A{%uHvm=6D#w)qlTmUtA)lr}&I@cXa zZ4xVNQH=c|wi=o?l1ArgahyyY(&BiJcyqigw^QVuT(w0)auGWXE`ND@93t8{i4ez{ zp^${stenIrBBYfBQb}>yIp)!-aQPYSLq(2AMw$IeYDa(+5{#&*|_);E1;P9d3rH-D_?gB8(#^ynXc24)D~Zly-&j%?Xjkg ztBRDUtszCF%fe49xh)~8u(<9=^ur-T=H{kL5WGn0tdA|b`c`HqsXuFR-49Y_Po(!@ z6D?tK$Uv|EA(jN6qxmi_#sy;P%}ENIz~X9%uz^qriPV`8yg9Lo5*sT`FGxs311!S@ z#71tDQD!wFmeoK?v2fQv@u}D%^?WK2r$e!}Al9-hE5H`b0`n@3!B3l+dS0vdSXF4I z>KV7ehadMN>T1c43rBlX+ z%2vZIqL?RDj(zsYL@z-`7Ks{PmLWqYF@sgYA(&cZaW`UeGBucE;+^fTS(-L5z%sV5 z=Cl5D)f`-CY|(GYAacW;9kjBrzH^Q)4WyYYkO#A}c-D={0ihgW=Gj@4#wz`-6DJo2 z-%KppZ;=Q~1O#0qBv6iN7k0_xvPkr1ZoE{|1zp8Az$XBVF^pob}Q63BS)sC+CW*M+O*JtBhpf| zfL^HdWk;Y;8ztWXg5ZL;hRxPE!$hc;2&Qn-)RgV^-_(-$a*Obby5BUlGz1MG8^c%e zxoCW%kmE3Cu(XBLWwetx*?2F+^0zbJ8EH+|_!%IkVK-%Vj9O0p3OFR=l)N^zVcYvH z^m)B_tEoFb${v*h9^l+Hdy0JApS@?d!*V~ za*G9ek8Q-*VJHZ^Hac%H(0XL?SgUB6!Fx zeq?_*M+UoT=lK$aBQ8l8agobgsF|BOns1%kI+|BqnE{-b+9nDHgw*Nyo6Z>^$fP-E@3V; zbZo2a_!z5!S#*LTU&?Sw7Mmuc(CIOGt?&F8P=DL^=j{9#%z|&_UdJ zFu+`6(N>_s?eBf8tYR*`_gn{hFFmR;?S@GM7WD=aOHt!=^PNU@8h9+5rp_nXp#Y@P z6C=20K(}V;h342zc0D<|LDvs{^#ebkXFGI{nz^*K{$p-u2;wd(_?C3z)K%B*dg86y zw$E->5SysDf~0Rg@bjnM`lc(c2}v`2LG*XMMK`QH)Ef;cqvG*oqjrT?ZQ*Cm_%Y17 zJ?$E$?F(u9J#Bk`+CDGpicr*E&vFG>_LW6(y6)7>ZEtw;t$k_eyH(|rZ`%8Znj;ZP z3QL&T{m^Hx-Rw!Xg*@;3=B@w9Q+9_;{SDo9khIzGw7|BsN}7}A3pNMcZDQ0 zrAnGHXIX3k4pPv}LDEp9TS9&xmA1+|1^{zh+dIo7Tc#F!Z^L_BX z-jklZ=WXwMxo6sbkTSL{Otbz6SkFMV71l7|sa|cR33!p|j9c?hDNz{0$LrZYRSWf6 zXaMhR%_8aQdqWyDi?rQ4$hW)92OB}!oX~Us-60?H?=o$Bna2K|qPCE2?hLPCgH7#9YWP>#UQ4t4W#|QaFr7}*}o(1jf4bMxC@^f}E4H{#XkBR<>2th_fkH$)| zH!IL)5tmv%1YH-Efl(>$fW6U*gm9HDp0?hflpM-FB|(HOwkHg`FoGS^_mUT2UN$B@ z?YLD)VQkcS8Rea#{)+C>WRk7p(1{e5k0?g*vSJ%&AHi`a{Hyt5NR9@AI-=|m);?jW zVGoLc%|aFaiEiG4x6;!& zSV(et1*de1E?g;UoXdwY2r-A4Yhkb|vxx=j|hG=UW znBomIV#B9J%?Py(tjU5fc9w<9n8sy<0anCfF6PcYCS^uwfwrAQ#!(Z}3^}w!dv2`- z!e(PEGA3fNRVy1?lW+=@7JO|wRT+S-UQxn%yb{MS2J^r$`3_kdTZC$=;e3Mvc;QSp z5;@JOZi|X1k=%ir3A^DOL9+Z0B#-V6IU*eF*96Xa!!W2`v?bCRX4in6{~iU%K&*!x zUv}DvB~QY?h|7A`q59(E>JQC8CRK0vT*{Q zb&t&y)c~TC%R8&a!A0Y}P7f;&on8+vjl2rkiwY%cdpcu_ty5_*G+mLkRjRVMh#O7^ zQFMo7iX*wU$t2%M#jPpB8awM-xvNDg%DGpJ9yr(Pue}v&mqc;du~>-HiE%KA>HzMD zH6^QCcUxj;rOBbaK*5wXlC6f}t*cGu@Zv&ZszKK=k_K-@Ohu~3Udgjd?%2|T2WU4NFO4O@D#X0>#~MXWtG6- zdDN*C!L&5Uqfi8AMn{#;T*a_2ck!%-NRXCxW4s(3=nJ9D$IGV9hffc31}WI&FnXcM z<5g2_(rtcEy@Ub)?#c`nlzgmaD=~ymsQdq%+Nl%P# zOS*MUx-cQqzWG(R`2`=2CdH-}f;yX8o|kxKkA)S3Db`wSib;7iZ;BmF5~z_QhSn4# zx`d|KvM|Mt;jQ3hdumNA_0|us3sX$UWm9a(rkEVUnPNw?Rte$eO|fH079K5_V#_lP zPz7Y0S^$J)%GLx!{#T8T$`cb(m9<|%ko8ownRzx;(rMa}*vw@utEYk^a4uhJXt1a~ z4Io3?K|IOs>li3&N+1lDV64WJgvzhTH0D)fGL3gj6Hei)8re$bwKc7+87u-I_!)j0 z9??1GAr-i?j=>e((PZ`(DI$fmeELfB#j&qder4|j^QKXyQq9#=927%4wau6WCk(9s z>Q-5#dfhk2TPh!2i|Z?VUN^%y$R5zDs%EwkkiKeIz{?gi1aBe{@_hNH$806Pm}K84+|d07FYH9KQ}t@ck~`vaxD8tq@S5pl0YeL?cl~ zH>Fsk@>HAwA?bNvT#gAXGfnNnoV;LD;V0Q}DuN?Gtw^T>4j2uBYE^HNd2j6OBAInk z+rT%WsDU)`ERav3HpoEV;7n-Vr~fem(7pk-SD$Ul{^M828TkYid%7A7Uqu)hc8QPzItpHOAO3lZ@4hc5&NN54&qdF~eOkQS4HJxy$TT!b^+oGbjcv!B&$) z_!4{>DfTQ{u!(S1^)r%6VfxBhiM`IsZbR#&?%epo#8y%c0d^2q5^3GJB?YT#xylh* zL&`7UaEFv$&QNj{;BX1kWP`o5K||~1saj}tSJ%2rsuA(DXlX-2QM}D@+hd=l2T^BD zNSd%5${)Biz0pK+jxiC-T{3VGban)c8SPaqb}k}w%o%bLVpjTcvY2p$_1_vu?R=on z^`MD#`O>wUUW!rV)Sm4-9+BO}6YpLyIK_^iF>dRN`?&bHz2!*~vf{xqfgLn3g1C$U zNjt>2!if*m73$&gaHi`?&KdT0)+BmJM47a|4AifPanab$rn;>baL5l7^U*!hOEu3F8XPibX)nB&os9Q|MIWwrkQ0#5C9) zGGDkRk|tsDq$<-^Y$DkmL%QS|pSL?dV+P2^Aj3J=@I)Iv3kskQCM?mmf93uoR*T`o zoJ+Bz2$jCYE5+10>sF zeC}6kC;ep>3L`EM9A!&n1i^vh+*;HaJJc{6Q_C5>jBP>;CVEsH5=NFp_CkgaLL2yE z(+fcdwxfL(acFlw0@fyAro<^f)-gZeX;3ulBOOx31$+~EfeM)fKT?Uzx#HHpnv2lv zyQbo19)e29DxXw$2f9`gv4FwKE(c+9@0sW;ym-7k&@I&LUZA(UwCW&^EKngQRE+ z_KQFP-ozp^md$fO!mEW&(LI}9R)^6Hwv}Q&ydi=Q!~z2LsTSvWCqkqHy`|R1uizln z9OlF3u57t>h+yoxb&k1sy>5@ual}dS_(zq3w9m^tIoYL`K-D}ub=I+q2tm1$1tF`> zIyMoZNV7Et)4>8;Gzph0V)^qg-yN}Zi@rp~k9nww<=!5#+1DdB5A<&La2tr_9oz_S% zT$ApKu|Z38{QP5rhaW%xsBW`)F*%Zfm>lv%9PVc|4vjk*_H}*WONGy9QsJWpVyq(x zp2xaDjTz!q;pbypv zz5+nqMpzpo#JOU-WS3VEp!hN_Kl+Fe=Th!aYh3w_PkiSse|_hlfE5%x01;_52Ksf# z5Xt6$DTv5a5RQpoRx=<13zxz2a9L@s19M}>C~tN?HmWX;z~pn05L#!;E&$ln8^3$a z)t}$>ww>2)-U>}fR}zi{JBng&8tV8Umdse0a6Y0*5JU~jhZ+nBT6F9%N0v0AsrUW! z!ylS`|35tZ=FJ=|3-1Byw;`$_42&ccvQN|rUc~)9IuUyj6w79&<~fhbhV7!PEPhliCtDCy}Y6ue?SM>i`M2o+c4P_s>j6A6Ng&ah9#mmfGQ4L zX?Q=O%*tx-d0W|rrQBjfWVT^Ps8H=utmk<0Dh3jgr}h zFWgCu^mG~~m3%Qw+ z=tt2UR%OwPF`M`9>REU)0&r%9&H=p~plX#yy*HvLjh=-;ZbSVbRMrdIIzqdc?{0nDE8#dabmIZRi z-w4KEM$ya;xCB(;I*gW2Eow_&d0=E&-nQ@e%0t&x!{lqfRb?fv_7XEHb2~g4H&8gw znXa8TCseXpO5lW`J0xquN*-rK$698QB4xqm?F6B-Q{ZP63Q(L;5JX5`Bnd~EV3W%n zLRgsC)IZ)*8~EqEs&xXH)=J~qLsgtF!14oXXb9L zmPFgUQABS!v}G|YhcH-b%X;4_!}v>NqgDciMBKMJ5}qR!R?6?7XZTMH0EfjIq|m{* z!US6wHORV&P+pd44=~0B26B=W6#MnC<1t1_v66qL?Px54-6U{UVLlMBH(J3p=%DPLbc)?r5Y;fF;?7UZeSX5&Dc;(8h*BiT zXdw%dhngNjqCx70kMbZ5X0yogbhvSl23Md;3`k~3XS`D^(+?#0(q*AYATSM?uwTV1 zQG2(9{?QtE>g{yDi2XF`<$zu2q^%A_$mfRkT?p8+<^~W2Xv{XfEe5`ON zmT4d#@-@YNctuxeMGs`1-bU}gEOmzU0GQ7HE;ed-7f2*h9++%f}L2tBB7r5o1qO06;xPP6yIqBqT? z@5M%lO$l+fG~Ag9Gk z!C#vT@;-aUoAx(Hlkv?%l4&?KD#^*ZXti%rqr$?i<_-EHG?CA_Ts=2jC}(iiFd++? zdQcB}3YgAN2>UajAnflvq)i#2Xk~{_C|V0?0Wq=fScR-e%2tWu-mI*8=K-n02fwm! zaAZ@h%5C<++UQ0oZ%fpH)W}K-kRj5TxzuJBq{iiZ&?&}3z6zpa zdw{oe7M*uVm$1Qz8i>Z?Hx>ULI~lNd+U0>{!t8=K6R1_>1r=n|837(O|El0z6O6iY z0G7QiKG%*labmq7XsSN6wW`uaX%$OYY@3XhM41g14*@&JiloVcFl;1HHYLzz#(skt zEP*4+!@e1Pvvqx%7-wj?0k)izl;(j>GAzo>&k>4XhqxHt5q(h%i7DjdN(Q}=?Vk~B z37=#XAde;*U{01@nRapHxqFDBC~0WdF~((LV|P561XVQlaB3~n5kQMfQ<$6bS;0Xq zifF!6(hVY)vbUqx`7%8!6sZ9!$JZ63K_2Za&3uI(8(L^Y*_7WxiYx384-5|Mp-mV~ zza=gKWMUoVcdSJ#{0;}T<$kw%W46ri)}oB}yOS_5Qz;D%tXMu+o<3_SiwN4%5Ru0s zHvki#bl6^N#hbI z3X;nc&%eCdKx3}g;sgSbT_D4}dXw|E34pbhS3 zCsP92K(C#Zf!g6dT7b0wgL2`p*Ze$R_1%5|U+(h^W0z-}qSvXimp$Dwv z8_Whp`(yc?8uHboZUpBXW2C_KgFa!p1C5GT?;364`NFZ5@$c?W0 z)MNk+Z6qkvByx&&39S-~lZwTu2Nvg>_&XbKl_>>zE~C`PUWxN^_Da-nkiA-OOO03@ zu~*r~VsGgY&7(!v`ny_E;~WGg753XPO^HrO&K0Y;E_#hoz^2X@m^p(0`CXu6$0`j9`#LNeHndpiapV zcfJ@LSfN%zG)+m_%CX!>$Nc~7y$iHnRh93#AK&{sk9|(w3F`i~@s1N9WxQe%0gJN_ z6a{K4*6`Ngj$!v;RC%lE6T5~{E=~6h@n=URJz`#U)&3HYL}A%pYnz4qSgG1r`P&DWYsFwuHIXB>mU zhG_0n(F&`eu^1Swv|(O?9T*!f1aF%>1C3cQZC!|tMF?d|rHPO#B&E4~ou65gqxQDY~h_jGR*O(N1M=O=pZS0tIT zC^LJ>XC)<4-0Sl7?zqUjL2G&?>m>g|M5vO%6Azm2iEsykvW68};EBD!y|NpjR_j%V zpWVFD(GI&;0EbTgL^%EOFqld&*_PZwJX{*ff25a_55-wS0^kJ9_Q_CGzy~_|PWw-0 zIPF_^`}z;=13ZQb4Q)+yuaoP6<{HUQMqSIjAqFu62-s1}*9WY-yn;SqOiSd|uy0x* zIm?eIuaWQPy%yA67O<0xl;BD>R2J>CcNlu{(Y;ns?m-|@(;n?r%xxpzYfTeiGm^ZA zFk%?!(o>VKcO2^X(_}!|fso#rFQ_B=Z;Ai9G35@w!GUt`3|*rThHFI{KS#@qY zZMr^8yks%Kd60aNJSdvQ`!t)oV_U&6M8qyj%RmYcRaw_NRwbF_!9h>X0zb#Y0INC^ zKK%ldDK{ydqtjmMdDuY8;F+xc|6w$mKvjyc%3CwHhL@K zPd$6%5c{a$om%pR1-9hBk!BC<*^5%5ll_}E@Z!k7`Rb8^dT ziGi5RW3FpBj^&sM2H+$m~f4=o%PVeB!iu^HVk3h^|I{6EUVX{Ks z0N;Y-^9f0B$2+m`2z&XIVRD~acB}^ zM?R^3nGSWmk7%m5(%bGtbT9rnbG^0#VZx!ZQgS}C8fvqjEx{!^K zYe`GyNdB3h5)U~{G>+|A85uaGUF@OYN4@i<7W5%HEKghV-4^z^+*? z*%Fg~pLJ&mzn_NRCOXVL&Ep=cc&{C^RS*DC*TXoX-PL_zaiqJoC)g#|*qQG8)gJba z*p?q1UW*q<5R3C`q3b32sBCNskc)|1)}vi^RG#noK{d$-xZ6HFl9~|s)&`HooYECf zM32P1<++sCXfofAD5~I-VF14$)2^;tvP}~zyFNM_0h4ot-^d+Ad{)|G;oEx|3*Q-B zKB7gCdp2%PVj3Fc z+&x2k+%Ha-mhX%5mzF{DasF=Zm%#H1G^8y;g<_=W{BJb+{4$^FK{$%J@;`?s1#h4j zW6F}^qkJv47`0$fdI_e2^5zA$)c7Y$dO6;o~8~W-4=&BYJsH9iM zO=6A*HhE;!BsiUSALn;LUvd5f;70<96yg@=w_4fbuIwdNMwg+f?B8q%KN(RQHYj_S z&2pSXtv5zfo?)PNYoiyAxWii^W(HsAAROJ_8sa?rIA63r+RtHcp2vxC_4yq1Xp+^y z$DCQAkJ({h)NC4#(Xy@_f9fsGgD%`|xsRDBwAtd9jdzeI-l0%mRG8(g86)<`EKl{W(jFfvG?O01|xHW9ixecC&bh?Yy4y*v9Ny$oG7WX`t)cr3S9^ z_Xum%dg%Fy^Hu<({3g{l^c-q45UG>mjr(ID)GlElwwr|m>lCo4*+Kxx{{PyA*wbv~6yQ$i7 zp%S;#QSB)2dAURin`=1?8(F}1ODOLo97y;>loQyd6GDoL{#ha<-XH&x7QBwD+O3Su zv?Cz_6qVfYs%;+b z8ygSneleawz{r@u(9>qZIPG#^fWpF>v^4r*xguB;53)gUIbI zcnf>6iXm7La%^@CMQ)Tz-H2ObC9@j``B;;VfWF#u zY%>GDxV&Kwvhs!r=#@7>|CsUyFfJ=@v^Y#ky)9s)Q0G26InAo%jz|GDg)JTuo20-f z4eX5;R4RpskM1_dvACNQ9tsFX^>gp=5WT*GwMk+d_AqJak!*6TBpR{0Yu_HPd#0zj zU#)xQrntw*FS~bn59^iHyS#@1%Y0SdOF4IY`*cNv*d>&ZN{*+WZy-?K&sTx5G|;L* zssbNDs{*M!J{oce5hrPq5x>O2O13$>0=o>Dq7P9AA{1h{@iv7GNXk%@rtA$ua>F>n zysW5#_bi}RWK`|&9uWd581tN@SEoN9*~B6RWs5G0wo^n-i9X)5`--Bv!+V%LHywxf z2(jGYBNyJYv|AkqB;3L?;iX#1y|4~C#`&jsTbqrMor={4)k-^p;`|@`YZ7+|?yOK6 z-X1MD2vKlWiS#A_ha|BWMTzj0B*J1#;~WH}9&j?B!WwQg_wI?oElPGtHCXjnoG})2 zO%LI$!Y3M#7I0$l#V{QPu8#b`FxwQ^@%T3ks+Q@Xheau-OxbG%mD-I_l*4iQyCyzh z6HCW$jC#w|6kF3ZjR?>T}X4d6c%`t!5btJ0sjIeJT}=p3S9yHB5?qFbCG~-Ls{gI78WcBE41X7 zQ!zxgdE(rO@dDd3Y!{1Gx0_~-$)(;q7% zJZ9?VlOx)0m&#$J2;Sn@bOu6ACPgTqjZ7iWNs7>JRMte+O58h>3&;>{$q?c$s9-pa z`D9Rn@Re+rUDgB$6}aV9wH_=!Fz>}$3C8?<%l&*KKxcE~qDyo8qLtoq_ZB^X(X{;n z%T)mn##=z-;AOC_W$+LHG1lK+6P@N*F_hg#pO7QTEi>R#TN#tZ-3$QY%>!$ov%6^x zgpaGcN4{n~*LI5~>$!dpaVaxLF|&^J+v0Iv2y*L{gSALY8Db8*UbQ76Ro5#qZ!J5d zcotavvUBK_LXix=#+5=V!h9 z#h8<$Nk9g#7O2Mr1ZNr7W7kux=6gj4_{+jiqBEdnGl~0>H0^ zg53sB0TvvlXUtjB`M@>I4_zzdMC+Xy-6e~3g?be^07uy^nCi8BH4G~oIUY&RF&p_V zELRPwW<`lo2i=B&Z)cR>a`#>Gb>tUqRvuqW)k;pMfBALp$w=IY0usbUy>Yr}rOACG zG8$#$WD#>E>3H&3qF_E85m?Y~aGxgMUy@utR=Fdzt|5iMy_WnJ+=&y>tnI#X4pDk< z2Q~^u&KFAW5$7E`;}OI#iFs*1eoP$!>9#pG@@u$!0<}^faSmkuL5o#rOvM|br}XOn zZ3?k{QkM!qnN>f3YkhQ`es^7|XL}R_YkgZEZFkq$5IBm{mq%Rha@Tueu6J^sKgdv@ zw5n;Cdlswp(F4xMx?k7(bUlt9t(HNC>)bQkf3(QfL0 zkIZb7jr?2Csr)>bMbc(OkhF*;mQ15>qIicDXH1i%9t+yCn)($qAhybv;hRnhYfzAL z0uZ)OJcWJdzK~-`rdQHBy)>-J+S@c!a3iX>lI1hFIQXxgW}%WyPLj)*teg z7rQ?}_oe2^SkA(Z$l!>}+8Di-D>S<^_yK)R=I2GS)gx`oRv)AX3kZhbHE-dm;-`i~P(Jit6CUXEfsTMBnme(-#|bN!r_4@h#@~2S z_=8w}M@>p7WtX5Py94EVooEtM&4}DHgs+khlua|~$V>Tzs0Olrf|uq@M87aMV$+(o z-Z0^K&Iq2jl%3{8kuJtdF5_=or|jtbqYmVVHFpH;j|hOqU7^v8 zh_#r5!eX~fxG>G!R`umPVgy4h?pQfm{NRbuQg6HKM`ej5P`X$>MrGze%I)7n0E$oc zs|!bE*;R_!yT}vbw#1LJgqH%2MM9HOlXwIH2(TR#Bz+E#wj%?C;3E(#dl1QW%>c_T zxYH!W^?V=Tvv&1XYOrLik=QD5v8)`XOV22EndV;Tr@cxo;&er1Hubgy7J7F7S1-Uh zYzl{5TELcL*vbpoGDnuZv zBLb<|xG|j(oM#!3kRbxx6v!a8-iv7mhaN8gn~dGU9F9z0%075nmU*Vz2amFem7pPn z&_HtzG-0VZ)hrc}n$yxClEQ2{UBMU1ex`JlegV=%tfZL6D6YHIoH!k=vn|n?AAjM7 zYzeTGA<|`bb`&hIW$AOQ|Ct>jr81e{&XG}5meg{Rhqx&xSn6?Q1a&_GAeS!j={?86 zLAq?_F%3uQJt4Fq?HSP#M@|8^P&L^D0H|P3OpSJ?NXj#SYt^t?qDj~Xi#Gc^l!R^J z8f+SZb0~|Rz$(npuYm0G#`zMsfeo1sTWog$ zCc9_3Dj;R|v{e9$dt&!R%hil`#sbX1g{r4F;Mmwem{q0S{DCFw5XuxoiK}Vv795H} zl8!nIDTXv&4#g423f7rk=CNX>ZWJ~k|FrxTy_Wz3gM|#s!V3Dg44iOQ!(|{uy4sa7 z%1l=z5%b-qo{8z~1^j@E*$b&I%e3su+?~CMAJKWL;?=I0IP)IG^3{x}*zAFZjgwLi zQl1ebH%{AD3wzv_(7Ig{c(auD4SRVt5d6TXBI&4YY;N{q_h5KNI+l2;47>6!q7^jamx@3t0gD*&he7bVTBvcZTQl}VJVtGsHuFqR)DS_#Gfziw)+ycrJQxXV~uf&LY z>|h4n81aWvzJ z@-#bM;2UKa)y$?fQ6d7Wb=sqjzHuzgccx@&j)V1^;U20U=m(IfcC;KrTeB!$XcNU- zYJ~}d;NCIa#x!jcu(=f~GMQYjP5Y8pT ztUhtcF!ha+VOE~_4+hErBfO=<%X2cH5+Fket~MtPt^@tdr|O9Fj_Ol7@21;hCX`GD z=;b0=C958s?t<+X(=E|}pdJyjrJ_YlmE0vZEmq>(?BfGCXvsQD6tx&4yQ`uv+kqAG z#6(kv7Ua6&!YW!40*J2|BG6MVT+<}0RH2c+aDYy9gd9MFF^ZgRV2kKsfe7m6ArPUO z74=|5Sd?1|+!7JUii!~9J0V19f?B}Vrd#vm5dr9^ckt5kiL#Qk&Lh(e1 zK=I()AVL$gor4JDX%Q!|Bz=)*P)pMnR9RIjrUf76bGMusf|nwMS+#~0a0NbzYF{iy zVwqAGYXlXULTh%xdWIFx<%JHZ67JR1hl|;F69kfZoG>q{M-X<3Nz^AUoDe4yq0JnC zQ46wHf_JuJVceAr)B8)E!@@fWs8|aRs(G+Lubdy6~5v*HHe{f)z_KJ7Z;E z82}1W9G%k(1#vk$d*GS6QW|fP9a+u@Q|Vb=(Jyg1F=1?^bs6MXEUT*c~ zSCC?7w+J^@DJa2nS4v7AGX=EM5uZhsB_$rnqB>@*P!4O6p2?c@A(gn}q+vbMG9o)O zPZo#yBUL7HDv6kza> z?N92iKes|~Lf#r<+$iC!V4Hdbo)}^;f{!$9qZ<}kKMYGEB@=Ju1Pd@-Hr}j|!IcPs z5`@6Sf92KR-oF8$1`(t^uQDS~jX8}Nm_&|b>P~h|ylZ(Bys!j_C5pdKS$4v$mYE|B z=Oow>14CQZPW6kp@R@bE=x5e3btEh@>%iY!W*tm0Wo8`;U1l8$EwfG?h#}{}0csbk zVdg}cb#V0#=5aYFuMEg(nRWPENmWKIQ>{y@C9Ev=qB{!#D?KBqG!$S^_HfsH=9R;y@{&=WHZ(c5{BUlXS!#p5t0XRL^9E6j&s>BMEW- zh2z;`H5xhb-4(W?Es^Fv=#es_DZWPaKv3Hx#DsUc<8#L7Cdu&O^y#Qg7sw&7`-yZC zq1f|sUZQz&IlHtL!>M24S*d*w?5m2c&j+WlRItboS519Po}Hevj%TtHNlx&ivq#_y zGPs$B6e-1Si^_9ju~-QeufZ0Lw$%9I)EsSeX-mB~^BrtmfRW{Pfq%|?$AK1L3!;ED zsjjSUM-}I57<#YmR`I2~0lziW4VJ?c1zRN0vA$y zU*28j%TR__eSgh6Y}v2O87=bwpn!K+2lxbmMF%Hg0kdPq#1GtDr`ZYx;K%}u{mPe9 z1cz2!gwjpH2Vt6$U7N-`l?rAYT3gxUpcr;F$FhvGlrS#gp<0EfVRP9*G@@wD(}1^G z8A;heRM3wO$}wtM>Z!@Si^*!QUkjirZ?Za=s+Iv`Q5Dvpf~po%1fZLqR>yIH8C7W` zm-r-VyDU}}s&aOzb%LbqQmT{puuCx-ZY9OLtGTF&4prdgF0aZE6jzLj}j%TC)7>Jmlj#FtZB2wzU!B9J(Gj}x3P{l4# zcLpNYuQX;;JvBC{u{bS7ClbjnU=wfbrf(p^NHyn4VITtU2A?g9L`m=|ol&i-SaD5lz5 z2aWJd+JR;?_cqmbDvn-9Z0ygox^jqlHh?TR&!cnZ8BG&p_jsmxuG)Vz4St@%S5Z=7 z|Irga&*hWiRGf02izk|AKCpQ%$|Ue(p`1IFWnF2py1bnzfvs<+NcWpI=QI3XusI{TLK-1+sUMgvizw&K7thi7m`fS=C1INl z-Eq2pBh)P486-8QX2OnGgINaAcC`}J&&}iWsVwboMhK~&w~2vZQh9@VkTy37okYWF zeY3cMI1#H0$Gr03;C|7epRZqKQ*(MIpN#KW8j*V)xFE8c=a!6iS>eIQUL&I{79q=O zC`Sz^Fcl@xztrUF+uZuch#tJ{ZZv55dn!fT!&1y@=BmTapmx~IW8bvE0PGbV^gEk- zlEG;1kv*@?1X;~}F}o(eBAx<2#4E8rNgNQRr87O~Wt%V-9h;~o%!<^L)5n8K#8kbG zlz^68u&7)w@px?zu;`)SGi%HlePLx!n~FIDE0b$5$_hivUeZO|9bR-%d4ov&v!dx=#2NhZj}KT+I2a}}8JRkNLP+x=l2Hk7B- zR(Yi|lXJ~TTImynoFYx7>Z+k4Dnk^RHtx2hmuaM@EJ7HBfWEqRUcUT4Lf^zY#h@!e z9j6aRBogOMQeITw+)KKF8K2_eMVn<6(aXjIl>5LwA*P}KNt4r!icgyP=;ofiW*=?M znR&H=Kv;f|H#g^v^U#*^Q#QYim%(ov15)C^7-EgVq^d|`ARV)ffv_*e!1zzu%-IQ4 zuAu}PN<27}sM4<}XDBoj6<-+u{8s~`A;C^Lng*lMSJklyI}RR8Lu2VOEcXX1QcMYx zr;?sRLyJ2Q&ZddN*e)W)m$8ma@?<4M*~gbi$xaJ!bw z`?Bul9R&V3`6PB*zCp8FBq=!?*=NSCic!F#K=;yHVEwj zg>1A?dVDL4io#fh1oG)keDPGlo2>41+ZEP|!nz9UuCQJdHdNSfh03kW!b-a=b6Rte zo{%_9u8Ddw*D*?}w?oUsJ}vkJNZ{d1S(+uZstSPQbNHvhCI-(NguWn1^!Nj0*verQ zMFJNOe;3CCSxmVs;mqJ={GnPJLsZW1*!tRGG^oM%hGPzQD4w!qUa$8;q#HIZM-plC zpvz1tY#S1ml*hxItNa$`HTfd$MV0Vfl;2yF{HPu4;Jh!xRf@lSZ8YbPSs z^W!#+#6ierC2El5Wx35IeNsZ|13XWvzn-r>J^37q=i1<0W)TG71UVm4EMR=tw-9CTwcY^S4zPP1!}jl)hqvZO`~Vt>Cxg3#IW zoY|2;4M$UT!H1Gbr^RLMsij+{PWpXNLb*1w4r#pXzr>2x24f_k-oh8{sb&A3`NyC) z1*Kg}Hr9Oa`|h;HrbwtbqU;5&v+$B4O}DQFUY%PROM5ENSD4(Bzgl#)xj~rF<|ghw zBC%8Fq|$|co1o0C`BJ^y&1~?{NwTWPUXC6jB#xR_;&E=IUFm`fYL*a*yXsoEwoaXv1Gi*&jO%$ZPw&1chcmr&Ms!fwJk*kw-r@}3I zo1k1o%ilAXE+(<%rw`YK_V#jY1mN=GTKkS7R1ne=<;xXl+?D&062YY0KqPpLaY%b6 zH|2ZrUno=vA(zJRYm?4s)R(qI`G8DjL*&*}nDl2bGkVT9sd~=uY7~jvE|ex1<~K#J z9u9dN=D}-?lgWz%r-7PZFKEZvYFA2unLwuYv4@IfBsAul3ss=1SybI6UhU_C1C<;yK>xvI^(}uVXM{k$`N>e_$!D&@*GFFg20P$*#>k~^ny zvyqG<)EwZ%ThsaR;3p4N%2+cTnpgqIovt;)PN(C^Iz1j@3VC8#K3I*51J(e)8me>b zfHgu|+k+axc+)U9nQO-3`r_EYcWBvBlu`el9)pj@0>MXb46L50&u4h5?d4~CTnu{Jo~gUWSY^%%4cUt>B@Be0k0083l#LH zmCUlZtA8PzoSAL7s6r-yxsuiMx*eD&`>>t0+N99=uWg-Gc@xwIfBv=>wYJtO2b`+! zg0+)JB|35P;*;O{?twqM^P}JRkt~y9i@U>~_y}xoyAgXN_xBBE+Hgl`nlp|wOTkpf zq4;U_>`n>Jxm!+(ok-^YSVZbi<)h{qJZL}L`QF@%orQP zNCB&bfUrqXmjxnOP8J)H?L z#g(0)<1Qf(Y{T}Xm8LYe8_xE9+cUbUZO>+gwHkHW_1S#1n+lEXM9vYQqh{#!dJe87 zy_rks=?}JyBn9u`2uDf3LB4y(qs%U-uAx~(RK9MucJTe zM$N6E^wHEu^hlNdby+l;&(5MjMChP(LAtvX>N%#9zC}aZE`BK%4ON^qpT`yr+oscG zp7%R5y{386>{cJYKPD9%u;*kGcny^7!r*(#>XKDMsS1e)CJeDxxl&W~6 zbYIwf6g(@#0X1na6B`qIQ8cN4G5^yc+y`_>R-nU=b&f^PAS4?Vacc7z^f*;8-~WNn zV)p<$Fzdsz_3_%wxeL?=REHChLJ3DkKbh2$ka zjk||F_*tYhY+LzF#M!<{VH2_k=~NS4uH))#p$XTdyZur-8@g8UBy!sY=@8rG-ZfQw z1D6&ZHI&>yd)na}=~x7nVxDU|gQ;*Qb|IMMK3Nj^n4wN7W@MNL3qUjCj1_!M2f}0* zh9?>5tU`>-*rwRgAk&|$eAWPuor#a|PBq|6f3ida%_G5tF+93$q^v$elibbCT(jpO3!dxa5c9jxZiayydnqM^xz| zpCiEM%T$1ehmQ2(JOG#FGBm5!1V2DQRzZG5*qpsXby&6_CcGq$h=7mw)lG=3(m?*e z2rzM<^a4t_7$Oy%=#2L;(uV|dWz-}DRY|DEcZ9U6itMOkxqzDN+~XB{rsoU&&v%&K z@Msu*MzW$Vc0I<92}Z{7fe4)I5p5`MkDwDrxF`gAbI5QO=S#ys2^HfW&>Nh|%(IP+ z#xeLikF`%REr&$P``betJLKBWcksn3eQMj9L$2^0L&2f1byyA}#c%DEg0kZsd!2$J zqMGgrsCDx-;9nMUDY}YX4?E1H*$e2hg3|>SK`<8R+6FqoN~T2*I#?Ttstp8+Wq&r% z!*5?eoz<6#21zaO4llTH75Bdi!6<27HMdKPSv^6siYr7jywT#LeL^unfYVCu1_KF? zTTBu^6HKmrbii$gLF3;4TtI`TLm(|biG0VA!WsdN{yChA&C5n_w2u{vwms#2OtKR5 z%YaE@EQ6R7f=LTvP=Q%|M|ds1L%^uXs0p=bPI1C~te^!q-+|_vQ#GCYahliS68-E9 z)uR;ouYe-AU2>-=a_?n#9;L``{v+JgK;x;~?()z$N|DdEHF94lPBVwI1u!QTfqgKj zh5zTfU*8%zgVXWI*2rf^k$4rwl#ghQG|(-)MlK9FLDiuCt6w93i4@707F;6_1B=72 zk#4>ZyGA}xiFqx45pzwu1i>k@`g_Oa`Wq0)P7TBJmJd^byva5$eY$&6A?|wF zu9AoRISopa^LU^>_~>_~A|Pb`T)X9xECk%X*`nsPgM{#~W21BIRxu-_aOjX#LwoI8 z99Y}#NrJ}X%}EZ0U)vydmNKwgZ`|vGE?x)8c;tQml0x-XyOaT;wyi;5xg|{|=!1%- z1mPhk*4?h&ng$$MtJ!k35cO{|tTq`C=7KmEYKws`Wd*|JtxLr)&R-dFr#>k{>fK$j zyP(>N0(_Vkje|%A(^xr2SRVE6N5{jC59YCBTaMWD*&x z9#lM)1j8Jul`Ub;U?VBpzibv=J87%HoVgA0AuNw^WCS@I=BOgupUK5Bvg-(Q zj;KwT=3tv{Y^pfxnjRYG-_%^x4Rh3x{Fy!yY$0$N<_v<1IbE%lKOQr4@O zsM7k{;F#oQOT%JIM;&;3m#%SLMRGY7%JP+RC4BO45;0kOTNZ1T!S#_kE9 zXcA)=xW*P(Z@ucsdZlxJcq+}EQ~|m#tXB#?xBcTfeVoX44Zr& z78;plF#qBJA)xnpLNFV>5dv2t1jjHrKv3TaSq#HO2==T078lyfTL_%vj zSOr;v*ZYLv-*kkakXTO$?u$MlV5=_(frf)3f)fPxgdkff9V`iaz$dFt{fI ziK>JkGDhZLeiV2;Br*njUDUYpwkQoV1d$p++dbpxAAzY@d|u`yk+F5K_^234@saFg zt|ub@!?aKyL8H?-p<41KR7}R0y89;M_8gOO8weC54%~>_^dB+l8;zqe&rVD--^}6S ztp7E~Jon-kn~WsafHV8&JO3-zSN5(JG7?1OWhA3slaaWp%1E9x5xDpM6(6GoCjaQn zweE2I!p^CZHYYrpI=Bk_)*%@W)BIHzlpRpE7~IM`E#PJ$3#2$sQQGXGt2t4^+W$$ zwDmb$-lAJub$?T6>k~C%TO!4_>~k>>((&9s2}k=Pb2E~6SX&ET#=cY}I^{G-!{kp) zC7aOJQfvwGm)Esh(Vm*db38(PlzfzjYlC%Y(Y$j!h6{e|BW-?okzz7y`7%2`DiGU3 zjnsxRM3v%9UlS5o--95ty#l1D&^7xi)TdLlwSZUc1WkRO{4klL#_#m$~j_62O&{FniI5<*Fo@Z$82yc$wy><`z35gmfObJp^r$E|3wAwVx2i+_2Hl`&~7{O^FDZ2nSJL` z&9BpX)yQK{SJ9*s@?8!RT_0LGzlt>}$DovaW$u~cYg`^ zB@^(oz^{YmTIPH}v~X}ZPM5xiOlgEARO9D3a{MA)b=ADv@LTy+ak1S!|A;}o?;&%x z>gUCd_nxwp;30F~b##+3-zyX&d2hkG@g;cck2x_6!Q}aD?CrS(VdVe3HO`XkTwp!LT-s#t&Q zqe1J>VOl7yKl0MdvHr+!?kuY^qGJ0kvjJE_-fA`gq-)udT{Zx(lPlkh)OPex^R2WU z)mi=}9y|-GJEWs^PDr}>Zs!ui!AU0iT-`fW`hMw(Q>AczW1pVm;5aPR4Q$Df3T{+4 z=u|m$n+H2pY;0Aoo_~A})g9i8Jjbb`D#blY@1jqVq3)VH_V6{%<5UqI_Uex6Dt_rt zJF2TN_9OI68{5wB(O}zYTSPVJw{y?$cXZeGbXUBh;CFA3$ZyswqeRZ5u{>;n&)#@s zHTInzO2DJM31*lz%C0y)%!^rZdSDCS_M$ z;zQ8CSedh659)uOPigO#_|$Knk^APO38{WlXiEW)$va7HHo%h$(eqg*qN?DH6Eu(1 za_~QnjOi^0M6qef$2C0ZT zww6~#oxrIqPSoih#Tx~D%i{D4#G9~h4tT!d%|HKw@a8Y;akM3NsRoiw+H(4ttTA=U z_G?M$yCvF^1`&r2c;{?mD&5W|U;fkP&-~+`+qJExJehHR*Fz6J9lr)gW~@Du{}}&I zI&45Y8mJ&X>xh~iF@vPhL#EA{2g|en_JU= zuz%~-q}^jc<^67@Nv$0ha~gM1c;J-XycC@F^gECH55K$QpHI0O69q|JckaC_oIWlN zc4uMn^__pzV@z)J%I*1q;z9n03@-dQY7S$cnYqCKu%R^7$9ngp`|aJL6w^s@e4jhof~J8j=Jx4-Rw+we!f zef4SoxalkR_J7X0YMD+@Rb449RBL~jql>_I#dR2b; zD9!K!_v9>90?<3I?sosQ6%B2TE<`oI0pneSDrA}ew3%7ih_BLqTz)^yFGq8s=U^y| z^1tAgv*+z75n=E5u%Z0!+V8wBco$~BsIfLk7IOS|FULIu13`(C1P&*kb$ z3`K8N$fGuetdB0R%NkebP{gw>{NS|aFIf?j?-A^cuI^m#EjHZC$Rxe+EW6?nFS0ep z2m3~PaaTwgLFQ~qX6afV&FGhMn$pj?1Z?8c*T935f{*DT4*Na&wc2Qwb>;gO*p(8c zO6-HejNP%R{4y}jP0`tBIl_UVSvt;Y|NBF0(^c!E8$dgc1q3U3=9zb0us--Rb(nEn z!!#hw9WB$=VhYVR?hn#18y$v(d zs?x|+{YG~68=37lva@JJVIZ99F55!BGAB}Q8_!tVF;HhHb$fs3BCu`LGqW zlA}A4>)-^#VDZZ>|3d`vTUbbqjY9NT)GfLtLPtL>PPyteaxFkzcXm!1TZVcJW?8H} zvGxf(fV}H=fDuzf+G0DWXe&!b17kOz<2JBxm$gC2F)rK^8Z%9eyt_XVE9>nvUcMxhI3GU`JUtL>=G?v^ z&SV+ZVKQ%{=35g<}C~YeuFc#HCYmR zakf<9KY)y1EZO3CnPTK8(*R_Mk}nJyD1!_>L++AkiV?2$tWKVCt)Osbm#zg)L*9G~ z#fF-4t@H4$&32wZMA!0|tPGkBEs@%QFV?kXGn@Zo@mmy}AopkQ$hBcR%&G;EwwzT9 zT$29c6J}YN3Rr>M35~XIrRMT03|4M$0&ImY0Wo))eLULDZ+YyyL4JJx2tSs1?i)4b z++c*sKP)Md&7?tc(-HtHG_%|jLGrQ1;vOtesuIv7k1xqMo#*p+A%|+JWcH{5iJT)N zqx^BooyhJ$_nvV8rH|!e@I*c1juS{OwoP~v`86-dFwBvz>Ox-3E+SsyouOC3^r6q) zMXGZC@CpZI#(8}H|FPNPr$_<5*rrr-^`3D!M>Lr~={m@n1w4u>{k2PFhzP8+_J=CT z->rj>7&-uX_afk>8r*vaxXSfs&U<cyY7t$@?Zz~J-pM}VpNwY7k* z*3mRNFN-#7;^8z!+adu*OdVaNX%}!1L-aEwu(=;~w)>G<6mD%4(T`4mncReApp6vp zcMiDc#DRF~$6xsJUthc9>z{lgxY#|KARKS%hu?bdkKcFSL!Wx2C}k4|9{`}Khab7} z$6tN?>$g4bAF0ZX>X%CfU31BxYg0e@!WZB5wd?-wQ$N;wibIqkdMf-qLk2p0hJl(t z6O-oc;HEkCybu=7~Q~=Lw~~;uZSjLcnCooiO}R{9m$pWNhQH4AvTaB z_z`L~NeU4UA7EOW+IY#ftafo$pGq#}zPTlZlj1yY7y9;W|Q;(y=dg)XRm8 zR!6H(g=R6mkT4avfu8beH%)|S@bZNPw($G-#*y!Y5cgjpFhPDiT zk^pvo&d55+!!S_-;~j&Y=*cw-_iLkylvce`R~a9qc79bhb=nX zUXC!ROohD`SW_=9=%EPCwr%T_mYCkj8=BiGEs*$f*g4=$;Nz(7p-yR`6!}-Bq{5_B zs}@M$Pif()ozlYZ>MZc5v;^fTEkSWgi?Vkyw_&VPTI!&#ozlXodc`R%I$A_^*L7%# zug#s(f^cX;T3$J&MXw@{2NL3#fHgE-p3(xB=%3O83#Kjhb|dwcjdeNho>N+UEAEsQ zTG`YSO$F|h7I7CoeaBYJDw1_+Fn=d4>gbk}At;^FVh5}M41{Z*xl>v&GqLtQ9qN=8 z`)Ii}#pgPurKM9^nmVDyo>>LD;u#M0}RbyLeONn6{JA1!g{3xb`s3KE_Q(0KGm zrWa#dY4^74r&3;?YF)C816;cQWl^+vYuzU{?SMKRVIv~Uay8h|6-R6*?h2Ws<*sav zlaQH_-a{JRXxd3W-6)tHBegT7o&J|*d=HW8PmnF0y8h|EedK|Qf41kr;G&DurI%() zuSI}!N6oSZNBxtKn{P+%(gzw{3Yf;q4?xPQ7J)*xwOs*4}a-yrda4n^)a zLd}Od3As3N813p@q<2*&#h#j;%(w*~IYEQLzA}BpGtI$-j(ZJMBW{%Ik-k z%XISPoDQ-^{^C36mM+CWg36|!NHFOX`+6M*?lQ#z$eCdvLHU-QMAAG{kZ{6u^+4iC z%41E`%}M~ZYH>ETPK>F3(9148K^hsn*e_GtoP~BEv5X>?%mLDb80;)-y~N|SK|sVC zY<9CV2Y^UYm8CDE)4^H-I;~Af&D8-ArLRNTB4{WJ(?#g8$phn-iKVv`=FUnVFhNU^ zm;gD5C_A|h=(Q0Jp}X@PX0P+}=3BUFLF!|9cz$ZefH37+>NJEe9>8Ocu*0e>t)uzJ zu#Nxqd|m($9N5Hv;bxuMYwe4_+9tqB-$|l~YO)bTI(R#p2xOiUGY}H1(A4}kLIPY>VmZcJadpf`&{l7So7W^7g*t0XLJ|BgNXN^ArNQG(yu?#M)()0#voMB+2?_l8x$Uq+{tKos4Y~rHwt6+Q35AJYTKq(D%(? z-KxCgs>6h2%#6URtsO2tx?inELn7?ThbkhuW_(*{C!Jq@&| z2Y>sJ;j83Wkk(WWe|a60szuA*S}dOmLbfat1>p)9B4Jg4oHh--NQUxR<*(GL%|Z&@ zh<1C6jmWZ5F(Y>Fr?@4C(@`M=Lv-u~yY3+J&N(K5X-4aMn*khqxkG3rnGBTJ+sDdmYeBvCEd zoJCdY7_V~X$eng)oEd>JZ5{No;m8O;Oh-1;;aWOwL=|xe`T$YM=I95j7d%l-r%OaQ zxHN3;H}R3CM=VK2nw}~`k1>(d<8XS+QI1gsO1kD7Ypb3iH|mGGbg?`#XRdOnn+}Qj zb0njX4?T7||4&L!OvbTImKwAvUk*!{_-udmV(A(HkVMFG>8b+A*4=|%HUKg61z3uu z%ZcZ6mMsUCcsfl6!BX2S(_sM?)_YBH-43d^o8q8)>6-`;$P362AidUW4=|3c^sJ_9 zN``0weuMh1L$;L}wZqEI_Dg~bno7uZ0C85v2*X*nf99cRE`UKo^3(ap{(5h)#_fv@ z@~itd97i}U(*k@tzZ=2Urb4P(afPD-f0rI3C^Y5s(lvev|7J2hbr}-t0TKc8z**Iz z{I99Xcvd7w*qM9*hR71dS12`J2^XDvZ`cKy>pBd|dBga1%0F4w%*7CK+!sK7o9t3L ztQ#-F7F$9jOW(wZBtm5Ii2+Jh4*NJSjpSQ-Gk5phx|ep(;p)5mUI$0wlG@fsZ?#LM z0^1`#zX%XjOjr!ma~-pDY=NBE#>0%rH=7kKT}FYVsKuS{a6 zpBOymi>y(a;|00{FuqLB*5ZF-+EB?vRE*`s;QwLvBVmX^uE@zIjS$2aQf9FS8@~cu z(?A9cS@guD5c&OqXhIBGDn3@jb_(9?mKp@!gvm#j*f68Xe1$`vNUN)+`nFHprKQt# z2W|33?maT8SNV0-`)m3)L5W-(h+ZI9P$Cz0eUDs$kSlh`6_m)OBy>|B0J(NzCj~u} z+Ixt}E|Dv6$Q3x`;!emVDRG*=1#&?U=dwacOhAKh$i=Uq6qp}a{ww<^{|sHv>-k;! z$&&ANTrIA`F!}Ewnjk)ZU9ljZvp$LJBDd`QmLT@5fG{rz-T??uynfjb*zGYyvo8#> z!RP`OQP4;s#r9^W3{DSP~#285cz)cIj=OKSEigJY*AZg}# zWIQiUyR>t;5s`kW#`B`FqsH_3jOSp84Cr9UfbG0(w)57u?iG@e5T|!KHOzPvGV|&} z(0qxMcC*(-`D!G6L|d=l*`YE0&3m+fn9I>B&Q?qKm~;S=HSD8ILT!+It|Me_$^OKd zGP<^-J(Q1{S1M;w(^U#8r&TNdP!3FN@20MKJ#3<1P`G%@H=IgTaq(_PQ3=?`rtX`{ z2aO_~qTJyih{)wV6N*1eig58<1kj+qpzEs7#NJ3sKut;RGmRE&k^M?gzBhP_`lsLq zpLRO5uTW!T%90XP4j*%AIsBR&AQJm=01tG{b?A(rr#~6s$9pG3s3{og=j0}Bt#*Eo zN(bc{MFr7(k=q;H{Qfp6*yD>rIf5rqa8R>ikug2T;h20o_KO)BT#6&OC!M5~-}nHl zWSBhNm903=ll4(bn>9={_I2`4H%B$tsaNJl<=&0a&nu+)ttdMoJpeDPmWIn2bu;nS8Qk zs4r$~*?zI9aSa*Rj_qUd)f4lpuupS^E_NzD;Sq>C$pPk9CUh}>41| zobUx6&}gMKy{VQ=$t8P(K32p^v|8a3c!D$^+M2;vCln;tz}e6J@x^^p>Y7?JwT-4R zum}nk`ocC{Rb&(EKeUtzRICNVGX2)6i#hEniT;FLS?=Q1xSiOQ?;v3?1)R5cKu5Oe z`_fkax8=mp3!0K?%p+1w9c^j|E>J_W!!l(#lIw0fS$jjMa0g(hUO<(kMN^5g7Oy5P zTBu-I#&7Rgh4vhC>xNJb8H7++0kJ`Vpb-rpFL^yD?qdNYNxh2eU}j$cFl}7svyFun z%Qi`<@XQzh!gHm-JcZF{IvxGc$m8h+ng}z^i>mK{eNy>Gbu8tFrac$EVqA=wa&UD zYFGeHZc<{Kl{0VvK7M|?T_=STK`ze63XPMF+;OH`BzpAl(2E*G>N zo?vbgF11XVU6IH!+3hf}t&iR!HCqw&hV1%+#Vh$}9R_JYLuK7aJdfM@o_ujwL`B;Z z(M}c_7$-Lb67hULwO3Hmopyl|-(LpnW-$`wdZu1CFWjFWHU-!P~6_C z9eS7^$PTCDK(so%7axh{rClr%Ew>INtbRjy(i_Bl5axi9d!@0~-bnt$_wO>)8l?bJ zB=%nx2E{J}cZ-ZB9g5O4;$~zq6Z;!iKs_L{r2@#+UysXq{MyXnYli5-5VR7b1jtJ= zj$7-u8J>M|US5ZDbj>m>bMH3QJnA=kFnD^Q7>*~ueOHj|8?!#~hX={cqpA%gBHrCz zvh5C%2U+(CQ^js?M3S)p3gt5}G|0wSxmM;OUg)}A(MbTMCt8;6O65jl0wo{WQqWRx zfdtYx-$s9oBw|gcvr)$q28&V-K5;huSj6B=jCNpT@xlY(Vb?WgkV#u72HPb?Q0*BY zT^F!!h+Zr7Gs+-32+>81_EjdLAbAy?b>Fk}fb^2P7?(M>#Uj8T4NL(QhH|!SGhX(g zU!B0GBSj3o z1yNNa?gg>T7+fk=qy$oc0nUOHl-^z==U1%+4now~lPrM4$Rgyafgk`ppH!^hrg?^< ze6KU*V#D3JA6xbYFzyzxWZ%Qw%-_IV`;Djle^Pi@jo^u*0|NsECvVc;j|MQH*@k-xkkzc1gth_b zJ9>;v_j)L_;Va;)j(mP%NQ}5;GIvkmLB6g9X>VmheYm15Y(9vP@TDYBWz|2TP+zTtLR_;PoMA!1G zDiO6JFYbLjk5~nM*e9>KT|6B=`&6B--0;!c!~Eq|knh&@Q~a@+r_6kZ-;Tp27p6@8 zM6hOkutryF0}d*lpjXOVo5r&QbMZ%>-D9*jD(lXk8U!<^r12GybIkSRp1qvDA^TFQWJp6++OSfXz-*Sx!UaQikY;1EmuHJ5;WKiTEYHSg(MY&TvJM~c z`LU>tEiUbgAX~&2OE#hgAa=o z|7Nq{*=!j#E>~D51eDVJNUD~XrfPIqs`hM0nTdYHOQtl?#0}j|+gAV&fr;VH;)x?r z53ukRA!g~=6@tU;6>e}#sCtwWq&in*4Smu{TUXcs6Gpq}iY#`oCO{r(jD*Atm%16> z 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%0A)s@%`ANHf$gNRjBk#wb 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

k1E=UicoN6$P4y(j|; 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®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

fiCjEy3{U}Ky;Z0fx?7Yx3kLEviOZfqx0guqNA zlX6QqkJD^CB6K2 zLx}v$wb|SWDbJ4v5h@b7H5SO$`!z>=m(7}?aezL|b0bI5>B zbDDXMW}svnlu4PWeW3BhIu5BqnL47iw5jAeyx|`| z9cO=zwd4LYu1R?qjyh|gIf-TCEf2iOWC^Ee*eZZceff)DyKd8sU;DjB0#e>-CU=H* z&)}@{dQfvFpyoR4`oKiP(r5pyb2Jx|QDyxXNPQQf!&zsR9VhETQn131UuT?I30SQw zkm!^@)`D|kl2V!uIcq701Om@+6xz0&r67v4uR{`55{f5HEaEK3RDgqY=zdNXwBtM2 zB!C=y_E`g?DW=5b_Ui1jHBQmrIxQJ9mi^8UNVL~aeLDF_L-yu1j_KlZNLho9dwioL$y zcC%+Xd;L`F#{MtGoGcSJ77Oz6Ia%}h$7jhGTt7w9@&1BHmyh3A%+Ed`3c+A8C~!hh zoxbiAZP}^MT%EVkMdH8O=oIa4a9ydL`_J}~H_%_phwo#jkDkvD_ocdN!2rSb!Dv1| zd+(TznX|q#t}su7hH9aznpIW9;2U{UwGN8+Qcx18Nt-qdZWMcqq;$Tm3s0QhqMo!X zw=Mnv@6QUDkA>X=jBEF+vi+&h0i@ufkdF&2NAbuvn2-C42Wxr@Ymp9X9TBta$U~m$ zG*5p4akgO|X?EeH;nq*g`UO`aC!4F6ohoXhS7^UGxqIlNW8HH36v_psH`Z-ig*m#u z+eCM-0>$>o21{-+l6?izEu-IBK9b#spsfs@j3TzA(?yH<*V3x0B*k#{Ph9Gu<6-lO z-G;p00+9n(597)ga{z`~TW70Ugu9ys0Yz#>1sUoDN7@(2e2suU@P{*qjyDb74C`6$A zP-xcF59KUh)yZOB_HHyWFN>m6UY30|NDTw|fTjU*is+J23|Ix-)Klkd*mp9!$2~|0 z`9MD8jaHHMsdvn*o0-XJ%E3d>xku0^EKT;~+s%vQS^yJnc#7>Yaot>E9CPowZlY6p z^ZefR8Qr^%e8RR~#T7|**p*Z#$=E!za(SxUR*9oyE7ynHhV!<0If&xJP;v^MO<0XG z3K9}YL88TJOIqoeB&DfiJXK^(X@d8T8L+q3Q!~}dBQ#ZKS_0PLHo_vh_WbxrvWTw3 z;hL$cn^^^kKESc&G9KVLl z3Zj?-XoRdsl49Ik{UN+lNl1KvU`WH){UWR!#vn>H>O^=*D26~pTGaRf4!ZFX0-U{_ zy95vz%Sd+v@lYoOyN!?(qmVK&zo>sDq?rLEJRKApDCmIc|Mr@XZFY)H6mDnVljfOA z*)|)&$8-ES$wmbaL7jVQ;Rh7uUM8&rxS8Aoc_(tW>{<`v^?Qlobjn`m5A>6{=M5*eV4ntEj4y++F{cd{LFG_OE)5tE@fu zRl<6BFYg!V=K^+CQBMc3vl>?)%Q=8Gv}v3iZJx#$_Mr{AyJ&;>s9gY?y*)pec4wN7 zpBiSTMs}NJTUOD{@_lg9vWiaUp7v@^-E!dQp4-=bdEFgr?H0}+%c>Q<*<)-qmAU8= zwSQB`z3`FWf`8*7t{TRE++_{ZJjytFNRhaj)I$OthmOvV*4v#1=AhPGcU>Lsk^2oa z1CO)LzE#O&?ro3D{P8*_^*GGmoI_Fb;oDwQj(5%cs7J&?=28#~D%S$r;t>Q^GoO{8 z8TBAWMB4eSd!uZpIiQ;;j*-d`ctjio&;Uh9iuMA!3n^==>Xw)@BVS#Txr`Q5w7P9V zj&+?;A|@&#sr`_l@S9T}zU7{%d_J4w_XL9ngnBGR@{}!W#5)O8rd*c^J7=3HTu(N7 zI&nIgOw#_k+5j#cVc~AV^z89^Ia8PRQ_J?<(cd2-VJMW;5pORsgIgY&&^=YZub-D z#w<*kypWX7jq_IM^N9x&aq$kuuj`|G3olC}-*I`y%GVn-n4zCPdF8A6sKNX|(=7v~ z07{V+LV7j)GtqeMcp_M_h zb<20%61tJia;mn(E=!6KC?^}(5G*|4FOR;JvL(k8|1z+s%cDn9wu^ZlN;|AJ%E3}a zw!F?YrQ{*5`SXxP5!nR4I%^7>Qme`bK0M2|A1kcn-u=9E z5$BG&;HT2d?e!pPC*_u2a5KT6xL;2&u;vJlE|w?dk=m-M>jB^1fIg3MM4qFtDiQb{ z78|vP)OHFsku%6IYSG~Q^Zk0t8RVA~Ani_`YRp}F;yHMiab*YrIO!t=3X|-xL1#ye z)edm1ubo7&MC>3jBfx4{DNC&YiUFMtx^J~wc0@-aTovPS+F-JwI%20qx3nZ9BSQ$F z!dQm>hs}~}P`h(frYYsudng%|f7yF^w(#>e1z&k>00B>gpWiwee#X+GM%b>pq{ma7 zONE~VD$YeSP93zqDR6UYc5b$pi)R>dC-8K6{7c%vgaHx%7h%5z->1dhuptrmA%0|B z%no*Z1a+Jln~U#~NtyuwAD;uT#W9OoEDWYtc zC@_i}Gqc=33kDd-7TZ7P1MEU4>D46vBnJcDnCh$g`@?HCxF0oo~Qw+@$%%& zWqK8RnG}HcK6KqWn1K3<3!Wi=GckgyHamx>%lfYs2vRL|kPVN%##sq$%Hj-)QgmX0 zB+|C`+W#ghVYSpAse3Uua-`chCBU&k>uWLnu#ly3eH_PPq)lTrmA+3#Zy>3?OK*z4 zJ#i?C@-|TM@!r*VHjE(4N*I({DYA{lG)h8#@Z_RGz{D7BAU~`lRRnLaHTJgHPjMTv zQEv8ELyXhF$=&TRX|Vg&|uG;iSvQ;BOM=yC0JP={)Y#n@=W_&-ugYlhaUyoi4f$0(=c>)x*4pQXjwV{PrP14x-EL-s9e_77u1HY-I1bhGLvr4ajPsLn!x zc0;aeOtZTO#jE9R@)X$C8RvTH<-xdvvVbr;7qj_%3 z!m6*9&M1_9N54WcBUF}B4gt+?NN|bfw2R}8vbB&_SVYHMj>!C)8qL$(lg?wS{8P&# z*vU&}`{9~jUY8wn;s<9h*fd;@HXxpUletifiQw*3vpRVE^woI-h8V1FtRan-nmmGL z&7$<^8d70n8HxE~XOSk>#CM2^GjguZHLlXdBb>?Pdl`2kC<}``qYpFAL`TeUv|v7p z2bXCFbeWSzOkUP|qOgfr1O*dgShEnMlBOlEpjqNO^+*!tH7H~!uBAE?5;gf^?oEwf zN89A9BVRMABvg3Hz-GIKZIhtl#UP;&RP;1xcxVY48sjt-hK`HcSqggQCq(ETwSjrY znz~yji4@|ROi-xP4t0)-WxZ(-(xw{(gVIT9eRus=L-RraP*t=8NTDwobaxH%^ta3n_CKp-h&uC^{-v;*+4P13`wr$t-u-1iWTc>1*U&;NtAY6NV6j-%mS+WH$VmnD=v$nZ=796V?2>*gL0wl1LUkQhsC~RR9)1qz8uJVsU<%T@ffoRnvzr zX7;GHh_FWug(y1<;ZbfJ8NpO!w>6Y)1tp(tN5oWytSVgwrCb>#@q$&Q(up(}-%UGc zkXi&A5?a)C%@oO=@c76{-Sg{BrvmwKqR5|M!>t#+hPT@{>e>e8kK0YL=30B`gYCMa zm?tk(qN3$cUD9D`bSqUJL*mFOzY}RWgQVyH zi0-2h7YU`+%lH~LoAWEEF4e1i5OGWQ*S;EYlfyWitPuo$E|S@@h;{S}gscFJ5?PxX zRknKh?W6zqxwDzB66TgYa3fw7n9!Kwok^stR87es6+lHF3#a`k?>{qDbs%IBAR zd1T+lo#IWpdZ9ZX;&K4wVTEXAo95?nxNRZIK9#UqC0aW40qbTA79Lrk0k8;mY!tsL zd|!nfz)Wqr{D1KD58F^O4Ln(b%m9pYsC|xH!Q~;K2FC}nM62?ab>i`(s`83%EN%p+ zX+*Gz%D%Ip11q9VOV5z5wl%9`w;u2+ok%>rTB%?att9QBWq0DdOrJFB)AD#LLun+< zM6PF}>|=IS12D|)!Hpq`itzYqLyNGZ5SihYSbdZLVNxtN8HZyYcP@bO3XrRLm&}#PO@N3l-tg!C%O$(u>M=)rThaWZxS$nF6_u&mvf^@zde}Hhp-69!VD@{j2wYoPRX4Y0N-%aJXGc$ln^aP}NSTDO*ToLyg#kDsD z!)6`JapOBg#JaA5m#H0PASiII4~wj<7+m`Qv-d7gc3tJ2=Xu;$-CI>UdfBq1BZK9)aig|Gs_hy;Y?rmJ@nnm3_}S`|Pvd`+I-i z=KOV9&%*)?z*}+yY&o7$+sq(ukq%L4!G9sEkiSE)3qpoqcPsODxdlqG#oX|-QhNG7 z9|Eno5n1S^Spe$mZ2w#dDOM&gCNuaKTeH@4Ak9;Yc>}R4M=a{aLy16zD>dox7AiM; z|8S0fmiP(976dBM1l%jhf@em{718R8j{P#B0k;qUCP3yE3cy(v!W5}<5Iz#<_8LPX z5`$1xW3i?^9QYZ9PH+_$sh+Y>ksdi+AZHYt4Wd4{h@#y25Bqe;`^F!@*yxb=pCn1g zg?BI$SR^}2@jYPU&(0}^?i?S!wiq!IAO9nSqEsbvUMv@SddPeFj_oz{x3f0L-RySv zJOoT)K)P*hA3=HKXskA=F<@tgyP7&sA;>Qu;@mm&WdX}q5;TWK$gvvTdb*ks6{C~F zhUG&#w+Z*qwJ@k!x3oY)vZ6*=N%$NPXOcL)y+lpg{TsI&5<=p%++^tWyctusMDJ~Hy#Hv?s4 z>w3E^0@yuA@p!^t)@gmV^%g2 z#qLlUbz`P4pa_X21kwn9Z}Q{RCBlKC`kfwS$Vw*-conZy2g0?5*U?@fA-EyG@|B-dT4d3WHv4W+N%81CWfo5Ej!k%LKQVBW4Qg z>nWMgH|2kEkKWDpK2O&6zSuGNMR1sm%I%ig%d|b2UTkeWaAly_9rk{(SWKj+HDu-& z`)7TDb@xfXI5zl2=X8hp8?%P_j+w)Joxp>JdDpYU9F^0D`JNP=KXURTu%wX$tvV~z z<7U_?tuiGhRUtHX#=JfJ#J%9QDcv6Xu5K^qjyx~pvfJKWYH$OZ4(krGk&Y*3_T5Hh zLIIco!eT-36S6O_TuG1iA0iQhRs;H_9ah8`mA@d_u3C2?M34ZKrR2nbd!Acn_T$$13?xoZx4#X#_yR-z{hkuYp@z@AS+JIjLC1fmM|6zud}V<26u z*`3-k1!i|DgA}3Xr!j$t81rW*@LzfYKN3jb)%fSK0U_2*u?)=y6As;nlb!;GwGs$9 z$f0tnle!*d3kw~maZRBbj9#=j#Z0o+oN~2iNKNgVkY9(El|P0e7oW@7aZiTZ6_^~} zpioVuD+t#4yyj_)3kBeS1I3h#|KLks{Kh}t^mmWFW5bQSfa$s$6ExFg&}I|+Sm-j? zlHo!XIE|{V1=+Bvz5-p!<`6AvnL%lWBf|1W3L(Bub(giPjS;V@ITEaf!|_scUWjGZ zuVGrooBn}tO36uiad4JM6@5xw^7G)-tG|F9fyw1gA%Qr}jXMRmQWaxs`lrF!xNF1R zs>nTNjswZajEVm8KL%Z}Q(|n<>F`sga8y7*QFWrobr39EAbboggL;Z0(|pOv>v0Eb z9o?~1a{ad87PK_S_A=`(x_yQT!`jyxe!&^f5^)5~i*2L#QTvuJh) z`wIi7G>f|zrW-@?N>!#VfiBc^6tPlci)lpZ2Ir}}hILK|g{3VmEaS&Ibv{M~%Pz^d zO4yR2KpAUh^2GS};h>@$o@vxHaLy-MW@#+cR9j{c+S&?Qg2S(uM-z=@;9$AA)G*l8 za)oP$_jY5k2+0(_)WC8~{&j&tfM|!w$Dg{(-23_iiSfa5U5UcCRcC6Rd!$F~x zeiK50glX#5($$<7iZe1eQA8LxS`xMdM51^3>a3GT3Q9i zCsC-Bgp^AOh-KMpz7S)v&6v zHBdJn?!z-#XxM%>$=V6vS&pQej`iS~%wW`ZWMhJ7GEuST3Z7NZ6+H9j!MGEEvnQ-8 z;nA9_N|gw7i{OEj@#jIZqpz}fiszWBiRZ+_&TZhVY9Jy>QNco3G6AXrxM+v?Vd zVVPxSe91IjlBxpwu*^U!fS`h9?ua!2%aU2JOh)`A9ibqHWl0Z~B>|R6b?vZBcMi+c zu>n}7G1pvuVON};dyLy536fJIg_T*0Aa3O~>yR-aF<^YPc~5MKWUaxD4V)l} zx9@(*ZBk^8nrEdU`+4kJkNbm$3}9bwJfsAHc%p_0@@Ic1GbFmD!@U5fye!}L=;Ja& zGURiY?jPdE#2&0p2_DMW4hUqs$YgJrNMMpDnb(S{9u^x&!dNAk9WM7+0`99IZ5H)# zxyurI{>Q`RlqK{8PQzlf!w9Oi3UCuX)I2t3*q<=(&&9V{bYEtSUN_A;9gljhy zuYjFuUMh`Yv{!;fSOLElq$Qp-rX)9hE0$W4 zOGFmQ&PrH4w^S{c+&a`x0;HmL_Q4SbKAHWXefi2@g@pV1?5 zYezCdR)a%5@TA>M=^Y<}a&WNjAV;SDsbrc=wcPjoKsmBlfoz;cHs;seXf^e`gW#mP zZpQv94m#9?v+#=(J5lj?(j8I+zfpBZ(PR7-(US3H#>5JkI zs=a`VDP4E}_)(!~naNzEWb;F`^0(;qCUaemv)hw|WiEnkQ{tN)+h3DbXn088ET=TB z5FqaI=$$w+93`C+CX+SB;-VZ!X1h7j;+CMszE|F-Vhg3DC9sJPG@nOFx=9}&fL*jk zWcNT}j3ozRKF3^6^W1;LP0)w(!j=-9LBvxX_7K~8=*1UCAHzBb z=)ih@2?OIswxlGvmvH1MO2B+c;w-IC%31Ql=q`&h%* zlsdH6((u+++IgO)IyukP(-vDAJxm^o*{bO-`FJq$vUz3YFVUnmB%NREcLbX|&+jl^ z#qdgR&j&LIIJng-)TOUf;j;c6`3$;yCY~x}pnA#)7Bjmq$&NvoCF~N}m(|Jx>>dEs z^7O&xc>LRJ5yBAwdK1RY2GUN^wX}Z9S1jg5_q_3>OH}3O#RuZ+PgBDQh)clSRESbYE)`V&|(jHlg2o&3Cf@wNG)Ysar+LX-c6>U;a&Ow$=*g9H*> zSlQ^afHS4>S~Z#XXm&jGO1Z#Pk!S*5ZE^>0t}!wY$0^HYrEeLLRy5WDv=m6R>{zk1 zy+CL>BRa2*IWDOfd(7V|74XAv>2y zOw6I7Eq>W+VPAo{L~@9Cu$REKJFy1>RFogKHHy1j{44RUxI0wswXoxGb+8>*bjp-? zXQnrd01?yo8|_;mk}3d515bI!(a$%4S53eJdH$N)M)15$%5Uk(1F>7qeCS2-!8kNE zrl~5FdTAk1a5y-u^E|b1u^>a$%DfZWXH7d5Lg=JcvC zXS?$hdG>bSsXBk6Ij4W#S@9zfa3vAwoN3H7b7yU)XYiq|HF9vZ^{I6Wp{8Asir_Kg z#>U!~yDn#STF_J`laxx*rtAwB|W25X+u}MbH1vZJS)>iw-TF56#Q{&XNQ?n@&N{LO8lwscj z1NPj3$A%1)ZkdO0th^woU7F={bO%%(%6>9m0kDXVYs7zd5d!k0G|${Q0)qZz;GikP zq`#6p4d!9YFT3F&1a)@mD(#SIcq}O=1uljH)R(3}6tPT{IpYZ+ra(eA9*PdO3?i)m z*KdRbb&!;EF&T0u1XBo|6s&Km1lB6#h$HMhs^%5y87GjJxoQevddVU`qU6XB0`(tt9I|1b_^D6e~`*TDWh}=}f3F5y5XGubv^NAsV^P|uEvmEAlX8<) zGc~W`%^4v}*)>l+HS9*N?cx0dpFnlaGg+*S;z#See#mB)q5}3{3Vp6S{X&>Atpe@V zi4K#Z72#dcDD99u(YO1-ri!WfGvDv9IZ6xsnR7S@4wUBnnIeHv!ah&4J#JO)Z3;3R zmcY4!3~>)Kn6%cuH@%a66(eOy5s)KuOQYe1m|iohM3;rXOxBLh8Cf{GaN)xF{I7p= zhCAS#!S}5NLkkuxn8*M6*KX=CsKNK?{M!8a^XKxv{xJnC1QSMT1rF2`pOc((&N&PC zU;pf|<#M9+qIfAC0Wu&@lX#^yJWs-@iEQ?Zx%Ohw>=#+5Y<8Q&s2yNrUl{$OzW<+Q zXCsmrFKV-2V5i87;n^>+XyCeeRPw*c4+j^W`XEc<~F>_IElS&LrEe&a_3cVPCl zevR!a5+G#yLKFuctLao4EM%z4nmRj<(7{l-eaqb6ZX)K5th7Q(YV}* zb(a|sO+=%^;_Q!0LL|}rnSFOeX*kr3?zpRn+8WYOfCX5D0#*i=?2vKTN(+2`NOyLg z2VOWYYPl z^}SM^U=#-R)ehXJMifK7JD|W0HJ$M`tZUqNc&CYHHaQE*rk9mX6C4|x9L4eWur#3} z&tlI%^H+HDAdx{w+wGxNvr(_539GFfIevbCINJ^^I~2u9I3K!Gj&@_6Xgr4tz>DKx zSSBVdVy-2BiZ+j8!4}}=mvariY zIb_rq>DiM;10Q0o`d)(`1@$0krijNNdTm1@uje1$c5GwL_W&$|N| zKZG!DT^)%#;CDxu#sqQ42;?&`fp#DR87_yMurSV!HEfj)$UC4EsofKdJcgX?C4goV z(VQW{=xc9lZ>Iru#61l|+nkMV-#MNRcJh>+7MZ6`<42)R(+WD>DO+^9-4k;>W1WUz zJ9(#n{0z;th%|||=&rg=JLq=X$W~~@XL_y~*|X8@Go9;p=ycmVO)Kd1kkPr&!OwK3 z8P~JX=^WEBN>157(>=DZX(xkZGgh~QFSL(w=$M3( z4&7Wn`|{ktmz<81OAx}u>w=h4;0un@mNZ&J^_9x$YtwiR3)F1lf@f?e!zi76cHa&A zJ(iqZs7?R8v(!#!iMGwe!kInO6Du>ZlcK28>+G5AUwY?VrEa=fmr!6p3jd7FE2DWf zx_a8Xmacg}shECZqDMdb0{3UEpQiFY*>^^J0^37t=Ka;8DHv-2AuqXrqkSIMa&^Y=1>Pqfy3#gz@U(hT%wnPE}fJRa7VQCcVozgXJp z^kRz2u%?!#l5b5_AjN3;56&LSB}PY;?GGO(<=^vS8G>0Zx#Y8mm#iA@6d)cY1b1FO z)VP&u>#f(0M^05#uYeAwl+vV0NiI~NUdwz1ZIX?TIxhvTGrE$taRM&-ajSr!g4R}u zVwtglQAv=+s9Gpdu10`D(bA~RODj&HBQUc*oNdz&b2nU>W~x%d%mayBAGHC8XP?6A07qTn3|P!u8PqJ*l1Bq zf4KGWV_&e3x%)dhdcIBB7$5lL4Tk~g6>8_3pR_gmyug{Qv7_ft`r(n|bwey0W1)o% z@HAz&3~;q3weDth=a?75E3ME|bVpX{y#-`pi}7X%dninW>7vGyw?LH1QY?AZk~=gl zN$k+?B>QRN%Np33`{`sm@Ua6kzo>Qy1xY&LGe59rADsC`2lYV0mSal@(M*F1GnW`} zfi=_X3+rw!qdIG+|A29%^6DJ)37cN&SI%Ik+ve1+6evRRktC_QW?NOIJBX6o=y3qT z&d>X>_zD$lQ4a%9(L(J31YhvBUuS?Tt!;H8fUC!B3#k)FcrmNUF{?w{X0UK=Lk9+f zjSM9o=r!^9WK$@uH%QZ>1bItxPau^ADG|*tv?PxJ-CEpKrc@T~c8;9O04Z&Y znOQU?_w&NywM0XN%WDMz{jb}-mks$uok8ZO(57e}c?Kb?0^wCvs9UuH#}(IvE>^R5 zSVfJWv7-7ZD&oC$tyhtG*7C&gp!GP-?y%ub+8y3cucdbS-7z3$W5>oDP3lr>*wEq1 zZ==d6x)xXCuYevqu`*M%C~lzyEm(={nNoEIuCgWVOO?QRXvxd$mF$bu3-d??1R0H@ zi1x?()5I8V8|q246yJ2Wh<1bZwt3?HKc(&+wxvV=~5KoM9BjA=S+Oj#|1V~XRTjVeRTfH1ze zdr7NOV|+2B)c7)}LL4U?RHVp!ss-+oV1rDta=~EcT^uUM%&=eGnGgo_~Ik37}&Kl@oC@O-Jr9y!kXfOrE zGTyA_^l7hV;SB%t5f+*3L3Abm4^ea_|K~-GkVVxNK0c7>N7oH&nuTRR04BL&~gHQNIWc}x*~I3Ofg{r#M*&H-?6Vi0R9Yx=qj zkXDd@d1EY&2X1RJ+s=?jFJSoBiOoP8H{At+jX#-vnMAhFJ54b)IgMJpNhtmbTgW#6^ zDxmp>wE~<2ur~#Q7T_xbzym}@KDfkt3taeZV3Istm=bU@D?I?}h68FKw5g|`7QNy2 zF*d3vqBV?stH`;NL+GbV#^KIA0HH;`430PuUa&d_kU-kZ8XZw-Cm2mhb7tjd-Q$`z zJKaWE!X@yarosHsJ7)sClYccUytj{Q1W~*w;@^AuomllAem7h+nZ0wQ_yr~0^E!}b zZnqb`R=0KHQQ6}wUu)MWx?&x~>M#7E>|P>sZK258DT<8yMS|Qa4 z=u42E zW6x!=Vr2hZ1w9ZWF3KM=T!_Cwz@&K}9d2S3DHQ^RV zMNP5+cNoU8pF&xR^}H!b=a8IU5E87D2x3U}FH+z`os~ewVeU;W!G$m>-bOHpf)SwT z>7eLgL-JjV@T&@JFt=81P-A`0$>+Ylm{ZA5=16`rM@?z?@gnu*;5|+mgMI2Q%sFPE zguCyFOmGELG!hq?nE!{w*cM+!*5}Ea3KO3+@;P!K!%rkTYG?1Zy7NpBrxQ6k`CRn~ zgDZKjck*-8r%t|5oK;6Q$@A22MNE;>Wf^z%d>$<{p=$>LFHLoE5{`P3FP%HEn=x84 z>0hl_s0y>9t`I+x0U~@NH_l9qWc(Xlo&BC%Mza{`-{_trL@#5|xh(W~QqG$^|M!t~a(P%;amEvpjbLB6iV{giczun*Y zOq@N01g2zc%TM>7k`irM?+Mzje586}TqJ#E8p^59ewT=Hc-L~jO z&_wr{P_^Tb{5|uw+v$S$+mr+pY~wlPMw9L3xDqWQeGEt;gT(W=r=mPlnB%q#ZQZA< zE#Z4H-;IIWrtxN}MR{DkCU~~F%(Mk@`4atk(0#Y1^(KV~gT0j1oDo*yi%f@9N4z-?k;t?hBT5xIJ=H15dj%JS~zpGx2B@;0xYID89&r-CoLUmUQn(qX! zmP%IufW(JRp3{VIVHB!3F4^NINw>(*f)Fk00g9k4a5$q~1#|=>w16DMOrro6egL$T z-YN)MYEYMlVLY-2#LWwOu#?>`*tx(YNrqn(IiZt}O6?KK2r@QXs+O=~#|Kmf-PpEJ3ryX$So> z@IA9R46`>v$4OwCtAxD0JiSz|Oe4Bu4KAZ*9Hh0}l*fvFzMg4W^-NS7O?K~@fa)Zy z>?d$i8VPo!iNAWh9?3?OR(Z=IkO-k3qnaI6ne-!@{59s=~;i$hQ#y8gcrQ zVBxR=1GaD%j6Dz#zxbH!^H3JUiY&q+unL;|Pd8Ef z5Osx6d)9AhQ=I7#eL2 zNg~|VK^LW39b~c-6cW%!xk23`cV-qBe2hDyfFOjD#$F=JY};J9spzlAMy^ZGoCR7SOx%|6EWmv651GQSwdh=G_5CpM1l=@Dj0qBG)*PafGk<@z#C$hoGFn@M_kaaAVXCwU%_n)knunWI_LRJ$%U!qJ z8$-7RGBkEAqw|aF%U}9E^V>+0h{fu|U>T*l5on1oS;B1j zI5oAPmBgEPi8>O}rC^~)HVBLzgFq&uHXu`It$0M6P*YHBewb!1E{}2XW^SLfc5koR zO|h&!K;!JC$wHj5H0k&DkKGrQW4L_X=LLEvr~lgeEt(oF4RQ@beJb%ahCE$rEx@}C zsE@B!8f~uf$e2@r*YZGIY7Tf*9-j;H?$cp-AwZrCXn1=$?sF4(RbI*>MqGa}7l=|V zX=vLm>4ij}wHKRWzi!l(91~on#AIV_$DH4RXj~Enmz1f26x>!w*)@>zBTLyckb(;f zdG@9i42p$99f8Vo4@EGoypHvpNlmJzMI2`w-J&*p0C+)!E-;;k|BcH(uoMt_FNK&N z53=Tq<=eIfhLvBY?`Gc_?v(gC}GQBivXs; zCOH+HZhPDUPfN9rBksB<;0TIm?|y`JW2+{6FQhf?RmPJn4FjNHq%!6O<`mwlui zZfKrIzneAgS}akv8_rYbY7_=lBhMU#+2N{Ov4th43Ofq>r}d=0p>Zv6MhCjYw8JWp z!*18$vBo=6;g(YF{qy_cIbZJc2O?YQEy)76arW*7mJP$tl$asBQB22H zF=E(-T%BTgJbtr1iOGr}&I?YhiHcEAL+qk(vW0>M7IQo;SDMZ_P@3Z@vXBOIMBL%1 zn5%qE&>5FV_KV>xQLuz99S#H1t27_B9DLG+@)j11{UXfAJ3Hqagc;fbb5S6a(l>Ta zavtgih**vG&B}cE4v&_=B(kw=B#Flu`Tej+B?)f29Ssm~YlT)BfCY&a>4m~Tnn+{d zIH6j~4&_TOsM%g=ocjbeH!McYh%4s{po54}JHs0o(mz5d+`o~Gf*`a6QuRt?0Og^0 z9h|4!JOM!1B}gwJ{*vG>Z4&rTrfRws&5D%}uc40@3tm;u>a+u|Mm~axwVbjJU}suD zG35)TSPlGGDO@Q<+09xGMs}TACqn_t*J}wZj<886L$|?b4)`(Hl409&#C+jw4GxqE z2WwDUp4y=r0z+_>7KH!M(Z{qO4{$N8vK5c!4UM;0bZ|vu1=Z#$;&;ZEJyesS6OwbL zg-Z*Xgo{pqLQpN~9S+y55t?2}2k3{WG|d^ylphvIQxfe}lSL!@W=0BpXd~~~5nXcS z=Aj)Pmg!;0AH)={%xhZ6D843VDmITDcUEAzNPHM2#`PIDzO`?#Xr*&eSH$;kZ$ z(I4{uX1gDYKODax-fH*D(BNB8_;7gE$8?=F(I;53&Z`DV;Dr3u4&DC2C#q_e@?t@#hDi{z zsb!l9@(?zuZeWmGIj~Y2(FWIsIm$lUVj0$SQiR%U{?WJ*Am}37SaPKnnq@#9F_57b zYj3@;#Bz`LjSkUqnj2~rOw@{qJsd6ZAPrvC1h0fS#t{l?B8hO~k;VJjIj z4x<(xOxDZ3lZ=AuSxsuYcZ&~KcKxhrEicZ=BB*c8PHqC<0?PnFT(qZp(gR{25P%gD z5RpTW{vh*v0q4N6Qf%F5gtTs|)i{JGM6J%gIb_^h*oxXyq3bNvG)$R|E%Gz5b+(!{ z)x79}V3kvX zO{=eon(x)l_o~B^au!IfsOvI#R8qn*&1dags>;HNjVAorFZ#64rGl3@o99yftPM&) z_B!5;fO%RoIw>xn)wG!hB>hFg0ZB}rjj&usG|~u2w3VyVBi+|NcG0cK2sUxGdSr;r zy``Q%kXnUC(K_kpWqVYak+JpDS<_Xz?-N@b2D+4)q=-5Ll>1Le2c&oN096T@kBlT6hJCc(C)c`n{nh;}zG6rc!cN`PNv*LP93 zqQB~hBoX!+;{vOpLoT=oKG&&QFhw#k$cA(^Y2p^dJd8OjVscA}BWRmUCfT|{dhK%y zwb5iwo9G;k9@1oW!C~k(6KYjKMLo!yn)qQ03+vs<{^vUYc`#9=b$~g^!D%sPa)@+= zqE49=82U%;2#)8gHGHI&t<(__Ksy7>w)!pLO<1>ZKFpORZ?aoU=Q9~xav7tsay06c z2fu7Y$zxv$M2Ynp>_H~NrKkZgVvJyajPOW7N&&PNL`B`Ek!kct#!^gt$jBITIBjHN zMuz2nijh&ljEtl{>xnRB>l7VXxNFD$qI4(0HJ z-jZZ`lWK>CP14_?)i%)%wXHc@E*rR+{tlI(S9{H+d^2{aZTZgi>A>lsCZN_x5LETf z@kP~vp~&_*_Rw|Ds#<3Tgu&PGhIp>~0nq(peFjb+F{G_NFM7RH=~~0wD=I(=Jb>9S z;T8nH#KJj17OO876xodUZL0!>w`AJodH^wxNK8bwn1GT{c6!4&OTftNqXC3~gitcQ zjY>x>gQ`qhv>@HsWo=i*Sc2jZEn&-B_59)xt6tsV}RFMSFL%Sg{Cu2yBTf7 zj)cc2?~TH{E}=I=d0X}}GDe}U5w#4-Prv9BmuE1L_)JD;xAhS+h_%=<Hxc z-ivvittA1m1I8VkcF+W~`13IDT5B(ejN}%A087ZkDZntZ1p%66d?wSAe31knoI(!R z`(L#tR8O8?eKw$U;cbN~D~rR1c%IJlnI=}-&tW5tXvX(t-`am)Z6v!esF};=gRyYro>miG7GdumQ*Vu8wr=m#bdH(x7K zSj_}BiunTVM9dfGyuR&jD%DaPl^q7BLR&)Qd1CU2vb6QUbZ8C4ew=3-vRE;0+9Nq7 znahI|QIe6l&$b|`rsD+pu#X7>eS<2*gI~Q|%Bvl3RRYFvl&rN*Y>bg)Fl7;=aA0XF+z>URieYk`8tx7?s3RJ_P*<-8r*DVXl*-6!4VCF2 zEuw=4Xv$_p%V)5xB9x})X#!`KE1`sFd}grL*`6ZpVoIlAVwkXGb@@fMmiVc}M)TNi zRCZs~ali0Ckp#FtU6G_L1~o}ty|zkZr9xI|`2hT-Amol^Xe|h(2Z)L6>5z#vOEiRmjW%F-%y|A`RjTqVr3W zBeQo_sMKM&s{llG!2n`|E$uk_vccFE0#7Gg*OcdLbgeD0Mu1PP3cf+8q{|{PiDC(p zwU>DzjKQozfUX{v+RMpPtt~3BhPjH5LRK&}T)c4?L?uN_g}lz7a3aQ^QPyrDQ>&Y> zcez;#mBMA&>9qsNxf^|18MMRuqh097gi_RsuKKQZRQjMW{3~oUWYR{4lMdH%UyNOw zGONWnh*swhV+W$ZNKq9=H3%~9IsACFiDR2zMw<~-@6=oEXqM10m)ltA3V1)kRWVw> z&2_j;0cQr#YH4BMu(|g(%k43prJ^FfcT%^`LSv(1(Qd6G(=|%tdg}=CJGW)WWYfu?taRN4k z*0VdQ@34M2q=RCU@=$bDfsrj380K0NtChF9nqE|Y1eXfBP5zOesgFUfXUv>TV7 zVxNzhz8Zc=U$S1Ld>0^P!juKZZLGKV0A`L-*iH$cg%L(xfEvc0X{m%Wy=MUp8rgdW zUkPc2=P1M-XWd0IT&9V>Jtt%f1r+?D4f!Tane1i)VFtJd0daYFn@(kApajI21&!n; zCYw#M$>d>i_A&Uz8jZ89|D23Yg2sr?4eFyD&=S>h>3=`HWQ+o*)l6x6?zIe!2a=aU0d!=M zr3zJ^R-P^?)c}2ZjYFVhBOy9yK=~7O-Y!-wH3dGyB)nxO(LFCVKE=*?YmO%aV*TnI zI=Y2vWD?uSk8&}aaT48lino|BOR^dvUtZ-*}Sm4SeeA~;eJ8|EvN>8f}cT-_b^Ty$DH{lQy z`-9uem|{mQjsu_(7iMF3X1}6gwI4bk`59+&`XdOn}l~OVN{=Jag%V960BiJ43u!a5;QM7W`94@6&Nu~=&19y zX57~5*b?@sFi&CVM<&FqyO-tcp^%}j^&^-oM3r7b1`xFwrxk6U-zeP+7>aj71tf7P zg|kwLLXdMu5{2MO1$+rP75U7wu;NuW0lEE-7Y^RpF0y;mwi(i)*xe=&0M^Jj#vwrX zQ2E&VaDbEwt}Dw=$SUXl>Ln)k&M?-c0XWMNWn4H~XHyXBU&^DMugymOGJyVq=-1RD!-IkgsXlAi-KC5jo;{and|oc@M92$_ zhKgKT#-7=+b)4R2x3PKwta7Dd_)MB*q;8Ok0dZd#{RR`P`o*63{8vwmKXow))CEm@ zqPk4Uth#`cHmC+Xu)8(S4}hUqHDTZa$YLBNSD|T>j$H3ls%RIf^-7Sj7*G%)6 zf6KNzKJxxQc|5WMoBNZI^ry&F(?0BptjBy_fL+zRBxZ?aK+%+F<9IGj$d!XdEC~5B z8p7L4c>u(dIir!{4g z!oH)%oM}ikA~vMe&QdEGo)`k@y#gFQ(w+CG4yJWdd=rETp(pkYwTd`rEFC2oU?)jF z(X3=?AOsx_CSQhF*5l3c@vpf2%A)c$%kT6a0R_$Sk?`1LAulz3w|FwVaTx8VOybj& zjHP$42@&qWpqKuX}8ay_1tuO)w>T(`@ec83H_Ei>qetJZUqfEV%p(8vJ*V zB-di4`sNC6=Fw-0ScinLDdcz|njIIOf2U0iU3|||O)0)(CrobW#^rU_Ab+sDPeEM8 z7f0bApqTG|+ssfxew|M8RCL4Twbdclk$Z9og4=Efby*z{W8ux^7v1)mBI(tVCu&kR zEkFN%8QENZ`|f`u5_G|vAYVUGv@VXW_|WC^FaGMP+X@64v~$(E@`Lxj|EYA1A{FHE z#(R1-P8C$ytLMUd3vamLo}x*{eBpoj{5L6TXbLk2*}AoFo#LD3t$E|t zfp4SLQ@2wXW_|R5dh54^qCfQK*Blsn|NX0OyZDcnFafBGMO?KTQ)PF?)9JKz7gm6MDfVK)N}((v0Col zMm!o)vaji%N|abrn@9ApHQ07iufa#}9%wMNTV+zkRSlyNDu%xF8%AR#d*K(+>q#3n zHqfx1d-Ak)sZ|I;Omy)eeZ(8yk@k+gJnYAf!@S|klf3)OVAmqSvX~ByUN>?kJLMUf zi@EqBy{gm(pbbe_lI+`zTQI~yXsbIqtLd z%+SW)=VRy*brp&F`(mz$Lbr3}&g9jSq}w?9#2|lgdV;I4a5aEa#TlG@jA zQAzfIhK~nZ9in3OV0(y{LQ*7Y7AUup@k!J6FScm5+ba53x@fkhaqBI~TcjW`|8DI% z=FG%9i|kI~vjuji#ecrtNt!ZdcWfUZxxO$xymS@GbCSH67*hR*pVHcM^QRC3l0rZ&NJd_;-3!Twkq3Y=70;&(5OerDvBZ64_O&^(S#j zl8sh1LMki_jE#cj4r5l0ljpIaRi12{^n7d#-!COB)(X$dv#>Xpfb`x_M`% zP%arjjhT#I>e{kVnQKxpa)|{c$WQV1#EsCU&AGq!6+;QuFr^VJC-1x#$_~C&mk868 z!onO;KiTruMHBB?bQxnETGW5kkhk^td8R~TLJRwk`rMQU*lblA0%I2~G6mKSsWbS(g_0)ui|Y@-5iHSBr>OBl-MPEV+apizgN8kyeRQ15Pz-I<94OERCcEyrqUTkgr(H}Js88QHC*4sFZz z*~F?Ub#yDXQ~X#3t34HA_%>2oTdlIyN)>k%$^BX!G+dQr(To;y0CXryD$Fz;`LZ}_ z)PF#Jf76n3MQk^a+H@=Vh~o;@k8<)#Qf0Yb37x1c!%&7iPEiCa@nLK+?sQhe~Z3rZ!21p0%jAd zSaY>)EZ)|nb_|({k;!ev=q<$@y!L2dL%CiuIeF2OuYSc#w%&a6Mfd%9*GsnE0+i#g zdUxKwCA_=n$+4xYwoalpiMsSQAAJW!wz7{XL|VEnr)3;)zm1x<<`fQ8-S&>jTk_GQfxMINEb5=OU}?>Dck6=HVwkJOE>_<=pHE#hBN?f)5paDXEscZ1eU&?sw>#})t64I@%FqmMMvQYR7D(1<)F>|@ zw?NCP?(&Rvz=siYr!G|^Y{T}CJsy=s`4ATi<@nA<+T757b1m3+JBM!s3v{6EOXf59 z(-jS-QVzp_tL{16IdO=YD~KC+1#=X2(h=L!=cX-mq|EAA5$k@AJc4rqsPPm*+mImx z^KyysHx@9Kk;O3EBy_YyGBsI;uY{k&=yv2*@bSp4w_}UF=u@`^ zxy6xHN( z85)^P@Sv1dk=@F;h$>{9KV@X04f&@qTaTSI{}h(%QsJrw^awR(L+S)9j=?VZr@9N% z)z%!1EkaWtVi}N_o4Z;F{T-x>D37&zYG$H6dTTyMW4U1ZP%i9`j$Os7%sq1w|w2o|8T<92#WFc<=X+VeNN8fWYvCkLiC*iDCo8TGRsm^XmYXj(Aa>`8Ob5i(*v6F2pi6sX3TeTn0E)g#DBJQY}Ac(Hh znTE83h#2+)%ui1t#Vq!Qy};)bz1$M;#S#DolCOMtjm!bic9AA0H3dNuRvg0UAULbF zYgW-1N`m-;=r#C{QyJyNDg%w0K4UN`M?-}Vs|hWA#7xp^oiH(zS*zP9!he9Z3)Yf4 z4?_mYsiC6-m$EK9f1f}#@g_eZp`pctr!iB@0y!ENu`Lm31t$i$Dn}#_n(XVtPD!C3 zV;oAekHm2K#6-|Q;TDVF1jLSKt4end;>zz<0Yf9|2R&1#)+pOBqK|r z$H{cKSCYDQ+$_`FL>ZT3aj3}$CkcbY)v3&549=m^PUoFHh~jqN8dC@>+k33!3I2iW z-S}P<6oix+28!%p({POYJ#(<>$Tz(>QlF7T=Jl5(fEQM>zyCS{Pb^89CN7Jz&zsr~ zM)`TdIlW;?x%IK|$&(B+&7QD1z9LxHy_!8#mvJ3cL?S2HI;_8(NX{aVETD5*HfcfC z9(Cgiwju-$Ykn+QK$Q+gY_wNJ;<8&tjzrH091U3A%Irfd;BPLPk@zeKV00 zxy?Z=ijNj{wby-x`Kenx`qHwkk1|j*mMB^?!w!Tg_dbRJ!7rD)9>-Hop}UmKbXfXj!bXN=X`7U z?{q&*n1r$9)m7Y)rB`Xckn*aq4MbZ2z5%2n|m~GTXOHzb?3dxH^nUvQ?}E& zft)h(zYgq;I7LNq|DvS-} zb&X48+9bo{>G(SVoE}NeKwK~a7B5!ecXT|}E#JIG8*OLo8*ZwCQFO@bX2FevSZf6>-Qy@v zIc*3efYhKXTp*`WbGKpJ6p89U1qsJ7V9!s$A@O7laAhf11l+?)0Iy7Gqs25MhXw>| zBr2h$60o{b0~0j_npO8T-M5WyZkTKY4T&0u4=;^_ixO1~J&JX%Bm&7=GmtVTXR#`7 zoTZ&j=yZDk=Zl080;S_f8D!X6(=aILgUX24Vk8B@0DcPJsD&V_s%y@;LDORbTPLm= zoU|x-OuQkv^EDT}`Qdz3cGrA{qqdc?qQ;5y#{Z zVWqIQJYol+H_P($vL%#f^N2EL>sBpf{#<=xDbmQ9_KL&kfyfpe&hq<5e}=3`XwJ87 zt^5dsG1orOw6gV0@(`Zl%a-6NaCN^5J_gADe%tg& zJeV3x4VAu0Kdr6qM>C{vR+)~SrBOYQ#R%Lyk&p&$tHw{%a2|#a>Eo;*3LZis75YQn zQf_8t7>kE&67iE6!Xs5A)pUNa5Y?^WD#&(~2?jOJ!b#_7MD%+oa7Vwu?fn8LNhNe2 zlx(@Bx}8CtH$o=x-A9>=UpAiZgH=@EgM%>sE>~NM1O}KEr#7EQ-X8{o{yCr0512SoX@^ z<1H=FBSZO>4!;xt?IzLL1 z#62EX(|@3S!jgxgI%_y4aM-Idd#F4!v+L7gY|{GUjAg_uyx{qo(lp9Mz| z?(B~jKTUFH|3=T*-(CDAGO_oXZ+ykc8JQ`MqswQYT!5UBor*o+1~j1(`f4=$K-2ww z5c$wP(fVSeO?vr`)HO5vB>!R1V>2u^Ns+XS&H=;{Jg(>6;V15;_%|rm-|7x|v~nP` zFL&E3WUbt5$4=-*5`$Qfe}L$B4i%#RCwvize$*TN2TU|COjQSP>nfEumaLa~tVPM= z_mCkH^^$kX(^q?DK`5&UULZCTTpI|jLP0V03}|C~j(FKBZRwf;wm@P@8y+&l&XXt7 zcZjCch%3Dmn0txdu9Bq|ZG1r_9U?U>u!d^;;OlJMxwVIvK+K9&;EB;-AHpY?bkB_S zDjwixos0*+cki>4VY6@+C*yOyU>JLnptV#$tw)3w@Bb@tSqF8C)}}sw)5D+q_Pf4% z_j@fMRyw}@(6RluZT#ZKof{NFCLMp^iF<$l&}YBBdA?$VrsKPA-hAh#FMs1h%S6GW zM1)L9vpo9^(X}_`jhik^)zDB;T<-rCuI^vw8_2N2EH$S2PKf-+iwB}O)lRc0 zu&2ldkA6DYY{W`j^2Pc~mw>=pumefE&^nqQZ7|8*AC$~M)VU81MkwWBMN@y0v=g^l za}gT8CovJBRVL>8&}`gY19!{(>{;yn^Mk$r>RIf~RuJ*fCp=Dyz2DkIGz~8%abC|{ zI~B+5@;ws?r08;kmOG06H-rNv-~gqur)|1_b(MAj0S3Zr0weYAiYgKPb0}xoz&F3# z%ebs}_iwmU9gF(;JMvX6QPKByKeST$$cOeJBryhsfYCgRMTT@u6j_PlP^t;eXoJ9dI zRC`hM*SaC^KCWuaeqHU*G*CbMplPkLBTWfGPKX12U; z0{vU=a9zyTR!$&E(P;?I>z_RfgZSgOAJu!I5Oql;;2}v7rIOabnv+ywLR;K)&z@BR@dH86QKOi1N#P z5okC(4Ehg=32w!)1%gzRv*JZs#grY2gjl26YR)XOs?Vgm0nj}00kHoAR9YguB%GmF zJ>jhx==+LEG-ucX1mP{$si3D;H~2`jU7*PN-GkMDC?j)Tu+qe*K*Lw2Ou~u@{D@5< zdZrn|+f9wr*@u)_o(F?u8xWb8aZBtI7=3a7(QB~%O?rDo3q>cj4(<_LET8#3g3?%9 zjWL{vxjwBuV%Qw={|xttWRbQ{OcR)npC>4Yi1SyXOJ5XWg;;hZga4fA)S<(Fww>_( z>w}siDK~A=?Z8fW#NM6BPPp!do(cn%E1!pL@vm$reCV`yLao{f$U`{AENlzJW9)^z z#Ld~Z335!HFTF_5BL1?neaW-iB%qSsHff6$H!N`z+`-QK&5R`-=YB$GT0Q*@^2p84 zZjiHsD&EbxWgF`5&4CErtYIZ~0OP=>8Mp;cAO)YxHb_MXisjMI((JEMWgzQEmdqu? zj0we4_E#M7ELvh2)?5pVCScRZl5Q)7&~jluqg=7u&oBIwyuA&@i#_e4<33$CNH}5l_#Xz!s^V6sxS^ZyNd{H931{TbkhV z6ykdfAp*m}MQV!l-Esk$Shclxzi;(qQF~XB3R!>Y3WlGYL>9JOx_2!8UVDBI5@EPi zOx`EAO?DXq&lU5KD6h0LI4AYe{dIF2xeLt6lGTHMr9uT^Lx&Mo`VMkNuY4`tOLvLz z6J>Z!xa936*x!@$6|dt4d&nha<3Eo!8gW9<5sdQg{{lfC#>($=aU&E(0jp#Crob3} zn>RVf6Xsu!tu92aAM4rVF$s^z9(9Xmv%{M4PSYN>D?}cLl~*^J$w@Mzqnwl*7RnvX zHjZJMZG4k7+t{|6`YZd3dKWDi>s>R@`A(7yF)8l(AZt2zco=#u3(xF9DO;Wrtlqr- z+G2PKv!Q!#ni@GJD+ijAys>o~#--N0|ESd>4~pcLkn%doqV;lO)oXQYz7VVO1kVaQ z9OO&^O~_U1*96y@$;qu-DH9J1e3?`$ervCjc9aofNztE=4h==3^Yfl)2lhwtg1OErKqk(b9AkmV>U$$Zi_t>ye7;o#ti&0*EW*_i)*uw zQ`J+39cbZV7sN6=iSU=&Df_AnC8rQZ8CSspcl+;!TH1jK$ub2A)OLxM%R{`&{&1vP zz1npX_0c3H9uaRh)&(S_vXIPb6G5F!jbLQ=G-C;rCsO2D9({qj9j3M1e6ladZ{7wV z!t2=-`Gx6(0N#;A?V@$CBxV(05B?(CEy&f+5odemd*<-|qk8PU*DHo$@(c8F@4Uf` z{jw3-g%?rwEjtuxUsAB7>BUTjA}#kNmBb3u;J+1NyRR;F>$_5q?};Wv6JvuE>q4}X zprxzHz)cGsb#_mvCa(lY?qKe0*4t7OglF0Mm;Z$6wk8+X`=jA@1uoPdRtz>R0g!@# zK2MG`Sh)oC&6Dxl9{k!TzW$|uxcOZhZsa}s?zm&@*UtunF8Lh3^ z5OXDV6s;pa)(ObRZGM$`whR)0O#x;&FZU6eKyzSwO=TeqGPC@vN#&Mir}m2k^^eEP{#&d1ix$A0jwzxm{M%6~o6p<$Jf1Tty2sY?R2#3cq)bBVG)n%hlr@Z|!O)&<|Ty!ofV*$o$g6ojErG2`VX$f-N` zg4bPYF7ViX$Xr_C4qA#mA9WLqAQbw2z!#nZZUF=G8bpMNiS8f*ZqcGwVn~6LDY1?~ zOy@`l>lE=lPq~v?a?#R%`|=mbUWJr^r0}Q3%p|$!cYfz56;h2N<|p4Tl=5tcU8PwRBsf&(f|t*;uN4mO^tP=<+BYCgA5r}gQ{TQ5h0!PYnXEj91) zS?wnn78tTkyVuz~I6*Tw54FLr1Pa0Dq4uq!V3k|UCU^e+J5hFtfme3;3*Jh>qitxF*rI!`QQ zAO@KS>}V+A)fChV*g=W~?BFzY3)rC+nCe>rJ8aO7PXJV-g;WxxfBUIpuShx$fbu9D zoRV}D5N8-ylO&YOBq70^6>#j7fmV8xq~H!=W)!iwy7fs)%EMujk}ye0ki+&SiG(mo zy7NhbywfC^I}g8Ml1yOhV>?ZZt4T5uZI~pabJZjfr@NXYWU$pF(W+{asOcGwstCQ9FNKLtL)7!_$H0%twnM$_eucBdBno=?dOy*A791 z4ZecCU(G9m^kXLp#n-JnTAyR3VS~v6mx&`6*iDA|xPN+$2Z9Y;Qg$Q`z$`Soe~u1* zQGGD9b2Mj7UBKbJ>EReR*=G3k80E?EB6`*oKm~9p4@9}mU0M#?Va6n)0Uue5?JLLX z$p*+W>R`R$)M51ZqE_p9oKSgNw|BBCRH4MlA3#C=t{(zIV$NJPX@RVE{s!OGg=BXqVaYedKu11VF`wUy7(Sn<8)bThSr zx$woE53`}>*wqTALt)i=;)qsBEuW{=nLtbuESoMUYk_SP$k@)yv<7HYQ1WUh z3r!On6m_flO6K9?Ai<6?K#UjhJOTFXS9qUW@rXiv)p*4J8_6kIh^T%ft~e zO;V<7tz2NL%7s_#y-8-gF|$bfCZ7H#6g9mZOyd=bNDVEJCWKJY%_0Rh`_BCJ5rwN} zQ>zn9t1e=;nRrc@I;nXu360GIj&@-laFtb8#AnzNg`u~31z!3$Dg+*h2TcJ(O#u=c z1+5=nvq*e>G0XZ~v&VdfDXUU!%Al{pl&O`;8qHcLzdvhgZZ&HuvxbB~j&_xak> z2COZTX|EF<3IM(5;7%hkI|$hqC#(B^IVk`Mng0(#es(Qvhwdcb0}YGf>A1x*v)nE1*npd!1y*%x#v_v!h_HHj|<(m<^?}+mRJ}st|(ipk6M4w;VFKM!e_C zKo%6m+oEYmPY>EPCjab|3mlHo0DY~!BHLam%lNEE2szdQ_gJMAPiFa?&~O1oQ9d0p z6c}OD5W>Ho`Fn1;@k6ubul)4ec(tPZJ{O>mBI3eN)_gBxI8r?+NH=VgzLva~uO0Zat8Ezc>@7^oAH*VN({j$ba*nLs0n&wH zRtZw($doO}zg0J^l}KS$rg>ReC8Cb32rshSGX%8Jbh2le&aPrS2`)iblidX#b1;FjMTxhz+T(ejP7_|3W|`ehdKA!Ba=;%DN# zoh*;?3nL9K(G_TdFnm(}4{MgYQ>HcK3S013Q0`H8uQlV0NZYezhVFFNSR2|L%`Pg9D4wj&H83_k?D`?{`+Amh`;39NRn(jOra>6Dk?|L}6 zXtQ%n;}=V>m$+s74QU7m4FwP}Pww4n(Ah@DP1|M9CBvwwZy3b^GhfroygN9LO)1%d#cLxlkZ0?;$Gcv%fp&|)Gs$07C z&+65BrjxMy_IqjKl;&fn-40B`4okrO__QbCUcLw`7{j;z!?TkBb#~&N&@+r;pWN(1 zx!z8w45Lne5(W&Tkl*wTqn@3F)18FJ%ouH8Cpc3=`b z%E6g{qkoPl2mc-5gokTM&Hd@8(w^BmhhJz;qb`&<%C+hQjPh$cKl+u_NE|t)IT|x@ zv2z7UIl(RhWk3U2d_6nI(j~$sa57`zDg%<|@r`a1mx^d2hs>V0QG{86ComV$%_6Um z<8RTGk}(1m!NV_@9}5FS`p|4!AU&Ov75k|Axw@6`mY~%4&(PQ3cOS8qh{JsaOmVqnGlv2@?Jp<^X04U`i~E79xcp9FI9F z8_AJ5F-ugUP(`FGRgOkikU`fg^TuyqjW&`DbQv!`_d&L!pW?o@T@k-8S~6mU&UAlo{GrgBksFiO-Oug7{yuO-@6Kd@zmL*-A zpPdBfE7<=}!ixU0V7kFc_F{ylwBfS#hYj*d6P1F$t07;GRdF{R%9QD2~hl^a+)lT#Ca-T}dh=e&5lexds8U?< zogS9#9+HS(S?$Hy4YZjDROn_WFc;K{{9WF+T!JN@L?&kAXT;Ru#Pn5(=D8~6k0p3H z&;Z$X9!?YukL4m_CqfD%3>|alu^o(x!!8O!B7MC`q`Z0A61&#yiiqi@OWaDG<=f>$ z=FbNf+Am$LSxYrP zQC*UPBD1r+HS+R5c{5C7c$K}$>tuWp1lj}JTtWGQ6xWnDA|)j&mHLvy$t1EQhUn4H zd?zZGl{@bKPLzF@Q@w7gCv75N*fOMOQv)+R)Ch5=518qH!JJVHrvKjRq-ESQ9N$)L2tS*C9y3wdSMR9m|a{eW^|)-;goeEVNJIf<8 z3MY>jthGZG!Uze>T6G#6GkB)%5LcJ2L!%`%o$y*0h#@J*L+()d0APAVUTK7+LLoX?&Oi?I@4+qeVchpD34;`02&{H?o1R z(}B|t0Nkhim?|*y{w5f;+?xu{t4-xyc59lbsC=NGzHc!7A$urdEuAWw(0)q;Pe^A= zpPptoA&p9TAk-t*4OOHoW3@k3`#L)m!lN$C5Br=#49KKSIN!o*wJ`1JDVJD#YF@o~~0 zcnG@2jEv`pAX*x1cZLBegh*ZT8mG|%7W^RPIFG0^@}G==W^B%yptg*irNW^c#liqW zil6{Cg#czU{*ZRA3Sj0>vjdo=EDi-QgD$c_B$zHUVw5CnW=vKzgl=s-SrAYRlrIHW zm16!preyV~Y+L2u13_qQwujUmuO`yiY`B>l3-=^RA?2sU@PYcX1aC@}$11(5bW zPSD}!mXAHr3p#9)FpcO6(QBU(|h=r=V!F6eG zOm~i7o+-re6_mwr*MizXVY2~sC@UP0mp_aN(TDBGbb>1;m0Ym&#*O+K03OD%`*RW>xv;8Tcrsz&&jiGU<#A0@>LGm@zN#ujj>R0W7M*% zmpA@c{u)9&(BwsXdO)E1w17aD5(@i)en21)XrJi0Fok1c!1-CZMj?UhLBK=;JhCoN zR~8EfiJ}|x1vhc(_Pf-U2dFy9=V-sRk(4qoAR3(`QqSkEWaR64w$hH!$A##im?M@SGTapL&|jB#`jH3Y`Bop?PSb?BdJtXl2e@0R%7w0 z8n{;yXLZVmday%^kU66$3`_Dk73i4n<w$8`)bZK9Rh9igP*(oU8eDK#QP7@roHQeca9KPH8u zjR=Hb3FPJpgKdD40Zpmmi7#p!p7P)yRJ=%<6$b1Q_LBAn6=L#3b?TLt_Z&K*3D7BR z+DVD>tS^Qrf+^Q$*71Nz6?hqoZS5vbRTeg#YyEG_jD$Fs2EV}`z?`*w9q75_i> z-UnK*s=o6+f1ZE$KKCXke+h(+=Q)#k=YlY#Q7dK-Abl4GV^~lkJUYoB)AyEW{(ybDD@fa3t%fb82hK z5Rm(=oaQ0~s3!=xVADWnJx>|}{_Lb7z8$9}Q z*|i*e_l@NZ6o%x;Jz@ak6v!}R3>x$y`A+=C)!k9hDPMA}5PY;JV@=KCpwtq%Wh=RIF*b-+T zdA?nO6a-=Q*zMDyljJo*Cz2~kSQ~mR9*i(%fYi}(dc$6FyIi*|4?|%i zE9Q@?po4DMqXI{054^PBkw{-~(2w6A(m*F{}|Q)ArHp8UUJwd4r~(&H5c5ZPIU`&O!v&& z_UQ@flhpo?%6Osd=f1K4&kTJLA8*al(kqCNxo=WR-pS_s*r2sa8Cty z_Cjg;)kHw+>`tu;+-w3V)kk@+R}I&kOnt-G_*%6h;;1wGODJ|nhlMz}G=-y@IEOZc zqlRy!(0xUz68q5$LwGcU8>LhIEyU!#V36^DE*?<;l$=3>$^`yY~{TscC8gmO@`*7R5;J=X)C#&}~ zA6RuM>8as_B@&C_tXk1MFX(l~`$E`%f})1TC9sbAxav|wzjTvD#7e7WY8#=t*v=mRz}KNs&3;Cg4p30%#T9*mj-T*D3LjNrD-=H26n&BF$+{YIQMe_9^EYV`r*qhnGgSQQiEtQpgy>&iaFtWfaHBFB(-@y{bG& z&tg(EXq9=;{A#Gu@$y75cd$B?Fww$!`P|n@|MOYa!TW4TN3z>zr`}Xeur_XyKypi! z*U1Ib0=Sis_@#Mig{VPU0AO|lihws>m_UE(mn&=Wp&trO6&XRR%#T&gWhaRHtf%77 zd0mxIs_QAMQ8o(VQWz|}rKZFk&>h@kC*LU2REDJKA$KZ~i+T$i7K1c9$I7u5)bXX^ zD)cP|lo0EI`BZEh)XV}h(od!}3w(qoX^D@Ppk)cj>q6+Wv|ro~Q79=;Egh-Y6`67h zmXM0Ws3)}jQ_<`EO&~7%+!WfO@!7;M5UB(0fGJQ-Xv9NL>T)a|TCQLK7L!Jf1X*>Y zy%K?r^RBY4%4BD*=`2$nJl&NKj612>1ym)>jz3b_>9Y*09h#d#!5*$k$roeMc*& zY&n86R$wy`-sNB=fI+*Wd5!N1$emZILI&aFeMH6enA+{iz>qXbdY&^E!wKd zos5@MU|5hxjV11eoY1?-$+};A;irsS!*Uj~K8`GuQ=#)#EhZDWQ{gV48inmOZ(}T2Jf`T!@Nc@*=u+x4utoU}+ zII)U)=n7G#8}Sfw z3j0f-MUX{%2OAr`z}e*j`4c{7m&%3=FGr(tvhoKf^+BT1rTBtLQf8?8*$))m3$oRUnOl`Nw=6vf0yBuD%EIw1+@i$)R7V6=<3 z+4FH=37H4LG;I)*bW!^KDhY94P(`^fm~N(QK{Odww`hVn9M(B+$|gspDdm|cA=wuI z*L0BNK#}R2JGV^8$w;+3-&OU6h@7DfenMLGizY|=xl4Pow5L+AHk7tvX-lOti}QXW z40j8ON(I)8jD7OU=A>=qU8LUva$@CxJTOWUIP|o{>7kEfj-Bg1x1IAqlEpeFw+%)0 zO@>(tOaMTa^$Rlm$QSNS>Sgub$C{wbreJ?80HK0o@qId9xXhR+O`EZ+A;@y0(>O)5 zE*vmkP2-fvC~HNV#$Y-SopRc^t;e_#C=xQP4Yp*~f+msqh7enAO^x70Vmce2@Ct@5 zjuV9}a%JDD67b6{qNcgbrWlo22Mvu~;exTJUh0qlRU22;nr}bL=Go6=8NGjGKLc;a?PsC^`%}0;SHyrRs9@fH|D52$$1=Vg9xdLj;q-46qsu^O0OE{~HIm8h3KI~eF zyMH`4!<|b5#z9d1RenRnLQGAcF)?9bs7t?GCdX`me?f6CcA}%S!OL3Q&C9T{iBM~&Q0qSA;WZo_!2OeN zji|;tnZ+G#yRuZS=hJj{Cj68c)zhF3QOwYle|29%k&sXPA{ZCYER$U!AYX={J1o^{ zvCuS;4*YPN^9R7V<~7h~_NL3{=60+U^4UM*_~M2%$`JO`ig80vKRgWXaWGm+d42Qa zjK-%GJcpy%3o`EUQhL5e!}K=%8iPS+c9`*;64)!Eltwq1=s`ez{G>;-!<;qqfG2e` zQA#l9UB;(FG!>9WW_K{OxlA&lU8cicWO~k=u@g%9qL{Anx%op#=JB8&%tA97NHa^b z-tpJ>!M^zb6OV2?_ruZ6jc%T+(Ou2pb{u1LgYRW@Ck#i2m{%{|RPP!Mz@xi<{Qm0E z&2u%n_b|Fc#~5Apy^L<@aCGqK97$jQ?q~oUwl%u3%f1+z2l2oX8bK=>#2mv>k&Wnv zwm8{%r$!W-5hgy5WCJSE;HKjIKF)Y*sOob{1n*-syL`ymb4)f&+|gD z_P%%mTf^&2!E*cBDibW`)(1gcV6?u4pRU-x)wC6IF%P#lmTWkKhR(}zK}f!fEse8j z(@igeV4$~6H~mh>oce5I$~j!%ie((PexcTw4{u*PYN71H_2tx=)7 zxSVjM{41cN80(4R4$?nj=)v8GgN^a}aR?Ob(y3IL(6XwE;vb6J`2dXGHp$3`5Ut;e zP^B{>P$`4em1ImWjlhB1htdQ9YYoSG>(7~_UVa%%h)YIuYPO#Hjo}^-{8O{jxW~&+ zmuvKAhI@G);zh~90@KY3?TMu#0pp7kjfEcu(yUOujxJ{d{+<){Z~hbO@dT|$HNhfP z;qR+(byL`^({n0XWnGWf=>{o#NyrrdC>va_T-tz7fMnb>+yD}?wE&P%gmFMF0O6j$ z9RneLRsta!I)jj32{B_J)aC`bphHBvm|Pebq8skw^GHB8Zk|U!Hi~|{>>1DxWbanJ zb@r*t=MKN~z-|KOzs6}1rzf08Hvt(L?slST_x$gFNu-5c?tIcdHWJO$L_bI{o)okH zz7p%~3vr#k5QF9m@iM;fuJ0>DWd0Rj0DH%2_y*0vImeiTqi)2S2WH_7q7!p-%~Z&K zJ+JZgYW&P&G(K;450g9IA}cyfZ&H7)nO=~Ya3am_*Pi2z<7<3+A9-k>4}mV6Jssp# zbc10ynj2;WYxekz%m`?w9Rp~K&dAm<9Sp-OBSW&8*K(h+#^Q;Ac+jfciWB>Vw(j^ASvziRxx+*EHHzh6Tn^52ZT zj|ld}_&oyV_jc(?N|6@vlXQ~O<1DNK%Zyd+`wI@Yom>bkW<7k9d^z>xq_}t*n ztDOPWuXhH1wKI6K>pP>qq@(??Q-9{0tgkzvC{xmwK1T|ZJ5iYIf`8Wff>)eguu%x!~dDH<+6A2n{0IOK|Q>KU%pO2 zAdZ8-2q0+k0Ssp@;FzGIyHIsCq1t!31eSVOa)(P0JccE=x&%36ShC9{oFvnfNJEWK zpI?{a+U(5c@J~D6PM`3xrsUM@!kur&>)IM;wDWibVD0GyRhFzu;R@&Y7iWjkGLx`+ zkY9yR?DcQi`UtI6D>2@1x+x(Wx?8mY374ByrONlEloG{+1^y$~DBEw{J0FRRD0X)j zNEE+;V2QzC(w+n}*{vKQR$5Q3;HMYE^6@JqL(?8qb((_LFIowyIm&r^q<6-|7l?&7 zF{7wSX3#q(^}!IBE{&*7X=S63Bs#r=k5SN7(hJOEr{o7wBb>(N3Bo{WPx%5`Q($k? zkM-4R{=MC_BX^rJXt%MMXds9yw-B3@%Ppjuyb#{5l81zO&Yp&dY=+%dfAFB$m(+7? z+n4Xru(me8ut5j`Le7+7y^u>*5Qx>;Eo6YR!dzyV8}D zF--f^xy+}|1+R&tb&TP~fQ+Vp!Ik7FusO1e?-5y^2P~ZLBb+n~3*oeqNvCr~(?{k> zu0)CZC@jVNrGV-^_c5U_q-z}b@VKsbX=-m(FbYFIYK!e1&O@&T^us@}$X zc8l4Tr#-x1q>3x-N~EfekBznuH)gBOw%_a@(=N z!^*Kq-bkv+&@Ne4LRDPR1-(&g?#5U>1+>s99Ld7h>5_^nLQ_~|lDKu(4jwO|*^1a( zyq=f^jiTzRCQb`FEYKHCoLzj0ALgC)6e@7hRNxy^yrL+We*cP*PpD$3ZM07HvmpCe zwlN$=b}N2cQis_GQ%+buca2H%`D1?lm49`@2)dcHRc#V&Mu$=7=eIMA*&qi=Q$FqPxdxK(!DpS|$(aTumigV``e3w8u zAsp^6I$;rCG!9C187EJa96hKL*W!7EQowpC(*-GB$=x?k@e1m_7$YLM1GmLT>?p0B zL8@RCVC4)X0PJ!BR?enimkWkOBB|lDcm*|ZQ)34O&B+xYw9B`vPcVH%GrcXxMKt7L z5kt(rp_4HA!5LIPE8*KrSi+uCWvHWb$V=JLaUh6MIBvGQPFTP4$*dCI&tn3TDqawf zqnU745@H%5Ol5YFX2+xb_r*Tafn2#xty>|Yr+ZSDLT<@b_)r8n}V zc=IgjS0=_iAIjdF%Zd5vSGqrgBOku09821!i)`HE0MLFbxCsC`!$}(e#ESrc(Su9+ zFasL%MUch>2eY!>-!qx5+}f7U2%G4%xD`)FwL~g6e*jI$U^ySxLGn34vlF^1S706F z23IGYgUef}08z8iBlLLmXC+rmPppX>!G)by8nqH!!c_g|lPh5)m zSog<*Kc@>@n_mXrS&6#XuS1PV# zot{)ZqAvSDRsCVYbS4bMjT0v}i@531ztmPiI8g_$XP%42o(2oq%)XUn-H>e;2{$_3 zky>I}RIf}WM6P5@*%ZCYog)RO8Ob@VdL`4ICsI@=WaF`Uc@8{AzRY zcQ!N!-;#w@J0Z=~=pCsh4ql1RzRoK^qp*-n|>6XWPui&j+D)BW@)GY z@VrPKf&2Lj;n8e7!}yzwj?$&?CFlo)9B<bHnTOC?W5H;3Wx}2#!lV9K!&YpchE^#o%EK*>Hr%nOs4(c# zgVvB^VAL}e^B#t=n~5i(+N z0Y5D68_rgAyseB_sRbaHu*7Dv{S%gaa8XFj7xcz5V(n*#T>O9DgNeqq!SA)S9Q}Qp|7Kwg*wDeRp*&nc`U&sy#KPa(exwgL7A*S^Zn%(Fd z6$YkpUQjN%wwk!7%Igy@RYa6_b`Ka7*iv=t-`oA*Rc|0o4&kCYO|+I$Ew3lGR0+|r zo^ctMBq6K53L7SngZs9Ko+=Y0sUT%oY>{3*slW98n>+NooOtP%mj2 z{@E$5LHO)>Yk6NnwwT!TKly90iy)N0U8eFh7cuA4KwTZ7`_!Zh{E&(-g3m7@*3sdz zYxi`$q;5F@5INJ_9e*BvFV_d-py+k>3MSFROZiGSj*ka(Z@7pxh{(U0v>+beW?npj zlao7j@>6Rs{-lPljDn1+Uun3n*!T`yjx54k6wGLw2MzSz{9FfVRz*&KJs8MaBQEj!&`F#9Oagym4H%?XgEe^A5 zosSvisr1U(*8lBz!=xUt1vvUGFYcJ)BC9|7Y+icc*}Sw@FHJwg?tM`&^`GHOkLjh! zE)iZWl1;{4SFp^)%|A%^S*Csz`zEOo1JL+| zQ8wY4pc=I~m0J6^b~WcqRRc(@LHI?gzI}Ghn{KHveE%w46s(xj%@S$*|61Vp+2;v< zSLAtTYbS(LmE>|VbB8an{0-2fcjG$8oaHMHPXYaK^!Sdv8I;=;VHreBqlruTPJ`KN znyX+6Tf)_PvobIeav~&QMz}``j!X^<;`C%L6CO!_Np3gve}Tk|J}n-DSY!R&ZL<(L z%4O>k&v9fqyN0{!Q0845u}rz5uZl-t-L!Qr<;PYu9&0Dkap44)_IxWgmBTJELfB>? zrZ2>HMiWBH;zrIVn_Ga%S0`8+N9%Y3)KqI(=n(uQ?v9jBAz#hNU(dQ1UDXm2 z2drDK3*gHsLQ+h@0_liJ=xADhGnP2<2qjtl_pt;m0t@N%B*()`ZzZCrDIJiKOG+3m z`xeqAOGuwUC&JAX^%OCptxsS4`sj;pEv>(D#1|hw;){P5OIooHtf~3U<+NDUp=#^DWXEw*Ti`QP?@Y>LDh-mROP!YA}(73T~kZPL> z|I&`LD%4$N1xyo-rv9zZvf)mkMs$J$6B zywWMzy5hgf@ty5b6NsDRH6qd*Nk18=I|baHt)7ZfKZdM8vNL>p4&NR zbkAmIDNb;WIYmN`;7r4O#9uR5!A1odJ4?*-58_rxek~BQuhx%z^uC1O^OS_-C@?<2 z}`y|Io)l~1bX_ZyPuK1u53k{_VklH!I0h6Y2l&C7O7;q6|eg~#J z(4XR+2vo&;rllAb&m($7eo(evAtcC!mtvJjx|n-IU|Q$|#h`$yw$7`Rj0q_g?P{#% zG=!2<7403xdaf`?Ub~5GwK)-#1F# z-n^s_jN?B6oj)u{%C@%HruciRu=EFmU?2FtfqD{sToNGsvG;#Na{l5F-mMD#9}Eb8 zp$b1hx*oEHkpn+D zUn(ec#xgEUNySu6q10)70}%NJ8O_Vuff$XG0_p_~0!Hxy3Hk%c5{hp`yCxZ<#}C># z__vTo&&hfyfWebo?4e= zk7ilAHN6bsLNgisIk#q8UzYfvL%U(}tD~0f4_;sF>Am-c z_(DQZ5T3!!>-8^|&2^IemnypmiKX@1pa$OWU|Y7s`CnDiIt@t zGv)7DT&o*$_o1JVkYV@F;WhH?@S5zWO_kGPf{vVS>ueNWv(TZG8@ejcBwXMtMZdB> zC{sd?4K%Md&UA@lWY<&jxYp`&PAj|wo>H_IqO~2YcZ$80WpSne!0I3f;UU zk4oB`lg-tpfH~f9<{{fOWx6;_<{?>B_Yy|cm`BjQ+)o(QA*5je&5jYR%4#nPbUxoe z)(3=PRB$p5*mc>Ses!m^k_jv>1j_Elxzk<|cf_N!~I$!61#bu`TRg6idH;gwR7>)S>1fq8~aA4cM z^~QU_gW--&R;^aB z5CS+X+2K0qyP6WA)dgqe+ktuj$AY|f>ZvH|{%4Z+ZiZ1Z#YQ+8-ogaO&^q!@6{Vd4SVBQ#n#0g2 zttk|k-BE^G?R*V*QCO)j49wPYjAx<;Dto5cqUs;dU z#4H?S_$Rq?cf)*c{Y6`sG1ym=$F5LR{bN-K978pAj5__@72?$Hs&iBPdXoH-zCN`Z z`aZe4>W!5vYiib{OgK!Y8%WvkcK22tVm|*KjGzm{D!h?2W86LHHJ9fOx}(c>bGch* zfd;qb&h=&cda>v2m*|sa`@Jtw^r1Y))qdH#zU(&7g@k&pkiW8ZcJibAAe7jj>=<+%rq{0vV%jjmb zLa>A`nM(8c50RIoq5)Z13BUcn?hC5Nwf4dy4_PumONggqeLZ;40`ZJc$#CnO)KR@x&NIv2vy71llvJNQJIi;B3KC|2^B%LUYDoKHt{7hBTfxu5IZo8{a z@d_^#f3)g0JULZ`n#;=NKQpZWac>44)g_js>WFRBM5co!aunrlxc732djKs6N#kz& zJX^yH>#O!d)qQFK?ms6xqdymGD$-afGc|4dM{QGn8s4D(SXTwg5 zqWVff7WY}q{QQ(O>X&uO0mU09yBEXCN@LIfW)Jr)4)K) zvp^kt16r_W2e(l+%Z@48nhRk9NF(Dr!HjvS#Wl{`c zO%+$4kba3m$mt`JXdLm<>rZS|PgXaW%s);V=hp=L{jS2%plaSYe^C^pI0G)t6mVX2^8vB%F}`f5qBx ziw-fp$k|Nfc+SQrFqNEbj^xACvUn6CCP4_%W3!^6tee%%pjQ+1FLSL9a&SQ0KoO{T z`QS|j=*#vcpe%uE-596_Mq47(gL$!W7e}`|v4>jm6){P81}m7Y^hp8w{GmVNbi2=y zqJU9RERP$0QNI$t_ER*y$xA&CeQDWeGvHyTOVBMg*%O2fechvE5bREB}Yo9+g| zO#)^Ak?+%vf#ScDaHgiWio6!4J~D@?YAS9C!;RvgN|!C%D1QCTlrH%fw;vz)K0&v$ zdC4SPPuP;PAIQIip z_a@GbN%1yjovWoK&6l5o*@pnI($y3j_%6Oeg(=GU&jy`oK1NYz-aFb5_4!y&$#aH{ zZY{pP94_MP%lU7hJS)Rj{iGeAOwuFNGbl51(@wUJm*ga$FMAR`Ff=JdfS?tLARO5g ze8|XGU|&=zO$Uj|w+&-ra!^mjQ-aEirqeR{QFbz@e{uJOm~M8nWRO9`5@5|1vk9}% zrh0w-g#_Zi^r9-SCttA^{aLUpp?+1lB2Dm*ycFkXl1#tSyJ9^Dk<19(&`E`;VCtP; z_+$#(?>2c>v&C&L-WN8;MLv4g^Yl&PR@fQngt!E6qH}4zjsAH@;G^TWUxS`rmcd!D zM<#5%g5iV$2wPk^spoc|cF!DgtNpWuj$jg-P6g{DeiDR(m%E84!QRuk>4QQ;wr4i@ zyFbui%(Hffq96UEbz6mcSm2zpV-+$nmS}bu2d_jqP~a zx_fJf=>d0xAiK^+_=d?c#|{PW-fe*A4OL>>q;pdk6D5 zfEn5LhhTnwvH4d3Gpg}pf%)z%YXxCM86zMwDHa3y4}^c^uAf!P#LQw)9s&6*mu<2G z;7+M3#B>p4ClAv+wJ$X6Gv=|Lj1HvZd4&ucaGhtcQ6W}s;c4&Ei|b-bUHrE@%ht}2 zvS}6yh%naRZY9zlU%fxpEXDCBKa1kZ!53gTf1BKc0yEXN315OgxrcxH;5YP(u#?NP@}iQ}=%1jQ@<3*3+)R z-iEk*3ntS?6Ji+I?~sLk>O~-&Y9ZycX~inb%Lr)P`X537Kly zdqrCb`Q68sD#6-dsQ-PLYe$v%8U)0={|C<@Zwy{?U{+KCwxuRV=3U3e|K<05DtIJn zZY1Tg?bKgw3a2wpY#sXJCz^Px_f)fQkA2XQbyN6*0mwg^ zApet36~)fe8Y#>E)cFGW=XCJ_-ouX?LC0y#Uk-SgVYK-j*h1o-Iv23wE|l*WAR>a z!KeE{@nHLPhKyq+VLbI!q?y_@HGud!go{L-qK23)e3*qiKUl8T^ZSX?trG23PD;7N z(Q*P;t6U>45SHk+KXAU8saR6kSIQb7vV-ZWFqaGFOr z!krzeuSkCA5__nefY^-@P6+l&eP97VA(y_tjSdiSPRjRfQuq-ocWcBiKEyCM*A(eX z7Xx-pX#w$8klMGcn9JxgCV!OJB9p0V(i~0HSD`EJG5C60h^n2aCsptc1fnaZ9B12A zi)lHnc=9Q=2#$pJ1lf7-CFAc+F^Fktoi(+2xr#WGFeMH`LUo+bBX(@J)imSrm6>=1 zH^$S+VNdWr!D~iP(_qQ`Q!cd#8lkz=wwwkMeR2(3F-?>rJ0frVS4G$|Xo2d&m^BKg z2LoSY6c=EaOOq&tfTC|G3xHJ%w4?nN_$^bNWok$lD_s+OQStzN2v&s;>6HtkOJ_52 z;X`pM^sZ3HuX`$m6#h^eKUAnr(R^ryYff-$eQRT%6&aDM#ouSaiShs)!DOvP+x#om zCouy@AU)f4QqKWpVn3sg!^<6L!^#&wCxR9Hgdi3--|-a}+iMf0H5D{%BeS4T461lW z!ik5FuFxwJ|AY-6PY?qNFc>jXZ}>CFneE2*s1ONs2;gob9PBqxNBZc#t0 z7J~a=n0AjiYQ+s1-Wm;Ch!J2S`glNQHxBm{>;(4jvH@8XvkXZ3<0sT>EOT0B?OX3tM+b%=#^NM|%ZE)_KOtBml<0TalA%EY|rEjSm* z8_N>E9mq+2+y4x0%V6HcBeVF>av6!~0|~B}HLU~P_1MJJvCS84b}!XqT7UorKjl!@ zv|N7@*Rvr(6VKCPrz1W^Fc|jpy!&hMS0USWmAQ_+-WGai~F#pgC za>aQ=rLWxUec8(xF%)tk#3%t|T9bk>WDXQCZ<~7Cl7;|G3TPqSNqrYR)PhKb;L_mj zcR?@ULLzNW{ZSV&PjQk}#^$CehFAp8EcPy&(wjA<`>+V}9_WzNH`53|XuskW__5~( zz_YuTJbyfOKE_ku_g83@6;K7*0-nHAKhPBZV6cME8&5qB$ahN-zYvhuH-$eKfP6m* zokS4PHNatoEl6anteh7@1WPV(rJk6)DX=wX!D#_NaGYkC`olaDENm!?@<6eH=h{Fh zfx^sWJ2E8UK-w${lPn6eGFALc&lmfj_cB@iGQa2GbO^OpvX(0PL@jNxI@svdvuO8g z;%=>1K=G-3@fF&XcVyDRrZD%ZQv3v>9g-3%Ok4_=t1@_TSn5z6qduZL96O!>fFXE~ z1r`QHt4LK%7GXgHnHpx)gLGajN$Bu%&Wjb`ff(SV9fpVaBawQyKh?m44lNFg_#RrD zCNEY;3^r+&!w%I6L{IxX&H|`tGdXN(@6vuK5-cvazU`rJBv}6M|5J3Rw*1RmA= zobZUCex~P({m*;z5Y!F>M4zBz@o zJ_-9wotEgCuAG}Il?Ieyn-K|@rU;QkwksCHP=kLCc*1A~;-x(CcxT1r2yC%2-H?Xm z-Bqm)8C&uo2w!Teej?csacSnY1-p!NjoigVi;ZP_*Nn$(7J{Ykarp;uIPZp4r!}LL zDq(R*6?XRd(l1fn+jqp#l`sIqoEG#!(tlq}Yi3SE$=I>*$kQk&CG=%U%GM+x5!M?5 z+b$^sovFVXy!=!BoJ^PJT0fqi$uCrFy*d}%D*zDB#j32^6kn+640tvKjbLi5=phMX zQ&D07ySa+flwdx4IfaD;VbZ zP?bphx8(!v1iXXvn{TVBH7k^5XtfvHiOnkL{ zdKg!$ewe4B#eYIKz(Hh`$?H_vUnJ_w>r|hw?}94Wr37R>?nDj9 zto3ipzhEc2GY2wKaSb94KU3_L{GeOcc6Jf*5(((Sr51Z$f7db&+hR6I*lt0H5{5bl z(w6-IG9}9NJ1ogmLKFw-hGQKR2(%~bdU!{G%<`6%ZD7R*uH&$ zD%7aX*%U)3n(F?(Z&G*9?m99ufa4GR{-a4<)d%@0zJXWM-^iVrOH=GE>I|euyH6@ty{r+e zl(#bQ7*#Bq8@*t6J^loot+@qiM;jdr@ke*F@WQqZ*zU< zJHSNwlk125sGj>S1>#J0XUaJ#stO)zBbR>7=%qxyDhFF3>LB2z`b(kTE(RYIvmz>= zz5MK?2AWEY1-Kg(652#44KJ#yI1vF{?@qDNNexp=0zThU5=>8pxjbP}&@{U?T&>gX z(kaYYM|6rYLnb*iEOoam2Ggn2lhf1>?M}*4$KqpnL46W-vNMhI#UYRF9Pv-|jF?FC zn-ETVsFHK&Jk(RWzf}}aVLh|PPtfRpX=qSnhibFO%ftgathv!1lT#vRX|Ck_s^eYR z7m|(I95yOnm)3UNX9Or1lpcVB(Uc7;>_0F~f;3K<%Em39S+~SGmlEVb`$$&3wFFSe z){mS126h`(tack1^XL@B$9*+Z>v+---o)fd+n}`+c4S6vCsV}j^W9lKaPWO!Pl~6c zG>%FBG&US-@ol6p!J9YuHkK3+qUw#PEtHi5aPVzp@b+z_V_YdXl|y5>Qb?-WnHlqK zbO*Kded@W~k+#+_N_ygT3YPZdDd@yrR?5p2YSX8&tw6Io!kQ4WC54yHJA}E!?~2Y+H-tGUF5)o^~L)l zAH|l7r4ZTz&-G+isbA;5o9m~Cjr-DzFBS`#)xU~Ko*!|qzM>Vp?s;#GzZhR8sTf~x z8qnK)Ej0-t>8k@zA6B&$^8FkBzwE@V_G_P8vbkEe4yDxtW7`gA!=9b&>EaZ=tlrZV z-ugLcvnYj34&|Gx{j!KR|!hapPP<4HBiQBUw&BwD#_S4s^rN~y8 z^H!E!*+z0?6ipKD_I0aVTI^g=t#kt6sdA-gCx^&`4nhbBPhWb@TmSLVq+VC=C zONXql*&vU!U>Hy(4GeKyG>Z|cy_WY*5HaE309LcjJ-DtqA%?v86x)NG+=1R_adDRj zVYg@9Ijb*41|XZc1ROqdc0#l`1`_$h=_9=mtS)K0;BIY#+b+;Ghc*f^t)Ic&fhV{=iJ_=a&%&-TPGOBLVq|%#@yj z(>frd-gzIgfpqVh@M7{fW*HDPB2r%#KKHjp>Z_DyI3h=BzV>NTbD8(*}~Ku zP{$?!e)sCFFtaowYaawg55zl^z4O@C3`uB}-a+)^6>x^F!*7FV=#F&BAvvl5#zpQy z9W~#rwWIH<@#1gki;#-AFMi2hse?V3G(YB^Q_I2Gb%!%FyXA74c?FLDutMVg!xF)No-v@Jp=Ri%qq$oZu!JcA zWFfRdeW)}K{w8&G`lX~AKF5E|-ezkw)RJ`=t(OmQTq@VRV!Gv}iN0TLjq!(xz6bi4% z>q)Qjh6=)|E*)+|LeZ6=43oPw=wPVer3z-WD&V+D(_5aPCRgdFRRO;Ohz?HVd#EOi zL*c-BAsRccQEjl2*GLJ#Q0zSAPI30S5J2>N0QW}?4!S4YTquC9K|qFR>s#QxP@roR zXfwBvTn4RHxPi2)Cm<}#S#&_Ol7%vybrSks`wy#9vXiYz&<|2TRpByexJcuspu#%p}bVc?Wr|Dtlud27oxh~rB1 zlQS;nV5P*>fN=3fv&9vltAeY(xmQ2LvKh}93@BNYymHb{R{^%E{& zp2hfhrVdH^>(4;&S+D#)jB0(zcGTPcC!}0|ggPJ*Cx@y%NTo1@gw5;Clg7u?TgEI73l6!U3F{Rj=tGSTPEhT-$xX$c zJ{Pct1Wo+}dkwq0Q(fsguq1NRc~DDbFO0=cXfFEocRzPuVxzro*mK|V`LTO;|96bv zgB9-{zb6#%edG6tQNKBUzkXBwJLC5++EjmJbWaGP`p{Dv(9j*mF#)`^la*zE_K&as z$hRNed;Ld<$X>(k+u&06UH_5abVzq!Ov@AKs&~M)paQQiMKL{9KN&2jePfhz^%0yFJtSVMl=m82CYs`qCn3GZ2!g z01*<7P-3sFKFib+11&NkUZeifN(unVlgQHg=xsoEieIq>5j^!A2rk5EYh&__F@s7! zp8jm8w2>cLxp^CZ9$-ux7Tm87P0sMcF`=_P8R{_ZkSYYiui5m%SytcGjUZW8-{wmm zF5~>yJyJQmIQyuU#EqB7yIXY!k7WF<_jIIFsqY|p&Jc@zF-j?P7Ocovbsx2U0Mde2aE$bSwf$TACh73{!vkWpmdi%_yceRcl17$h#&5 zlP;m?{)yE?&YWf^>I4=q*w#9M^W#gId5liIPGXLD1*VUySn602m!39OYBiBd?PU|| zhUf?v2M_*Oj#E$5G|}gywhxTTL)r?}2f5G=EfuS%ye#5;;q*iXG3=pmTPp1GQd}z3 zvRGq|HIzkiEqrX%3GO0&@RAhoiV7u2S2}(FNO7cO2TMgpbjpxe3CffWUa+1K(^>kY zAtibgTVnQ(i>YXxq#kmd4S2M~)~;E?!c14OFtcNDTLow9m5oK!&yHnP7}BDKyU;j4Dnzkn`L0f4VkV?n*lOWv<9j` z29?JG$fN?^v7i#)V~OD#B(8)h=?YYQPL^|CW=+(4Na6+j*J|j-J+Ze`19Nyu{gze^ z#0rrQ+Ne8Z)^A|Jgm;t%ipH8na1? z_=R0UDX7CMU`-x-n$-(n#Utm{T6Ju)-UZ8L2G`aPOd~30q^1!3s`2n#GI=p4hVDi# zZjmwN)~5TG3g^8iu^}rS$7Lx8PGOM8s1+8fykT<(_jwMwnhN+-7V3l+s;TV6aG}b) z9?QZ)r8eACT&S7S6KJ85K}`$QKU%0AdM2L=Ez}||RA(|6F4U|^bB^}_D9Srrj2{Um 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

x3t(jJh}DeQ*3O2GCFncpqUxFk7= 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