From d6e5b35dcf27d88eef07532ce81b713435ce1980 Mon Sep 17 00:00:00 2001 From: Max Gramser Date: Wed, 16 Sep 2026 16:41:10 +0200 Subject: [PATCH] Add a card for blinds and curtains, and fix what Studio 1 showed after 0.2.57 (0.2.58) A tap on a cover now opens a card like Home Assistant's own, in the style of the climate and vacuum cards: a tall position slider on which the blind hangs from the top, a tilt slider over slats for venetian blinds, and open, stop and close keys. The key of the direction the cover moves is filled; a key that cannot move it further is disabled and stays out of the keys the card's tick enables. Sliders show their value while dragged and send it on release. The card offers only what supported_features allows. A battery-powered blind shows its battery at the top right: the app sends the device's battery sensor as the extra the vacuum card uses, and adds current_tilt_position to the attributes. Checking Studio 1 after its update to firmware 0.2.49 found that a setting number equal to its initial state 0 (night brightness 0 %) was never published, so Home Assistant kept it unknown and ESP Screens could not change it; apply_screen_settings now publishes a number without a state. The app also took "unavailable" for the device name during the restart and wrote sensor.esp_screens_unavailable; diagnostics ignore unknown and unavailable. The editor redraws its tiles, top bar and entity list when the live stream opened a screen before the first full inventory (a busy add-on), and loads app.js and style.css by content stamp after Safari kept an old script. Checked with 254 Python and 14 C++ tests, generate_packages --check, ESP32 builds of both profiles, and 20 API checks of the card on host builds of both boards. Firmware 0.2.50. Co-Authored-By: Claude Opus 5 --- README.md | 14 +- components/smart_display/runtime_model.h | 4 +- components/smart_display/runtime_tiles.h | 169 ++++++++++++++++++++++- components/smart_display/tile_controls.h | 59 +++++++- docs/RELEASING.md | 31 +++++ docs/TEST_RESULTS_0258.md | 66 +++++++++ docs/images/cyd-blind.png | Bin 0 -> 55858 bytes docs/images/guition-blind.png | Bin 0 -> 91500 bytes docs/images/guition-curtains.png | Bin 0 -> 66811 bytes docs/images/guition-garage.png | Bin 0 -> 57181 bytes guition-4848s040.yaml | 21 +-- home-like-2432s028.yaml | 21 +-- packages/cyd.yaml | 21 +-- packages/guition.yaml | 21 +-- screen_manager/CHANGELOG.md | 11 ++ screen_manager/app/core.py | 39 ++++-- screen_manager/app/server.py | 24 ++-- screen_manager/app/static/app.js | 4 + screen_manager/config.yaml | 2 +- tests/test_cover_card.py | 138 ++++++++++++++++++ tests/test_editor_startup.py | 38 +++++ tests/test_page_assets.py | 43 ++++++ tests/test_screen_owned_settings.py | 7 +- tests/test_tile_controls.cpp | 32 +++++ 24 files changed, 696 insertions(+), 69 deletions(-) create mode 100644 docs/TEST_RESULTS_0258.md create mode 100644 docs/images/cyd-blind.png create mode 100644 docs/images/guition-blind.png create mode 100644 docs/images/guition-curtains.png create mode 100644 docs/images/guition-garage.png create mode 100644 tests/test_cover_card.py create mode 100644 tests/test_editor_startup.py create mode 100644 tests/test_page_assets.py diff --git a/README.md b/README.md index e838649..e08ade0 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,10 @@ The firmware and built-in CLI are tested with **ESPHome 2026.6.2**. uses are shown (app 0.2.46 / firmware 0.2.39). Scenes, scripts, and buttons show when they last ran. A tile that's waiting on Home Assistant shows a small spinner on a light overlay. +- **Cover card** for blinds, curtains, shutters, and garage doors, like Home Assistant's own: + a tall position slider on which the blind hangs from the top, a tilt slider over slats for + venetian blinds, open, stop, and close, and the battery of a battery-powered blind + (such as Motionblinds). A cover shows only what it supports (app 0.2.58 / firmware 0.2.50). - **Top bar per screen** (firmware 0.2.32+): the name on the left, up to six items of your choice on the right: the time, an analog clock, the date, or an entity from Home Assistant with an icon, such as temperature, humidity, power usage, a door @@ -120,8 +124,14 @@ The firmware and built-in CLI are tested with **ESPHome 2026.6.2**. Curtains with open, stop and close, a kitchen timer counting down, a scene and the sun path

- The vacuum card on the CYD: state, battery and charging, clean and dock, the cleaning mode, suction and water - The climate card on the CYD: the target temperature with big minus and plus keys and one row of mode keys + Cover card for a venetian blind: its battery, the position slider with the blind hanging from the top, the tilt slider over slats, and open, stop and close + Cover card for curtains: the position slider and the sideways open, stop and close keys + Cover card for a garage door that only opens and closes: its icon and the open, stop and close keys, close disabled while it is closed +

+

+ The vacuum card on the CYD: state, battery and charging, clean and dock, the cleaning mode, suction and water + The climate card on the CYD: the target temperature with big minus and plus keys and one row of mode keys + The cover card on the CYD: the position and tilt sliders with their values beside them, the battery, and open, stop and close

Features depend on the capabilities Home Assistant reports for an entity. diff --git a/components/smart_display/runtime_model.h b/components/smart_display/runtime_model.h index 1f2fc2e..2966248 100644 --- a/components/smart_display/runtime_model.h +++ b/components/smart_display/runtime_model.h @@ -77,13 +77,15 @@ struct Extra { std::vector choices; std::string room; bool charging = false; + // Cover (firmware 0.2.50+): the tilt of its slats, 0 closed to 100 open. + float tilt = NAN; Choice *choice(char kind) { for (auto &c : choices) if (c.kind == kind) return &c; return nullptr; } bool empty() const { return hvac_modes.empty() && fan_modes.empty() && swing_modes.empty() && fan_mode.empty() && swing_mode.empty() && hvac_action.empty() && options.empty() && forecast.empty() && hours.empty() && std::isnan(wind) && std::isnan(feels) && wind_unit.empty() && sunrise.empty() && sunset.empty() && duration.empty() && remaining.empty() && !timer_end && media_title.empty() && fan_speeds.empty() && fan_speed.empty() && - choices.empty() && room.empty() && !charging; + choices.empty() && room.empty() && !charging && std::isnan(tilt); } }; // The Extra of a tile on the heap, copied along with the tile like an ordinary member. diff --git a/components/smart_display/runtime_tiles.h b/components/smart_display/runtime_tiles.h index e1f940c..a84eb7e 100644 --- a/components/smart_display/runtime_tiles.h +++ b/components/smart_display/runtime_tiles.h @@ -65,6 +65,8 @@ inline const char *weather_icon(const std::string &condition); inline const char *weather_text(const std::string &condition); inline std::string timer_text(const Tile &t); inline std::string last_run_text(uint32_t epoch); +inline const char *icon_for(const Tile &tile); +inline void label(lv_obj_t *obj, const std::string &text); inline int active_index = -1; inline uint32_t last_received = 0; // Seconds between the manager's full repeats; every layout message declares it (app @@ -380,6 +382,7 @@ inline std::string receive(const std::string &payload) { tile.brightness = number(a["brightness"]); tile.percentage = number(a["percentage"]); tile.position = number(a["current_position"]); + next.tilt = number(a["current_tilt_position"]); tile.current = number(a["current_temperature"]); tile.target = number(a["temperature"]); tile.humidity = number(a["current_humidity"]); @@ -581,6 +584,8 @@ inline lv_obj_t *detail_button(const char *text,int x,int y,int width,int height if(cmd==21)action("media_player.media_previous_track",t.entity); if(cmd==22)action("media_player.media_next_track",t.entity); if(cmd>=30 && cmd<38 && cmd-30<(int)t.extra().options.size())action(t.domain()+".select_option",t.entity,"option",t.extra().options[cmd-30]); + // Cover keys: 70 + tile_controls::Command (open, stop, close and the tilt keys). + if(cmd>=70 && cmd<130){auto a=tile_controls::key_action(t,cmd-70);if(a.valid()&&t.domain()=="cover")action(a.service,t.entity,a.key,a.value);} if(cmd==40)action(t.state=="active"?"timer.pause":"timer.start",t.entity); if(cmd==41)action("timer.cancel",t.entity); },LV_EVENT_SHORT_CLICKED,(void*)(intptr_t)command); @@ -880,6 +885,159 @@ inline void render_vacuum_detail(Tile &t,bool large,int width,int height,int pad detail_text(detail_root,smart?"The robot chooses suction and water":"Suction and water as set per room",x,y,w,text,LV_TEXT_ALIGN_CENTER,0x6B6B6B); } } +// ---- Cover card (firmware 0.2.50+): Home Assistant's cover dialog in the style of the vacuum and climate cards ---- +// A tall slider per movement: the position as a blind hanging from the top (a fully open cover shows none of it) +// and the tilt as a handle over slats, each with its value below, like Home Assistant's own sliders. Open, stop +// and close as a row of pill keys under them; the key of the direction the cover moves is filled. A slider +// sends its value when the finger lifts, and shows it while it moves. +inline constexpr uint32_t COVER_ACCENT = 0x926BC7, COVER_TRACK = 0xEFE8F7, COVER_SLATS = 0xDDD0EF; +inline lv_obj_t *cover_values[2]{}; +inline std::string cover_status_line(const Tile &t){return t.available()?tile_controls::cover_card_status(t):"Unavailable";} +inline void cover_slider_event(lv_event_t *e){ + auto *slider=lv_event_get_target_obj(e);auto code=lv_event_get_code(e); + const bool tilt=(uintptr_t)lv_event_get_user_data(e)==1; + if(code==LV_EVENT_VALUE_CHANGED){ + // The range reaches past 0 and 1000 only to keep the handle inside the track. + int raw=lv_slider_get_value(slider); + if(raw<0||raw>1000){raw=std::clamp(raw,0,1000);lv_slider_set_value(slider,raw,LV_ANIM_OFF);} + int percent=(int)std::lround(raw/10.0f); + if(auto *value=cover_values[tilt?1:0])label(value,std::to_string(tilt?percent:100-percent)+"%"); + return; + } + if(code!=LV_EVENT_RELEASED||detail_index>=model.count)return; + auto &t=model.tiles[detail_index]; + if(!fresh()||!t.available()||!cyd::touch_guard.accept_slider(esphome::millis(),390+(tilt?1:0)))return; + int percent=(int)std::lround(std::clamp(lv_slider_get_value(slider),0,1000)/10.0f); + if(tilt)action("cover.set_cover_tilt_position",t.entity,"tilt_position",std::to_string(percent)); + else action("cover.set_cover_position",t.entity,"position",std::to_string(100-percent)); +} +// One slider. The position fills from the top by how far the cover is closed; the tilt has no fill and its +// handle moves over slats drawn behind it, thicker towards the closed end as in Home Assistant. +inline lv_obj_t *cover_slider(lv_obj_t *parent,int x,int y,int w,int h,float value,bool tilt){ + int radius=std::max(8,w/7),handle_h=std::max(4,w/18),handle_w=tilt?w*3/5:w*2/5,inset=std::max(6,w/9); + if(tilt){ + auto *slats=detail_shape(parent,x,y,w,h,COVER_TRACK,radius); + const int count=10,pitch=(h-2*radius/2)/count; + for(int i=0;i &keys,unsigned count,int x,int y,int w,int h,int gap,const lv_font_t *icons){ + int key_w=count?(w-gap*((int)count-1))/(int)count:0; + for(unsigned i=0;i keys,tilt_keys; + unsigned key_count=card.keys?tile_controls::cover_keys(t,keys):0,tilt_count=card.tilt_keys?tile_controls::cover_tilt_keys(t,tilt_keys):0; + int rows=(key_count?1:0)+(tilt_count?1:0); + int keys_y=bottom-rows*key_h-(rows>1?gap:0),top=large?108:72; + int box_h=keys_y-gap-top; + if(card.position||card.tilt){ + detail_card(pad,top,inner,box_h); + struct Part{bool tilt;float value;const char *caption;}; + Part parts[2];int n=0; + if(card.position)parts[n++]={false,t.position,"Position"}; + if(card.tilt)parts[n++]={true,t.extra().tilt,"Tilt"}; + int value_h=lv_font_get_line_height(big),caption_h=lv_font_get_line_height(text); + auto percent=[](float value){return std::isfinite(value)?std::to_string((int)std::lround(std::clamp(value,0.0f,100.0f)))+"%":std::string("--");}; + if(large){ + // Columns: the slider with its value and name below. + int edge=16,slider_h=box_h-2*edge-value_h-caption_h+4,slider_w=n==2?120:140,column_gap=48; + int x=pad+(inner-(n*slider_w+(n-1)*column_gap))/2; + for(int i=0;i=model.count)return;detail_index=index;auto &t=model.tiles[index]; if(!detail_font)detail_font=lv_obj_get_style_text_font(widgets[0].title,LV_PART_MAIN); @@ -895,8 +1053,8 @@ inline void show_detail(unsigned index){ const lv_font_t *title_font=watch_font?watch_font:detail_font; auto *heading=detail_label(detail_root,t.name,bar_x+bar+8,bar_y+(bar-lv_font_get_line_height(title_font))/2,width-2*(bar_x+bar+8)); lv_obj_set_style_text_font(heading,title_font,0);lv_obj_set_height(heading,lv_font_get_line_height(title_font));lv_obj_set_style_text_align(heading,LV_TEXT_ALIGN_CENTER,0); - std::string state=detail_state(t); auto d=t.domain(); + std::string state=d=="cover"?cover_status_line(t):detail_state(t); // The vacuum card draws its own state (hero or status row) with the battery beside it. if(d!="vacuum"){detail_status=detail_label(detail_root,state+(t.unit.empty()?"":" "+t.unit),pad,large?80:50,width-2*pad);lv_obj_set_style_text_align(detail_status,LV_TEXT_ALIGN_CENTER,0);lv_obj_set_style_text_color(detail_status,lv_color_hex(0x616161),0);} if(t.is_switch()){ @@ -922,6 +1080,9 @@ inline void show_detail(unsigned index){ detail_actions[detail_action_count++]=detail_switch; }else if(d=="vacuum"){ render_vacuum_detail(t,large,width,height,pad); + }else if(d=="cover"){ + if(detail_status && control_font){lv_obj_set_style_text_font(detail_status,control_font,0);lv_obj_set_height(detail_status,lv_font_get_line_height(control_font));} + render_cover_detail(t,large,width,height,pad); }else if(d=="sensor"){ float minimum=INFINITY,maximum=-INFINITY;for(float value:t.history)if(t.has_history&&std::isfinite(value)){minimum=std::min(minimum,value);maximum=std::max(maximum,value);} if(!std::isfinite(minimum)){detail_label(detail_root,"No numeric HA history",pad,top,width-2*pad);return;} @@ -1084,9 +1245,9 @@ inline void event(lv_event_t *event) { if(d=="climate" && tile.tap=="toggle" && code==LV_EVENT_SHORT_CLICKED){action("climate.toggle",tile.entity);return;} // A short tap runs or pauses the timer; holding opens the card with a cancel button. if(d=="timer" && !open){action(tile.state=="active"?"timer.pause":"timer.start",tile.entity);return;} - if(d=="sensor" || d=="binary_sensor" || d=="weather" || d=="number" || d=="input_number" || d=="select" || d=="input_select" || d=="media_player" || d=="vacuum" || d=="sun" || d=="person" || d=="timer") { tile.begin(esphome::millis(),true); active_index=w.index; show_detail(w.index); return; } + if(d=="sensor" || d=="binary_sensor" || d=="weather" || d=="number" || d=="input_number" || d=="select" || d=="input_select" || d=="media_player" || d=="vacuum" || d=="cover" || d=="sun" || d=="person" || d=="timer") { tile.begin(esphome::millis(),true); active_index=w.index; show_detail(w.index); return; } if (open) { - if (d == "light" || d == "climate" || d == "vacuum" || d == "fan" || d == "cover") { + if (d == "light" || d == "climate" || d == "vacuum" || d == "fan") { active_index = w.index; tile.begin(esphome::millis(),true); if (detail) detail(tile); @@ -2318,7 +2479,7 @@ inline void tick() { if(detail_root && !lv_obj_has_flag(detail_root,LV_OBJ_FLAG_HIDDEN) && detail_index &out) { + unsigned n = 0; + const uint32_t f = t.supported ? t.supported : feature::COVER_OPEN | feature::COVER_STOP | feature::COVER_CLOSE; + bool sideways = sideways_cover(t.device_class); + bool fully_open = std::isfinite(t.position) ? t.position >= 99.5f : t.state == "open"; + bool fully_closed = std::isfinite(t.position) ? t.position <= 0.5f : t.state == "closed"; + if (f & feature::COVER_OPEN) out[n++] = Key{sideways ? glyph::EXPAND : glyph::UP, COVER_OPEN, "", t.state == "opening", fully_open && t.state != "closing"}; + if (f & feature::COVER_STOP) out[n++] = Key{glyph::STOP, COVER_STOP, "", false, false}; + if (f & feature::COVER_CLOSE) out[n++] = Key{sideways ? glyph::COLLAPSE : glyph::DOWN, COVER_CLOSE, "", t.state == "closing", fully_closed && t.state != "opening"}; + return n; +} +inline unsigned cover_tilt_keys(const Tile &t, std::array &out) { + unsigned n = 0; + const float tilt = t.extra().tilt; + if (t.supported & feature::COVER_OPEN_TILT) out[n++] = Key{glyph::BLINDS_OPEN, COVER_OPEN_TILT, "", false, std::isfinite(tilt) && tilt >= 99.5f}; + if (t.supported & feature::COVER_STOP_TILT) out[n++] = Key{glyph::STOP, COVER_STOP_TILT, "", false, false}; + if (t.supported & feature::COVER_CLOSE_TILT) out[n++] = Key{glyph::BLINDS, COVER_CLOSE_TILT, "", false, std::isfinite(tilt) && tilt <= 0.5f}; + return n; +} // The row of up to three pill keys for a key-row panel; returns how many. inline unsigned keys_for(const Tile &t, std::array &out) { auto d = t.domain(); auto c = panel_kind(t); unsigned n = 0; @@ -161,12 +207,8 @@ inline unsigned keys_for(const Tile &t, std::array &out) { if (n < out.size()) out[n++] = Key{icon, command, arg, checked, disabled}; }; if (c == "buttons" && d == "cover") { - bool sideways = sideways_cover(t.device_class); - bool fully_open = std::isfinite(t.position) ? t.position >= 99.5f : t.state == "open"; - bool fully_closed = std::isfinite(t.position) ? t.position <= 0.5f : t.state == "closed"; - if (t.supported & feature::COVER_OPEN) add(sideways ? glyph::EXPAND : glyph::UP, COVER_OPEN, fully_open && t.state != "closing"); - if (t.supported & feature::COVER_STOP) add(glyph::STOP, COVER_STOP); - if (t.supported & feature::COVER_CLOSE) add(sideways ? glyph::COLLAPSE : glyph::DOWN, COVER_CLOSE, fully_closed && t.state != "opening"); + // The tile keys are the card's keys, without the direction a moving cover shows there. + if (t.supported) for (unsigned i = 0, count = cover_keys(t, out); i < count; ++i) { out[i].checked = false; ++n; } } else if (c == "buttons" && d == "vacuum") { bool cleaning = t.state == "cleaning"; if (cleaning && (t.supported & feature::VACUUM_PAUSE)) add(glyph::PAUSE, VACUUM_PAUSE); @@ -211,6 +253,9 @@ inline Action key_action(const Tile &t, int command, const std::string &arg = "" case COVER_OPEN: return {"cover.open_cover", "", ""}; case COVER_STOP: return {"cover.stop_cover", "", ""}; case COVER_CLOSE: return {"cover.close_cover", "", ""}; + case COVER_OPEN_TILT: return {"cover.open_cover_tilt", "", ""}; + case COVER_STOP_TILT: return {"cover.stop_cover_tilt", "", ""}; + case COVER_CLOSE_TILT: return {"cover.close_cover_tilt", "", ""}; case VACUUM_START: return {(t.supported & feature::VACUUM_START) ? "vacuum.start" : "vacuum.turn_on", "", ""}; case VACUUM_PAUSE: return {"vacuum.pause", "", ""}; case VACUUM_STOP: return {(t.supported & feature::VACUUM_STOP) ? "vacuum.stop" : "vacuum.turn_off", "", ""}; diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 657e9a3..ba07219 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -176,6 +176,37 @@ icons sit off-center in the browser); run `generate_packages.py` afterward. The `MDI_GLYPH_*` substitutions are retired: `TILEn_ICON` in manual profiles must come from the set. No changed preferences or keys. +### Compatibility 0.2.58 / firmware 0.2.50 + +App, both board profiles and `components/smart_display`. Storage, tile protocol, preferences and keys are +unchanged; the state message gains one attribute and one extra key that older firmware ignores. + +- Cover card: `runtime_tiles::event` sends a tap on a cover to `show_detail`, like the other runtime cards, instead + of `detail()` (the board's value overlay in `cover_position` mode, which stays in the profiles for now). The + `preview_runtime_card` action of both profiles does the same. `render_cover_detail` draws what + `tile_controls::cover_card` offers from `supported_features` (position 4, tilt position 128, open/close/stop + 1/2/8, tilt open/close/stop 16/32/64; unknown features get the three keys): a vertical `lv_slider` per movement + in a white card, its value and name below it (beside it on the CYD), and a row of pill keys. The position + slider's range is reversed (1000 down to a stub below 0) so the fill hangs from the top by how far the cover is + closed; the tilt slider has a transparent fill, a margin past both ends for its handle, and slats drawn behind + it. Track and fill share one radius, so neither draws into a layer. A slider sends `cover.set_cover_position` or + `cover.set_cover_tilt_position` on RELEASED after `touch_guard.accept_slider`. Keys use detail commands + 70 + `tile_controls::Command` through `key_action`; a disabled key is left out of `detail_actions`, so the + card's second tick does not enable it again. The tick keeps `cover_status_line` ("Open · 60% · Tilt 40%"). +- `Extra::tilt` holds `current_tilt_position`; the app adds it to `ATTRS`. A cover's device battery travels as + the extra `bat` (and `chg`) the vacuum card introduced: `core.device_power` and `cover_related` pick the + device's `battery` and `battery_charging` sensors, `Manager.related_entities` watches them, and `tile_message` + passes the device entries for covers too. The card draws the battery at the top right with `vacuum_battery`. +- `apply_screen_settings` publishes a setting number that has no state yet: `number::Number::state` starts at + 0, so a standby or night brightness of 0 never differed from it and Home Assistant kept "unknown". Seen on + Studio 1 (night brightness) after updating to 0.2.49. +- `discover_screens` ignores `unknown` and `unavailable` in the diagnostic sensors: the device name pattern + accepted "unavailable" while a screen restarted, and `publish_layouts` wrote `sensor.esp_screens_unavailable`. +- Editor: the first full inventory redraws the top bar, tiles and entity list when the live stream opened a + screen before the catalogue arrived. `index.html` is served with `?v=` on `static/app.js` and + `static/style.css`. The responses already carried `Cache-Control: no-store`, yet Safari showed an old script + with the new page after the update to 0.2.57. + ### Compatibility 0.2.57 / firmware 0.2.49 App, both board profiles and `components/smart_display`. Storage version 1, tile protocol `v: 1`, preference diff --git a/docs/TEST_RESULTS_0258.md b/docs/TEST_RESULTS_0258.md new file mode 100644 index 0000000..8e200f1 --- /dev/null +++ b/docs/TEST_RESULTS_0258.md @@ -0,0 +1,66 @@ +# Test results app 0.2.58 / firmware 0.2.50 (2026-09-16) + +Max asked for a detail card for blinds (his three Motionblinds venetian blinds report every cover feature and a +battery sensor on their device) in the style of the climate and vacuum cards. Checking Studio 1 twenty minutes +after its update to 0.2.49 found two bugs, and opening ESP Screens during that update a third. See CHANGELOG +0.2.58 and the compatibility note in docs/RELEASING.md. + +## Automated + +- Python (`.venv-portal`): 254 tests OK. New: `tests/test_cover_card.py` (the tilt and the device battery in + the state message, the battery sensor watched, no layout sensor or node name "unavailable" while a screen + restarts, the tap and preview routing to the cover card, commits on release, the tick's status line, + disabled keys kept out of the tick, one radius for track and fill, every setting number published when it + has no state), `tests/test_editor_startup.py` (the first full inventory redraws the tiles, top bar and + entity list) and `tests/test_page_assets.py` (script and styles by content stamp). +- C++ (`clang++ -std=c++17 -Wall -Wextra -Werror -I. -I components/smart_display`): 14/14 PASS. + `test_tile_controls` adds the cover card: what a venetian blind (255), curtains (15), a garage door (11), + slats that tilt without a position (51) and a cover without features get, the status line with the tilt, keys filled while + moving and disabled at the ends, and the tilt actions. +- `generate_packages.py --check` green. + +## Builds (ESPHome 2026.6.2) + +Check profiles with the generated packages and local components, the same as for 0.2.57. + +| Profile | RAM | Flash | vs 0.2.57 | +|---|---|---|---| +| CYD | 23.4% (76,548 B) | 76.9% (1,411,823 B) | +8 B RAM, +5,596 B flash | +| Guition | 24.4% (79,924 B) | 18.6% (1,515,263 B) | +8 B RAM, +4,708 B flash | + +The first ESP32 build failed on `std::clamp(lv_slider_get_value(...), 0, 1000)`: `int32_t` is a `long` on the +ESP32 toolchain, so the host builds cannot catch this. Fixed with `std::clamp` before any release. + +## Firmware on the Mac (host builds, driven over the ESPHome API) + +- Cover card, Guition 20/20 and CYD 20/20 (the CYD run three times): a venetian blind with the demo home's + state opens its card with "Open · 60% · Tilt 40%", both sliders and three keys; the position slider shows + 75% while it moves and sends `cover.set_cover_position` 75 on release, the tilt slider + `cover.set_cover_tilt_position` 80; open, stop and close send their actions; a closing state at 30 % redraws + the card with the close key filled, and the tick keeps the status line; fully open disables the open key + after the tick and a tap on it sends nothing; unavailable disables sliders and keys; curtains get one slider, + a garage door only keys with close disabled while closed, and its open key works; a tap on the blind's tile + opens the card; no errors in the log. +- A timing flake in the first CYD run (a key pressed 1.2 s after Home Assistant's answer, while the card's + once-a-second tick still showed the keys disabled) was the test waiting too briefly; the card behaves as the + vacuum card does. +- Renders of the blind, curtains and garage door cards on both boards; the README shows them. + +## Studio 1 after updating to 0.2.57 / firmware 0.2.49 (16:20, read-only through Home Assistant) + +- The update succeeded ("Updated to firmware 0.2.49"): one restart at 16:10, back online within seconds on the + same IP address, "Synced" within a second of reconnecting, no repairs, no add-on warnings; Home Assistant + lists `esphome.studio_1_screen_message` as answering. +- Every setting entity had its value except `number.studio_1_night_brightness` ("unknown", so the panel showed + it as unknown and refused changes): the number fix above. +- `sensor.esp_screens_unavailable` next to `sensor.esp_screens_studio_1`, written at the restart: the node fix + above. Home Assistant drops the stale sensor at its next restart. +- An empty Screen settings panel in Safari was an old cached script (the served files matched the release); + the page now loads its files by content stamp. + +## Not tested / for the owner + +- Real hardware and real blinds: the Motionblinds were unavailable during this work. On Studio 1 after the + update: open a blind's card, drag both sliders and use the keys, check the battery, and that + `number.studio_1_night_brightness` has a value in Home Assistant. +- Free heap on a CYD with the cover card open. diff --git a/docs/images/cyd-blind.png b/docs/images/cyd-blind.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2f29551f1e7adce73a514439281170140d0581 GIT binary patch literal 55858 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�rq_NAv$FrneMI9Jo&WAb!Ub8M_( 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 JB000b{{eRoXzu_3 literal 0 HcmV?d00001 diff --git a/docs/images/guition-blind.png b/docs/images/guition-blind.png new file mode 100644 index 0000000000000000000000000000000000000000..da90dff20a87935c49a15336aebb6f3e3dddcc0d GIT binary patch literal 91500 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

ng01)nL5d5n3-V zw@^K+R<1M9s>b`dH}%^7?^G8_8JQ0{0{8QE^7IPFYI^(o=|)RTXQHo7TDZBz83^X` zQ7j$=r>&Sa2c@ef2~Y20NvrPl&APL3aQyUcNPhd)!oq@NP%P7^{f`XvTPU;xNe(tP z*UjJRa);};YiepdRVq*`zYn&T4*S*)X}TZ1)+#mSze`0<2E(XWZ-)4V&0sw83@0aI!1iA0XslpR-g3yMG=8yOpC0r1^KH3RI`ye^zs7jtIV!##gW?2_A}rqUZUWMl!)1gVgOGl;||fB&O78z0Gd-Idt2-o+&yJ z@cMZfgNk!)s(tm>@820P0h=c?1O6OSRaJ$h&=O?2n4rRVoWc=h9T33QQ^CT{ZsqJu zlhotY-grkbNVC2vE{@*X#>Q)CcWNpmI{KuZzJ9lLrLPPJFE8&$-wm#Z4@zo=`#3&a06c7tR=~jm;z#4-Q<+Gg z4~g48L32Lqeoa*r#G$ScC6`5MOo>5Fs z+v)TjD?_cw)hOwquMhc8tVk5=Eh$e7&d3$LfzL}96&0Cefk(thS8?W>;I z{1JOobFzqT%+-NYiNoo9BpZ7qx4R|fN|}2W`xnN#I-feBR*yfzqA0v#QQ?@i>~Y69 zk;HjVX@$1)S<`gRwS}Y1Z~0zai6RN2@p7`cyH^ltEymihv`uDv>QzLYMMeZw*g2{@ z+6tz^%t6hZNj-{{;~(zv-xE&qiY~g!m8%f?g7GLB>8_F<@TnIIAcCVk1kzch=fhH9e9Z$a>~7qg^i7eBi4a*rm=sI+rEt~w+xUIaq7wP=&Mx!VRJcrN6~!NGxuG-n2^;n>D1=FZM6}tXKTQKer1k? zCfz6FO+?Ab(;L0kl>wW**M2nl>yLg(?6F$hmX20Bf~wir4}hxtxgmM#)G0w>;fjwR zzkK`lQscbt&p%iW9f2nwvied}QxBJIv$07 zD^t>3`Ian@P&X%|In=aoca}+7Uf=2@d?1~2<=dgw00F+6uj7~BiIGxT+{=5I)2W<+ zc(U%OD!P*4N*vWjLS&@!rKWZ5Z9k}^t>ZPilBG76U%zWUU5(E35*inoq^p{w>wH!2PtT{=ItJH5MaE1$FD3uM?Ao6U?P)4GHT zy%BQb+>JVu-y_AwAG9v24L)*peFg3A*86_?Q)l{;&sLpNE?%px{zL+pH9ehuXLr}o z)O2>KwAtFrE8*$WBQH9*;3a#k=9w58xE6%6i2D9ct9M!38ZeUPG#nI?bn(+=$A8XA7Il@*ZUc1D!L8$?q zYaqC&)3x~^Y&e*kJ}gPsH}AOvba)pRO$1eGQPI789nS;T!r{fqH~!-B0#_*E2L|Tm zeCZm*UCt2O^?0ecc5gv5_-l@8($G$3i&Jw9FU%qsm z={)KD<74a3pIk?d9FZ0poZDPTQM2g@18iu3(ne`*_h)Bke?ua#ii>x^TwL&EjqUn8 zHpap%Y+~W(m(tpL6RoMIB5ZcZYIR|!ZCZ3@X2zt^_kO22U6_s8W}(`<`Z$d9U8Q^z z-tP{#bFbJ+rw6(12{PyVeL5x^=a2$|M3hFU@K}DKV*|F{z3x`IP8PbxwGPdaPV?+$ z>B;o);d0yU3f*Bp)MMsmn=2Ftil!@`N!Tq~^Wa^d;I2EIfeO;;BlMGcg*n_7@9!y}Xa~pw z{Z}g=`Y258i9^0jZKcDw0BjJYrGZU4MGOIfav5~4m6DMGvMDMh z)s1p#?%msyl*`m?#@lTf$wgyF@5*fo{t)35pV$-I8BV@PPeuMVCB?63!zW_~hn;X4 z+o|fBwah#pXL?goThl>0-Pu~Fe~pik`a6g{NtYZ~mY<%Cvn5aJ`7l_HOv46T^R=~Y zEm#bW&N%06?4;6h1?7)@({tJ+_bz;EYI9)0GjC+6s#s#%C>ur7J?~8G7RtoI_vdV+ z!a5e`=;E?@CwS}5;kG%U+Pm3NBDEf`PZzeyzAsMw6fn}kfi!3E;pM+p6y4xs2ZNbm z!nrnIuMj{FSKM=n6s@d^0o(b>OxVu%_{m$~3j`Elr#Vg~XAg<5B)rr&d#osux4nB@ zFK$8ual6TEbmh6uMAen|_O+-zTo3>!Kv@+1X9QZ}PP-0T{oyeL%li9KT}}loFVT)i%u3HJ=-lH0RW*$=Xq0nX|JI z$X7cmj(>k|-oL9^9@Uy`y&^MdkHVGuzoPPr>7IFEF}Ei_pQar(yU0dQKD|%wP+#51 z1ib%!`?+wfWF2YM93!iT{;`fFAw4Ue59Ez49d7UP{mvut&Q+-uQb`b)wNJ2ULEdwJ z1z!ltq(!Y-yyL=%=#zj-qW%1^9_>6bI=bJ}e5i^)C?%wbeA;_*kH39rh!Ie;Id0h8 z%GdX;b!9$ZAxPmR_L0C!ghT(DuYc7yx*l*dHyzc~F4l{6y{(Px_U+ryf!Fsu&ks@JulgMxZ@=X0Pn7VUAjOdg|Okl7*6lFwquJ8rF3eym7cdqoXQeW$10@y#6k+NI~W-}j$#(o`%Qmc4iEH-LfRLVYjOvRif5qf1^mLs}zc9YX11 zIu@nI&i6XuoqlkJ0?Br5)%}NrD!H|)tET}ez|ww^`rh1(iz5vF(6@RrY+tP*ga7(S zD}gm{E?>G+;C8EF%=){EOEx{1t!{W}O)o946}S5k9=tioh)vBoN7c6A?XaA=?&bjssL6utiJVKL%BYp= zdg7|Zyr-1iIx)e@8MsAn9<+Y}#`TSJA$BQ#42NGYm9FElYaX*-Pm_g)Fdj-oZHi8d1S)R4J;6_|7U%Pe(+KFD_LZDln3D8Ixj@Xi3pW~%? z2mNZttLpKtrTDv2`!y)1^paw~eYw@0Hzc0N1-vv5`#yg?@BGQ-)(qntl`VcgJU-@# z%GAZU5AC!8#9qid($$^LtL88{e(|z3o>hIw~W(0`eyQDYU@8~ z3RF?tlvF4E(ZuK9#PKZR^+(y&5?3(`f~b1V_r;yh;wN7+&r7ca9R-ngSM6~_9HwsJ z?r&?}Gi)p^D-z{JeX7Rw^NF9zHAVhli5N3dL79iaa)oV?1aC-Re`iuj{jOkHvm*H3&wdt@7Q`|o?|e#`PjZX zrDRYYF$i2qt8jR0jz7*skZJ!{yrv&bJbFY-I4R0NuycJKDk<~U`<9)Z8fTQ}_mw)d zGglnd=g*(RK2LKmyaT=-usy6_&;DAv1i&!Bmj~rzaZDb#IF(_CGxa5?amPfJoLj|u zgHLV;CQ2)P^%Z11zQB0{F)L^Lm<4pDo4RJ; z{wpghv$M+zbmJz>Gm&?A7%VL;LM%k{VhMKWncj8kN_wUa?X??d^EJQ_yJnuS~UU`6%qdZDkZ+%}l-arhVX9+i{ zGomdLL((~)D|wcVikt-)5+}Q*s|86jCc>)PAG0#c=2QEYR~GkWts{zgU!SmOzA>1I ze^Xw588@YSX=3g^zlyxYwAD&oL6)k&zyDtVIy+V_>mL97F|W#Tn1-$k-!BBgWKQD5 zuSc{$xGa$HBE$8%ab$AtT~U@_)uU$IEYw#dCBG0`WO;e{d+rwiG$Br~ifKjy5_$Uc z>0W>wV5(X7kkH0otah@=Us}CUuh0#5;DzsK-eXo%Q|q@C%Nt#i_E%Dz(kV3tXj(bW zldj=Gzy~HKCXS7d51b(Vs?fc(%>XM3lp!#YnThG`+qeDq7Xf#r`&VE6Iad^2tXJsh z?EGhY)V#8>@mp&vX@ZL4sFJ@-M%O_j!YxB!z)U!)E)XjrPuNF}qfp#QJ@*9?$^=!T zeoaqXmY6ktjXrw~E-Lvwc-L*Wyjd6}rk>LKdpCvvume`mzPbSY?%K6$b&ofBGlTI` zC={w5J@xAsPxF>)bGr!PkH{%1a*&UH{q9XIDlRT>Xi$|%%`q!o3ZM6t>4W)0WacMM zoM?Yg&OLy|*S#>J($B}XTD$`A4v1j?Pmjp>!~_@Im2i^(ecn=M2X6qIlYzVFwYL^u zuWHj}X!5WK{t%9DpCXyQ_i8-<*xz1NnfVPHhlV8T6>l$9Q($<`N#n+EtIZd~ujP{l zQO0314}b9;?zj*n;^X6omb}os3ON*Ck7&~M#Zu{QN7k9d7}q+NS5=XFvd0(~Gs$Jf zCMTZ>T7Sy9K4R>0SzKK4{k?Oky^B@f@F}-KfYu5!Wt)|HER6_3Pv2hC^;A7JRj6Oe z5Uu1DxC(1-9A7Gl1sR-m_HXo|G>bVgSBxZ+iiC*%{sL3(;7>FIOTz!de63J3$?S!J#pr2P`rU&x+m(?+|VS$nWn&l|b14zqfZE`l%<&z~4FrY&(Iar zBU`-GS+jD7HQ4J@-kck>mB){hiBi_=tQARTS65xYenm;KPXijXt9atiVNVK$q|+>K z_@=?N|Liy7OS&KZ85_dlH%rjY#67V(+0=s!#(TiF&55;ne^0XFov4_YLb<^QqhbJe zpoRHeRs=pFTNF;?xO|r|T4+=7aXtD!lQ~d$su)JzqF9nb|-)G(X5O z{}~~Fcz)W|;0}u8(T!h>!cafZ%9xm#AO$k$6sI;glxqO*;oG-w^M2+Rgx}nw^n7z5 z`IPst9Pk_yk;XzAd2jSV>U)20 z3f>t}9t_wSw*eA+uUK#URz7N_6Uf_IQC}?aB0D=A3!55+7vc}_Fyo*I@IOWHWT=|) z$w|;DBUEy-u(E|I79jz0NWRQ~wiQ(EW8C)W{t5=~RASz&K@@+^$VU6)vSZ`}&A7hK zt2YU=P=h24Tly!GaEQFfcpOBfr6HVB_Ipfr%w5EwrIl4UuzhcDZ&2wPw?~ZYcgwE+ zDgI4ne;JF%VGqYMac7A53Lam&@Mg7-R`sU>p6NkNc`GL;bZPprLt&S=TGG}$*dfWQ3OeEfZ(D&|lMi|%}I8F+RlkltsOuX?Rx z-|n*cpp6rA*yC@%rz0|32ZtzVk4w&AN1Q!-*3r=s8oDP+Jb|XZtPG?O>jw{RofVZD z^w4E5aWB$8;gzFx3{?~R))T}YC>3b^Y;0_4zW%v(e*iwtb9^aSJza0t{jZJ|b)?)t zE!BBjggOuFA)WqvX9X3o-g=Z+5%9(N`S&1B-j}G`u#bKJgI%B%o2r za3ISAt>D(KU%!6%leu|n4Zphf5kz(XPYsW-xFAYOO6VCZ&u#+aH!9XD9nBxMC+P~x zP~p~}2{zjGPq=KsLJ61#IG%Q~o|jP&7_%(Yi&Y2k%<9Omvsa9bjlrJ)HV=BZzIk9m zXeg;ECXhAl(c!QG(7PwC=ipHuU5T`0fpJX&?j}r1kcLdH>1ZN=iuqADcm<*B=iTeR z?d(W^c{4hPpE@dkE?Mn?A=9wEt_W{FE0(D6@Bcc5hfbadOo;5Ws3(v4FtYG9xmA@H zv^WqO0F%Mq1HJ6I*-c6AneqIIVl(ku2;fGbJi%|5Z`8$&$15cF`Qge;EXYI*G3E)w_lxylO&_|r#QHUrP^7$| zERdcAF+(Vf!@F3LeONbh2(AUF)4pZ`u)sY~3u2X%fjB^yvo4LTV7=t)EViRIu{h`+ zbWt6!O^hB%IXoW5>PnZrnA&OB5pYZHncaiIxj&8!>I4PsrbOy++)XPb#@Mc8==X8T zB(J(3RZ;2OQpFKQ&4Y<{4#3}z4n?lGFZ5TTU3P+7k{P&jhKLCa&CEus-}PnGfF{Gk za12x?u&$s5*VNWlpZI9WaK(B3&z?Pd zu9OWDCbTo~PIL-&n{21u>-d?Xh*b_`9rnrAt(q6V3OorbD^7ov0g)$I`uk&*#SDcM zPEu2g%E%NU-#;jSZkIB_qdrV^9mVy6g(+-Ka_-ujrAoJwwjWn6B~h(Ma(*#AyU`N& zWzGDs!+d=%7(W*Py^NZc)&nF0U=s5C-I{wMgdW0cC}a}%I=1)sp8LuKweQWiDdwbn z%=_|;O8w@PnnFlI91`YTzRn9UAhRR>QWoH84hS4x@4sB6Mmt~Q=H>>`47BAfo4maA zl)b|4YSapEvKkN`7EVr(jVi0FJBZ399{;ICRxipUPC0C8v~&|pE9fBb@E~lgyhJT{ z0_vOkns5oUPc42%jm9QWSa}!*gh%YbEDtprrfOugPpJ8VozHgj~>{?wF&I~%Z z7);m=MlLQ2fMyLm18mN@&C4<}-wqFDfPqlc&_H{?nA8K9v!bf%gSMMPH7gVs(Qg2! zugT&vjN}INNEAN;y~_YHKRwiBTG}If`xgTP_n{N_TF1kf0pn|YZ0uaR#?qJO7q5cg zJsiT;2dU8L#Qxw*9r>?&oV9d03htHTLuAsB9=d+L2YADFTU3E82J~PU6wqz&@iUTu zGYf_rfHGnkce?czQP2KP1MLW?8*zthlhrXy57_D?3BnpO&_s~t=?DNgDzB;O1X^xp zdrv5DXpai!35x0%sM$u=m+im%CUPg+R|mMd(hZ6c=U6O$K6bBC9((osf*ANLpc4X} z00M)%gddPUxN~sx=)6wh;4P_cX@ACy>KTMy`LKQ6bI<8Uk=ObDhK0jislE0-k8Faq zFC3=jr}5FZ6zqt_DZ}RQM4g@sYeYM1gKx-q{LVq#vs>pMl)rUudaZ$|?tV4Fe40WR zWU68%;iSQZ)W!Op{eX#HUtiz7@)|@;Ql)x-Hd_>4QNc!K0f4ljvGHJ6mR@0;8t;CB z`Tl95T)VYZW!A28)bq~fcPUggT6EqeY@G&S?;;V>nK2m(~3M$RP3THRtt7|Fz54ulu(*s!HVrA8vI0rQwc2(ZCGy0MY{rp)z7n z`Z!I$eRb6q5XYgrxwwnnz~ZEhel0&d zey?!YQw6~wSm4>z*A!Zp!r*Sdg=C0e=dt`c{Zm#HlP55U^MeA#hM zwWvpxhA?@F^C>}vXt`-;-ceH8o2Cu^@|R#@V^f`{bN^;7syF-uGdRwIA|f!Yo{ugK z54a^{nF%DsuwK2&T&Kb)mvWHER;Z$ z93=`*)(?r-0IxncsQ2#Gn`?GL!90RGcKapcYF0=Bj+;SZ&Q&sCX3z_YMI$ za?Qi`;QM(odH{cD@L97z!XE;#XL6DwS?!rJ&n+Mp(4E2M2OWw@p~eY3(d6Xh>4|EG zZ+(5xZ>!(wbbWyg2=vm73~O(1y#|p>T~pST#MA?*B~XbRk$UpovSwB$`5C=n(KOsM3V343Q4TTB{>X(UZ-@LiR^v$J&;~}e$i@uHNpm#T8$O_l;srw$3v$!;EGr4@) zClb%pvV4l!8|U5`YoDZ{vA-&?J?IG5LC>2WE5M9fSz3T)?CkEI&6M)jiui1qi$K)* zZ3}pKczi@V!vkc93tM!tEpaIlqoQX-U4)xhS%KuQ-Im=k?OdfP(pV9@xd8 zcN6pcpLs9X>zrlM<$RoW?|!LWwb8-Rn3|hfDD4MWx7ytgI7eBISm%pX<>faU(4A|$ zOV6>OECOclzuyc8@Zf*fEo$mGE605()MHJ$Xl`kaJ@mX?SSL5(vI^e%X!6`c&S8vr~& z5kRRW+;t2o7JonsFsXA7_mox#J_#2yYlImLDBd={t5T==;N4oj$>{Kd5CQdjeP}S7 zK)+qOTNhS~azf(^^$N=YFZA{G#YqR0j`l!c2nI0`U~Kz=kpkl{kb{48#a67K%VhWx zF=xjW0=dpU)8;8Y`r$rC+gXVv#ulKLq(5AQXJ3-btAz-ZFKyY)Gp{WAXjU|JNpWao zbDzH4JGTk$fKZ!I&-d!gt5>f|Tj>k&O7Gq|mIgvjZ1Ca3$;Wf-=^4(b8fSlmeJ!vK zD81#iwI%-Y%?9yQb*+3x5QoHAPpag6kHfbD*#SjMIO(&P`jghFxSqx4KMm{iSXwi{IRaQE1Y!QeNyUVEfCdXGe=N@`^!~=?KayKa)W&w2Gv^(j~d$GSDQ9URB*pqW<)=?F6+x1=f+eLbX z^$Br<0S;gkD{#GsqEc)?t&GSz>N=HFuIg>C3PJT!6@hZd&&bbs+~}PE7dn!dK&s~!>%H;OdzY8-le)HGh`g5U65 z{$*Y3M9|V)C5xD=$Zt-C8L7aL75;`hPF6zdCqX~nZc4mt-lDyb{X za$kR`NKuv+7sI@UWK!3N()G2uzAst8U86n-1dd91Yu+Z87pz}nTn2D;k3S3|LVwbS zK1n-FB2{R8Z7y9nT^-mTl>R7l*i9RMw!qsc(g+kOQ5GJ?M_hMzH=^DgaDjE@<6o_psM^L~Run{*7K8@A?kEEz zvT*o&TX$Wc__#iqfub^U>B#*+`O}wmoov%q2fqqoZ=R9thn)4VR|AqnROcgwsM^NXGe9edX}*TevNHNsy7inl;h0pAwTQ5oQ;yMA(Z_QE&JplKQGLB9Bo1a`!-94ypX~#UDQzj?T``JsgG*n46osNA$~prk&y7um(OHj4LIG*ScVS z)8eOSfv1q1OX>j=oRfuKa^aDp`kRAnmbCJr%1XJKC+k(blV+v6&s8hyomF#QOY~ju z_8M?;&(YG1ZRku}iAjt5yy?x(F;~B`;afHDDonmLsv=)Bq%dqJy;k^@L^X0CDE_j| zP|dKt-L+p4>^?S{1_{rKJ4+!61qp}9o=xQ_uMA}9jj1oU+T7wCy$&;NT>KEzsSy4O zEDe;y_++Fa9@9u;X@GkJ1X;a?E6e-1$@VI;@LbyaH#UPUVx}L_!X~*(#=R3!)W+#F zdeDQ`Ymt}|18=!hbVkNn$O{4ad8S9ZtA&&XD`xULF{Cv5exF5MlX*ExnUm~-E+rbT zaGUbQG+;b+I^(}}Umy#}8a_7&=3ZRSEOZ(e*@>9_bd05g!->B#d5|kgf)*x`3bCwp zq7jmxe-XS1&?W!})o$}JBT}YRe(BToO}52eCHv6+=BibNj=+MqqzU zr5#ukM4y!umS54g7i0a&5d7j4_vwA@I4=Zh9T>`h?VB6tTtBStV!zMm6qj4F5ZPX5 z=i9V2Aan}{gLCB}1Dp#oPNe%{+L_qW&o<{phc_VqDm`oTJ((hu+4|6?uM&7R+T)^=zNgRT6K_G*)2kkU-BLUNUNwll+5Sxs`&P<7Pd! zWcCYvg(lv*vZK}Vg?mm`=I-hwmz5~vvQjEGL-yd)FL%qWurk|-tLH*Ad&d75$_x#u z_*RaSgB$$@L%?BdfI-L~ewKd(LgYPug&eJEP5duSutlbcCHFQXBUi5w600278Gdkf zKQ_Cx9E+kD3KNX5ybX4ZQfVI_6ZRDRc}s1a_V}lLSXkXzA#m|s8g_G*g{^sS~vymj3WosWGUujkvkDT-3*{co4)&fm$5v7I*8X#2wMUd-qc8QRH}q zAUkPBM#gVqBsnN3!$S1ACCeR?cj>$9N28;R%4{Kcvb$VK=ZcwQDrRDMW1)>X+dr3H ziQF{wwZ4u{&D8raYDn-mL4Am@GSB-)hlr|^nWG4uD|_zLU;f@epuFZ&>p>@zvGMg~ zPPSJnHh#{l5*)Ef_xQiu5LA+mf3H_;c~(?fCTw&GH`0x+Sr}u773sND_@k~itZV54 zBbE2slHOTS(U)e6m3C8COd&vHw8ERjBy#!s)sFCSJG81ye6Rc5Dua2z<0y2Kth642 zS-M6_Er&l*MT}LQ>9>d|U6fZ&wdK^Ve_4@6spHqq8MlY^CPq|{4UM_9w{xO`b)!sq zJs4+B7zJH$y({>z3zYR!kqTetHV+3larB@-AGUHHhDvmPo!hLBm@|z1mC^a}IGIQ& zphcHu=m-E?_i%Xb5(wFY1vrLATR~DRswQH1Wox&oSVsV^2Q^3pC#M`i4w{-e2j943 z&w*UJtl!o->%Jh@1Uhr=buH)K94(*iNxN6W%|F+~yrfG`zGm?HTE)*030Zlfqv-|C zI9MiMASHFipowtPN~8;YDZRQ{)8mk%dZ$XBq8@W$LQI`KR396_It(Z1~E6dz*ihDa>Ye;~`7a(8E;w;?9HLOqoI6 z@zK3baKbBbxKp&=tFnfvNMhDKytmj%AVDC(KA~ej>RX@Msc5D844M@QNNo5ug<5(t z>o;-GI`7sFn0ziHtz@QH)qIZMk(=4wACs4yiV|_z=+HNhQ?ZIv;sSBvr+YG_yWQVv zYz~js+KHpuv+i?Ei(0SY=eGSWGO0qvSa>-qJ$tQ?bzeGBu>svCsz%?^wxICD2{jTo z1r8wfXA5gzgs~Ui)_;2T?X$a01Isx#Vy{TDbS+!G zU^=d-H##~#IevkK+HK<}o4&Al+uUZwr%!!z<^dg(lcXqA1IR7Be4TLmfaOMxmZj6f zrzoFQFXnNXQZIEs|CJ0gy<crfQwh&tX#Zs>C?f8qkMftDTYs$(njWVB zNnfrwurVM*U3I+(vxd0Gzy5dNGC4C797MIzIDyTynUeEXHE+5ffiz>~;i26iTWcf) zUJ6*{aDHL_?!Mt-kKe?7S+B+>GZA3)kXeDmL(Ge7tS5<~SPTXdF`RaGh>2ZL&(Q*Q z0Lch@oCI#7M-TdgrkSu=<6jaFxUt>|9B>lh(W5Z%^Onj0f|-r&<(MB_$QqcZFCSVH zUNKSgdSNk3wc@!I!1~N=@k}lg*_)5L+spRB(B_twmWX02#A3=fePsY{GDNn=b%bv= zzFU%6(=hy|kM!(d|3ZC@DBd_JO{BaykZno|s74nNO>^RP{CkCv2+29wtI^!BaN)UN)>9=FwU@lkb0mBg$x)lpcpPA7NV{`Dosyb*hF$riUMQP&#+{w%0FW9qu@U1<#; zKU3zUOY`!>jm*xt1s!LmmPGu`}C#ksS{}H4ieD|D}9YciXGV?r zav$M*Ay`06%*@9kKG*MT$<%ig>I_2IRFs7{YkPaug}h}sXhAp!R|eJ$n1Ww<%VS4e zkUTIZ4a8?KBmUCuA%6h*NQ73tg&`9J9BMH^#%ELZaY4U-|0WihlT$RLkN6q0fNy9Z zKrbiCgiyjD%0oubD4-Cj$3gUoz$5_05PA)<5r~O}Vb;1ptRxLgK^{$5G%X#4+8ezf z1^Iu@QQ$$6Y@K2a3tkW-oC7J>Z$QsVjQBmGC*xrAX0y=@V}D)%6nx0CwzrdmVjzvK z8?Y?{nGY-mz!V?_66FEupq`4YpO1lOo;c2cgOqh$sFhD^Rkx)8M07etUryqX7PkDY zKMyHNO#LYaMX4fgi=_xn6iXaE8X>lLaxt0`u(MWvE#2=OTO{pp@%zCAxu*}y`Abde z+B;4#lh{hIel+=AOViJuS~J{fZ#-aS#MDgVF(j5Zt5?{ z3L=nJz5=YVf#4s$;6Hqa8=Qp8Fqsv&=nsRMGbGaxe#+G5@w)_E@LVaR6CqgxL>G=RdFee@d8{WMO3Z8o<1-01_$^Js z8yx{fK_>1ok2jtTXecuGjh~93tw963W3-*t^$@)}Y@ol9E)O?AIWBWME># zLq}!n!9N=o;OqN^2+r3B?r=hKhj^l)dQxMCr*u>mF*psCa7c90+Jbj6IG@A)OoCKT zPY*~#jb^1xsfhBB=_1pUW@02V*!{^`o$S) zN-#Aa*xRdQy3AdknYtN>_&hBd6%}Pt?-@xHJ|qD^Lt?$M@-rj@8yXrwBxV->;d~8r z5$}dxu$JLK#*n?ZP>9ur0bRxb+ov^i_J&Jxa4G{L53Z8mZWN(L`c}u_xM`!D$f;8g z)zn^2Z$Gx%Ho@zDs4*%YSWrw_+NK<~AN|rl11q(2kbiwGwsQdM0m=H~lh)azS_=)E zOGhV7Pd4bwQnUADjoZFb$uTs>ywfXob8}7{HEUA2a(N8h71P^e5_(a*1$mBv`W^tV ziHQfGG(x15D6X0LuT-DfB|S|ZdbKHK*^|P|zyKJv8+OMDbTzNx6J<$Pu;3YPrJcD> z6cRz5RXpy={v5JPu!%I~_QPo9_J~KyR{o?R=Ps+qgWEe9gmr?9qo?fB;|%5NSdKef z^t^n0b#TrM_PewI4IHN%2Q~$k2&IL$_l|OUj+G&J*3KsI4ewkwryX@sfhG#Q3E=b{q+2QBW(i zJIElwnKVcQ#3}!J@09BMjlyR58Jq^+fVubp1%M6Y?qu$!{NeI_aHtFo4W(YU0=Z{7 zb7uN`j;cwMUjiI&;${@NO>Us*ia;Qe)6;=D&wry$7*FW6CVppoTS`>)9k<9=Q733? z#1n3iaMtd#nud2Cd!h5>wPkLk8xICX)a@00lr=9n--CEsDw3^=V zTiZ-T;sm#&_78<(!&`=$vtm}wAO1z-kREA(T9E6F^- zILmc~lfX6nE3P62-5!)PKpF;uuX|?SW@gUu$?qSN$1P}rT0=~SDOPW?MJ{PBu)~7> zneC}pe8cb>7QLB(Z6-PoP%NP0d$kLv_Ewaaw?b#m*HIb$Snxllt^=Iv{(Y;oCmAK9 zS4$E?;#j3b3fb8a8D;O?9)uRMl4NhPR}w-IhmNgC$Cj+@|NX7^?f1W~-rla_IOqEr z&-2{Rec#XfpCIsQrs_7_(MVMMjG7wq4zaPKlK`>mBE%5w*#;y){VU%pW$f-AHZWj* zT2>a}t}UDgFO-`bN6tZaILFd{tV;r&gFLsXL}5Yu&vzuMT@vMf<{tFkj6lN`C{HqR zN6n8KKdaT)*;$hkO0^SR@RGuIla9KEw%4XjHegK>w-^oXi8pk)BNMu-hH*o!xry}r z$dMyuz>ZOc=E`sf%6p(!h~~5%h-ldD0pZRBO8uJ;cRcF+CpvG&Gtgu2{Jb)(bJm@I z$1C!Hn;3(y%+FcQW{b_i<~>vM)yA2_qipHf*$OEdReeqkIXt?lsfQNc9N)xmmaE;# zyW-=1Kx-qmy#jg+KKn{a9Pf%b2cwRAdPu#4{n!cbYwy17X6F51V{XV^Ds?wmX3j`r{@#tsCVx_@$Wf#@?v|3UO_#jyCbT>%x3&8 ztsq%-)4uI38h5qpnR`tfuSu$|{3UZtfy7HME+Fu>ql1-L-l_72-tphL3Ah&j)VgXP zVV*d2;+HUe#~<>*NN)G%L#c=vF&B8)k0`Zubbv|w@EjP~tW9-A*a5n{vPfF^H{oc; znuGexzv(7&5wF=`?+^p@kqvEam1h_{9}fMnl~!rqm+1DjijglazgV`@KQTr9C}pf@ zVhfbmk&D9w!wh)`UK07k;RkWCu|UpAnI*WE!HHB96W+86H6_qzsfDjwT|tvxe_I;B zk*D>QY;EMWX!AvF{(v4{(#MBa+xLSak(*nE5CCm4GHE<6kdx5LL~|ImLJSlm@%AFD z`&s-3=eo&x!HKrYJqn&x$e9w1Mc%k;JHokE=D`|TyF86N~hx~h|%i;NelYfxGH#s?VfOp&c z-Mim@u3lqwWdHt39LR4IGNXqN+dq>(A|YCKD42Pt{ImzVTNnM{PVSYzHYLYPrj&Tr zAEHlI>B2GnWx6~ZIgWgH=x*ox_xGNkPhjkw;Ph&Kr@-E^lF!!QV&I)!o7NCv#H-XG zcWAahIslFMwgKh!?Z3M+cQ?Ol`4FIK*= zusYO_DQRdIpb+{EYh3zj_90_9$F;40(7&!>X@YNPvBERRZD<9b$Kk8qd-HU8Q5NMp zjkG-y-eJ-Bf<2bH&!WvXnP>gm+65c+jVF+oLGc7#?Q>)IVtqYL^Brq&yU(miYqlV1 zC+kCc_S*H44?}mJ?M;H_4IQqLR*?UKWQ{~qCJ$71P6=t0At5)#pxe?XOk>3dZ;lJ) zQmzV5IjJqGC8&{{#Oma9p+OEgNANB|l>_eq6kDaSfJ8m$en}sjQ12WtGvO9SWC1_A zn&2>?h;nFBRA5j`iPP>Nx@ka!%lhmfZ}*pZ;0 z*dgcnqc|KY!2e$tMuE2t~0Xx*SqpbV@)N8%1P=5?7kH{*x2@glmwP5 z&r@venm(|z5hu-?C!N>bUU{pkz-lQhto_v%@`VWDX6-8{2%$y8d;%^57FX@Jdnb>~ivfph-YraTV4$DqRc>|46d-ClvF)b zZb&*!z$xJ)MZEeB+owfQiwbR5X7Rek0ioPDPU8_L9lkZ#FVR`im-XWNyoDS1IXn$a;Rem@jM=qGpfZ&J{1S$~Y z30QD&FwrScBUV%1A&F~va#9F55s?-nSQ9YbZE0Di+Z@Ma6clWp>f~_eEAOPm7Z5BE zfQSS!?>`%k&@B34ZeMdl!|Mc_=U>A9+pj;IpEuV{jJ@i0X`GqjD@t7b3M`3koKlWC z*G2m+&D9XJ4E4TXiVN4WsJqJN7>?9x_Q3MDNSl$iqh3oBk%Tk?HXlHI=iK902ZQ@S zq-z8T4PX#-PoVf;h$APBwOI4%rFQ|KGOavWvON)gzZ(%3Dj_8uXy=N zYUA77t=soWt7-SXdw0tzfQ^O42rNqkl?bE6Q?D%BNh)9+y$61a#DgeK;go{HeafBv z=+C6-vs3(wgn$SU)jz1&;wV9%-%CG`>LPVRw#?j8sq+}PurBi>x$uiAP-rO6A$NNL z$Ug!k7G3H`a{Ng8@F-D8Aq*Y93i2rzgApJ-YyhIPN7e7p7D9g`F}6TzW&B_sG{@k) zgPe@K9vCwe9sRfc?D9SKuH5mPd<_YcEwqZnB8_Z}8mwSkbwc z-~vzN_Ci3?)2wOG2hNxFdw@yEz>u+P-*Wv;@CMbK*oC0m@gF%7mBr*=dy!NvqKyii zNpVinw6Yma5eUpE^ojZ+Ea5!Yt2D;I%wh56@JAiMuOU1~Fh(Ka`P>hgyp)vpyNXsV zix+i;W~M?^myGD(A;F zW`g!mLqmhUUevyNjT0ix`4+Ol$6)!^IKb16hqqD2g0OPf4kFEYffGV31I4Ll@>Twc zAGJm~Mk z4(N%K(!-#$Ch5r7AAkH_-M0aPlOp!5s1AA^1zC2Mkq@m$L$&32Ve2>kKrjrRWczL2 zw2GIHH=W=65u}MJ)}x=U=D787^TL-Q>iolN-D!o}<1hWp6j~$;+UzF@l5n(yMxZ?~a%tC5%Q=E+^peS!{M+Hdk>MQ8k%8Oy3!)^WGuH#6%21dI?I%rCkrQ}Y(Zt3?unq!G-% zdDcKn^$nR00yF0a1@d0{`=G|6vLktR?%b>qvK{@@bNf%?U+p$0j-}G(XFaWU?Q$*F zKdd$}D_&tVE+^C}I<23UOWh%6^Jv@oI;FE_&$mX&U5z zNL#FN*L^k=!$R4$LFVa?VfsR8t?nAR&d3;X5!{(yCPkTifOZH;`u#BT|kd6y%cB=A&Zvam^}_6(Ec%N?=!ygXHzLd1)U8yrzdQy z#$S!8&c}1UK|8o0@S%No7(`ZIN2IKqr0-g`>m8#!SIwPZRi=b%f9Pj^VG#!6Q$SSB zy7ScViD%pmY5u0g`c=3Cj~%;PPZbkT99*zDT`aS(;qAaj9k^8F>l#{m-gG}(`}B~> z@D?<*P!C)tKI&eh5>Bf(Xaau=bH4ddN&J-=Zk5ye){v>QQ>57wjrJw36sWY2@ zJh7_RS~bXUJRp(FBMKR^y9UYV}J}M$PI4=^r=7Px{k?1T7u>kE=!wh+KEK6%m zR!$}=(kyCw;e5%j}hGQ291$#-)PZc+abTd zaB4||vbfyS!87IN=Rk@kM~FGyRU?&`o$!f@+KY~UX*WfWM$oOEHp$P#k@?++uEmx< zr(UPRg5}S_d48RRV-8~yPHAhjR+9_rcV*!j=W?NLwZ58>pY7LfX*X4~Z+~T#R(FSy zt1HpRMY?p^Z3CzlypadOs%^bZ7%}uXXn*yoY zo7&shi-q%~++P}O6FJaZ#~vddC6;biH?lljHO?jSaU?;G*!u@d0(aZ_yzJGV&nvzZ zAn5JZRPV51G|skLZN9NvwIzgeQ@`0a+Ys@^D(YUVt^h&*1D=ue#qved)~YftC47(5 zG6m<@g6G}oy$ynbRpmI2E!Fi7Fw|E0k;~oaU~BhkYi}xlc3V(gC0Z#i9ad;Sm7hGh zX~tr1$Zt)G#xAHf1VS#lxa>%)TJ>VcY~nWOtda7}M5mOgnydPxLanoq8pRIZF!&I&ggemz4RZ`-c8lI|JL zdfDo_{0CLIut(LGXTOvO{Q5rKX*Klr)QzYpTIS29&%(m?HQLWxXKU-( zOVkcp)n>d;5r0%L-+OP17!$2;4E;>7W(%NK)-8hGhW-inZGB?w(j20zFM3?d$bj2g z?9N>rCdMxJAmtR+e4(9`*Cnm!jXjHOz5#y5N(dA{MX89e6OX=C$@n7iULp zgL8*??ZEZM1vZ>=+TWJLx5yuKUt7ZNg?|U66_Xaf3b!nN)bL%rxe6}Gz#kKy!b?F5Abi*ULy*qZ? z1B3|z0e7EOZQk`2>Hln-%*yqC)9HTps+FZGZ*T^Q?P`H#?c-|N3^RtSVHbD5i8;Gb zNarwc*@Fy){jJ5PPU!2n3&27^BIkL6SFBsT>X!70 zPHK4YtH~zM&pLy0hxz$Vjr?axU&NJi=5Xy>t2VTxdG(*g=q98W70G9)y&D>TSl>6> zQ=69O?Y%m<{guA;dEkI*+?~(!@0{Rg-5avQ*unUgoXEL2@;?llZ2Eq3qR76$WBW|L z*U9mUlXYiFdF6NF{Q?{Po#r-P75*_>1fWVlQn>Osj}M$7E;*JYJxaID*8|>+H0?W; zZ=3Jw!i2^aRPo6E0K-G&GrA;se+qmQ?tG8uA5+-yhZUufWo056*SXjOcGV7EETT=( zsdu1lX{A5&@=bVae_Gbmqkmnq!yV6&ho>8}c|0UJ0Bd*VoD8bK>!qB2BA;D(f?KAz ztG|G+u#@)23J-mb>&LIjiM;FYU+24VqLaO>m_;9{`uiXJDW`pPORm+LsBivVp$gQK^u7;-i%6>A}Wox?my zL!6d7*1&*yJVO~$+_368J$6Y0Gg!jx$tr_bzN3vv@s)D#(U{jCjhw;JGG8Fv7^SYX$m z;wcHo!t%~-53};NF0HScoZS1>W?gW*!d})vnHxG6G@QdEBZGg}8|wt0p!|HWeG{$O z(XiK{3g=`wCKRjIkia{FQ;uS94o^}$IgcDgPTIrH#$GvMXUMX@!R(eU@7d^vcO%ni zRy=zie$nZ2C@4Nws-wLS zWMUW^+ck6iO#o#`;<4j==7#};bt{rXrJWDgDCDcSmOL`p=Vfr`bSt6^eyyaI6xHWg zo{Mh(9N*5-a=X?cYU8C5>sp$2jWCU*l+}Q`izN%Dor~;XM*`m0xQpAt%Hn)`Yj=&f zn=l-<$aQ=@YZwzLd{HcuKVVXEEonM;#VHhjl%a;$w=Kf(I&8LRuyAZYRQ$l+bwvrKF!|P<0M9Rq)r+)gryW}*5P2_j| z>%kv0&sA68>$aNsr``Qa$#jlq$I$SlNmb2wozD8~2IbyhSKhJjtA+F*bEWSvfP&)p z$BT;?FuU1lv1&SF#j&^xUKd{FB-w9{kZAQ2I27Xcb3}sY{IB$61ylFdu3e6#+;tc0 zmTES=SgSI4-SxX;DgErfb0I`1k1o1NH@k4IaGP{obH^~UW?C^Zf}QJ=LC$AqY z8V`H_4j6z(?%uDu3XjV0`>RD$|9mF=9v;VX@mEfK`@u%FfQw(N zE7I)RgI2ozdwRA#T=%0@(8A6~`0KcTjD_=L#B;;H-zi7?EDN6Fi=9FW=8xX>HmfDc z(ArY|i(e;b`AwxfXUqhz(Agd^cigM|--+Dzkiks&wI!3D;8Gzh=ZV>udBj5EW(@kSyScte~)0> z3J?Ex&wXgxa~4%{ouf*70DiNc6KNbKU}#THGiT+_dUG6SlkHP2PNl>h5O&neTqh^xvBSV^9HH-xF69z&oBXq;Gt+ zUGk@OIsdm8#H0H6V7MHq7`b^W#j+hpMjW{zO;ADg)bDS{d$=`0*D1OsWVj@p`li=^ zo=l2k&*_}7@t3Tzb=PHg@F*F}%h%;yTm^e*P>mGhCe&tTcuuACi4z|g@9wSWc8Nji zi6;U_cM5Jgxx9|5^o!k@U8HJZZ||shn&L#b%8elr!`_bXzT!+uXVntpQ_MrVciNZp z`+LOVPog=nCC43TxZ`#E$ewvOrhxo5DaLFKx}hiG)^_Z8EccKyer3JSPQCTZ@X5)e zTB^#CS){LwiZkNpOLKY7%FdTqcQjAy@=_jIO3H=DPYle{Mz*EG=Dg0Sd0r_q(v*&B zYoD(xTlq!kWeI3<8c9&(YHv%dSB{K&m%+k3RRXqZwswq05-bx5Gal)GK>70DAT~4M zO4-<+L(CbVPIw-$7+J9T-y7QJJI7rX-MDLh^+TT*B4oDacf)z>qki1fiTrvL_4 zKpZ`}F2ja5S=?8K){(G+hhYp1i6OFPKlqlHO3dLQHdbB8FZCy+qX&6{30fC|;E2<_ z+$3f&44pCFz3t7|40;FITul19Y7B{F%o!nE4bX}>{PgMWjcab=*%axIJzD*6ZG>iy zCAgztvdk5!P@lT_RrQupC*Wxb291mO^Gm7<>U)(&OkrsV6P~1IkjqW|BzPB-ZD@g6IFK@O$#~50!+<>jx9x59d>nxM{@rHK8XBZCb<1nE7!dxfSS6Jol0$UsQ z=x`ASCln3xsp+;62o}}?Eazdm1cOMlwb4%ig-@F`exhdQZTrGbpzMTC0+^uS>OhDJ z_B1kKVc|+RJAh6HmW??7jqeNxOrt)lupKMs$FnA^63`+0{(V2p5aVj6y*W%BT3k1i z$nNU5u;HNO%(MBrvUH)g^aJ=7MDZ%ABpgQAGZ5`Ajid_nzk+%7j35=c$nRoYc5=OB zHl`4rKSY;2css(JqLk$!J(AQ`kH#3`R1NwEU|O^wY|xrOKM}2vxdqLYs&$ueDG`@m z_{p;9{bZ=cA=dvx?7M1diRL_(ofM-avrqarl@%;*(3T+=N0l?!^wyNFl}>RhW5^XD z7O>k0@-&Ed&d$N$PQp8?(+WEk9TI%}{z;9aQO^Fk^422`B=iFDTnSTpP+JL4JiGkl zJ@)bj^tEutnl5NicaS=NNQvh--1;xb9LZ3e3 zifsRXS!=&=bIo`b{WJ*}X`xXpLVkxjG7I0nhbU(!jVh>D2301LQX z7!*i!;*e%bevk7kir7dBGJ%)^Tc8g#ZRqyTZXAa!91TQ{9kYQGL?9u;L3pH_5&(0U z4o21!)U7|HP_nWV?62n+|2Pw4tBBM-va+1Y=N zS8>2Myc?dr`F4F92x1Bx%}{(NHIte{zbvgT!PbS1Rz4j0@G#7Td`z@tE!qRl?$Ia> z{<{K2zXs~-){)^4fXM%?!YYs=_TzHo4s@97 zg=Zf~IlJ;iu56Fk-oG?i9M^39ODJbie0p9hzeoDm&qC0uf(^W?34$kgASaqF=k_}; z8iGXpyYB)&PPBX?^xLgzUk(0~)XWWEe8MFM2L}(7nNQ!?$mj;P6zF2`_o=6X3r=+4 zU`}>L9>zDn6}+z$LcqSA_0ZpV6CMY+7t)G;Zh*?4PM zXo~RM%*T+gb+@GfKzK-YKYH3s%@BzxfkK!1_Vz~nCE<*4IYLoZ);X({2hJFT1C~q@ zDop%o zZAl@d_CpfM)E`eK-*`OriU`OY@e00R`fBh*yR+3yvgoB5%DT3kkD$^Xv+g4N6+t|M z-zZk$8#tT@+fZ9M7*|s#%nTh97jdP7Irm3;gR2L$g{|JdPC^Od^6GOYBx>c4~~L3^hSzdoJshe%JN&P(Mf;!p?YC|VhcH+rV3t_* zUSfR-(39dOu{)S+Wiw>3&sZtsv7HX%^i!(pa1y?29-yjUliLG9_ z!tzs2NlB{e%+ORpmr`vect#!h_IKg*hx-kke3E_dH{@lXMvm>=NV{@Qtjg#Jh(!eT z*###AoB)CmiOWN}xioNB7Wu0?(dFw-lQD*@L_baH2T7E7>VoLIc@IhKL##O*b)kdz z4mcexTbFQP#5!5B`?pXH?;2u4!n6^+XTto_RUIvUb`IuQ^&ZW?(cDJz<(oT(1QWii ziilh7~cZCqf`l(6VD8ql^i@J?Iz zf!6%`!Kr$8mA0{IQ09re2%bo|^MzRYz&S6P8%!b$*zTW#!8^&4e2~dMX{~y9hAuC` zOa-MKBCEJ&#dGJ(j_Fa~-t@VA&_3H(;0(+-LBEoZ0du_!wj(STsQF(RZq>=aZ6Ekd zv(Zb~$HOG>;}v*1jn)v{2!hQIa{JKp`Ww;tq@2a7u2!ey<-(*2W=F4?!d+r|UrPCg zdXxqE!+Uh~oM8$kl*x0-nx{}nKsMxKUP`wyQ@%D_@ zQ2KjQeO+C#vjUzLxIfUPKY}Z z)Zzv^geyK~-cPlr#MG6U5wj3zc5Je!>VSt}^d*bZz!x*~iv`|P+mRd3O}kCe6GKZ2 zYBE|363P#e8?GK;F0Uy*k)}i7JiYR@Zp0#0HiAI6sCW9I^eBKeCHml-}%19 zX2V|UjPfNkZNT@Gy>;P_LHE@FuNA`#r|U|Jkp_o}Cve##7caKtP@5k;SDn&q0d*+s z6EPYD4yhOdH07v)K@0FByR?a*GTfG)BYA{hImNcM&ytWuLZt#i6z(~EMDQVy?|UD( z6um5Y@NWU(GQOu&{uk;hB3bR~iq%d5|B0BgMEJB@HXCP3xxLu03ceX-{`-V0+~SEZ z0y~aGl81omZ5j+?^7E_V%SC8>Q4A1NFZ?|CmqE*i_xSkZcrTiVpn>eW+-M{Xd3ZA9|!G=g1`W~9QIwidJ%+13d3VgIOqoKoy7)XWdIU*IwXsT}S5ogw z{|x$fb@x2H2lGQclAOd69fJf^htifcyuld3(!%fvawM`Zcc0y?9CwU zw8Z$AEcR2g;P1jsDYLY+9;_>ZGiPJ-<6gSBf^5$Ltx1v8=BHVwFR*Q=X4r0MUt(D7 zW%6%Y&Tc08IEIvc?mL+a5^PSW|1E|zoXOb)WH`o|Jb^G z&5~f!5jGhA3MVgRE8F`hk%i!kgjB=^X)?YNI!)p@LsW+mV&Ex9QC=3z{EbVu>~~)a zJY>Ng*!ai~qzs%u&{_(?Ss5YSV=nHl%+>xmQ# zDY$@wXh>3@6Waf3aZAyG&gXObxJ-zge4*w@ixA-e1j7`g441u|bz?4($RdHeoi=bf zdU3(&Oi-gallyvahx5_z+-+%07U6VGQzXXwn%N;J5RfVyfqJKXfhaiPCJDMWn044d z$kVONAxgh**$!1KQ5L@anx5(?_3>Wo6MxE0)`|$qciZ;i<;9!&LmdYgMLUs?;ud!+ z_BYXjE0%z;u+yn$63Ns0G2cg_PY8|G&r>P277jx`+o`Cq(^fQqQR&m?!(kuo5UURN zpw2_GLrktQ%7`ze%=l%6SN#irxm>Rpv!yFA%8-L59k%WFZVTkNJ#9O(?*S6yvWwfm zPe{?gfTzLu+x9QVZbIjzFOEt zh-ay(nK1B1tqsrsQEuert}S=7;}63@H#r$3Wh4@WqgTQ5<>goUo~1DV!bO5K4(p2i z$bS-~yP>FB@OF#Uwri=YCaHW&_wR|ojYI-TDbg|m zLcr6i?Q4vcL7{@3%d4CBqUvX!*PF$+gx#yt5yi5OF}LJKaNrpIcm28jO9jCH>d46q!Cv6X9xHIrZq$@jRX<36=7W++yOT)-~$lqR#x75E)LZ`>;p>4HL@|* zynK8UFiwJg7Df33Xd@*gQda91cA@~w!Yu?D5`tPe(i@L)H|Op?rk6$iN7 z3>!#xYiwY5izNs2fPocY>1D^cM(b^*Y z$JVPXZ}~l0=8wrFelEs=A;?yMZXqAzpf}Of^i=Vr6hvG}X(f#V!+(g!Fp`DFTBPTW z2Mcez5=p;)6=UBfh?5l_%U|+(`r!uZS+Gx$tpjF)fB`4CfH#jk0AF9C=mqtilq~{n z&TzmJR_}d{foCETeLFikpta%`6f6g=6TZf#kHrTwyj$!4gLaC3h+O%sW*prem0w!- zLwPPR(d;gL;fPZhi1i3+2jA3jVS3%C6e+@mOdrYgo=2J{;n}ZWzawTs;EGGp@P)55 zA6wXkTn2`NoSJDt9R+KN_5X9O}o%QtM4Zegkj@faKtBvzeiT}Y#Q0fHa zDJAts2lbTjZ$!ljb%#-t)F0G5+zaGtK~yOl7MxF0AO#^nMywH}-2 ztXbrxBnD^E)8bZy$tl|r&4vU}J1|~N_}rmD`MC*5P6#**4-Rf^n?E!i(b&jSSMS*} zqtUGzlQCV|)mqpLzMG_Es+1|Dp$MrcE&cD+AwwZZzEBg~Fb~CNGAn-pP>@iJ)2_t( zu{8dcZ0W`N$c?49V&{7%Theo>!P&%0Ko`hAhze(D3L;C`%6U6OgM}La8D7E1$96|0 z6OOCz+lJ9QYTOk7B?vQq#2CVl(@7tLT-UW?Nq6rA_G(zUs9qSmCGC;R0U$D>{#wXnWqM zix~I32IC^3Rz~bZsKEgw;L_XDK#wiCf~t*?IZ3F9C3DU!9xSbjS>bJyf1v~5Z$o_ zkZk!YMt&32|Na*!3XkJT7tH*6uE8N^73s`exPYq)-M3zgd(E`DaGZp48j=re`huL# zt;;G3Dqw|^$z)st&|RWNL*l}ZYWPZ!y5Cor2!LCT1p=-HbAAErQ%)S=dtu~0QONfZ zomcB(u!Bkhp+V|QvVWVXa#;Q81(~N234Ru(@F##$n9%4ZLcgS)G97XMNBPSf?q-#c z4JpaVHqf*q8ApJD+T{mCH!$vhB{Nda>04K?K0m@5Y%EYcHAEqR2KIp7nfZWM3VgU} zTTLS|qTv((Qaab>#+tDisY!PUizJhLJ_`pFbjL~PQ_GxR7|2PP84lQ5^r-9P!k%96I6?|0 z@ysn@0x`!imbuJ`|6>0(#p-qMTW?}y%Fvkz!ySNj7sX6D&cienLLc1g1p$}g z+lfBy6x|e^l%Uk3aO*{@LC-#E|6Az z?RM&YyqaC$_nlkrq9;RB5OF_owZy;;VhAciG^{~8r}1n6>7?!P2?&);q)oS9u@{^- z_$ok}LVydfcyTktQ6H3fjFfEiYhd8W6Jeo>Co*-U_ux#XMvvZMIVY_ljPm#0VC z5KW*?iNa74;xGXo1+<9pf;tZsKs(GnFi?WXxBMi}H2pAtK=BPVd|COXHM&JhC+Wja zHI4UY{BM)^z}XJ2B^;H3cEI5swIQKtfnBrXhUM~{<-A9u6CQsXaJmYL>Q7Z-cn)2H zdsocz*t|ujzhE;d_0CwHcM^+eU(MjK&fo(U1W?qRNT=Jr$V`#dcx&$%_6wh_;YuP8 z^iRtG1}uC@YR9MqUP7qUpeEs~&Tv6SeeTLMJ}aU*+Cv-(*PU`gRF2-SQ=`b*HhVpb z|LIoTc6GxitJeWW?m2fnyqB{|;mt<_1XL2EAJTP_d!sA>ycu%Y~T} zk^?U*p7=9Ucay*6u~!7NRSqb>td*Bz@|7VlG%YO*))GKa#J6B0&2>$_czW41V%c`4 z=)irI(*D0CVO{gLrqKO}PM{<9h_}&=4JG^P!M&B45 zFlf2!IXp#RRE-i4&^*PczO_ciQxQlL4Cxf(a1jIKg%J;^+e-If#dYwLg|}LY_41O` zITy+M3Gf;xIyQulGOjS(b+|JK7aws&7Ekrw)WL04m6a%5Nvl;4vx*$}4sJIRn@ptb z+<~Ob-Cr3mnxd zL=U`EQWX(d?X-K_7xX<)X$bQF(pEay&9 z3GvLFcV%Xp=?CTX9 z9*l9p*+vyWxCmv!{RwhR{3Y!3iTYZVu#%beU`JRY&YVJD77O3kuc`HrbMpoR!Xa!~ z0Q}&A6F5BfrKF12i#iUINs6^%-&M=W^m8G>U;lRD^WPmj|1@1q`gF`XDL8KU#KK(& zWxYRbV#(WpMwNlrB~N^Wa5@o-oSt|+Y)|$1!1Xl@SqAijJ2pw$yhIyUQ~gQ^;Vu3m zy0K1aaDVd4EQ?0VP{LT4a)2W^b3~Ws{C3yu^eBtl0Yf(jKhU^54I*)Kr${Q@50a%j z4Y*J?edhOc(3taF2t03)Okj^8G!eES*el4c2;mx>umM(K3&0@hz7cn9G zi)&NkH8LyT*IyOkNaXQd$OiFQMs#7x2gn=+;HL6V8_j=D!b9ao?h(KxhAabKF8g+J zPqnx%6(|2aefqzaO1ZN|7&e%%3WUa4GV(xhtvUJWTG8BTrJv|=;Z6J&A$>BxT_bWv z#xR18y0-Z^DY{%<2&e&C7sAe>inmCrp@(ZZ*#jmpmQVnNgZpPm9*d-RVRqK+NLf{q zT$$X=6EmQPmu<{cqCex{A7^irR@o4;a#_SvC8BhUxki40?br&~S=ODq(W^4R;h>nP zW`&k7W`iK<>OtET#}rv1Fnx650gwS$jnz+so7Y?Hp$iu-eCpoEx&>uC3J)YYz)=Z% znUHgXi#E@FmF$b)MyS|i`_WhcT7F1KCtvC(s1fDdaamGxF&9c4*eOSyrz!9(RyRJ1 zWDnu%$B%UVyeEJ25x%^28c%F6^1btcvy&5=*yt$$mZ|~PfgrdsY;Cr?a@|XS1i)DV z2YDV|1qxuAgrbc^yhdvG(E{`+c!L9;>9YmjNLFENex(=_sgKw`)_apST@XHwH|mXy zPszYsG%G-LCW&*h?Be+_--OUIlx{E~d&CuN|1xd=blp0)QVfGAv1`{*Y{l4K%*NiE zIP4KH7^#CslS|V3*K>1<7lg> z#;VsCdcRYjn)yJTXiGs=X0e?++tVb7(eE@Y6|g%2Ct>HoBch#dnb`6EX#5=*S{zyp^nCNyHq0Q zKyt>WK5{Hf<={OuJqgU^<7L2IFknY~KDm3_C#&eXt`Y=zFu&25#jqvR{}`c%_5i>Q z8a6$IRiq3sTRe&E>Cup}!0fW=SY63bUY+2wlsm;{|A*b{>Z0W=(hs|8T-6F9XFN%E zAYJKuIY#ol%2tI>AaDs?vJs?1{(ogfq6rxmWW>u)@}E2!4oRq9Jp7ol1E zh<+^%bzbZG!Gn8Gus0nXj_WG!*2LI>GmoD(_oEr)7Z4CkU65RyRFzRya}ply^w(B9 zOcrYX`7;v;A|`Ft>{mj+RA>4@NAP;(3W}8frIEJmBo8)N_a7A$jK*=eVqzkLWTa2{ z{F%PbQ%F4(P`|)2Lt9r@jkT&TzqV)SYq4gG%E8>H=ynF~Nk9g56!K5tbtYOGbxMH$ z`HT%xG{1PJz;P%@a;|?*gp_y5)j9hwZ&qN0%Tt9GpAEmr z8=`M@xtH#*5T*3!|BN5Y>FozfjxVD~NbBX7?L(jYQY!Ys2wyf6uLE37vFS!~ao&de-{Bf}&khKRMc-tArJH z8;A+6S?e&9xWKg4BRM-XEQ~xmL7hSoXKrb!0H~YfIQZ0`T|(Qb-%5xj5t~HuKDrVL zii(No4P)YlZWYaOnl&#hTUHdb&})VVDv;ISYnMR0zX@u6u+H`Xe6!WWP(*P)Dt)wb zgZ1PnpFb0yskbU%=u6p6IQ4Qf-wvyvT65xskV5U2)HtO`-lStP`?zWaP=@vow`LW1 z%-XenL!;n4fJl=)!97%%QjT<&8X$)!-f~}Uu;b#~)XxQdTaDD24vWy(P;|(N%xbhl z^e~(mTQV-WjpkE@uTndUBBqpc*rW#2Ttjc{{sh=!3x{MfmXtUz*c8|*HJRt;r$@+d z-W=b_-8SO1lN~Z>6Zl=WJe!6Tb(E8lK-Q6;jaYs?!fmdWUGummwH6Srx zjL#`(TGx*k8+0JCz;Oo2+);6HU9Xg}Vei>D zIOcsjZJ{(`Uo@=R?f2k;nUPV?^F?GJ`qZCb6c-w`wJ6 zFp@>QP>i4d{2k5IOEkM_R(+aIUYh3Jghk`Nl7jC6R;Ok)p@WlRu=JC8^XAP7u&9no zM|VTY8t!h`en8zm9V;2%?728(K>78{WoP=>(dj+4nRXkehli61;7>2#P6q47vSSCA z>=S~(gt~#p^um_So6Rw74IrqA+@X~=07r2Iu;U%^@PG1r!IRC-$%!T0XW-wAow%X= zJb-shtSE4uhy{h=b!O&Ex8jm0b5-kKo#H1aCzt{%>JNH-)M!n-u%PFY@&e(4*xpSr ze`)Vt(m)nK@|=5(3QhFv7tQIT1;8N zYjM?|VVCr{fOEF1K!;*+6mXr={LB~y`<1x1u}hwsQhdjcc*Bh0sF+w1`d3%Rx{BM1 z-E&`Zsl<_6`6VrqZg+PLjri)@Z*?E>>Z%{IEMUG9h5M7ZWnIUxKCcLyhGSM8=Yh2T z`jzL;CKd}Rz1^;f#iijeu@lzprH(L77+*SE>By+w(A8QZ6M5~UU#-v3uODB_|2w{2 zuG!C)3!KOFBg9=*K5OGr$`UVi!U50Ju^H>2^bA`v$dKG7;}ye2qKN6#Nq{g0sbDwpyoC ztiy9)|Na`~-FV|%Rj)vo(m^<9VP#cgkin)#)M^4P59X=Zr;fjV7_x~uottti-t<{T z^3dzntC;p7qavvt<6PUfn8V^sV#B>_;p(b|`pZOC+wwXaO@%aR)5(#}!rXc1!>JM|+$-CERY_ozaI=O_e{}q1<*Q1qE~LYalEQ2uCQQ z9vtag6$qLPB1wdZt+c^>8^z(rmohsYQ@X*)Yl2Z|W%A~_!*Q{j@s8WcSpZ^=z-5Rn zuN7ntN`(C5QwUU{nCFH2!=FPc6@W{kMv`SqK_O#q&Wye_;`&VZ#|3^L!4yD{2$CiT zdb>)Ul@p4(>kqNNX4w1;rO5PHw}Jjiq$xx=-$sjj*kpB%NWlDy8O`xoU%Hc9=iDa! z_ingx92X*Sop^&8)K|((QLv^NEA}T&GnJKcgl5~d6=u7vZ}aBNGWmYeD|8xwK|}!z z-Y`uf7M>L7zJL7qG0=CwC>((EJt7!WpS!2B<|?as9Me4NW1*~^4FiqFj7wEQ@CrrN zF$98BXk;YiW7x6UBVrX?0XNrf9n7abCs#i?kPTDJpULLq&Rk3*T0sd27flJO#B~V& zh?9E zr}o#E&w8EQaFV$ByXU)RUK9IO!d-*7Pi~%|Thk-Ln^Ynjz}}44z!6UUIn`D)rS=%p z)3&gS=Y8dwCe9r=UbyX%VLVOKWUV5({CJ@lL5kUaK(YT*)Jbf>4x0$CE{|U95$r?B zZ38La8GA%NWAjb|0*!}>8SeEtco!Zk;=@hg@blXl;>aNN+I6E-L!#b0ZD>UKq$1q| zpBeKw^1++mzu(cXaQ*4NSkyzE*5C6B?Y-=Uz->VcY}>fevg}H4Gu;fmYxS@|({<+e9=`J*O z-`>-0hOxGpS-b}(qvdD_3mnQxXA+b>aNs~~UH#0iV8%O!`OnhSxcitsVxI*!zv-Dm zqR@y?>NwfokU8*a@p7yr*9Yc_1ozzcGyb=ZRGJ|@sF#=t$8mw36frjGa@N5sDF7Go z9m*2R3lqC?9(d{ZjcR!=3L98g?3^7RAOD%{^6ZPwtyt7|IGBUjq4JMkvHGgBUgzq9 zM`rJHDQo+aNnIH_#D(XqhYI8Ao(I@X@ovRS@5ch}uD7e8BEvf&I#<1Une;1q@|@W(H*9Xv zP7-q-?VlVV6FKh-B&bL{Pj%0I&Yf&L%V%z5lg@fw?ZNhgb^Szvz=LFc*W1zW71q{O zr^0AC9$h+h@9MN!dL#`96dqJF3y@%1|$y&yKTw9}2s%-pVwsv$7e zJf9!k79G1H6=m16WHppe7Q$ip@X3RWorS)waTUDRy12U+OV}%}sOV}|tPAZ*lO3OD zZXfX-ip>ohi4M0Nji7p@tz|4WXy?4gNKreo;mXB}7f-HhwNTHhFYNNMs;qc0a(84i z#3Qc}$gvny-PWD?DhXUZFE=yx;6xa`RvuHl)-%U_d6a2ulbiDkPzu1pmYBYKsyIz` z+*Dsr?=Z&#_PY2F#~#uenw9+5*gW><9rIv1k(=At)_x&Yq+W-I#yxkhBo~cAp_2j; z@d2t6C)KRG#IsL}+@;J}!BlIM(OIZBuFn|Q6)RTU&hEaQXQiR`}f+_+1lz&S~+*uWO;Bn6n9?H`B}aut%rq+-DgsA z)4<4geGiGTsR>~zR_=mh%%wBM(kA0eE*)tz-zf>d7Ah!n6Z!{`jBV3-vBFH&>F#J} ziAQOL&e-Ql&WBzNR`0^3G?guRBxT3DeQuj(a209pi^-j>qb^DaFE14{27mN@*R#n+ z`TlH?;G1G9m+#@b#ok*j8z#OKdoOW*nJ)1!=Gf|1EIC%dtzRpoaLhx(M`phK`IyJ2 z&r5fUKf5oBhn@W3v~E+RbFpU#UV*ZFvyR5QtGxsNE8lfXKXVA5_J`zQz4Xp2vD9df=Up;W#h2-%`s?k}EQ@5y z!@D+oy1B$7v(IfpBrru_!#V#dxC%bX#z+zk1(29>vE=Ydd z=3k~=8ZUAEl-=I0H>;dFKCib*X=sYq$>wTmzoh(^Z~tzMw%tR9iLwEi>D)QuR?p)K z^AFZ8UiSA2Nt_Ozb?->>nMn8T>k@t6zVDnwP50OtT}`DS$GIY@dZ!JW118+uTe^pQ zJ?hr#8Q`_MJUn`orTG4Y%;6tC>Fla~`_4SJdv0~)kjn&9ah2W?SKU%d@c(i4-ce0- zZTo2GND)-f(3D4zj`Sv76a@sNOOYbP&{2A?ii&_z0uM;9QbO+p2qHBINH0>Pg${xc zns|1?`+jSk-#LGL=df4{&17cpx%XYK``R-X=Kh>|%w8fI(zNILOR3;AI zY!C#Svp^6=B9R3{t2~s%AP4p98zKYe5kVnUY*=ayul_{A=ajQ9X}7_LU$5Fi1|*$& z^+>1ZH-zB9L=Xri8j_LvxmVIpKlWSl=)5ewy zlxS@a@N9Eta0EScvAId+mGC1-V6jzgT}Fx<%kA6S^4D0vv0%7od=YN;LObbPr>8<0 zW#fIynNtpM03x@VqAR}r<89-Jyu2x_|5bw!)nA^yh zOl_t#94Y8VQ~w&`-%p)i+hZE}@It84OID0YkuZ&v*+XS|9vYu;{AK4>9}ejoCm`zE zWsI)w#B%B+z(hNEq8DfpR@(tb97J{6VJ_SE^>~P#Sv!xY8Nws79$G>9D2d6GAD^Yn zr{hPRvswJXAn^Tah_NQ2}&7SH0Vf6Y&8XOtd6wkpM%??bd=@6GrbJAl__F?N<` z@l4Wt`lYA+SpO)4pMsoS(^T?%w&EsPZ`vvMIm?GT;McxImwFzf#Y}rc5fc#RPH9ZQ~ytknIfg zl{$y2xm)C+x8;37SM>B?l%p|@VSi5ZnRuvLlWBGmCd?D8Ngptw8$fT6= z+EniQ>9YHtHz6)V?=udw^6d&a)fQ9qs!a@<%<*s#i|KS}3}eXo$=|(mPRLt?^|QY} z246_d1KFsFsVRT0`Ze01_ikThC8%G^23Ytf=fNIS@kB_H&drqlILQf{qXt7O$rg*6 zz4|eK2>;GfuyRw-PG!lP+c3<_5mGbCr*;|S6>7TRy4l}(9x&^y;&nPh0Z9W2X#fL* zkcCg+JvIA*icm+%LMz(y)O=PdfqzJSKC75a3Up^Wk+}USJ7k#85Py}eWiMhEU5G!kE z#DaIH$D4~@y0vg@%AHg#pJniTQUpblU%EGaAbvUCM!ZPMjp&WfD@gwK+=r{qmKmkT z*Xo(CANXEK{pGS3NQv;3UGmfYg$y`;P6JqRx`Z6?z6MY%fb2#ic5?F|dg>zER+V$V zGCfG7>?|!ae)P}Kk)-0UuVhhC2JI}56ag>+?3VYQ+0RYZSDRWB$ADn)5X%`;Z3wCyP-JJd`cp*b}yzl9N_f*$p zQr17^-WcB;|6M43;t;6=6b<~+lj;+ss`R1u5K5|?)EFtEK2*i};T~i(ZuY}glTiXJ zb~j)ZV0hlYWKPcS1S?QhZTONk@lQg90RQ_BQ-XdIn}?)Xhd04MJQ1GvWS#Njj`zsE zl){#7){#j4(9&j4adYic)Ac!!q9o>PAlww z=KeF7@4W0wend|=Q|tW@UB{47>wvY#az0%Zk2;|3FMAINYvA28m9Ze5Ad?HR_cjqfj)SE>B@1WQ<)~` z-y5^Ett@ALE_}?Y$ItFwklpG}cZ>Cc~nlT|bQUfb`8eoAA{O;8z2pk}I>e(eH zFk1CN6vHc9`ebgY-Nc&JWBp}4m{o%G{hIb%`seZC{wVmN7`ZlZKAA4L9f| zi_WrDF`T*x4{6){eb;ZBk(6k}!V&56X!&epM!;jON({!vjcu@E_fU_Mqj{(=S=Mw7 z*1`NbCWaPSEKy-d^{lAwG7ly4k>&Nn86x*|^-|o?LCDM-t{Dxv`>hwJ^csGCe%PG0 zGGX5naCvglV2+)#Cxr`4v)OQ}0}22cVVVmq<0b|c+qbwU`~-G~vv$Sd#<;GZ08#qo$BDv@_%SVNmNV^I5;(P35V#= zGc&a%Uz_3}eFI>Fpjs8^#o8fi%s7W*fmqaYYq8**I9@v#7#}Ir;nqFw=wfAo8ir2<35sfd(!iWESf5O4S zT;JPeB6MYZt3P{{zvkcxC-z58x7}10u|NS08g=xmxD7DN#PlQGDT>(2F&_B1|Qujs{)tG<+YvYpV$|K6!aW8}>=+no@d#-(_!RR5n> zp@Mzx?t57bogwyNnH>kC)eb>V7f$S%Q;Q2E=^dJwH+C%&6JLG*P-}oinN%gLBct(IJ(Vj5AVM1sHhcjf(q;(X~?7nyOD~Dcdl#E7yPP zhVoJtXN{LoSPTl)topUO-_UO;KCxayc&1D`B*kjw3H*xSGo%)C5}dKK`{}9Kcra4E zuB1Ye%{W4yMN1bu5Y##bTMM7P32F3ykFp42udt$p-8*cLc5+2X4R1`_FT=!y5{-eJ zVY>7t6H263wndx6w4q9U^`edMsCKUTB@dk3G;x3-r*}eiX*<9(8R0hitlf4{|Hg znvuBd$Z%98hFS6PSgW4Oo!$Ajh12#g&iuS~1Qzdig$ z*3tKQu^%_=U7SXg?mELOLn}vy4nxT~qMK=d@r9Q#=smb>xG3o}7m-jU)Q%^TkK6UL{n?b(C(Vopc_&td00by+RH=!>>5iVM{Rhr<=t+~3XAPo;|G3%pdH zG&i2#%`&%4Apf4blCubUDFfx<{oapc!s<%uL2?exy8cXHEO|MtSPoC+n# zhi;D}<3oE-A}pq8n~j%;&D7o3cO!29vD3PykTy1$TJuHvarJe+60&u+toP1&s0elj zukG0*lC1swyMt@GS?#idNI`B<(H>p9{urW>@T^m-%ZNF)(Zx=F&6HTrv!7;C$CI?O zX+&}v*6!QoSFjCqF_AGiRjc^^XV`C~^4U}`Vum878?%T{+tawbw=r($Cfc$ZU%1Fd zq?2#O`c&Gr?JD=p%KJ|b7f{X?<~j~C24Uu`I6U?0M_uVjpq)B0X^2_1%oUz@_wl9U5B(HxSGVcwF#%$xltY4Z- z)aZxS?uF4|eZRPHyLcM7w`21z_`kC+6N!!U=Yq`?49OzDm^9=rBsqr7$aMe>zcKsB za<1DPev~Ah?jzW@h?sS|(Pw|WTR7+$IMeZjS2IExfpSK3y!qM7?{Ux944)AhvC-CJh` z<+R)(jY@4})-T=0q?J(w?CI$OswDlX;bhNleY2|1;r=U&xtEbAJ2U(m27P^7;$lw~ z8wEJBJ09nRF&3!{^38raDz=>QH*I=z_xldtX87z0-9Fh)T{wlGP_EjHRUfIU&eyk` z_;E6rVZ}Bi**U4J%k5woZ}ZyQrJt*l`ASG5_(RN=cg0%#6^X9TdfH-PB-z4c_Kp6J z29X$kdzuGSDn);|!x;@iD^7TiyjWh%ruCG5J|))9y}aSa--`6F@q9>0PKiciqa2M< zL&FnvaG-cH5=OcPg-1!V#Zwy*JJfRT)L)!kuME*IAh$2!Y}omg!f9tIK3ejJ#PRhE zx!KyVU7q@6yB1TM;1%!Wf1Vt;t6(_i1v9F@6hbn3e;uRG2-rr8eWqPJ}-@HZwnUH560luE9-rPoZHu2 znwMlW8)RW%^8Ljh-hnqp1pe;(^#wv|nbA1sx&FRNOKb$8ea+*jH*_>1&VTBoh^w(z z`M0|lz4;K9iAx-eU%Kp_WC-4LcQxzIw<@zAKAj{5$eMi_J1oZsl$7Y`BE0&DnMnK3 zlXoIVegl4SQrQlTu1zGtf&)tR-loY8>&Ni-4IXv|#`6YF_gwoD5i}5O_^)NrQsJtK zml*=T@W)1cbAB~>Y!;HIz^6hZVjkEPI#ZaavJv&it|rtC>Wi}FvsY2oc@f8chGeHV zDzGeRKTI`pllk7eZ}82`bZF4=fnEO8{qJuLSa)c2%S3$cOK(aGe)AM}bJ7$WGa50| zT1?$GgeF~TF}VK3#_sH=sL*zu6R~M_>)iCV_RJ@MKKzkWYHr+@!Jw|fO&i>-4IDJo znu8Y@iEDaIM_}d-8t=A#JQrdEyK2lkFb_Z5)rIRKEDVr#(k!sfQiGdxG z9n^nzydMOVb~?#q=*Kq+kIAG^cE!fglRb#sCtQJus;?Iv3zo8}WS)V4dKCup@0t_;erhza z)sp{isK@L9#?9##8@I!)*?_z1j3ncCD+Ts0mlfyaEa0mMQ4!Zq!aYjXcI^*f+H2Egym7NCsq-LKR)qF~t{3dYYq6=j++R);k zhF%=XrQn&|`t51$Y}00ub!u;=fSs~HZj=iVv2Yn#OL?7uODLjB^r#ohJx=pxJQ(?e zT#`%CdQGe}2f=Fxcb(|KNfNE{vUW+bcny31byu&<Yta%|bM|ig^RKh5 zqg8PRQX=T%S^Z#Bha?k+q>5gCN?L4C2oj}LrJHcP8=yhvP2CILi>%<*IE?XofHm1T zycE>|O+w3k7dRH5sRb4=Fe+e`^KNX-|3MKo8{RFB{q@7G^tN^?${VZXmu2BjS4Bo2V5 z{mRm{DqO+YZS=AYD7ZXaYGUXJ3C-VWCZj|vr3a3!9vEi236!PQTu@kzE*QUj;{M3k zu8-en`K3{Eh@h)>oSxT%`+?s+<^K-8K<^eD68OW_#)hQ12?FE}3H}TrS$jW$hIr53 zHHBZd*IC*b$B8;sF`bX-jFn3*Pini7EfG((LC8zC8VPx$XMeoFtFcj4-B#)Sl! z3l}g=2xP73av83t|E@_kCSU&a49Kk@(d!~f0I=!1PO z;4cID!@hV6{4q^Slq)6nWY;^RBV3xD{a-oukC)2geA0FZ*9*Q$b|tu6MM~;pAkcU) zt2FAAz1=>{mCG5ahmM_H<69r(mWT-Q(xy}O6-xBUeWy41t4H)Au{HK7R@suFL)FTL z@fFwXUcbjh{2eL9 z*mZW-pSBQ9zN7QKqcsZZ_(WPH${&}E-9H~x@k?1;h4}2TV`NM5M(f!$SS%3$-oC{4NNJaDcdK^@>>?A;j5I7+s}ErILF z`1hYuk;pIOT~9a?TZp9pQWNH_SZ+wgG4%)D2IaKP|DZgdB1>4JKV8^WG`VUFNYcCg z28BH5OWydeyG<;mU|8`h8GJT<*$EkQm&5bbUDd7b3y6bnHH=9DY@tlg&k5LC() z(=39*uH*}+z+y3|NRf(!F;ZDENMkQQX5}>*L7;-JOpGL(bC)b|^`k^`OmZ3o-0>|H zQ1sxmmr^Sy2ECx6ha@2^q{7s7X3|*NNED`Dome)8HZnAr;#>s3pRVkigKaOPJdsWc z7vG6I9Oz>U0|l>@Bdj3}5yd)CwX~}P<1vlbBO^DH+`hri&E~K3yPDC5nVAphtE|)az5Cw^5iVM$0QuMd z+-U@-rUl%J{(D!}`}op-)JVxiogFknngx8n5q!&k+|U1aZNj@a@bkaWrk(NEC{hT- z(sU;lYk==sSQO%r_oBx9g^Bj3N6v{V8QXk1;Hr`w$$ z9TOvBHcU|F&)a-0u_=47C8^Rg-)@$Pc^YA3qNyWjSz^U7zg@i?gI|$wMa2=B)-5PO zCj#eF;yqLDIDx!PO|^qrhqF!VEqVs~kCaBLKd$uyZE^9^$ho5u@}3={@4{mx0^Pei z4)+`s+JDr5Xs zT9*B(nNju+ZIP>zdk6@C0pko^*y#+U4%8H;8~R=SahVr!_yH}cos`YCQRKUF1D_ErXtcj??lY9si-DzWk7yS{Ejd{h8E;Po%qdAg#^Xbt zUJnUj+r9Td&IqqtHIEM^+MD6&Z)OEvy6SW9+jKNR)oNG*qkQ3+#7}}u?imt#oN@;{ z>!RH<+}62uS8Z)kS?cnS=_mIsY2?$yqRoxhhRrd?w8BxI}ew8Suf|LTVVeFQ?ej;-V9u1EbG8SuV;lEyOd^V$RP=F-~^yBCY?)@*2> z^6x|WxB4`!Y#CJz7f#mHWs?Ruht}>s09Bj9$?$TiBA5XFGHpE9ts_x;J-Vgpf&*JB zB$L%GF%&b-N*6f>w-=r-VfKbcA2uFHRmshcjtsr;(Y5egl%&Di1ki~A>(t8C3V-UY zIdF51dyi9m?kKHy%Lno-3sQvWFknjq=mCm~p+GHz!F&Z?Q)Fzzr+4o-PR8(eW1t*U zwB{Ym=72#d?}^!z6rO%Vs~_Mq3#^k^cn4Z1ptwyHj1wdbG}$fozGQoSK8Q$-P5?f#DDtzN>Nf$-uM$=l0y&Y9W5D*h}#iLT*3l*es`3o&_L=5*Cr=N z?06!OU$#bn+>HPE%UMpUgC}wq9;?P3v|0Ie$u!eP-#C1B28Ud76eo5o)rrmIoC;y@=)e_iVbZR@iVg`ZFjpY`=Ojd4suL~u3h}2q4BuGoqTpVHJb5 z%)w~u4*Ob?s%q6yX3*sTP?ZjpjA}tCyRnFhqlhPu^{9?)`o_>#yE9J>qdo!KwbKX_ z2RmcN<>L+W^bp?JTFE&R5E)1V{YQjiW+G1<_(1(b~4k= z4TS=b-^PUhua+}QrHqt$#e z$A_2R$$|N{({Icls`2HM?{zLjq?U7b6{9?bSK$|KCGI9O%p#(?KZ#TuiG9;T^1dyO zrELJ6-<| zSUMevkJVn(6RT(%!Hu+BOz>9rGRiA~4~FT}f`vD(Ax9&RBm)_GeO4 zj{Anj%Xljpc^zGnW)4h$%ilzrUm=1#}ZRA&G zXf&hh^M(Ee-L>}=s`sgu*P}LPys{s*$UVlRS3~uO)B45)J0#|xSuq}6YW@C1Wr6W^ z%7g7j+}lM2tXVcWN{XUpFF?@6AL{;r?WH_O$>zHCV|^Qy9{516GZ*nulGG1(n>3mW zUj66E8o6-xRu@xIaHW^_hQPnHyP|p91ynne#ZqY30zGa$^ytTV{nG5Nng77DZd?;Ujs@w_e-0|{I3wg_w#po34E`tA-=2L z-!E0dFirXgvU$lZNd5z*?b}`b*;3U$874K*x3lIMTuDpj+utei64UX{2aW$?MC{k1 z>g2-do?V|M(cd@GH9-}L_&PdYUE;9^yFLSx416&q|1u4Ia0qv09gvBBIp|T@dlVoI z#q`{6t)_L_9PqW$^m`_TFUFn*n6SJR7d0LMtwEjko?NXN3W3Wf?3^}9MuRWcs&>mP zkueu`oxY=Mno(lB>k5n1^Qd3{Y)<1{(xP;!0ESUV}xHX>l72y1FXNQVCht30ZfVt#mBc zRsb|}H)7#&2WU6yK8b8!A6w>t z&&WHUy|ywZ^4u6$dA~KQHpRQTXt9B^zFkV|Iq(O0LNBx`eaory0FE!pnl zq~;%HH##s+nF4|6xJe*z3Z>EmSD3xm@`F-w6*K(Bq=gc9qc)Ks@@PhZl+feT>u$GW zFN*#X!DYq9M?RhKr4dm}uqUKz8-5#8dh`s(v=>4Ih)iksjEenxKj>IL&sP>La%9$BwV;ornDladd=gDtXhMg`)iRHzZP2#lB_`2E{fq(VX`e=qZoa+zhK~g~ z0MT#niG~}B5K4GCS1QjwevQ;f5qp|;5X3U4-!LxZv1?k-^aTIFEz6k!s`K3+ec z85cvd-4sYkK67#!XhwSr29_adPqaps4my4iRSN3TicB4SS^()EktmN|!=q+;X>@rI#K;T`NY45^C+4L=&f913)EtS>KN!-)uh$atUxgdOh3vx2 zE77X4IqZ_jcUp=^O$q`0^mflhf2N#`*?SR}ECB+RMvfM@;$94w2{) z72=&e=y|wx=J#;EDbeldc8EQPKGd|@)JNjqr_$qF*Ss092D8E@bS>?ymiQ>ET}zb` zL{c$o`y%Hi+xqQ}6mihAMvmwstHoV@T$$W&Pkxd?f(t?qr#5cp=A`-$|y173N<6va^)Iyhvscp?_+3p-ww_@!gS8YB~;-vIBe7otVSQVn9FA`A{;%K>) z%0G4;WNc_LnM9s+3Uh}j^6;CRLCz0Hd_NyQ&f!nLZR=B$%`P7Ctg;!6i@i3L71DSI z>BV2y{%cxm4UuaeworbtML0_(KU|`@w8VrXzB*5C&*2HJ>z{wO!s48z-_9#pJ-k8g z_}3%6yuHmsdx0N_)G>rCaku>8%#v6zMY#3-5hcm0-I?`+5s7L;z53y$5dlUH*+*Wj zr4>ok1O3^KDVWA$zik-jeT33}=93ZC&(m+#?(7bJ_Pk;LS@*)Czd|Bt|E=FCy;Wre z*P@5=ibsZa)GRkjb!Giz!QH`+m#HexCwuRKPR29^OCeo&vK%U}fEtrr-%tn)EkSx> zfR6_GXh5%er-A>%m5A~yZO+>*40Iu=M1QW_zV2K=5ioFil`K6x(7X^fSzTHZ5)+Zd z^TdMDvsQxy*VKoC?NDk!h$Rwj@_NUKD@6%u_;IIBhmG=~@Var$*Bq zq(CXF7yp-~(B>&yjRZ1AxA#3OS2;5=D0UL|H zwX|V^?=4WTF8M+HydFbv%rReiJU8MmMB-O3;rhh02Dg(6eUR{N%HH{$Ssno>8YchR zE#0U!HK|MGU9CfPzozwV{+{F-zH~gHn(%VG1|#LOz2~;w7hmwzk5_X~>643Bw0K2h zVa&TzYxj!0ke^RLj1}1IYpp6K|FxnyLdYt$pMcDSn=Hm4K-kbpSl60obims{WkHZO zT2exowWvClM=iyl>y{c97Uf?Xn^N;sL7||wmAY&?`7&?NzgJXMCCipU~YO3YNzV|$P0Ko04&0%wm_^K^33spKCQSg zYr)`K03spOGdf-jPhZl}$-UYG1xs(15X8CZ7(he03P^1ruW%Bbs(RSA)RlPZUlz#_ zZWsmxKz=h5{JZyOxtXrSWOkn!&C>o zTNL8*PH|gp*N6TDy=*#PnKp{aMuGGT3)L^@FKL#Rag_QD?S&ba{*Da*Qvw}_{G-W9YO5d240Nj5Kroq!dg zpDJ55{Y?G`Vm1F+<}FF_n=KUy7@7?^+RccOjW5~qEIG&GBD%tbtVw^A&|up z5r@6{!P|T4camajwxg34_FE6+AdV#2pP$(jWjb1NVwYGEmcU*ikb6sG{F^raLAIq~ zysOuyjOdwtTww9Mk*LstE)%}ibBHO3zeROaU2T5EM03O$wmXC2nU$n+#HygxWc4Or z7V482P~5#A6XT}Z=kuRaep^560!cH#u9mD?O*pPB0{7_@-~-oPPKnH6uQ{sL^phgY zVK^u|I^O8Zom71_O!v_#Ygwd~JB?@WYvB1EFHedB-3t2koR|IDbX8s!qGQ`C3(KMQ^Fm^Ba5E z@=OHEDA~K(q#!n0FX2x8%%w-9v1|b|Q{$&Z4*}v;ZUCi-c*f7fk?1Rfy>U_vUcp8i znKjN=IPQPDjQf-rua^TxKgaxp9HRI}9_!|TLPW;G5OxETFy`FePpYc?@lDFI>x1`R zCML-)4o)IE4iX^GyU=a&ywaXxOZvq$1*@{HzSF%zx(Ce6NLz0sykna{cfp%chCNTI zEOwI~nmZl*H=7X^bv3gg2=O;|bQrxnQeMown62CRGlNplLckIWmvypaP&J(K6YQ_8 zZWtK-@<`*o*W^))kjJoz8Ui*AaU3UWy5gni6HrKG;=d^K8nQgG&dOCuBilbMVw+9P^h z?yM&*A*5KKg8g3N9)UVyQijzvDSR3!!1pD~OrYZ#;VP07F+}4BW^Q)#RSg3=eu5*X zn|UB~aRG2=yWWa6+Het-h-pB~%@`Xme;3-}=__iss=6N7gmVn~55g;hg&`R_l$#k1 zj%4Q8e}70(4UqaXiSB{|Ue@SU+2s0~tWSvv5>nIp3DRUb><*Ek13WZ>7Nq+_2Pdd6 zpEwID02~l%F!>UcN1^D?3atDkq(^N@0*b{aT|Og=jdWQNI%c2;!N2{(TG5(@U~pAz z{H;d{2G%(|7a78Re^b5aPnrdlA3Yg}nQM4%jBMlQrTUu49Q33!<*(hoE|z|1jsi;< z=hB#oB{DJx94kqE8Xx)l2mbt8UlFS1|sT@%4-d7H!WtwWbdgEn~|F%R&4V-WAEQ}B zeYD}Sthyc`r0hm7zNhHjs5Z0%Y}wiGc*;O$w+a6?n-IMc8R&N?nL4jmi2$$*R)A+n zjI`e~o`-2_*V@gMtgBY2f_4J<2rx@3hPx;IQ?8ED5}fLQ;k3eL3LpaC+ANmEAQH*w zUQXM9UD+=ktqF<>=0ZU2t8Ou~81sW%ROc4Yg9%8w-!$p-KMm#X)D(Ec8#3A8_Nocz z+Q(0cTvLf*Zi@-+>N?u5OhZqPMJ=Kj?x{xoe7K+aP}z1VB@vglPEK&Tj`A~VeLkT$G z{7oB29FdH`zo1jP)Kq!>j)L^<%}bU0?&KZo1*I7aD(d zCex<3#XYSeNzZgVJO&Sv32Z|7ufd25bm_$JBw6qSC=+xjDmdfHxn|90r@8*{jFHnB zou?2Sj@l9*7=mG(M{?uOlM>yM0R9o(B9~_`KRlt>yLK>Q0PEx3QSJD5YeK87Z{=)! zHO1oQ45snaN^KeSWx(EDTa&v*qy+HN^lwD&Qrw!sa#TgU5t)&5pX<}Bg-2c{sLvsa z{*zQCpXz{|{jG02H|!R~N zFRYk0>dQdkWeTdBMSyA7^ne0?0w{Apv$ZPak)=%wnsPPknVEvw&n#ksg5ipe?_lFS zK3#?tBx0`1D;;iKANIs_frQ9@`};q%k@{6H8gl_Zln^n7b&68?FuU42_lfCh&R|R6 zq4(^<5e^|BOprg|XPz+_>Dnp;|B5Y6fXlk}VPMU29H*btd&za_LC@X*@RZTIwCC#o z34XZT%Asj?^iwxqz;Af5v3a}tUuxF-KDX*7DGiWs3Ta<~m}g@8XxKzEJ{LqLna27n z{jt|lQ^E#5PrlW^5iLGUiv~&V1e(tdrhb{*L9_PP$n@Ay8znI>HPVdhwa%GUSd{4| z5#G#{S|l5Euj>wd1%M-ei<)`szUT+ZAdjJbiP6NU5;L&LizSl5fS6W$cvnO!Dbb6S zcvNfqRj$8b73l8{;6Y_+?FKx5yekj)<&=0V3>T|`x?|TI_m2iLE5ZOI8_uNHD?ri< z!u^;T*DW?Yu>k{G()|`aiv|-yQ^ehV00YalVSyU3WUhrtD(2hy-IZ*;CtH6dVLMHz z--}!t;4FhLr`K9^=>3nl*=M{|%Jy8F8(+^p9Gw*M5j;<)oN!-K`cZ?!yiScA+IlV+tF#u>KhF(Y~P-_tL`QezoxoV0;eN=+WOXc7PF=2oucp zIM%I)#oQyM!d)J`?RX*f`5!kvxAg`4jKE^bYo@91eTF{#!AVUkZRQFf2BYJubuEdF zMbGbEH1x1gr4GZ8S@#kXQ;Fs(nn z*T+d!t!xnn#VKw*qTJh$CZO-hjmJF~q8m)pqxPwYi^>LRTSBbPgwAvHK5|_K({2sB zn=rLBP84Tny``<6ho7V>Rk05Jl4*MOcn>*BlHdd1+D{xasX2i8^U|gce(lbUhR`_G zI{lHX0-V;ZH?+GBKlF|X{ZvS-O|gz;ROC1QFOtAR@^p=hMQm2)&yxGV_k=;~ke_9I zE7Q{a`nivv2`NxWM=%?cg&=Tgg-kU+udbXbM~j5-5O^_=>-3?GBbE+P@qcfWHQlxn zI=Xpy`J60-ZqpCrO|xoL>?I=Hi+3HlF{!2PNz}o!DdKZ)ch@ddfC%EvkdO$Ll29_^ z{}9FnfB)~SgDh&$`wG5ppTKARk-dYRh){K~v2oH^f6UmF?_@p?1eq9HQcK4cP3oh+ z&>A6vdIa}VH{+L4Mrd0eA@10iO5Fiv`tLP{M=Ia zy|Ve$`j%Ry2o7iFei!EL4~SFcveE5dYdJ?+;R4lQ`-hbc44J8X^*<{N)5XL4DHXll zvK&*J#7=^xbTvkh1BIZ^3;tfzEiuK_W*EZF{r2lLOZUkIHrUsHs_sLQIp51UBI@|y zNWw8b*W7N3mol}uT9n9?IhZ>N4mQ_XYPf3o9BxX(R()3lpF>Eds+kPyJ!UnG`9Oz4 z+`~0Gkx;rp_Vp&lpxsYE@Ep_%JR9?Cxz76e_}LpXtY}Z^9tbvz*-eoWX4vyNu;u#? z>#U8|MiEb1nP%pqvVGQWbvh8A*HWuLTtp7WPW*rCEbmq}Z}@g-vAS$F#mjWVrm1%F zaKz_k+^J9VBI>_&B0&iMv*v_6#unpFMO@cGBuD;_5WoP&?Pbs!qM*oA4f!U!G{{Xk z8PZf58B-kNXlWBUF>rwmPYDD}E8|?!%oy6er3knxpQj0A%X~<(it27#4<5t^8#0YA zjQe%V3Ry>f8Rv;CjueUQ{~HwFQKnbocI2P00yTd9vX*$`zqN5d?Za|V;(&yPzJwz5 zrZi+S?<6gtUjfS=54e#uNCAE~r4+DN8nQOFhvpIng!AHOODTE@GCpvd2CMPMx7s{= zngavYE6dH5Eg20Peo6^1)#G7V5Ge8;+3%MlQ1M*435#l9G+a}tJ0zbyI=l2Fo4u!2 z;Xyfq*4v37DEg6#eX-b46S7P_<~zAyHw_yRbkce1*vWQJtYw;xWpS)7|M$5Sa&|w- zMl&;gGJ5624lB_4SPo~Hf@`whNN2 zSe!%pZY)Br|5I$t5&ctVN(y5+5 z`;hROSzDnR!Shdq;<>smLxLYz{fB9Yzhm%2Ff_1b74HNgzUtHNcHv}B`^!dIMCVp; zn3egZn1afc4D4I{_gppP9(fBtx2EDceKzH2xT4nL^%Qe{nWmG6PEx|sLZEwp;tws$ zFAf)MGW{og0v2gg9J6^=3ID5b?r$D{+?m1TYJnUm&s-rcWsmfN<1~fTXcs76L0W={ za{O<2{lRz>l~~~@f0zgOIc~0YQV}IRS&?chQPvgB)YxEfW(Nz6e zCi083Xfx&l{o-y7M1v00MD3`A{Ff4i_p@;~U?nv#mU^+K=~G(9u~H2cqg_w#64$_q zB_&(JmvRMu9aX2^VSYxGMGT;-V+qdqpJV)*{(;N2pEF{vWNbDyw&HrpJpnOO$RRa! zU~xLrE|QGEgIg)0-vAt^PPXo)J-rY%k0etL84uY{*l*M06NK0ve7v&ZQhS2H=_W55 zSYn$ZZ9QM7j?8^~=-RIJW*FPZ64^aV0=j*8>ex!D@W!D3bH1`Tuynbv%+He&!98^o zMUoBRT>ZU9g-YqFI6D371zJV}yz)uN&cU@~nM)*Q>;F|ELj6R5k^e`tCi(V)iAp>m zA2hl&z=t&^NVL7Q7`ifUEoSG5!JmUY zr}gtQ##fRq!R^=2IaJ5L0n7hNST)!!`7sjkh=8tlu=rG#^U*ji?KLmukqP-MFp{ex zd^74UcTLKj`u3}^oeN$;nl#2>n3k@_X)$FNJ=ee}K?NT$oc+c=!9F`;>68HmG9V_4 zf%RS^nA135`G*3%lgTYGntTazm&B_8h(vHqWdUQtL>0Z=qR!O+xT!?|?7?PAlO|t9C>z|0$gF63Q=j@{Suw|$75$WtXtLinb zdWdhlbzu6>M{D%cvgYLD4V}SKe@F=Ch`#pd>LL{c-ByODDS{vT6E7eGH7mkjC2ehs zoOLbV6Q6qz$8WD_m`Em%;iH670@Cd669tJBls|hIYxU{;JBL|<9!(%Ea5Ha~wO|~N zkY$Jz5taN~jyonJT;uS^>3S1rktX=&s-0zffkjprzdKg=O%Y&EfXoI^VSekbbA)FO zyf|>t?2>OIk@UXnyEwO$%CDnEXD0lx7z763$2^oxU%E<+!s?%&3#`c-i{MO}bkG9( z8PN`$+uwXu1T5c6w73=+asLukrMg+FKFuFNoD@ubmEgF4gt?j9bruYHs!t}FCA_h4 z(CjzXFz0q`>g%6b8gpq5`zNkE7Nzr~yuz&NTz2xN=>f|KF0diuk(zAjDYG9g*q}zq zdfoYrWNi1RYLDb3)L!g`QT|r5M#2e}DoeEsixqOGljy~e#JS+jL3#`n*f~DC5gmPe z;k^92|8flDkuv#B-%jU<_R++J=1PGXHtsky^U%0vg%C7cF$Vb9bF>r*ri)w zeI|QGX2o5+5wLZH`10pxjp1`M4$_z$u$faYG5r!bLC$N9-$gnWe@bcW(v_YnGV|Gt z|D!zaUTP<#XO8XjNv;P>Ah5=XDFBbKTPrwy_P{7~NIcz1uv3FTHC6gcMq<6#l&H~o zqr{K%-yUd{TVEZET3-RGuL*a=WOe;FA+}{G$dRBF6d4CD2COWYoqePr-1lz_qPmpT z_32|ri@y7JWp_{~O(h;wXu>ft{r@LrR>`zTWUIpm?YSVMX34!OKRe@x9NHlyDZzne zpPzJ_s4xe6?&{reh!P;Q`hmx;BsJ?*skXwkc{a}L0*|DHakG$HTs6nGpE{`H$MSx* zF3{WpHb|7;Z@CDF>P5o6ig8{WwCxxD28NpQ+JL@oT(L-U`%9YhF%j}d&cA>BG%Um~ zxaNNK*MIkMTj6c4<2tzhEXZ?Y%*||e3DHfI*>aRkG+guX+qST0*vW2Sv_P|b$u-y3E<3j%s@QuPHgXY@)Tmky0UD)(l zq@CiMLGb49>yjPu+ZL0#TRSKDiHlK=HUi-Gfr`+k8o>b zEG84f*jYB#pV!6*&CKh|M!Uj`XO4fJ)t6rufT@{ZNLV!-JMBOd**g4=j4Rh2m=0vU z*PpSAA)MU-CCgmA%Ws{s8>KdlbQj17Mve$p%R(fBW=+VZeUesMPV&oDby&Ng*#Z)P z1}VPpIt`wI(~&^k!WCo*_?aS{IU+(aw|}`6X1F zrq3t_xZIL{OutMt&ZT8+xyvUk&sNqRO%3HIo0e$-1u$|`vd!0*?niwPXk29Yi`$2u zvczE`Sua4x8{k@+=JFyTKT&tnXB7i#D_}^(J5(roIn|^7jWxzFWY4YkKK6IMPl4-S zQc862R`R=RCKHcb-z^9TX9)TN`2L8ZbF41tILb5&`Avna*4ftKU6JA2#4eR;0(1SA6i*E$k!gOIy-w5I1~abTFOPb`z=qn=f!k^;9jN&@v7;s9tJvz> zH;RZXF$T(A1HS*xc>rA*=yDZ~ zjlkv8el~yc*B`zA#fWt7?1KNr>tsYQ#x@?X<73PEpF8h}`wf3xr%~aJ6nrlQ#;n83 zMCpTDjSZlbBO?Kbk44Zl!y)~aTP|nU#XI;T0T6^JM==56fy;r0Y-inD%$uP%-;alM zJM1C8l2N9_dd)Xzks9aU04Xrq8m>}QcU8TE*9mM7mi*4h>|F?UiZd7zw~zR{Q-C1} zS0a*6Li+z-oV|Hm&FLFHeu%nBGN=?vi#E$7A&Hc> zw4BP4q~)~lr_jD0+D>&k^}U{BX1<@_@2}tMH?MikyvEcy@AvcE&wXF_b>Gi@nVuij z_N*v%iO8cBq^A7E6*cp%d@Y(6pOPiITg+ZX;jE$3l$zn@==l4;Ckdv%4VC>;QeG@` za7oNe+4}!^3oTn4!X2p#!-EFdiY)d?Q7Y3rWU1D72)o&Wquu!zxx@xepmez{CmDZ(Wk5pJNvn=zDd8d zD=?L=Ep%VIRXN?_D%XE+VQ}$CG`dq=LkRQdjzI)W`a~?%=-5)r*1g}iwR3g3zXhwa zVae)Kcdl=3Pb>a*m$e1!$T6JE{=b$BfCx2p_pjc|M~DOW`2aX zz6#ykO2oPG7r)pbkEMwS(PT-#*-BUtLo={GR-pWD{r`5V7})A1$LPU$V^IH)as z?wZcuGa|XBC_v&{%E^QDPiysaXJb+iX6BwvM+TIc`)HMA9e($x%|=##c|Oy&dcjCr z3AeGzn7w}Ll?M?t%d=@d?~myh0!M3RwIr7-&W3F;DO~q{-R>)M3pfYk@$&psT;2(} ze%D|kkKcVVr9;<_dUJ7&QJHokF-*>a*77XfUgmb{K)127!Q{tVvmTs%9gZ$c|IoH% zuh!F;g_O2cU(U?CszpJ5@|QLb#cwx$^XH3sm~m0?ZIr*ZS0bAJQ#|>9g8%>bA95hU ze~d!mNj_8@t{Ubsm(SRO_%Rc1>3P%8Bd$WD&Q95RB^8e=P`-FEqgZs8{9fhTtSuz1 zQTn*h;K$d9T&rI#akDIQX7XwDdxfm84s@$u^%e}Z(WcZ?^%y<5?F`z+WrZDiAr|^5 zuFAHzT;FgnW8ywT0h$3-j5d?G6xD)B!{w|gUlT5h$*r9S zP1nM2lGgCTH66f-=7-5(G38VrBabN7F``rMOalEF&#ZG z-N&R-ZfW>~;bOQ$2W?;aws0PMgiEi`VhFLgA7hhp|Et%p>zLt#r#*33rz)%znHDSK_N@Lu1m5!f5xJrmf&CfJy1Qgub?^2S; z=DVRd`u@UdwXWoCDq3N&WX5%OPtSOd>YP3!Z`7Y?OtEWJ*$*a$TDE9(Jx!dqdQFv@kh#qmLY7t^9MlYj;jO;HZ!{nM<0fK1+pbm%e1=m+c2~sX`@Zbc zxfuU_eFGUJ$4@4j;aAr~Y!VY}F*Y~}=cclyK24(Lu7KPaV{Vo)tvc5;M+U2sxo@l0 zFhdS=#L3X+IR%ZCWau0wNn`FZp7nUJdCrxu*Tc$V$ti*8xD`bE4s3q%@;oGHjNV+? z$DlH!$OC^?ctOTT8?;XclM%^h5@RJwWiSLDQ~s^6EFzv`_t&ghv-;K(GA#S+*RM-| zF|fLv?U~$U4Zl#L@B#zk4#sFpj`Ut%GG@!;*%LujLQ1wo_jUxR)?-vVrcOIE+O{*O z*o7d`zdwHbs1si&EG9_&67Ek)*>z*I**Y^aRJDC}B5S%X+3WdomC3zOe>)Kti^b66 zOzy+*K71dU{R{5{x8jH~+GGGZWO)QCmhl_3xbfepKlA+JD~v<-ocwxwdOX=XvF3$V zJl!T9N>q_AAWe;d_wlfG41K?F@uCL5q~TUtIOghM)}gt6EYTmBn@*m4g(>O7eVj3pVHUtJ zJiou?aT`d?awNmbKeyOqZSGpi?H9muIx0E*pI?-@u=C?Xt;u#T)@3#%A;|#tI-4xM z1=p}HwHIWtzQpNbDnBNM>%pSTH+OWFJP3=3kPt5k4>#d!X-ml9OhRmr#Jp+vY%;8T z?OGgU41V5Y_wCPPQA%+zikHU8R#+%9$C}K`Co&ZnSdX)?*Kf+JkAbGU@ zk3;34$|{)}E5hzo-*e@Q53Evu95Uc!PQ2F-Ka*aQxp5OHHDucxOq7)!ZJOzVTmycn zt4GR<4h%bU;S2x6VA(W`j{s?fwfM<6bIi5;YW;4;`hzU@sZc4Z0Td=QbMZf6{I<;aYGI-7* zOWBcL55G>7NU#nykhqK^h6oJ6djKZ@f+6Z;*mORV%IM2zFs^ARn010si~6hwb(1pG z3CLcNDe&5>G0^e?oD8O+*I{pr*ptPo^)C6Nk?yl9F!)o!=F`0~0SFx#_N>f@(I)vG zQ)w7hp8;vCGy$hvdi}e1`?J}$7&du(xd@p<4x9j0im4qNcn^>f+L#j!gN2EWv{}Kc zl8^^qh^eNfpUV-%$J^W)eTWX}1VF&_?%%(k79&O(Kh@CFmQ(_%jrv?hemoQ&U(#*F zdEck$e|fLF+ud^XUuT0Mj>PoFCR%IXs(33YF_FYRa+JqD3fT5e^+Y#(`0$59 z)`+&Mi8g!ttHoqay@5eZW#v80OvPE3*|qB_gy}R*ratQlPr3_Z(z_IOERbk~z(K&X z#3{Y^n4NJY0SrP9UGpV5I13{~Ax$G$>$}~zD08UIP7t1J{knDAvX*3$A>~4wHBQV% z!fayZ*adT0vqSB(nk4>zeSdpA(bn?_XTvenJ@=hz-7k+--NX*LHgqEPy_jyIdBs9* zD{aJ}l}A`+i>Cvnd$xqVs_^~S!UaA&&Rd{iLY6U9+R_nERbEl?d2I|L6J~_Rs0Z}h z&P~{k2h2?dkaK_V;6atFOLheg*7au;dS0ibJnrl38=2AnVTq}v1UdL);Jd8Dwu6$u zk?@loJOu|IpsR{+4Nl^_)NRbkM0kFnYV$8^kb*piOLqcVMm>)UdMMY{t zs$Paf*!;1`?DyNmJ7sOR_gdN;9knFzbJP-!!M{*tYhb!N35laL)nsU_SY5sPMu`=F z`z7UH+qRp?IxVvuB2LVLIV#ch0btnbZw8kx@9#9&xRW~aS=?=Qsz)T7b@7LS?Cr16 zOdt|N2yVa^fk1?qI!orh!y^P6v?Ca=Rx^M8MBY~L))OEd5)_FqJQ4R$NH4rRmW*O2 z!Y@L)eg#&7#egJT9+*8HWFCqkobPsM){HQYTTfvIIVJ=8Zafu#3hN=GNiZBoas%f9 zX7qE2KL>h3OhVl9+(c9ccgiRu9;e%q7FEaaVk$zyCBE(w5w0;aGn=jo@OmaPH(3mq zvv-}3Naj0iF=u3QKvM5V>pN8dhUDEnM@qI}hAbwX(rv699d&H;e%vCEM@{<~9-7E1 z;Tr-!+dM1Ui23GwVS_H^DT9&B(-L1SEG;uqQjX6u&kc7F)ev{44Mch_H&T0Q+=|aG z*!LK7U?J@!?)%h!UWn-5-QC@vv%|W|Q+f=~Kt~PYPS6H^iZ2n@2+YlN`X?dq^YeoM zO&~clnD2i9UkQ_KQpWabMG0uTBJP3btCrdB?UlM$$zw7FNH@-* zr=stHmP!?b3dZ49IP=?SkwqX~MPd|*dU6F*n(P;I zW6@(w?>Q!{U&=eVZQ)j**~a;v5TIxG>lIYP(TPJ3;MOg&wnTjBd5H0e^d=pI)Zz`w zy~0&3>Az{71X+Lt_q!S&-xmZkhzGqy64TOEEmH?Mn`6-`i3D>I=v+$4d-GS#}Q&fbjaI4XvS@-D+J~+Y(I05@vc(g1p<^sy1p*A8^5C3$sn4+*l99%x|CMM zVr8{J3N3MIbQYu~h)mIsBL49o#Ujw)(huaILjHnDwd~y~S2ui*H(?)!K2Qh~jpkOE zZ}0Z?CO^=N43uMB+CB9|yk}AYB?*!t8Co)R;!M*UOf4VDSnycLXlncVeF{B}5F{Ym zx(6{HqT-1=cuU=Bh(GUzrEB|KNw68u@L2Rs{-2=(vZV6ZQbm<5p$Xm z`-oCfJKQZMD(~LC`#I$2iT@}~8xcI6I&>M&O&)}x8i2_G+u3g0F<7t37Of~~yD$yU zX0#01x6r%&Uq;IvjGJ^Hlli9<=?Bez$p>T!uFnPpL>BvB1o5@h5R`-BcyI==HNVb z-FWt!Vxk6>nAKJ-<@MtixWH|^2Y`TqE~q~~3b=LLm0P{w8YB~fV*3u9l6U9Y^)uO; zobS7k20a?Y_0KPciga@j4UlmXq+`D6Arb(506_%xXArZ z*2GeS4&Q}_MAe5U{pEEfTtgYxQ5tq~PLk)!nqnBn*AaOfPlkK@NhE2|fO1_k#Add) zUrAEnJwQ$-w*OT=d&qWx;0V_-^DXK`2x<($8L@Pp$9^Q4PQtl4nIDi>$}~ja4WzdI2yh;TDnilrB7o%39C-N zU5>P1Cow&`OM6{k%?qM@gm49E59)M({2u4QM?WQ#D&IVJk?ekNt+^nDI{bn|Ads}2 z*gS+cZ0I@9ckpJ|wyO~Rt>l8)9HjPnrq8PQv-wx69|GwH7QAp1JTUw)Qbx(F?|edP zR3_XfP!^Ggf`1}{M9`oqus&`NT__U9qdg}=q5Ap?LP2g+$!!eEbV$LBnuyor*IU^S zsdYEcV2+hz?PMI=u6`-P6aM_3Y$o~)}U7~eTujla7K&fLmlZ76rlEa&AcI& zJ8+ZV_?{?rsylqTPs{riNfUJA`(Ox{rshPDe>_`iIyagrJ!RVRib65pqVdN*o%xmi zz0>eaFI8v0E}w=sbODCNkPBEN;Nrk-)tM)RNC9_6j%>nkNRxf}PclW=uC%Q?(Xr^{ z#Ky;Kw0@XC7oAOSXGbE^zc%GQA8bxE@NB(C1=s;|KUBwvlR~KdIoRCJPMc9Mmk&53 zBQO8vH;QWfkTun>0%O?8?hr6hXDwTr*!uC2y}(t$Vqlkt4_%x*N6Y2LOHF1^0I`td zF3EeQ*t=HCYh)E3PpSG_P(`dyrYG0iHdbGvK^7;UC-z%wEqf}y4kwlzkj#dtcUe|MR6(!^M*_({Q70q*n$gsQ4Ki99%qhqt$>C|L?{>HDs2ncnIOO5sF9k;K=}xc5y2*R{`d4VwS3;R z+eS*nA0oosB&-u*njrEs-Q18LOE3eG%oFXB-rnxXq}#97Nlnay5D@YWLSB)8OMDd} z7oK?>F-?8M_4qP8?4myjTp^SMSsuV>Ny~Tx9bttVt(k%R57vbg@hY z0W(>p#}FVf|Hthp{F2?adAf8k3xP)sknVW7PWWpFBzrbP%%;po3M3^tpYpbg}#rZAdSEWS; z+M4qoU(Q%~CJ<3!3|UqX^ESc&LM-7cZ_j-f8H;3ir~|YFu2$2Y8i=p!H)61!_UnUd zK+@_T+A=fhEB%2}*&uu#?=O$f{q}%N>fgq12ssPnVoR!8emEf2B8esh)m+yktWCWy z`ZqGU(soFIVo#TjZgJ-a>P@R^(RUo}**@C>kV14s310=~0S=j*4X?2nkv^!sP16}( zFE}X>!ISBhv`fy;nF&W%C({TR1xyFi9jV}O(0f$QJ7#XgWY!PK_DRVvy*5iO7%0g| zh&>K`4Y!M5>?hPF@wThl|ArJa{pqXKVIb;0`dn=#36zS}RW z-AmFD^L_eqCNEswsQ1@B`t4T3UGH^eW#^2LI#{JaT2qzXr!`$9<@E&k5!yk0BpZdU z@~e|Cj*&!wklM))Y#7qg?JY+f>9(0|Q0SDT`5%92XZiVrmMtJ@5}iJQOjX#QDI_k+J|OAJ-BL z2t5UXVFe`rP1gNj;|Zw@VLsj286XF!4z#Iu$a8W|5^Z9(iY+dhY2yf$;8TfC9D)NV zLKUNehNmx?1$+iyW#{sq;`Qo?gvN>mT|L{y7KZcdOh+s^Y9~2tJi6oVPT!6M9LswynY?9)v73fB)5ZG*NgZJp(~}(m@Ij2GD3kJ4S&Y^c1 zZiVK9RD8%!UVVn*+R+;(221AaQ*c#Tw}Ms%>+h) zT-)Q=dygm?%KIbnC}j!!Ydyjf-IYdH_$;g3qQ5i@I6)iAWBBMn<#+noZC{LZq-CS& zV(SaWZe3JfDn7+c;z=IRM~{h{<$?nA8s>7bKY# z`(H%5=M9Qi2DlbU??3ng&~O^BZ756KHakm_P0)t~eh^6S0#+QzXTV5ler2$bC#hGE ze1ohK5|_{J$BK zg77N=Y7=F0MZ~g-lX8>vU~D_e2^VL`6-iVo*{-;sPA~kaKQ=TWhk}#nei% zHFngVw{DjE*I0gaE4KVYTa@A1m!^Sk;6nx0ni9U?ro;OU>0>L zlC2=zkW3a;GcdNF9d1xEY3y|Q7Iz%FavDv1(R}b-x*qOa7i=#K(q9Rv-3NCKVUgi= z$Mhg+3WEhj3!5cb01OIWLH4V%a>ai~$N7F>Y#g)<;a~`PgSC|WJ;H&2I#7&F)a(oQ z>J)FMoo)oRM*JD7fKuY?Ap(O^(mc2G=g%MLas`%$IH^l^QBLEu9KZ`sP>^@9MCn6O zjdid64&U5)5RQ-R5D6v_MUtGv_W_U~KqM_Sc*AHI%IWRzkEkgtyQ4DIxr)RZeB=X% zW5h87k#XD>_(2tALd7TxHA8#3Q_uH2KPvD+egTz;m6Q z&mcL;|96`^M7xNNGknALxubAjUCBdW`;q5_OwG>(<7A(djL`#szYF zx%D?VBq!iz@0kvf@$PWj{<2W%CGS&ObC}=!q@cWW=tTCX?U^$QJ#fS?4^ljLaYG02 zIMV3a0I#u4D1?fE0A99COtXe1%iB8hC1ufL9BF~|=19?n_Bb9Qk5P4>RH{Dwy~_NM zAV>-b?EcJfe1uKC%uK;8k-{QLTnN2~a0w+>!hC9ZPeY0PnfFwPcT>vRekYh9r(g)| z4X}GW>ZbUbi&A;t-`%1Z-Z|P_;9UTfR^q3n9r2|^)w9iGR1+US7=NbFfE^MrQr`h- zBN1N#F31zMb}eZ?kx5h(w-;j1@+VEk8=4>@baME%@1(B zC&)EK}~I~&Qv>u zuR+-D^JM0>*Ab8c4e6zR2h8q}L>QaiPco6PuoJm-^bEk#>v=>x9)mP%x<@tm0Tzlx z2NO_PL=Ib@+M9Sm1bndj#Nf8@dTSNGtn7HJ__}HWV+kvO#nyqQvUqad(}LN7f_lOR zLv3gK7t}&Pk9M^Knh@87=z)N}P2J(;3+Vy4FH$TAu7Wf9+2Np6y-tzRylb?k7^#V@ z?8Hs)0LT<`2%yiGUOuEPfr=!-nBYvum(Ft>4ep1LU->TwYh2o_@B#;i^Ugq-UU>ID zgauHpXA)oigQ~ni^PGYJZw-;r#IK_r4@*l9&-7qAjnqa)N@lR*;DMconxEsavZk@9 z@z<_hvwxzeqlm1D!!aR3Oi$6glkm&IMw+%{xe$hkdObl@fB(H0^?&g2pj-!V*!FnO z=7DM;B_x|{$?MYqhNVe0MLk1Ch2zdil6zo-Zl~~(pfpG&ZVdUA0g^KMjwR35u1W*h zt9kV3!#P#6JEX#f`t1e8Ybc_gow6d#8cl_D6a~{t&_>Wte?>Y5@c*N8i&hj?)GB(t z%z8IS)q})adQ+Y_=EMjIb&(nb!Gru4`%grac!EM4C(wy_ROg{Egdb2XAgyr_VhI9A z2qs5Qv=8BmP#gGx(xD4DT_4vHZi5Kqj*XN`g)B|+wU8*<53JQs7$m$gK`5|c@I4vU zHUvbI3h+deCDEM*Yur4PNxp+nC&q zryj^5r$!?gP?UWm=uqw6eHqS*)Vxp{YT7#p_`pdDH!LE8ra`C1$i@&kZUhR+o(R+v zj6Hr7+27aKIo(*nbDfmH#TlbB?&ypXD)}7JllI=&j3x#563ETFTR<`_k zk93uh-eHps6sF{Q0t<-Gsv_lP0AB_HxqzG`#%l`}DVS<>)n`Cp?5N>_e=m}Yg62^magIRZ#!H_(pw{JKUxF+5e-Lj4moP94cT1u`Pd84k#eH;k*NEC zncq6?0wrKJyM2yIiU*)C9**wxqs6;h&y$)ZVRQQJa<9k9UgPoL*)Ci-gfaqfolE4L zxFDhqDU3M+VjJZ+Y7qZR&OPzSkVi*CgcJf>j3x`ocha1iGk{{fRct z_l?HmmwVGjJ);c;6*Bg&HV4YTQso_XN?6q3{x!Up#vpU~QN zMH3vdA4u6jEk0=gHC&ccX;&ITJs}X;)l%$02XhtTlJS+>G*7a>-&U<9MN-mZM0Kl^wcg3aCbe+lLLh*w0?O6O&8=Co z-TionAcb1B)=K)u*#}y{Fhr?dh$07Y06bN0QL}7sc~AH};VBKT`DZaMSHPw-jrE$y zPiuMhpPVk9n-m!+R-H{X2J=SxY5>hLEKi0BJUf^A5-ybJOrz)GHFN$KuC7N`~jMtvj z>LW7Uw^hb|BMnigtC*x8PK~tm2@6lcS5YUw`4N7XcrFHL9!@b0r50LL);79wS|_*! zPNCvR!Pt@M%G)YL0h%S&L6KQeObdN`CB80A$Umq_z?wT@pzGKF`?@E}>{d;A7;iZi zK@y4AU}51xd&!59eu1>KbK+dxgQf7(OiDb4fHp%W4oD~eMhk}S_A)RkPn&NHr+}am386@q1S{^OAM{P+t?fxDo&*z z(zL98e|z}=C~*j;r^jQcJE?48?atX?~C(~1dXlujUnQqpo zw&Se^0qykd!(#WmsvF!vom-|BpN(WSXJ=8u|ox4^{EhdLw>0Hf9=>xW}ez7Va zF%LM|{CR1)n~5}Qyq*=-l)lqtfcMj2bFDu?d6&uhL<=l9i|me;l9`YLAeQ+^I%=Po4wMZS#u3!g#$ zMIN2}Yef%*%SRN9k4B5PMQ4YbA*DBHM#ekocEnCz@-t_7Y+7?{D>6G`2kn$4DPt$R zP*z2SNk&s~w$)D1{#OduSxTxxgubl59iCEe%dx zIg(O~DBOjVi3&|5=+3g<(p+*5T<0xDSzS|C1#dJIkH4X$7(3PL7>hV5-YStQwiBLQ z+bKwXrS_Lol|zpr8Fd2DTYYOUWjrkH(veuxAXJuoO4GHnz$GT&7fOH?-{+2s$lG0p z&_hM%8`U^OG&@PWoq0-P&8aw@PS>^r@pZf}@#@?uJ)#;LHI^qX8{7;M9c(#Cj?uW| z(cVCaw4FOsEjDjvna(C!vEAiH-?TQ)>#ZxZm03?f7odisy`<(z#TCYA1tiFsba-SN z9s>l$aU;zqJSyMkp)AqTTGnMRP@zwOTik1qSP%4#b_d8Gv$)L%=#Gz+jo>z5#8V#m zTezK@1kynqk=_UZX7c>mhNR7tI8x-&3-_I!YkU7{tAVQ_mP1%C2^zEb@q;l>w)zfR z?ayc$F6&Ocjfym?z`*~2IfSM_QTnxl3yw4b1CFFdAQ~A+8z|{p!4u?G!AAPZ;quiR!t0A&n1bfU9w0_%WUX+zzKx25aP@k}RqLYU^@W zp@imxVO?+WAYahFjvzltwG-XJ;4i>92)XCTx=VKIPIzAKPECsjM?szsowT2wjPQd5 z$)JtT_vt4uueGi%%xcmMJC>~ddz1B z4S>P(7-L-Z1wY(qQ{`J3;i0oQNYDyd-<9rkB(ZHfhoP za0kTp!A}asb~<7~r2cOxNwSilQuBrTD({zqDk5!NcXvC;D*mQnJdc=RK(j=%v zD;69kRiwsO` zGyBVh)gRJ&GQ8)!?%uuI2eJ?b0$$WPG%fC4?SK>MFGI5=;RnmZ6q>N!LCtAgg}#gKNazIl1@!UfzoSX5y($w7VUr zH3A(aLMyz`4=wM1xdPnNB|Ezx*Ay&gk4c84s~V)ad)COHrc{Hby87}aWWJ4p14+VM z6t1(B@NYRuzC}*~lLlAzVsWsD_Sp#@D($Ix6@%N+iwQ02YHagvG#h{xMHY*-^K3O$5Y(@HrFiV@Me%DM!C+K zq{|#cD&(%OZ>Zd&^5buoSRq!1sXR>DPo~HE{LQa5G0YXC_@(c^-KkmlWtnqO=odw| zv6t_5)S~2!a&Im@bE?f+_9qwHv{OS@Vhv99IcX)|jf(em#ey7ho?WBJyAW&0XILTG zEjp+D;#g$$*w~n-LP(@X=`uIXpr#pKpz(q3!I<*`oG8=XmMZT*B;lEQntW4~=Y&3i zhuW)~s8nPG$iLGFQ3>kW-7FoYR&pBi87{mNIpP7~>s|w~4S(F;ZI;gUWw7Jn;myjx zTY&GGrCfeRPnBo`jr<|Bo*-He5)tGND$!X%ZPug7x0P*}dz&PrWK0IMqeF(ysFZA2 z+dK3&x#Y=~Xpa*=tAY5$6LF#qPEKeR<1`Xt0fS=W5~qbh_!La~6}&`;T62&}Y@aFC z9o{N(gVN8^L###mMQ@wQ{PxrZ)B6;H*xARou9gi-CsD63llOW$S1Fp6z{h=*y}S!| z7M`ED-y!d8Yb_aaa6ca}f zc_Up>4irB;)K=fYwj66|LE5N}WQbyvh}he`jOEvrX*GCsIIH@ZR={XNH(OYIT;|m> zl!>k+Cs2I38D`3GLAvqV{LOMjn|On7Y`FU6(wYZVKt&N~K=Qs&F`b``FZlY^RPo6n zj&nF`VDmW5U7PXCJX+2DP3o(QQwiaT1OdJm{t{h{jqI~lPFpks|3EpE5Dlc&3*E}B z?5G~n5Q^>{QsXBXYgJVhOL&XB8L2P=VrymD(5pd|U=gcjPN_tb1B7M|g2YL|&e8F; z*$OI9B!T6GS~Ti6jMEt-m^aiiN*jlp)N2M%zs$b;>730wB^sv{J_LDj=G#&p)yaLz z%vJ}q!E*={)M!g*!^uM6q!2R|>M;)6*At^8^%0CWrxr%80EnX4dWNJP==UIpjWpXL z#{yj)=$MtJ40rlqi&lT!izwV_SRwbY(C5?eJXvw?vd4~_7;^~Z>~WL1jB*+r3f7P` zF={FO_%pHDc}`+yyfJdU)YGpOSfD_g#m3Jl7)XYoJ{OAuUf&IonX|=|M?vBwELA$| z{P{o>d~EhBD_GxnT+DA^8TdO49=p&$%ydF;JMS> z2P&dflMB#_5ZED4`ty;I!4=?H816|TqC^djOcqTxdZ3;jPIxD;!`|32EzBq4__(-A z*^x?pZRNyg96yjAx6CBRu_Q{)I#|L|KtGh*K+dL>bncM$8elE-sSq-3;ug6zpvr2Z zak_h^#|KbW$wZ6VU|<1`IF18W6?ZU5g_OipvIBnbV&Fj2+N1S{ttXPP$L>e}%3dcR zBy?)+Eg?Pw2QJIm3Y>?-&jZ;Gqi?z$My6&wBah%XufO|old6DE4BL(a=oF%t)0RyUJ12C--VldLI;SL=B9vsD_f*w9$5^&K2i7b!Z$cJ$G5^~1EAq|0aaTYK5gbb zV3hCS3UOiSzeKR^D$yYw^4On{9#>+mc$}`BB*b7qZhC(+nzPStwL6)HeI$6Cv~2;#CO-5Bq&grnO)$Ax zZeTu4cgg!o$*)vg;{jKP>o=z1c6d0&4QMVTTxpcoG^f^&OB*9fTG${`?Izui+ohz$ zLrTdFHe8~qhDUeouid72Jm4voviW%p%7Sn%AW*^bk~3!%rKG56#lt4|Jc?B&b_%I@ zH0l~}Zn9~PeOJXcl>oFKZ!l@k?Agp3hZE;uU9$7)s?*xaU}*qa(Z|_9E*0P!0&d&1 zlw2z+D)M)Tp0{`TqphBmQ~Apc^j8=Eh;^txnqt9Im~ea^Cs3oG39VAZHQ@c9ZcXDV zLKp_V?kBZJR1Wc{&vM;QEk}6|K;YH!t&IZD5R7{J>*5K;a(UAO_+a8$`(8xXVsLUQ{8^L!mHayUx&qnWQGyEa`na$ zZ;I079mDhm zNfquvUJ%H>3h=Wv{Myrt)fvXlk9=*MkB28dv=wzPt2$w!VTWc8w5??hxi*27Q?@VR z4IZ7!BmKuJDmDSncCF$gd?TFRo>%$ZWm=GjVkc zz#98F6e#P^8o*%T@TR-xRm)@ql_Q{S$Nf`;tuA|gaM4(;%y%=xxs2v{%zRH)Co3QR z^`N?XgVL@~yp#2%e_8t@Ss|nAvTOa()?Ui6P3B+bLK}V`KC}!r4A;m)P z4e8Z8llXhzaA-b!6>(i8*(7`=&J3~5@>jAsdY7pkkA)p|YTsKojGmhqc9s*DZqnPj zdazJ|MpAZy{Cs!Z7>{2nmF}F-UQEyl|k7~#+m#it1efpdHwYyHN-nu!BO8}QY4l@W zrA*sSIWVK_ z?!0kkbY_ho;=-MI7?!zxmqO`hmB(4(3C?;x=|xK?C<9d%OLCbXQ!Rht%k}M-9oOR57apIz zGw=Hz>0i1Jt)Mht;jhS0k*$t%NQ~VKKLBV$O4-2Zq@s~48!pzHYE~?&p_go2_wO}A zbaw=jOEK`?uvo0`RDSXfUQ(BZwN~Uefbk!@w%p@!$IA^ht4qsvg&iKj>xt6k&Kfe> zEpv>+-#P}0B9q4bXTk#7XGaYEg?pH!UQu<3zI3{*Jj&G=fh(i0#~dLJja|+w=+xz| zo099?lBIp#R7XLZ#`x@~=R0Qra z+IQcOJvmPAPl#|;GD8P6Y284;ByHNnEU?)CrPFQ9{1?$Pom&EjqweMc)glep!HcL& zuJ5C5zs0-}84|3fKHH(k+93(Jg_8$dvLztCt-c`5hU^Yi(>K#C zG>kHv>7EYVu2EPr(9?s_K$~#boGTl+K8zn7|CjCLe!dZWdz_AAZ{=?U6Jlv}pBzUy6#pc> zbmLE!dmh@if@Dz01_|Xvj)9B}*dGK4YxAop4wI(?i4OCE&nFGRyTP(HhQB@$cb?hc z-2RAUy6E*FKsr#g3Rr|pD1a*h2!z=gXxqq!6W;rV)##i4{so@k05)r+b@e>g5o=m< zC@dB%0ZH)z`-Oxu_`VMo6ptOkyy9TkT%M3a2t8%CNmY&{ zc$C-p3=7XDnsoL9>#GNY%G%Be z^}nb`xKgW+zEye>8*ZJPu#?AG?60&NHF%7sYYz~Cv#+Q`n~XB7pO1T@yn*IX;sOC> zQJ=sS^Ah010c7FOb_Ye7y(h{a8&I+MofyYUc zh-bo}{=1)7u|9X%!_R`QB6qUsdg02pE^u9FVMCdKl#vr7!q^2C8wOmXNFy#GP{G^b zukzyE!XPO~L7lK?5mSg^1myr3?D>7gQHL~CvYTegW?LJRIH@%-s?cn%p1{20v;?J{X6b_$`Q24id%C-u zscAD!I`T_yUWdO>3@f_wfX7ZaoQx*H!Fq+yjd*c6?Cv9<<|O7_eK+f1dg!Z|(3hA& z4{VFXo9Rg%X1vw$%8ie-unlLhkODZH=>jygj0D2{Br~Phv$m(m!?wE})jO0=@H~LZDE20XJzCcYuXZrTG$3qOd6sX{ z#;HZTdxxc@NP_1Qk!Tx(O`$A)|L&)K5d_b z9tfaMz}b^=v)`7s)TewzMVcZj=fB|hl+k&Q=uaPOmaR#0`uJUUeRRV3X@kYzsndCw z#ofAihc6kjsw+z=wM=qLop?J&l*F_d*teiyX zgB{ABPh=Mdt!tSgA0bi2{WyPM+B&S=T<^-*;Z2HK%FZb{`o=ZZvWjPZa2;1yt6QKw z(b_(wV*GAF}S&_Fu;5xen|LXZ_ZH~q+6O`8N}Mmp`JOVP#__p|8%xk5C* zrcHED;qPaXO_^3v^c(6b^KS&Pnj~5-4BN`|2&-45O)osIrD+`+b+p_fy<@V(_}lo2 zH{k-+^8Tb_A=|!b)0suuD~@G5-MEn3F47eKNIjAJJkKoySBX)Eaq{N`r{C*@Wg6T1 zJ8X(a&vB=OPi39FHt!QVv9s`?gH5hOaKwB!+aos=WD}7)SUjOR-wAyoY;?lRf9kKN zpM)otoprIC5w1Im|9W=uQh?je#7R!o zxH*&WcMv<9_(4+*y??lUzweUo9qj|>&Rl`hbk7tdA9R-WhxU2qY*^b-Y7X`7Nf8;( zzdBBX0hcX0mkgzN3Ps7Sp$E+Yh^zAc?rvXN__@x~MmuwogeY4y&hflmY4n7A*It9c z>DEgiX-RwfwgxB6HlPJ0M;J#3?HI}`AN+vaS~wE`yXKV8bb{Mtb>HGwv z%f4Om{xE0|XPgwg?}D$|W=>K3^%F9P1;GIK5AJoyqg?3UF?PO2eEcM#kXrcPmK}QZ zK2%RnkMGuRH=xahX^#!AwZW!LuxBFzBH5t+E?`dg>Tn1R+|K%$Fb==uSQkkK4E9WQc~J@GAcX><40XLuMC7f9Lf@Md#M z#hf`w@}w^V#PhB0UPChk2H4|BuC*##0t1C4R)1(eL+$}DReZ2%)Vo}^%1d>3@c`5BZJF_8zHPt}-;Tx#k4OB|3{iE)QI2H)AlbfsqeT1%PR>Lm-i zMqS;z>ntn{$hV%|!jo%tR~tCqs5`=Fsnu*ad#z~O2ICzT!SBm%J^JOH&Yzk=@&>;e z4{Tib;TN*HJ`*1TdxpOmXMRHkIdR%TuPE$Q@|5C@j{;-6NBlb+2j?)M0sEYBW@va- zr|ZOiJEJVKTt?HmIW- zlQBDxGaP2Nb_b=c*5^&`9&7Fr!{g+Oo!wUC>2AJC-O0O_Vta9g1jqqBj(j{NCA?#G zu)H+IYmmRiO?o@|;S>Qb(;bxV>zsC#LxJ)i){sB_|J1jFf;RbC3fEcugF?zF|MRc^ zKc7(l^~dVLd_&3N2R=p(Hd(GK_ZnZzo9_zAWnP~jlU$+qKHA)NVD3J2_6GUWktG|F z*HSv}KfmbKE>JiloFX7toXxPf7S4T7Z$t84<9VHYTxTyxOW$i+QPE|Oi^fb(6tP7$ z9{u_*$tXE#;Io}zmwh%%B`4X`Vn>Pi$dXRJPvSm#=O{{F_^&dpV-|ziAG$d#f2=sX za7L)ut}{ncOVoLMy|IBz1>eIlxW;(Q_9i@9vX?wyTB9dXKwjP^HZ2r7Tv~WrrC+^Z8Hjun|2VCYF|x$}}@A%4>tA>%YklzX{gds;*u8 zYbCwGndxM^KYX)NC*RLiQ#1a1$(1>y#*1Oiek}{GOl%VPKo_z8tJpaE>vyH(O*#$D zN6fD)`fg5#M0!0JQTb>gv2F7+?Q_b`wZ7{i^ zenIPm2A{LH4H(6ku5C8ANE&c1Gq$i)+}zZq^v_!S{0O&>FP9vyp|J^V`_8%BX`{%h z6z3}lG&en8BG~BfwPX}9W!%=HFJ|kBwYSj3fOZT!!S<~4#ed2+D3E>c7izGko>!@3Bc!zp#Y%`xI`2y^P3uO>x*oUl9mqQ#b_?aVIMC^!b3xOY2rTwWZ| za4uOdJwle{K0c2;+3%;_t+V$Bio&^H4EsE)B=Fhd*2l6x(iY5{WclB=Xa|CWhsFOz zrOPhDKRnd>0na@>imMtvf#SMZtT5N%zPZ4TN79`r$sxZ&sWJVbTcP!`^m~<*a$}2- zSdARprm&`hYWmPU=HmbRB2VY%rSpen`=nVqhbG-X*8rFw$$gEV+g6>e%)N>RCB$NQ z(U3fITCQ|@P+k@>$c@RAdwNgj&s+`Zc+~yN#W3dx0saNo01%hl++VyaVsMa`fAwRh zc7dkRb>;4#B;2Lt4s^4FFW;I^Eb5au1;^k^aiNoudp9O^5bPRKn#pDAd{W^FuXSRL z1-dw-*|85yaXVn`E$7VYQ6+a??*G1**C%Ug|1L|LQ2jt;0qEos3nH6nVN{l|_$%*) zBhtYZ3jWzYb{?@u+yZ5q)#AKZF#X}r)uw#HfoKt|v=c-fwZu*k-5vNlm;dHEjW0jS zPjm0vfYzC?h=Y?5#?%2*seF61}KDOi_O=J!crwxFF}0S6GUb{JS9mx1|qB zKLE>$$c2Iz%I_C0yfm|@_7L`obT?Ta)pHRX33}4NWN?abysfOjf1eK))Us0=cTSXO zCt*8F*FDP}=t%FWoY$z|t=!AX|J;=Z(?!-USR5#`Lptccr_`S3rGv$6vOXM$%n1F> ziWa{wwmchhW9z8!n35LwG4Sqzu%e4t4A{+xZ{Ga9@B=CJ%C{>LoIp_wYnWQBtc;3^ z!)!pbprHtbLecQeq=AVp1?T_1hr6)3|082CYW3(-T`@i^p+H61(fQ3a(n08@I+F+_ zgbHi(1RH$^Kx)iAt_%M$Q!WLH?AwUgxTjm)&dTi%+evYsI~bqqZW<^G%di(LzU7)+ zp&Q6KO7k`(H*)1|mli}OVKZW!EbyC8n>;Nk*ZqmBE%U%lIR1Y(bMn5$?r-v$&u2*I zki-_vlSv+XsTr1PIk|=}bi}qr(@V!BGvj{Wz^YbjQWIlrP!6844~Wcrqcy)nw- zsOrP`Cj@hihmFy5L7WTm_X+Bukw_9(9YdY-dm>XNhC{ zxs<=3cKdTzzU#bSZeI5-I#*mK>NES5m5-9XC*#FM6ipkX`4;_q?t)%Yto#JB%l*zx zJV(b4mN7f2v`qBzYIclK8j^J8K-1@{py?3G-o$~&8W}~q8c%1y`IGH0(=mP@;ez)V{K#q{*2`nU8 z{cy!$F~u)CkC-XbI-Is3+A?nPe=a+Y4tccIfN!!^m%ebeVyBs|+jp-+N7AGp!qgFO zJjL8EH!b_=_T0X2y@j&PBq7 zBDLMOomMPx4&LL=rEU!Cfa_w1=yAzWjs<>DnX*WCRt@TUvQ(~X(e*F+>18`kR1~g0BB>UVeG~e%DXZmictZ z2lu!VU%19^P;*_OvKak{W7+Pv1IgD~;!jAdLHiTxb`5WhbDoHDw*LA=@8LZskG?@^ zf^)B9`s;FUFkTWG=-lHptt%FcDw0YK;SO}$?gOy6SlJ$iZ!LA$v6jmueG6C<1VTa} z1(Lh&%>#up!(VtZxck3PAfAEr{NpjIAH3q-cUxq(Cml?<~YNH?hA zD8najWeCrF>NA16w>%@0alb~-#Pd{g{xrGIW08FAV9Y*wtCX66!d#P#{USCsJ3+nn&K@3r%6 zP&@cUjU30m|5MdgJTSck|Zc%jZ>X44AtDlle_(*tS1JfknC^a%o0sB_R)*nB9Bt?gF z4QgwcmLIe{I)*!OD3HPOB(cfK%OxVxvr{(0c0L%8X{2fa<|p8?xE3yFQ4^|q*SZ64 znHF~BIbXS6`I`9XmRsD-@z~oMP(C~SphcrU=r~%uRDA+8*9$qd{-Hooh?1X>%GIaw zn+DbumOvZ;VjL_ctX!s+)LPhTfn(ZPu_~YMf~4!3WoCYm%Es)}Ex#32IZ`mCN&^>} zWr_!In(gILIFt?R8*b_dlb6vh}c>vTAJfl(HCIsFw+x|04OP6Ydv<;#l3z+68GzCMgChL z;*9ymNNJwZ102`UNd5knXCDb5uPspb0Ae9%MEfrV;4sB>H+!&8X!naC@f;BXf?!0$Ot}P z@-a|^lu=;wAC*!G0)>gV_a!b(<6eJt-dd=d)CI1GG7aD<7oKs+D$m9@SM6;f9>e+x z^*;CqsJk*H^qkD^%G4D_2*$`qlknuqk)A14{U#t!lJJ;a494iEUr*7)e~R*RjUsB{ zdj7FJ2rNxDhY$@FgdOppo}AbLY~{slUm26-oi?-%v>lML0Nl^N(X$%+l9&eZ$yI0d z#nl%x^i|zDK55HAE`Q(lhYYYOK6I9J3BMHi@u&watQRi4wFznXyruy^l|c#vGd?OF zfDV8wAt&*~Ciq?#RZK6g3uGQ5Leh+u90-JjITZ%bSmS~cc?5Kdg-~ID(hjmQgg_45VSK2(FBplv)`h^3hogHc@;%sQ2IF*o zV29`hZ)yI6ruwSvHw1S2jY69q+mQIUIApOK{C%}!GlA1iz>!fo955%Hd#!&Lfyxrb zq!~G6v^2!baqhJwx>omowuGMDVB1A@>BZuomw$?&Rb)8}EGZh(3V#;CRN~SO>C@IwSKo#VIUY;s^@dY7d_Tqy zx2;{mq$kpZf{>mLMrBL7U-)=P%*2t;M%E#;>BlO=rJ;+ZP>ysHt$2LOt)ZA?Plwvn z3z7ufaHb2y1E^mPVf~HX=p=8^Ei$}`nt5KaX(#LPR5fX4v37hgR^+m{4>3_$BxiEb zf;Vi~Mw^r59e_L+;5eKF6jXx@2=Vq8XmO(z5Y4rm?CEW=Tq6q@U~29#w^XW;sywn5 z;GJ`KP+a}9a-^RGssKgUBrb9*tb?lv)0Pfv53T5^S4uFB-tsL0TTuU-+g2r78gS)+ z%{I1GV{xItZ|w#4)`VFm8P?tzF#3!$oxpT&P1wE`l6xTWA6eTq9}&0Qc;(zthR|5s zpYH#>6P5r73aolX$|fnmXrTLz-TfYMU@s+0nQ!?DloM#;w~PDnkymo!HuBRhy?pw| zZ>y0BA);4daY!Qq1*x&LvDn2}Ca3pE70W^T&;#4!7INWVHV8RseaLfFra@upUSG#Y z7803)yJ-H|`CuT=PJ@fh$+Wq*ik|)S%Q67moo!&OK>%*J{nv|1HE2G_bHB@vfO}m9 zi}bPi@V*re(;_9OO(^Xs#5*wLqbc+ZwuHvCv*xg~cs^ z^VJiuzC#p78w#Uaovl33{p8%9W%Ap66>D*|qR5E| zoe;k|`SXLlV|hutX*FU!P{2i)%WUEvLsVJLH=q~4IG&GD$=Zz+gW1q6&+3Xl|aib2OQBNTVhe%}gY*WFB>}RAvRQmn$YFCAEMK z%Pkl@C+RQ(fnNe=8dT(*W?EtWGh-d6^r4IatOP_X1Kvrc0lZ~!%KX@^9GF_VjU556 zxc6jNdUCI{lvGP`lR+NDs;-&>ovAU<2kSb_Gd!{T?zuo#j3XoW&`@p@ubewWtzG0>!>I1Ac;E*M(qD&RY|--L|3h;it7qk0S(bgK3RBQC8RG`yFaG8faP0+vkbi z-LiBg6rq$8U)v5ht{9D?f3&gzRW4EkUvQ)fzkdz_fy`?%D%762OvNToLU z!C+*E{2^y|;`nYBKQ8`hs5P_?iUGWQn zV~aPn+7jN>pBT4_&_r8-n+&}M=gin%5IdY*5n_jJS^^524PRv^5$iaqM30G)Jg!pN zSv*?bnb$%g*~~7;MLR5pWUL)CS4%9iG+XrnL4m|6jXMoYF`_-4=;%OL?-|mwaaDbo zpE4=r$r2e*#>&6L8uu`a32Wi7wO50~<1_8E)LD+R%O?(TA(H<-GHjJ<1`KjQDtGaD zX8{mG`B@nb!XxZIEEuiY9+H^*G)<6q>r~m~thy)6_m+h$#61?vSA+j*CuvDV`Y;$Q+UOOq*OQd)uYpnlBm2L^5 zbqp73nM=Jm{VP8^DHf-IblYh9XQPA#5_lM_vh;&8b?`T`{Q|`b*aLBwnt11UFi&jJ z7vF=CF(%MBei&+^CpUi16$sP%n*KYeyj(bCXJ=wi>NW{DdT2$Gx6*ie0QW#goG17pm>vy~4gbeYcdakHa z4X7UxdxY<|nkmo81-&ci8vw|p-i*pXZ;5wz>{(EGYD_f(CUVwMEKqNY~7M z1ozN^c!nC)e?AD;>X@OQq{j*Y9B@T5eA0*%~FPN>d;xM%jh zn*w{q zzCB5QHTXP2u|l~VGBm(@K_a3BljNzZ;=W3U9Yx8Crz><1Zi&nQx;f3Y@uiSzS;iyI zdD+N}lnf2+Ytf{{bpdUm+V@ij!98`pN~MQAHuI`W$Z3irY`nE;sw@>@W6>`a{b5ms zV0UsOqf~G!V36L;_xf@n#sDXh|3teAL`nobyH5<Vay49$=*Nzi|As5%nJ_pZK*vS zZb}i`QkmDZi6!i70GmH%dk2{OYVY3B= z4dfOG@U#b48o`(y?%0lFF9B(QQa+GvAe%>XGWC64_!EqB>;1R&M!-_kstI|!!BhZp5 zrpa^R=%^@QPUFZxp@A3WZt)Z0K`?OF8Up4y7;v>FOE-_IRkrSJ%Og~bDhdDW%{AIy z5Xept#i2#Sci@->Z@J~BSpQ|sCmFm}Ezrcb3}|ByVy?-5@lL&pgGv0{<_^{3s_SEE zC6X4FVV~6M{>oF*%vYZ|Z9KM&?*$&8fT-q~nFprypmu@%=M6MF?fHwH)6|XR(|??L z^49uk4YRQVrld_C7PsoneeYanf++wfb^gqo7j=GGv(m05j73&R(oE=niA&o6GWGQM zH!}bM%R$sQ-vCV?AtxMBwxVwzuv3lK7fyQ^QHmqa@2JRlaiQ(l-GuQQcv#zCXXa~k zj%xd7-%&y1`)j1>gsZ{S7DRpKjrVYLaV>)eY@J|`k7Z4oIgFK8O63X^o_^|*q!iwVk_cH$n6djJ-pI+bn(9<`Psw!~6VTQXFqs;|eH_!NqaQvr>$d3cLX*+-#U5WJ5(~&(SnY zwiPU7RDX%l^qdkgC%+xH{xCRIfAseFv#ST&jK;-anh*)5v!eT!V^(32Y2k2i?_yPI z&?N3+UKq6yD;yDv5NfUB4RGMrJr`IX51)KHe=AJHBW`b3QcwNyB>5l98_(ARB>8XJ zcIltx0$zzux%Y}xdyHATX(aZz0}6DSO@#A~x)j?Y&STnjq#_S!K{yVSC;1-A zd>+{PPaCU7z_KDa$#3xPPSxaBI^w^b=t&iV#ZsSLE_pEVpE?aT&WPX_Q*t^V{AQsY z4DpYheqjswlR!Ly2>^iE-se<@L{uOCRg{__?rBwRkm8Guez=Q#NxStzTPo__z#8hy zV|V`jR;B8%wfY%Q^a3qy{HM>a)(>Uo-+)CISUHzv*wfvFf2u7|<@6dov-$7?(C@Zr z#Ew<~g}a3zVIaLAFk_`IGL;(j*HIw7!mzj^lQT%D`nSaCEH+J)iS7$X)qew&zpnoM zH`JR+UDC()f$RsggcOy>^roPHD?n4dV3zGBzU6>4YTF-qk5N`Q3C{)-DoH+KlZy&s62$T0*U>OHU zx&O@N{esODw@8C53sblLYl|Gs>Ex$dp@YX(+C_jRO_E?)o2yeLpuyw)1z zN2K@1v=2a>4v2}^-1u)Jq0YMBvJ=Lh=f!2|y6NMVieg1fNvO>!WX7>f&KffZ(UbI0 zB0%oT1#^T~(pQi_^+PHGbuoyNnV$=bWAOMJP9kzFHL2`VPP18AZc0Fv3+Og_WDMo1 zU1#btpZbX022meILIKh=h-UtxaxMi0;NayxlLZ?mV-pYKLZHY|7VbQ z=~`|P4u?AdR}?DRG(!7_%xKT_1y^i?!$UqTAwvPTKkjD&e$9Z0*#Ep? zUA;HXdlHzZQlTUWU``KPexLfAdaQ`s_AAs;hK3QWad7jh_!rtbl@`mx0R5EM)XRvW z`jZvP2|93o$ExeqjW$W*do(T?x&Alybfk*`H02i!qgl%th(35D1O z3lMw<%&mix*lHq>}-e`%5w zv!ggPYw^t^^>~h|y{LXuaq)w1K8TD0{3p2g;T2^T;%SZETC8l`2Z0t@r z_=J9Dod9z{v$Fj~k*9hjkwW!Wy+#xL^}s%BV_3auJ_o6W}@>syVYiu7wnQa~Akxlu zQE7S>F$$A!nL-xGd0eL5Za=G#5;H9*OZw_|&mv{)!$f7v<(@5dZh;Jmd8D_|^|#~Jg< zabH~57Un0ens}N;qq1-9Y!XMmnr@MxHr``;MpH48x20+I@_%s>6%qv|LMgUl#CLly zq5lh8aGozF5uPpf01G=-LuFW(Z4iF38GQt5sL8=uYSDP50{wH(wNS27N;=|LVnzzq zH9Kn3hzjr6AyX>Ylvc)5Rcj~oNmyXn!ss{YK5jo%jo>+p(Ircfx%zd#^MCD&e4RXJ zk>p};LcRhzoa|kXVt$$h9&AY@h1Prz;6F)j=~J2xZV=14o;B1xS2A`r>fYHzCDl*M z_oeQ~aM|qIGGc6Tajn!a?`(?)Sq~@HB#UmHZlb`heNn)W?jlZ?U8!h4I@-N*-m>EC z_TLu6ms=ebOsmk2<9wkOdDSJfpU$-MJo1T08BhJsu}%CANSDjyR={`Qt$pj-9a@F+ zl1Z!$wB5t;e(YR@=)n!>E`_3rYNI^mVOzh_4w9o9J>cl@oFlHHsQo>^zc6D_*|y!( zqET94vyH>x@Akz5SWZRO&3YF9@d|B4pb2=+49TU#&qDKxmg=9}2U$({3Rkt2fTvy@+t1;zHt5vwuNte? zq2XgEzfp^ZL#x<4>HSso&jVeiJiC^u3eq8R4n_K|j`H%Wsq?QTjCXII?qb(w8Fs&a zG5CC4Sn;QfK?RNlnQK14b}rIhzR-&?nk?(fO(wZ~E|1zn3VA3{xFrC_6!&=+*chJA zHnw?f#J_Ul51}4~)}fJG?AlbGmbx5c+VsNUf4a<*2|wc%f=yeRSW&MVv}69zf6Z^J z*QICzdCMI1PeNLS_Q2BlfrQN6o9tm6`9?38~>Gx%6#;T zVI&uvrG}q6jpvKw-OA#bohqyCu%u`LS=KYA-e@i~ZklGgAg^HEK5sIxH`K7sgFkyl z=p){`Q=_l`%*-Qm4RO4jEZX}uL5%$H$$arJy7Wr3mWNrqlP!wa;G->KA{2C|>U6u7 zi#WsB>D{={ox_0xO{HGFi)A9!XI!565>?N|P1jSSTge97Kg3@>(&A%l&3_BcixJ-* xWnF|Jf0)cY(y{_)NMWBGm6~>^h*s6|#ElM;ySEQjiK6ev9X@_2|A5o={{u<)`Og3V literal 0 HcmV?d00001 diff --git a/docs/images/guition-curtains.png b/docs/images/guition-curtains.png new file mode 100644 index 0000000000000000000000000000000000000000..4c26a825a0fc325fb081459290e67bd77204cc2f GIT binary patch literal 66811 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 B#O?q9 literal 0 HcmV?d00001 diff --git a/docs/images/guition-garage.png b/docs/images/guition-garage.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0158e5d13445229d80de78444391ef5bb16cf8 GIT binary patch literal 57181 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 WwwUWLcIj)8L(vMV_ww$V`20WED9qFV literal 0 HcmV?d00001 diff --git a/guition-4848s040.yaml b/guition-4848s040.yaml index 52be829..4cc64da 100644 --- a/guition-4848s040.yaml +++ b/guition-4848s040.yaml @@ -2,7 +2,7 @@ # Source profile for packages/guition.yaml (tools/generate_packages.py); see docs/GUITION.md. # A screen gets its tiles from the ESP Screen Manager add-on while it runs. The CYD is its own profile. substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.49" + SCREEN_FIRMWARE_VERSION: "0.2.50" # 0: no drift limit; LVGL decides, releasing inside the tile is a tap, leaving it is not # (like iOS). The CYD keeps a limit because its resistive panel jumps. TOUCH_MOVE_LIMIT_PX: "0" @@ -378,8 +378,9 @@ api: runtime_tiles::active_index = index; auto &tile = runtime_tiles::model.tiles[index]; auto domain = tile.domain(); - // Lights, fans, covers and climate open the board's own card, like a long press does. - if ((domain == "light" || domain == "fan" || domain == "cover" || domain == "climate") && runtime_tiles::detail) { + // Lights, fans and climate open the board's own card, like a long press does; covers (firmware 0.2.50+) + // open the runtime card, as a tap does. + if ((domain == "light" || domain == "fan" || domain == "climate") && runtime_tiles::detail) { tile.begin(millis(), true); runtime_tiles::detail(tile); return; @@ -3696,11 +3697,15 @@ script: else lv_obj_add_flag(id(dim_wake_overlay), LV_OBJ_FLAG_HIDDEN); // The setting numbers and times only publish a changed value (HA keeps identical states anyway); the // switches publish their own changes. An open settings page shows a change from Home Assistant too. - if (id(setting_brightness).state != settings.brightness) id(setting_brightness).publish_state(settings.brightness); - if (id(setting_standby_brightness).state != settings.standby_brightness) id(setting_standby_brightness).publish_state(settings.standby_brightness); - if (id(setting_night_brightness).state != settings.night_brightness) id(setting_night_brightness).publish_state(settings.night_brightness); - if (id(setting_standby_seconds).state != settings.standby_seconds) id(setting_standby_seconds).publish_state(settings.standby_seconds); - if (id(setting_auto_home_seconds).state != settings_screen::auto_home_seconds) id(setting_auto_home_seconds).publish_state(settings_screen::auto_home_seconds); + // A number without a state publishes too: a night brightness of 0 equals the number's initial state and + // stayed "unknown" in Home Assistant before firmware 0.2.50. + for (auto [entity, value] : {std::make_pair(id(setting_brightness), settings.brightness), + std::make_pair(id(setting_standby_brightness), settings.standby_brightness), + std::make_pair(id(setting_night_brightness), settings.night_brightness), + std::make_pair(id(setting_standby_seconds), settings.standby_seconds), + std::make_pair(id(setting_auto_home_seconds), settings_screen::auto_home_seconds)}) { + if (!entity->has_state() || entity->state != value) entity->publish_state(value); + } for (auto [entity, minutes] : {std::make_pair(id(setting_night_start), settings.night_start), std::make_pair(id(setting_night_end), settings.night_end)}) { if (!entity->has_state() || entity->hour * 60 + entity->minute != minutes) entity->update(); } diff --git a/home-like-2432s028.yaml b/home-like-2432s028.yaml index 7b936a7..93459b4 100644 --- a/home-like-2432s028.yaml +++ b/home-like-2432s028.yaml @@ -17,7 +17,7 @@ ############################################################ substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.49" + SCREEN_FIRMWARE_VERSION: "0.2.50" # A tap survives a finger that drifts up to this far (320 px over 58 mm: 1 cm); further is a swipe. TOUCH_MOVE_LIMIT_PX: "56" # Shortest contact that counts as a tap; a resistive panel bounces, a capacitive one does not. @@ -495,8 +495,9 @@ api: runtime_tiles::active_index = index; auto &tile = runtime_tiles::model.tiles[index]; auto domain = tile.domain(); - // Lights, fans, covers and climate open the board's own card, like a long press does. - if ((domain == "light" || domain == "fan" || domain == "cover" || domain == "climate") && runtime_tiles::detail) { + // Lights, fans and climate open the board's own card, like a long press does; covers (firmware 0.2.50+) + // open the runtime card, as a tap does. + if ((domain == "light" || domain == "fan" || domain == "climate") && runtime_tiles::detail) { tile.begin(millis(), true); runtime_tiles::detail(tile); return; @@ -3702,11 +3703,15 @@ script: else lv_obj_add_flag(id(dim_wake_overlay), LV_OBJ_FLAG_HIDDEN); // The setting numbers and times only publish a changed value (HA keeps identical states anyway); the // switches publish their own changes. An open settings page shows a change from Home Assistant too. - if (id(setting_brightness).state != settings.brightness) id(setting_brightness).publish_state(settings.brightness); - if (id(setting_standby_brightness).state != settings.standby_brightness) id(setting_standby_brightness).publish_state(settings.standby_brightness); - if (id(setting_night_brightness).state != settings.night_brightness) id(setting_night_brightness).publish_state(settings.night_brightness); - if (id(setting_standby_seconds).state != settings.standby_seconds) id(setting_standby_seconds).publish_state(settings.standby_seconds); - if (id(setting_auto_home_seconds).state != settings_screen::auto_home_seconds) id(setting_auto_home_seconds).publish_state(settings_screen::auto_home_seconds); + // A number without a state publishes too: a night brightness of 0 equals the number's initial state and + // stayed "unknown" in Home Assistant before firmware 0.2.50. + for (auto [entity, value] : {std::make_pair(id(setting_brightness), settings.brightness), + std::make_pair(id(setting_standby_brightness), settings.standby_brightness), + std::make_pair(id(setting_night_brightness), settings.night_brightness), + std::make_pair(id(setting_standby_seconds), settings.standby_seconds), + std::make_pair(id(setting_auto_home_seconds), settings_screen::auto_home_seconds)}) { + if (!entity->has_state() || entity->state != value) entity->publish_state(value); + } for (auto [entity, minutes] : {std::make_pair(id(setting_night_start), settings.night_start), std::make_pair(id(setting_night_end), settings.night_end)}) { if (!entity->has_state() || entity->hour * 60 + entity->minute != minutes) entity->update(); } diff --git a/packages/cyd.yaml b/packages/cyd.yaml index 798db42..9f208ba 100644 --- a/packages/cyd.yaml +++ b/packages/cyd.yaml @@ -18,7 +18,7 @@ ############################################################ substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.49" + SCREEN_FIRMWARE_VERSION: "0.2.50" # A tap survives a finger that drifts up to this far (320 px over 58 mm: 1 cm); further is a swipe. TOUCH_MOVE_LIMIT_PX: "56" # Shortest contact that counts as a tap; a resistive panel bounces, a capacitive one does not. @@ -499,8 +499,9 @@ api: runtime_tiles::active_index = index; auto &tile = runtime_tiles::model.tiles[index]; auto domain = tile.domain(); - // Lights, fans, covers and climate open the board's own card, like a long press does. - if ((domain == "light" || domain == "fan" || domain == "cover" || domain == "climate") && runtime_tiles::detail) { + // Lights, fans and climate open the board's own card, like a long press does; covers (firmware 0.2.50+) + // open the runtime card, as a tap does. + if ((domain == "light" || domain == "fan" || domain == "climate") && runtime_tiles::detail) { tile.begin(millis(), true); runtime_tiles::detail(tile); return; @@ -3691,11 +3692,15 @@ script: else lv_obj_add_flag(id(dim_wake_overlay), LV_OBJ_FLAG_HIDDEN); // The setting numbers and times only publish a changed value (HA keeps identical states anyway); the // switches publish their own changes. An open settings page shows a change from Home Assistant too. - if (id(setting_brightness).state != settings.brightness) id(setting_brightness).publish_state(settings.brightness); - if (id(setting_standby_brightness).state != settings.standby_brightness) id(setting_standby_brightness).publish_state(settings.standby_brightness); - if (id(setting_night_brightness).state != settings.night_brightness) id(setting_night_brightness).publish_state(settings.night_brightness); - if (id(setting_standby_seconds).state != settings.standby_seconds) id(setting_standby_seconds).publish_state(settings.standby_seconds); - if (id(setting_auto_home_seconds).state != settings_screen::auto_home_seconds) id(setting_auto_home_seconds).publish_state(settings_screen::auto_home_seconds); + // A number without a state publishes too: a night brightness of 0 equals the number's initial state and + // stayed "unknown" in Home Assistant before firmware 0.2.50. + for (auto [entity, value] : {std::make_pair(id(setting_brightness), settings.brightness), + std::make_pair(id(setting_standby_brightness), settings.standby_brightness), + std::make_pair(id(setting_night_brightness), settings.night_brightness), + std::make_pair(id(setting_standby_seconds), settings.standby_seconds), + std::make_pair(id(setting_auto_home_seconds), settings_screen::auto_home_seconds)}) { + if (!entity->has_state() || entity->state != value) entity->publish_state(value); + } for (auto [entity, minutes] : {std::make_pair(id(setting_night_start), settings.night_start), std::make_pair(id(setting_night_end), settings.night_end)}) { if (!entity->has_state() || entity->hour * 60 + entity->minute != minutes) entity->update(); } diff --git a/packages/guition.yaml b/packages/guition.yaml index a82f552..9cebde8 100644 --- a/packages/guition.yaml +++ b/packages/guition.yaml @@ -3,7 +3,7 @@ # Source profile for packages/guition.yaml (tools/generate_packages.py); see docs/GUITION.md. # A screen gets its tiles from the ESP Screen Manager add-on while it runs. The CYD is its own profile. substitutions: - SCREEN_FIRMWARE_VERSION: "0.2.49" + SCREEN_FIRMWARE_VERSION: "0.2.50" # 0: no drift limit; LVGL decides, releasing inside the tile is a tap, leaving it is not # (like iOS). The CYD keeps a limit because its resistive panel jumps. TOUCH_MOVE_LIMIT_PX: "0" @@ -382,8 +382,9 @@ api: runtime_tiles::active_index = index; auto &tile = runtime_tiles::model.tiles[index]; auto domain = tile.domain(); - // Lights, fans, covers and climate open the board's own card, like a long press does. - if ((domain == "light" || domain == "fan" || domain == "cover" || domain == "climate") && runtime_tiles::detail) { + // Lights, fans and climate open the board's own card, like a long press does; covers (firmware 0.2.50+) + // open the runtime card, as a tap does. + if ((domain == "light" || domain == "fan" || domain == "climate") && runtime_tiles::detail) { tile.begin(millis(), true); runtime_tiles::detail(tile); return; @@ -3685,11 +3686,15 @@ script: else lv_obj_add_flag(id(dim_wake_overlay), LV_OBJ_FLAG_HIDDEN); // The setting numbers and times only publish a changed value (HA keeps identical states anyway); the // switches publish their own changes. An open settings page shows a change from Home Assistant too. - if (id(setting_brightness).state != settings.brightness) id(setting_brightness).publish_state(settings.brightness); - if (id(setting_standby_brightness).state != settings.standby_brightness) id(setting_standby_brightness).publish_state(settings.standby_brightness); - if (id(setting_night_brightness).state != settings.night_brightness) id(setting_night_brightness).publish_state(settings.night_brightness); - if (id(setting_standby_seconds).state != settings.standby_seconds) id(setting_standby_seconds).publish_state(settings.standby_seconds); - if (id(setting_auto_home_seconds).state != settings_screen::auto_home_seconds) id(setting_auto_home_seconds).publish_state(settings_screen::auto_home_seconds); + // A number without a state publishes too: a night brightness of 0 equals the number's initial state and + // stayed "unknown" in Home Assistant before firmware 0.2.50. + for (auto [entity, value] : {std::make_pair(id(setting_brightness), settings.brightness), + std::make_pair(id(setting_standby_brightness), settings.standby_brightness), + std::make_pair(id(setting_night_brightness), settings.night_brightness), + std::make_pair(id(setting_standby_seconds), settings.standby_seconds), + std::make_pair(id(setting_auto_home_seconds), settings_screen::auto_home_seconds)}) { + if (!entity->has_state() || entity->state != value) entity->publish_state(value); + } for (auto [entity, minutes] : {std::make_pair(id(setting_night_start), settings.night_start), std::make_pair(id(setting_night_end), settings.night_end)}) { if (!entity->has_state() || entity->hour * 60 + entity->minute != minutes) entity->update(); } diff --git a/screen_manager/CHANGELOG.md b/screen_manager/CHANGELOG.md index 4c90b71..a3dfcc3 100644 --- a/screen_manager/CHANGELOG.md +++ b/screen_manager/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.2.58 (firmware 0.2.50) + +A card for blinds, curtains and garage doors, and three fixes found right after updating to 0.2.57. + +- **Cover card.** Tapping a blind, curtain, shutter or garage door opens a card like Home Assistant's own, in the style of the climate and vacuum cards: a tall position slider on which the blind hangs from the top, a tilt slider over slats for venetian blinds, and open, stop and close keys. The key of the direction the cover is moving is filled, and a key that can't move it further is greyed out. A slider shows its value while you drag and sends it when you let go. A battery-powered blind, such as Motionblinds, shows its battery at the top right. The card shows only what the cover supports: a garage door that only opens and closes gets just the keys. +- **Night brightness 0 % now shows in Home Assistant.** A brightness setting whose value is 0 stayed "unknown" in Home Assistant, so ESP Screens could not change it on a screen with firmware 0.2.49. +- **No second layout sensor while a screen restarts.** During a restart ESP Screens took "unavailable" for the screen's device name and wrote `sensor.esp_screens_unavailable`. Home Assistant drops that sensor at its next restart. +- **The entity list is filled when the page opens.** When ESP Screens was busy, such as while building firmware, the page could open a screen before its entities arrived: "No entities found" until you picked a filter, and tile names showing as entity IDs. +- **No stale page after an update.** A browser that keeps old files, as Safari did, could combine the new page with the old script and show an empty Screen settings panel. The page now always loads the script and styles of the version that is running. +- Needs firmware 0.2.50 for the cover card and the brightness fix: press **Update** on the screen. + ## 0.2.57 (firmware 0.2.49) The screen keeps its own settings, and ESP Screens shows them the way the screen does. diff --git a/screen_manager/app/core.py b/screen_manager/app/core.py index 69471be..4c8038f 100644 --- a/screen_manager/app/core.py +++ b/screen_manager/app/core.py @@ -17,7 +17,7 @@ WEEKDAYS = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'] REPO = 'https://github.com/MaxGramser/homeassistant_espscreen' REFS = {'cyd': 'main', 'guition': 'main'} # Firmware shipped with this app release; screens below it get an update offer. -FIRMWARE_VERSION = '0.2.49' +FIRMWARE_VERSION = '0.2.50' # The Auto standby switch a screen offers Home Assistant automations. AUTO_STANDBY_MIN_FIRMWARE = '0.2.41' # The settings page the screen opens itself, and the screen.settings tile that opens it. @@ -26,7 +26,7 @@ SETTINGS_PAGE_MIN_FIRMWARE = '0.2.44' WAKE_SLEEP_MIN_FIRMWARE = '0.2.45' # Every screen setting as an entity of the screen, which owns them (see SETTING_ENTITIES). SETTING_ENTITIES_MIN_FIRMWARE = '0.2.49' -ATTRS = frozenset('brightness percentage current_position current_temperature temperature current_humidity min_temp max_temp target_temp_step supported_color_modes hvac_modes hvac_action hs_color color_temp_kelvin min_color_temp_kelvin max_color_temp_kelvin fan_speed_list unit_of_measurement battery_level fan_speed volume_level is_volume_muted media_title options min max step temperature_unit supported_features device_class next_rising next_setting finishes_at duration remaining humidity wind_speed wind_speed_unit apparent_temperature fan_modes swing_modes fan_mode swing_mode'.split()) +ATTRS = frozenset('brightness percentage current_position current_tilt_position current_temperature temperature current_humidity min_temp max_temp target_temp_step supported_color_modes hvac_modes hvac_action hs_color color_temp_kelvin min_color_temp_kelvin max_color_temp_kelvin fan_speed_list unit_of_measurement battery_level fan_speed volume_level is_volume_muted media_title options min max step temperature_unit supported_features device_class next_rising next_setting finishes_at duration remaining humidity wind_speed wind_speed_unit apparent_temperature fan_modes swing_modes fan_mode swing_mode'.split()) # Attributes whose boolean value the screen needs; every other bool stays behind. BOOL_ATTRS = frozenset(['is_volume_muted']) @@ -758,6 +758,26 @@ def vacuum_related(entity, device, states): found[role] = eid return found +def device_power(attrs, related, states): + """`bat` from the device's battery sensor when the entity has no battery_level of its own, and `chg` while its + charging sensor is on; empty without them.""" + result = {} + if not isinstance(attrs.get('battery_level'), (int, float)) and 'battery' in related: + try: + level = float(states[related['battery']].get('state')) + except (TypeError, ValueError, KeyError): + level = math.nan + if math.isfinite(level): + result['bat'] = max(0, min(100, round(level))) + if states.get(related.get('charging'), {}).get('state') == 'on': + result['chg'] = 1 + return result + +def cover_related(entity, device, states): + """A cover's battery and charging sensors on its device (app 0.2.58): battery-powered blinds such as + Motionblinds report the battery there.""" + return {role: eid for role, eid in vacuum_related(entity, device, states).items() if role in ('battery', 'charging')} + def vacuum_extras(tile, states, device): """The vacuum card's rows and details: the mode and water selects (`e` entity, `s` state, `o` options, `l` labels, `r` a role per mode), the suction speeds to offer (`fan`), the battery (`bat`), charging @@ -788,15 +808,7 @@ def vacuum_extras(tile, states, device): fan = row([s for s in speeds if isinstance(s, str) and s not in covered]) if isinstance(speeds, list) else None if fan: result['fan'] = fan - if not isinstance(attrs.get('battery_level'), (int, float)) and 'battery' in related: - try: - level = float(states[related['battery']].get('state')) - except (TypeError, ValueError, KeyError): - level = math.nan - if math.isfinite(level): - result['bat'] = max(0, min(100, round(level))) - if states.get(related.get('charging'), {}).get('state') == 'on': - result['chg'] = 1 + result.update(device_power(attrs, related, states)) room = states.get(related.get('room'), {}).get('state') if isinstance(room, str) and room not in ('', 'unknown', 'unavailable', 'none'): result['room'] = short(room, 32) @@ -808,6 +820,8 @@ def extras(tile, states, forecast=None, tz=None, hourly=None, now=None, device=N attrs = states.get(tile['entity'], {}).get('attributes', {}) if domain == 'vacuum': return vacuum_extras(tile, states, device) + if domain == 'cover': + return device_power(attrs, cover_related(tile['entity'], device, states), states) or None if domain == 'weather' and (forecast or hourly): result = {} days = [] @@ -1072,7 +1086,8 @@ def discover_screens(registry, states, devices, areas): for item in registry: if item.get('platform') == 'esphome' and item.get('original_name') in names: value = states.get(item['entity_id'], {}).get('state', '') - if isinstance(value, str) and re.fullmatch(pattern, value): + # A screen that restarts reports "unavailable", which reads like a device name. + if isinstance(value, str) and value not in ('unknown', 'unavailable') and re.fullmatch(pattern, value): found[item.get('device_id')] = value return found nodes = diagnostic(NAME_DEVICE_NAME, r'[a-z0-9][a-z0-9-]{0,30}') diff --git a/screen_manager/app/server.py b/screen_manager/app/server.py index de1baf5..5ee4516 100644 --- a/screen_manager/app/server.py +++ b/screen_manager/app/server.py @@ -1,6 +1,7 @@ """HA Ingress app. HA writes: text.set_value on discovered inboxes (or the screen_message action on firmware 0.2.33+), each screen's alert actions when an alert event for every screen fires, and one persistent notification when a nightly update stops.""" import asyncio import contextlib +import hashlib import json import logging import os @@ -671,11 +672,14 @@ class Manager: return self._by_device.get(device, []) if device else [] def related_entities(self, tile): - """Entities a card reads besides its own: a vacuum's cleaning mode and water selects and its battery sensor.""" - if not tile['entity'].startswith('vacuum.'): - return () - from core import vacuum_related - return tuple(vacuum_related(tile['entity'], self.device_entries(tile['entity']), self.ha.states).values()) + """Entities a card reads besides its own: a vacuum's cleaning mode and water selects and its battery sensor, a + cover's battery sensor.""" + from core import cover_related, vacuum_related + if tile['entity'].startswith('vacuum.'): + return tuple(vacuum_related(tile['entity'], self.device_entries(tile['entity']), self.ha.states).values()) + if tile['entity'].startswith('cover.'): + return tuple(cover_related(tile['entity'], self.device_entries(tile['entity']), self.ha.states).values()) + return () def header_message(self, layout): return header_bar.message(layout, self.ha.states, self.registry_index(), getattr(self.ha, 'units', {}), getattr(self.ha, 'time_zone', None)) @@ -802,8 +806,8 @@ class Manager: forecast=await self.cached(self.forecasts, entity, FORECAST_SECONDS, (lambda: self.ha.forecast(entity)) if 'daily' in kinds else nothing) # Hourly forecasts feed the weather card's next-hours strip (0.2.23+); refreshed every half hour. hourly=await self.cached(self.forecasts, (entity,'hourly'), FORECAST_SECONDS, (lambda: self.ha.forecast(entity,'hourly')) if 'hourly' in kinds else nothing) - # A vacuum's card also reads selects and the battery sensor of its device (app 0.2.46). - device=self.device_entries(tile['entity']) if tile['entity'].startswith('vacuum.') else None + # A vacuum's card also reads selects and the battery sensor of its device (app 0.2.46), a cover's card its battery (0.2.58). + device=self.device_entries(tile['entity']) if tile['entity'].startswith(('vacuum.', 'cover.')) else None message=state_message(index,tile,self.ha.states,extras(tile,self.ha.states,forecast,getattr(self.ha,'time_zone',None),hourly,device=device)) if tile['entity'].startswith('sensor.') and hasattr(self.ha,'history'): hours=tile.get('options',{}).get('history_hours',24) @@ -1158,8 +1162,12 @@ def create_app(manager, development=False): app = web.Application(middlewares=[guard], client_max_size=16*1024) static = Path(__file__).parent / 'static' + # The page asks for its script and styles with a stamp of their content, so a browser that keeps old copies + # anyway (Safari did after an update) never runs an old script against a new page. + stamp = hashlib.sha1(b''.join((static / name).read_bytes() for name in ('app.js', 'style.css'))).hexdigest()[:12] + page = (static / 'index.html').read_text().replace('"static/app.js"', f'"static/app.js?v={stamp}"').replace('"static/style.css"', f'"static/style.css?v={stamp}"') async def index(request): - return web.FileResponse(static / 'index.html') + return web.Response(text=page, content_type='text/html') def light_payload(screens=None): """Screens and update status: everything that changes while the page is open.""" if screens is None: diff --git a/screen_manager/app/static/app.js b/screen_manager/app/static/app.js index 3a216d5..656f938 100644 --- a/screen_manager/app/static/app.js +++ b/screen_manager/app/static/app.js @@ -1889,6 +1889,9 @@ function renderResults() { async function refresh(full = true) { try { const data = await (await api(full ? "inventory" : "inventory?light=1")).json(); + // The live stream can open a screen before the first full inventory arrives (an add-on busy building + // firmware answers it first); that screen was drawn without entity names and with an empty entity list. + const firstCatalogue = full && !inventory.entities?.length; // A light poll carries only screens and update status; keep the catalogues we have. inventory = full ? data : { ...inventory, ...data }; $("#connection").textContent = inventory.connected @@ -1898,6 +1901,7 @@ async function refresh(full = true) { renderScreens(); if (full) renderClaude(); if (selected) { settleSettings(); renderSettings(); } + if (firstCatalogue && selected && layout && !drag.active && !chipDrag.active) { renderTopbar(); renderTiles(); renderResults(); } if (!selected && inventory.screens.length) select(inventory.screens[0].id); if ($("#alerts-dialog").open) renderAlertScreens(); } catch { diff --git a/screen_manager/config.yaml b/screen_manager/config.yaml index 37c969c..62fcc70 100644 --- a/screen_manager/config.yaml +++ b/screen_manager/config.yaml @@ -1,5 +1,5 @@ name: ESP Screen Manager -version: "0.2.57" +version: "0.2.58" slug: esp_screen_manager description: Choose tiles for your CYD and Guition touchscreen, without reflashing. url: https://github.com/MaxGramser/homeassistant_espscreen diff --git a/tests/test_cover_card.py b/tests/test_cover_card.py new file mode 100644 index 0000000..21b0226 --- /dev/null +++ b/tests/test_cover_card.py @@ -0,0 +1,138 @@ +"""The cover card (app 0.2.58 / firmware 0.2.50), and two fixes found on Studio 1 after updating to 0.2.57. + +- A tap on a cover opens a card like Home Assistant's own: a position slider, a tilt slider for slats, open, + stop and close, and the battery of a battery-powered blind (Motionblinds keep it on a sensor of the device). + The layout and the drawing are checked on the Mac host builds; tests/test_tile_controls.cpp covers the logic. +- A number whose value equals its initial state (a night brightness of 0) was never published, so Home + Assistant showed "unknown" and ESP Screens could not change it. +- While a screen restarts its device name sensor reads "unavailable", which the app took for the device name. +""" +import importlib.util +import re +import sys +import tempfile +import unittest +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT / 'screen_manager/app')) +sys.path.insert(0, str(ROOT / 'tests')) +from core import ATTRS, cover_related, discover_screens, extras, state_message # noqa: E402 + +HAS_AIOHTTP = importlib.util.find_spec('aiohttp') is not None +RUNTIME = (ROOT / 'components/smart_display/runtime_tiles.h').read_text() +PROFILES = {name: (ROOT / name).read_text() for name in ('guition-4848s040.yaml', 'home-like-2432s028.yaml', 'packages/guition.yaml', 'packages/cyd.yaml')} +BLIND = 'cover.venetianblind_0001' + + +def motionblinds(): + """(states, device registry entries) of a Motionblinds venetian blind as Home Assistant 2026.9.1 reports it in Dutch.""" + states = { + BLIND: {'state': 'open', 'attributes': {'friendly_name': 'Blind Links', 'current_position': 60, 'current_tilt_position': 40, + 'device_class': 'blind', 'supported_features': 255}}, + 'sensor.venetianblind_0001_batterij': {'state': '85', 'attributes': {'device_class': 'battery', 'unit_of_measurement': '%'}}, + 'sensor.venetianblind_0001_signaalsterkte': {'state': '-60', 'attributes': {}}, + } + device = [{'entity_id': eid, 'platform': 'motion_blinds', 'device_id': 'blind'} for eid in states] + return states, device + + +class CoverMessages(unittest.TestCase): + def test_the_card_gets_the_tilt_and_the_battery_of_the_device(self): + states, device = motionblinds() + self.assertIn('current_tilt_position', ATTRS) + extra = extras({'entity': BLIND}, states, device=device) + self.assertEqual(extra, {'bat': 85}) + self.assertEqual(cover_related(BLIND, device, states), {'battery': 'sensor.venetianblind_0001_batterij'}) + message = state_message(0, {'entity': BLIND, 'name': ''}, states, extra) + self.assertEqual((message['a']['current_position'], message['a']['current_tilt_position'], message['a']['supported_features']), (60, 40, 255)) + self.assertEqual(message['x'], {'bat': 85}) + # No battery sensor, or a cover that reports battery_level itself: nothing extra. + self.assertIsNone(extras({'entity': BLIND}, states, device=device[:1])) + states[BLIND]['attributes']['battery_level'] = 90 + self.assertIsNone(extras({'entity': BLIND}, states, device=device)) + states['sensor.venetianblind_0001_batterij']['state'] = 'unavailable' + del states[BLIND]['attributes']['battery_level'] + self.assertIsNone(extras({'entity': BLIND}, states, device=device)) + + def test_a_restarting_screen_is_not_named_unavailable(self): + registry = [{'entity_id': 'text.studio_1_tile_settings', 'platform': 'esphome', 'original_name': 'Tile settings', 'device_id': 'd1'}, + {'entity_id': 'sensor.studio_1_device_name', 'platform': 'esphome', 'original_name': 'Device name', 'device_id': 'd1'}, + {'entity_id': 'sensor.studio_1_ip_address', 'platform': 'esphome', 'original_name': 'IP address', 'device_id': 'd1'}] + devices = [{'id': 'd1', 'name': 'Studio 1'}] + for state in ('unavailable', 'unknown'): + states = {'text.studio_1_tile_settings': {'state': 'unavailable'}, 'sensor.studio_1_device_name': {'state': state}, + 'sensor.studio_1_ip_address': {'state': 'unavailable'}} + screen = discover_screens(registry, states, devices, [])[0] + self.assertEqual((screen['node'], screen['ip']), (None, None), state) + states['sensor.studio_1_device_name']['state'] = 'studio-1' + self.assertEqual(discover_screens(registry, states, devices, [])[0]['node'], 'studio-1') + + +@unittest.skipUnless(HAS_AIOHTTP, 'Run using .venv-portal/bin/python for server tests') +class CoverSync(unittest.IsolatedAsyncioTestCase): + async def test_a_battery_change_reaches_the_card_and_restarts_publish_no_second_sensor(self): + import test_scaling + from server import Manager + states, device = motionblinds() + with tempfile.TemporaryDirectory() as tmp: + ha = test_scaling.fake_ha(firmware='0.2.50') + ha.registry = ha.registry + [{**item} for item in device] + ha.states.update(states) + m = Manager(ha, Path(tmp) / 'screens.json') + m.save('text.screen', {'title': 'Office 1', 'tiles': [{'entity': BLIND, 'name': ''}]}) + self.assertIn('sensor.venetianblind_0001_batterij', m.watched_entities(), 'a battery change wakes the sync') + self.assertEqual(m.related_entities({'entity': BLIND}), ('sensor.venetianblind_0001_batterij',)) + message = await m.tile_message(0, m.layouts['text.screen']['tiles'][0]) + self.assertEqual(message['x'], {'bat': 85}) + # The screen restarts: its device name reads unavailable, and no layout sensor goes out under that name. + published = [] + + async def set_state(entity_id, state, attributes): + published.append(entity_id) + ha.set_state = set_state + ha.states['text.node'] = {'state': 'unavailable'} + await m.publish_layouts() + self.assertEqual(published, []) + ha.states['text.node'] = {'state': 'office-1'} + await m.publish_layouts() + self.assertEqual(published, ['sensor.esp_screens_office_1']) + + +class Firmware(unittest.TestCase): + def test_a_tap_on_a_cover_opens_the_cover_card(self): + event = RUNTIME[RUNTIME.index('inline void event(lv_event_t *event) {'):] + event = event[:event.index('\n}\n')] + show = re.search(r'if\(d=="sensor" \|\|.*?show_detail\(w\.index\); return; \}', event) + self.assertTrue(show and 'd=="cover"' in show[0], 'covers go to show_detail with the other runtime cards') + self.assertIn('if (d == "light" || d == "climate" || d == "vacuum" || d == "fan") {', event, 'not to the board\'s value overlay any more') + self.assertIn('}else if(d=="cover"){', RUNTIME) + self.assertIn('render_cover_detail(t,large,width,height,pad);', RUNTIME) + for name, text in PROFILES.items(): + self.assertIn('if ((domain == "light" || domain == "fan" || domain == "climate") && runtime_tiles::detail) {', text, f'{name}: the preview opens the new card') + + def test_the_card_commits_on_release_and_keeps_its_status_line(self): + self.assertIn('action("cover.set_cover_position",t.entity,"position",std::to_string(100-percent));', RUNTIME) + self.assertIn('action("cover.set_cover_tilt_position",t.entity,"tilt_position",std::to_string(percent));', RUNTIME) + self.assertIn('if(cmd>=70 && cmd<130){auto a=tile_controls::key_action(t,cmd-70);', RUNTIME) + # The once-a-second tick of an open card must not replace "Open · 60% · Tilt 40%" with the raw state. + tick = RUNTIME[RUNTIME.index('inline void tick() {'):] + self.assertIn('t.domain()=="cover"?cover_status_line(t):detail_state(t)', tick[:tick.index('if(!enabled)return;')]) + # A key the cover cannot use stays disabled: it is left out of the keys the tick enables again. + self.assertIn('if(key.disabled){lv_obj_add_state(button,LV_STATE_DISABLED);if(detail_action_count && detail_actions[detail_action_count-1]==button)--detail_action_count;}', RUNTIME) + # Track and fill share one radius: no layer per redraw on the CYD. + self.assertIn('lv_obj_set_style_radius(slider,radius,LV_PART_MAIN);lv_obj_set_style_radius(slider,radius,LV_PART_INDICATOR);', RUNTIME) + self.assertIn('next.tilt = number(a["current_tilt_position"]);', RUNTIME) + + def test_every_setting_number_publishes_a_value_home_assistant_lacks(self): + for name, text in PROFILES.items(): + script = text[text.index('- id: apply_screen_settings'):] + script = script[:script.index('\n - id: ', 10)] + self.assertIn('if (!entity->has_state() || entity->state != value) entity->publish_state(value);', script, name) + for number in ('setting_brightness', 'setting_standby_brightness', 'setting_night_brightness', 'setting_standby_seconds', 'setting_auto_home_seconds'): + self.assertIn(f'std::make_pair(id({number}),', script, f'{name}: {number}') + self.assertNotRegex(script, r'if \(id\(setting_\w+\)\.state != ', name) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_editor_startup.py b/tests/test_editor_startup.py new file mode 100644 index 0000000..4b6724d --- /dev/null +++ b/tests/test_editor_startup.py @@ -0,0 +1,38 @@ +"""Opening ESP Screens while the add-on is busy (app 0.2.58). + +The page asks for the full inventory and opens the live stream at the same time. An add-on that is building +firmware answers the stream first, whose light payload has screens but no entities, so the first screen was +opened with an empty catalogue: the entity list said "No entities found" and the tiles showed entity ids until +a filter chip was pressed. The first full inventory now draws those parts again. +""" +import re +import unittest +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +SCRIPT = (ROOT / 'screen_manager/app/static/app.js').read_text() + + +def function(name): + start = SCRIPT.index(f'function {name}(') + return SCRIPT[start:SCRIPT.index('\n}\n', start)] + + +class Startup(unittest.TestCase): + def test_the_live_stream_can_open_a_screen_before_the_catalogue(self): + # The race exists: the light payload selects the first screen, and it carries no entities. + self.assertIn('if (!selected && inventory.screens.length) select(inventory.screens[0].id);', function('applyLive')) + self.assertRegex(function('select'), r'renderTopbar\(\);\s+renderTiles\(\);\s+renderResults\(\);') + + def test_the_first_full_inventory_draws_what_needs_entities_again(self): + body = function('refresh') + first = body.index('const firstCatalogue = full && !inventory.entities?.length;') + self.assertLess(first, body.index('inventory = full ? data'), 'decided before the catalogue is replaced') + redraw = re.search(r'if \(firstCatalogue && selected && layout && !drag\.active && !chipDrag\.active\) ' + r'\{ renderTopbar\(\); renderTiles\(\); renderResults\(\); \}', body) + self.assertTrue(redraw, 'tiles, top bar and entity list are drawn again, never in the middle of a drag') + self.assertLess(redraw.start(), body.index('if (!selected && inventory.screens.length) select(')) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_page_assets.py b/tests/test_page_assets.py new file mode 100644 index 0000000..2779ca4 --- /dev/null +++ b/tests/test_page_assets.py @@ -0,0 +1,43 @@ +"""The page loads its own script and styles by content stamp (app 0.2.58). + +After updating to 0.2.57, Safari showed an empty Screen settings panel: it kept a cached script from before +the update. The page now asks for app.js and style.css with a stamp of their content, so a new version is +always fetched and an old one is never combined with a new page. +""" +import hashlib +import importlib.util +import tempfile +import unittest +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +STATIC = ROOT / 'screen_manager/app/static' +HAS_AIOHTTP = importlib.util.find_spec('aiohttp') is not None + + +@unittest.skipUnless(HAS_AIOHTTP, 'Run using .venv-portal/bin/python for server tests') +class Assets(unittest.IsolatedAsyncioTestCase): + async def test_script_and_styles_carry_a_stamp_of_their_content(self): + import sys + sys.path.insert(0, str(ROOT / 'screen_manager/app')) + sys.path.insert(0, str(ROOT / 'tests')) + import test_scaling + from aiohttp.test_utils import TestClient, TestServer + from server import Manager, create_app + stamp = hashlib.sha1((STATIC / 'app.js').read_bytes() + (STATIC / 'style.css').read_bytes()).hexdigest()[:12] + with tempfile.TemporaryDirectory() as tmp: + manager = Manager(test_scaling.fake_ha(), Path(tmp) / 'screens.json') + async with TestClient(TestServer(create_app(manager, True))) as client: + response = await client.get('/') + page = await response.text() + self.assertEqual(response.status, 200) + self.assertIn(f'', page) + self.assertIn(f'', page) + self.assertEqual(response.headers['Cache-Control'], 'no-store') + self.assertIn('text/html', response.headers['Content-Type']) + script = await client.get(f'/static/app.js?v={stamp}') + self.assertEqual((script.status, await script.read()), (200, (STATIC / 'app.js').read_bytes())) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_screen_owned_settings.py b/tests/test_screen_owned_settings.py index 5db93cc..19c5f90 100644 --- a/tests/test_screen_owned_settings.py +++ b/tests/test_screen_owned_settings.py @@ -106,7 +106,8 @@ def fake_ha(firmware=FIRMWARE_VERSION, owned=True, guition=True): class CoreSettings(unittest.TestCase): def test_every_setting_the_editor_offers_has_an_entity(self): self.assertEqual(set(SETTING_ENTITIES), set(SETTING_RULES) - {'show_clock'}) - self.assertEqual(SETTING_ENTITIES_MIN_FIRMWARE, FIRMWARE_VERSION) + self.assertEqual(SETTING_ENTITIES_MIN_FIRMWARE, '0.2.49') + self.assertLessEqual(tuple(map(int, SETTING_ENTITIES_MIN_FIRMWARE.split('.'))), tuple(map(int, FIRMWARE_VERSION.split('.')))) def test_the_entities_are_named_as_in_both_board_profiles(self): blocks = {'switch': 'switch', 'number': 'number', 'time': 'datetime', 'select': 'select'} @@ -581,7 +582,9 @@ class Firmware(unittest.TestCase): script = script[:script.index('\n - id: ', 10)] for entity in ('setting_brightness', 'setting_standby_brightness', 'setting_night_brightness', 'setting_standby_seconds', 'setting_auto_home_seconds'): - self.assertIn(f'id({entity}).publish_state(', script, f'{path.name}: {entity}') + # One loop publishes every number that lacks a state or changed (firmware 0.2.50, see test_cover_card). + self.assertIn(f'std::make_pair(id({entity}),', script, f'{path.name}: {entity}') + self.assertIn('if (!entity->has_state() || entity->state != value) entity->publish_state(value);', script, path.name) self.assertIn('std::make_pair(id(setting_night_start), settings.night_start)', script, path.name) self.assertIn('settings_screen::refresh();', script, f'{path.name}: an open settings page follows Home Assistant') self.assertEqual('id(setting_rotation)->update();' in script, board == 'guition', path.name) diff --git a/tests/test_tile_controls.cpp b/tests/test_tile_controls.cpp index 49148ab..7d0ec3f 100644 --- a/tests/test_tile_controls.cpp +++ b/tests/test_tile_controls.cpp @@ -36,6 +36,38 @@ int main() { assert(status_text(curtain) == "Open · 100%"); assert(status_text(shutter) == "Closed"); + // The cover card (firmware 0.2.50+). Motionblinds venetian blinds report every feature (255). + Tile blind = make("cover.venetianblind_0001", "open", 255); blind.device_class = "blind"; blind.position = 60; blind.edit_extra().tilt = 40; + CoverCard card = cover_card(blind); + assert(card.position && card.tilt && card.keys && !card.tilt_keys); + assert(cover_card_status(blind) == "Open · 60% · Tilt 40%"); + assert(cover_keys(blind, keys) == 3 && !strcmp(keys[0].icon, glyph::UP) && !keys[0].disabled && !keys[2].disabled && !keys[2].checked); + blind.state = "closing"; + assert(cover_keys(blind, keys) == 3 && keys[2].checked && !keys[0].checked); + assert(cover_tilt_keys(blind, keys) == 3 && keys[0].command == COVER_OPEN_TILT && keys[2].command == COVER_CLOSE_TILT); + assert(key_action(blind, COVER_OPEN_TILT).service == "cover.open_cover_tilt"); + assert(key_action(blind, COVER_STOP_TILT).service == "cover.stop_cover_tilt" && key_action(blind, COVER_CLOSE_TILT).service == "cover.close_cover_tilt"); + CoverCard curtain_card = cover_card(curtain); + assert(curtain_card.position && !curtain_card.tilt && curtain_card.keys && !curtain_card.tilt_keys); + assert(cover_card_status(curtain) == "Open · 100%"); + // A garage door: open, stop and close only; close is disabled while it is closed. + Tile garage = make("cover.garage", "closed", 11); garage.device_class = "garage"; + CoverCard garage_card = cover_card(garage); + assert(!garage_card.position && !garage_card.tilt && garage_card.keys && !garage_card.tilt_keys); + assert(cover_keys(garage, keys) == 3 && keys[2].disabled && !keys[0].disabled); + // Slats that tilt without a position get tilt keys; a key that cannot tilt further is disabled. + Tile slats = make("cover.slats", "open", 3 | 16 | 32); slats.edit_extra().tilt = 100; + CoverCard slats_card = cover_card(slats); + assert(slats_card.tilt_keys && !slats_card.tilt && !slats_card.position); + assert(cover_tilt_keys(slats, keys) == 2 && keys[0].disabled && !keys[1].disabled); + assert(cover_card_status(slats) == "Open"); + // Features not reported yet: the card offers the three keys, a tile's key row stays empty as before. + Tile unknown = make("cover.new", "unknown", 0); + CoverCard unknown_card = cover_card(unknown); + assert(unknown_card.keys && !unknown_card.position && cover_keys(unknown, keys) == 3); + unknown.controls = "buttons"; + assert(keys_for(unknown, keys) == 0); + // Vacuum: play while docked, pause while cleaning, dock disabled in the dock. Tile robot = make("vacuum.s8", "docked", 30524); robot.controls = "buttons"; assert(keys_for(robot, keys) == 3);